密码学系列之:SAFER
简介
分组密码是一个非常优秀的加密结构,很多常用加的加密算法使用的都是分组算法,比如 DES。SAFER 表示的也是一种分组密码算法。一起来看看吧。
SAFER 简介
SAFER 的全称是 Secure And Fast Encryption Routine,在密码学中,SAFER 主要是由 James Massey(IDEA 的设计师之一)代表 Cylink 公司设计的一组分组密码。
SAFER 主要有四种类型分别是:SAFER K, SAFER SK ,SAFER+ 和 SAFER++ 。
其中 SAFER K 和 SAFER SK 是比较早期的设计,共享相同的加密函数,但是轮次和密钥调度是不一样的。
后面的 SAFER+ 和 SAFER++ 是作为 AES 算法的候选算法提交给 NESSIE 的。 SAFER 系列中的所有算法都没有专利限制,可以免费使用。
SAFER K 和 SAFER SK
第一个 SAFER 密码是由 Massey 在 1993 年发布的 SAFER K-64,具有 64 位块大小。 “K-64”表示 64 位的密钥大小。
因为 64 位的块太小了,不适合加密大的数据,所以第二年,Massey 发布了支持 128 位的变体,叫做:SAFER K-128。
但是,Lars Knudsen 和 Sean Murphy 发现这个版本存在一些问题,于是将密钥调度按照 Knudsen 的建议从新设计。这些变种算法分别被命名为 SAFER SK-64 和 SAFER SK-128。
其中 “SK”代表”Strengthened Key schedule”也就是强化过的时间调度。
除此之外,还有一种 40 位块大小的变种算法 SAFER SK-40。
我们使用一个图来看下 SAFER K 算法的基本流程:
从最上面开始,是明文的输入阶段,每个明文都被分成 8 块。
接着就是密钥混合阶段,在这个阶段,明文分别和子密钥进行加法模 256 或者 XOR 运算。
然后是替换阶段,将上一阶段生成的结果通过两个相反的 S 盒映射成为新的数据。
这两个 S 盒分别是由 45x和 log45这两个函数派生出来的。有想了解 S 盒的朋友可以参考 “密码学系列之:blowfish 对称密钥分组算法” 一文。
然后是第二次的密钥混合阶段。
在第二次密钥混合阶段之后,会使用 pseudo-Hadamard transform (PHT)来进行扩散。
这四个阶段组成了一轮加密。
SAFER+ 和 SAFER++
SAFER+ 和 SAFER++ 是对原有的 SAFER 加密算法的改进。他们是由亚美尼亚密码学家 Gurgen Khachatrian(亚美尼亚大学)和 Melsik Kuregian 与 Massey 共同设计的。
SAFER + 是在 1998 年提出的,但是是以 AES 的候选算法提交的,它的块大小是 128 位。蓝牙的密钥是基于 SAFER +的自定义算法来实现的(称为 E21 和 E22),
SAFER ++ 是在 2000 年通过两个版本提交给 NESSIE 项目的,一个版本是 64 位,另一个版本是 128 位。
本文已收录于 http://www.flydean.com/safer/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
版权声明: 本文为 InfoQ 作者【程序那些事】的原创文章。
原文链接:【http://xie.infoq.cn/article/534d2370c682cb1e6c48e0d56】。文章转载请联系作者。
评论