4. 熵源评估标准:NIST SP 800-90B、AIS 31、FIPS 140-3 对熵源的要求对比
做TRNG这行,绕不开三个标准:NIST SP 800-90B、AIS 31、FIPS 140-3。我刚开始接触时也头大,每个标准都厚得像砖头。后来踩了几次坑才明白——它们不是互相替代的关系,而是各有各的脾气。
说白了,选哪个标准取决于你的产品要卖到哪。卖美国,看NIST;卖欧洲,盯AIS 31;做认证,绕不开FIPS 140-3。今天我就把这三个标准的底裤扒一扒,告诉你它们到底要什么。
4.1 三个标准的定位差异
先看一张总览图,把三者的关系理清楚。
4.2 NIST SP 800-90B:统计派代表
这个标准我用的最多。它不关心你的噪声源是热噪声还是抖动,只看输出比特的统计特性。说白了,它是个「数据驱动」的标准。
核心要求:
- 必须采集至少1,000,000个样本做离线评估
- 运行10项统计检测(包括重复计数、自适应比例、LZ复杂度等)
- 给出每样本的最小熵估计值
- 必须实现连续健康测试(在线测试)
我的经验: 800-90B的统计检测对某些噪声源其实不太友好。比如纯热噪声源,理论上熵很高,但LZ复杂度检测有时会低估。我建议在评估时多看几个检测项的结果,别只看最小值。
健康测试要求:
- 重复计数测试(RCT):检测连续相同比特
- 自适应比例测试(APT):检测局部偏置
- 测试频率:每1024个样本至少执行一次
- 失败阈值:可配置,但需在文档中说明
4.3 AIS 31:物理派代表
AIS 31是德国人的标准,严谨到变态。它不光看统计结果,还要求你解释噪声源的物理原理。我当年做CC EAL5+认证时,被AIS 31折磨得不轻。
两个评估层级:
| 层级 | 要求 | 典型应用 |
|---|---|---|
| PTA(物理真随机数) | 物理噪声源 + 在线测试 + 统计检测 | 普通安全应用 |
| PTG.2(物理真随机数生成器) | PTA基础上 + 后处理 + 故障注入防护 | 高安全等级CC认证 |
AIS 31的独特要求:
- 必须提供噪声源的物理模型和理论熵证明
- 在线测试必须覆盖:频率测试、运行测试、自相关测试
- 对后处理算法有明确要求(不能只用简单异或)
- 需要评估环境变化(温度、电压)对熵源的影响
避坑指南: 我曾经把一个基于环形振荡器抖动的TRNG拿去送AIS 31认证,结果被要求提供每个振荡器的相位噪声测量数据。当时没做这个测试,硬是补了两个月的数据。所以,如果你打算走AIS 31路线,物理特性测试一定要提前规划。
4.4 FIPS 140-3:系统级安全标准
FIPS 140-3不是专门的熵源标准,但它对TRNG有明确要求。它直接引用NIST SP 800-90B作为熵源评估方法,同时增加了系统级的安全约束。
对TRNG的具体要求:
- 熵源必须符合NIST SP 800-90B或等效标准
- 必须实现连续健康测试
- 必须提供自检功能(上电自检 + 条件自检)
- 失败时必须有明确的错误状态输出
- 安全等级3/4要求物理防篡改
关键点: FIPS 140-3 Level 2及以上要求TRNG有「故障安全」机制。也就是说,如果熵源失效,密码模块必须能检测到并进入错误状态,不能默默输出低质量随机数。这个在硬件设计时就要考虑进去。
4.5 三个标准的对比总结
我把核心差异整理成一张表,方便你对照。
| 对比维度 | NIST SP 800-90B | AIS 31 | FIPS 140-3 |
|---|---|---|---|
| 发布机构 | NIST(美国) | BSI(德国) | NIST(美国) |
| 评估对象 | 熵源 + 健康测试 | 物理噪声源 + 生成器 | 密码模块(含TRNG) |
| 熵估计方法 | 非参数化统计 | 物理模型 + 统计 | 引用800-90B |
| 在线测试 | RCT + APT | 频率 + 运行 + 自相关 | 连续健康测试 |
| 离线测试数据量 | 1,000,000样本 | 约100,000样本 | 引用800-90B |
| 物理模型要求 | 不强制 | 强制 | 不强制 |
| 认证周期 | 约2-4周 | 约3-6个月 | 约6-12个月 |
| 典型应用 | 商用密码产品 | CC认证产品 | 政府/军用设备 |
4.6 实际选型建议
说了这么多,到底怎么选?我个人的经验是这样的:
- 做消费级产品:NIST SP 800-90B就够了。成本低,周期短,市场接受度高。
- 做金融/政务:建议走FIPS 140-3 Level 2以上。虽然认证贵,但客户认这个。
- 做欧洲市场:AIS 31是硬门槛。别想着绕过去,德国人很较真。
- 做最高安全等级:AIS 31 PTG.2 + FIPS 140-3 Level 4。不过说实话,这种项目我五年才遇到一次。
小技巧: 如果你的TRNG设计得好,其实可以同时满足三个标准的大部分要求。我现在的做法是:物理设计按AIS 31来,统计测试按800-90B跑,系统安全按FIPS 140-3做。一套设计,三份报告,省时省力。
嗯,标准对比就聊到这。记住一点:标准是死的,你的设计是活的。理解每个标准背后的逻辑,比死记硬背条款重要得多。