引言
在过去的十年中,智能卡上的计算能力发展迅速,基于 公钥的智能卡广泛应用于各个领域。2001年Borst总结了智 能卡上应用的各种密码算法以及关于这些算法的攻击。从那以后,关于密码算法的各种攻击也越来越多,其中比较着名 的有对于MD5和SHA一1的攻击以及其他对哈希函数的攻 击。另外不太为人注意的还有,对于像A5/l(应用于GSM 中) 和EO(应用于蓝牙中)这样的流密码分析技术也取得了不小 的进步。在分组密码方面,AES的采用一定程度上保证了安 全性。公钥密码方面,RSA的安全填充技术也成为一个研究 热点。
1 消息认证码
消息认证码实际上是对消息本身产生的一个冗余的信 息,消息认证码是利用密钥对要认证的消息产生新的数据块 并对数据块加密生成的,它对于要保护的信息来说是一一对 应的。因此消息认证码可以有效保证消息的完整性,以及实现发送方消息的不可抵赖和不可伪造。消息认证码的安全性主要取决于两点:首先,采用的加密算法,即所谓的数字签名;其次,是待加密的数据块的生成方法。
消息认证码不支持可逆性,是多对一的函数,其定义域由任意长的消息组成,而值域是由远小于消息长度的比特串构成。从理论上来说,一定存在不同的消息产生相同的认证码,因此必须找到一种足够单向和强碰撞自由性的方法才是安全的。
而对于消息认证码的主要攻击目标也是找到一对或者多对碰撞消息。对于现有的攻击方法,有些可以攻击任意类型的哈希方案,有些只针对特定的哈希方案。自从2004年MD5算法被攻破以后,SHA也面临被攻破的危险。因此,寻找一种足够安全的单向哈希函数已经成为当务之急,消息认证码的实现也会随之改变。
2 分组密码
分组密码在密码领域广泛使用,除了本身的几种工作模式之外,它可以用来构建MAC,也可以用来构建哈希函数、伪随机函数等等。分组密码具有速度快、易于标准化和便于软硬件实现等特点,通常是信息域网络安全中实现数据加密、数字签名、认证及密钥管理的核心体制,它在计算机通信和信息系统安全领域中有着最广泛的应用。
第一个广泛使用的分组密码算法是DES算法。DES自1977年公布后得到了许多组织、部门的使用,各国的密码学工作者也对它进行了深入的分析,它是迄今为止使用最广泛和最成功的分组密码。DES的轮函数采用Feistel网络,8个s盒,扩充、压缩置换、块置换。其算法简洁、快速且加解密相似。但一个明显的缺陷是s盒为黑盒,因此公众长久地抱怨并怀疑它设有陷门。早期的迭代分组密码设计主要围绕DES进行,后来在此基础上有很大的发展,出现了众多的Feistel型密码,DES的设计至今仍闪烁着人类设计思想的精华,其结构和部件仍在被后人效仿。但是它的密钥长度太短,仅为56比特,已经不能抵抗穷尽密钥搜索攻击。
对DES的成功破译迫使人们重新设计密码算法。IDEA是X.Lai和J.L.Massey于1990年发表的,当时称为PES,1992年改名为IDEA。IDEA是第一个不使用Feistel网络的分组密码。IDEA的安全性设计思想是:采用同一明文空间上的三个不同的群运算,使隐蔽、混淆和扩散融为一体。IDEA是分组密码的杰出代表,开创了新的一类设计风格。但是IDEA存在大量的弱密钥,这与其密钥拓展算法只是线性变换有关,这点也表明需要对其密钥拓展算法重新设计。此后出现的NEA也是一种IDEA型的密码。