02-1密码学基础一1页版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络安全技术
第二讲密码学基础(一)
罗守山博士、教授
北京邮电大学软件学院
内容提要
♦1 基本概念和术语♦2.现代对称加密技术♦3 非对称密码体制♦4 签名认证体系
♦5 密码政策介绍
1 基本概念和术语
♦密码学是网络安全的基础。
–虽然网络安全技术多种多样,但最终都是要
提供六种安全服务:机密性、鉴别、完整性、不可抵赖性、访问控制和可用性。
–能支持这六种安全服务的安全机制,例如:
数据加密、消息鉴别、身份认证、数字签名
等等大多数都是基于密码学及其衍生。
(1)密码学(Cryptology)
♦密码学是研究信息系统安全保密的科学。
分为密码编码学和密码分析学。
–密码编码学(Cryptography)主要研究对信息进
行编码,实现对信息的隐蔽。
–密码分析学(Cryptanalytics)主要研究加密消
息的破译或消息的伪造。
(2)保密通信模型
♦在不安全的信道上实现安全的通信是密码学研究的基本问题。
♦消息发送者对需要传送的消息进行数学变换处理,然后可以在不安全的信道上进行传送;♦接收者在接收端通过相应的数学变换处理可以得到信息的正确内容;
♦而信道上的消息截获者,虽然可能截获到数学变换后的消息,但无法得到消息本身,这就是最基本的保密通信模型。
首先进行采
样
数字通信系统
♦信源编码
–目的:采集数据、压缩数据以利于信息的传送。
–算法:算术编码、矢量量化(VQ)编码、相关信源编码、变换编码等。
♦信道编码
–目的:数据在信道上的安全传输,使具有自我纠错
能力,又称纠错码。
–算法:BCH码、循环码、线性分组码等。
♦密码学
–目的:保密通信。
–算法:公钥密码体系、对称钥密码体系。
♦其中发送者对消息进行数学变换的过程称为加密过程;
♦接收者相应的数学变换过程称为解密过程;♦需要传送的消息称为明文;
♦经过加密处理后的消息称为密文;
♦信道上消息的截获者通常被称为攻击者、分析者或者搭线者。
♦下图就是一个最基本的保密通信模型:
图示保密通信(加密与解密)
(3)密码体制
♦一个密码体制(有时也称加密方案或密码系统)是一个使通信双方能进行秘密通信的协议。
♦一个典型的加密方案由发送者、接收者和分析者三方参与,其中包括两个算法:
–一个称为加密算法,被发送方用来加密消息。
–另一个称为解密算法,被接收方用来解密接收的消
息。
♦为了发送一个消息(即明文),发送方首先用加密算法处理明文,得到密文并发送。
收到密文后,接收方用解密算法将密文恢复为明文。
♦为使这一方案能提供秘密通信,通信双方(至少收方)必须知道某些搭线者不知道的东西,否则搭线者也能像收方一样地恢复明文。
♦这个外加知识的形式,可以是某些参数和(或)辅助输入,称这个外加知识为解密密钥。
♦相应的,发送者在加密过程中有加密密钥的概念。
♦典型密码体制方框图如下:
图示密码体制
密码学基本概念
♦明文:需要秘密传送的消息。
♦密文:明文经过密码变换后的消息。
♦加密:由明文到密文的变换。
♦解密:从密文恢复出明文的过程。
♦破译:非法接收者试图从密文分析出明文的过程。
♦加密算法:对明文进行加密时采用的一组规则。
♦解密算法:对密文进行解密时采用的一组规则。
♦密钥:加密和解密时使用的一组秘密信息。
♦从数学上来说,密码体制是一个五元组(P,C,K,E,D),其中满足条件:
♦(1)P是可能明文的有限集,称为明文空间;
♦(2)C是可能密文的有限集,称为密文空间;
♦(3)K是可能密钥构成的有限集,称为密钥空间;
♦(4)任意k∈K,有一个加密算法e∈E和相应的解密算法d∈D,且e:P->C和d:C->P分别为加、解密函数,满足d(e(x))=x,这里x∈P。
密码学的历史
q发展史
早在4000多年以前,古埃及人就在墓志铭中使用过类似于象形文字
那样奇妙的符号;
公元前约50年,凯撒密码-一种简单的字符替换-被认为是最早的
正式算法;
传统密码学、现代密码学、量子密码学。
q应用领域
军事、外交、情报
商业、个人通信
(4)密码体制分类
♦根据加密时对明文消息是否分组,密码体制分为流密码和分组密码。
–流密码又称为序列密码,加密时对明文按比特进行
加密;
–分组密码将明文分成相同长度的明文组,对所有的
明文分组使用同样方式进行加密。
♦从密码体制的数学定义来看,加密密钥和解密密钥是成对使用的。
♦一般意义下,在密码体制具体实现过程中,加密密钥与解密密钥是一一对应关系。
♦根据由加密密钥得到解密密钥的算法复杂度不同,密码体制分为私钥(对称)密码体制和公开密钥密码体制。
–私钥密码体制的加解密密钥可以很容易的相互得到,更多的情况下,两者甚至完全相同,在实际应用中
发送方必须通过一个可能的安全信道将密钥送到接
收方;
–公开密钥密码体制中,由加密密钥(公钥)得到解
密密钥(私钥)很困难,所以实际应用中接收方可
以将加密密钥公开,任何人都可以使用该密钥(公
开密钥)进行加密,而只有接收者拥有解密密钥
(私钥),这样只有接受者能解密。
q单钥密码学(对称密码学)
加密密钥和解密密钥相同;
系统的保密性取决于密钥的安全性;
如何分发密钥是难点。
q双钥密码学(非对称密码学,公钥密码学)加密密钥和解密密钥不同;
系统的安全保障在于要从公开钥和密文推出明文或私钥在计
算上是不可行的;
分发密钥简单。
(5)密码算法的安全性
♦要衡量一个密码算法的安全性,首先应了解密码分析攻击的类型。
♦一般假设密码破译者已知密码体制,目标是破译密钥或密文对应的明文。
♦下表根据破译者所知的信息量总结了各种密码分析攻击的类型:
密码分析攻击类型
密码算法的安全性
♦Kerckhoofs假设(荷兰人,19世纪):
–密码破译者已知密码体制,目标是破译密钥或密文
对应的明文。
♦无条件安全:
–无论破译者有多少密文,他也无法解出对应的明文,即使他解出了,他也无法验证结果的正确性,则此
加密方案是无条件安全的。
–已知的密码算法中没有无条件安全的,只有一次一
密(one-time pad)方案是个例外。
♦计算上安全:
–满足以下准则的一个或两个:破译的代价超出信息
本身的价值;破译的时间超出了信息的有效期。
对称密码学概述
♦分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出
数字(简称密文数字)序列,如下图所示:
设计思想
♦Shannon提出扰乱和扩散
–扰乱(Confusion):使得密文的统计特性与密钥的取值之间的关系尽量复杂。
这是为了
挫败密码分析者试图发现密钥的尝试
–扩散(Diffusion):明文的统计结构被扩散
消失到密文中,使得明文和密文之间的统计
关系尽量复杂。
–Shannon当时关心的是如何挫败基于统计分
析的密码破译问题。
♦若明文的统计特性以某种方式反映在密文中,则密码分析者就可能推测出加密密钥,或部分密钥,或密钥的一个集合。
♦在Shannon所称的理想的密码中,密文的所有统计特性都与所用的是哪个密钥没有关系。
♦Shannon建议了两种为统计分析制造障碍的方法:扩散和扰乱。
♦扩散(Diffusion):明文的统计结构被扩散消失到密文中,使得明文和密文之间的统计关系尽量复杂。
–做到这一点的方法是让明文的每个数字影响许多密文数字的取值,也就是说每个密文数字被许多明文数字影响。
–在二进制分组密码中,扩散可以通过重复使用对数据的某种置换,并对置换结果再应用某个函数的方式来达到,这样做就使得原明文不同位置的多个比特影响到密文的一个比特。
♦扰乱(Confusion):使得密文的统计特性与密钥的取值之间的关系尽量复杂。
–这是为了挫败密码分析者试图发现密钥的尝试。
–进行扰乱后,即使攻击者掌握了密文的某些统计特性,使用密钥产生密文的方式是如此复杂以至于攻击者难于从中推测出密钥。
可
以使用一个复杂的替代算法达到这个目的。
Feistel密码结构
♦流行的现代常规加密算法都是基于Feistel 分组密码的结构。
♦Feistel提出可以使用乘积密码的概念去近似理想分组密码系统。
–乘积密码就是以某种方式连续执行两个或多
个密码以使得所得到的最后结果比其任意一
个组成密码都更强。
♦Feistel提出用替代和置换交替的方式构造密码。
–实际上,这是Shannon的一个设想的实际应
用,Shannon提出用扰乱(confusion)和扩
散(diffusion)交替的方法构造乘积密码。
♦Feistel 密码结构如下图所示:(图5传统Feistel 网络)
♦加密算法的输入是一个长度2w 比特的明文分组和一个密钥K ,明文分组被分为两个部分L 0和R 0。
♦数据的这两个部分经过n 轮的处理后组合起来产生密文分组。
♦每一轮i 以从前一轮得到的L i-1和R i-1为输入,另外的输入还有从总的密钥K 生成的子密钥K i 。
♦每一轮的结构都一样。
♦对数据的左边一半进行替换操作,替换的方法是对数据右边一半应用round函数F,然后用这个函数的输出和数据的左边一半做异或。
♦Round函数在每一轮中有着相同的结构,但各轮的子密钥K
并不相同。
i
♦在替换完成后,算法做一个置换操作把数据的两个部分进行互换。
♦大部分常规密码算法是Feistel密码结构的具体实现,只不过是对下列参数和设计特点的选择不同:
–1)分组大小:分组越大安全性越高,但加解
密速度越慢。
64比特的分组大小是一个折中
的选择。
–2) 密钥大小:密钥长度越长则安全性越高,但加解密速度也越慢。
64比特或更小现在已
经认为不够安全,128比特已经成为常用的
长度。
–3)循环次数:循环越多则越安全,但加解密速度越慢。
DES采用16次循环。
–4)子密钥产生算法:这个算法越复杂,密码分析越困难。
–5) Round函数:复杂性越高则抗击密码分析的能力就越强。
–6)快速的软件实现。
–7)易于硬件实现。
–8) 便于分析。
♦Feistel 的解密过程与其加密过程实质是相同的,解密的规则如下:
♦以密文作为算法的输入,但是以相反的次序使用子密钥K i ,即第一轮使用K n ,最后一轮使用K 1。
♦这个特性正是常规加密算法又称为对称加密算法的原因。
(2)数据加密标准介绍
♦DES的发展史
–数据加密标准DES (Data Encryption Standard)是由
IBM公司在1970年发展出的一个加密算法。
–DES已经有20多年的历史,1976年11月23日DES被采
纳为联邦标准;DES是第一个得到广泛应用的密码算
法;DES在1977年经过美国国家标准局(NBS)采用为联邦标准之后,已成为金融界及其它各种产业最广
泛应用的对称密钥密码系统。
–DES是分组密码的典型代表,也是第一个被公布出来的标准算法。
–DES是一种分组加密算法,输入的明文为64bit,密钥
为56bit,生成的密文为64bit。
–1997年6月,许多台计算机并行工作,140天内破解了
DES;1998年,DES在48天内被破解;1999年,几个
小时内就能破解。
–DES已经过时,基本上认为16轮、56bit不再安全。
♦1977年,美国正式公布美国数据加密标准——DES,并广泛用于商用数据加密。
算法完全公开,这在密码学史上是一个创举。
♦计算机通信网络发展对信息安全保密的需求日益增长,大量敏感和机密信息、数据的传输和存贮都要求有密码保护,为了实现同一水平的安全性和兼容性,而提出了数据加密标准化。
DES是这种需求的产物。
♦DES是一个典型的基于Feistel结构的密码体制。
–DES输入的是64bit明文分组;
–使用56bit的密钥;
–循环的轮数是16;
–使用了8个S盒实现扰乱功能。
♦参见word版DES算法描述
其它对称密码体制
♦三重DES(3DES)
♦使用三(或两)个不同的密钥对数据块进行三次(或两次)加密。
♦三重DES的强度大约和112-bit的密钥强度相当
♦三重DES有四种模型
ü DES-EEE3 使用三个不同密钥顺序进行三次加密变换
ü DES-EDE3 使用三个不同密钥依次进行加密-解密-加密变换
ü DES-EEE2 其中密钥K1=K3 顺序进行三次加密变换
ü DES-EDE2 其中密钥K1=K3 依次进行加密-解密-加密变换
♦到目前为止还没有人给出攻击三重DES的有效方法。
♦IDEA
International Data Encryption Algorithm;Xuejia Lai和James Massey提出;
IDEA是对称、分组密码算法,输入的明文为64位,密钥为128位,生成的密文为64位;IDEA是一种相对较新的算法,有坚强的理论基础,已被证明可对抗差分分析和线性分析;PGP中已实现了IDEA;
♦高级加密标准(AES)
♦1997年4月15日美国国家标准和技术研究所NIST 发起了征集AES算法的活动并成立了专门的AES工作组
–目的是为了确定一个非保密的公开披露的全球免费使用的分组密码算法用于保护下一世纪政府的敏感信息并希望成为秘
密和公开部门的数据加密标准
♦1997年9月12日在联邦登记处公布了征集AES候选算法的通告AES的基本要求是
–比三重DES快或至少和三重DES一样
–安全分组长度128比特,密钥长度为128/192/256比特
♦1998年8月20日NIST召开了第一次候选大会并公布了15个候选算法
♦1999年3月22日举行了第二次AES候选会议从中选出5个算法
–MARS RC6 Serpent Twofish Rijndael
♦2000年10月,美国国家技术标准委员会(NIST) 选定“Rijndael”为AES
♦Rijndael是迭代分组密码,其分组长度和密钥长度都是可变的;
♦为了满足AES的要求,分组长度为128bit,密码长度为128/192/256bit,相应的轮数r为
10/12/14。
对称密码体制应用实例
♦NTFS格式下Windows操作系统自带的
EFS的加密演示。
B
公钥密码学发展的重要事件♦1976年,由Diffie和
Hellman在其“密码学新
方向”一文中提出了公
开密钥的概念。
♦1978年,Rivest、
Shamir和Adleman发表
了RSA算法,公开密钥
密码系统由理论走向实
用。
公开密钥算法的特性
♦公开密钥算法与常规加密算法最显著的不同是用一个密钥进行加密,而用另一个不同但是相关的密钥进行解密:
–加密:X->Y:Y = E
KU
(X)
–解密:Y->X:X = D
KR (Y) = D
KR
(E
KU
(X))
♦一般对两个密钥作出区分:
–KU是公钥,需要传递给对端B,B使用此密
钥加密数据传给本端A;
–KR是私钥,本端A保留且不能为外人所知,A使用此密钥解密B用KU加密过的数据。
–KU和KR是相互联系的,必须成对出现。
♦公开密钥算法的另一个特性是仅仅知道密码算法和加密密钥而要确定解密密钥,在计算上是不可能的。
♦显然,KU和KR虽然相关,但是由KU不
能推导出KR,否则将无安全性可言。
♦某些公钥加密算法,例如RSA,还具有一个非常有用的特性:
–两个相关密钥中任何一个都可以用作加密而让另外
一个用作解密。
♦此特性可以使公钥算法用于鉴别:本端A持有KR,加密数据后传送给对端B;B使用相应的KU进行解密,若解密成功,则可断定数据是
由A发送的,因为只有A才有KR。
♦若有可信的第三方则可以演化为数字签名系统。
基于公钥的加密
♦。