1、第2章 密码学导论(1) 密码学基本概念,沈苏彬 南京邮电大学 信息网络技术研究所,2,主要问题,密码学由哪几个部分构成?这几个部分相互之间的关系? 密码系统由哪几个部分构成?这几个部分相互之间如何关联? 密码系统如何进行数据加密?这种加密能够保证数据的保密性吗? 密码系统可以分成哪几种类型?这些类型有何特点?,3,关键知识点,加密是数据通信安全和网络安全中最为重要的安全手段。 现在实用的是相对安全的加密系统。 现代密码学包括两个体系: 传统加密体系, 公钥加密体系。,4,主要内容,密码学的组成 数据加密基本概念 密码破译技术 加密系统的安全性 现代密码学分类,5,密码学的组成,密码学包括两个
2、部分: 数据加密和密码破译 数据加密: 对信息进行加密和解密的技术 加密算法, 解密算法, 密钥管理技术 密码破译: 攻破加密信息的技术 破解加密信息, 破解密钥,6,密码学的组成(续),加密与破译是一对矛盾体 从密码学的完整性看, 研究密码学, 必须研究密码破译, 否则无法客观地评判各类加密算法的严密程度,7,数据加密基本概念,明文(Plaintext, P): 未加密的信息或数据。 密文(Ciphertext, C): 加密后的信息或数据。 加密算法(E): 将明文转换成为密文的处理过程。,8,密码学基本概念(续2),解密算法(D): 将密文转换成为明文的处理过程 加密密钥(KE): 控制
3、加密处理过程的一种信息或数据 解密密钥(KD): 控制解密处理过程的一种信息或数据,9,密码学中符号表示,加密算法: C = E(KE, P) = KEP 解密算法: P = D(KD, C) = D(KD, E(KE, P) 从以上加密和解密的公式可以看出,经过数学抽象表示的加密和解密过程更加简洁、明了,便于梳理思路,掌握本质内容。,10,密码破译技术,安全都是指在某种环境和条件下相对某种风险模型的安全。同样,必须根据目前常用的密码破译技术设计和评测加密算法。 Diffie和Hellman在1976年罗列了3种密码分析(也称为密码攻击)方式 已知密文:攻击者仅仅掌握密文, 试图破译对应的明文
4、、加密算法和密钥 已知明文:攻击者掌握了大量的明文和对应的采用相同加密算法和密钥加密的密文,试图破译加密这些密文的算法和密钥,11,密码破译技术(续),选择明文:攻击者可以向被攻击的加密系统提交无数个选择的明文并且可以检查对应生成的密文,试图破译该加密系统采用的加密算法和密钥。 已知明文攻击属于“被动系统识别”类攻击,而选择明文攻击属于“主动系统识别”类攻击。 作为一个安全的加密系统应该是一类难以识别的系统,至少必须防范“被动系统识别” (已知明文)类攻击,最好能够防范“主动系统识别” (选择明文)类攻击。,12,非技术性密码分析,实际常用的最为成功密码分析是非技术性密码分析: Social
5、Engineering (社交计谋) 例如: 窃取密钥, 打探密钥, 选择明文(提供假情报) 启示: 信息安全不仅仅是一项技术工作, 更是一项管理工作. 虽然密码分析也是一门学问, 但是, 本课程主要介绍密码学原理和算法,13,加密系统的安全性,W. Diffie和M. Hellman将加密系统的安全性分成两种类型: 相对安全(或计算安全)的加密系统 该类系统由于破译者的计算成本限制或者计算能力限制而看作是安全的。如果破译者不考虑计算成本,或者由于计算技术发展使得计算能力有大幅度提高,则这类系统就不再安全了。 绝对安全(或无条件安全)的加密系统 无论攻击者花费多少时间、使用多么高级的计算技术都
6、无法破译的加密系统。,14,加密系统的安全性(续1),无条件安全加密系统源于某种密文存在多种有意义的明文, 例如,对于简单替换而成的密文XMD可以对应于有意义的明文:now, and, the等等。 在计算安全的加密系统中,密文就一定存在确定的信息唯一决定的明文和密钥,其安全性只是依赖于计算的成本。,15,加密系统的安全性(续2),一种可以证明的无条件安全加密系统是“一次性覆盖数”系统。由于计算成本过高而无法实用。 该系统设计的密钥必须与明文同样长度,通过该密钥与明文进行“异或”操作,完成对明文的加密。该加密系统必须保证“一次一密钥”,即对于不同的明文采用不同的加密密钥。 目前实际可行的、并且
7、得到广泛应用的还是相对安全(计算安全)的加密系统。 为了对于计算安全加密系统有一个量化的概念,需要了解一些典型常数和参数的数量级别。,16,加密系统的安全性(续3),表2.1 典型常数和参数数量级别一览表,17,现代密码学分类,密码学有多种分类方法,例如可以根据加密数据过程中对明文的处理方式,分成块加密方法和流加密方法; 也可以根据加密和解密数据过程中采用的密钥数目,分成对称密钥加密方法和不对称密钥加密方法。 块加密方法是指对某个固定长度的数据块进行一系列复杂的运算生成对应的相同长度密文块的方法。通常采用的固定长度是64个比特,现在建议采用128个比特。,18,现代密码学分类(续1),流加密方
8、法是指不间断地对数据流中的某个较小的数据单元进行简单运算生成密文流的方法。 这里的较小数据单元可能是1个八位位组(即一个8比特长度的字节)或者2个八位位组。 对称密钥加密方法是指加密和解密过程都采用相同的密钥,即在图2.2中KE = KD。 不对称密钥加密方法是指加密和解密过程采用不同的密钥,即在图2.2中KE KD。,19,现代密码学分类(续2),现代密码学本质上可以分成两个部分: 传统密码学, 公钥密码学 传统密码学 对称密钥, 单个密钥进行加密和解密, 密钥保密才能保证密文保密 优点:加密和解密运算简单、高效 缺点:初始密钥协商和后续密钥更新困难,20,现代密码学分类(续2),公钥密码学
9、 不对称密钥, 公钥和私钥分别用于加密和解密过程。 不仅可应用于数据加密, 还可以应用于数字签名。 私钥保密才能保证密文不被攻破 优点:无需进行初始密钥的协商 缺点:加密和解密算法的计算量较大, 计算成本较高,21,本讲重点内容,密码学的构成: 密码学和密码分析 加密加密的基本概念:明文、密文、密钥 典型的密码攻击模式 安全密码学应该可以防御的攻击模式 加密系统的安全性分析 现代密码学的分类,22,思考题,(1) 什么是明文?什么是密文?从明文转换到密文还需要输入什么数据?需要利用什么过程? (2) 通常有几种破译密码的攻击方式?一个安全的加密系统至少应该防范何种密码攻击?最好能够防范何种密码
10、攻击? (3) 加密系统的安全性分成哪几种类型?常用的是哪种安全的加密系统?为什么?,23,思考题(续),(4) 什么是块加密算法?什么是流加密算法?实际应用中,是否可以用块加密算法替代流加密算法?试说明理由。 (5) 什么是对称密钥加密算法?什么是不对称密钥加密算法?实际应用中,是否可以采用不对称密钥算法替代对称密钥加密算法?试说明理由。 (6) 密码技术主要应该防御哪几类密码破译技术的攻击?这几类密码攻击技术有何特征?什么类型的密码系统算是安全密码系统?,24,本周课外作业,(1) 网络安全技术主要保护哪两类对象?试举例说明。 (2) 例举2个网络安全被破坏的实例,试用网络安全风险模型分析
11、,是属于哪种网络安全威胁? (3) 密码技术主要应该防御哪几类密码破译技术的攻击?这几类密码攻击技术有何特征?什么类型的密码系统算是安全密码系统?,第2章 密码学导论(2) 传统密码学概述,沈苏彬 南京邮电大学 信息网络技术研究所,26,关键知识点,传统密码学的基本原理是“替代”和“换位” 传统密码学的加密和解密采用同一个密钥 传统密码学的安全性很大程度上决定密钥长度 目前常用的传统密码学算法是DES算法,56比特的DES算法并不安全。 未来拟采用的传统密码学算法是AES算法,27,主要内容,恺撒加密法 传统密码学基本原理 数据加密标准DES算法 三重DES算法 高级加密标准AES算法 RC4
12、算法 加密操作模式,28,传统密码学历史,传统密码学起源于古代的密码术。早在古罗马时代恺撒大帝就采用“替代”方法加密自己发布的命令,这种“替代”加密方法被称为“恺撒加密法”。传统密码学的基本原理可以归结为两条对数据处理的方法:替代和换位。 美国国家标准局(NBS)于1977年颁布的数据加密标准(DES)是目前广泛应用的传统加密方法。 美国国家标准与技术学会(NIST)在2001年颁布的高级加密标准(AES)将是未来取代DES的一种加密方法。,29,凯撒密码,恺撒加密法是将明文中的每个字母用该字母对应的后续第3个字母替代,这里假定字母按照字母表顺序循环排列,即明文中的字母a对应密文中的字母D,明
13、文中的字母x对应密文中字母A。例如 明文:attack after dark 密文:DWWDFN DIWHU GDUN,30,凯撒密码(续),如果假定每个英文字母对应一个数值(例如a = 1, b = 2), 并且对于每个明文字母p经过凯撒密码处理后得到密文字母C, 则凯撒密码加密算法可以表示为C = E(p) = (p + 3) mode 26 凯撒密码的解密算法可以表示为p = D(C) = (C - 3) mod 26 明文: a b c d e f g h i j k l m n o p q r s t u v w x y z 密文: D E F G H I J K L M N O P
14、 Q R S T U V W X Y Z A B C,31,通用凯撒密码算法,W. Stallings将凯撒密码算法中的字母表移位数从3扩展到任意数k 26, 这样, 就可以得到通用凯撒密码加密算法:C = E(p) = (p + k) mode 26 这样, 通用凯撒密码解密算法就可以表示为:p = D(C) = (C - k) mod 26 这里k就是通用凯撒密码的密钥. 由于k只有25个可能取值, 所以, 在已知加密/解密算法下, 只要尝试25种密钥, 就可以破译通用凯撒密码.,32,通用恺撒加密法的启示,从通用恺撒加密法可以得到这样的启示,如果某个加密法只依靠密钥保密,则这种密钥的选择
15、应该具有很好的随机性,并且可以选择的空间足够大,使得攻击者利用现有的计算技术,在可能的时间范围内无法破译。 参照表2.2可知,根据目前主频为3.0GHz计算机的处理能力,长度为80的二进制数密钥在目前基本上是无法穷举了。 通用恺撒加密法的密钥相当于长度为5的二进制数密钥,当然就很容易被破译。,33,为何需要公开加密/解密算法?,不公开加密算法,则难以破译密码。公开加密算法, 仅仅是实际应用的需要。 电报的出现才使得加密算法与密钥的分离。加密算法可以在加密设备中实现,该设备被窃之后,应该不会影响保密电报的传递。这就需要将加密算法与密钥的分离, 只有公开加密/解密算法, 才能由制造商大规模生产廉价
16、的加密/解密设备和芯片. 才能普及加密算法的应用。,34,传统密码学原理,传统密码学包括两条原理: 替代和换位 替代: 将明文中的字母采用其它字母/数字/符号替代. 如果明文采用比特序列表示, 则将明文比特模式替代为密文比特模式. 凯撒密码就是采用替代原理设计的加密算法 换位: 将明文中的元素(字母/比特/字母组/比特组)进行某种形式的重新排列 最简单的一种换位加密算法是围栏技术, 将明文书写成为上下对角线形式, 再按照行顺序分别读出上行和下行的字母序列,35,传统密码学原理(续1),按照围栏方法对前面举例中的明文“attack after dark”的加密过程如下所示。 经过加密之后的密文就
17、是一串没有意义的字符串:“ATCATRAKTAKFEDR”。,a t c a t r a kt a k f e d r,36,传统密码学原理(续2),围栏加密算法比较简单, 容易被破译. 更加复杂的换位加密可以将报文逐行写成一个nm矩阵, 然后按照某个定义的列序列, 逐列读出字母. 这种列的先后排序就构成了换位加密的密钥,37,传统密码学原理(续3),矩阵加密方法必须事先确定矩阵的n和m的值。 对于矩阵加密方法会提出这样的问题: 如果读入的待加密字符串装不下一个nm的矩阵时,应该如何处理? 如果读入的待加密字符串装不满一个nm的矩阵时,应该如何处理? 实际上矩阵加密方法属于块加密方法,这两个问
18、题是块加密方法必须处理的问题。,38,传统密码学算法,大部分常用的传统加密算法都是块加密算法, 它处理固定长度块的明文, 输出相同长度的密文块 目前最常用, 最重要的传统加密算法包括: (1) 数据加密标准DES (2) 三重数据加密算法3DES或TDEA (3) 高级加密标准AES,39,数据加密标准DES,数据加密标准,英文缩写DES,是迄今为止应用最为广泛的标准化加密算法之一。 DES是美国国家标准局(NBS,现在更名为美国国家标准与技术学会NIST)于1977年标准化的一种传统密码学加密算法。 DES是在国际商用机器(IBM)公司于1973年提出的一种加密方法的基础上,经过美国国家安全
19、局(NSA)的验证和修改后标准化的加密方法。,40,数据加密标准DES(续1),IBM公司提交的加密算法是一种对称密钥的块加密算法,块长度为128个比特,密钥长度为128个比特。 该加密算法经过NSA安全评估后,将其块长度更改为64个比特,密钥长度更改为56个比特,并且修改了原来加密算法中的替代矩阵S-盒。 对于NSA对DES算法的更改有以下评论: (1) NSA降低密钥长度是为了降低DES加密算法的安全性,使得NSA在必要时,有能力破译DES加密系统。 (2) NSA修改原来加密算法中的S-盒,是为自己破译DES加密系统设置了后门,41,数据加密标准DES(续2),到了20世纪90年代初期,
20、有两次不成功的对DES破译的报告显示,DES的S-盒具有很强的防范攻击的能力。 这说明更改的S-盒是增强了DES的安全性 到了20世纪90年代中期,对于DES成功的破译报告表明,较短的密钥长度是DES算法的安全弱点。,42,DES算法概述,DES加密算法总体上是比较容易了解的一种加密算法。虽然其中具体的“替代”和“换位”的处理函数还是比较复杂,但是,这并不妨碍对DES加密算法的理解。 DES算法处理过程沿时间轴纵向可以分成前期处理、16次循环处理、后期处理部分,横向可以分成数据处理和密钥处理两个部分。,43,DES算法概述(续1),44,DES算法概述(续2),DES加密处理分成三个部分: (
21、1) 64比特明文块通过初始排列IP(换位)处理; (2) 通过16个轮回的替代和移位处理, 左右半换位形成预输出 (3) 预输出的64比特块进行逆初始排列IP-1处理, 产生64比特块密文 DES解密过程与DES加密过程基本一样, 但是需要按照相反顺序使用子密钥, 即按照K16, K15, , K1顺序处理每个轮回,45,DES算法每轮处理过程,每轮处理可以表示为: Li = R i-1, Ri = Li-1 F(Ri-1, Ki),46,DES算法的解密过程(1),DES算法的解密过程采用加密完全相同的过程,只是使用轮回密钥的顺序必须相反。 从DES的每轮处理过程可得: Lj = Rj 1
22、 (2.1) Rj = Lj 1 F(R j 1, Kj) (2.2) 假定“|”表示两个符号串的合并操作,L0 | R0表示经过DES初始排列的待解密数据块,初始排列操作可以表示为IP。 L0 | R0 = IP(C) (2.3),47,DES算法的解密过程(2),按照DES算法,密文是在第16轮产生的密文块L16 | R16经过左右换位和逆初始排列产生的,即 C = IP 1(R16 | L16) (2.4) 将公式(2.4)带入公式(2.3)可得 L0 | R0 = IP(IP 1(R16 | L16) = R16 | L16 (2.5) 由于DES解密过程与DES加密过程相同,只是使用
23、轮回密钥的次序颠倒,即 Lj = Rj 1 (2.6) Rj = Lj 1 F(R j 1, K16 (j 1) (2.7),48,DES算法的解密过程(3),利用公式(2.6)和(2.7),公式(2.5),以及公式(2.1)和(2.2)可以推导出以下公式: L1 = R0 = L16 = R15 (2.8) R1 = L0 F(R0, K16) = R16 F(R15, K16)= (L15 F(R15, K16) F(R15, K16) = L15 (2.9) 以此类推,可以用归纳法证明存在以下等式: Lj = R16 j (2.10) Rj = L16 j (2.11),49,DES算法
24、的解密过程(4),当DES算法经过16次解密处理,可以得到: L16 | R16 = R0 | L0 再经过DES算法后期左右换位和逆初始排列的处理就可以得到: IP 1(L0 | R0) = IP 1(IP(P) = P (2.12) 分析:在DES算法的正常求解过程中,通过两次“异或”运算抵消了复杂的“替代”和“换位”处理函数F对数据块的处理,无需寻找F的逆函数。,50,三重DES算法,早在20世纪70年代颁布DES标准的时候,一些密码学专家就预测到随着计算技术的发展,DES将难以满足安全性的需求,因此,提出了对多重DES算法的研究。 多重DES算法基本思路是:通过多次对数据块执行DES加
25、密算法,提高密文的安全性。 三重DES算法,简称为TDES、TDEA或者3DES,在1999年被接纳为NIST标准,该算法可以将DES的密钥扩展为112比特或者168比特长度。,51,三重DES算法(续),TDES算法的思路十分简单:利用密钥K1对明文P进行一次DES加密,利用密钥K2对密文C1进行一次DES解密,再利用密钥K3进行一次DES加密。 TDES加密算法的公式表示如下: C = E(K3, D(K2, E(K1, P) TDES解密过程正好与加密过程相反: P = D(K1, E(K2, D(K3, C),52,DES算法分析,DES算法最大弱点是密钥长度太短 虽然可以通过3DES
26、算法可以将密钥扩展到112比特(当K1=K3)或者168比特长度,但是,由于需要执行三次DES算法,其加密效率较低,无法满足NIST关于加密算法高效性的要求。 DES算法的另外一个缺陷是在软件中运行的效率较低。 为此NIST于1997开始在世界范围征集替代DES的加密算法,称为高级加密标准(AES)。,53,高级加密标准AES,NIST征集的AES的基本要求是:AES应该像DES和TDES那样是一个块加密方法,并且至少像TDES一样安全,但是其软件实现应该比TDES更加有效。 NIST在1997年9月发布征集候选AES的块加密方法时明确提出要求的指标: (1)不是机密的,可以向公众公开的加密方
27、法。 (2)可以提供128、192和256比特的密钥长度。 (3)具有128比特块长度(具有更强的安全性)。 (4)在世界任何地方都可用,不受任何限制。,54,高级加密标准AES(续),对AES候选方案的评审标准有3条: (1)全面的安全性,这是最为重要的指标。 (2)性能,特别是软件实现的处理性能。 (3)算法的知识产权等特征。 比利时学者Joan Daemen和Vincent Rijmen提出的Rijndael加密算法最终被选为AES算法。 NIST在2001年12月正式颁布了基于Rijndael算法AES标准。,55,RC4加密算法,与DES和AES加密算法不同,RC4是一种典型的流加密
28、算法,它在1987年由公钥密码学中著名的RSA加密算法的发明人之一R. Rivest提出。 由于RC4的简单性,使得它被广泛应用于网络安全中 。 流加密算法加密过程主要包括两个步骤: (1)利用密钥K生成一个伪随机比特序列 (2)用该伪随机比特序列与明文进行“异或”运算产生密文。,56,RC4加密算法(续1),流加密算法的解密过程也包括两个步骤: 利用同样的密钥K生成相同的一个伪随机比特序列 用该伪随机比特序列与密文进行“异或”运算得到明文。在流加密算法中,由密钥K生成的伪随机比特序列称为“密钥流”,用KS(K)表示。 流加密算法可以用以下两个公式表示: C = P KS(K) P = C K
29、S(K) 为了保证流加密算法的安全性,对于不同的明文,必须采用不同的KS,57,RC4加密算法(续2),RC4加密算法分成两个部分: 初始化部分,主要用于产生长度为256个八位位组的伪随机比特序列; RC4处理部分,利用初始化产生的伪随机比特序列对明文或者密文进行逐个八位位组的“异或”操作,并且每当对一个八位位组进行一次“异或”操作,就更改伪随机比特序列。,58,RC4加密算法(续3),/ Procedure: RC4_Init / Input:key: pointer to the key /keylen: length of the key / Output:s: state array
30、with 256 entries void RC4_Init(byte *key; int keylen; byte s256) unsigned int j, keyIndex = 0, stateIndex = 0;byte a = 0;/ Padding s with 0 up to 255for (j = 0; j = keylen) keyIndex = 0; 图2.8 RC4初始化部分C语言程序,59,RC4加密算法(续4),/ Procedure:RC4_Process / Input:in: pointer to the plaintext or ciphertext bein
31、g processed /len: length of the plaintext or ciphertext being processed / Input/output:s: state array storing pseudo-random bit sequence /index1, index2: state array indices modulo 256 / Output:out: pointer to the resulting ciphertext or plaintext void RC4_Process(byte *in; int len, index1, index2;
32、byte s256; byte *out) int j;byte a, b;for (j = 0; j len; j+) index1 = (index1 + 1) / xor operation 图2.9 RC4处理部分C语言程序,60,RC4加密算法(续5),经过多年的分析和测试,可以证明在密钥长度足够大时,并且丢弃到最前面的若干个(例如最前面的256个八位位组)伪随机比特序列,RC4算法是安全的。 需要注意的是,有些使用RC4加密算法的网络安全标准设定的RC4密钥长度过短,例如安全套接层(英文缩写SSL)协议规范中规定了RC4的密钥长度为40个比特,这就使得RC4成为不安全的加密算法。,
33、61,加密操作模式,前面介绍的DES和AES加密算法都是块加密算法, 它们只能对64比特或者128比特的数据进行加密。现实网络中传递的数据并不一定是64比特或者128比特? 问题1:如何在现实网络环境下针对不同长度的报文应用块加密算法? 问题2:是否可以在现实网络安全应用中使用块加密算法加密/解密数据流?,62,加密操作模式(续),加密操作模式就是利用块加密算法对任意长度的数据块或者数据流进行加密或者解密处理的方式。 NIST标准化了4种加密操作模式: 电子密码簿(英文缩写ECB)模式 密文块链接(英文缩写CBC)模式 密文反馈(英文缩写CFB)模式 输出反馈(英文缩写OFB)模式。,63,任
34、意长度报文的处理,对于任意长度的报文可以采用分块和填充的方法,将报文转换成为适合于加密算法的数据块。,64,电子密码簿(ECB)模式,最简单的处理办法是电子密码薄ECB:对于一组长度都为b的数据块,就可以采用相同密钥K分别执行n+1次加密算法E。 ECB的问题:对于给定某个密钥, 相同的数据块, 产生相同的密文块,65,密文块链接(CBC)模式,CBC模式中, 加密算法输入是前个密文块与当前明文块“异或”的结果, 每个块使用相同密钥 CBC模式中加密和解密算法公式Cj = E(K, Pj Cj 1), Pj = D(K, Cj) Cj 1, C0 = IV CBC中与第一个明文块进行“异或”操
35、作的初始化向量IV无需保密. 可以先用明文传递,66,密文反馈(CFB)模式,CFB可以将DES这类块加密算法转换成为流加密算法. 流加密算法不需要填充数据, 无浪费. 假定传输单元长度j比特(j通常为8), 与CBC类似, 其上次密文作为本次输入.,67,密文反馈(CFB)模式(续),与CBC不同, CFB仅仅对初始值与反馈值的合并数据加密后. 再与明文“异或”得到密文。以上加密/解密过程可以采用公式表示如下: Rj = (Rj 1*2l mod 2b) + Cj 1 Cj = S(l, E(K, Rj) Pj Pj = S(l, E(K, Rj) Cj,68,传统密码学应用,传统密钥学广泛
36、应用于计算机安全和网络安全, 例如UNIX系统口令加密 网络数据传输中, 传统密码学可以用于链路层加密和端到端加密 网络安全系统中, 通常采用传统密码学加密大容量的数据. 因为目前还是传统密码学中的加密/解密算法效率最高.,69,本章重点内容,恺撒加密法 传统密钥学基本原理: 替代和移位 数据加密标准 DES 高级加密标准 AES RC4加密算法 加密操作模式,70,思考题,(1) 传统的恺撒加密算法是否可以公开算法?通用恺撒加密算法是否可以公开算法?从密码学角度进行分析,恺撒加密算法是否安全? (2) 传统加密算法的基本原理是什么?DES加密算法如何运用这些基本原理构成一个安全的加密算法?
37、(3) 什么是三重DES算法?从密码学角度分析,为什么三重DES算法可以改善DES加密算法的安全性?,71,思考题(续),(4) AES算法在哪几个方面对DES算法进行了改进?AES算法与DES算法在哪些方面相同,哪些方面不同?为什么说AES的安全性优于DES算法? (5) 加密操作模式主要解决数据加密中的哪几类问题?现在常用的有几类加密操作模式?为什么说ECB模式不安全? (6) 为什么说CBC是一种块加密操作模式?这种块加密操作模式不适合于什么样的网络安全应用环境?如何解决这方面的问题?,72,本周课外作业,(1) 分别采用恺撒算法和围栏算法加密明文“meet you at six”。是否
38、可以将以上两种算法结合,产生一个新的加密算法?如果可以,请用新算法加密以上明文。 (2) 采用矩阵加密法加密明文“meet you at six”,请采用34矩阵,密钥为3142。 (3)加密操作模式主要解决数据加密中的哪几类问题?现在常用的有几类加密操作模式?为什么说ECB模式不安全?,沈苏彬 南京邮电大学 信息网络技术研究所,第2章 密码学导论(3) 公钥密码学概述,74,关键知识点,公钥密码学是为了解决电信网环境下的安全数据传递而提出的密码方法。 公钥密码学可以公开部分密钥。 公钥加密算法目前采用计算不可逆原理 目前广泛应用的公钥加密算法是RSA算法 Diffie-Hellman密钥生成
39、算法可以解决在公共电信网环境下数据加密传递的问题,75,主要内容,公钥密码学发展动因 公钥密码学基本原理 RSA公钥加密算法 Diffie-Hellman密钥生成算法 公钥密码体系与密钥管理,76,公钥密码学历史,Diffie和Hellman于1976年首先提出公钥密码学的需求和思路, 这是几千年来密码学中的真正的一次革命性的进步. 这是电信时代产物. 美国麻省理工学院的Ron Rivest, Adi Shamir, Len Adleman于1978年首先提出的公共密钥加密算法RSA, RSA算法的发明使得公钥密码学得到了广泛的应用 2003年5月, 发明公钥加密算法的Ron Rivest,
40、Adi Shamir和Len Ademan获得2002度图灵奖(计算机领域的诺贝尔奖),77,公钥密码学发展动因,公钥密码学发展动因来源于电信网环境下安全数据传递的应用。 电信网环境数据传递的存在两类安全威胁:其一是窃取电信网上传递的数据;其二在电信网传递的数据中插入非法的数据。为了解决这个问题,可以采用密码学方法对电信网传递的数据进行加密。,78,公钥密码学发展动因(续1),在通信网环境下,传统密码学无法实现快速的密钥分发,所以,传统的密码学无法解决电信网环境的数据安全问题。,79,公钥密码学发展动因(续2),为了解决在电信网环境下任意两个互不相识的用户之间能够进行安全传递问题,M. Dif
41、fie和W. Hellman设计了两个方案: (1)采用公钥密码系统,将传统密码学的密钥分解成加密密钥PK和解密密钥VK,从PK无法推导出VK,这样,就可以公开加密密钥PK,由接收方保密自己的解密密钥VK。 (2)采用“公钥分发系统”,通过公开交互的信息,可以生成只有通信双方才知道的密钥。,80,公钥密码学发展动因(续3),为了解决电信网环境下数据完整传递的问题,必须设计一种机制,使得该发送方传递的数据,除发送方之外,任何其他一方都无法修改数据。这样,才能通过电信网传递商业合同。 由于传统密钥学的加密算法中发送方和接收方共用同一个密钥,则接收方接收后可以更改数据。这样,传统密码学无法解决电信网
42、环境下数据完整传递的问题。 公钥密码体系中只有一方掌握私钥VK,则发送方采用私钥加密报文摘要后传递,则其他一方无法修改报文而不被发觉。,81,公钥密码学原理,W. Diffie和M. Hellman于1976年首先给出了公钥密码系统的定义: 一个公钥密码系统由一对加密算法E和解密算法D构成,该公钥密码系统采用一个密钥对集合KS = (PK, VK),对于任何一个KS集合中的密钥对(PK, VK)与任何一个明文P,存在以下特性: (1)采用密钥对(PK, VK)中任何一个密钥对明文P执行加密算法E,都可以采用另外一个密钥对密文进行解密。,82,公钥密码学原理(续1),(2)对于掌握了密钥对(PK
43、, VK),则加密算法E和解密算法D都是容易计算的。 (3)如果公开密钥对中的一个密钥,例如PK,则无法通过计算推导出另外一个密钥,例如VK。 (4)如果只掌握了密钥对中的一个密钥PK,并且利用该密钥将明文P加密得到密文C,则无法再利用该密钥将C进行解密得到明文P。 这4个特性较为完整地刻画了公钥密码系统的特征。,83,公钥密码学原理(续2),由于公钥密码学中的加密算法采用了不同的加密和解密密钥,所以,也称为不对称密钥加密算法。其原理如下图所示。,84,RSA公钥加密算法,RSA公钥加密算法是R. L. Rivest,A. Shamir和L. Adleman在1978年提出一种具体实现公钥密码
44、系统的加密算法。 该算法随后以这三位发明者姓氏的第一个英文字母组合成的缩写RSA命名,即RSA公钥加密算法,简称为RSA算法。 这是迄今为止使用最为广泛的公钥加密算法,特别是在数字签名方面得到了广泛的应用。,85,RSA公钥加密算法(续),RSA公钥加密算法是基于数论中的欧拉定理和费马定理设计的一种加密算法,其安全性主要是基于“大数分解”的不可解特性。 RSA公钥加密算法可以分成两个部分: RSA公钥加密算法的加密和解密过程; RSA公钥加密算法的“密钥对”选择和生成过程。,86,RSA算法加密/解密过程,为了利用一个公钥(e, n)对一个报文M进行加密,这里e和n是一对正整数,可以采用以下过
45、程: (1)将报文M表示成一个0到n 1的整数。如果M较长,可以将M分解成多个数据块,分别进行多次加密。 (2)将M进行e次乘法运算,然后对乘积取n的模,这样,就得到M的密文C。 C = E(M) = Me (mod n),87,RSA算法加密/解密过程(续),(3)如果需要对密文C进行解密,则只需要对C进行d次乘法运算,然后再对乘积取n的模,这样,就得到报文M。 M = D(C) = Cd (mod n) 这里(d, n)就是与公钥(e, n)对应的私钥,这是需要该“密钥对”所有者秘密保存的密钥。 这里的e,d和n是需要用户在生成“密钥对”过程中选择和生成的正整数。,88,RSA算法的密钥选
46、择,为了使用RSA加密算法,首先需要按照以下方法选择并生成RSA公钥加密算法的“密钥对”。 (1)选择两个很大的“随机”素数p和q,这两个素数的乘积就是RSA密钥中的正整数n,即 n = p * q 如果p和q足够大,即使公开n,则根据目前的计算能力,也无法分解出p和q。,89,RSA算法的密钥选择(续),(2)选择一个很大的随机整数d,使得该整数与(p 1) * (q 1)的最大公因子为1 (3)从p,q和d中计算出e,e是以(p 1) * (q 1)为模的d的倒数,即 e * d = 1 (mod (p 1) * (q 1) 从以上算法过程可以看出,私钥是根据一定规则选择的,而公钥是计算得
47、出的。,90,RSA算法的证明,按照欧拉和费马的定理可知,对于任何一个整数M(M相当于转换成为整数的报文),如果与n互质,则 M(n) = 1 (mod n) (1) 这里(n)表示所有小于n的,与n互质的正整数的个数。 对于任何一个素数p, (p) = p 1 (2) (n) = (p * q) = (p) * (q) = (p 1) * (q 1) (3),91,RSA算法的证明(续1),对于RSA中公钥(e, n)和私钥(d, n)中的参数,存在以下关系: e * d = 1 (mod (p 1) * (q 1), 即e * d = 1 (mod (n) 这样,取模运算的规则可知,可以找
48、到某个整数k,使得 e * d = k *(n) +1,92,RSA算法的证明(续2),以下就可以证明RSA算法。RSA算法的加密之后的解密过程可以表示为: D(E(M) = (E(M)d = (Me)d (mod n) = Me * d (mod n) = M k *(n) +1 (mod n) (5) 由于p无法整除M,这样,按照公式(1)和(2)可以得出: Mp 1 = 1 (mod p) 由于(p 1)是(n)的因子,所以, M k *(n) = 1 (mod p),93,RSA算法的证明(续2),这样,就可以得到如下公式:M k *(n) +1 = M (mod p) (6) 同理可
49、以得到如下公式: M k *(n) +1 = M (mod q) (7) 由于n = p * q,综合公式(6)和(7),按照取模运算规则可以得出: M k *(n) +1 = M (mod n) 这样,就证明了RSA算法的加密和解密过程是正确的。,94,RSA算法的实现,RSA加密和解密算法。R. L. Rivest等人提出了一个计算Me的算法,它最多执行2 * log2(e)次乘法和除法,具体如下: (i)设ek ek-1 e1 e0是e的二进制数表示形式。 (ii)设置变量C的初值为1。 (iii)对于j = k, k 1, , 0,重复执行(a)和(b): (a) C = C * C (mod n) (b) 如果ej = 1,则C = C * M (mod n) (iv)输出C,C就是M的密文。,95,RSA算法的实现(续1),