第3章 密码技术 教学提示:上一章我们已经学习了协议安全的有关知识,本章将介绍与密码算法相关的一些知识,包括其基本概念和简单的实现方法。 教学要求:了解几种常用的加密算法和技术:对称密码算法、公钥密码算法、数字签名技术、密钥管理等。掌握涉及密码系统的基本概念和原理,能够运用基本原理对实际问题进行分析。
3.1 对称密码体制 3.1.1 对称加密体制的概念 对称密码算法是指加密和解密数据使用同一个密钥,即加密和解密的密钥是对称的,这种密码系统也称为单密钥密码系统。
3.1.2 DES算法 DES算法的整个工作流程: 1.在图4.2的左边,64位的明文被修改(排列)以改变位的次序; 2.把明文分成两个32位的块; 3.在图中的密码一侧,原始密钥被分成两半; 4.密钥的每一半向左循环移位,然后重新合并、排列,并扩展到48位,分开的密钥仍然保存起来供以后的迭代使用;
5.在图中的明文一边,右侧32位块被扩展到48位,以便与48位的密钥进行异或(XOR)操作,在这一步后还要进行另外一次排列; 7.使用置换函数把第6步的结果置换成32位; 8.把第2步创建的64位值的左边一半与第7步的结果进行XOR操作; 9.把第8步的结果和第2步创建的块的右半部分共同组成一个新块,前者在右边,后者在左边; 10从第4步开始重复这个过程,迭代15次; 11.完成最后一次迭代后,对这个64位块进行一次翻转,得到一个64位的密文。
图3-2 DES算法的工作流程
3.1.3 DES算法实现 1.变换密钥,取得64位的密钥,每个第8位作为奇偶校验位。 2.舍弃64位密钥中的奇偶校验位,根据以下数组4.1(PC-1)进行密钥变换得到56位的密钥,在变换中,奇偶校验位以被舍弃。
数组3.1 变换选择 (PC-1) 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4
3.将变换后的密钥分为两个部分,开始的28位称为C[0],最后的28位称为D[0]。 4.生成16个子密钥,初始I=1。 5.同时将C[I]、D[I]左移1位或2位,根据I值决定左移的位数。 I: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 左移位数: 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 6.将C[I]D[I]作为一个整体按以下数组4.2(PC-2)变换,得到48位的K[I]。
数组3.2变换选择2 (PC-2) 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32
7.从5处循环执行,直到K[16]被计算完成。 8.处理64位的数据 (1)取得64位的数据,如果数据长度不足64位,应该将其扩展为64位(例如补零) (2)将64位数据按以下数组4.3变换(IP)
数组3.3 初始变换 (IP) 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7
9.将变换后的数据分为两部分,开始的32位称为L[0],最后的32位称为R[0]。 10.用16个子密钥加密数据,初始I=1。 (1)将32位的R[I-1]按下表4.4(E)扩展为48位的E[I-1]
数组3.4 扩展 (E) 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1
(2)异或E[I-1]和K[I],即E[I-1] XOR K[I]。 (3)将异或后的结果分为8个6位长的部分,第1位到第6位称为B[1],第7位到第12位称为B[2],依此类推,第43位到第48位称为B[8]。 (4)按S表变换所有的B[J],初始J=1。所有在S表的值都被当作4位长度处理。 a、将B[J]的第1位和第6位组合为一个2位长度的变量M,M作为在S[J]中的行号。 b、将B[J]的第2位到第5位组合,作为一个4位长度的变量N,N作为在S[J]中的列号。 c、用S[J][M][N]来取代B[J]。
数组3.5 替换盒1 (S[1]) 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 S[2] 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
S[3] 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 S[4] 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
S[5] 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3 S[6] 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
S[7] 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 S[8] 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
d、从a处循环执行,直到B[8]被替代完成。 e、将B[1]到B[8]组合,按以下数组3.6(P)变换,得到P。 (5) 异或P和L[I-1]结果放在R[I],即R[I]=P XOR L[I-1]。 (6) L[I]=R[I-1] (7) 从a处开始循环执行,直到K[16]被变换完成。 11. 组合变换后的R[16]L[16](注意:R作为开始的32位),按以下数组4.7(IP-1)变换得到最后的结果。
数组3.6 变换 P 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25
数组3.7 最后变换 (IP-1) 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25
3.2 公钥密码体制 3.2.1 公钥密码体制的概念 非对称密码算法是指加密和解密数据使用两个不同的密钥,即加密和解密的密钥是不对称的,这种密码系统也称为公钥密码系统PKC(Pubilic Key Cryptosystem)。 与对称密码算法不同的是,非对称密码算法将随机产生两个密钥:一个用于加密明文,其密钥是公开的,称为公钥;另外一个用来解密密文,其密钥是秘密的,称为私钥。图4.3所示为非对称密码算法的基本原理。
3.2.2 RSA算法 RSA算法是第一个既能用于数据加密也能用于数字签名的算法. 安全有效性: 1) 已有确定一个数是不是质数的快速算法; 2) 尚未找到确定一个合数的质因子的快速算法。
工作原理: 1) 任意选取两个不同的大质数p和q,计算乘积r=p*q; 2) 任意选取一个大整数e,e与(p-1)*(q-1)互质,整数e用做加密密钥。注意:e的选取是很容易的,例如,所有大于p和q的质数都可用。 3) 确定解密密钥d: d * e = 1 modulo(p - 1)*(q - 1) 根据e、p和q可以容易地计算出d。 4) 公开整数r和e,但是不公开d; 5) 将明文P (假设P是一个小于r的整数)加密为密文C,计算方法为:C = Pe modulo r 6) 将密文C解密为明文P,计算方法为: P = Cd modulo r
3.2.3 RSA算法实现 (见例题)
3.3 数字签名技术 3.3.1 数字签名技术的概念 数字签名包括消息签名和签名认证两个部分。对于一个数字签名系统必须满足下列条件: 3.3 数字签名技术 3.3.1 数字签名技术的概念 数字签名包括消息签名和签名认证两个部分。对于一个数字签名系统必须满足下列条件: 1)一个用户能够对一个消息进行签名。 2)其他用户能够对被签名的消息进行认证,以证实该消息签名的真伪。 3)任何人都不能伪造一个用户的签名。 4)如果一个用户否认对消息的签名,则可以通过第三种仲裁来解决争议和纠纷。
3.3.2 数字签名的实现方法 DSA是一种基于公开密钥体系的数字签名算法,它不能用作加密,只用作数字签名。DSA使用公开密钥,为接受者验证数据的完整性和数据发送者的身份。它也可用于由第三方去确定签名和所签数据的真实性。DSA算法的安全性基于解离散对数的困难性,这类签字标准具有较大的兼容性和适用性,成为网络安全体系的基本构件之一。
3.3.3 数字签名的其他问题 公钥加密算法中使用最广的是RSA。RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法秘密密钥利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题,还可利用RSA来完成对电文的数字签名以防止电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。 但目前RSA算法的专利期限即将结束,取而代之的是基于椭圆曲线的密码方案(ECC算法)。较之于RSA算法,ECC有其相对优点,这使得ECC的特性更适合当今电子商务需要快速反应的发展潮流。
3.4 密钥管理 3.4.1私钥分配 获得共享密钥的方法基本上有以下几种: (1)密钥由A选取并通过物理手段发送给B; 3.4 密钥管理 3.4.1私钥分配 获得共享密钥的方法基本上有以下几种: (1)密钥由A选取并通过物理手段发送给B; (2)密钥由第三方选取并通过物理手段发送给A和B; (3)如果A、B事先已有一密钥,则其中一方选取新密钥后,用已有的密钥加密新密钥并发送给另一方; (4)如果A和B与第三方C分别有一保密信道,则C为A、B选取密钥后,分别在两个保密信道上发送给A、B。
3.4.2 公钥分配 1.公开发布 2.公用目录表 3.公钥管理机构 4.公钥证书
3.4.3 用公钥加密分配私钥密码体制的密钥 1.简单分配 2.具有保密性和认证性的密钥分配
3.5 认证 认证(Authentication)是证实某人或某个对象是否有效合法或名副其实的过程。它与身份识别(Identification)不同,也与授权(Authorization)不同。在非保密的计算机网络中,验证远程用户(或过程实体)是合法授权用户或恶意的入侵者就属于认证问题。认证是对通信对象的验证;授权是验证用户在系统中的权限,识别则是判别通信对象是哪种身份。
3.5.1 身份认证 身份认证,也称为身份甄别。身份认证是对网络中通信双方的主体进行验证的过程。用户必须提供他是谁的证明。例如,系统中存储用户的指纹,或者用户的视网膜血管分布图,或者用户的声音波纹图等。当用户登录系统时,系统将对其辨认,比较、验证该用户的真实性。
通常有三种方法验证主体身份:一是拥有该主体知道的秘密,如口令、密钥;二是主体携带的物品,如智能卡、令牌卡;三是主体具有的唯一特征,如指纹、声音、视网膜或签名等。
3.5.2 主机之间的认证 如果要认证的对象是主机或站点。例如,银行之间,银行与商家之间的通信,需要确认的是对方主机的身份。据此判别通信是否在指定的主机(或站点)之间进行,这样的过程称为站点认证或主机认证。
3.5.3 Kerberos认证 (1)Kerberos 工作原理 (2)Kerberos的凭证 (3)Kerberos的消息 (4)Kerberos的安全性
3.6 本 章 实 训 实训:SSH安全认证
3.7 本章习题 填空题 (1) 在密码学中通常将源信息称为________,将加密后的信息称为________。这个变换处理过程称为________过程,它的逆过程称为________过程。 (2) DES算法加密过程中输入的明文长度是________位,整个加密过程需经过________轮的子变换。 (3) 常见的密码技术有________、________和________。 (4) 认证是对________的验证;授权是验证________在系统中的权限,识别则是判断通信对象是哪种身份。
选择题 (1) 以下不属于对称密码算法的是( )。 A.IDEA B.RC C.DES D.RSA (1) 以下不属于对称密码算法的是( )。 A.IDEA B.RC C.DES D.RSA (2) 以下不属于非对称密码算法特点的是( )。 A.计算量大 B.处理速度慢 C.使用两个密码 D.适合加密长数据 (3) 对于一个数字签名系统的非必要条件有( )。 A.一个用户能够对一个消息进行签名 B.其他用户能够对被签名的消息进行认证,以证实该消息签名的真伪 C.任何人都不能伪造一个用户的签名 D.数字签名依赖于诚信 (4) 不属于公钥管理的方法有( )。 A.公开发布 B.公用目录表 C.公钥管理机构 D.数据加密
简答题 (1) 简述公钥体制和私钥体制的主要区别? (2) 数据加密算法可以分为几大类型,各举一例说明。 (3) 简要说明DES加密算法的关键步骤。 (4) RSA算法的基本原理和主要步骤是什么? (5) 什么情况下需要数字签名?简述数字签名的算法。 (6) 简要说明密钥管理的主要方法。 (7) 什么是身份认证?用哪些方法可以实现? (8) Kerberos 是什么协议?简要描述Kerberos的鉴别原理。