用振荡器采样随机数发生器保证网络SoC设计加密算法的安全性
将两个或更多采样位进行组合,然后产生一个输出位,该输出位是先前各输入位的复杂非线性函数。当然,这样获得的输出随机位数不可能多于输入位数。对这个函数期望的功能是任何输入位的改变都会引起大约一半输出位的改变,这些混合函数也可作为更复杂的纠偏方法去除位流偏差,如同前面讨论的那样。 一般情况下,混合函数功能越强,它所占用的芯片面积也越大,前面提到的级联XOR便是很简单的一例。DES加密/解密算法则是更为复杂的例子,因为它需要120个输入位,产生64个输出位,每一个输出位都依赖一个涉及所有输入位的复杂非线性函数,其它加密/解密算法的工作方式也类似。混排函数也可用作强大的混合函数,它们使用任意长度的输入位,并产生一定长度的信息摘要。同样,设计工程师需要进行权衡,要在额外开销与所生成的位流无法达到期望随机度之间做选择。 统计评估 美国商业部创建了多种用来评估加密应用中随机数发生器随机程度的标准,美国国家标准技术研究所(NIST)出版的“800-22特刊”推荐了一种全面的随机数发生器统计测试方法,并严格规定了满足各种程度随机性的衡量标准。测试工程师可在验证过程中使用这种测试方法或其它类似测试,检验设计是否具有非随机特征,从而判断是否达到了某种程度的随机性。NIST统计测试套件中规定了16种不同类型的测试,以便能发现被测随机数发生器的缺陷。 NIST FIPS 140-2是美国商业部颁发的另一份文件,它定义了设计者在安全应用中采用加密设备时必须遵守的一系列要求。其中一个最重要的要求是任何使用随机数发生器的实时加密模块必须提供加电能力并可对RNG功能进行持续的实时测试,确保它在工作过程中不出现故障,如果在规定的统计测试中出现任何失败,RNG模块都必须进入一种错误状态。对于SoC设计来说,这意味着如果最终产品希望获得美国政府安全标准许可的话,那么进行测试的测试器模块必须集成在设备本身之中并满足规定的要求。 某些产生非确定性噪声源的技术也许并不适用,这取决于是使用标准单元设计还是使用客户定制布局设计。的确可以保证一项设计达到期望的随机度,但这种保证的代价是增加芯片尺寸以便实现冗余结构或更为复杂的后处理功能。即便是精心规划的设计,最后阶段也必须通过统计测试套件的验证,只有这样才能说设计达到了期望的随机度。
- IP核在SoC设计中的接口技术 (08-06)
- 视频跟踪算法在Davinci SOC上的实现与优化(10-06)
- 基于赛灵思Spartan-3A DSP的安全视频分析(02-17)
- Linux下Sniffer程序的实现(06-12)
- linux操作系统下的进程通信设计(01-24)
- 基于S3C44B0X和uClinux的Socket通信实现(02-28)