智能卡的对称单方鉴别
发布时间:2008/11/22 0:00:00 访问次数:365
单方鉴别用于保证通信中的一方对另一方是可任信的。它的可能性在于双方有一共享的密秘,用鉴别方法来验证对它的了解。这个秘密就是加密算法的密钥,如果密钥被知道了,攻击者就能很容易地鉴别他自己正是一个真正的通信伙伴。
用对称加密算法的单方鉴别的原理如图1所示,为了清楚起见,这里假定是终端在鉴别智能卡,这就是说终端断定智能卡是否可信任的。
图1 对称算法单方鉴别的工作原理(该例所示为终端鉴别
一智能卡,它可用iso/iec 7816-4标准的internal
authenticate命令来实现)
终端产生一随机数并将它送给智能卡,这个被称为口令。智能卡加密它所接收的随机数,用终端和卡共同知道的密钥,方法的安全性取决于密钥,因为只有秘密密钥的拥有者才能产生正确的送给终端的回令。
卡把加密的结果送回给终端,这就是对口令的回令,终端此时用秘密密钥解密接收到的加密的随机数,并将所得结果与原来送出的随机数相比较,如果它们相等,则终端知道智能卡是可信的。
这个过程不能用从早先的会话截获的口令和回令进行攻击,因为每次会话所产生的随机数是不同的。惟一具有成功机会的攻击形式是系统地搜索秘密密钥。因为,口令和回令只不过是明文-密文对,强力攻击者可能发现秘密密钥。
如果一个给定的应用的所有卡具有相同的密钥而这个密钥又已经被知道了,则整个系统将是不可信任的。为了避免这种可能性,实际上只使用卡专用密钥,这是项基本原则。这就是说每张卡有一个单独的密钥,它可以从卡的非秘密特性导出,这个专有的特性可以是在制造芯片时写入芯片的序列号,或其他的每张卡都不相同的数字。
在这种情况下,终端要从智能卡给出的芯片号来计算卡专用密钥。芯片号是卡专有的并在系统中是惟一的,所以在系统中没有别的卡和此卡是一样的。卡专用秘密密钥之值为卡编号和主密钥的函数,终端是知道的。实际上,卡编号的一部分是用主密钥加密的,其结果用来充当卡专有鉴别密钥,des或3重des算法可用于加密。
必须记住:如果主密钥(只有终端是知道的)泄露了,整个系统也就被泄露了,因为所有卡的专有鉴别密钥都可用主密钥算出来。主密钥必须安全地储存在终端中(例如,在安全模块中),如果可能,在受到攻击时能主动擦除掉。
一旦终端算出所必需的这张卡的鉴别密钥,通常处理中的口令-回令方法就可进行了。智能卡接收随机数,用其单独的密钥加密它并将结果返回给终端,终端以相同方式执行相反的功能的计算并比较两个结果。如果它们相同,则终端和智能卡享有共同的秘密,它就是秘密的卡专用密钥,而智能卡已经被终端所鉴明(证实为真)。
鉴别过程是有点费时的,由于使用des算法并要向卡送入或送出数据,在某些应用中会引起问题。给出某些假定,我们能粗略估算执行单方鉴别所需要的时间。我们设智能卡的时钟为3.5mhz,用t=1的传输协议,其除数为372并使用每字组要占用17ms的des算法,撇开任何细节,我们假定智能卡内部程序要占去9ms,这样就简化了计算而不影响结果,它已在表1中示出。从这一计算可以清楚看到,单独的鉴别大约要花费g-5ms,这样通常将不会在应用中引起与时间有关的问题。
表1 智能卡单方向鉴别处理时间的计算
(已把数据传输时间考虑在内)
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
单方鉴别用于保证通信中的一方对另一方是可任信的。它的可能性在于双方有一共享的密秘,用鉴别方法来验证对它的了解。这个秘密就是加密算法的密钥,如果密钥被知道了,攻击者就能很容易地鉴别他自己正是一个真正的通信伙伴。
用对称加密算法的单方鉴别的原理如图1所示,为了清楚起见,这里假定是终端在鉴别智能卡,这就是说终端断定智能卡是否可信任的。
图1 对称算法单方鉴别的工作原理(该例所示为终端鉴别
一智能卡,它可用iso/iec 7816-4标准的internal
authenticate命令来实现)
终端产生一随机数并将它送给智能卡,这个被称为口令。智能卡加密它所接收的随机数,用终端和卡共同知道的密钥,方法的安全性取决于密钥,因为只有秘密密钥的拥有者才能产生正确的送给终端的回令。
卡把加密的结果送回给终端,这就是对口令的回令,终端此时用秘密密钥解密接收到的加密的随机数,并将所得结果与原来送出的随机数相比较,如果它们相等,则终端知道智能卡是可信的。
这个过程不能用从早先的会话截获的口令和回令进行攻击,因为每次会话所产生的随机数是不同的。惟一具有成功机会的攻击形式是系统地搜索秘密密钥。因为,口令和回令只不过是明文-密文对,强力攻击者可能发现秘密密钥。
如果一个给定的应用的所有卡具有相同的密钥而这个密钥又已经被知道了,则整个系统将是不可信任的。为了避免这种可能性,实际上只使用卡专用密钥,这是项基本原则。这就是说每张卡有一个单独的密钥,它可以从卡的非秘密特性导出,这个专有的特性可以是在制造芯片时写入芯片的序列号,或其他的每张卡都不相同的数字。
在这种情况下,终端要从智能卡给出的芯片号来计算卡专用密钥。芯片号是卡专有的并在系统中是惟一的,所以在系统中没有别的卡和此卡是一样的。卡专用秘密密钥之值为卡编号和主密钥的函数,终端是知道的。实际上,卡编号的一部分是用主密钥加密的,其结果用来充当卡专有鉴别密钥,des或3重des算法可用于加密。
必须记住:如果主密钥(只有终端是知道的)泄露了,整个系统也就被泄露了,因为所有卡的专有鉴别密钥都可用主密钥算出来。主密钥必须安全地储存在终端中(例如,在安全模块中),如果可能,在受到攻击时能主动擦除掉。
一旦终端算出所必需的这张卡的鉴别密钥,通常处理中的口令-回令方法就可进行了。智能卡接收随机数,用其单独的密钥加密它并将结果返回给终端,终端以相同方式执行相反的功能的计算并比较两个结果。如果它们相同,则终端和智能卡享有共同的秘密,它就是秘密的卡专用密钥,而智能卡已经被终端所鉴明(证实为真)。
鉴别过程是有点费时的,由于使用des算法并要向卡送入或送出数据,在某些应用中会引起问题。给出某些假定,我们能粗略估算执行单方鉴别所需要的时间。我们设智能卡的时钟为3.5mhz,用t=1的传输协议,其除数为372并使用每字组要占用17ms的des算法,撇开任何细节,我们假定智能卡内部程序要占去9ms,这样就简化了计算而不影响结果,它已在表1中示出。从这一计算可以清楚看到,单独的鉴别大约要花费g-5ms,这样通常将不会在应用中引起与时间有关的问题。
表1 智能卡单方向鉴别处理时间的计算
(已把数据传输时间考虑在内)
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
上一篇:智能卡数据库命令:SCQL
上一篇:智能卡的鉴别