压缩函数的构造方法
1 压缩函数的构造类型
压缩函数的构造主要分为以下四类:
1. 基于分组密码的构造 :利用已有的分组密码等基本原语构建新的密码学结构,具有诸多优势。设计高效安全的密码学原语难度大,失败尝试远多于优秀设计。复用现有软硬件实现可减少开发工作量,加速设计与实现过程,提高设计质量。模块化设计便于从两方面分析结果,既能分析构造本身以证明其在底层原语具备特定属性时能实现某些特性(如抗碰撞性),也能单独分析底层原语,虽有难度但相对容易。此外,这种方法能借助底层原语的可信度,例如使用经过多年审查的AES作为构建模块的设计,比需从头评估的临时设计更值得信赖。
2. 基于置换的构造 :现实中的分组密码,其密钥调度通常计算成本高。用作加密盒时,因密钥可多次复用,密钥调度只需计算一次,影响不大;但用于构建压缩函数时,每次调用可能使用新密钥,密钥调度会成为显著的计算开销。而且,许多分组密码的块长度为128或256位,抗碰撞强度仅64或128位,处于安全范围的较低端。一种解决方案是考虑无密钥原语,如理想情况下宽度大于256位的置换。不过,从置换构建压缩函数不能仅简单调用一次底层置换,构造需更复杂。海绵构造是另一种流行方法,虽基于单次置换调用构建的压缩函数不具备抗碰撞性,但在置换为理想(即表现为随机置换)的情况下,使用该置换的海绵构造具有抗碰撞性,如Keccak(即SHA - 3)就采用了这种方法。
3. 专用设计 :不基于其他密码学原语的压缩函数称为专用设计。它打破了模块化设计方法,通常需整体分析结果。专用设计的最大优势是可针对效率进行调整,因为分组密码主要为加密而非哈希设计。此外,基
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



