第7章网络信息安全与密码学Word格式.docx
《第7章网络信息安全与密码学Word格式.docx》由会员分享,可在线阅读,更多相关《第7章网络信息安全与密码学Word格式.docx(18页珍藏版)》请在冰点文库上搜索。
(3)节点加密方式
节点加密方式与链路加密方式较相似,例如,在每对节点间共用一个密钥,用于对节点间传输数据进行加密。
不同之处是通过中间节点的数据不像链路方式那样是明文形式。
3.数字签名技术
数字签名认证主要有两大功能:
用户认证——能证明进行数字签名的用户本人;
信息认证——能够证明签了名的信息没有被更改。
该技术确保数据在网络上安全传输。
7.2密码学基础知识
1、基本概念
2、密码体制要求
3、密码体制功能
4、加密算法分类
1、密码学的基本概念:
转换方法可以分为两大类:
一类是隐写术,另一种是编码术。
我们把对真实数据施加变化的过程称为加密EK,把加密前的真实数据称为明文M,加密后输出的数据称为密文C。
从密文恢复出明文的过程称为解密DK。
加密实际上是明文到密文的函数变换,变换过程中使用的参数叫密钥K。
完成加密和解密的算法称为密码体制。
2、密码体制必须满足三个基本要求:
a、对所有的密钥,加密和解密都必须迅速有效;
b、体制必须容易使用;
c、体制的安全性必须只依赖于密钥的保密性,而不依赖于算法E或D的保密性。
3、密码体制要实现的功能可分为保密性和真实性两种。
a、保密性要求密码分析员无法从截获的密文中求出明文。
包括两项要求:
即使截获了一段密文C,甚至知道了与它对应的明文M,密码分析员要从中系统地求出解密变换仍然是计算上不可能的。
密码分析员要从由截获的密文C系统地求出明文M是计算上不可能的。
b、数据的真实性要求密码分析员无法用虚假的密文C′代替真实密文C而不被觉察。
包括两个要求:
对于给定的C,即使密码分析员知道对应于它的明文M,要系统地求出加密变换EK仍然是计算上不可能的。
密码分析员要系统地找到密文C′,使DK(C′)是明文空间上有意义的明文,这在计算上是不可能的。
4、密码体制可分为对称(单密钥)体制和非对称(双密钥)体制。
在对称体制中,加密密钥和解密密钥相同或者很容易互相推导出。
非对称(双密匙)密码体制的加密密钥和解秘密钥中至少有一个在计算上不可能被另一个导出。
因此,在变换EK或DK中有一个可公开而不影响另一个的保密。
5、根据加密明文数据时的加密单位的不同,可以把密码分为分组密码和序列密码两大类。
设M为密码消息,将M分成等长的连续区M1,M2…并且用同一密钥K为各区组加密,即
则称这种密码为分组密码。
分组的长度一般是几个字符。
若将M分成连续的字符或位m1,m2,…,并用密钥序列K=k1,k2…的第i个元素给mi加密,即
则称该密码为序列密码。
以下要介绍的DES和RSA密码体制都是采用分组密码。
7.3密码学中的熵
1、密码体制与不确定性
2、密码体制的理论安全性与实际保密性
3、密钥熵理论
香农在理论上提出了衡量密码体制保密性的尺度:
在截获密文后,明文在多大程度上仍然无法确定。
所有实际密码体制的密文总是会暴露某些有关明文的信息。
在一般情况下,被截获的密文越长,明文的不确定性就越小,最后会变为零。
这时,就有了足够的信息惟一地决定明文,于是这种密码体制也就在理论上可破译了。
3、信息论概念的引入
可将密码系统的安全问题与噪声信道问题进行类比。
噪声相当于加密变换,接收的失真消息相当于密文,密码分析员则可类比于噪声信道中的计算者。
4、密钥熵理论
对于给定的
的条件熵
,
被称为疑义度。
在密码学中,将用到两种疑义度:
(1)对于给定密文,密钥的疑义度可表示为
(7.2.1)
(2)对于给定密文,明文的疑义度可表示为
(7.2.2)
设明文熵为
,密钥熵为
,从密文破译来看,密码分析员的任务是从截获的密文中提取有关明文的信息
(7.2.3)
或从密文中提取有关密钥的信息
(7.2.4)
对于合法的接收者,在已知密钥和密文条件下提取明文信息,由加密变换的可逆性知
(7.2.5)
因而此时有
(7.2.6)
从(7.2.3)式和(7.2.4)式可知,
和
越大,窃听者从密文能够提取有关明文和密钥的信息就越小。
假设
,则
有H(K/C)=H(K/C)+H(M/CK)
=H(K/C)-H(C)+H(MCK)-H(CK)----------------条件熵变共熵
=H(MCK)-H(C)
=H(MK/C)
=H(M/C)+H(K/CM)-----------------------------------(条件熵)
≥H(M/C)
即已知密文后,密钥的疑义度总是大于等于明文的疑义度。
可以这样来理解:
由于可能存在多种密钥把一个明文消息
加密成相同的密文消息
,即满足
的K值不止一个。
但用同一个密钥对不同明文加密而得到相同的密文则较困难。
又因为
由上式得
则
破译难度↘
↗
说明,保密系统的密钥量越少,密钥熵
就越小(等概率分布、无相关性),其密文中含有的有关明文的信息量
就越大。
至于密码分析者能否有效地提取出来,则就是另外的问题了。
作为系统设计者,自然要选择有足够多的密钥量才行。
7.3传统加密方法
1、古典密码体制(理解基本设计思想和原理)
a单表密码【例7.3.1】
单表密码是一种简单的代换密码。
它对所有的明文字符都采用一个固定的明文字符集到密文字符集的映射。
设明文M=m1m2m3…则相应密文为
(7.3.1)
若明文字符集A={a1,a2,…,an},则相应的字符集为A′={f(a1),f(a2),…,f(an)}。
此时密钥就是一个固定的代换字母表。
映射函数f是可逆函数f-1。
那么对密文C=c1c2…的解密译码过程为
(7.3.2)
b移位代换密码【例7.3.2】
移位代换密码又称加法密码,它是单表密码的一种。
设明文字符集A={a0,,a1,a2,…,an-1},密钥为ke,其加密变换为
(7.3.3)
式中,i,j都是A中元素的下标。
由式(7.3.3)的加密变换可知,所得的代换字母表就是明文字符集位移k后所得,这种移位代换密码,密钥k可取1至n共n种,可获n种不同的代换字母表。
c代替密码
代替密码就是明文中每一个字符被替换成密文中的另外一个字符,接收者对密文进行逆替换就恢复出明文来。
在经典密码学中,有四种类型的代替密码。
1.简单代替密码(明文的一个字符用相应的一个密文字符代替)
【例7.3.3】凯撒密码,凯撒变换可表示为c≡m+k(mod26)。
2.多名码代替密码(与简单代替密码相似,不同的是单个字符明文可以映射成密文的几个字符之一)
3.多字母代替密码(字符块被成组加密)
【例7.3.4】希尔密码(Hill)
基本思想是将l个明文字母通过线性变换将它们转换为l个密文字母。
解密只要作一次逆变换就可以了。
4.多表代替密码
多表代替密码由多个简单的代替密码构成,有多个单字母密钥,每一个密钥被用来加密一个明文字母。
第一个密钥加密明文的第一个字母,第二个密钥加密明文的第二个字母,等等。
所有的密钥用完后,密钥又再循环使用,在经典密码学中,密码周期越长越难破译,但利用计算机能够轻易破译具有很长周期的代替密码。
【例7.3.5】维吉尼亚密码(Vigenere)
7.4数据加密标准(DES)
1、概述
1972年,美国国家标准局(NBS)拟订了一个旨在保护计算机和通信数据的计划。
1973年,NBS公开发布了征集标准密码算法的请求。
1974年,NBS第二次发布征集。
最后收到一个有前途的候选算法,即IBM公司开发的Lucifer算法。
在此基础上,经过一段时间的修改与简化,NBS于1977年正式颁布了这个算法,作为美国数据加密标准(DataEncryptionStandard,DES)授权在非密级的政府通信中使用。
DES是一种分组加密算法。
以64bit为数据分组单位。
明文数据分组长度为64bit。
密文数据分组长度也为64bit,密钥数据长度64bit,其中有效密钥56位,8bit奇偶校验。
DES是一个对称算法,加密和解密用同一算法。
DES的整个体制是公开的,系统的安全性依赖于密钥,密钥可以是任意的56bit数,其中有极少量的数被认为是弱密钥,要避免使用。
DES算法是加密的两个基本技术——混乱和扩散的组合。
DES有16轮,意味着要在明文分组上16次实施相同的组合技术。
2、算法介绍
1-1、变换密钥
取得64位的密钥,每个第8位作为奇偶校验位。
1-2、变换密钥。
1-2-1、舍弃64位密钥中的奇偶校验位,根据下表(PC-1)进行密钥变换得到56位的密钥,在变换中,奇偶校验位以被舍弃。
PermutedChoice1(PC-1)
5749413325179
1585042342618
1025951433527
1911360524436
63554739312315
7625446383022
1466153453729
211352820124
1-2-2、将变换后的密钥分为两个部分,开始的28位称为C[0],最后的28位称为D[0]。
1-2-3、生成16个子密钥,初始I=1。
1-2-3-1、同时将C[I]、D[I]左移1位或2位,根据I值决定左移的位数。
见下表
I:
12345678910111213141516
左移位数:
1122222212222221
1-2-3-2、将C[I]D[I]作为一个整体按下表(PC-2)变换,得到48位的K[I]
PermutedChoice2(PC-2)
1417112415
3281562110
2319124268
1672720132
415231374755
304051453348
444939563453
464250362932
1-2-3-3、从1-2-3-1处循环执行,直到K[16]被计算完成。
2、处理64位的数据
2-1、取得64位的数据,如果数据长度不足64位,应该将其扩展为64位(例如补零)
2-2、将64位数据按下表变换(IP)
InitialPermutation(IP)(改变,交换,[数]排列,置换)
585042342618102
605244362820124
625446383022146
645648403224168
57494133251791
595143352719113
615345372921135
635547393123157
2-3、将变换后的数据分为两部分,开始的32位称为L[0],最后的32位称为R[0]。
2-4、用16个子密钥加密数据,初始I=1。
密码迭代运算如下:
经过16轮运算,左、右部分合在一起,再经过一次逆置换,算法就完成了。
按下表(IP-1)变换得到最后的结果。
FinalPermutation(IP**-1)
408481656246432
397471555236331
386461454226230
375451353216129
364441252206028
353431151195927
342421050185826
33141949175725
3、DES的安全性
a、弱密钥
由于DES算法的子密钥是通过改变初始密钥得到的,因此有些密钥成了弱密钥。
尽管DES有弱密钥存在,但相对于总数为72057594037927936个可能密钥的密钥集而言只是个零头。
如果随机选择密钥,选中弱密钥的可能性可以忽略。
当然也可以通过检查,防止产生弱密钥。
b、钥的长度
19762000万$,一天;
1993100万$,3h
美国国家标准和技术协会正在征集新的称之为AES(AdvancedEncryptionStandard)加密标准,新算法可能要采用128位密钥。
c、迭代次数
有研究表明,对低于16轮的任意DES的已知明文攻击要比穷举攻击有效,而当算法恰好为16轮时,只有穷举攻击最有效。
因此,DES采用16轮迭代。
7.5公开密钥加密算法(RSA)
1978年,由美国麻省理工学院(MIT)的Rivest、Shamir和Adleman在题为《获得数字签名和公开钥密码系统的方法》的论文中提出的。
它是一个基于数论的非对称(公开钥)密码体制,是一种分组密码体制。
其名称来自于三个发明者的姓名首字母。
2、安全性:
它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。
3、应用:
RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。
4、原理:
RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。
它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;
另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。
为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。
该算法基于下面的两个事实,这些事实保证了RSA算法的安全有效性:
1)已有确定一个数是不是质数的快速算法;
2)尚未找到确定一个合数的质因子的快速算法。
5、工作原理
1)任意选取两个不同的大质数p和q,计算乘积n=p*q;
2)任意选取一个大整数e,e与(p-1)*(q-1)互质,整数e用做加密密钥。
注意:
e的选取是很容易的,例如,所有大于p和q的质数都可用。
利用n的欧拉函数Φ(n)=(p-1)×
(q-1),从2至[Φ(n)-1]中任选一个数作为加密指数e。
公开密钥
n:
两素数p和q的乘积(p和q必须保密)
e:
与(p-1)(q-1)互素
私人密钥
d:
e-1((mod(p-1)(q-1)))
加密
c=memodn
解密
m=cdmodn
3)确定解密密钥d:
d*e=1mod(p-1)*(q-1)根据e、p和q可以容易地计算出d。
d*emod(p-1)*(q-1)=1(e与(p-1)*(q-1)互质可以确保同余方程有唯一解)
4)公开整数n和e,但是不公开d;
5)将明文P(假设P是一个小于r的整数)加密为密文C,计算方法为:
C=Pemodn
6)将密文C解密为明文P,计算方法为:
P=Cdmodn
然而只根据r和e(不是p和q)要计算出d是不可能的。
因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密。
6、简单实例
为了说明该算法的工作过程,我们下面给出一个简单例子,显然我们在这只能取很小的数字,但是如上所述,为了保证安全,在实际应用上我们所用的数字要大的多得多。
例:
选取p=3,q=5,则n=15,(p-1)*(q-1)=8。
选取e=11(大于p和q的质数),通过d*11=1mod8,计算出d=3。
假定明文为整数13。
则密文C为
C=Pemodn
=1311mod15
=1,792,160,394,037mod15
=7
复原明文P为:
P=Cdmodn
=73mod15
=343mod15
=13
7、RSA的安全性
取决于大素数分解速度的进展。
7.6数字签名
1、数字签名及其原理
数字签名是建立在密码学基础之上的,但传统密码学却无法满足数字签名的要求。
它为网上信息交换、身份认证、电子商务等提供了不可替代的技术手段。
A与B的通信:
A可以篡改收到的密文,B也可以抵赖。
由此我们可以归纳出,假设发送方A发送了一个签了名的信息m给接收方B,那么A的数字签名必须满足下述条件:
⑴B能够证实对信息m的签名是出自A。
⑵任何人包括B在内,都不能伪造A对m的签名。
⑶假设A否认对信息m的签名,可以通过仲裁解决A和B之间的争议。
公钥密钥签名原理:
(1)A将要发送的信息作加密运算:
c=DkAS(m),作为对m的签名发送该B。
这里D是解密变换,所使用的密钥为A的私钥kAS。
任何人包括B在内,由于不知道A的私钥,所以不能伪造该签名。
(2)B用A的公钥kAP作加密变换m=EkAP(c),通过检查是否恢复m来验证A的签名。
(3)如果A和B之间发生争议,仲裁者可以用
(2)中的方法鉴定A的签名。
2、哈希函数
哈希(Hash)函数也叫杂凑函数或散列函数。
任意长度的信息m经过哈希函数运算后,能转换成一个固定长度(如64或128bit)的数h,并且这个数与m具有很强的关联,即m改变一点,h会产生巨大的变化。
另外,哈希函数也具有单向性。
由m计算h容易,而由h反推m极困难。
哈希函数要满足数字签名的要求,必须具有以下特点:
⑴已知哈希函数的输出h=Hash(m),要求它的输入m是困难的。
⑵已知m,计算h=Hash(m)是容易的。
⑶已知h1=Hash(m1),构造m2,使Hash(m2)=h1是困难的。
⑷h的每一bit都与m的每一bit相关,并有高度敏感性。
即m哪怕只改变一bit,h都会产生巨大变化。
A应用Hash函数来计算要传输文件的摘要------信息验证码(messageauthenticationcode,以下称MAC)。
MAC是根据密钥和被传输的信息计算出的一段128位数据。
将摘要和文件一起发送到接收端,B同样应用MD5算法来算出摘要值,进行比对。
哈希函数所具有的这些特点能满足数字签名中保证原文不被篡改的要求,而另一项要求,即身份认证还必须由前面所讲的公钥加密方法来完成。
3、签名标准DSS
数字签名标准DSS是由美国国家标准与技术学会(NIST)最早于1991年公布的一个数字签名标准。
DSS所采用的是基于离散对数求解困难性的DSA(DigitalSignaturealgorithm)公开密钥数字签名算法,用于检验数据的完整性、一致性和身份确认。
第三方可以用它来认证数字签名的合法性。
DSS包含数字签名和验证两部分。
其中所用到的全局公钥分量参数有:
⑴p:
Lbit长的素数,其中L范围是从512~1024bit,并且要求L是64的整数倍(在原始标准中p的尺寸固定在512bit)。
⑵q:
160bit数,并且要求是p-1的素数因子。
⑶g:
,其中h是小于p-1的任意整数,并且
。
三个全局参数p,q和g是公开的,网络上相互通信的用户可以共享。
此外,用户的私有密钥为x:
在0<x<q之内的随机或伪随机整数。
用户的公开密钥为y:
y≡gx(modp)。
用户每次加密时用的秘密数k:
在0<k<q之内的随机或伪随机整数。
对信息m进行签名的过程可以描述如下:
⑴发送方A生成一个随机数k,并且k<q;
⑵发送方A计算生成签名:
r=(gk(modp))(modq),
s=(k-1(H(m)+xr))(modq)。
其中,H(m)为m的哈希函数,k•k-1≡1(modq),0<k-1<q。
r和s即是A的签名,A把信息发送给接收方B。
接收方B收到m,r,s后,若0<r<q,0<s<q,则通过计算验证如下签名:
ω=s-1(modq),
u1=(H(m)·
ω)(modq),
u2=(r·
v=((
·
)(modp))(modq)。
如果v=r,那么签名被证实。
DSS在实际应用中通常采用预先计算来加快速度。
注意到签名算式中r的值不取决于明文m,因而可以事先选定一串可用的k值,然后计算好对应的r值。
k-1值也可以这样做。
于是,当对消息签名时,可以直接调用r和k-1只进行后续计算,从而大大提高运算速度。
期末复习