信息安全原理与技术第2版郭亚军宋建华李莉董慧慧清华大学出版社2019/8/2Ch3(1)-对称加密技术2第3章对称加密技术(1)•主要知识点:--对称密码模型--密码攻击--古典加密技术--数据加密标准--高级加密标准--中国商用密码算法-SMS4--RC6--流密码--分组密码工作模式--随机数的产生--对称密码的密钥分配2019/8/2Ch3(1)-对称加密技术3•密码技术主要分为对称密码技术和非对称密码技术•对称密码技术中,加密密钥和解密密钥相同,或者一个密钥可以从另一个导出•非对称密码技术则使用两个密钥,加密密钥和解密密钥不同,非对称密码技术则产生于20世纪70年代•20世纪70年代以前的加密技术都是对称加密技术,这个时期的加密技术也称为古典加密技术。•古典加密技术一般将加密算法保密,而现代的对称加密技术则公开加密算法,加密算法的安全性只取决于密钥,不依赖于算法2019/8/2Ch3(1)-对称加密技术4密码学的基本概念•密码学(Cryptology)包括密码编码学(Cryptography),和密码分析学(Cryptanalysis)•密码编码学是研究加密原理与方法,使消息保密的技术和科学,它的目的是掩盖消息内容•密码分析学则是研究破解密文的原理与方法•密码分析者(Cryptanalyst)是从事密码分析的专业人员•被伪装的原始的消息(Message)称为明文(Plaintext)•将明文转换为密文过程称为加密(Encryption)2019/8/2Ch3(1)-对称加密技术5•加了密的消息称为密文(Ciphertext)•把密文转变为明文的过程称为解密(Decryption)•从明文到密文转换的算法称为密码(Cipher)•一个加密系统采用的基本工作方式叫做密码体制(Cryptosystem)•在密码学中见到“系统或体制”(System)、“方案”(Scheme)和“算法”(Algorithm)等术语本质上是一回事•加密和解密算法通常是在一组密钥(Key)控制下进行的,分别称为加密密钥和解密密钥•如果加密密钥和解密密钥相同,则密码系统为对称密码系统2019/8/2Ch3(1)-对称加密技术6对称密码模型•对称密码也称传统密码,它的特点是发送方和接收方共享一个密钥•对称密码分为两类:分组密码(BlockCiphers)和流密码(StreamCiphers)•分组密码也称为块密码,它是将信息分成一块(组),每次操作(如加密和解密)是针对一组而言•流密码也称序列密码,它是每次加密(或者解密)一位或者一个字节2019/8/2Ch3(1)-对称加密技术7•一个对称密码系统(也称密码体制)有五个组成部分组成。用数学符号来描述为S={M,C,K,E,D},如图3.2所示。(1)明文空间M,是全体明文的集合。(2)密文空间C,表示全体密文的集合。(3)密钥空间K,表示全体密钥的集合,包括加密密钥和解密密钥。(4)加密算法E,表示由明文到密文的变换。(5)解密算法D,表示由密文到文明的变换。2019/8/2Ch3(1)-对称加密技术8明文加密算法解密算法明文传输通道MMCC攻击者接收方发送方密钥源安全通道KK图3.2对称密码系统模型2019/8/2Ch3(1)-对称加密技术9•对明文M用密钥K,使用加密算法E进行加密常常表示为Ek(M),同样用密钥K使用解密算法D对密文C进行解密表示为Dk(C)•在对称加密体制中,密解密密钥相同,有:C=Ek(M)M=Dk(C)=Dk(Ek(M))2019/8/2Ch3(1)-对称加密技术10密码体制至少满足的条件•(1)已知明文M和加密密钥K时,计算C=Ek(M)容易•(2)加密算法必须足够强大,使破译者不能仅根据密文破译消息,即在不知道解密密钥K时,由密文C计算出明文M是不可行的•(3)由于对称密码系统双方使用相同的密钥,因此还必须保证能够安全地产生密钥,并且能够以安全的形式将密钥分发给双方•(4)对称密码系统的安全只依赖于密钥的保密,不依赖于加密和解密算法的保密2019/8/2Ch3(1)-对称加密技术11密码攻击•分析一个密码系统是否是安全,一般是在假定攻击者知道所使用的密码系统情况下进行分析的•如:密码分析者可以得到密文,知道明文的统计特性,加密体制,密钥空间及其统计特性•这个假设称为Kerckhoff假设•分析一个密码系统的安全性一般是建立在这个假设的基础上•对称密码体制的攻击有两种方法:密码分析和穷举攻击(BruteForceSearch)2019/8/2Ch3(1)-对称加密技术12•密码分析是依赖加密算法的性质和明文的一般特征等试图破译密文得到明文或试图获得密钥的过程•穷举攻击则是试遍所有可能的密钥对所获密文进行解密,直至得到正确的明文;或者用一个确定的密钥对所有可能的明文进行加密,直至得到所获得的密文2019/8/2Ch3(1)-对称加密技术13穷举攻击•穷举攻击是最基本也是比较有效的一种攻击方法•从理论上讲,可以尝试所有的密钥•穷举攻击的代价与密钥大小成正比•密码算法可以通过增大密钥位数或加大解密(加密)算法的复杂性来对抗穷举攻击•表3.1是穷尽密钥空间所需的时间。从表中我们可以发现,当密钥长度达到128位以上时,以目前的资源来说,穷举攻击将不成功2019/8/2Ch3(1)-对称加密技术142019/8/2Ch3(1)-对称加密技术15密码攻击类型•密码分析是基于Kerckhoff假设•密码分析者所使用的策略取决于加密方案的性质以及可供密码分析者使用的信息•根据密码分析者所知的信息量,把对密码的攻击分为:唯密文攻击,已知明文攻击,选择明文攻击,选择密文攻击,选择文本攻击2019/8/2Ch3(1)-对称加密技术16•唯密文攻击(Ciphertext-OnlyAttack):密码分析者知道:加密算法和待破译的密文.•已知明文攻击(Known-PlaintextAttack):密码分析者除知道加密算法和待破译的密文外,而且也知道,有一些明文和同一个密钥加密的这些明文所对应的密文即知道一定数量的明文和对应的密文•选择明文攻击(Chosen-PlaintextAttack):密码分析者知道加密算法和待破译的密文,并且可以得到所需要的任何明文所对应的密文,这些明文和待破译的密文是用同一密钥加密得来的,即知道选择的明文和对应的密文。如在公钥密码体制中,攻击者可以利用公钥加密他任意选定的明文2019/8/2Ch3(1)-对称加密技术17•选择密文攻击(Chosen-CiphertextAttack):密码分析者知道加密算法和待破译的密文,密码分析者能选择不同的被加密的密文,并可得到对应的解密的明文,即知道选择的密文和对应的明文。解密这些密文所使用的密钥与解密待破解的密文的密钥是一样的。这种攻击主要用于公钥密码算法。•选择文本攻击(ChosenTextAttack):选择文本攻击是选择明文攻击和选择密文攻击的结合。密码分析者知道加密算法和待破译的密文,并且知道任意选择的明文和它对应的密文,这些明文和待破译的密文是用同一密钥加密得来的,以及有目的选择的密文和它对应的明文,解密这些密文所使用的密钥与解密待破解的密文的密钥是一样的。2019/8/2Ch3(1)-对称加密技术18•如果一个密码系统能够抵抗选择明文攻击,那么它也能抵抗唯密文攻击和已知明文攻击•在这几种攻击类型中,唯密文攻击难度最大,因为攻击者可利用的信息最少•对密码设计者而言,被设计的加密算法一般要能经受得住已知明文的攻击•如果无论攻击者有多少密文,由一个加密算法产生的这些密文中包含的信息不足以唯一决定对应的明文,也无论用什么技术方法进行攻击都不能被攻破,这种加密算法是绝对安全(UnconditionalSecurity)•除一次一密(One-TimePad)外,没有绝对安全的加密算法2019/8/2Ch3(1)-对称加密技术19•一般来说,加密算法的使用者应该挑选满足下列标准中的一个或两个的算法:(1)破译该密码的成本超过被加密信息的价值。(2)破译该密码的时间超过该信息有用的生命周期。•如果满足上述的两个准则,一个加密算法就可认为是在计算上安全(ComputationalSecurity)的•计算上安全是指在计算能力有限的的情况下(如计算所需时间比宇宙生存时间还长),无法破解此密文•目前的加密算法一般是计算上安全的2019/8/2Ch3(1)-对称加密技术20密码分析方法•当密钥长度增加到一定的大小时,穷举攻击变得不实际•比较流行的密码分析方法是线性密码分析和差分密码分析•线性分析是一种已知明文攻击•线性分析是一种统计攻击,它以求线性近似为基础。通过寻找现代密码算法变换的线性近似来攻击•用这种方法只需要知道243个已知明文的情况下就可以找到DES的密钥2019/8/2Ch3(1)-对称加密技术21•差分密码分析在许多方面与线性密码分析相似•它与线性密码分析的主要区别在于差分密码分析包含了将两个输入的异或与其相对应的两个输出的异或相比较•差分密码分析也是一个选择明文攻击•差分密码分析出现于20世纪70年代,但在1990年才公开发表•它的基本思想是:通过分析明文对的差值与密文对的差值的影响来恢复某些密钥位•差分分析可用来攻击任何由迭代一个固定的轮函数的结构的密码2019/8/2Ch3(1)-对称加密技术22古典加密技术•古典加密技术主要使用代换或者置换技术•代换是将明文字母替换成其他字母、数字或者符号•置换则保持明文的所有字母不变,只是打乱明文字母的位置和次序•古典代换加密技术分为两类:单字母代换密码,它将明文的一个字符用相应的一个密文字符代替。多字母代换密码,它是对多于一个字母进行代换•单字母代换密码中又分为单表代换密码和多表代换密码2019/8/2Ch3(1)-对称加密技术23•单表代换密码只使用一个密文字母表,并且用密文字母表中的一个字母来代替一个明文字母表中的一个字母•多表代换密码是将明文消息中出现的同一个字母,在加密时不是完全被同一个固定的字母代换,而是根据其出现的位置次序,用不同的字母代换2019/8/2Ch3(1)-对称加密技术24单表代换密码•设M和C分别表示为含n个字母的明文字母表和密文字母表。M={m0,m1,…,mn-1}C={c0,c1,…,cn-1}如果f为一种代换方法,那么密文为C=Ek(m)=c0c1…cn-1=f(m0)f(m1)…f(mn-1)•单表代换密码常见的方法有加法密码,乘法密码和仿射密码2019/8/2Ch3(1)-对称加密技术25加法密码•对每个c,m∈Zn,加法密码的加密和解密算法是:C=Ek(m)=(m+k)modnM=Dk(c)=(c-k)modnk是满足0kn的正整数。若n是26个字母,加密方法是用明文字母后面第k个字母代替明文字母•Caesar密码是典型的加法密码,由JuliusCaesar发明,最早用在军方。将字母表中的每个字母,用它后面的第3个字母代替2019/8/2Ch3(1)-对称加密技术26•Caesar密码举例•明文:meetmeafterthetogaparty•密文:PHHWPHDIWHUWKHWRJDSDUWB•对每个明文字母m,用密文字母c代换,那么Caesar密码算法如下:加密:C=E(m)=(m+3)mod26解密:M=D(c)=(c–3)mod26•移位可以是任意的,如果用k(1≤k≤25)表示移位数,则通用的Caesar密码算法表示为:加密:C=Ek(m)=(m+k)mod26解密:M=Dk(c)=(c–k)mod262019/8/2Ch3(1)-对称加密技术27Caesar密码安全性•对密码的分析是基于Kerckhoff假设•假设攻击者知道使用Caesar密码加密。如果攻击者只知道密文,即唯密文攻击,只要穷举测试所有可能字母移位的距离,最多尝试25次•如果攻击者知道一个字符以及它对应的密文,即已知明文攻击,那么攻击者很快就通过明文字符和对应的密文字符之间的距离推出密钥•这个例子说明一个密码体制安全至少要能够抵抗穷举密钥搜索攻击,