位置:51电子网 » 技术资料 » 其它综合

智能卡的产生随机数

发布时间:2008/11/22 0:00:00 访问次数:685

  有许多不同的方法用软件来产生随机数。然而,由于智能卡存储器的容量很有限而执行计算的时间又要尽可能地短,可选择的数量就严重受限了。在实践中,惟一被使用的方法是使用操作系统已有的功能,且只需要极少的额外程序代码。

  当然,随机数的质量必须不受诸如会话被复位中断或自终端取走卡的负面影响。此外,发生器必须构造得使随机发生器的序列对每次会话都不相同。这可用烦琐的试探进行,但至少需要一次对eeprom的写访问,以存储一个下次会话的新种子数。ram不适合于这一目的,因为它需要能量来保存其内容。一个可能的攻击手段是继续产生随机数直至存储种子数的eeprom单元失效。理论上,这将使每次会话所发生的随机数都有相同的序列,使得它们是可以预言的,从而给攻击者带来好处。对这种类型的攻击可以把eeprom的有关部分构造成环形缓冲器并在一旦发生写错误时就闭锁所有进一步的操作来予以避免。

  对软件实现的随机数发生器来说,另一个重要的考虑就是保证它决不会在一个无尽头的回路中运行。这将使随机数的循环周期显著缩短,从而易于预言随机数并将破解系统。

  几乎每个智能卡操作系统都包括有用于鉴别的加密算法。使用它作为随机数发生器的基础是一个很显然的主意。将实现一个尽可能把明文搅乱的加密算法,如果不了解密钥就无法从密文得出明文。一条称之为雪崩准则的原理说:平均而言,输人改变1位则输出的各位中将有一半要改变。这个特性能很好地为随机数发生器所应用,发生器的准确构造随其实现而各不相同。

  图1 智能卡操作系统的des伪随机数发生器之例(这个发
  生器主要是设计来减少对eeprom的写人访问次数)

  图1所示为一种可能。发生器用字组长为8字节的des算法,而将输出值反馈回输入。当然,也可以用任何别的加密算法。发生器的工作基本上如下所述:一个环形缓冲器部件之值用des加密,用一个对卡是唯一的密钥,这样产生的密文是8字节的随机数。这个数与先前的明文的x0r值提供了eeprom环形缓冲器的新输入。发生器移动至循环的环形缓冲器的下一个入口。从数学上来说,这种关系可以用公式表示为:

  rndn:=f(key,rndn-1)

  当智能卡在发行准各时,卡专用的des密钥被存储在每张卡中,同时随机种子数也输入至环形缓冲器中。例如,它们可以是12×8的缓冲器。种子数保证每张卡产生惟一序列的随机数。12级的环形缓冲器以12倍的因子增大了发生器的生命跨度。假定eeprom被保证有100 000次的写入循环,则这个发生器至少能生产120000个8字节随机数。

  在eeprom中擦除与写入8字节约占用2×2×3.5=14ms,而3.5mhz的des执行约占17ms,其余的执行时间可忽略不计。于是总共需要31ms,卡可产生一随机数。

  图2 智能卡操作系统的des伪随机数发生器的设计举例。这个发生器比图
  中的要快,因为每次会话只需要一个eeprom写人周期。它所产生
  的随机数的质量适合于普通的智能卡应用(用口令-回令的鉴别过程)

  图2是伪随机数发生器的另一个例子。每次卡复位后它被启动,这也是对eeprom惟一发生的一次写访问。在随机数后继的发生中只使用对ram的访问,使得此发生器比较快。然而,不利之处在于在整个会话期间发生器占用了少量的ram字节。这个伪随机数发生器的统计质量不是很好,但它适用于智能卡正常的鉴别过程。这种过程的主要考虑是随机数的产生不要有太短的重复周期,否则可利用一再重复输人前次会话的报文而破译鉴别。

  fids 140-1标准推荐在每次复位后,由安全模块用统计测试检查其内置随机数发生器。只在这些测试完全通过后,才将随机数发生器投人进一步使用。目前,通常使用的智能卡操作系统没有包括这些功能,由于伪随机数发生器的确定性操作没有显著的改变,因而可以假定所产生的随机数的统计特性也基本未变。

  关于伪随机数发生器的建议、标准和设计的数量完全是压倒性的。某些众所周知的例子是在x,917和pips 186中的,internet rfc 1750标准的建议以及由bruce schneier[schneier 96]和peter gutmann[gutmann 98 a]给出的方案。对于随机数发生器的一个指导原则永远是尽可能使它简单和易于理解。只有这样才能判断它的特性从而决定其质量。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



  有许多不同的方法用软件来产生随机数。然而,由于智能卡存储器的容量很有限而执行计算的时间又要尽可能地短,可选择的数量就严重受限了。在实践中,惟一被使用的方法是使用操作系统已有的功能,且只需要极少的额外程序代码。

  当然,随机数的质量必须不受诸如会话被复位中断或自终端取走卡的负面影响。此外,发生器必须构造得使随机发生器的序列对每次会话都不相同。这可用烦琐的试探进行,但至少需要一次对eeprom的写访问,以存储一个下次会话的新种子数。ram不适合于这一目的,因为它需要能量来保存其内容。一个可能的攻击手段是继续产生随机数直至存储种子数的eeprom单元失效。理论上,这将使每次会话所发生的随机数都有相同的序列,使得它们是可以预言的,从而给攻击者带来好处。对这种类型的攻击可以把eeprom的有关部分构造成环形缓冲器并在一旦发生写错误时就闭锁所有进一步的操作来予以避免。

  对软件实现的随机数发生器来说,另一个重要的考虑就是保证它决不会在一个无尽头的回路中运行。这将使随机数的循环周期显著缩短,从而易于预言随机数并将破解系统。

  几乎每个智能卡操作系统都包括有用于鉴别的加密算法。使用它作为随机数发生器的基础是一个很显然的主意。将实现一个尽可能把明文搅乱的加密算法,如果不了解密钥就无法从密文得出明文。一条称之为雪崩准则的原理说:平均而言,输人改变1位则输出的各位中将有一半要改变。这个特性能很好地为随机数发生器所应用,发生器的准确构造随其实现而各不相同。

  图1 智能卡操作系统的des伪随机数发生器之例(这个发
  生器主要是设计来减少对eeprom的写人访问次数)

  图1所示为一种可能。发生器用字组长为8字节的des算法,而将输出值反馈回输入。当然,也可以用任何别的加密算法。发生器的工作基本上如下所述:一个环形缓冲器部件之值用des加密,用一个对卡是唯一的密钥,这样产生的密文是8字节的随机数。这个数与先前的明文的x0r值提供了eeprom环形缓冲器的新输入。发生器移动至循环的环形缓冲器的下一个入口。从数学上来说,这种关系可以用公式表示为:

  rndn:=f(key,rndn-1)

  当智能卡在发行准各时,卡专用的des密钥被存储在每张卡中,同时随机种子数也输入至环形缓冲器中。例如,它们可以是12×8的缓冲器。种子数保证每张卡产生惟一序列的随机数。12级的环形缓冲器以12倍的因子增大了发生器的生命跨度。假定eeprom被保证有100 000次的写入循环,则这个发生器至少能生产120000个8字节随机数。

  在eeprom中擦除与写入8字节约占用2×2×3.5=14ms,而3.5mhz的des执行约占17ms,其余的执行时间可忽略不计。于是总共需要31ms,卡可产生一随机数。

  图2 智能卡操作系统的des伪随机数发生器的设计举例。这个发生器比图
  中的要快,因为每次会话只需要一个eeprom写人周期。它所产生
  的随机数的质量适合于普通的智能卡应用(用口令-回令的鉴别过程)

  图2是伪随机数发生器的另一个例子。每次卡复位后它被启动,这也是对eeprom惟一发生的一次写访问。在随机数后继的发生中只使用对ram的访问,使得此发生器比较快。然而,不利之处在于在整个会话期间发生器占用了少量的ram字节。这个伪随机数发生器的统计质量不是很好,但它适用于智能卡正常的鉴别过程。这种过程的主要考虑是随机数的产生不要有太短的重复周期,否则可利用一再重复输人前次会话的报文而破译鉴别。

  fids 140-1标准推荐在每次复位后,由安全模块用统计测试检查其内置随机数发生器。只在这些测试完全通过后,才将随机数发生器投人进一步使用。目前,通常使用的智能卡操作系统没有包括这些功能,由于伪随机数发生器的确定性操作没有显著的改变,因而可以假定所产生的随机数的统计特性也基本未变。

  关于伪随机数发生器的建议、标准和设计的数量完全是压倒性的。某些众所周知的例子是在x,917和pips 186中的,internet rfc 1750标准的建议以及由bruce schneier[schneier 96]和peter gutmann[gutmann 98 a]给出的方案。对于随机数发生器的一个指导原则永远是尽可能使它简单和易于理解。只有这样才能判断它的特性从而决定其质量。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



相关IC型号

热门点击

 

推荐技术资料

罗盘误差及补偿
    造成罗盘误差的主要因素有传感器误差、其他磁材料干扰等。... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!