美国国家安全局Skipjack分组密码设计的密码分析视角
1. 引言
Skipjack是由美国国家安全局(NSA)设计的对称密钥分组密码,块大小为64位,密钥大小为80位。它最初被用于美国政府的防篡改Capstone和Clipper芯片,用于语音、移动和无线通信等领域。由于NSA以其保密性和先进的密码设计与分析技术而闻名,Skipjack的设计引起了公众的广泛关注。
1993年,一个由5位知名密码学家组成的小组对Skipjack的安全性进行了审查,结论表明它基于NSA的先进技术,在当时对已知的先进密码分析攻击(如差分密码分析、线性密码分析、相关密钥密码分析)具有相当的抵抗力。1998年,Skipjack被解密,引发了众多安全研究人员的分析。
2. Skipjack密码
2.1 密码结构
Skipjack的64位块被分为四个16位字。8个A轮和8个B轮交替进行,直到完成32轮,使用一个常量轮计数器(轮数范围为1到32)。变换G : {0, 1}32 × {0, 1}16 → {0, 1}16由一个4轮Feistel结构组成,其内部函数F : {0, 1}8 → {0, 1}8是一个8×8的S盒。
2.2 密钥调度
Skipjack的密钥调度采用10字节(80位)的秘密密钥K,每轮使用4个字节进行G变换。密钥K表示为K = B1B2B3B4B5B6B7B8B9B10,其中Bi ∈ {0, 1}8是密钥的字节。第i轮密钥RKi = RKi mod 5,具体如下:
- RK1 = B1B2B3B4
- RK2 = B5B6B7B8
- RK3 = B9B10B1B2