- 有关详细信息,请参阅:密码学.
A类分组密码提供了一种加密明文块以生成密文块的方法。分组密码操作模式指定如何组合多个分组密码操作以完成一些更大的任务,例如加密消息或提供伪随机数发生器。对手头的任务使用错误的模式可能会导致系统不安全,即使密码本身是安全的。 模式最初是为数据加密标准在美国联邦信息处理标准(FIPS)[1].最近的NIST标准建议见“分组密码操作模式建议”[2]
任何模式都可以应用于分组密码.
传统模式
在某些模式下,密码仅用于数据保密。这些都包括在这里。请参阅下一节用于提供身份验证的模式。
电子代码簿,ECB
在电子代码簿模式下,密码仅独立应用于每个明文块。 缺点是相同的明文块总是加密为相同的密文;这给敌人提供了一些信息。如果以这种方式加密了足够多的块,系统将容易受到密码本攻击因此,欧洲央行通常不使用.
密码区块链
在密码块链模式下,在加密之前,将前一块的密文输出XORed为明文。然后,块n的加密为:
c(c)n个=加密(pn个异或cn-1个)
对于n=1初始化向量(IV) 必须提供以充当c0。这不需要保密,但每条消息的保密性必须不同,并且应该是随机的。如果重复使用相同的IV,那么如果两条或多条消息以相同的文本开头,它们将对第一个块或前几个块进行相同的加密。这是一个不必要的弱点;因此,使用独特的IV是标准做法。 CBC模式使任何块的加密依赖于之前加密的所有块。加密块中的位错误(例如可能由线路噪声引起的)将导致该块和下一块的解密被篡改,但以后的块不会受到影响。CBC能够自我保护,防止比特滑动错误。然而,失去同步是致命的;如果哪怕是一个比特被丢弃或添加,那么受影响的块及其后面的所有比特都将被打乱。如果解密仅应用于通过身份验证的数据,则数据包或消息的身份验证可以防止此类问题, 密码块链接是最重要的广泛使用的模式.IPsec(IPsec)将其指定为唯一允许的模式。PGP公司和TLS公司也要使用它。
密码反馈,CFB
在密码反馈模式下,前一个块的密文输出在与明文块进行XORed之前进行加密。然后,块n的加密为:
c(c)n个=pn个异或加密(cn-1个)
对于CBC模式,初始化向量c0是必需的,每个消息必须不同。块n的解密是
第页n个=cn个异或加密(cn-1个).
请注意,对于解密块,使用加密函数。这有两个含义:不必知道加密函数的逆函数,而且加密密钥必须是机密的。
输出反馈,OFB
在输出反馈模式下,一个块的加密函数的输出用作下一块的输入。这有效地允许将分组密码用作流密码.仅取决于键和初始化向量o的流0生成为
o个n个=加密(on-1个).
为了加密,将此流与明文进行异或运算,以生成密文。
c(c)n个=pn个异或on个.
为了解密,从初始化向量生成相同的输出流,然后对密文进行异或运算以恢复明文。与CFB模式一样,加密函数用于解密,具有相同的含义。
计数器,CTR
在计数器模式下,对计数器进行加密以生成一系列伪随机输出块。它可以用于创建伪随机数发生器或a流密码; 如果分组密码是安全的,并且适当地进行了键控和重新键控,那么这些密码也将是安全的。, Yarrow中使用计数器模式[3] 随机数发生器和更高版本。 可以使用一些系统输出作为新密钥重新设置密钥;雅罗每10次迭代都会这样做,只是为了使任何分析复杂化。然而,如果需要大量输出,这对安全来说是不够的;密码还必须从外部正版源重新键入(很少)随机数Yarrow文件显示2后发生攻击键大小/3输出,所以任何计数器模式的使用都应该在此之前在外部重新设置密钥。
两用模式
当分组密码用于混合密码体制,a加密散列也经常使用;密码提供了保密性,哈希提供了身份验证。然而,这有点低效;系统必须对数据进行两次传递,一次加密,一次散列。 最近(大约从世纪之交以来)有相当多的工作是设计能够一次性完成这两项任务的算法。许多提出的解决方案都采用分组密码的新操作模式。这些内容将在本节中介绍。 大部分工作都是在互联网标准的背景下完成的,例如IPsec(IPsec),它解决了一个重大的性能问题。请参见副本请求5116“认证加密的接口和算法”[4],RFC 5282号文件 [5].副本请求3686,RFC 4106号文件,RFC 4309号文件和射频5084.
可调整模式
最近的发展是可调整分组密码
[6].在普通分组密码只有两个输入(明文和密钥)的情况下,可调整的分组密码有第三个称为调整的输入。微调和密钥一起控制密码的操作。如果与通常相当昂贵的关键调度操作相比,更改调整足够轻量级,那么一些新的操作模式就成为可能。例如,您可以使用该密文来更改调整,而不是将以前的密文排除在明文中。其他几种调整模式也是可能的;这是当前研究的一个活跃领域。
工具书类
|