第七讲网络安全7.1网络安全问题概述7.1.1计算机网络面临的安全性威胁7.1.2计算机网络安全的内容7.1.3一般的数据加密模型7.2两类密码体制7.2.1对称密钥密码体制7.2.2公钥密码体制第七讲网络安全(续)7.3数字签名7.4鉴别7.4.1报文鉴别7.4.2实体鉴别7.5密钥分配7.5.1对称密钥的分配7.5,2公钥的分配第七讲网络安全(续)7.6因特网使用的安全协议7.6.1网络层安全协议7.6.2运输层安全协议7.6.3应用层的安全协议破7.7链路加密与端到端加密7.7.1链路加密7.7.2端到端加密7.8防火墙敌友之间:Alice,Bob,Trudy三位网络安全领域里的“知名人士”Bob,Alice(恋人!)需要进行“私密”的通信Trudy,则是“侵入者”有可能对他人的通信进行截获、删改活动Figure7.1goeshere7.1网络安全问题概述7.1.1计算机网络面临的安全性威胁计算机网络上的通信面临以下的四种威胁:(1)截获——从网络上窃听他人的通信内容。(2)中断——有意中断他人在网络上的通信。(3)篡改——故意篡改网络上传送的报文。(4)伪造——伪造信息在网络上传送。截获信息的攻击称为被动攻击,而更改信息和拒绝用户使用资源的攻击称为主动攻击。在被动攻击中,攻击者只是观察和分析某一个协议数据单元PDU而不干扰信息流。主动攻击是指攻击者对某个连接中通过的PDU进行各种处理。对网络的被动攻击和主动攻击截获篡改伪造中断被动攻击主动攻击目的站源站源站源站源站目的站目的站目的站截获--被动攻击(主要的对应策略为加密传输)中断--主动攻击(主要的对应策略为信道冗余,防火墙的等)篡改--主动攻击(主要的对应策略为报文鉴别)伪造--主动攻击(主要的对应策略为报文鉴别)因特网的安全隐患举例分组泄漏(Packetsniffing):广播介质间谍NIC可以读出所有传输的分组即可以读出所有未加密的数据(e.g.passwords)e.g.:C在“嗅“B的分组ABCsrc:Bdest:Apayload因特网安全隐患IP欺骗(Spoofing):可以应用程序中产生“原始”的IP分组,将任意的值植入IP信源字段接受方往往分辨不出信源地址的真假e.g.:C假装成BABCsrc:Bdest:Apayload因特网安全隐患拒绝服务(Denialofservice,DOS):发送“洪水”分组将接受方“淹死”分布式DOS(DDOS):多个协调的信源向接受端发起攻击e.g.,C和远程主机同步攻击AABCSYNSYNSYNSYNSYNSYNSYN(1)防止析出报文内容;(2)防止通信量分析;(3)检测更改报文流;(4)检测拒绝报文服务;(5)检测伪造初始化连接。对付被动攻击可采用密码加密技术;对付主动攻击则需密码加密技术和适当的鉴别技术相结合计算机网络通信安全的目标(1)计算机病毒——会“传染”其他程序的程序,“传染”是通过修改其他程序来把自身或其变种复制进去完成的。(2)计算机蠕虫——通过网络的通信功能将自身从一个结点发送到另一个结点并启动运行的程序。(3)特洛伊木马——一种程序,它执行的功能超出所声称的功能。(4)逻辑炸弹——一种当运行环境满足某种特定条件时执行其他特殊功能的程序。恶意程序(rogueprogram)7.1.2计算机网络安全的内容保密性为用户提供安全可靠的保密通信是计算机网络安全最为的重要内容。网络的保密性机制除了为用户提供保密通信外,也是许多其他安全机制的基础。安全协议的设计目前在安全协议的设计方面,主要针对具体的攻击设计安全的通信协议。访问控制也叫存取控制或介入控制。必须对介入网络的权限加以控制,并规定每个用户的介入权限。明文X截获密文Y7.1.3一般的数据加密模型加密密钥K明文X密文Y截取者篡改ABE运算加密算法D运算解密算法因特网解密密钥K明文X用加密算法E和加密密钥K加密,得到密文C=EK(X)在传送过程中可能出现密文截取者到了接收端,利用解密算法D和解密密钥K,解出明文为DK(Y)=DK(EK(X))=X截取者又称为攻击者,或入侵者密钥通常是由一个密钥源提供,当密钥需要向远地传送时,一定要通过另一个安全信道Kerckhoff法则:算法是公开的,密钥是保密的注:密码术是被动攻击主要防护策略7.2两类密码体制7.2.1对称密钥密码体制所谓常规密钥密码体制,即加密密钥与解密密钥是相同的密码体制。这种加密系统又称为对称密钥系统。数据加密标准DES属于对称密钥密码体制。对称密钥密码体制--对称密钥密码术:DESDES:DataEncryptionStandard美国加密标准[NIST1993]56-bit对称密钥,64bit明文输入DES安全性如何?DES挑战赛:对使用56-bit密钥的短语(“Strongcryptographymakestheworldasaferplace”)进行的解码(bruteforce)花费了4个月尚未找到“后门”解码方法让DES更安全对每个数据块顺序使用三层DES(3-DES)使用块状密码链(usecipher-blockchaining)对称密钥密码术:DES初始置换16轮相同的运算,每次使用不同的48bits密钥最终置换DES运算公开密钥密码术对称密码密码术要求收发双方约定共享的密钥Q:如何进行密钥的约定(特别是在从未“谋面”的情况下)?公开密钥密码术完全不同于对称密钥的加密方法[Diffie-Hellman76,RSA78]收发双方不共享密钥加密的密钥匙公开的(公诸于世)解码密钥是保密的(只有接收方知道)公共密钥密码术Figure7.7goeshere公共密钥加密算法需要加密d()和解密e()d(e(m))=mBBBBmm为d()和e()选取公开密钥和秘密密钥mmBB两个相关的要求:12RSA:Rivest,Shamir,Adelson算法公钥算法的特点发送者A用B的公钥PKB对明文X加密(E运算)后,在接收者B用自己的私钥SKB解密(D运算),即可恢复出明文:(7-4)解密密钥是接收者专用的秘钥,对其他人都保密。加密密钥是公开的,但不能用它来解密,即XXEDYDPKSKSK))(()(BBB(7-5)XXEDPKPK))((BB公钥算法的特点(续)加密和解密的运算可以对调,即在计算机上可容易地产生成对的PK和SK。从已知的PK实际上不可能推导出SK,即从PK到SK是“计算上不可能的”。加密和解密算法都是公开的。XXEDXDEBBBBPKSKSKPK))(())(((7-6)7.3数字签名数字签名必须保证以下三点:(1)报文鉴别——接收者能够核实发送者对报文的签名;(2)报文的完整性——接收者确信所收到的数据和发送者发送的完全一样而没有被篡改过;(3)不可否认——接收者不能伪造对报文的签名。现在已有多种实现各种数字签名的方法。但采用公钥算法更容易实现。数字签名模拟手签的加密技术.发送方(Bob)对文件进行数字签名,确定他是文件的拥有者和创建者.可供鉴定,不可否认证据:接受方(Alice)可以确认这是Bob发送的文件.对报文进行简单的数字签名:Bob使用其私钥dB对m加密,创建了签过名的报文,dB(m).Bob将原始报文m和数字签名dB(m)发给Alice.数字签名(续)假设Alice收到了原始报文m,和数字签名dB(m)Alice核对m报文的签名过程是使用Bob的公钥eB对数字签名档dB(m)进行解密,然后确认是否eB(dB(m))=m.如果eB(dB(m))=m,那么无论是谁签署了原始报文m,必定使用了Bob的私钥。Alice即可确认:Bob签署了原始报文m.不会是他人签署的m.Bob签署的就是m而不是m’.不可否认:Alice可以将原始报文m,和数字签名dB(m)提交法庭作为Bob签署了报文m的证据.密文)(AXDSK数字签名的实现D运算明文X明文XABA的私钥SKA因特网签名核实签名E运算密文)(AXDSKA的公钥PKA具有保密性的数字签名)(AXDSK)(AXDSK核实签名解密加密签名E运算D运算明文X明文XABA的私钥SKA因特网E运算B的私钥SKBD运算加密与解密签名与核实签名))((ABXDESKPKB的公钥PKBA的公钥PKA密文7.4鉴别在信息的安全领域中,对付被动攻击的重要措施是加密,而对付主动攻击中的篡改和伪造则要用鉴别(authentication)。报文鉴别使得通信的接收方能够验证所收到的报文(发送者和报文内容、发送时间、序列等)的真伪。鉴别可分为:报文鉴别即所收到的报文的却是报文的发送者所发的,而不是他人篡改或伪造的实体鉴别7.4.1报文鉴别许多报文并不需要加密但却需要数字签名,以便让报文的接收者能够鉴别报文的真伪。对长报文进行公钥加密计算成本非常昂贵当我们传送不需要加密的报文时,应当使接收者能用很简单的方法鉴别报文的真伪。报文摘要MD(MessageDigest)A将报文X经过报文摘要算法运算后得出很短的报文摘要H。然后然后用自己的私钥对H进行D运算,即进行数字签名。得出已签名的报文摘要D(H)后,并将其追加在报文X后面发送给B。B收到报文后首先把已签名的D(H)和报文X分离。然后再做两件事。用A的公钥对D(H)进行E运算,得出报文摘要H。对报文X进行报文摘要运算,看是否能够得出同样的报文摘要H。如一样,就能以极高的概率断定收到的报文是A产生的。否则就不是。报文摘要的实现A比较签名核实签名报文XHD运算D(H)A的私钥报文XD(H)B报文摘要报文XD(H)发送E运算H签名的报文摘要H报文摘要运算A的公钥报文摘要运算报文摘要报文摘要因特网最常用的报文摘要是MD5和SHA-17.4.2实体鉴别实体鉴别和报文鉴别不同。报文鉴别是对每一个收到的报文都要鉴别报文的发送者,而实体鉴别是在系统接入的全部持续时间内对和自己通信的对方实体只需验证一次。最简单的实体鉴别过程A发送给B的报文的被加密,使用的是对称密钥KAB。B收到此报文后,用共享对称密钥KAB进行解密,因而鉴别了实体A的身份。ABA,口令KAB明显的漏洞入侵者C可以从网络上截获A发给B的报文。C并不需要破译这个报文(因为这可能很花很多时间)而可以直接把这个由A加密的报文发送给B,使B误认为C就是A。然后B就向伪装是A的C发送应发给A的报文。这就叫做重放攻击(replayattack)。IP欺骗为了对付重放攻击,可以使用不重数(nonce)。不重数就是一个不重复使用的大随机数,即“一次一数”。使用不重数进行鉴别ABA,RARBKABRARBKAB,时间中间人攻击AB我是A中间人C我是ARBRBSKC请把公钥发来PKCRBRBSKA请把公钥发来PKADATAPKCDATAPKA时间中间人攻击说明A向B发送“我是A”的报文,并给出了自己的身份。此报文被“中间人”C截获,C把此报文原封不动地转发给B。B选择一个不重数RB发送给A,但同样被C截获后也照样转发给A。中间人C用自己的私钥SKC对RB加密后发回给B,使B误以为是A发来的。A收到RB后也用自己的私钥SKA对RB加密后发回给B,中途被C截获并丢弃。B向A索取其公钥,此报文被C截获后转发给A。C把自己的公钥PKC冒充是A的发送给B,而C也截获到A发送给B的公钥PKA。B用收到的公钥PKC(以为是A的)对数据加密发送给A。C截获后用自己的私钥SKC解密,复制一份留下,再用A的公钥PKA对数据加密后发送给A。A收到数据后,用自己的私钥SKA解密,以为和B进行了保密通信。其实,B发送给A的加密数据已被中间人C截获并解密了一份。但A和B却都不知道。7.5密钥分配密钥管理包括:密钥的产生、分配、注入、验证和使用。本节只讨论密钥的分配。密钥分配是密钥管理中最大的问题。密钥必须通过最安全的通路进行分配。目前常用的密钥分配方式是设立密钥分配中心KDC(KeyDistribution