
网络信息密码技术.ppt
53页网络信息安全 第第3章章 网络信息密码技术网络信息密码技术•本章首先介绍了密码技术的基本概念和类本章首先介绍了密码技术的基本概念和类型,重点阐述了对称密码体系的型,重点阐述了对称密码体系的DES, AES,序列的加密算法、工作模式以及解密算法序列的加密算法、工作模式以及解密算法然后对非对称密码体系的然后对非对称密码体系的RSA算法做了重算法做了重点论述,并介绍了点论述,并介绍了Diffie-Hellman, Elgamal和和Merkle-Hellman三种公钥体制,三种公钥体制,最后提出了密码的生成、发送、更新、验最后提出了密码的生成、发送、更新、验证、存储密钥的管理机制证、存储密钥的管理机制 第第3章章 网络信息密码技术网络信息密码技术3.1 密码技术简介密码技术简介 •密码学是一门古老而深奥的学科,其历史可以追密码学是一门古老而深奥的学科,其历史可以追溯到几千年前,长期被军事、外交等部门来传递溯到几千年前,长期被军事、外交等部门来传递重要信息计算机密码学是研究计算机信息加密、重要信息计算机密码学是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科。
随着计算机网络和计科,也是一门新兴的学科随着计算机网络和计算机通信技术的发展,计算机密码学得到了前所算机通信技术的发展,计算机密码学得到了前所未有的重视并迅速地发展和普及起来在国外,未有的重视并迅速地发展和普及起来在国外,它已成为计算机安全主要的研究方向,也是计算它已成为计算机安全主要的研究方向,也是计算机安全课程教学中的主要内容机安全课程教学中的主要内容3.1.1 密码技术基本概念密码技术基本概念•密密码码学学(Cryptology)一一词词为为希希腊腊字字根根“隐隐藏藏”(kryptos)及及“信信息息”(logos)的的组组合合,,是是研研究究编编制制密密码码和和破破译译密密码码的的科科学学其其中中研研究究密密码码变变化化的的客客观观规规律律,,应应用用于于编编制制密密码码以以保保 守守 通通 信信 秘秘 密密 的的 ,, 称称 为为 密密 码码 编编 码码 学学(Cryptography);;应应用用于于破破译译密密码码以以获获取取通通 信信 情情 报报 的的 ,, 称称 为为 密密 码码 分分 析析 学学(Cryptanalysis),,总总称称密密码码学学两两者者相相互互对立,而又相互促进。
对立,而又相互促进密码技术通过信息的变换或编码,将机密的敏密码技术通过信息的变换或编码,将机密的敏感消息变换成难以读懂的乱码型文字,以此达感消息变换成难以读懂的乱码型文字,以此达到两个目的:其一,使未授权者不可能由其截到两个目的:其一,使未授权者不可能由其截获的乱码中得到任何有意义的信息;其二,使获的乱码中得到任何有意义的信息;其二,使未授权者不可能伪造任何乱码型的信息消息未授权者不可能伪造任何乱码型的信息消息的发送者称为信源;消息的授权目的地称为信的发送者称为信源;消息的授权目的地称为信宿采用密码方法隐蔽和保护机要消息,使未宿采用密码方法隐蔽和保护机要消息,使未授权者不能提取信息被隐蔽的原始消息称为授权者不能提取信息被隐蔽的原始消息称为明文明文M,通过密码可将明文变换成另一种隐蔽,通过密码可将明文变换成另一种隐蔽形式,称为密文形式,称为密文C 由明文到密文的变换过程由明文到密文的变换过程C=Ek(M)称为加密;称为加密;由合法接收者从密文恢复出明文的过程由合法接收者从密文恢复出明文的过程M=Dk(C)= Dk(Ek(M))称为解密;非法接收者试称为解密;非法接收者试图从密文分析出明文的过程称为破译。
对明文图从密文分析出明文的过程称为破译对明文进行加密时采用的一组规则称为加密算法;对进行加密时采用的一组规则称为加密算法;对密文解密时采用的一组规则称为解密算法加密文解密时采用的一组规则称为解密算法加密算法和解密算法是一组仅有合法用户知道的密算法和解密算法是一组仅有合法用户知道的秘密信息,是在密钥的控制下进行的,加密和秘密信息,是在密钥的控制下进行的,加密和解密过程中使用的密钥分别称为加密密钥和解解密过程中使用的密钥分别称为加密密钥和解密密钥密码的传递过程可以通过一个简单的密密钥密码的传递过程可以通过一个简单的密码通信模型来表达(如图密码通信模型来表达(如图3.1所示)窃听者窃听者信宿信宿进行解密进行解密m=D(c)进行加密进行加密C= =E( (m) )密钥源密钥源k1密钥源密钥源k2信源信源入侵者入侵者C虽然这是一个简单的加密通信模型,但已涉及到密码虽然这是一个简单的加密通信模型,但已涉及到密码体制的五个组成部分:体制的五个组成部分:明文的集合明文的集合M,称为明文空间;,称为明文空间;密文的集合密文的集合C,称为密文空间;密钥的集合,称为密文空间;密钥的集合K,称为,称为密钥空间;密钥空间;由加密密钥控制的加密交换算法由加密密钥控制的加密交换算法E::Ek : M->C 。
由解密密钥控制的解密交换算法由解密密钥控制的解密交换算法D::Dk : C->M, Dk (Ek(M))=M 我们将五元组(我们将五元组(M,,C,,K,,E,,D)称为一个密码体)称为一个密码体制(制(Cryptosystem),在此体制中要求加密算法对),在此体制中要求加密算法对所有密钥反应迅速并实时有效,体制的安全性不能依所有密钥反应迅速并实时有效,体制的安全性不能依赖于算法的保密,只能依赖于密钥的保密赖于算法的保密,只能依赖于密钥的保密一个安全的密码体制根据其应用性能对信息提一个安全的密码体制根据其应用性能对信息提供下列功能:供下列功能:(1)秘密性:防止非法的接收者发现明文秘密性:防止非法的接收者发现明文2)鉴别性:确定信息来源的合法性鉴别性:确定信息来源的合法性3)完整性:确定信息是否被有意或无意的更完整性:确定信息是否被有意或无意的更改4)不可否认性:发送方在事后,不可否认其不可否认性:发送方在事后,不可否认其传送过的信息传送过的信息近代密码学不只注重信息的秘密性,更加重视近代密码学不只注重信息的秘密性,更加重视信息的鉴别性、完整性及不可否认性信息的鉴别性、完整性及不可否认性。
密码系密码系统为维持其最高安全性,均假设给予破译者最统为维持其最高安全性,均假设给予破译者最多的信息密码体制的安全性必须仅依赖其解多的信息密码体制的安全性必须仅依赖其解密密钥,亦即在一个密码系统中除解密密钥外,密密钥,亦即在一个密码系统中除解密密钥外,其余的加其余的加/解密算法等,均应假设为破译者完解密算法等,均应假设为破译者完全知道 只有在此假设下,破译者若仍无法破解只有在此假设下,破译者若仍无法破解密码系统,此系统方有可能被称为安全密码系统,此系统方有可能被称为安全破译者在密码系统中所获得的信息,依层破译者在密码系统中所获得的信息,依层次可有下列三种可能的破解方式次可有下列三种可能的破解方式1.唯密文攻击法唯密文攻击法2.已知明文攻击法已知明文攻击法3.选择文攻击法选择文攻击法•选择明文攻击选择明文攻击•选择密文攻击选择密文攻击3.1.2 密码技术的分类密码技术的分类•密码技术分类有多种标准,若以密钥为分密码技术分类有多种标准,若以密钥为分类标准时,可将密码系统分为对称密码类标准时,可将密码系统分为对称密码 (又又称为单钥密码或私钥密码称为单钥密码或私钥密码)和非对称密码和非对称密码 (又又称为双钥密码或公钥密码称为双钥密码或公钥密码)。
•在对称密码体制下,加密密钥与解密密钥在对称密码体制下,加密密钥与解密密钥是相同的是相同的(即即K1=K2),密钥,密钥k在传递过程中在传递过程中需经过安全的密钥信道,由发方传送到收需经过安全的密钥信道,由发方传送到收方单钥密码的特点是加密、解密都使用方单钥密码的特点是加密、解密都使用同一个密钥,所以此密码体制的安全性关同一个密钥,所以此密码体制的安全性关键就在于密钥的安全性,若其密钥泄露,键就在于密钥的安全性,若其密钥泄露,则此密码系统便失去其应有的作用则此密码系统便失去其应有的作用单钥密码的优点是:安全性高、加解密速度单钥密码的优点是:安全性高、加解密速度快;其缺点是:快;其缺点是:①①巨大的网络规模,使密钥巨大的网络规模,使密钥的管理成为难点;的管理成为难点;②②难以解决消息传送的确难以解决消息传送的确认问题;认问题; ③③缺乏能够自动检测密钥是否泄缺乏能够自动检测密钥是否泄露的能力露的能力 在非对称密码下,加密密钥与解密密钥不在非对称密码下,加密密钥与解密密钥不同,无需安全信道来传送密钥,只需利用同,无需安全信道来传送密钥,只需利用本地密钥的发生器产生解密密钥本地密钥的发生器产生解密密钥k并控制解并控制解密操作密操作D。
由于双钥密码体制的加密与解密由于双钥密码体制的加密与解密方法不同,且只需保密解密密钥,所以双方法不同,且只需保密解密密钥,所以双钥密码不存在密钥管理问题但双钥密码钥密码不存在密钥管理问题但双钥密码算法一般比较复杂,加解密速度慢算法一般比较复杂,加解密速度慢目前解决网络信息传输安全的体制方法是:在目前解决网络信息传输安全的体制方法是:在加解密时都采用单钥密码,而在密钥传送时,加解密时都采用单钥密码,而在密钥传送时,则采用双钥密码的混合加密体制去解决密钥管则采用双钥密码的混合加密体制去解决密钥管理的困难、加解密速度的问题理的困难、加解密速度的问题 若以密码算法对明文的处理方式为标准,若以密码算法对明文的处理方式为标准,则可将密码系统分为则可将密码系统分为序列密码和分组密码序列密码和分组密码系统系统 序列密码对明文进行逐个比特处理,加序列密码对明文进行逐个比特处理,加密过程是把明文序列与等长的密钥序列进密过程是把明文序列与等长的密钥序列进行逐位模行逐位模2相加解密过程则是把密文序列相加解密过程则是把密文序列与等长的密钥序列进行逐位模与等长的密钥序列进行逐位模2相加。
序列相加序列密码的安全性主要依赖于密钥序列序列密码的安全性主要依赖于密钥序列序列密码的优点是:密码的优点是:①①处理速度快,实时性好;处理速度快,实时性好;②②错误传播小;错误传播小;③③适用于军事、外交等保适用于军事、外交等保密信道;其缺点是:密信道;其缺点是:①①明文扩散性差;明文扩散性差;②②需要密钥同步需要密钥同步 分组密码用一个固定的变换对等长明文分分组密码用一个固定的变换对等长明文分组进行处理,加密过程是将明文序列以固定长组进行处理,加密过程是将明文序列以固定长度进行分组,每组明文用相同的密钥和加密函度进行分组,每组明文用相同的密钥和加密函数进行运算为了减少存储量和提高运算速度,数进行运算为了减少存储量和提高运算速度,加密函数的复杂性成为系统安全的关键加密加密函数的复杂性成为系统安全的关键加密函数重复地使用函数重复地使用代替和置换代替和置换两种基本的加密变两种基本的加密变换分组密码的优点是:换分组密码的优点是:①①明文信息具有良明文信息具有良好的扩散性;好的扩散性;②②不需要密钥同步;不需要密钥同步;③③较强的较强的适用性,其缺点是:适用性,其缺点是:①①加密速度慢;加密速度慢;②②错误错误易扩散和传播。
易扩散和传播3.2 对称密码体系对称密码体系 3.2.1 数据加密标准、加密算法和工作模式数据加密标准、加密算法和工作模式•IBM公司在公司在1974年提出了一个算法叫年提出了一个算法叫LUCIFER,,NBS后来将该算法提交给国家安全代理机构,它后来将该算法提交给国家安全代理机构,它们重新审阅并对算法做了一些修改,提出了一个们重新审阅并对算法做了一些修改,提出了一个版本,就是最初的版本,就是最初的数据加密标准数据加密标准( DES :Data Encryption Standard)算法•I975年,年,NBS公开了公开了DES,即可以自由地使用它,,即可以自由地使用它,并于并于1977年将它作为政府数据加密标准年将它作为政府数据加密标准 DES算法属于分组加密法,即对一定大算法属于分组加密法,即对一定大小的明文或密文进行加密或解密工作小的明文或密文进行加密或解密工作 在在DES加密系统中,其每次加密或解密加密系统中,其每次加密或解密的分组大小均为的分组大小均为64位,所以位,所以DES无需考虑密文无需考虑密文扩充问题扩充问题 无论明文或密文,一般的数据大小通常都无论明文或密文,一般的数据大小通常都大于大于64位,此时只要将明文或密文中的每位,此时只要将明文或密文中的每64位当成一个分组进行分割,再对每一分组做加位当成一个分组进行分割,再对每一分组做加密或解密即可。
密或解密即可2. 加密算法加密算法 当切割后的最后一个分组小干当切割后的最后一个分组小干64位时,便位时,便在此分组之后附加在此分组之后附加‘0’位,直到此分组大小位,直到此分组大小为为64位 DES所用的加密或解密密钥也是所用的加密或解密密钥也是64位,位,但因其中有但因其中有8位是用来做奇偶校验,所以位是用来做奇偶校验,所以64位中真正起到密钥作用的只有位中真正起到密钥作用的只有56位 DES加密与解密所用的算法除了子密钥加密与解密所用的算法除了子密钥的顺序不同外,其他的部分则相同的的顺序不同外,其他的部分则相同的(1)电子密码本电子密码本(ECB) 使用分组密码方式是将一长串明文分解成为适当的使用分组密码方式是将一长串明文分解成为适当的分组,对每一分组用加密分组,对每一分组用加密E()函数分别加密,即电子密码函数分别加密,即电子密码本本(ECB)操作方式操作方式 明文明文P被分解为被分解为P=[p1, p2, p3…pl],其对应的密文,其对应的密文是是C=[C1, C2, C3…Cl],,Ci=E(Pj)是明文是明文Pj使用密钥使用密钥K加加密的结果。
密的结果 ECB操作模式固有的缺点在明文很长的情况下变得操作模式固有的缺点在明文很长的情况下变得更明显了,当攻击者长时间地一直观察发送者和接收者更明显了,当攻击者长时间地一直观察发送者和接收者之间的通信时,如果攻击者想方设法获得了一些所观察之间的通信时,如果攻击者想方设法获得了一些所观察到的明文及相应的密文,攻击者就可开始建立电子密码到的明文及相应的密文,攻击者就可开始建立电子密码本,译出发送者和接收者后续的通信本,译出发送者和接收者后续的通信 攻击者不必去计算密钥攻击者不必去计算密钥K,只要查看其电子密码本上,只要查看其电子密码本上的密文信息,并用对应的明文破解信息的密文信息,并用对应的明文破解信息3. 工作模式工作模式(2)密码分组链密码分组链(CBC) 减少减少EBC模式存在的问题的一种方法是使模式存在的问题的一种方法是使用链接 链接是一种反馈机制,一块分组的加密依链接是一种反馈机制,一块分组的加密依赖于其前面分组的加密赖于其前面分组的加密加密过程是:加密过程是: Cj=Ek(Pj XOR Cj-1)解密过程是:解密过程是: Pj=Dk(Cj)XOR Cj-1)Cn是某个选定的初始值,是某个选定的初始值,Dk()是解密函数。
是解密函数 则在则在CBC模式中,明文和前一分组的密文模式中,明文和前一分组的密文异或后,再将其结果进行加密异或后,再将其结果进行加密(3)密码反馈密码反馈(CFB) CBC模式的问题是,即使明文错一位或在计模式的问题是,即使明文错一位或在计算算/存储以前的密文分组中有一点错误,都可能导存储以前的密文分组中有一点错误,都可能导致密文组的计算错误,将影响所有后续的密文组致密文组的计算错误,将影响所有后续的密文组 前两种方法都有一共同缺点是,在完整的前两种方法都有一共同缺点是,在完整的8字字节的数据分组未到来之前,加密节的数据分组未到来之前,加密/解密是不能开始解密是不能开始的 密码反馈模式是一种流操作模式,一组密码反馈模式是一种流操作模式,一组8位信位信息并不需要等待全部的数据分组到达后才能加密息并不需要等待全部的数据分组到达后才能加密3.2.2 高级加密标准、加密算法和解密算法高级加密标准、加密算法和解密算法 1997年,国家标准和技术委员会年,国家标准和技术委员会NIST(前身(前身为国家标准局为国家标准局NBS)寻找)寻找DES的替代品。
的替代品 条件是条件是:新的加密算法必须允许新的加密算法必须允许128,,192,,256位密钥长度,它不仅能够在位密钥长度,它不仅能够在128位输入分组上位输入分组上工作,而且还能够在各种不同的硬件上工作,速工作,而且还能够在各种不同的硬件上工作,速度和密码强度同样也要被重视度和密码强度同样也要被重视 1998年,加密委员会对年,加密委员会对15种候选算法进行评种候选算法进行评定,最后选择出定,最后选择出5种 最后,最后,Rijndael被选作为取代被选作为取代DES的新加密标的新加密标准,这就是高级加密标准准,这就是高级加密标准(AES) 余下余下4种候选算法很有可能在未来的加密体制种候选算法很有可能在未来的加密体制中得到广泛的应中得到广泛的应用 首先将首先将Rijndael算法密钥长度限制为算法密钥长度限制为128位,算法过位,算法过程由程由10轮循环组成,每一轮循环都有一个来自于初始密轮循环组成,每一轮循环都有一个来自于初始密钥的循环密钥钥的循环密钥 每一轮循环输入的是每一轮循环输入的是128位,产生的输出也是位,产生的输出也是128位。
位每一循环由每一循环由4个基本步骤组成,称之为层个基本步骤组成,称之为层(layer)::(1)字节转换字节转换(The ByteSub Transformation):是一个非:是一个非线性层,目的是防止微分和线性密码体制的攻击线性层,目的是防止微分和线性密码体制的攻击2)移动行变换移动行变换(The ShiftRow Transformation):这一步:这一步是线性组合,可以导致多轮循环各个位间的扩散是线性组合,可以导致多轮循环各个位间的扩散3)混合列变换混合列变换(The MixColumn Transformation):与:与行变换目的是相同的行变换目的是相同的4)加循环密钥加循环密钥(AddRoundKey):循环密钥同上层结果进:循环密钥同上层结果进行异或运算行异或运算2. 加密算法加密算法3. 解密算法解密算法解密的每一步骤是加密过程中字节转换解密的每一步骤是加密过程中字节转换(ByteSub)、移动行、移动行(ShiftRaw)、混合列、混合列(MixColumn)和加循环密钥和加循环密钥(AddRoundKey)的的相反过程相反过程1)字节转换的逆是另一种查找表,称之为逆字字节转换的逆是另一种查找表,称之为逆字节转换节转换(InvByteSub)。
2)其逆过程是用循环右移代替循环左移,得到其逆过程是用循环右移代替循环左移,得到逆移动行逆移动行(InvShiftRow)3)混合列的逆的存在,因为混合列中所用的混合列的逆的存在,因为混合列中所用的4X4矩阵是可逆的,即逆混合列矩阵是可逆的,即逆混合列(InvMixCoIumn)4)加循环密钥就是它自身的反序加循环密钥就是它自身的反序3.2.3 序列密码序列密码 序列加密算法序列加密算法(Stream Cipher),即明文的位串,即明文的位串(Bit Stream)与伪随机数产生器与伪随机数产生器(Pseudo Random Number Generator)产生的伪随机序列经过适当运算得到密文产生的伪随机序列经过适当运算得到密文 可以认为序列加密算法为可以认为序列加密算法为1个位的分组加密算法个位的分组加密算法(Block Cipher) 主要缺点在于若一个伪随机序列发生错误便会使整主要缺点在于若一个伪随机序列发生错误便会使整个密文发生错误,致使解密过程无法还原回明文个密文发生错误,致使解密过程无法还原回明文 但也可视为优点,即相同的明文位串可有不同的密但也可视为优点,即相同的明文位串可有不同的密文位串。
文位串 由此可知,序列加密算法是一种记忆性组件由此可知,序列加密算法是一种记忆性组件(Memory Device),即前后的伪随机序列可互相影响即前后的伪随机序列可互相影响 其加密系统的简单结构如图其加密系统的简单结构如图3.3所示加密器加密器解密器解密器随机数产生器随机数产生器明文位串明文位串明文位串明文位串伪随机序列伪随机序列伪随机序列伪随机序列密钥密钥图图3.3 序列加密算法结构序列加密算法结构 序列加密算法的安全性在于随机数产生器产生的序列加密算法的安全性在于随机数产生器产生的密钥位串的顺序是否够密钥位串的顺序是否够“混乱混乱”,及产生位串周期是否,及产生位串周期是否够够“长长” 对于作为加密系统随机数产生器的要求是非常对于作为加密系统随机数产生器的要求是非常苛刻的,最佳的随机数产生器是让破译者无法找出伪苛刻的,最佳的随机数产生器是让破译者无法找出伪随机序列的前后相关性,但好的随机数产生器并不容随机序列的前后相关性,但好的随机数产生器并不容易产生3.2.4 分组密码分组密码 传统的密码体制中,明文中所改变一个字母传统的密码体制中,明文中所改变一个字母对应在密文中也改变了一个字母,密文中给定的对应在密文中也改变了一个字母,密文中给定的一个字母恰好都来自于明文中的同一个字母,这一个字母恰好都来自于明文中的同一个字母,这通过频率分析就非常容易发现密钥。
通过频率分析就非常容易发现密钥 使用字母的分组体制,对应了密钥的长度,使用字母的分组体制,对应了密钥的长度,利用频率分析要困难些,但仍然是可能的,毕竟利用频率分析要困难些,但仍然是可能的,毕竟每组中的各个字母没有相互作用每组中的各个字母没有相互作用 分组密码避免了这些问题,因为它同时加密分组密码避免了这些问题,因为它同时加密几个字母或数字的分组几个字母或数字的分组 改变明文分组的一个字符,就可能改变与之改变明文分组的一个字符,就可能改变与之相对应的密文分组潜在的所有字符相对应的密文分组潜在的所有字符 现代密码体制的很多方法都属于分组密码的范现代密码体制的很多方法都属于分组密码的范畴 例如:例如:DES方法是基于方法是基于64比特的分组,比特的分组,AES使使用用128比特的分组,比特的分组,RSA使用几百比特长的分组,取使用几百比特长的分组,取决于模数的使用,所有这些分组的长度都足够长,能决于模数的使用,所有这些分组的长度都足够长,能有效地防止类似频率分析这样的攻击有效地防止类似频率分析这样的攻击。
使用分组密码的标准方法就是一次性地、独立使用分组密码的标准方法就是一次性地、独立地把明文中的一块分组转换成密文的一块分组,这叫地把明文中的一块分组转换成密文的一块分组,这叫做电子电报密码本做电子电报密码本(ECB)模式,但是使用后续明文分模式,但是使用后续明文分组的加密分组,从密文的分组中再使用反馈机制,这组的加密分组,从密文的分组中再使用反馈机制,这就导致了密文分组的连锁就导致了密文分组的连锁(CBC)模式和密文反馈操作模式和密文反馈操作(CFB)模式3.3 非对称密码体系非对称密码体系•3.3.1 RSA算法算法 RSA体制是体制是1978年由美国麻省理工学院年由美国麻省理工学院Rivest,Shamir和和Adleman三位教授首先提出三位教授首先提出的一种的一种基于因子分解基于因子分解的指数函数的的指数函数的单向陷门函单向陷门函数数,也是迄今为止,也是迄今为止理论上最为成熟完善理论上最为成熟完善的一种的一种公钥密码体制公钥密码体制 最初由最初由Diffie和和Hellman在他们论文中所提在他们论文中所提出的这种出的这种公开密钥密码体制公开密钥密码体制(Public Key Cryptoasystem),并没有在实际中应用。
并没有在实际中应用2.密钥生成密钥生成(1)用户任意选择两个大素数用户任意选择两个大素数p及及q,并求出其,并求出其乘积乘积N=p*q2)任选一整数任选一整数e,使得,使得e与与N互素,即互素,即GCD (e,,Φ(N))=1为加密密钥,并求出为加密密钥,并求出e在阶在阶T中的乘中的乘法逆元法逆元d,即,即e*d =1 mod T 根据欧拉定理,指数函数在模根据欧拉定理,指数函数在模N中所有元中所有元素阶的最小公倍数素阶的最小公倍数T=ln(p-1,q-1),即,即T等于等于p-1与与q-1的最小公倍数,一般均使用的最小公倍数,一般均使用T=(p-1)(q-1)=Φ(N)(3)将将(e,,N)公布为公开密钥,并将公布为公开密钥,并将d秘密保存为私有秘密保存为私有秘密密钥秘密密钥 p与与q可以毁去,以增加其安全性可以毁去,以增加其安全性例例 若若p==13而而q=31,而,而e=7,,d是多少?公钥是多少是多少?公钥是多少?私钥是多少??私钥是多少?解:解: N = p * q = 403 T = (p-1) * (q-1) = 360 因为因为 e * d = 1 mod T,, 所以所以 7 * d = 1 mod 360 则则 d = 103公钥是公钥是(e,,N) = (7,,403)私钥是私钥是(d,,N) = (103,,403)•加密方法:加密方法:–将明文看成是一个比特串,将其划分成一个个将明文看成是一个比特串,将其划分成一个个数据块数据块M,且有,且有0≤M<<n ;对每个数据块;对每个数据块M,,计算计算C==Me (mod n),,C即为即为M的密文;的密文;•解密方法:解密方法:–对每个密文块对每个密文块C,计算,计算M==Cd (mod n),,M即为即为要求的明文要求的明文•根据前面的例子,加密根据前面的例子,加密123字符串。
字符串•根据根据C==Me (mod n),公钥公钥 (7,,403)对对1进行进行加密加密C=1237 MOD 403=371•根据根据M==Cd (mod n),,私钥私钥 (103,,403)进行进行解密解密M=371103 MOD 403=123 要想从公开密钥要想从公开密钥n和和e算出未知的算出未知的d,只有分解大,只有分解大整数整数n的因子,但大数分解是一个十分困难的问题的因子,但大数分解是一个十分困难的问题 Rivest, Shamir和和Adleman用已知最好的算法用已知最好的算法去估计去估计分解分解n的时间与的时间与n的位数之间的关系,的位数之间的关系,即使用即使用运算速度为运算速度为100万次万次/秒秒的计算机分解的计算机分解500 bit的的n,得,得出分解操作数是出分解操作数是1.3x1039,分解时间是,分解时间是4.2 x 1025年由此可认为由此可认为RSA保密性能良好保密性能良好 但由于但由于RSA涉及到高次幂运算,特别是在加密涉及到高次幂运算,特别是在加密大量数据时,一般用硬件来代替实现速度较慢的软件大量数据时,一般用硬件来代替实现速度较慢的软件来实现来实现RSA。
3.3.2 其他公钥密码体系其他公钥密码体系1. Diffie-Hellman公钥体制公钥体制 Diffie-Hellman公钥分配密码体制是公钥分配密码体制是斯坦福大斯坦福大学学的的W.Diffie与与M.E.Hellman于于1976年设计的:年设计的:令令P是大素数,且是大素数,且P-1有大素数因子,选有大素数因子,选g为模为模P的的一个原根一个原根 使用过程是:使用过程是:A欲与欲与B通信,首先用明文形式通信,首先用明文形式与与B接通,然后接通,然后A任选正整数任选正整数xA<=p-2作为密钥,作为密钥,计算计算gxA发送给发送给B,,B将将gxB发送给发送给A A和和B分别得到分别得到gxAB,,A和和B拥有共同的密钥拥有共同的密钥 这种公钥分配体制的安全性是基于有限域上这种公钥分配体制的安全性是基于有限域上的离散对数问题的困难性,所以具有很高的安全的离散对数问题的困难性,所以具有很高的安全性2. Elgamal公钥体制公钥体制 Elgamal是一种基于离散对数的公钥密码体制是一种基于离散对数的公钥密码体制。
由于由于Elgamal公钥密码体制的密文不仅依赖于待加密的公钥密码体制的密文不仅依赖于待加密的明文,还依赖于随机数明文,还依赖于随机数k,所以用户选择的随机参数不同,便,所以用户选择的随机参数不同,便能够使加密相同的明文,得到出不同的密文能够使加密相同的明文,得到出不同的密文 由于这种称为概率加密体制是非确定性的,所以在确定由于这种称为概率加密体制是非确定性的,所以在确定性加密算法中,破译者对某些关键信息感兴趣,则可事先将性加密算法中,破译者对某些关键信息感兴趣,则可事先将这些信息加密后存储起来,一旦以后截获密文,就可以直接这些信息加密后存储起来,一旦以后截获密文,就可以直接在存储的密文中查找,从而得到相应明文在存储的密文中查找,从而得到相应明文 概率加密体制弥补了其不足,提高了安全性概率加密体制弥补了其不足,提高了安全性 为了抵抗已知明文攻击,为了抵抗已知明文攻击,P至少需要至少需要150位,而且位,而且P-1必必需至少有一个大素数因子需至少有一个大素数因子3. Merkle-Hellman公钥体制公钥体制 大多数公钥密码体制都会涉及到高次幂运算,不大多数公钥密码体制都会涉及到高次幂运算,不仅加密速度慢,而且会占用大量的存储空间。
仅加密速度慢,而且会占用大量的存储空间 1978年年Merkle和和Hellman提出第一个提出第一个(Knapsack)背包体制,背包体制的特性是其加解密背包体制,背包体制的特性是其加解密的速度非常快的速度非常快(可高达可高达700kb/s以上以上),因此引起许多,因此引起许多研究学者兴趣研究学者兴趣 不过背包系统的安全度始终为人所怀疑,因为其不过背包系统的安全度始终为人所怀疑,因为其易解背包的结构似乎可提供某些信息给破译者,所有易解背包的结构似乎可提供某些信息给破译者,所有KPKC均为线性保密系统均为线性保密系统 因此,因此,MH KPKC从未被实际考虑应用过从未被实际考虑应用过3.4 密码管理密码管理•3.4.1 密钥生成密钥生成•算法的安全性依赖于密钥,若你使用一个弱的密算法的安全性依赖于密钥,若你使用一个弱的密钥生成方法,那么你的整个体制是弱的钥生成方法,那么你的整个体制是弱的•有有56比特的密钥的比特的密钥的DES正常情况下任何一个正常情况下任何一个56比比特的数据串都能成为密钥,所以共有特的数据串都能成为密钥,所以共有256种可能的种可能的密钥。
密钥•现实中仅允许现实中仅允许ASCII码的密钥,并强制每一字节的码的密钥,并强制每一字节的最高位为零,将小写字母转换成大写的这个程序最高位为零,将小写字母转换成大写的这个程序忽略每个字节的最低位忽略每个字节的最低位•这样就导致该程序只能产生这样就导致该程序只能产生240个可能的密钥个可能的密钥•这些密钥生成程序使这些密钥生成程序使DES的攻击难度比正常情况的攻击难度比正常情况低了万倍低了万倍 特定的穷举攻击硬件和并行工具,每秒做测试一特定的穷举攻击硬件和并行工具,每秒做测试一百万次的工作,将能破译小写字母和小写字母与数字百万次的工作,将能破译小写字母和小写字母与数字的的8字节的密钥,字节的密钥,7字节的字母数字符号密钥,字节的字母数字符号密钥,6字节字节长的印刷字符和长的印刷字符和ASCII字符密钥,字符密钥,5字节长的字节长的8比特比特—ASCII—字符密钥字符密钥 人们选择密钥时,通常选择一个弱密钥,即喜欢人们选择密钥时,通常选择一个弱密钥,即喜欢选择最更容易记忆的密码选择最更容易记忆的密码 最安全的密码体制也帮不了那些习惯用名字作为最安全的密码体制也帮不了那些习惯用名字作为密钥或者把密钥写下来的人,一个聪明的穷举攻击并密钥或者把密钥写下来的人,一个聪明的穷举攻击并不按照数字顺序去试所有可能的密钥,它们首先尝试不按照数字顺序去试所有可能的密钥,它们首先尝试最可能的密钥。
最可能的密钥 这就是所谓的这就是所谓的“字典攻击字典攻击”,当字典攻击被用做破,当字典攻击被用做破译密钥文件而不是单个密钥时就显得更加有力译密钥文件而不是单个密钥时就显得更加有力3.4.2 非线性密钥空间非线性密钥空间 所谓的非线性密钥空间,即假定能将选择的算所谓的非线性密钥空间,即假定能将选择的算法加入到一个防窜改模块中,要求有特殊保密形式的法加入到一个防窜改模块中,要求有特殊保密形式的密钥,则其他的密钥便都会引起模块使用非常弱的算密钥,则其他的密钥便都会引起模块使用非常弱的算法来加解密法来加解密 便可使那些不知道这个特殊形式的人不可能偶然便可使那些不知道这个特殊形式的人不可能偶然碰到正确的密钥碰到正确的密钥 所有密钥的强壮程度并不相等所有密钥的强壮程度并不相等 非线性密钥空间可按照密钥本身和用该密钥加密非线性密钥空间可按照密钥本身和用该密钥加密的某一固定字符串来实现的某一固定字符串来实现 模块用这个密钥对字符串进行解密;若它收到该模块用这个密钥对字符串进行解密;若它收到该固定的字符串,便能正常地解密,否则用另一个非常固定的字符串,便能正常地解密,否则用另一个非常弱的算法来进行解密。
弱的算法来进行解密 若该算法有一个若该算法有一个128比特的密钥和一个比特的密钥和一个64比特的比特的字符块,即总密钥长度为字符块,即总密钥长度为192比特,则共有有效密钥比特,则共有有效密钥2128个,且随机选择好密钥的概率为个,且随机选择好密钥的概率为1/2643.4.3 发送密钥发送密钥 当采用对称加密算法进行保密通信时需要同一密当采用对称加密算法进行保密通信时需要同一密钥 发送者使用随机密钥发生器生成一个密钥,必发送者使用随机密钥发生器生成一个密钥,必须安全地送给接收者须安全地送给接收者 发送者须通过安全信道将密钥副本交给接收者,发送者须通过安全信道将密钥副本交给接收者,否则就会出问题否则就会出问题 系统使用被公认安全的备用信道,发送者可以系统使用被公认安全的备用信道,发送者可以通过一个可靠的信道把密钥传送给接收者,或者同接通过一个可靠的信道把密钥传送给接收者,或者同接收者一起建立另一个希望无人窃听的通信信道收者一起建立另一个希望无人窃听的通信信道 发送者可通过他们加密的通信信道把对称密钥发送者可通过他们加密的通信信道把对称密钥送给接收者。
送给接收者 如果信道能够保证加密,那么在同一个信道上明如果信道能够保证加密,那么在同一个信道上明文发送加密密钥就导致在该信道上的窃听者都能破解文发送加密密钥就导致在该信道上的窃听者都能破解全部通信全部通信 其解决方法是将密钥分成许多不同的部分,然后用不同的其解决方法是将密钥分成许多不同的部分,然后用不同的信道发送信道发送 即使截获者能收集到密钥,但由于不够完整,截获者仍即使截获者能收集到密钥,但由于不够完整,截获者仍不知密钥,所以此方法可用于除个别特殊情况外的任何场合不知密钥,所以此方法可用于除个别特殊情况外的任何场合 发送者用密钥拆分技术将密钥加密密钥传送给接收者,发送者用密钥拆分技术将密钥加密密钥传送给接收者,当同时拥有该密钥,发送者就可先对数据密钥进行加密,然当同时拥有该密钥,发送者就可先对数据密钥进行加密,然后在同一信道上把它传送给接收者后在同一信道上把它传送给接收者 用密钥对大量的数据加密密钥其速度会非常慢,所以要用密钥对大量的数据加密密钥其速度会非常慢,所以要求无需经常改动密钥求无需经常改动密钥 当密钥加密密钥遭到损害,则使用它本身密钥加密的所当密钥加密密钥遭到损害,则使用它本身密钥加密的所有信息便会受到破坏,所以必须对其密钥进行安全的存储。
有信息便会受到破坏,所以必须对其密钥进行安全的存储3.4.4 验证密钥验证密钥 当接收者收到密钥时,需要判断是发送者传送或当接收者收到密钥时,需要判断是发送者传送或是其他人伪装发送者传送是其他人伪装发送者传送 如果发送者通过可靠的信道传送密钥,接收者必如果发送者通过可靠的信道传送密钥,接收者必须相信信道;须相信信道; 如果密钥由密钥加密,接收者必须相信只有发送如果密钥由密钥加密,接收者必须相信只有发送者才拥有的加密密钥;者才拥有的加密密钥; 如果发送者运用数字签名协议来给密钥签名,如果发送者运用数字签名协议来给密钥签名,那么当接收者验证签名时就必须相信公开密钥数据库;那么当接收者验证签名时就必须相信公开密钥数据库; 如果某个密钥分配中心(如果某个密钥分配中心(KDC)在发送者的公)在发送者的公钥上签名,接收者必须相信钥上签名,接收者必须相信KDC的公开密钥副本不的公开密钥副本不曾被更改曾被更改 密钥在传输中会发生错误,则大量的密文无法解密钥在传输中会发生错误,则大量的密文无法解密,所以密钥都必须含有检错和纠错位来进行传输。
密,所以密钥都必须含有检错和纠错位来进行传输 密钥在传输中的错误就很容易地被检查出来,若密钥在传输中的错误就很容易地被检查出来,若需要密钥还可被重传需要密钥还可被重传 密钥在解密过程中可以附加一个验证分组来进行密钥在解密过程中可以附加一个验证分组来进行错误检测:加密前给明文加一已知的报头,在接收端错误检测:加密前给明文加一已知的报头,在接收端接收者解密报头,并验证其正确性接收者解密报头,并验证其正确性 对每个密钥的校验和预计算,即可确定之后所截对每个密钥的校验和预计算,即可确定之后所截取到的任何信息密钥取到的任何信息密钥 校验和的特性不包含随机的数据,至少在每一校校验和的特性不包含随机的数据,至少在每一校验和中没有随机数据验和中没有随机数据3.4.5 更新密钥更新密钥 若要定期改变加密数据链路的密钥,可采用从旧若要定期改变加密数据链路的密钥,可采用从旧密钥中产生新密钥的方法,即密钥更新密钥中产生新密钥的方法,即密钥更新 更新密钥使用单向函数,若发送者和接收者共同更新密钥使用单向函数,若发送者和接收者共同使用同一密钥,并用同一个单向函数进行操作,他们使用同一密钥,并用同一个单向函数进行操作,他们就会得到相同的结果。
就会得到相同的结果 那么就可以从结果中得到他们所需要的数据来产那么就可以从结果中得到他们所需要的数据来产生新密钥生新密钥 密钥更新需要记住新密钥只是与旧密钥同样安密钥更新需要记住新密钥只是与旧密钥同样安全 若攻击者能够得到旧密钥,则可以完成密钥更新若攻击者能够得到旧密钥,则可以完成密钥更新功能;功能;若攻击者得不到旧密钥,并试图对加密的数据若攻击者得不到旧密钥,并试图对加密的数据流进行唯密文攻击的话,则密钥更新对发送者和接收流进行唯密文攻击的话,则密钥更新对发送者和接收者是很好的保护数据方法者是很好的保护数据方法3.4.6 存储密钥存储密钥 单用户的密钥存储是最简单的的密钥存储问题,单用户的密钥存储是最简单的的密钥存储问题,发送者加密文件以备以后用,因为只涉及一人,且只发送者加密文件以备以后用,因为只涉及一人,且只有一人对密钥负责有一人对密钥负责 可采用类似于密钥加密密钥的方法对难以记忆的可采用类似于密钥加密密钥的方法对难以记忆的密钥进行加密保存密钥进行加密保存 例如,一个例如,一个RSA私钥可用私钥可用DES密钥加密后存在密钥加密后存在磁盘上,要恢复密钥时,用户只需把磁盘上,要恢复密钥时,用户只需把DES密钥输入到密钥输入到解密程序中即可。
解密程序中即可 如果密钥是确定性地产生的(使用密码上安全的如果密钥是确定性地产生的(使用密码上安全的伪随机序列发生器),每次需要时从一个容易记住的伪随机序列发生器),每次需要时从一个容易记住的口令产生出密钥会更加简单口令产生出密钥会更加简单 理想的情况是密钥永远也不会以未加密的形式暴理想的情况是密钥永远也不会以未加密的形式暴露在加密设施以外露在加密设施以外 算法仅当在密钥保密的情况下才能保证安全,算法仅当在密钥保密的情况下才能保证安全,若发送者的密钥丢失、被盗、或以其他方式泄露,则若发送者的密钥丢失、被盗、或以其他方式泄露,则所有的保密性都失去了所有的保密性都失去了 如果对称密码体制泄露了密钥,发送者必须更换如果对称密码体制泄露了密钥,发送者必须更换密钥;如果是一个私钥,则其公钥或许暴露在其网络密钥;如果是一个私钥,则其公钥或许暴露在其网络上 私钥泄露的消息通过网络迅速蔓延是最致命的,私钥泄露的消息通过网络迅速蔓延是最致命的,任何公钥数据库必须立即声明一个特定私钥被泄露,任何公钥数据库必须立即声明一个特定私钥被泄露,以免怀疑有人用该泄露的密钥加密消息。
以免怀疑有人用该泄露的密钥加密消息3.4.7 密钥有效期密钥有效期 加密密钥不能无限期使用,应当在一定期限内加密密钥不能无限期使用,应当在一定期限内自动失效自动失效 因为:密钥使用时间越长,它泄露的机会就越因为:密钥使用时间越长,它泄露的机会就越大;大;若密钥已泄露,那么密钥使用越久,损失就越大;若密钥已泄露,那么密钥使用越久,损失就越大;密钥使用越久,人们花费精力破译它的动力机会就越密钥使用越久,人们花费精力破译它的动力机会就越多;多;对用同一密钥加密的多个密文进行密码分析一般对用同一密钥加密的多个密文进行密码分析一般比较容易比较容易 对任何密码应用,必须有一个策略能够检测密对任何密码应用,必须有一个策略能够检测密钥的有效期,不同密钥应有不同有效期钥的有效期,不同密钥应有不同有效期 密钥应当有相对较短的有效期,这主要依赖数密钥应当有相对较短的有效期,这主要依赖数据的价值和给定时间里加密数据的数量据的价值和给定时间里加密数据的数量 密钥加密密钥无需频繁更换,因为它们只是偶尔地用做密钥加密密钥无需频繁更换,因为它们只是偶尔地用做密钥交换。
密钥交换 这只给密钥破译者提供很少的密文分析,且相应的明文这只给密钥破译者提供很少的密文分析,且相应的明文也没有特殊的形式也没有特殊的形式 但如果密钥加密密钥泄露,因为通信密钥都经其加密,但如果密钥加密密钥泄露,因为通信密钥都经其加密,则其潜在损失将是巨大的则其潜在损失将是巨大的 用来加密保存数据文件的加密密钥不能经常地变换用来加密保存数据文件的加密密钥不能经常地变换 解决方法是每个文件用唯一的密钥加密,然后再用密钥解决方法是每个文件用唯一的密钥加密,然后再用密钥加密密钥把所有密钥加密,但是丢失该密钥意味着丢失所有加密密钥把所有密钥加密,但是丢失该密钥意味着丢失所有的文件加密密钥的文件加密密钥 如果密钥必须定期替换,旧的密钥就必须安全地销毁如果密钥必须定期替换,旧的密钥就必须安全地销毁 旧密钥是有价值的,即使不再使用,攻击者仍就能读到旧密钥是有价值的,即使不再使用,攻击者仍就能读到由它加密的一些旧的消息由它加密的一些旧的消息3.4.8 公钥密码管理公钥密码管理 公钥密码使得密钥较易管理,网络上的每个人都只有一公钥密码使得密钥较易管理,网络上的每个人都只有一个公开密钥。
个公开密钥 如果发送者想传送一段信息给接收者,则必须知道接收如果发送者想传送一段信息给接收者,则必须知道接收者的公开密钥,可以从接收者、中央数据库、自己的私人数者的公开密钥,可以从接收者、中央数据库、自己的私人数据库处获得据库处获得 攻击者可以用自己的密钥代替接收者密钥引起的针对公攻击者可以用自己的密钥代替接收者密钥引起的针对公钥算法的多种可能的攻击钥算法的多种可能的攻击 该攻击是发送者想给接收者发送信息,进入公开密钥数该攻击是发送者想给接收者发送信息,进入公开密钥数据库获得了接收者的公开密钥据库获得了接收者的公开密钥 但是攻击者用他自己的密钥代替了接收者的,发送者使但是攻击者用他自己的密钥代替了接收者的,发送者使用攻击者的密钥加密攻击者的消息并传给接收者,自己则截用攻击者的密钥加密攻击者的消息并传给接收者,自己则截到、破译并阅读该消息到、破译并阅读该消息 再重新用接收者的密钥加密,并传给接收者再重新用接收者的密钥加密,并传给接收者。





![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)






