初始化向量
动机

由电子密码书模式(ECB)下加密的结果并不安全,即使未经破解我们仍几乎可以看得出原图的轮廓。
区块加密在密码学的领域里是最基本的加密运算方式之一。然而它的限制是只能对一个预先定义、固定大小数据进行加密。比如在高级加密标准(AES)里,若使用长度为128位的密钥,加密的过程就是将整个明文切割成多个128位长度的子明文,然后依前后顺序用同一把密钥转换成对应的多个128位长度的子密文,这些子密文依产生的顺序连接起来便是完整的密文。这种作法其实就是把甲数据转换成固定的乙数据,这样的对应关系是绝对的,因此攻击者在收集足够的明文与密文的组合后可以轻易的比对并推导出明文或密钥。
为了要隐藏明文与密文的组合被攻击者收集,并且不重新创建密钥来混淆输入的明文,在1980年由美国国家标准与技术中心提出了四种区块加密模式。第一种称为电子密码书模式(ECB mode),描述了最基本的运作模式(前述较有疑虑的运算方式)。为了要避免ECB模式的问题,文中提出了密码块链接模式(CBC mode)。CBC模式的作法是对第一块明文投入随机的初始化向量,然后将明文与向量运算的结果加密,加密的结果再作为下一块明文的向量。这种做法的最终目的是要达到语义上的安全,让攻击者无法从密文中获取能助其破译的相关线索,避免遭受选择明文攻击法。
取值
初始化向量的值依密码算法而不同。最基本的要求是“唯一性”,也就是说同一把密钥不重复使用同一个初始化向量。这个特性无论在区块加密或流加密中都非常重要。
许多要求初始化向量必须让攻击者无法预测。这种要求一般使用随机数或拟随机数来达到。在这种应用中,重复的初始化向量是可以被忽略的,但是生日攻击的问题依然得列入考量,因为若向量可以被预测,会让攻击者找到撤消明文的线索。
初始化向量的值主要还是取决于密码算法。其做法不外乎就是随机或指定(stateful)。使用随机的方式则取值由发送方计算,并要将向量值送交给接收方。指定的方式则是让收发两方分享初始化向量所能指定的所有值(state),这些值收发双方必须预先就定义好。
区块加密
区块加密常被用做身份验证的加密。之后亦有所谓的身份验证加密模式(authenticated encryption modes)。在这种模式中会使用到初始化向量。这类应用中一般求出的结果都是固定值,因此使用固定结果的方式(deterministic algorithms)进行验证,所以初始化向量亦使用固定值或是全部填零。
流加密
流加密中的初始化向量被计入那些被用来加密的密钥的信息(secret state)里,然后每次算出后的密文再滚入下一轮(round)的密文计算之中。由于性能的要求,流加密的设计都希望轮的总数能愈小愈好;但实际的应用上,要定义出总数是十分困难的(not a trivial task)。再著,我们也必须考量其他议题,如:传输过程中损失的信息量、密文的独一性、初始化向量的相关性以及造成流加密许多安全议题的相关初始化向量攻击法。这类攻击议题对流加密的安全性造成严重的隐忧,并且有许多持续进行的研究。
WEP的初始化向量
在无线传输规格802.11的有线等效加密算法中使用24位的初始化向量来与同一把密钥做加密运算,这使得密文容易被破译。 使用数据包插入的方式可以在数秒内将WEP破解。这个严重的缺限使得此算法不被推荐使用。
参见
Nonce
随机数
盐 (密码学)
块密码的工作模式
RC4
延伸
Schneier, B.Applied Cryptography 2nd. New York: Wiley. 1996. ISBN 0-471-12845-7.
Ferguson, N.; Schneier, B. Practical Cryptography. New York: Wiley. 2003. ISBN 0-471-22894-X.
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

- 有价值
- 一般般
- 没价值








24小时热门
推荐阅读


关于我们

APP下载


{{item.time}} {{item.replyListShow ? '收起' : '展开'}}评论 {{curReplyId == item.id ? '取消回复' : '回复'}}