1、第第3 3章章 加密技术加密技术33.1 1 数据加密概述数据加密概述33.2 2 对称密钥密码体制对称密钥密码体制33.3 3 非对称密钥密码体制非对称密钥密码体制33.4 4 密钥管理密钥管理33.5 5 数字信封技术数字信封技术本章学习目标本章学习目标 数据加密技术数据加密技术 对称密钥密码体制对称密钥密码体制 非对称密钥密码体制非对称密钥密码体制 密钥管理密钥管理 数字信封技术数字信封技术33.11数据加密概述数据加密概述 我们将源信息称之为明文。我们将源信息称之为明文。为了保护明文,将其通过某种方式变为了保护明文,将其通过某种方式变换成局外人难以识别的另外一种形式,即换成局外人难以识
2、别的另外一种形式,即密文。密文。这个变换处理的过程称之为加密。这个变换处理的过程称之为加密。密文可以经过相应的逆变换还原成为密文可以经过相应的逆变换还原成为明文。仅变换处理的过程称之为解密。明文。仅变换处理的过程称之为解密。整个加密和解密过程可以用图整个加密和解密过程可以用图3-1来表示。来表示。明文通过加密变换成为密文,网上交易的明文通过加密变换成为密文,网上交易的各方使用密文进行通信,密文通过解密还原为各方使用密文进行通信,密文通过解密还原为明文。明文。图3-1 加密和解密明文 密文 原始明文加密解密 加密的基本思想是伪装明文以隐藏它的真实内容,加密的基本思想是伪装明文以隐藏它的真实内容,
3、即将明文即将明文X伪装成密文伪装成密文Y,伪装的操作称为加密。,伪装的操作称为加密。其逆过程,即由密文恢复出原明文的过程称为解其逆过程,即由密文恢复出原明文的过程称为解密。通常所说的密码体制是指一个加密系统所采密。通常所说的密码体制是指一个加密系统所采用的基本工作方式,它的两个基本构成要素是密用的基本工作方式,它的两个基本构成要素是密码算法和密钥。对明文进行加密时所采用的一组码算法和密钥。对明文进行加密时所采用的一组规则称为加密算法,它是一些公式、法则或者程规则称为加密算法,它是一些公式、法则或者程序。传送消息的预定对象称为接收者,它对密文序。传送消息的预定对象称为接收者,它对密文进行解密时所
4、采用的一组规则称为解密算法。加进行解密时所采用的一组规则称为解密算法。加密和解密算法的操作通常都是在一组密钥控制下密和解密算法的操作通常都是在一组密钥控制下进行的,分别称为加密密钥和解密密钥。进行的,分别称为加密密钥和解密密钥。早在公元前早在公元前50年,古罗马的凯撒在高卢战争中就年,古罗马的凯撒在高卢战争中就采用过加密方法。我们用最简单的凯撒密码来采用过加密方法。我们用最简单的凯撒密码来说明一个加密系统的构成。凯撒密码算法就是说明一个加密系统的构成。凯撒密码算法就是把每个英文字母向前推移把每个英文字母向前推移K位。例如,位。例如,K=3便便有明文和密文的对应关系如下:有明文和密文的对应关系如
5、下:明文:明文:a b c d e f g h I g 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 0 P Q R S T U V W X Y Z A B C为了保护信息保密性,抗击密码分析,保密系统应为了保护信息保密性,抗击密码分析,保密系统应当满足下述要求:当满足下述要求:(1)系统即使达不到理论上是不可攻破的,也应当)系统即使达不到理论上是不可攻破的,也应当为实际上不可攻破的。就是说,从截获的密文或某为实际上不可攻破的。就是说,从截获的密文或某些已知明文密文对,要决定密钥或者任意明文在计些已知明文密文对,要决定密钥
6、或者任意明文在计算上是不可行的。算上是不可行的。(2)系统的保密性不依赖于对加密体制或者算法的)系统的保密性不依赖于对加密体制或者算法的保密,而依赖于密钥,这就是著名的保密,而依赖于密钥,这就是著名的Kerckhoff原则。原则。(3)加密和解密算法适用于所有密钥空间中的元素。)加密和解密算法适用于所有密钥空间中的元素。(4)整个系统便于实现和使用方便。)整个系统便于实现和使用方便。1.1.单钥体制单钥体制 加密解密密文明文明文图图3.2 秘密密钥加密方法加密和解密使用同一个密钥秘密密钥加密方法加密和解密使用同一个密钥2.2.双钥体制双钥体制加密加密解密解密明文明文密文密文明文明文公开钥匙公开
7、钥匙秘密钥匙秘密钥匙图图3.3 公开密钥加密方法加密和解密使用不同的密钥公开密钥加密方法加密和解密使用不同的密钥3.23.2对称密钥密码体制对称密钥密码体制3.2.13.2.1流密码流密码流密码的原理是将明文划分成字符(如单个字流密码的原理是将明文划分成字符(如单个字母)或其编码的基本单元(如母)或其编码的基本单元(如0 0、1 1数字),字数字),字符分别与密钥流作用进行加密,解密时以同步符分别与密钥流作用进行加密,解密时以同步产生的同样的密钥流来实现。流密码强度完全产生的同样的密钥流来实现。流密码强度完全依赖于密钥流产生器所生成序列的随机性和不依赖于密钥流产生器所生成序列的随机性和不可预测
8、性。其核心问题是密钥流生成器的设计。可预测性。其核心问题是密钥流生成器的设计。保持收发两端密钥流的精确同步是实现可靠解保持收发两端密钥流的精确同步是实现可靠解密的关键技术。密的关键技术。1.1.同步流密码(同步流密码(SSCSSC,Synchronous Stream Synchronous Stream CipherCipher)同步流密码的密钥流独立于明文,对于明文而言,这类加同步流密码的密钥流独立于明文,对于明文而言,这类加密变换是无记忆的,但它是时变的。因为同一明文字符在密变换是无记忆的,但它是时变的。因为同一明文字符在不同时刻由于密钥不同而被加密成不同的密文字符。此类不同时刻由于密钥
9、不同而被加密成不同的密文字符。此类密码只要收发两端的密钥流生成器的初始密钥和初始状态密码只要收发两端的密钥流生成器的初始密钥和初始状态相同,输出的密钥就一样。因此,保持两端精确同步才能相同,输出的密钥就一样。因此,保持两端精确同步才能正常工作,一旦失步就不能正确解密,必须等到重新同步正常工作,一旦失步就不能正确解密,必须等到重新同步才能恢复正常工作。这是其主要缺点。但由于其对失步的才能恢复正常工作。这是其主要缺点。但由于其对失步的敏感性,使得系统在有窜扰者进行注入、删除、重放等主敏感性,使得系统在有窜扰者进行注入、删除、重放等主动攻击时异常敏感,有利于检测。此类体制的优点是传输动攻击时异常敏感
10、,有利于检测。此类体制的优点是传输中出现的一些偶然错误只影响相应位的恢复消息,没有差中出现的一些偶然错误只影响相应位的恢复消息,没有差错传播。错传播。2.2.自同步流密码(自同步流密码(SSSCSSSC,Self Synchronous Self Synchronous Stream CipherStream Cipher)密文密文cici不仅与当前输入不仅与当前输入mimi有关,而且与以前的输入有关,而且与以前的输入m1m1,m2m2,mi-1mi-1有关。一般在有限的有关。一般在有限的n n级存储下将与级存储下将与mi-1mi-1,mi-nmi-n有关。一种有有关。一种有n n级移位寄存器
11、存储的密文反馈型流密码,级移位寄存器存储的密文反馈型流密码,每个密文数字将影响以后每个密文数字将影响以后n n个输入明文数字的加密结果。此个输入明文数字的加密结果。此时的密钥流。由于时的密钥流。由于cici与与mimi的关系,的关系,kiki最终是受输入明文数最终是受输入明文数字影响的。自同步流密码传输过程中有一位(如字影响的。自同步流密码传输过程中有一位(如cici位)出位)出错,在解密过程中,它将在移位寄存器中存活错,在解密过程中,它将在移位寄存器中存活n n个节拍,因个节拍,因而会影响其后而会影响其后n n位密钥的正确性,相应恢复的明文消息连续位密钥的正确性,相应恢复的明文消息连续n n
12、位会受到影响。其差错传播是有限的,但接收端只要连续位会受到影响。其差错传播是有限的,但接收端只要连续正确收到正确收到n n位密文,则在相同密钥位密文,则在相同密钥KiKi作用下就会产生相同的作用下就会产生相同的密钥,因而它具有自同步能力。这种自恢复同步性使得它密钥,因而它具有自同步能力。这种自恢复同步性使得它对窜扰者的一些主动攻击不像同步流密码体制那样敏感,对窜扰者的一些主动攻击不像同步流密码体制那样敏感,它将明文每个字符扩散在密文多个字符中,从而强化了其它将明文每个字符扩散在密文多个字符中,从而强化了其抗统计分析的能力。抗统计分析的能力。33.22.22分组密码分组密码分组密码即对固定长度的
13、一组明文进行加密的算法,分组密码即对固定长度的一组明文进行加密的算法,它将明文按一定的位长分组,明文组和密钥组的全部它将明文按一定的位长分组,明文组和密钥组的全部经过加密运算得到密文组。解密时密文组和密钥组经经过加密运算得到密文组。解密时密文组和密钥组经过解密运算(加密运算的逆运算),还原成明文组。过解密运算(加密运算的逆运算),还原成明文组。它与流密码的不同之处在于输出的每一位数字不只是它与流密码的不同之处在于输出的每一位数字不只是与相应时刻输入的明文数字有关,而是与一组长为与相应时刻输入的明文数字有关,而是与一组长为m m的明文数字有关。的明文数字有关。分组密码中最著名的两个分组密码算法是
14、分组密码中最著名的两个分组密码算法是DESDES(Data Data Encryption StandardEncryption Standard)数据加密标准和)数据加密标准和IDEAIDEA(International Data Encryption AlgorithmInternational Data Encryption Algorithm)国)国际数据加密算法。际数据加密算法。美国美国NSBNSB规定了分组密码运行的规定了分组密码运行的4 4种模式:种模式:(1 1)电子码本()电子码本(ECBECB)模式)模式(2 2)密码反馈()密码反馈(CFBCFB)模式)模式(3 3)密码
15、反馈链接()密码反馈链接(CBCCBC)模式)模式(4 4)输出反馈()输出反馈(OFBOFB)模式)模式3.2.3 DES算法1 1DESDES的产生和发展的产生和发展DESDES密码是密码是19771977年由美国国家标准局公布的第一个分组密年由美国国家标准局公布的第一个分组密码。码。DESDES自自19771977年由美国国防部采用,它的标准在年由美国国防部采用,它的标准在ANSI ANSI X.3.92X.3.92和和X3.106X3.106中都有说明。因为担心这种方法被敌中都有说明。因为担心这种方法被敌对国使用,美国政府不允许出口此种算法的加密软件。对国使用,美国政府不允许出口此种算
16、法的加密软件。每隔每隔5 5年,由美国国家保密局(年,由美国国家保密局(NSANSA)对)对DESDES做出评估,并做出评估,并重新批准它是否继续作为联邦加密标准。重新批准它是否继续作为联邦加密标准。2 2DESDES算法算法DESDES加密算法可分为加密处理、加密变换及子密加密算法可分为加密处理、加密变换及子密钥的生成几个部分。算法输入的是钥的生成几个部分。算法输入的是6464比特的明比特的明文,在文,在6464比特的密钥控制下,通过初始换位比特的密钥控制下,通过初始换位IPIP变成变成T0=IP(T)T0=IP(T),再对,再对T0T0进行分块,左边的进行分块,左边的3232位位记为记为L
17、0L0,右边的,右边的3232位记为位记为R0R0,经过,经过1616次的加密次的加密变换,最后通过逆初始变换(也称最后变换)变换,最后通过逆初始变换(也称最后变换)得到得到6464比特的密文。密文的每一比特都是由明比特的密文。密文的每一比特都是由明文的每一比特和密钥的每一比特联合确定的。文的每一比特和密钥的每一比特联合确定的。ii 1LRii 1i 1iRLf(R,K)i1 2 3 .16,加密过程可用数学公式表示如下:(3-1)其中的圈函数其中的圈函数f f对对3232比特的串做如下操作:首先将这比特的串做如下操作:首先将这3232比特的串扩展成比特的串扩展成4848比特的串。其次将这比特
18、的串。其次将这4848比特的比特的串和串和4848比特的密钥进行组合并将组合结果作为比特的密钥进行组合并将组合结果作为8 8个不个不同同S S盒的输入,每个盒的输入,每个S S盒的输入是盒的输入是6 6比特,输出是比特,输出是4 4比比特。然后将特。然后将S S盒的盒的3232比特做置换,作为圈函数比特做置换,作为圈函数f f的输的输出。出。(3-2)DESDES的解密与的解密与DESDES的加密一样,只不过是子密钥的加密一样,只不过是子密钥的顺序相反。虽然的顺序相反。虽然DESDES的描述是相当长的,但是的描述是相当长的,但是DESDES的加密解密需要完成的只是简单的算术运算,的加密解密需要
19、完成的只是简单的算术运算,即比特串的异或处理的组合,因此速度快,密即比特串的异或处理的组合,因此速度快,密钥生成容易,能以硬件或软件的方式非常有效钥生成容易,能以硬件或软件的方式非常有效地实现。地实现。DESDES的硬件实现的加密速率大约为的硬件实现的加密速率大约为2 0 M b/s2 0 M b/s;D E SD E S 的 软 件 实 现 的 速 率 大 约 为的 软 件 实 现 的 速 率 大 约 为400Kb/s400Kb/s500Kb/s500Kb/s。DESDES专用芯片的加密和解密专用芯片的加密和解密的速率大约为的速率大约为1G b/s1G b/s。从技术上说,对从技术上说,对D
20、ESDES的批评主要集中在以下的批评主要集中在以下3 3个方面:个方面:(1 1)作为分组密码,)作为分组密码,DESDES的加密单位仅有的加密单位仅有6464位二进制,这对位二进制,这对于数据传输来说太小。因为每个区组仅含于数据传输来说太小。因为每个区组仅含8 8个字符,而且其中个字符,而且其中某些位还要用于奇偶校验或其他通讯开销。某些位还要用于奇偶校验或其他通讯开销。(2 2)密钥仅有)密钥仅有5656位二进制未免太短,各次迭代中使用的密钥位二进制未免太短,各次迭代中使用的密钥KiKi是递推产生的,这种相关必然降低了密码体制的安全性。是递推产生的,这种相关必然降低了密码体制的安全性。目前,
21、有人认为:在现有的技术条件下用穷举法寻找正确密目前,有人认为:在现有的技术条件下用穷举法寻找正确密钥已趋于可行,所以若要安全保护钥已趋于可行,所以若要安全保护1010年以上的数据最好不用年以上的数据最好不用DESDES算法。算法。(3 3)实现替代函数)实现替代函数SiSi所用的所用的S S盒的设计原理尚未公开,其中盒的设计原理尚未公开,其中可能留有隐患。更有人担心可能留有隐患。更有人担心DESDES算法中有算法中有“陷阱陷阱”,知道秘密,知道秘密的人可以很容易地进行密文解密。的人可以很容易地进行密文解密。在今天,出于安全性考虑,在今天,出于安全性考虑,DESDES密码算法已失去了其实密码算法
22、已失去了其实用价值,采用用价值,采用128128位密钥的位密钥的IDEAIDEA或或RC4RC4等密码算法,以及等密码算法,以及168168位密钥的三重位密钥的三重DESDES密码算法,安全性要比密码算法,安全性要比DESDES密码算密码算法高得多。近年来,美国倡导新的数据加密标准方案法高得多。近年来,美国倡导新的数据加密标准方案AESAES计划,吸引了一大批候选方案,取代计划,吸引了一大批候选方案,取代DESDES密码算法已密码算法已成必然。成必然。4 4DESDES的变形算法的变形算法DESDES算法目前已广泛用于电子商务系统中。随着研究的算法目前已广泛用于电子商务系统中。随着研究的发展,
23、针对以上发展,针对以上DESDES的缺陷,的缺陷,DESDES算法在基本不改变加密算法在基本不改变加密强度的条件下,发展了许多变形强度的条件下,发展了许多变形DESDES。人们提出了解几。人们提出了解几种增强种增强DESDES安全性的方法,主要有以下几种:安全性的方法,主要有以下几种:(1 1)多重)多重DESDES。(2 2)三重)三重DESDES。(3 3)S S盒可选择的盒可选择的DESDES(也称带用交换(也称带用交换S S盒的盒的DESDES算法)。算法)。(4 4)具有独立子密钥的)具有独立子密钥的DESDES。(5 5)G-DESG-DES。3.2.4 其他分组密码算法1 1ID
24、EAIDEA2 2FEAL-8FEAL-8密码密码3 3SAFER K-64SAFER K-64算法算法4 4RC5RC5算法算法5 5SkipjackSkipjack算法算法3.2.5 AES算法NISTNIST对对AESAES候选算法有候选算法有3 3条基本要求:是对称密码条基本要求:是对称密码体制,亦即秘密密钥算法;算法应为分组密码算体制,亦即秘密密钥算法;算法应为分组密码算法;算法明密文分组长度为法;算法明密文分组长度为128128比特,应支持比特,应支持128128比特、比特、192192比特、比特、256256比特的密钥长度。比特的密钥长度。AESAES比比DESDES支持更长的密
25、钥。除非一些对支持更长的密钥。除非一些对AESAES的攻击速的攻击速度比密钥耗尽(度比密钥耗尽(Key ExhaustionKey Exhaustion)还要快,否则)还要快,否则AESAES可保持超过可保持超过2020年之久的安全。年之久的安全。3.3 3.3 非对称密钥密码体制非对称密钥密码体制非对称密钥密码体制(公开密钥密码体制)最大的特非对称密钥密码体制(公开密钥密码体制)最大的特点是采用两个密钥,将加密和解密分开,一个公开作点是采用两个密钥,将加密和解密分开,一个公开作为加密密钥,一个为用户专用作为解密密钥,通信双为加密密钥,一个为用户专用作为解密密钥,通信双方无须事先交换密钥就可以
26、进行保密通信。而要从公方无须事先交换密钥就可以进行保密通信。而要从公钥和密文分析出明文和密钥在计算上是不可行的。若钥和密文分析出明文和密钥在计算上是不可行的。若以公钥作为加密密钥,以用户专用私钥作为解密密钥以公钥作为加密密钥,以用户专用私钥作为解密密钥,则可实现多个用户加密的消息只能由一个用户解读,则可实现多个用户加密的消息只能由一个用户解读,可用于保密通信;反之,以用户私钥作为加密密钥,可用于保密通信;反之,以用户私钥作为加密密钥而以公钥作为解密密钥,则可以实现由一个用户加密而以公钥作为解密密钥,则可以实现由一个用户加密的消息而使多个用户解读,可用于数字签字。的消息而使多个用户解读,可用于数
27、字签字。3.3.1 RSA密码体制1 1RSARSA算法算法RSARSA公钥密码算法是基于数论中的同余理论。如果用公钥密码算法是基于数论中的同余理论。如果用m m代表明文,代表明文,c c代表密文,代表密文,E(m)E(m)代表加密运算,代表加密运算,D(c)D(c)代代表解密运算,用表解密运算,用x=y(modulo z)x=y(modulo z)表示表示x x和和y y模模z z同余,则同余,则加密和解密算法简单表示如下:加密和解密算法简单表示如下:c=E(m)=me(modulo n)c=E(m)=me(modulo n)m=D(c)=cd(modulo n)m=D(c)=cd(modu
28、lo n)2 2RSARSA的缺点的缺点(1 1)产生密钥很麻烦,受到素数产生技术的限制,因而)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。难以做到一次一密。(2 2)分组长度太大,为保证安全性,)分组长度太大,为保证安全性,n n至少也要至少也要600600比特比特以上,使运算代价很高,尤其是速度较慢,较对称密码算以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级,且随着大数分解技术的发展,这个长度法慢几个数量级,且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,还在增加,不利于数据格式的标准化。目前,SETSET(Secure Ele
29、ctronic TransactionSecure Electronic Transaction)协议中要求)协议中要求CACA采用采用20482048比特长的密钥,其他实体使用比特长的密钥,其他实体使用10241024比特的密钥。比特的密钥。(3 3)由于进行的都是大数计算,使得)由于进行的都是大数计算,使得RSARSA最快的情况也比最快的情况也比DESDES慢上慢上100100倍,无论是软件还是硬件实现。速度一直是倍,无论是软件还是硬件实现。速度一直是RSARSA的缺陷,一般来说它只用于少量数据加密。的缺陷,一般来说它只用于少量数据加密。P2DR模型示意图 3 3RSARSA的安全性的安全
30、性RSARSA算法之所以具有安全性,是基于数论中的一个算法之所以具有安全性,是基于数论中的一个特性事实,即将两个大的质数合成一个大数很容特性事实,即将两个大的质数合成一个大数很容易,而相反的过程则非常困难。在当今技术条件易,而相反的过程则非常困难。在当今技术条件下,当下,当n n足够大时,为了找到足够大时,为了找到d d,欲从,欲从n n中通过质因中通过质因子分解试图找到与子分解试图找到与d d对应的对应的p p、q q是极其困难甚至是是极其困难甚至是不可能的。由此可见,不可能的。由此可见,RSARSA的安全性是依赖于作为的安全性是依赖于作为公钥的大数公钥的大数n n的位数长度的。为保证足够的
31、安全性,的位数长度的。为保证足够的安全性,一般认为现在的个人应用需要用一般认为现在的个人应用需要用384384比特或比特或512512比比特的特的n n,公司需要用,公司需要用10241024比特的比特的n n,极其重要的场,极其重要的场合应该用合应该用20482048比特的比特的n n。4 4RSARSA的实用性的实用性基于基于RSARSA算法的公钥加密系统具有数据加密、数字签名算法的公钥加密系统具有数据加密、数字签名(Digital SignatureDigital Signature)、信息源识别及密钥交换等功能,)、信息源识别及密钥交换等功能,目前,目前,RSARSA加密系统主要应用于
32、智能加密系统主要应用于智能ICIC卡和网络安全产品。卡和网络安全产品。选用选用RSARSA算法作为公共钥加密系统的主要算法的原因是算法算法作为公共钥加密系统的主要算法的原因是算法安全性好。在模长为安全性好。在模长为10241024比特时,可以认为比特时,可以认为RSARSA密码系统的密码系统的可选密钥个数足够多,可以得到随机、安全的密钥对。公可选密钥个数足够多,可以得到随机、安全的密钥对。公共钥加密系统多用于分布式计算环境,密钥分配和管理易共钥加密系统多用于分布式计算环境,密钥分配和管理易于实现,局部攻击难以对整个系统的安全造成威胁。目前于实现,局部攻击难以对整个系统的安全造成威胁。目前还没有
33、攻破实际应用系统的例子。还没有攻破实际应用系统的例子。5 5RSARSA算法和算法和DESDES算法的比较算法的比较(1 1)在加密、解密的处理效率方面,)在加密、解密的处理效率方面,DESDES算法优于算法优于RSARSA算法。算法。因为因为DESDES密钥的长度只有密钥的长度只有5656比特,可以利用软件和硬件实现高比特,可以利用软件和硬件实现高速处理;速处理;RSARSA算法需要进行诸如算法需要进行诸如200200比特整数的乘幂和求模等比特整数的乘幂和求模等多倍字长的处理,处理速度明显慢于多倍字长的处理,处理速度明显慢于DESDES算法。算法。(2 2)在密钥的管理方面,)在密钥的管理方
34、面,RSARSA算法比算法比DESDES算法更加优越。因为算法更加优越。因为RSARSA算法可采用公开形式分配加密密钥,对加密密钥的更新也算法可采用公开形式分配加密密钥,对加密密钥的更新也很容易,并且对不同的通信对象,只需对自己的解密密钥保很容易,并且对不同的通信对象,只需对自己的解密密钥保密即可;密即可;DESDES算法要求通信前对密钥进行秘密分配,密钥的更算法要求通信前对密钥进行秘密分配,密钥的更换困难,对不同的通信对象,换困难,对不同的通信对象,DESDES需要产生和保管不同的密钥。需要产生和保管不同的密钥。(3 3)在安全性方面,)在安全性方面,DESDES算法和算法和RSARSA算法
35、的安全性都较好,还算法的安全性都较好,还没有在短时间内破译它们的有效方法。没有在短时间内破译它们的有效方法。(4 4)在签名和认证方面,)在签名和认证方面,RSARSA算法能够容易地进行数字签名算法能够容易地进行数字签名和身份认证。和身份认证。6 6基于基于DESDES和和RSARSA的新的加密方案的新的加密方案基本原理是:数据通信之前,用基本原理是:数据通信之前,用DESDES算法对消息明文加密,算法对消息明文加密,同时用同时用RSARSA算法对算法对DESDES密钥进行加密和实现数字签名。密钥进行加密和实现数字签名。设发送方为设发送方为A A(加密密钥为(加密密钥为KeaKea,解密密钥为
36、,解密密钥为KdaKda),接收),接收方为方为B B(加密密钥为(加密密钥为KebKeb,解密密钥为,解密密钥为KdbKdb),上述加密方),上述加密方案的具体实现步骤如下:案的具体实现步骤如下:(1 1)发送方生成用于)发送方生成用于DESDES加密的密钥加密的密钥K K,为了提高数据的,为了提高数据的安全性,每一个密钥安全性,每一个密钥K K只用一次。只用一次。(2 2)发送方从密钥服务器中获取接收方的)发送方从密钥服务器中获取接收方的RSARSA的公开加密的公开加密密钥密钥KebKeb,并用,并用KebKeb加密加密DESDES的密钥的密钥K K形成密文形成密文CkCk。(3 3)发送
37、方生成需要签名的信息,并用自己的)发送方生成需要签名的信息,并用自己的RSARSA的解密的解密密钥密钥KdaKda和和KebKeb共同形成数字签名。共同形成数字签名。(4 4)发送方用)发送方用K K加密明文和签名的信息,然后连同加密明文和签名的信息,然后连同CkCk一起一起形成密文形成密文C C发往接收方。发往接收方。(5 5)接收方接收到)接收方接收到C C后,先用自己的解密密钥后,先用自己的解密密钥KdbKdb解密出解密出C C中的中的DESDES密钥密钥K K,再利用,再利用K K解密出明文和签名信息。解密出明文和签名信息。(6 6)接收方用发送方的公开密钥)接收方用发送方的公开密钥K
38、eaKea和自己的解密密钥和自己的解密密钥KdbKdb对签名信息进行身份认证,然后对签名信息做适当处对签名信息进行身份认证,然后对签名信息做适当处理后(例如填写自己的标识号等),再形成自己的数字签理后(例如填写自己的标识号等),再形成自己的数字签名信息发往发送方。名信息发往发送方。(7 7)发送、接收双方均删除)发送、接收双方均删除DESDES密钥密钥K K。3.3.2 其他非对称密钥密码体制其他非对称密钥密码体制1 1ElgamalElgamal算法算法2 2背包公钥体制背包公钥体制3 3椭圆曲线密码技术(椭圆曲线密码技术(ECCECC)3.4 密钥管理3.4.1 密钥的生存周期密钥的生存周
39、期 所谓一个密钥的生存周期是指授权使用该密钥所谓一个密钥的生存周期是指授权使用该密钥的周期。密钥从产生到终结的整个生存期中,的周期。密钥从产生到终结的整个生存期中,都需要加强保护。所有密钥的完整性也需要保都需要加强保护。所有密钥的完整性也需要保护,因为一个入侵者可能修改或替代密钥,从护,因为一个入侵者可能修改或替代密钥,从而危及机密性服务。另外,除了公钥密码系统而危及机密性服务。另外,除了公钥密码系统中的公钥外,所有的密钥都需要保密。在实际中的公钥外,所有的密钥都需要保密。在实际中,存储密钥的最安全的方法是将其放在物理中,存储密钥的最安全的方法是将其放在物理上安全的地方。上安全的地方。代理服务
40、防火墙应用层数据控制及传输过程示意图 通常情况下,一个密钥的生存周期主要经历以下几个通常情况下,一个密钥的生存周期主要经历以下几个阶段:阶段:(1 1)密钥的产生也可能需要登记。)密钥的产生也可能需要登记。(2 2)密钥分发。)密钥分发。(3 3)启用密钥)启用密钥/停用密钥。停用密钥。(4 4)替换密钥或更新密钥。)替换密钥或更新密钥。(5 5)撤消密钥。)撤消密钥。(6 6)销毁密钥。)销毁密钥。3.4.2 保密密钥的分发保密密钥的分发密钥分发技术是指将密钥发送到数据交换的两方而其他人密钥分发技术是指将密钥发送到数据交换的两方而其他人无法看到的方法。密钥分发技术的实现方法有很多种,对无法看
41、到的方法。密钥分发技术的实现方法有很多种,对交换双方交换双方A A和和B B来讲:来讲:可以由可以由A A选择密钥并实际传送到选择密钥并实际传送到B B;由第三方选择密钥,并实际传送到由第三方选择密钥,并实际传送到A A和和B B;如果如果A A和和B B已经在使用密钥了,则一方可以用旧密钥加密已经在使用密钥了,则一方可以用旧密钥加密新密钥,然后再传送给另一方;新密钥,然后再传送给另一方;如果如果A A和和B B都与第三方都与第三方C C有加密连接,则有加密连接,则C C就可以通过对就可以通过对A A和和B B的加密连接将密钥传送给的加密连接将密钥传送给A A和和B B。有屏蔽子网型防火墙3.
42、4.3 3.4.3 公钥的分发公钥的分发很显然,公钥是公开的,分发公钥不需要保密。然而,公钥很显然,公钥是公开的,分发公钥不需要保密。然而,公钥的完整性却是必须的,绝不允许攻击者用别的值冒充成员的完整性却是必须的,绝不允许攻击者用别的值冒充成员A A的公钥,使得成员的公钥,使得成员B B相信该值是成员相信该值是成员A A的公钥。否则,下面的的公钥。否则,下面的攻击就会奏效:一个攻击者伪造一个声称来自攻击就会奏效:一个攻击者伪造一个声称来自A A的消息,并的消息,并使用他自己的私钥产生一个数字签名,然后攻击者用他自己使用他自己的私钥产生一个数字签名,然后攻击者用他自己的公钥替换的公钥替换A A的
43、公钥,使得的公钥,使得B B相信这是相信这是A A的公钥。这样,攻击的公钥。这样,攻击者就可以成功地冒充者就可以成功地冒充A A了。了。由此可见,公钥的分发不像在电话簿上公布电话号码那样简由此可见,公钥的分发不像在电话簿上公布电话号码那样简单,它需要以某种特定的方式来分发。目前人们采用数字证单,它需要以某种特定的方式来分发。目前人们采用数字证书来分发公钥。数字证书要求使用可信任的第三方,即证书书来分发公钥。数字证书要求使用可信任的第三方,即证书权威机构。权威机构。多宿主机型防火墙 1 1数字证书数字证书数字证书是一条数字签名的消息,它通常用于证明某数字证书是一条数字签名的消息,它通常用于证明某
44、个实体的公钥的有效性。数字证书是一个数据结构,个实体的公钥的有效性。数字证书是一个数据结构,具有一种公共的格式,它将某一成员的识别符和一个具有一种公共的格式,它将某一成员的识别符和一个公钥值绑定在一起。证书数据结构由某一证书权威机公钥值绑定在一起。证书数据结构由某一证书权威机构的成员进行数字签名。构的成员进行数字签名。假定一个用户提前知道权威认证机构的真实公钥,那假定一个用户提前知道权威认证机构的真实公钥,那么用户就能检查证书的签名的合法性。如果检查正确,么用户就能检查证书的签名的合法性。如果检查正确,用户就相信那个证书携带了要鉴别的成员的一个合法用户就相信那个证书携带了要鉴别的成员的一个合法
45、的公钥。的公钥。堡垒主机型防火墙 版本号版本号序列序列号号签名算法签名算法颁发者颁发者有效期有效期主体主体主体公主体公钥信息钥信息颁发者唯颁发者唯一标识符一标识符扩展扩展签名签名图3.4 X.509版本3的证书结构版本号:表示证书的版本,如版本版本号:表示证书的版本,如版本1 1、版本、版本2 2、版本、版本3 3。序列号:由证书颁发者分配的本证书的唯一标识符。序列号:由证书颁发者分配的本证书的唯一标识符。签名算法:签名算法是由对象标识符加上相关参数组签名算法:签名算法是由对象标识符加上相关参数组成的标识符,用于说明本证书所用的数字签名算法。成的标识符,用于说明本证书所用的数字签名算法。例如,
46、例如,SHA-1SHA-1和和RSARSA的对象标识符就用来说明该数字签的对象标识符就用来说明该数字签名是利用名是利用RSARSA对对SHA-1SHA-1杂凑加密。杂凑加密。颁发者:证书颁发者的可识别名,这是必须说明的。颁发者:证书颁发者的可识别名,这是必须说明的。有效期:证书有效的时间段,本字段由两项组成:有效期:证书有效的时间段,本字段由两项组成:在此日期前无效和在此日期后无效,即证书有效的在此日期前无效和在此日期后无效,即证书有效的第一天和最后一天。日期分别由第一天和最后一天。日期分别由UTCUTC时间或一般的时间或一般的时间表示,时间表示,RFC2459RFC2459中有详细的时间表示
47、规则。中有详细的时间表示规则。主体:证书拥有者的可识别名,此字段必须非空。主体:证书拥有者的可识别名,此字段必须非空。主体公钥信息:主体的公钥以及算法标识符,这是主体公钥信息:主体的公钥以及算法标识符,这是必须说明的。必须说明的。颁发者唯一标识符:证书颁发者的唯一标识符仅在颁发者唯一标识符:证书颁发者的唯一标识符仅在版本版本2 2和版本和版本3 3中要求,属于可选项。该字段在实际中要求,属于可选项。该字段在实际应用中很少使用,应用中很少使用,RFC2459RFC2459也不推荐使用。也不推荐使用。扩展:可选的标准和专用功能字段。扩展:可选的标准和专用功能字段。签名:认证机构的数字签名等。签名:
48、认证机构的数字签名等。2 2证书权威机构证书权威机构Bob1请求请求Alice的证书的证书2Alice的证书的证书CA签名签名CA3验证签名验证签名签 名 文签 名 文件内容件内容Hash函数函数CA指纹指纹CA指纹指纹CA的公钥的公钥解密解密CA指纹指纹4Alice的证书的证书Alice的公钥的公钥图3.5 通过证书权威机构获得一个数字证书 3.5 数字信封技术数字信封技术首先使用秘密密钥加密技术对要发送的数字信封技术首先使用秘密密钥加密技术对要发送的数据信息进行加密,然后利用公开密钥加密算法对秘数据信息进行加密,然后利用公开密钥加密算法对秘密密钥加密技术中使用的秘密密钥进行加密。其具体密密
49、钥加密技术中使用的秘密密钥进行加密。其具体的实现方法和步骤的实现方法和步骤如下:如下:(1 1)在需要发送信息时,发送方首先生成一个秘密)在需要发送信息时,发送方首先生成一个秘密密钥。密钥。(2 2)利用生成的秘密密钥和秘密密钥加密算法对要)利用生成的秘密密钥和秘密密钥加密算法对要发送的信息加密。发送的信息加密。(3 3)发送方利用接收方提供的公开密钥对生)发送方利用接收方提供的公开密钥对生成的秘密密钥进行加密。成的秘密密钥进行加密。(4 4)发送方把加密后的密文通过网络传送给)发送方把加密后的密文通过网络传送给接收方。接收方。(5 5)接收方使用公开密钥加密算法,利用自)接收方使用公开密钥加密算法,利用自己的私钥将加密的秘密密钥还原成明文。己的私钥将加密的秘密密钥还原成明文。(6 6)接收方利用还原出的秘密密钥,使用秘)接收方利用还原出的秘密密钥,使用秘密密钥加密算法解密被发送方加密的信息,密密钥加密算法解密被发送方加密的信息,还原出的明文即是发送方要发送的数据信息。还原出的明文即是发送方要发送的数据信息。