也许有些奇怪的问题,但如果我想指定一个符合NISTSP800-108的协议。这列出了一整套基于键的密钥派生函数,其中包含了一组非常松散的参数。
我应该如何识别使用的KDF?本文档中的KDF似乎既没有名称、OID,也没有ASN.1模块。世界上是否有符合这些描述并有名称/OID/ASN.1的兼容的KDF?
还是我必须自己做这项工作,然后根据可用的测试向量测试自己?
发布于 2014-04-26 16:58:42
当定义与NIST SP 800-108兼容的协议时,您只需要选择合适的选项,这些选项与您的协议都能很好地工作。
如果需要与特定的预先存在的协议兼容,您可能需要查看NIST SP 800-135 Rev1,它定义了特定于应用程序的密钥派生函数。值得注意的是,一些NIST SP 800-135 Rev1密钥派生函数是有效的NIST SP 800-108,并选择了特定的选项。
识别KDF的最佳方法是实际列出来自NIST SP 800-108 KBKDF的所有适用选项。(使用的三种功能(CTR、FB、管道);组件的顺序、标签的内容以及标签是否以零结束等等)最好用清晰的示例说明协议规范,这些示例显示了密钥派生中使用的NIST SP 800-108函数(或底层MAC函数的替代显示调用)的对应性。
推荐的测试方法是通过CAVP (加密算法验证程序)。测试需要很长的时间,并将由CST (认证测试实验室)进行,这需要花费大量的资金。但是您可以非常具体地选择要测试的内容(从相当大的选项空间),如果您通过测试,您将得到一个算法验证证书。
对于大多数常见的选项,成本较低、速度更快的方法可能是针对来自NIST/CAVP的现有非官方测试向量进行测试。
如果该实现不仅需要符合FIPS,而且还需要有美国政府认证(FIPS 140-2),那么就需要为适用的算法提供算法证书。
如果您需要一组用于KBKDF“实例化”的测试向量,一种方法是首先确保使用上述机制之一实现的正确性,以及使用“似乎正确”的实现来生成正式测试向量,并将测试向量附加到协议规范中。
在KBKDFVS (KBKDF验证系统)中解释了测试向量中使用的顺序、元素大小等的确定方法。
用于反馈模式的参数KBKDFVS用于(从KBKDFVS提取):
其他模式的信息(即)计数器和双管道相似。这些信息不足以对所有已知的KDF函数进行编码,但已经是一个良好的开端。
备注:根据您使用HKDF的方式,您经常使用NIST SP 800-108或NIST SP 800-56C:HKDF“只扩展”可视为NIST SP 800-108 KBKDF的一个变体。NIST SP 800-56C基本上是试图用NIST术语定义完整的HKDF (并添加AES-CMAC)。
https://crypto.stackexchange.com/questions/15835
复制相似问题