根据NIST to 800-108的要求,可以从PRF构建KDF的模式有三种:计数器模式、反馈模式和双流水线迭代模式。假设使用相同的PRF和输入分布,这三种不同的模式会对产生的KDF的安全强度产生任何影响吗?这里的安全强度针对的是输出的不可预测性,而威胁模型包括侧通道攻击。谢谢。
发布于 2019-02-14 15:04:14
很可能在实践中,这并没有多大的区别。我还没有在硬件设备中看到更复杂的模式的任何实现(有关这方面的信息,请查看FIPS认证页面)。主要采用CTR模式,然后采用反馈模式。许多HSM只实现了这三个中的一个,使得所有HSM之间很好地不兼容(谢谢NIST没有表示默认,即使在被指出问题之后!)。
正如注释中所指出的,这些KDF构建在原语的基础上,这些原语应该受到侧通道的保护。如果不确定要选择哪个原语,那么选择原语最有抵抗力的原语是有意义的。原则上,甚至一个字节副本到另一个内存位置(写!)可能容易受到侧通道攻击。但是,一般来说,如果底层原语是安全的,则KDF是安全的。如果没有用于分组密码的硬件加速,那么选择哈希函数可能是明智的,因为大多数哈希似乎对软件中的侧通道不那么脆弱。另一方面,密码可能会受到更多的关注,以防范它们--如果没有特定的系统,就没有强有力的推荐。
从PRF构建的KDF(而不是散列)是相对强的构造。因此,可能双管道KDF比其他两个强,但基本上这些构造对于任何目的来说都是足够强的,所以选择最容易实现的结构是有意义的。毕竟,复杂性越高/学习曲线越高,系统的安全性就越低。
最后,如前所述,并非每个系统都实现了所有的KDF,查看整个域,看看哪些实现是可用的/安全的/可以与任何其他参与者商定的,这可能是个好主意。许多系统根本就没有它们,这再次促进了简单性而不是复杂性。最好花时间做测试。
https://crypto.stackexchange.com/questions/33007
复制相似问题