密码学复习.docx
- 文档编号:5494479
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:34
- 大小:161.87KB
密码学复习.docx
《密码学复习.docx》由会员分享,可在线阅读,更多相关《密码学复习.docx(34页珍藏版)》请在冰豆网上搜索。
密码学复习
一、引言
安全攻击:
损害信息安全的行为。
安全服务:
安全的防护措施。
安全机制:
检测、预防安全攻击或恢复系统的机制对安全的攻击分类:
1被动攻击:
试图学习或者使用来自系统的信息,但并不影响系统的资源。
2主动攻击:
试图改变系统的资源或者影响系统的操作。
被动攻击具有偷听或者监控传输的性质。
目的就是为了能够获取正在传输的信息。
1释放消息内容(Releaseofmessagecontents):
在网络中传输的数据包含了敏感机密信息,对手就有可能获取这些有用的信息。
2流量分析(Trafficanalysis):
如果采取办法屏蔽消息或者其他流的内容,虽然对手不能从中提取有用的消息,但仍然可以观察消息的模式。
主动攻击与对数据流作出一些更改或者伪造假的数据流有关。
1伪装(Masquerade):
伪装发生于一个实体假装成为另一个不同的实体的场合。
2重放(Replay):
被动捕获数据单元后按照原来的顺序重新传送。
3更改消息内容(Modificationofmessages):
更改合法消息的一部分,或者延迟重新排序消息4拒绝服务(Denialofservice):
拒绝服务可以阻止或者禁止通信设备的正常使用或管理。
安全服务五种通用服务1认证(Authentication):
提供某个实体的身份保证2访问控制(Accesscontrol)保护资源,防止对它的非法使用和操纵3数据加密(Dataencryption):
保护信息不被泄露4数据完整性(Integrity):
保护信息以防止非法篡改5不可否认性(No-repudiation):
防止参与通信的一方事后否认
安全机制:
加密机制数字签名机制访问控制机制数据完整性机制交换鉴别机制业务流量填充机制路由控制机制公证机制
网络安全模型模型要求:
设计安全变换的合理算法;生成算法所用的秘密信息(密钥);开发秘密信息的分发方法;指定一种协议使用这种安全算法和秘密信息
网络访问安全模型
二、对称加密和消息机密性
密码学起源:
第1阶段-古典密码1883年Kerchoffs第一次明确提出了编码的原则:
加密算法应建立在算法的公开不影响明文和密钥的安全。
这一原则已得到普遍承认,成为判定密码强度的衡量标准,实际上也成为传统密码和现代密码的分界线第2阶段1949~1975计算机使得基于复杂计算的密码成为可能;相关技术的发展:
1949年Shannon的“TheCommunicationTheoryofSecretSystems”;1967年DavidKahn的《TheCodebreakers》;1971-73年IBMWatson实验室的HorstFeistel等几篇技术报告主要特点:
数据的安全基于密钥而不是算法的保密第3阶段1976~1976年:
Diffie&Hellman的“NewDirectionsinCryptography”提出了不对称密钥密;1977年Rivest,Shamir&Adleman提出了RSA公钥算法;90年代逐步出现椭圆曲线等其他公钥算法;主要特点:
公钥密码使得发送端和接收端无密钥传输的保密通信成为可能;1977年DES正式成为标准;80年代出现“过渡性”的“PostDES”算法,如IDEA,RCx,CAST等;90年代对称密钥密码进一步成熟Rijndael,RC6,MARS,Twofish,Serpent等出现;2001年Rijndael成为DES的替代者
取代明文的字母由其它字母或数字或符号代替,若该明文被视为一个比特序列,则取代涉及到用密文比特模式取代明文比特模式恺撒密码的特点单字母密码(简单取代技术),简单,便于记忆。
缺点:
结构过于简单,密码分析员只使用很少的信息就可预言加密的整个结构
置换通过执行对明文字母的置换,重排明文中的每一个元素,若该明文被视为一个比特序列,则置换涉及到用密文比特模式代替明文比特模式
Feistel加密结构1973年,IBM公司的HorstFeistel描述了大部分的对称密码算法所具有的结构,包括DES。
Feistel网络的特点明文分组分为:
L0,R0,数据的这两部分通过n次循环处理后,再结合起来生成密文分组;每i次循环都以上一循环产生的Li-1和Ri-1和K产生的子密钥Ki作为输入。
一般说来,子密钥Ki与K不同,相互之间也不同,它是用子密钥生成算法从密钥生成的;所有循环的结构都相同,置换在数据的左半部分进行,其方法是先对数据的右半部分应用循环函数F,然后对函数输出结果和数据的左半部分取异或(XOR);循环函数对每次循环都有相同的通用结构,但由循环子密钥Ki来区分;在置换之后,执行由数据两部分互换构成的交换;解密过程与加密过程基本相同。
规则如下:
用密文作为算法的输入,但以相反顺序使用子密钥Ki;意味着加密和解密不需要用两种不同的方法。
Feistel网络的参数选择有哪些分组大小:
较大的分组意味着较强的安全性,但会降低加密解密速度。
64位的分组大小是合理的折中,几乎所有的分组设计中都使用它;密钥大小:
较大的密钥意味着较强的安全性,但会降低加密解密速度。
现代算法中最常用的是128位密钥;循环次数:
本质是单一循环的不足,多重循环能够加强安全性。
典型的循环次数为16;子密钥生成算法:
较大的复杂性会增大密钥分析的难度;循环函数:
较大的复杂性意味着给密码分析带来更大的难度
Feistel网络其他考虑因素快速软件加/解密:
常将加密嵌入到应用程序中,不好用硬件实现的方式,因此速度很重要;分析的简易性:
算法表示简洁清晰,则易于分析算法中加密技术的缺陷
对称加密算法DES
DES概述分组加密算法:
明文和密文为64位分组长度;对称算法:
加密和解密除密钥编排不同外,使用同一算法;密钥长度:
56位;采用混乱和扩散的组合,每个组合先替代后置换,共16轮;只使用了标准的算术和逻辑运算,易于实现
三重DESC-密文P-明文EK(X)-用密钥K加密XDK(Y)-用密钥K解密Y
C=EK3(DK2(EK1(P)))P=DK1(EK2(DK3(C)))
高级加密标准AESAES的设计原则能抵抗所有已知的攻击;在各种平台上易于实现,速度快;设计简单。
Rijndael是一个分组密码算法,其分组长度和密钥长度相互独立,都可以改变。
三、公钥加密和消息认证
公钥密码体制组成部分六个组成部分:
明文、密文;公钥、私钥;加密、解密算法
公钥体制的应用加密解密数字签名密钥交换:
双方交换会话密钥某些算法适合所有的三种应用,而有些可能只适用于这些应用的一种或两种。
对称密码公钥密码
一般要求:
1、加密解密用相同的密钥
2、收发双方必须共享密钥
安全性要求:
1、密钥必须保密
2、没有密钥,解密不可行
3、知道算法和若干密文不足以确定密钥
一般要求:
1、加密解密算法相同,但使用不同的密钥
2、发送方拥有加密或解密密钥,而接收方拥有另一个密钥
安全性要求:
1、两个密钥之一必须保密
2、无解密密钥,解密不可行
3、知道算法和其中一个密钥以及若干密文不能确定另一个密钥
公钥密码算法必须满足的条件:
密钥对的生成在计算上是可行的;用公钥加密明文在计算上是可行的;用私钥解密密文在计算上是可行的;从公钥获得私钥在计算上是不可行的;从公钥和密文来获得明文在计算上是不可行的;加密与解密的顺序没有限制(不是必须的)X=DKR(EKU(X))=EKU(DKR(X))
公开密钥算法:
公钥算法的种类很多,具有代表性的三种密码:
基于整数分解难题(IFP)的算法体制;基于离散对数难题(DLP)算法体制;基于椭圆曲线离散对数难题(ECDLP)的算法体制
消息认证的定义:
消息认证提供了一种证实收到的消息来自可信的源点且未被篡改的过程。
消息认证的目的第一,验证信息的发送者是真正的,而不是冒充的,此为信源识别;第二,验证信息的完整性,在传送或存储过程中未被篡改,重放或延迟等。
消息认证消息认证都会产生一个认证标签,并且将它附在传送的消息上。
有消息认证码和单向hash函数的方法。
对称加密与认证的关系A->B:
E(K,M)提供保密(仅A和B共享密钥K);提供一定程度的认证①仅来自A
②传输中不会被更改,需要某种结构或冗余(检错码,序号和时间戳)
为什么使用消息认证(而不是用常规加密)①适用于消息广播(并不需要每个点都有密钥);②报文加密解密的工作量比较大;③某些应用不关心报文的保密而只关心报文的真实性;④认证码可延长报文的保护期限,同时能处理报文内容(使用加密,当报文解密后,保护就失效了).
消息认证码MAC使用一个密钥生成一个固定大小的小数据块,并加入到消息中,称消息认证码MAC。
MACM=F(KAB,M)①函数F(KAB,M)需要使用一个密钥KAB作为参数,②并以变长的报文内容M作为输入,③其输出是一个定长的短分组。
MAC的实现1接收者可以确信消息M未被改变2、接收者可以确信消息来自所声称的发送者3、如果消息中包含序号,则接收者可以保证消息的正常顺序,从而验证消息的时间性,避免重放攻击
应用最广泛的一类MAC数据认证算法是基于DES的MAC算法
讨论:
MAC函数与加密函数的区别在哪里?
加密函数必须是可逆的;MAC函数可以是一个单向函数。
既然加密可以提供认证,为什么还要使用MAC?
将加密与认证分离,有些场合只关心认证,而不关心保密性。
MAC能够提供数字签名?
不能,因为收发双方共享密钥。
能不能在没有共享密钥的情况下,也能进行对消息的真实性进行认证?
用散列函数
hash函数:
输入为任意长度的消息M;输出为一个固定长度的消息摘要H(M)(MessageDigest)。
hash函数的定义hash函数(哈希函数,散列函数):
M:
变长报文H(M):
定长的散列值主要用于为文件、报文或其它分组数据产生指纹(消息摘要H(M))
hash的要求:
①H能用于任意大小的数据块②H能产生定长的输出③对任何给定的x,H(x)要相对易于计算,使得硬件和软件实现成为实际可能④对任何给定的值h,寻找x使得H(x)=h在计算上是不可行的,即单向性⑤对任何给定的分组x,寻找不等于x的y,使得H(x)=H(y)在计算上是不可行的,即弱碰撞抵抗⑥寻找对任何的(x,y)对使得H(x)=H(y)在计算上是不可行的,即强碰撞抵抗
常用的hash函数SHA-1MD5RIPEMD-160
SHA-1简介1992年NIST(国家标准和技术协会)制定了SHA(128位);1993年SHA成为标准;1994年修改产生SHA-1(160位);1995年SHA-1成为新的标准;SHA-1要求输入消息长度<264;SHA-1的摘要长度为160位;基础是MD4
SHA-1算法逻辑输入:
最大长度为264位的消息;输出:
160位消息摘要;处理:
输入以512位数据块为单位处理;
SHA-1算法描述步骤1:
添加填充位(一个1和若干个0)。
在消息的最后添加适当的填充位使得数据位的长度满足length448mod512。
步骤2:
添加长度。
一个64位块,表示原始消息长度,64位无符号整数。
步骤3:
初始化MD缓冲区。
一个160位MD缓冲区用以保存中间和最终Hash函数的结果。
它可以表示为5个32位的寄存器(A,B,C,D,E)。
步骤4:
以512位数据块为单位处理消息。
四次循环,每次循环有20步。
每次循环都以正在处理的当前512位数据块和160位缓冲器的值ABCDE作为输入,并更新缓冲器内容。
步骤5:
输出。
全部L个512位数据块处理完毕后,输出160位消息摘要。
MD5输入:
任意长度的消息;输出:
128位消息摘要;处理:
以512位输入数据块为单位
RIPEMD-160输入:
任意长度的消息;输出:
长度为160位的消息摘要;处理:
以512位数据块为单位
来源:
欧洲RACEIntegrityPrimitivesEvaluation(RIPE)Project.最早为128位RIPEMD,后改进成为160位消息摘要。
MD5,SHA-1,RIPEMD-160比较
MD5
SHA-1
RIPEMD-160
摘要长度
128
160
160
基本处理单位
512
512
512
步骤
64:
16s/4r
80:
20s/4r
160:
16s/5r2
最大消息
Nolimit
264
Nolimit
基本逻辑函数
4
4
5
附加常量
64
4
9
Hash函数应用:
数字签名数字签名实现信息的不可否认性。
Hash函数应用:
文件保护Hash函数可以用来验证存储在磁盘中的数据是否已被外部应用程序修改过.
hash函数小结:
①hash函数把变长信息映射到定长信息②hash函数不具备可逆性③hash函数速度较快④hash函数与对称密钥加密算法有某种相似性⑤对hash函数的密码分析比对称密钥密码更困难⑥hash函数可用于消息摘要⑦hash函数可用于数字签名数字签名
数字签名实现信息的不可否认性、完整性和身份认证。
公钥的问题(为什么引入PKI):
某个用户可以假装成为用户A,并且公布公钥。
伪造者可以查看所有的发往A的消息,并且可以利用伪造的公钥进行认证,直到真正的用户A发现
可以采用Diffie-Hellman密钥交换方法
解决方法使用公钥基础设施(PublicKeyInfrastructurePKI),通过加入可信任的第三方CA(certificateauthority,认证中心),可以由政府机构和金融机构来担当,在用户之间建立起高度信任。
公钥基础设施组成PKI组成:
①数字证书认证中心(CA);②数字证书注册审批机构(RA);③存储库;④归档库;①数字证书认证中心CA是运营PKI,得到信任的第三方。
②RA为CA验证证书的内容。
③存储库是用户可用的证书数据库。
④CA发行证书、跟踪老的或无效的证书、并维护一个状态信息归档库。
1.建立证书Bob选择一个CA,发送一个请求证书的申请;CA返回给Bob一张申请表;Bob填写申请表,使用由CA提供的软件生成一对密钥;Bob向RA提交申请表,包含了新生成的公钥;RA验证申请人的身份,并创建一个数字证书的请求,发送给CA;CA生成证书,并使用CA的私钥签署证书并把证发送给Bob,整个过程完成.
2.证书格式由于存在多家CA,因此生成的证书内容要有统一的格式标准,否则使用中易出现各种的困惑.使用的标准是X.509国际标准.
X.509证书格式:
X.509方案的核心是与每个用户联系的公开密钥证书。
证书由可信证书权威机构(CA)创建,由CA或用户放在目录中。
证书和签名的表示:
机构Y颁发给用户X的证书表示为Y<
CA<>=CA{V,SN,AI,CA,TA,A,AP}其中V为版本号,SN为证书序列号,AI为算法标识,TA为有效期,A为用户标识,AP为A的公开密钥信息。
证书特点由CA签发的证书具有以下特点:
任何拥有CA公开密钥的用户都可以从证书中提取被该证书认证的用户的公开密钥;除了CA外,任何用户都无法伪造证书或篡改证书的内容而不被发现。
因为证书是不可伪造的,因此在管理证书时可以将证书存放在数据库(在目录服务器中就是目录)中,而无需进行特殊的保护。
用户证书的获取小型网络中:
所有用户都信任同一个CA。
都向该CA预定证书。
证书可以①被存放在一个公共目录(数据库)中,被所有用户所共享②通过访问公共目录的方式获取③直接传递给通信的对方。
因为所有用户都知道CA的公开密钥,因此可以信任由CA签名的证书
实际考虑但是实际的网络环境中用户的数目可能很大:
单一的CA没有足够的能力来为众多的用户提供证书服务;所有用户向同一个CA预定证书是不现实的。
大规模网络环境中,通常采用多个CA提供证书服务。
每个CA向少量用户提供其公开密钥;多个CA采用层次化结构,是不同CA认证的用户能够进行安全地通信。
不同CA认证的用户A和B之间如何获得证书?
假定:
向A颁发证书的CA为X,向B颁发证书的CA是Y。
在通信时,直接将B的证书交给A是没有用的。
因为A不知道Y的公开密钥,不能验证Y<>。
必须让A首先验证Y的公开密钥,继而才能验证Y<>。
因此,必须提供一种在两个CA之间安全交换各自公开密钥的手段
CA之间安全交换各自公开密钥:
CA之间交换公开密钥也采用证书方式:
X签发一个Y的证书并保存在目录中X<
上面的过程中,A是用了一个“证书链”获得B的公开密钥:
X<
Y<
B可以证书链Y<
X.509中对证书链的长度没有限制。
X.509的分层结构:
所有由CA发放给CA的证书必须放在一个目录中,用户必须知道如何找到一条路径获得其他用户的公钥证书。
X.509推荐采用层次结构放置CA证书。
每个CA目录入口中包含两种证书:
转发证书:
有其他CA发给X的证书;反向证书:
X发给其他CA的证书。
3.使用证书
证书撤销X.509的每个证书都包含一个有效期,超过有效期的证书将不能使用。
但在一些情况下需要将没有过期的证书作废:
①用户在旧证书过期之前申请颁发一个新证书②用户密钥被泄漏③CA的密钥被泄漏④用户不再使用某一个CA颁发的证书等。
每个CA需要保存一个证书撤销表(CRL),用来保存所有已经撤销但没有过期的证书。
使用公钥证书分配常规加密密钥,Bob->Alice的通信过程如下:
①准备消息②使用一次性的会话密钥加密消息(常规加密)③使用Alice的公钥加密会话密钥(公钥加密)④将加密过的会话密钥添加到消息上,并且向Alice发送。
四、电子邮件安全
E-mail是Internet上最大的应用,也是唯一的广泛跨平台、跨体系结构的分布式应用。
安全的电子邮件主要是解决身份鉴别和保密性的安全问题。
涉及到的问题:
安全算法的选择;系统邮件的信息格式;如何实现认证和信任管理;邮件服务器的可靠性。
应用实际例子:
PGP、S/MIME
PGP提供可用于电子邮件和文件存储应用的保密与鉴别服务。
PGP简介由于RSA算法计算量极大,在速度上不适合加密大量数据,所以PGP实际上用来加密的不是RSA本身,而是采用传统加密算法IDEA,IDEA加解速度比RSA快得多。
PGP随机生成一个密钥,用IDEA算法对明文加然后用RSA算法对密钥加密。
收件人同样是用RSA解出随机密钥,再用IEDA解出原文
PGP发展特点①选择最好的可用加密算法作为系统的构造模块②将这些算法集成到一个通用的应用程序中,该程序独立于操作系统和处理器,并且基于一个使用方便的小命令集。
③设计了程序、文档,并在Internet上公开④一个商业公司(Viacrypt即NetworkAssociates)提供全兼容、低成本的商业版本。
PGP广泛应用的原因①免费、可用于多平台。
DOS/Windows、Unix、Macintosh。
②选用算法的生命力和安全性公众认可。
③具有广泛的可用性。
④不由政府或标准化组织控制。
⑤PGP正沿着Internet标准的轨迹发展。
PGP—身份认证(数字签名)说明:
1.RSA的强度保证了发送方的身份2.SHA-1的强度保证了签名的有效性
3.DSS/SHA-1可选替代方案。
签名与消息可以分离用户可对消息进行单独的签名日志记录;可执行程序的签名记录,检查病毒;文档多方签名,可以避免嵌套签名
PGP—保密性发送方:
生成消息M并为该消息生成一个随机数作为会话密钥。
用会话密钥加密M。
用接收者的公钥加密会话密钥并与消息M结合接收方:
用自己的私钥解密恢复会话密钥。
用会话密钥解密恢复消息M
PGP—保密性说明采用CAST-128(或IDEA或3DES)、64位CFB方式。
一次性密钥,单向分发,公钥算法保护。
㈠对称加密算法和公钥加密算法的结合可以缩短加密时间㈡用公钥算法解决了会话密钥的分配问题①不需要专门的会话密钥交换协议②由于邮件系统的存储-转发的特性,用握手方式交换密钥不太可能
㈢每个消息都有自己的一次性密钥,进一步增强了保密强度。
所以,每个密钥只加密很小部分的明文内容
㈣公开密钥算法的长度决定安全性RSA(768~3072)、DSS(1024)
保密与认证同时运用两种服务都需要时,发送者先用自己的私钥签名,然后用会话密钥加密,再用接收者的公钥加密会话密钥。
PGP功能服务
数据压缩压缩有利于e-mail传输和文件保存节省空间;压缩的位置:
发生在签名后、加密前。
压缩之前生成签名:
(1)验证时无须再解压缩
(2)压缩算法的多样性;在加密前压缩:
压缩的报文更难分析
E-mail兼容性加密后是任意的8位字节,需要转换到ASCII格式。
Radix64将3字节输入转换到4个ASCII字符,并带CRC校验。
长度扩大33%;与压缩综合后,长度为:
1.33x0.5xM=0.665xM
分段与重组E-mail常常受限制于最大消息长度(一般限制在最大50000字节);在完成所有其他操作(包括radix-64变换)执行之后,PGP对更长的消息要进行分段,每一段分别邮寄。
PGP自动分段并在接收时自动恢复。
签名只需一次,在第一段中。
加密密钥和密钥环
PGP使用四种类型的密钥:
一次性会话密钥,公钥,私钥,基于口令短语的对称密钥
需求:
需要生成不可预测的会话密钥;需要某种手段来标识具体的密钥(一个用户可拥有多个公钥/私钥对,以便随时更换);每个PGP实体需要维护一个保存其公钥/私钥对的文件和一个保存通信对方公钥的文件
密钥标识符(KeyID)
一个用户有多个公钥/私钥对时,接收者如何知道发送者是用了哪个公钥来加密会话密钥,方法:
将公钥与消息一起传送,将一个标识符与一个公钥关联,对一个用户来说做到一一对应
定义KeyID包括64个有效位,(KUamod264)
密钥环(KeyRings)
KeyID在PGP中标识所使用的发送者和接收者的密钥号:
①两个keyID包含在任何PGP消息中提供保密与认证功能②需要一种系统化的方法存储和组织这些key以保证使用
PGP在每一个节点上提供一对数据结构①存储该节点拥有的公钥/私钥对私钥环②存储本节点知道的其他用户的公钥环
加密的私钥
不是把私钥本身存储在密钥环里,而了作了加密处理:
(1).用户选择用于加密私钥的口令短语
(2).使用SHA-1从口令短语产生160位的hash代码.(3).使用cast-128加密私钥,用128位hash代码作为密钥.
公钥管理
PGP虽然采用公钥密码体系,但不是证书。
保护公钥免受攻击是PGP的一个问题。
假定A希望从B处获取一个可靠的公钥,可以使用下面的方法:
①物理从B处获取②能过电话验证③从双方都信任的个体D处获得B的公钥④从可信的认证机构CA获得B的公钥
S/MIME
•S/MIME将会成为商业和机构使用的工业标准.
•PGP为个人e-mail提供安全
•SMTP,RFC822(RFC821)
•SMTP(简单邮件传输协议)存在的问题:
SMTP不能传输可执行文件和其他二进制码(jpegimage),二进制转换成文本格式,现在方案缺少标准
SMTP只能传输7-位ASCII字符的文字
STMP服务器拒绝接收超长邮件等等(与现有标准不一致)
•MIME是对RFC822框架的扩展,致力于解决STMP存在的问题
•MIME的头标定义了5个新的字段
•版本
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 密码学 复习
