微软认证Windows 7/8以及Server 2008 R2和2012符合FIPS-140-2标准.实际上,他们只认证了一个小的密码核心,bcrypt.dll (库,它与密钥派生函数bcrypt无关)。微软的FIPS-140-2架构是详见.此外,他们的FIPS-140-2AES证书上的NIST的上市是证书#2216,详见此.从清单中可以看到,GCM模式下的AES是用注释IV Lengths Tested: ( 8 , 1024 )、96BitIV_Supported、GMAC_Supported进行测试的。我确实看到其他供应商在他们的FIPS证书中也有一个附加的标志/注释OtherIVLen_Supported,这是MSFT自己的FIPS证书所缺乏的。
我们用bcrypt.dll (托管在AES GCM纸上)中的测试向量,在GCM模式下测试AES。我们发现,当使用不是96位的IVs时,Windows的bcrypt.dll会抛出一个错误(NT_STATUS = An invalid parameter was passed to a service or function.)。因此,测试向量5、11、17和6、12、18基本上失败,因为这两组分别使用了64位和480位的IVs。结果是

我知道IV大小!= 96位意味着额外的处理,但是尽管IV大小为64和480位失败,它们如何才能清除认证呢?还是只有96位的IV才是传递所需的IV长度?
发布于 2013-06-29 14:28:32
答案是肯定的,即使您没有实现所有已批准的加密原语,或者没有实现这些原语的所有可能选项,也可以获得FIPS认证。
当您进行FIPS测试时,他们要求您填写一份“信息表”,询问您声称要实现的密码系统的详细信息。这些包括关于您实现哪些原语的问题(例如,您是否执行GCM )。如果您声称支持GCM,那么您必须声明您实现了GCM的哪些部分。例如,您可以声称支持GCM加密,但不支持解密,或者支持128位和256位密钥,但不支持192位(例如)。至于IV,您可以声称支持96位,也可以要求支持一系列IV大小(在0到1024位之间的任何地方,请以8的倍数)。
因此,当微软申请对其组件进行FIPS验证时,他们声称只支持96位IVs。
但是,从证书列表中的NIST列表(直接从Information复制,并准确列出认证的实现有哪些限制)中的总结来看,这并不是显而易见的。为实现这一目标,它们在全球气候变化管理项下列出:
IV测试长度:(8,1024 )
对于一个天真的读者来说,这似乎表明微软声称支持在8到1024范围内的IV,而NIST测试了它们,但是事实并非如此。NIST有一个单独的标志‘OtherIVLen_ support’;除非声明了这一点,否则您实际上只能获得96位的支持。在Microsoft条目中没有提到该标志,因此Microsoft并不声称支持这些IV长度。
确切地说,NIST希望您知道这一点(如果您不熟悉NIST信息表单的内部结构),我不知道。OtherIVLen_Supported标志甚至在“描述字段的图例”标题中都没有提到。
https://crypto.stackexchange.com/questions/8928
复制相似问题