发布时间:2008-11-21阅读:910
加密过程一再地要用到随机数。在智能卡领域中,它们被用于保证会话期鉴别的惟一性,作为加密的填补数据以及作为传输序列计数器的初始值。在这些功能中所需要随机数的长度通常在2~8字节之间,最大的长度自然是来源于DES算法的字组大小。
所有这些方法的安全性都立足于不能事先指定或外部予以影响的随机数。理想的方案是在卡的微控制器中的基于硬件的随机数发生器。然而,这需要完全脱离外部的影响,诸如温度,供电电压,辐射和其他等等。否则,它就是可以操纵的。这样它有可能牵涉到某些过程的安全性使之依赖于随机数的随机性。现代智能卡微控制器中的随机数发生器通常都基于由压控振荡器驱动的线性反馈移位寄存器LFSRS(LINEAR Feedback Shift Register)。
现在,几乎完全没有可能仅用半导体硬件做成一个好的随机数发生器使之免于外部影响,操作系统的设计者返回到用软件来实现。这就产生了伪随机数发生器,它们绝大多数能产生非常好的随机数。然而,产生的数并不是真正的随机数,因为它们是用严格的确定性的算法算出的,而如果算法和输入值为已知时则是可预言的,这就是为什么它们被称之为“伪随机数”。
重要的是应保证同一批生产的卡在运行中产生不同序列的随机数,使得一个卡产生的随机数不能从另外卡的同一序列产生的随机数来推断。这一点是在为每张卡准备操作系统时用输入一个作为种子数(起始值)的随机数到随机数发生器中去来做到的。
上一篇:智能卡的密钥管理