3.1 信息加密技术概述 3.2 密码技术 3.3 密钥管理 3.4 网络加密技术 习题与思考题 参考文献 实训指南 第三章 信息加密技术 3.1 信息加密技术概述 3.2 密码技术 3.3 密钥管理 3.4 网络加密技术 习题与思考题 参考文献 实训指南
教学目的和要求▼ 通过本章的学习,使学生掌握基本的信息加密技术,并会实际应用。要求了解信息加密技术的概念;掌握密码学一些简单技术;了解DES、RSA密码体制;了解密钥的管理;了解基本的网络加密技术。
关键词汇▼ 密码学(Cryptology) 明文(plaintext,通常记作P;也记作M,message) 密文(ciphertext,通常记作C) 密码算法(Cryptography Algorithm) 加密(Encrtption,通常记作E) 解密(Decryption,通常记作D) 密钥(key,通常记作K) 对称密码体制(symmetric system) 非对称密码体制(asymmetric system) 隐写术(steganography) 替代(substitution) 易位(transposition) DES(Data Encryption Standard) RSA 广义数域筛GNFS(Generalized Number Field Sieve) 信息-摘要算法MD5(Message-Digest Algorithm 5) 消息认证代码MAC(Message Authentication Code) 托管加密标准EES(escorowed encryption standard) 密钥分配中心KDC(key distribution center) 密码学(Cryptology):是结合数学、计算机科学、电子与通信等诸多学科于一的交叉学科,是研究信息系统安全保密的一门科学,包含密码编码学(Cryptography)和密码分析学(Cryptanalytics)两个分支。 明文(plaintext,通常记作P;也记作M,message):两个用户之间要传递的信息 密文(ciphertext,通常记作C):明文经加密算法后形成的信息 密码算法(Cryptography Algorithm):达到加密变换与解密变换目的的具体规则 加密(Encrtption,通常记作E):用某种方法伪装明文以隐藏它的内容的过程称。 解密(Decryption,通常记作D):把密文转变为明文的过程 密钥(key,通常记作K):控制明文与密文之间变换的关键,通常是一随机字符串 对称密码体制(symmetric system):就是加密密钥和解密密钥相同,或者虽然不相同,但由其中的任意一个可以很容易的推出另一个的一种密码体制。也称传统密码体制、秘密密钥体制或单钥密钥体制。 非对称密码体制(asymmetric system):加密密钥和解密密钥不相同,并且从一个很难推出另一个的一种密码体制。又称公开密钥体制。 隐写术(steganography):通过隐藏消息的存在来达到加密信息的目的的一种技术 替代(substitution):将明文字母表中的每个字符替换为密文字母表中的字符,以达到加密目的的一种技术。 易位(transposition):也称换位密码、排列组合密码,是不需对明文字母作任何变换,只需对明文字母的顺序按密钥的规律相应的排列组合后输出,然后形成密文的一种技术。 DES(Data Encryption Standard):最著名的私钥密码体制 RSA:一种迄今为止理论上最为成熟完善的公钥密码体制 GNFS(Generalized Number Field Sieve):广义数域筛,一种因子分解算法,多用来攻击RSA。 MD5(Message-Digest Algorithm 5):信息-摘要算法,对一段信息产生信息摘要,以防止被篡改。 MAC(Message Authentication Code):消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。 EES(escorowed encryption standard):一种托管加密标准,又称Clipper建议 KDC(key distribution center):密钥分配中心
前言 计算机网络技术的飞速发展,大大改变了人们的生活面貌,促进了社会的发展。可是互联网是一个面向大众的开放系统,对于信息的保密和系统的安全性考虑得并不完备,由此引起的网络安全问题日益严重。如何保护计算机信息的的内容,也即信息内容的保密问题显得越来越重要。 加密技术是网络信息安全主动的、开放型的防范手段,对于敏感数据应采用加密处理,并且在数据传输时采用加密传输。本章就将着重介绍信息加密技术的一般方法,内容包括:密码技术基础知识;密钥管理在数据保密中的重要性;网络加密的方式等。
3.1 信息加密技术概述 信息加密技术是利用数学或物理手段,对电子信息在传输过程中和存储体内进行保护,以防止泄漏的技术。保密通信、计算机密钥、防复制软盘等都属于信息加密技术。通信过程中的加密主要是采用密码,在数字通信中可利用计算机加密法,改变负载信息的数码结构。计算机信息保护则以软件加密为主。目前世界上最流行的几种加密体制和加密算法有:AES算法和RSA算法等。为防止破密,加密软件还常采用硬件加密和加密软盘。一些软件商品常带有一种小的硬卡,这就是硬件加密措施。在软盘上用激光穿孔,使软件的存储区有不为人所知的局部存坏,就可以防止非法复制。这样的加密软盘可以为不掌握加密技术的人员使用,以保护软件。由于计算机软件的非法复制,解密及盗版问题日益严重,甚至引发国际争端,因此对信息加密技术和加密手段的研究与开发,受到各国计算机界的重视,发展日新月异。
信息加密技术是应用最早、也是一般用户接触最多的安全技术领域,从最初的保密通信发展到目前的网络信息加密,一直伴随着信息技术的发展而发展并始终受到重视。在基于信息论和近代数学的现代密码学成立之后,加密技术已经不再依赖于对加密算法本身的保密,而是通过在统计学意义上提高破解的成本来提供高的安全性。近年来通过与其他领域的交叉,产生了量子密码、基于DNA的密码和数字隐写等分支领域,其安全性能和潜在的应用领域均有很大的突破。相信加密技术仍将在信息安全领域内扮演十分重要的角色。 现代的电脑加密技术就是适应了网络安全的需要而应运产生的,它为我们进行一般的电子商务活动提供了安全保障,如在网络中进行文件传输、电子邮件往来和进行合同文本的签署等。其实加密技术也不是什么新生事物,只不过应用在当今电子商务、电脑网络中还是近几年的历史。下面我们就详细介绍一下加密技术的方方面面,希望能为那些对加密技术还一知半解的朋友提供一个详细了解的机会!
3.2 密码技术 一提到密码学,可能绝大多数的读者脑海里会浮现诸如007、布律蒂斯、川岛芳子等历史上著名的间谍人物,会想到暗杀、突袭等军事活动。是的,对于我们而言,密码始终处于一种未知的黑暗之中,常常与军事、外交、情报等工作联系在一起,让人在感到神秘之余,又有几分畏惧。 但是,在如今这个电子化、数字化几乎已经波及社会生活的所有方面的时代,密码已经成为公民正常生活、学习不可缺少的部分。银行帐号、Email密码、网络游戏帐号、电子购物等,哪样都离不开密码。此外,许多传统上基于纸面的,常常需要签名盖章的重要凭证,诸如纸币、存单、支票、股票、合同、租约、法律文书、身份证件、学历证书等等,也已陆续转化或增加为数字电子媒体的形式。 那么,密码学是怎样逐渐揭去神秘的面纱,走进公众的日常生活当中的呢?主要的推动因素是社会公众对于个人信息秘密性与真实性的需求。密码学提供的只是技术保障作用。它不仅具有信息加密功能,而且具有数字签名、身份验证、秘密分存、系统安全等功能,可以充分保证信息的机密性、完整性和准确性,防止信息被篡改、伪造或假冒。
3.2.1 密码学基础知识 3.2.1.1 密码学基本概念 密码学(Cryptology)是结合数学、计算机科学、电子与通信等诸多学科于一的交叉学科,是研究信息系统安全保密的一门科学,包括密码编码学(Cryptography)和密码分析学(Cryptanalytics)两个分支。密码编码学主要研究对信息进行编码,实现对信息的隐蔽;而密码分析学则相反,主要研究加密消息的破译或消息的伪造。这两者天生就相互对立,但是正是这种对立促使密码学不断的发展。
明文 密文 密钥 加密算法 解密算法 图3.1 加密、解密全过程 一个完整的密码系统至少由明文、密文、密码方案和密钥四个部分组成。 (1)、信息的原始形式称为明文(plaintext,通常记作P;也记作M,message)。 (2)、经过变换加密的明文称为密文(ciphertext,通常记作C)。 (3)、密码方案是通过密码算法(Cryptography Algorithm)达到加密变换与解密变换目的的具体规则。用某种方法伪装明文以隐藏它的内容的过程称为加密(Encrtption,通常记作E),而把密文转变为明文的过程称为解密(Decryption,通常记作D)。 (4)、密钥(key,通常记作K)是唯一能控制明文与密文之间变换的关键。密钥是由使用密码体制的用户随机选取的,它通常是一随机字符串。 图3.1描述了明文P经过加密后变成密文C,然后再由密文C经过解密后得到明文P的过程。 明文 密文 密钥 加密算法 解密算法 图3.1 加密、解密全过程
3.2.1.2 密码体制的分类 密码体制的分类方法有很多,最常见的是分成以下两种: 对称密码体制(symmetric system):就是加密密钥和解密密钥相同,或者虽然不相同,但由其中的任意一个可以很容易的推出另一个。又称传统密码体制、秘密密钥体制或单钥密钥体制。如本书后面将介绍的DES就是采用对称密码体制的典型例子。 非对称密码体制(asymmetric system):加密密钥和解密密钥不相同,并且从一个很难推出另一个。又称公开密钥体制。公开密钥体制用一个密钥进行加密,而用另一个进行解密。其中的加密密钥可以公开,又称公开密钥(public key),简称公钥;解密密钥必须保密,又称私人密钥(private key),简称私钥。如本书后面将介绍的RSA就是采用非对称密码体制的典型。
3.2.2 传统密码技术 隐写术(steganography) 3.2.2 传统密码技术 隐写术(steganography) 隐写术是通过隐藏消息的存在来达到加密信息的目的。隐写术一词来源于希腊语,其对应的英文意思是“Covered writing”。 它的应用实例可以追溯到非常久远的年代。古希腊的斯巴达人曾将军事情报刻在普通的木板上,用石蜡填平,收信的一方只要用火烤热木板,融化石蜡后,就可以看到密信。被人们誉为历史学之父的古希腊历史学家希罗多德(Herodotus, 486—425),在其著作中讲述了这样一则故事:一个名叫Histaieus的人筹划着与他的朋友合伙发起叛乱,里应外合,以便推翻波斯人的统治。他找来一位忠诚的奴隶,剃光其头发并把消息文刺在头皮上,等到头发又长起来了,把这人派出去送“信”,最后叛乱成功了。
隐写术分为两种,技术隐写术和语义隐写术。 技术隐写术是将秘密传递的信息记录下来,隐藏在特定媒介中,然后再传送出去的一种技术。17世纪,英国的Wilkins(1614—1672)是资料记载中最早使用隐写墨水进行秘密通信的人。早期的隐写墨水是由易于获得的有机物(例如牛奶、果汁或尿)制成,加热后颜色就会变暗从而显现出来。后来随着化学工业的发展,在第一次世界大战中人们制造出了复杂的化合物做成隐写墨水和显影剂,使得隐蔽性更强。 语义隐写术则是将记录这个行为本身隐藏起来,信息由隐藏的“写”语言和语言形式所组成,一般依赖于信息编码。十六七世纪涌现了许多关于语义隐写术的著作,斯科特提出的扩展“AveMaria”码是一种典型的语义隐写方法。语义隐写主要提供两种类型的方法:符号码和公开代码。 符号码是以可见的方式,如手写体字或图形,隐藏秘密的书写。在书或报纸上标记所选择的字母,比如用点或短划线。此方法易于实现,但在公开信道传送伪装的消息时,需要双方事前的约定,不利于隐藏信息的发布。 公开代码的第二种类型就是利用虚码和漏格进行隐藏。隐藏消息的规则比较常见的有:“某个特定字符后的第几个字符”,比如每行的第一个字符,如中国古代的“藏头诗”等。漏格方法可以追溯到卡达诺(Cardano,1550年)时代,这是一种容易掌握的方法,但不足之处是双方需要相同的漏格,特别是战场上的士兵,使用时不太方便。
替代(substitution) 替代密码就是将明文字母表中的每个字符替换为密文字母表中的字符。这里对应密文字母可能是一个,也可能是多个。接收者对密文进行逆向替换即可得到明文。代替密码有四种表现形式: (1)单表代替 (2)多名码代替 (3)多音码代替 (4)多表代替
(1)单表代替 就是明文的一个字符用相应的一个密文字符代替,也叫循环移位密码。 最古老的代表是凯撒密码(Caesar cipher)。在这种方法中,a换成D,b换成E,c换成F……,z换成C。其字母映射如下: 于是caesar就变成了FDHVDU。
由恺撒密码我们可以推导出单表代替密码的映射关系可以表示为如下函数: 其中:p表示明文字母 n为字符集中字母的个数 k为密钥
如英文26个字母的映射表如下: 例如在恺撒密码中,k=3 对于明文P=caesar,有 F(c)=(2+3) mod 26=5=F F(a)=(0+3) mod 26=3=D F(e)=(4+3) mod 26=7=H F(s)=(18+3) mod 26=21=V F(a)=(0+3) mod 26=3=D F(r)=(17+3) mod 26=20=U 因此密文C=FDHVDU
除了恺撒密码,在其他的单表替代法中,有的字母表被打乱。比如,在字母表中首先排列出密钥中出现的字母,然后在密钥后面填上剩余的字母。如密钥是cipher,那么新的字母表映射如下: 这时对于明文P=caesar,有 F(c)=(2+3) mod 26=5=R F(a)=(0+3) mod 26=3=H F(e)=(4+3) mod 26=7=B F(s)=(18+3) mod 26=21=V F(a)=(0+3) mod 26=3=H F(r)=(17+3) mod 26=20=U 因此密文C=RHBVHU
在单表代替下字母的频度、重复字母模式、字母结合方式等统计特性除了字母名称改变以外,都未发生变化,依靠这些不变的统计特性就能破译。 单表替代是所有加密中最简单的方法,缺点很明显: 在单表代替下字母的频度、重复字母模式、字母结合方式等统计特性除了字母名称改变以外,都未发生变化,依靠这些不变的统计特性就能破译。
(2)多名码代替 就是将明文字母表中的字符映射为密文字母表中的多个字符。多名码简单代替早在1401年就由DuchyMantua公司使用。在英文中,元音字母出现频率最高,降低对应密文字母出现频率的一种方法就是使用多名码。
如下面的一个映射: 若明文P=bee 则密文C可以是ILL或ILM或ILN或IMM或IMN或INN
(3)多音码代替 就是将多个明文字符代替为一个密文字符。最古老的这种多字母加密始见于1563年由波他的《密写评价》(De furtiois literarum notis)一书。
如下面的一个映射: 若明文P=behg 则密文C=JMNN
(4)多表代替 即由多个简单代替组成,也就是使用了两个或两个以上的代替表。比如使用有5个简单代替表的代替密码,明文的第一个字母用第一个代替表,第二个字母用第二个表,第三个字母用第三个表,以此类推,循环使用这五张代替表。
著名的维吉尼亚(vigenere)密码就是多表代替密码,它以字母表移位为基础把26个英文字母进行循环移位,排列在一起,形成26×26的方阵,如表3.1所示。
实际使用时,选择一个词组作为密钥。加密过程就是以明文字母选择列,密钥字母选择行,两者的交点就是加密生成的密文字母。 如:选取K=sub,P= vigenere 得到C=NCHWHFJY 解密时相反,以密钥字母选择行,从中找到密文字母,密文字母所在列的列名即为明文字母。
易位(transposition) 易位密码,也称换位密码、排列组合密码,它最大的特点是不需对明文字母作任何变换,只需对明文字母的顺序按密钥的规律相应的排列组合后输出,然后形成密文。明文出现的字母也在密文中出现,只是位置不同,并不隐藏它们。 此种加密方法保密的程度较高,但其最大的缺点是密文呈现字母自然出现频率,破译者只要稍加统计即可识别属此类加密方法,然后采取先假定密鈅长度的方法,对密文进行排列组合,借助计算机的高速运算能力及常用字母的组合规律,也可以进行不同程度破译。
(1)列易位算法 首先选取一个不含重复字母的单词为密钥,写出密钥在字母表中的排列顺序,明文从第一列开始按列生成密文。 如明文P=“易位密码也称换位或排列组合密码”,选取密钥为“trans”。 加密过程为: 产生密文C=“合换易码排密位位也列码或密称组”
其解密过程是将密文C=“合换易码排密位位也列码或密称组”按密钥长度为列写出: 根据密钥及其在字母表中的次序 易位相应的列产生明文P=“易位密码也称换位或排列组合密码”。
(2)矩阵换位法 把明文中的字母按给定的顺序排列在一矩阵中,然后用另一种顺序选出矩阵的字母来产生密文。 如将明文P=“易位密码,也称换位密码。”按行排列在3×4矩阵中,如下所示:
给定一个置换 现在根据给定的置换,按第3列、第1列、第4列、第2列的次序排列如下: 得到密文C=“密易码位称,换也码位。密”
在这个加密方案中,密钥就是矩阵的行数m和列数n,即m×n=3×4,以及给定的置换矩阵 也就是k=(m×n,f)
其解密过程是将密文C=“密易码位称,换也码位。密”根据3×4矩阵,按行、按列的顺序排列如下: 再根据给定置换产生新的矩阵: 恢复明文P=“易位密码,也称换位密码。”
3.2.3 DES数据加密标准 数据加密标准DES(Date Encryption Standard)是迄今为止世界上最为广泛使用和流行的一种分组密码算法。它由IBM公司研制,于1977年被美国标准局NBS(National Bureau Of Standards,现在的美国标准技术协会,NIST)作为非机密数据的正式数据加密标准。DES是一种世界公认的较好的加密算法。自它问世20多年来,成为密码界研究的重点,经受住了许多科学家的研究和破译,在民用密码领域得到了广泛的应用,为全球贸易、金融等非官方部门提供了可靠的通信安全保障。 进入20世纪90年代以来,由于DES密钥长度不够,不断受到诸如差分分析、线性逼近分析等各种攻击威胁,使其安全性受到动摇。1994年最近一次对DES的评估认为它已没有安全感。于是,美国决定从1998年12月以后将不再使用DES,而使用称之为AES(Advanced Encryption Standard)的新加密标准。尽管如此,DES对于推动密码理论的发展和应用毕竟起了重大作用,对于掌握分组密码的基本理论、设计思想和实际应用仍然有着重要的参考价值。
Ⅰ 分组密码概述 分组密码(Block cipher),也称块密码,它是将明文消息经编码表示后的数字(通常是0和1)序列:m0,m1,…,mi,…,划分为若干固定长度为l的组(或块)m=(m0,m1,…,ml-1),各组分别在密钥k=(k0,k1,…,kt-1)(密钥长为t)的控制下转换成等长度的密文分别输出c=(c0,c1,…,cn-1)(长为n)。其本质仍是一个从明文空间M到密文分组C的映射,该映射由密钥确定。分组密码简化图示如图3.2: 其中,明文长度为l,密文长度为n。通常的分组密码算法取l=n,表明加密和解密的结构一样,便于简单的实现。若l>n,则称为带数据压缩的分组密码,易增加密文解密的难度;若l<n,则称为带数据扩展的分组密码,必然要增加密文存储和传输的代价。
一般情况下,对分组密码算法有如下的要求: 1、分组长度n足够大 当长度n较小时,分组密码和类似于古典的代替密码,仍然保留了明文的统计信息,给攻击者留下可乘之机;另外;也难以抵抗穷举搜索的攻击。 2、密钥空间足够大 分组密码的密钥所确定的密码变换只是所有置换中的极一小部分。如果这一部分不够大,攻击者可以有效的通过穷举密钥,确定所有的置换。 3、密码变化必须足够复杂 目的是使攻击者除了穷举法攻击以外,找不到其他简洁的数学破译方法。为了便于实现和分析,在实践中经常采取以下两个方法来达到这个要求:(1)将大的明文分组分成几个小段,分别完成各个小段的加密置换,最后进行并行操作,达到使总的分组长度足够大。这样的做法有利于对密码的实际分析和评测,以保证密码算法的强度。(2)采用乘积密码掩盖。乘积密码就是以某种方式连续执行两个或多个密码变换。例如,设有两个子密码变换T1和T2,则先以T1对明文进行加密,然后再以T2对所得结果进行加密。其中T1的密文空间与T2的明文空间相同。如果得当的话,乘积密码可以有效的掩盖密码变化的弱点,构成比其中任意一个密码变换强度更高的密码系统。
Ⅱ DES算法详述 DES是一种分组密码,它主要采用替换和移位的方法加密。它用56位密钥对64位二进制数据块进行加密,每次加密可对64位的输入数据进行16轮编码,经一系列替换和移位后,输入的64位原始数据转换成完全不同的64位输出数据。DES是一个对称密码体制,加密与解密使用同一密钥与同一算法,它所有的保密性均依赖于密钥。 DES算法大致可以分成四个部分: 初始置换 迭代过程 逆置换 子密钥生成
整个算法的主流程图如图3.3 64位数据区组输入L0,R0 初始换位 (IP) 32位 L0 R0 K1 f L1=R0 R1=L0 f(R0,K1) K2 L2=R1 R2=L1 f(R1,K2) Ki L15=R14 R15=L14 f(R14,K15) K16 L16=R15 R16=L15 f(R15,K16) 逆初始换位IP-1 64位数据区组输出 图3.3 DES算法主流程图 整个算法的主流程图如图3.3
1、初始置换IP 把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,按表3.2的置换规则进行换位。 表中数字的含义是将输入的第58位换到第一位,第50位换到第2位,……,依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50…D8;R0=D57D49…D7。
2、迭代过程 每个迭代过程实际上包括四个独立的操作。首先是右半部分由32位扩展为48位。然后与密钥的某一形式相结合,其结果被替换为另一结果,同时其位数又压缩到了32位。这32位数据经过置换再与左半部分相加,结果产生新的右半部分。 图3.4为DES一次迭代的运算过程(图中的虚线框表示f函数,图中右面一半为子密钥的产生过程)。
DES算法的安全性关键在于非线性函数f的性质。DES算法中,函数f以长度为32位的比特串作为输入,产生的中间结果为48位,并在最终产生长度为32位的比特串作为输出。把图3-4中所示的函数f单独用图3.5表示出来。
(1)扩展置换 从图3-5中,可以看到函数f的执行过程如下: 函数f以前一轮迭代的结果Ri-1作为输入,首先根据一个固定的扩展函数E(也称为E盒)扩展成长度为48的比特串,其中有16个比特出现了两次。 具体来说,扩展函数E是以如下方式对Ri-1中的32个比特进行扩展、排列的: 扩展函数E对32位明文按4位分组,每个小分组中的4位将全部输出作为输出的6位分组(每个小分组被扩展函数E扩展为6位的小分组)的中间四位而6位分组的第1位与第6位(位0与位5)分别由相邻的两个4位小分组(其中第1个小分组的左侧相邻分组为最后一个小分组)的最外面两位扩散进入到本分组产生。图3.6以第1个小分组(第1位至第4位)为例,给出了扩展函数E的工作过程。
把输出位和输入位对应关系列成一个表格(表3 把输出位和输入位对应关系列成一个表格(表3.3),它表示了输出分组中各位在输入分组中的位置。例如,输出分组的第4位是原来输入分组中的第3位,而输出分组的第30位与第32位都是输入分组的第21位。 这样,当明文的右半部分32位Ri-1经过扩展函数E后,将扩展成长度为48位的数据,它将与长度同为48位的子密钥进行运算。
(2)与子密钥异或 (3)S盒代替 函数f将扩展置换得到48位输出与子密钥Ki进行异或(按位模2加)。 DES算法共有8个S盒(这样,每一个分组将对应于一个S盒进行代替运算:分组1由S盒1操作,分组2由S盒2操作,如此等等),每个S盒各不相同,但所有的S盒都具有6位的输入,其输出都为4位。 DES算法的每一个S盒都是一个4行(行0~行3)×16列(列0~列15)的表,表中每一项都是一个4位的数据。S盒根据6位输入,确定替代数据的位置,然后将该位置的4位数据作为输出用以替换输入的6位数据。
具体替代方式我们可以描述如下: 将S盒的6位输入定义为 a1 a2 a3 a4 a5 a6 。将 a1 a6 组成一个2位二进制数,对应着表中的行号;将 a2 a3 a4 a5 组成一个4位二进制数,对应着表中的列号;交叉点的数据就是该S盒的输出。 例如:第5个S盒的输出为110011,第1位和第6位的组合为11(转换为十进制值等于3),第2位至第5位的组合为1001(转换为十进制值等于9)。那么,它对应的就是第5个S盒的第3行、第9列(行、列的记数均从0开始)。查表可知对应的数值为15(转换为二进制值等于1111),于是1111代替了110011,成为S盒的4位输出。
表3.4 给出了全部的8个S盒。 S盒是函数f的核心所在,同时也是DES算法的关键步骤。除S盒外,DES的其它运算都是线性的,易于分析,而S盒是非线性的,它决定了DES算法的安全性。 48位的比特串(分为8个6位分组)在经过8个S盒进行代替运算后,得到8个4位的分组,它们重新合在一起形成一个32位的比特串。这个比特串将进行下一步运算:P盒置换。
(4)P盒置换 P盒置换是将S盒输出的32位的比特串根据固定的置换P(也成为P盒)置换到相应的位置,它也称为直接置换(straight permutation)。 表3.5给出了置换P。 表3.5 的含义可以描述如下:在32位的比特串中,第16位置换到第1位,第7位置换到第2位,第4位置换到第31位,…,第25位置换到32位。 P盒置换运算后得到的输出即为函数(Ri-1,Ki)的最终结果。
3、逆置换IP-1 经过16次迭代运算后。得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置的逆运算,例如,第1位经过初始置换后,处于第40位,而通过逆置换,又将第40位换回到第1位,其逆置换规则如表3.6所示:
4、密钥的产生 在DES算法中,每一轮迭代运算都使用一个子密钥,子密钥产生的流程图如图3.7所示。K是长度为64位的比特串,其中56位是密钥,8位是奇偶校验码,分布在8、16、24、32、40、48、56、64比特位置上,目的是用来检错,可在8位组中检查单个错误。实际上,在密钥编排的计算中只用56位,不包括这8位。
子密钥的产生过程分为: 置换选择1(pc-1) 循环左移 置换选择2(pc-2) 分别产生16个子密钥
(1)置换选择1(pc-1) 对56位密钥输入按表3.7进行重新编排。 将前28位作为C,后28位作为D。即C0=k57k49k41…k52k44k36,D0=k63k55k47…k20k12k4
(2)循环左移计算 对16轮的计算模型描述如下: LSi表示循环左移一个或两个位置,它取决于i值变化的次数,当i=1、2、9、16时,则左移一个位置,其余左移两个位置,如表3.8所示。 比如,对应不同次数,左移变化情况如下: i=1,C1=c1c2…c27c28,D1=d1d2…d28 i=2,C2=c2c3…c28c1,D2=d2d3…d28d1 i=3,C3=c4c5…c28c1c2c3,D3=d4d5…d28d1d2d3 其他依次类推。
(3)选择置换2(pc-2) 其作用是删除每次移位后C中第9、18、22、25位和D中第7、9、15、26比特位,其余比特按表3.9置换后送出48位比特,作为第i次迭代的子密钥ki使用。 以上介绍了DES算法的加密过程。DES算法的解密过程是一样的,区别仅仅在于第一次迭代时用子密钥K15,第二次K14、......,最后一次用K0,算法本身并没有任何变化,不再详述。
Ⅲ DES安全性分析 DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。DES算法仅使用最大为64位的标准算术和逻辑运算,优点是运算速度快,密钥生产容易,适合于在当前大多数计算机上用软件方法实现,同时也适合于在专用芯片上实现。比如现在热卖的爱国者移动存储加密王,就是采用DES实时运算法则的硬件加密芯片。 但是DES的密钥太短(56位),影响了它的保密强度。DES的前身,IBM的Lucifer密码体制具有128比特的密钥长度。DES的最初提案也有64比特的密钥长度,但后来被减少到56比特。IBM声称,这个减少的原因是必须在密钥中包含8位奇偶校验位,这就意味着64比特的存储只能包含一个56比特的密钥。 对于56比特的密钥长度来说,一共有256种可能的密钥,也就是大约7.2×1016种密钥。从表面上看,穷举式攻击似乎不现实。如果假定平均有一半的密钥空间需要搜索,则一台每微秒完成一次DES加密的机器将要花费1000年的时间才能破译这个密码。 然而,每微秒一次加密的假设过分保守。早在1977年,Diffie和Hellman就设想有一种技术可以制造出具有100万个加密设备的并行机,其中的每一个设备都可以在一微秒之内完成一次加密,这样平均搜索时间就减少到10小时。
一个对DES的弱点更引人注目的演示是RSA实验室所发起的一个破解密钥的比赛。比赛提供1万美元的奖金,要求在给定了密文和部分明文的情况下找到DES密钥,其中明文开始的三个分组包含了24个字符的短语“the unknown messagr is:”。RSA在1997年1月29日发布竞赛。一个独立顾问Rocke Verser响应了这个比赛,他编了一个穷举式程序并通过internet做了发布。这个项目受到很多密码爱好者的响应,最后发展到7万个系统。每个计算机自愿者加入后,项目组就为这台计算机分配一部分DES密钥空间供它检验。项目从1977年2月18日开始,96天后找到了正确的密钥,这时大约已经搜索了四分之一的可能密钥。这个比赛显示了分布式个人计算机在对付艰难的密码分析问题时的威力。也证实了DES的强度是有限的。 此外,由于DES算法完全公开,其安全性完全依赖于对密钥的保护,必须有可靠的信道来分发密钥。如采用信使递送密钥等。因此,它不适合在网络环境下单独使用。 虽然研制替代DES的新的密码算法被提上议程,但确定一种新的加密法是否真的安全是极为困难的,何况DES的密码学缺点只是密钥长度相对比较短,所以人们并没有放弃使用DES,而是想出了一个解决其长度方法,即采用三重DES。这种方法用两个密钥对明文进行三次加密。假设两个密钥是K1和K2,第一步用密钥K1进行DES加密,第二步用K2对步骤1结果进行DES加密,第三步用步骤2的结果使用密钥K1进行DES加密。
3.2.4 RSA密码体制 上一节讨论的DES密码体制是对称密钥密码体制。使用对称密钥密码体制进行秘密通信时,任意不同两个用户之间都应该使用互不相同的密钥。这样,如果一个网络中有n个用户需要彼此通信,那么将共需要n(n-1)/2个密钥(其中,每人需要保管n-1个密钥),假设n=1000,则,如此巨大的密钥量,在密钥管理、分配、更换等都将是十分繁重的工作。另外,在网络大力普及的今天,互不相识的两个人要进行通信,如电子商务活动需要对身份验证,电子签名,不仅要解决保密问题,还必须解决认证问题,对于这些新要求,对称密码算法是比较难实现的。 1976年,Diffe和Hellman在一篇名叫“New direction in cryptography”(密码学的新方向)的论文中提出了双钥密码的新型密码体制,把加密密钥和解密密钥分割开来,而无法由一个推出另一个,使得不仅可以公开密码算法,而且加密密钥也可以公开,开创了公开密钥密码体制,为密码学研究提出了新的方向。
Ⅰ 公钥密码体制 公开密钥密码编码学的发展是整个密码编码学历史上最大的而且也是唯一真正的革命。从最初一直到现代,几乎所有密码编码系统都建立在基本的替代和置换工具的基础上。即使是最有名的DES,虽然代表了重要的进展,也仍然依赖于替代和置换这样的基本工具。 公开密钥密码编码学则与以前的所有方法截然不同。一方面公开密钥算法基于数学函数而不是替代和置换;更重要的是,公开密钥密码编码学是非对称的,它用到两个不同的密钥,而对称的常规加密则只使用一个密钥。使用两个密钥对于保密通信、密钥分配和鉴别等领域都有着深远的影响。例如。对于网上的大量用户,可以将加密密钥用电话簿的方式印出。如果某用户想与另一用户进行保密通信,只需从公钥簿上查出对方的加密密钥,用它对所传送的信息加密发出即可。对方收到信息后,用仅为自己所知的解密密钥将信息脱密,了解报文的内容。由此可看出,RSA算法解决了大量网络用户密钥管理的难题。
图3.8给出了一般公钥密码体制原理示意图。 其中,E(eB,m)表示使用用户B的公开密钥eB对明文m进行加密,D(dB,c)表示用户B使用自己保存的秘密密钥dB对密文c进行解密。 公开密钥密码的加密变换E(eB,m)与解密变换D(dB,c)应满足下列要求: (1)D(dB,c)是E(eB,m)的逆变换,即对于任意明文m,均有D(dB,c)=D(dB,E(eB,m))=m; (2)在已知加密密钥eB时,E(eB,m)的计算不难;在已知解密密钥dB时,D(dB,c)的计算也不难; (3)如果不知道dB,那么即使知道eB、具体的加密与解密算法过程以及密文c,确定明文m的计算也是不可行的。 我们可以这样来想,例如你有个信箱(物理信箱),开着一个缝隙(公钥),大家都能往里塞东西,但是一旦塞进去,那可不是大家都能取到的,只有拥有信箱钥匙(私钥)才能得到。公钥就这样,不要担心它多难理解。
Ⅱ RAS算法详述 RSA算法是由麻省理工学院的Ron Rivest,Adi Shamir和Len Adleman于1977年研制并于1978年首次发表的一种算法,DES是用数论构造的,也是迄今为止理论上最为成熟完善的公钥密码体制。 数学上的单向陷门函数的特点是一个方向求值很容易,但其逆向计算却很困难。许多形式为Y=f(x)的函数,对于给定的自变量x值,很容易计算出函数Y的值;而由给定的Y值,在很多情况下依照函数关系f(x)计算x值十分困难。例如,两个大素数p和q相乘得到乘积n比较容易计算,但从它们的乘积n分解为两个大素数p和q则十分困难。如果n为足够大,当前的算法不可能在有效的时间内实现。 RSA算法正是基于这种理论,为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。
RSA的演算方法是: (1)用户选择2个足够大的保密质数q、p(一般为100位以上十进数)。 (2)令n=pq,n是公开的,从n分解出q和p是极其困难的。 n的欧拉函数:Φ(n)=(p-1)(q-1),Φ(n)小于等于n,并与n互质。 (3)选择一个相对大的整数e作为加密指数,使e与Φ(n)互质。 (4)解恒等方程:de≡1 mod Φ(n),求出解密指数d。 (5)设m、C分别为要加密的明文和被加密的密文(m、C小于n),则加密运算为:C=E(m)=me mod n,解密运算为:M=D(C)=Cd mod n。 通过以上算法,每个用户都拥有一组密钥(e、d、n),其中(e、n)为公开密钥(public key),可以公开在手册上,e为加密指数;(d、n)为私人密钥(private key),是用户保密的私钥;p、q消毁。
举例如下: (1)选两个质数:p=47,q=71(为了计算方便,只选取十位数,实际加密时应该选取100位以上十进数的质数) (2)计算:n=pq=47×71=3337,Φ(n)=(47-1)×(71-1)=3220 (3)e必须与Φ(n)互质,选e=79 (4)计算:ed=1 mod Φ(n)=1 mod (3220),得出d=1019,这是因为1019×79=3220×25+1。 然后将e=79、n=3337公布,d=1019保密,p、q消毁即可。 如有一明文m=6882326879666683 加密过程如下: 先将m分割成多块:m1=688,m2=232,m3=687,m4=966,m5=668,m6=3 将第1块m1加密后得密文C1=m1e(mod3337)=688×79(mod3337)=1570 依次对各区块加密后得密文C=15702756271422762423158 解密过程如下: 对C1解密得m1 M1=C1d(mod3337)=15701019(mod3337)=688 依次解密得原文M。
Ⅲ RSA安全性分析 RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。 随着计算机计算能力的不断提高,原来被认为是不可能分解的大数已被成功分解。例如,1977年,RSA的三个发明者在《科学美国人》Martin Gardner的数学游戏专栏上印了一个密码并对该刊的读者提出了破译该密码的挑战。他们悬赏100美元给可以提供明文的人,他们估计要得到正确的结果至少需要4亿亿年。可是,1994年4月,一个通过internet进行合作的小组仅仅在工作了8个月之后就领到了这笔奖金。这项挑战使用了一个129个数字或者大约428比特大小(长度为n)的公开密钥。 对较大密钥的攻击威胁的另一方面还来自因子分解算法的不断完善。分解算法过去都采用二次筛法,如对RSA-129的分解。而事实上,一个新算法,广义数域筛GNFS(Generalized Number Field Sieve)的分解速度更快,该算法在分解RSA-130时所作的计算仅比RSA-129多10%。将来或许还有更好的分解算法。因此在使用RSA算法时对其密钥的选取要大。估计在未来一段比较长的时期,密钥长度介于1024比特至2048比特之间的RSA会是安全的。
3.2.5 单向散列函数HASH 前面我们介绍的加密技术,如DES、RSA算法,都是抗击消息受到被动攻击(被窃听、信息量分析等)的一种技术,即对于接收到的消息,我们不清楚它是否泄露、是否完整,只关心密码算法及密钥的强度,以保证在信息有效期内即使被攻击也安全。那么,有没有这样一种技术,即不仅可以验证消息的真实性,还能验证信息的完整性呢?答案是肯定的,单向散列函数就可以满足我们的这种抗击主动攻击需求。 HASH函数,又称杂凑函数,是在信息安全领域有广泛和重要应用的密码算法,它是一个从明文到密文的不可逆函数,也就是说,只能加密不能还原。单向散列函数H作用于任意长度的信息M,返回一固定长度的散列值(也称摘要信息)h=H(M)。
好的单向散列函数必须具有以下特性: 1、计算的单向性:给定M和H,求h=H(M)容易,但反过来给定h和H,求M=H-1(h)在计算上是不可行的。 2、弱碰撞自由:给定M,要寻找另一信息M′,满足H(M′)=H(M)在计算上不可行。 3、强碰撞自由:要寻找不同的信息M和M′,满足H(M′)=H(M)在计算上不可行。 HASH通常应用于只需要加密、不需要解密的特殊场合:如验证数据的完整性、口令表的加密、数字签名、身份认证等。当我们使用HASH函数构造数据的“指纹”时(用散列函数对数据生成散列值并保存),一旦数据改变(被主动攻击),即使只更动一个字母,对应的压缩信息也会变为截然不同的“指纹”,这就保证了经过处理信息的唯一性。例如在口令加密的场合,系统中保存的是口令的散列值,当用户输入口令以进入系统时,系统重新计算用户输入口令的散列值并与保存的数值比较。只有两者相同,才授权用户进入系统。这就避免了以明文形式保存口令,使系统的安全性大大加强。
Ⅰ 消息摘要算法MD5 MD5的全称是“Message-Digest Algorithm 5(信息-摘要算法)”,它是由MD2、MD3、MD4发展而来的一种单向函数算法(也就是HASH算法),由国际著名的公钥加密算法标准RSA的第一设计者R.Rivest在1991年开发出来的技术上更为趋近成熟的一种算法。MD5的最大作用在于,让大容量信息在用数字签名软件签署私人密匙前被“压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数),关键之处在于——这种“压缩”是不可逆的。不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。 MD5的典型应用是对一段信息(message)产生信息摘要(message-digest),以防止被篡改。这是因为MD5可以为任何文件(不管其大小、格式、数量)产生一个独一无二的“数字指纹”,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。 我们常常在某些软件下载站点的某软件信息中看到其MD5值,它的作用就在于我们可以在下载该软件后,对下载回来的文件用专门的软件(如Windows MD5 Check等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。
MD5还广泛用于加密和解密技术上。比如用户的密码是以MD5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。 天下没有不透风的墙,任何一种算法都会有其漏洞,即使是目前大行其道的MD5,当对漏洞的研究发展到其能够被有效利用时,则标志着该算法灭亡的时候到了。在2004年8月美国加州圣巴巴拉召开的国际密码学会议(Crypto’2004)上,来自中国山东大学王小云教授的一篇关于“破译MD5、HAVAL-128、MD4以及RIPEMD-128算法”的报告引起了轰动,报告中提到的新破译方法几乎标志着世界通信密码标准——MD5堡垒的轰然倒塌。但尽管MD5被淘汰已经成为必然,不过鉴于它开源以及免费的特性,而且目前还没有真正有效的快速破解方法,因此它还将继续在历史舞台活跃一段时间。
Ⅱ 报文鉴别码MAC MAC(message authentication code),也称为密码检验和,消息认证码,是指满足某种安全性质的带密钥的HASH函数。因此,它的安全性质与普通的单向散列函数是有明显区别的。尽管两者具有相同的散列函数结构,但引入MAC后,只有拥有密钥的才能鉴别给定的散列函数。这就能保证有时候不想对原文件进行加密(如发布通知、公告等),只要求能够确保传送文件不被修改,或修改了也能识别。如果使用的不是MAC而是普通的单向散列函数,那么任何人都可以修改文件以至造成产生新的散列函数而不可辩识的后果。 构造报文鉴别码是用一个密钥生成的一个小的数据块追加在报文的后面。这种技术是假定通信双方(例如用户A和用户B)共享一个密钥K。当用户A向用户B发送报文M时,就根据此密钥和报文计算出报文鉴别码MAC=f(K,M),这里f就是加密算法的某一函数。此报文的鉴别码一起传送到用户B。用户B用收到的报文(不包括报文鉴别码),使用同样的密钥K,再计算一次报文鉴别码,并与收到的报文鉴别码相比较。如一致,则鉴别此报文是真的;反之,报文就不是用户A所发,或者即使是A所发,也被篡改过。这样就可以最大限度的保证通信安全。 值得注意的是,生成报文鉴别码的过程与加密过程十分相似。但区别是,鉴别算法不进行反向的计算。也就是说,对MAC不进行类似加密过程的反向计算。由于鉴别函数的这一特点,鉴别是较难被攻破的。
3.2.6 密码技术的未来 尽管双钥密码体制比单钥密码体制更为可靠,但由于计算过于复杂,双钥密码体制在进行大信息量通信时,加密速率仅为单钥体制的1/100,甚至是1/1000。正是由于不同体制的加密算法各有所长,所以在今后相当长的一段时期内,各类加密体制将会共同发展。而在由IBM等公司于1996年联合推出的用于电子商务的协议标准SET(Secure Electronic ransaction)中和1992年由多国联合开发的PGP技术中,均采用了包含单钥密码、双钥密码、单向杂凑算法和随机数生成算法在内的混合密码系统的动向来看,这似乎从一个侧面展示了今后密码技术应用的未来。 在单钥密码领域,一次一密被认为是最为可靠的机制,但是由于流密码体制中的密钥流生成器在算法上未能突破有限循环,故一直未被广泛应用。如果找到一个在算法上接近无限循环的密钥流生成器,该体制将会有一个质的飞跃。近年来,混沌学理论的研究给在这一方向产生突破带来了曙光。此外,充满生气的量子密码被认为是一个潜在的发展方向,因为它是基于光学和量子力学理论的。该理论对于在光纤通信中加强信息安全、对付拥有量子计算能力的破译无疑是一种理想的解决方法。 保密与窃密就像矛与盾一样形影相随,它们之间的斗争已经持续了几千年,任何一种新的密码技术的出现,必然会有相应的解密方法。当然,或许随着科技的进一步发展,通过在密码算法设计的新思路、信息保护的新思路等方面的突破,未来的加密技术将成为这场斗争的终结者。
3.3 密钥管理 密钥管理技术主要处理密钥从产生到最终销毁整个过程中的有关问题,包括密钥的产生、存储、装入、分配、保护、丢失、销毁等内容,它的主要任务是保证在公用数据网上安全地传递密钥而不被窃取。 密钥是密码系统中的可变部分。现代密码体制要求加密算法是可以公开评估的,这个密码系统的安全性并不取决于对密码算法的保密或者是对加密设备等的保护,尽管这样有利于提高整个密码系统的安全程度,但这种提高只是相对而言的)。这时,决定这个密码体制安全性的因素将是密钥的保密性;密码算法可以公开,密码设备可以丢失,但它们都不危及密码体制的安全性;但一旦密钥丢失,攻击者将会有可能窃取信息。在考虑密码系统的设计时,需要解决的核心问题是密钥管理问题,而不是密码算法问题。
3.3.1 密钥管理基础知识 Ⅰ 密钥管理的要求 密钥管理是一门综合性技术,它除了技术性的因素之外,还与人的因素,例如密钥的行政管理制度以及人员的素质密切相关。管理不好,密钥同样可能被无意识地泄露,并不是有了密钥就高枕无忧,任何保密也只是相对的,是有时效的。 为此,对密钥管理系统一般有以下具体要求: (1)密钥难以被非法窃取; (2)在一定条件下即使窃取了密钥也没用; (3)密钥的分配和更换过程在用户看来是透明的,用户不一定要亲自掌握密钥。 从管理角度来说,密钥管理的基本要求是: (1)脱离密码设备的密钥数据应绝对保密; (2)密码设备内部的密钥数据绝对不外泄,一旦发现有攻击迹象,应立即销毁密钥数据; (3)密钥使命完成,应彻底销毁、更换。
Ⅱ 密钥管理的组织结构 适应于对密钥管理系统的要求,现有的计算机网络系统与数据库系统的密钥管理的设计大都采用了层次化的密钥结构。 Ⅱ 密钥管理的组织结构 适应于对密钥管理系统的要求,现有的计算机网络系统与数据库系统的密钥管理的设计大都采用了层次化的密钥结构。 层次化的密钥结构与整个系统的密钥控制关系是对应的。按照密钥的作用与类型及它们之间的相互控制关系,可以将不同类型的密钥划分为一级密钥、二级密钥、……、n级密钥,从而组成一个n层密钥系统,如图3.9所示: 其中,系统使用一级密钥K1通过算法f1保护二级密钥(一级密钥使用物理方法或者其他的方法进行保护),使用二级密钥通过算法f2保护三级密钥,以此类推,直到最后使用n级密钥通过算法fn保护明文P。随着加密过程的进行,各层密钥的内容动态变化,而这种变化的规则由相应层次的密钥协议控制。
最底层的密钥Kn也称为工作密钥,或称数据加密密钥,它直接用于对明文数据的加、解密;所有上层密钥可称为密钥加密密钥,它们用于保护数据加密密钥或者其他低层的密钥加密密钥;最高层的密钥K1也叫做主密钥,一般来说,主密钥是整个密钥管理系统的核心,应采用最保险的方式来进行保护。 平时,数据加密密钥(工作密钥)并不存在,在进行数据的加、解密时,数据加密密钥将在上层密钥的保护下动态地产生;数据加密密钥在使用完毕后,将立即清除,不再以明的形式出现在密码系统中。 通常,我们可以以相对的概念来理解层次化的密钥结构;某一层密钥Ki相对于更高层的密钥Ki-1是工作密钥,而相对于低一层的密钥Ki+1是密钥加密密钥。 层次化的密钥结构意味着以密钥来保护密钥,这样,大量的数据可以通过少量动态产生的数据加密密钥(工作密钥)进行保护,而数据加密密钥又可以由更少量的、相对不变(使用期较长)的密钥加密密钥来保护,依此类推,最后,第二层的密钥加密密钥可以由主密钥进行保护,从而保证了除了主密钥可以以明文的形式存储在有严密物理保护的主机密码器件中,其它密码则以加密后的密文形式存储,这样,使密钥的安全性大大提高,也为密钥管理自动化带来了方便。
Ⅱ 密钥的种类 密钥分为数据加密密钥(作用于明文数据对象)和密钥加密密钥(作用于数据加密密钥及其它密钥加密密钥对象)。从具体的功能角度来看,在一般的密码系统中有以下几种密钥: (1)基本密钥(base key) (2)会话密钥(session key) (3)密钥加密密钥(key encrypting key) (4)主机主密钥(host master key)
(1)基本密钥(base key) 基本密钥也称为初始密钥(primary key),是由用户选定或由系统分配给用户的、可在较长时间内(相对于会话密钥)由一对用户(例如密钥分配中心与某一用户之间,或两个用户之间)所专用的秘密密钥。在某种程度上,基本密钥还起到了标识用户的作用。基本密钥也可以称为用户密钥(user key)。 (2)会话密钥(session key) 会话密钥是在一次通信或数据交换中,用户之间所使用的密钥。会话密钥可由通信用户之间进行协商得到。它一般是动态地、仅在需要进行会话数据加密时产生,并在使用完毕后立即进行清除掉的(当然也可以由用户双方进行预先约定)。 会话密钥可以使我们不必太频繁地更改基本密钥,而通过密钥分配或密钥协商的方法得到某次数据通信所使用的数据加密密钥,这样我们可以做到一报一密,从而大大提高通信的安全性,并方便密钥的管理。 (3)密钥加密密钥(key encrypting key) 密钥加密密钥一般是用来对传送的会话密钥或文件秘密密钥进行加密时所采用的密钥,也可以称为二级密钥。密钥加密密钥所保护的对象是实际用来保护通信或文件数据的会话密钥或文件加密密钥。在通信网中,一般在每个节点都分配有一个这类密钥,同时,为了安全,各节点的密钥加密密钥应互不相同。节点之间进行密钥协商时,应使用各节点的密钥加密密钥进行。 (4)主机主密钥(host master key) 主机主密钥对应于层次化密钥结构中的最高层次,它是对密钥加密密钥进行加密的密钥。因此,主机主密钥应受到严格的保护。
3.3.2 密钥生成 密钥生成是密钥管理的基本要件,对于一个密码体制,如何产生好的密钥是很关键的,密钥选择不当,即使算法再强,其安全性也是不敢恭维的。例如,以DES作为说明,如果我们只使用英文字母(包括大小写)与数字作为密钥,则可能的密钥(即密钥空间的大小)只有2.2×1014个。它仅仅是原来DES可能的密钥空间的三百多分之一,这样对于穷举攻击是很有利的。 那么,什么样的密钥才叫做安全?怎样产生安全的密钥?下面将逐一为你描述。
Ⅰ 安全密钥产生的几个特性 密钥产生方式可由人工生成,也可由机器自动生成,不管怎样,产生的密钥必须满足伪随机特性的统计检验。一般我们把满足下面几个条件的密钥称为比较安全的密钥: 真正随机等概,如采取扔色子、掷硬币等取法; 避免弱密码的应用(主要是单钥系统); 双钥系统应选择数学关系巧、难的方法产生密钥; 选用长度适中、安全易记且难猜中的密钥; 适当采用杂凑技术,能将长密钥变换成伪随机数串(64bit)。
Ⅱ 密钥长短安全性 密码系统的安全性主要依赖于密钥,而不仅仅依赖于算法的强壮度。选择密钥长度既不能太长也不能太短。原因很简单,一旦选择过长,必须为密钥变长付出所需计算时间的代价。如果选择太短,又敌不过穷举搜索等攻击。表3.10给出了不同对象空间的密钥数和对应的穷举搜索时间(假设每秒测试一百万次)。 按照现在计算机发展的速度和计算能力分析,每2~3年左右,穷举搜索能力也将要翻一番。因此在通行字之类密码中,特别是口令密码,应尽量避免遭受字典式攻击(dictionary attack),如本人名、首字母、帐户名、数据库缩写名等作口令极易受攻击。
Ⅲ 密钥产生方式 主机主密钥。属控制其它加密密钥的密钥,对应于层次化密钥结构中的最高层次,一般它的密钥量很小,但作为整个密码系统的核心,应保证完全随机性、不可重复性和不可预测性。故宜用掷硬币、噪声产生器等方法产生。 密钥加密密钥。可由机器自动产生或由操作员选定。一般可用安全算法、伪随机数产生器、电子学噪声源等产生。典型的有在主机主密钥控制下,由X9.17安全算法(美国国家标准协会ANSI采用)生成。 会话密钥、工作密钥。在密钥加密密钥的控制下,通过某种安全算法动态产生。例如用初始密钥控制非线性移位寄存器,或用密钥加密密钥控制DES算法产生。
3.3.3 密钥分配 要使常规加密有效进行,信息交互的双方必须共享同一个密钥,并且这个密钥还要防止被其他人获得。另外我们还希望密钥经常更换,以便在攻击者知道密钥的情况下使得泄露的数据量有个限制。因此,任何一个密码编码系统的强度都依赖于密钥分配技术。 密钥分配技术是在不让其他人看到密钥的情况下将一个密钥传递给希望交换数据的双方的方法。下面我们简单介绍些关于密钥分配的基本知识。
Ⅰ 密钥分配基本方法 例如有两个用户A和B,想获得共享密钥的方法有以下几种: 1、密钥由A选取并通过物理手段发送给B。 Ⅰ 密钥分配基本方法 例如有两个用户A和B,想获得共享密钥的方法有以下几种: 1、密钥由A选取并通过物理手段发送给B。 这是最简单的一种密钥分配方案。 2、密钥由第三方选取并通过物理手段发送给A和B。 在通信网中,若只有个别用户想进行保密通信,密钥的人工发送还是可行的。但假设在某机构中有100个人,如果他们任意两人之间可以进行秘密对话,那么总共需要多少=4950个密钥,每个人需要知道99个密钥;如果机构的人数是1000、10000人或更多,这种办法就显然过于愚蠢了,管理密钥将是一件可怕的事情。 3、如果A和B事先已有一密钥,则其中一方选取新密钥后,用已有的密钥加密新密钥并发送给另一方。 对于这种方法,攻击者一旦获得一个密钥就可获取以后的密钥,而且用这种方法对所有用户分配初始密钥时,代价仍然很大。 4、如果A和B与第三方C分别有一保密通道,则C为A和B选取密钥后,分别在两个保密信道上发送给A和B。 这种方法比较常用,其中的第三方通常是一个负责为用户分配密钥的密钥分配中心。这时每一用户必须和密钥分配中心有一个共享密钥,称为主密钥。通过主密钥分配给一对用户的密钥称为会话密钥,用于这一对用户之间的保密通信。通信完成后,会话密钥既被销毁。如上所述,如果用户数为n,则会话密钥数为个,但主密钥数却只需n个,所以主密钥可通过物理手段发送。
一种典型的分配方案如图3.10所示:
假设用户A希望与用户B建立一个逻辑连接,并且需要一次性的会话密钥来保护经过这个连接传输的数据。A和B都与密钥分配中心KDC(key distribution center)有一个共享的主密钥KA和KB。密钥分配步骤如下: 1、A向KDC发出请求,要求得到一个用来保护他与B之间逻辑连接的会话密钥。这个报文包括A和B的标识以及一个对于这次交互而言的唯一的标识符N1,N1为一次性随机数,也叫作现时,它可以是一个时间戳、一个计数器或者一个随机数,对它的最低要求是它在每个请求中是不同的。另外,为了防止冒充,应使敌手对N1难以预测,因此用随机数最为合适。 2、KDC用一个经过KA加密的报文作为响应。因而,A是唯一可以成功收到这个报文的实体,而且A知道这个报文来自KDC。这个报文包含给A的两项内容: 用于会话的一次性密钥KS。 原来的请求报文,包括一次性随机数N1,以便使A将收到的应答与发出的请求相比较,看是否匹配。 因而,A可以证实它原来的请求在KDC收到之前没有被篡改,并且这不是一个以前请求的重放。 另外,这个报文还包括给B的两项内容: 用于会话的一次性密钥Ks。 A的标识符(例如他的网络地址)IDa。 这两项内容是用KB进行加密的,它们被发送到B来建立连接并证实A的身份。
3、A把会话密钥存储起来以便用于后续的会话,并将KDC发送给B的信息即EKB[KS||IDA]转发给B。因为这个信息是用Kb加密的,它对窃听有了防护。B现在知道了会话密钥(Ks),知道了通信的另一方是A(从IDa得知),并且知道了信息是从KDC发出的(因为它是用Ekb加密的)。 这时一个会话密钥就安全地传送给了A和B,他们就可以开始受到保护的信息交互了。然而还有两个步骤是必要的: 4、B使用为加密新造的会话密钥发送一个一次性随机数N2给A。 5、A也使用KS响应一个f(N2),其中f是一个对N2进行某种变换的函数(例如加1)。 这些步骤使得B确信它原来所收到(步骤3)的报文不是一个重放。 注意实际的密钥分配过程只涉及步骤1到3,而步骤4和5结合3完成的是鉴别功能。
Ⅱ 公开密钥分发 公开密钥分发,顾名思义,就是公钥系统中的加密公开密钥是公开的,它通过各种公开的手段和方式,或由公开权威机构实现公开密钥分发和传送。 公开密钥分发有下列几种形式: 1、公开宣布 2、公布可以得到的目录 3、公开密钥机构分发 4、公开密钥证书分发
1、公开宣布 依据被广泛接受的公开密钥算法(如RSA),参与者可将其公开密钥发送给他人,或通过广播式在整个通信社区公布公开密钥。比如邮件加密的PGP用户可在消息后面附上公开密钥信息,并将其送到公开论坛USENET新闻组上公布。 这个方法很方便,但是易受假冒用户攻击,必须对伪造密钥进行鉴别。
2、公布可以得到的目录 由一个可信实体或组织负责一个公开密钥的公开目录的维护和分发。可信机构与参与者之间建立一条{用户名·公开密钥}条目。参与者可通过正常或可信渠道到目录权威机构登记公开密钥。允许参与者随时更改一个已有的密钥(如公钥使用太长,或公钥已泄密),目录权威机构可周期性地公布整个目录,或对目录进行刷新,参与者也可以电子方式访问这个目录。为安全起见,参与者与权威机构的通信安全受鉴别保护。 这个方法的安全性显然强于公开宣布,但是也易受冒充权威机构伪造公开密钥的攻击。
3、公开密钥机构分发 由专门机构授权,用来负责管理公开密钥的公开目录分发的一个中心权威机构可信实体或组织,并负责维护一个所有参与者登记在册的公开密钥信息的公开动态目录,使公开密钥的分发达到更高的安全强度。当然,每个参与者都有一种可信渠道知晓权威机构的公开密钥,而其对应的私钥只能由机构本身秘密拥有。这种公开密钥分发方案主要用于A和B双方在进行通信时,需要了解对方的公开密钥信息。一方向公开密钥机构要求分发另一方的公开密钥,用双方的公开密钥进行信息加密传送给对方。这时为安全起见,主要通过时戳等技术加以保护和判别。公开密钥机构分发方式同样存在真实性和鉴别问题。
4、公开密钥证书分发 公开密钥证书方法是由Kohnfelder[KOHN78]首先提出的,目的是用户使用证书交换公开密钥,无需与权威机构联系,也能达到类似直接从权威目录机构获取公开密钥方法的安全性。基本作法是:证书由可信证书中心生成,内容包含用户公开密钥、对应的私有密钥及相关信息。参与者通过将相应证书传送给另一个参与者而达到传送公钥信息的目的。其他参与者可以验证此证书是否由权威机构签发。该方案的特点是: (1)每个参与者都可解析证书,以获悉证书持有者名和公钥信息; (2)每个参与者均可验证一个证书是否由权威机构签发的真实性; (3)只有权威机构能够签发和更新合法的证书; (4)每个参与者都能验证证书的适时性。 其中(1)~(3)在Kohnfelder[KOHN78]中提到,(4)在Denning[DENN83]中提到。
Ⅲ 秘密密钥分发 公开密钥分发一方面易受搭线攻击,另一方面加解密速度偏慢,因此,比较合理的做法是将公开密钥加密当作一个分配常规加密所用的秘密密钥的工具。
1、简单的秘密密钥分配 一个极端简单的方案如图3.13所示: 如果A希望和B通信,就使用如下步骤: (1)A产生一个私有/公开密钥对{KUa,KRa}并给B传输一个报文,其中包含KUa和A 的一个标识符IDA。 (2)B产生一个秘密密钥KS,并将其用A的公开密钥加密后传输给A。 (3)A计算DKRa[EKUa[KS]]来恢复这个秘密密钥。因为只有A可以解密这个报文,所以只有A和B才会知道KS。 (4)A弃用KUa和KRa,B弃用KUa。 A和B现在就可以使用常规加密和会话密钥KS进行安全通信。信息交互完成以后,A和B都丢弃KS。尽管这个协议很简单,但它却是一个吸引人的协议。在通信之前不存在密钥,而在通信完成以后也不存在密钥,因而密钥泄露的危险被减小到最低程度。同时,对于窃听而言,通信是安全的。
但是这个协议容易受到主动攻击。如果一个敌对方E控制了中间的通信信道,那么E就可以用下列方式破坏通信而不被发觉: (1)A产生一个私有/公开密钥对{KUa,KRa}并给B传输一个报文,其中包含KUa和A 的一个标识符IDA。 (2)E截获了这个报文,创建自己的私有/公开密钥对{KUe,KRe},并将KUe||IDA传输给B。 (3)B产生一个秘密密钥KS并传输EKUe[KS]。 (4)E截获这个报文并通过计算DKRe[EKUe[KS]]得知KS。 (5)E传输EKUa[KS]给A。 结果是A和B都得到了KS,并且不知道KS也被E获知。A和B现在可以使用KS进行信息交互,E不再主动干预通信信道而只是简单地窃听。因为知道了KS,E可以解密所有的报文,而A和B都不知道有这个漏洞存在。因而这个简单的协议仅仅在只存在窃听的信道环境中可以使用。
2、具有保密和鉴别能力的秘密密钥分配 图3.14提供了对于被动和主动两种攻击的防护。 我们的出发点是假定A和B已经交换了公开密钥,接下来进行的步骤是: (1)A使用B的公开密钥加密一个发给B的报文,这个报文包含一个A的标识符IDA和一个现时N1,这个现时用来唯一地标识这次交互。 (2)B给A发送一个用KUa加密的报文,其中包含A的现时N1以及一个B产生的新现时N2。因为只有B才可能解密报文(1)、报文(2)中N1的存在使得A确信对方是B。 (3)A返回一个用B的公开密钥加密的N2以便使B确信它的对方是A。 (4)A选择一个秘密密钥KS并发送M=EKUb[EKRa[KS]]给B。对这个报文用B的公开密钥加密保证了只有B能够解读它;用A的私有密钥进行加密保证只有A才能发送它。 (5)B计算DKUa[DKRb[M]]恢复秘密密钥。 这个方案在秘密密钥的交互中保证了保密性和鉴别。
3.3.4 密钥托管 任何东西都具有两面性,加密技术也不例外:一方面可为用户提供正常保密保护;另一方面也为窃密分子提供犯罪掩护,给监管带来了困难。那么如何控制加密技术的使用,使得一方面政府机构在需要时,可通过适当的程序,如法院证书,解密用户的信息;另一方面,当用户的密钥丢失或损坏,也可通过该技术恢复自己的密钥呢? 这就要用到密钥托管技术,下面我们简单介绍些关于它的基本知识。
Ⅰ 密钥托管基本含义 1993年4月16日,美国政府为了满足其电信安全、公众安全和国家安全,提出了托管加密标准EES(escorowed encryption standard),又称Clipper建议,解决了加密技术两面性的需求:不仅提供强加密功能,也为政府机构提供了实施法律授权下的监听功能。EES标准于1994年2月正式被美国政府公布采用。 所谓密钥托管技术,指为用户提供更好的安全通信方式,同时允许授权者(包括用户、企业专门人员、政府保密部门等)为了国家等安全利益,监听某些通信和解密有关密文。所以,密钥托管也叫“密钥恢复”,或者延伸为“受信任的第三方”、“数据恢复”、“特殊获取”等含义。 密钥托管技术的核心是一个称为Clipper的防窜扰芯片,它是由美国国家安全局(NSA)主持开发的软件实现密码部件。内部利用skipjack的私钥密码算法,芯片的单元密码(UK)由两个称之为Escrow的机构联合提供。 美国政府的EES标准公布之后,在社会上引起了很大的争议,但出于商业利益的动机,不少公司纷纷推出自己的密钥托管系统,常用的有几十种不同功能的密钥托管技术。
Ⅱ 密钥托管系统的组成 密钥托管加密体制主要由三部分组成:用户安全分量、密钥托管分量和数据恢复分量。三者紧密联系,相互制约。图3.15给出了密钥托管加密系统示意图。
1、用户安全分量(User Security Component,简称USC) 用户安全分量由硬件设备或软件程序构成,用于数据加密和解密,支持密钥托管功能和数恢复作用。其中DRF可看作是通用密钥分配机制的组成部分。 USC具有密钥托管功能是指:法律允许的授权机构可采用应急解密措施介入通信,如搭线窃听,数据拥有者也可以使用应急解密措施恢复丢失或损坏的密钥,以及解密有关数据文件。 2、密钥托管分量(Key Escorw Component简称,KEC) 密钥托管分量主要由密钥托管代理、数据恢复密钥、数据恢复业务和托管密钥防护四部分组成。主要完成密钥托管代理操作,数据恢复的密钥存储、披露和使用,以及其他部分业务服务。 (1)密钥托管代理。有时也称为可信赖方,负责KEC的操作。托管代理要在托管中心注册,亦可为USC和DRC的联合机构。托管代理可为政府实体或私人组织的实体,各自履行代理职责,包括保证识别出那些不支持数据恢复或把密钥批露给非授权方,以及非法批露密钥的托管代理。托管代理的安全性就是要做到防止托管密钥泄露、丢失以及授权的滥用能力等。
(2)数据恢复密钥。作用是保证采用托管加密后,所有加密数据均能与数据恢复密钥相连,以备必要时数据恢复使用。数据恢复密钥种类可分为:A、数据加密密钥(如会话密钥、网络密钥、文件密钥等,密钥由KEC中心分发)。B、用户密钥,用于建立数据加密密钥,可由KEC分发。C、主密钥,可由多个USC共享,直接与KEC相关。D、产品密钥,属于USC专有。所有数据恢复密钥的托管时机可在产品制作或初始化阶段,以及用户注册期间进行。 (3)数据恢复业务。包括向DRC披露信息、授权指导业务,如建立身份证明和获取接入已加密数据的合法授权证明。提供业务选择方式有:A、披露数据恢复密钥;B、披露派生密钥;C、解密密钥;D、实现门限解密等内容。这些业务可用人工后自动地将数据传入或传出后DRC。 (4)托管密钥保护。用来防止密钥泄露或丢失,集成各种技术保护、操作保护和法律保护等。 3、数据恢复分量(Date Recovery Component,简称DRC) DRC主要由专用算法、协议和必要的设备组成,能够从密文和KEC所提供的,包含于DRC的信息中恢复出明文。DRC的功能主要由:适时解密,能实时解密截获信息;后处理,可解密以前截获和记录的通信;透明性,非各方知识参与也可解密;独立性,一旦获得密钥,利用自己的资源就能解密。但是,只有在执行规定的合法数据恢复时才能使用DRC。
3.4 网络加密技术 随着网络技术的发展,网络安全也就成为当今网络社会的焦点中的焦点,几乎没有人不在谈论网络上的安全问题。病毒、黑客程序、邮件炸弹、远程侦听等这一切都无不让人胆战心惊,病毒、黑客的猖獗使身处今日网络社会的人们感觉到谈网色变,无所适从。 那么,怎样解决这一切一切的安全问题呢?或许加密是我们唯一的选择。
3.4.1 网络加密的重要性 网络是由各网络节点、它们之间的连接以及其上的网络应用服务等组成的,任何一个环节的疏漏都可能威胁到网络的安全。如目前应用得最广泛的TCP/IP协议,其IP层协议就有许多安全缺陷:IP地址可以利用软件进行设置,这就造成了地址假冒和地址欺骗两类安全隐患;IP协议支持源路由方式,即源点可以指定信息包传送到目的节点的中间路由,这就提供了源路由攻击的条件。 当我们在互联网上进行文件传输、电子邮件商务往来时,黑客就利用网络的漏洞和缺陷对我们的活动进行有目的的攻击。有的出于政治原因,为了获取国家机密、军事情报等;有的为了取得商业竞争的胜利,盗窃甚至破坏他人的客户资料,获取对方产品开发信息、公司销售策略等;更多的还是出于金钱利益的诱惑,盗取他人网银帐号密码、网络游戏虚拟装备等。无论什么目的,都会我们带来巨大的损失。因此为了能在安全的基础上大开通向世界之门,我们只好选择了网络加密技术。 网络加密技术的目的就是保护网内的数据、文件、口令和控制信息,保护网上传输的数据,防止有用或私有化信息在网络上被拦截和窃取,或者即使被攻击者获得也是不可读的。在某种意义上来说,加密也成为当今网络社会进行文件或邮件安全传输的时代象征。
3.4.2 网络加密的形式 密码技术是网络安全最有效的技术之一。一个加密网络,不但可以防止非授权用户的搭线窃听和入网,而且也是对付恶意软件的有效方法之一。 一般的数据加密可以在通信的三个层次来实现: Ⅰ 链路加密 Ⅱ 节点加密 Ⅲ 端到端加密
Ⅰ 链路加密 这是一种面向物理层的数据加密方式。对于在两个网络节点间的某一次通信链路,链路加密能为网上传输的数据提供安全保证。对于链路加密(又称在线加密),所有消息在被传输之前进行加密,在每一个节点对接收到的消息进行解密,然后先使用下一个链路的密钥对消息进行加密,再进行传输。在到达目的地之前,一条消息可能要经过许多通信链路的传输。 由于在每一个中间传输节点消息均被解密后重新进行加密,因此,包括路由信息在内的链路上的所有数据均以密文形式出现。这样,链路加密就掩盖了被传输消息的源点与终点。由于填充技术的使用以及填充字符在不需要传输数据的情况下就可以进行加密,这使得消息的频率和长度特性得以掩盖,从而可以防止对通信业务进行分析。 尽管链路加密在计算机网络环境中使用得相当普遍,但它并非没有问题。链路加密通常用在点对点的同步或异步线路上,它要求先对在链路两端的加密设备进行同步,然后使用一种链模式对链路上传输的数据进行加密。这就给网络的性能和可管理性带来了副作用。
在线路/信号经常不通的海外或卫星网络中,链路上的加密设备需要频繁地进行同步,带来的后果是数据丢失或重传。另一方面,即使仅一小部分数据需要进行加密,也会使得所有传输数据被加密。 在一个网络节点,链路加密仅在通信链路上提供安全性,消息以明文形式存在,因此所有节点在物理上必须是安全的,否则就会泄漏明文内容。然而保证每一个节点的安全性需要较高的费用,为每一个节点提供加密硬件设备和一个安全的物理环境所需要的费用由以下几部分组成:保护节点物理安全的雇员开销,为确保安全策略和程序的正确执行而进行审计时的费用,以及为防止安全性被破坏时带来损失而参加保险的费用。 在传统的加密算法中,用于解密消息的密钥与用于加密的密钥是相同的,该密钥必须被秘密保存,并按一定规则进行变化。这样,密钥分配在链路加密系统中就成了一个问题,因为每一个节点必须存储与其相连接的所有链路的加密密钥,这就需要对密钥进行物理传送或者建立专用网络设施。而网络节点地理分布的广阔性使得这一过程变得复杂,同时增加了密钥连续分配时的费用。
Ⅱ 节点加密 节点加密在操作方式上与链路加密是类似的:两者均在通信链路上为传输的消息提供安全性;都在中间节点先对消息进行解密,然后进行加密。因为要对所有传输的数据进行加密,所以加密过程对用户是透明的。 然而,与链路加密不同,节点加密不允许消息在网络节点以明文形式存在,它先把收到的消息进行解密,然后采用另一个不同的密钥进行加密,这一过程是在节点上的一个安全模块中进行。因此节点加密能给网络数据提供较高的安全性。 节点加密要求报头和路由信息以明文形式传输,以便中间节点能得到如何处理消息的信息。因此这种方法对于防止攻击者分析通信业务是脆弱的。
Ⅲ 端到端加密 端到端加密(又称脱线加密或包加密),属高层加密方式。源端在发送源消息之前将消息加密成密文,并以密文消息的形式经通信网传送到目的端。各端点采用相同的密码算法和密钥,对传递通路上的各个中间节点,其数据是保密的。也就是说,加密方式不依赖于中间节点,中间节点没有义务对其他层的协议信息进行解密,只有收端用户正确解密才能恢复明文。 采用端到端加密,数据在从源点到终点的传输过程中始终以密文形式存在,在整个传输过程中均受到保护,所以即使有节点被损坏也不会使消息泄露。端到端加密系统的价格便宜些,并且与链路加密和节点加密相比更可靠,更容易设计、实现和维护。端到端加密还避免了其它加密系统所固有的同步问题,因为每个报文包均是独立被加密的,所以一个报文包所发生的传输错误不会影响后续的报文包。此外,从用户对安全需求的直觉上讲,端到端加密更自然些。单个用户可能会选用这种加密方法,以便不影响网络上的其他用户,此方法只需要源和目的节点是保密的即可。 端到端加密系统通常不允许对消息的目的地址进行加密,这是因为每一个消息所经过的节点都要用此地址来确定如何传输消息。由于这种加密方法不能掩盖被传输消息的源点与终点,因此它对于防止攻击者分析通信业务是脆弱的。
要取得更大的安全程度,我们既需要链路加密也需要端到端加密,如图3.16所示: 当使用上图的加密形式时,主机对分组的用户数据部分用一个端到端加密密钥进行加密。整个分组然后用一个链路加密密钥进行加密。分组传过网络时每个交换机都用一个链路加密密钥解密分组以便读取首部,然后再加密整个分组以便在下一个链路上发送出去。现在,除了分组在分组交换机内存中那段时间外,整个分组是安全的。在那段时间分组首部是未加密的。
表3.11总结了链路加密与端端加密策略的关键特性。
知识归纳 信息加密技术是一门既古老又年轻的科学。当代社会是信息化社会,如果说信息得不到应有的保密,那么政府、公司和个人的开发活动都将陷入混乱,整个社会将变得不可收拾。因此,信息的安全与保密问题成了人人都关心的问题。 现代密码学涉及数学(如数论、近世代数、复杂性理论、组合算法、概率算法及代数几何等)、物理学(如量子力学、现代光学、混沌动力学等)、信息论、计算机科学等学科,内容十分丰富。本章只简单介绍了密码学的基础知识,目的是通过我的介绍,给真正对密码技术感兴趣的读者一个引路而已。
习题与思考题 3.1 比较单钥密码体制与双钥,试述它们的本质区别,以及各自的优缺点。 3.1 比较单钥密码体制与双钥,试述它们的本质区别,以及各自的优缺点。 3.2 设恺撒密码的密钥k=6,设计出明文字母与密文字母的映射对照表,并加密明文m= Caesar cipher。 3.3 用维吉尼亚(vigenere)密码算法加密m=system management bus,密钥k=computer。 3.4 设明文m=“信息加密技术是利用数学或物理手段,对电子信息在传输过程中和存储体内进行保护,以防止泄漏的技术”,密钥k=information,试用列易位算法法加密明文。 3.5 设明文m=0123456789ABCDEF,密钥k=13345779BBCDFF1,试用DES算法对其进行加密。 3.6 假定明文m=encryption,考虑两字母组合的最大值为2525,选取参数p=43,q=59,另选e=13,试用RSA算法对其进行加密。 3.7 写出密钥的种类,并说明每种密钥在加解密中的作用。 3.8 比较密钥分配的几种方法,并设想如果学院和每个学生寝室之间要通信,用哪种方式比较好? 3.9 分析几种网络加密方式的优缺点。
实训指南 实训一 制作密码卡片 实训二 密码推断 实训三 DES加、解密 实训四 RSA保密通信
实训一 制作密码卡片 实训目的 通过制作简单的6×6密码卡片,使学生深刻理解易位密码这种传统技术。 实训环境 课堂上进行即可,准备空白方格纸两张,剪刀一把。 实训内容 制作密码卡片 方法和步骤 1、按下图绘制6×6方格,并把黑色方块剪掉。 2、加密时,将密码卡片置于同等大小的方格纸上,将明文按行从左到右书写(写在露出的方格),写完后顺时针(逆时针也可)旋转90°,继续写入明文,连续四次,将方格纸写满后拿掉密码卡片后剩下的即为密文。 3、解密时,用密码卡片盖住密文,按加密时的逆顺序旋转阅读即可。 实训报告要求 1、说明本次实训体现了什么原理。 2、在理解原理的基础上,写出一个10×10方格密码卡片的制作图。
实训二 密码推断 实训目的 通过练习,使学生深刻理解传统密码技术,并能根据自己的需要选择合适的算法 实训环境 课堂练习即可,准备空白纸张若干 实训内容 推断密码算法和密钥 方法和步骤 1、教师先给出一段明文(无特殊要求,长度适当,重复字符不能太多)。 2、每个学生根据所学的代替和易位算法加密明文后相互交换。 3、根据明文和密文之间的对应关系,推断对方所用的加密算法和密钥。 实训报告要求 1、写出自己在实训中所用的密码算法,并写出从明文到密文的详细步骤。 2、写出根据对方的密文推断出的加密算法和密钥,写出推断思路。
实训三 DES加、解密 实训目的 通过对DES密码算法的练习,理解DES工作的原理 实训环境 课堂练习即可,准备空白纸张若干 实训内容 方法和步骤 1、教师先给出一段明文(无特殊要求,长度适当,重复字符不能太多)和密钥。 2、学生按DES算法的步骤加密明文得到密文即可。 实训报告要求 1、写出用DES算法加密明文的详细步骤。 2、在理解DES算法的基础上,分析该算法存在的漏洞。
实训四 RSA保密通信 实训目的 通过对RSA密码算法的练习,理解RSA工作的原理 实训环境 课堂练习即可,准备空白纸张若干 实训内容 方法和步骤 1、选择两个素数(为了计算方便,100以内即可),根据所学,算出公钥和私钥,并公布自己的公钥。 2、学生用自己的私钥和教师的公钥加密明文(包含个人信息)后发给教师。 3、教师选择其中一个密文,用自己的私钥解密得到明文后,将答案用该生的公钥加密并发给全班。 4、每个学生都用教师的公钥和自己的私钥解密该密文,只有正确的接受者才能解密该密文。 实训报告要求 1、写出计算公钥和私钥的详细步骤。 2、根据自己能否接收教师的信息,写出原因。 3、结合自己运用RSA的情况,分析该密码算法的优缺点。
参考文献 《密码学与计算机网络安全》 卿斯汉 清华大学出版社 《对称密码学》 胡予濮等 机械工业出版社 《密码学与计算机网络安全》 卿斯汉 清华大学出版社 《对称密码学》 胡予濮等 机械工业出版社 《密码编码学与网络安全:原理与实践》 [美]William Stallings 电子工业出版社 《密码学原理与实践》 [加]Douglas R. Stinson 电子工业出版社 《现代密码学》 杨波 清华大学出版社 《计算机安全技术》 刘荫铭等 清华大学出版社 《公开密钥密码算法及其快速实现》 周玉洁等 国防工业出版社 《密码学》 宋震等 中国水利水电出版社 《网络与信息安全教程》 林柏钢 机械工业出版社 《计算机安全》 赵一鸣等 电子工业出版社 《信息社会学》 靖继鹏、吴正荆 科学出版社 《信息安全管理手册》卷Ⅰ、卷Ⅱ、卷Ⅲ [美]Harold F. Tipton Micki Krause 电子工业出版社