国际标准化组织ISO对计算机网络安全的定义
为数据处理系统建立和采用的安全防范技术,以保护计算机硬件、软件和数据不因偶然和恶意的原因遭到破坏、更改和泄露
网络安全威胁主要表现在
• 非授权访问
• 信息泄露或丢失
• 破坏数据完整性
• 拒绝服务攻击DoS
• 利用网络传播病毒等
网络安全包括五个基本要素
• 机密性
• 完整性
• 可用性
• 可控性
• 可审查性
网络安全的分类
根据安全需求将其分为以下几个部分
• 数据保密
• 数据完整性
• 身份验证
• 授权
• 不可抵赖和不可否认
例如A给B发过数据,因此A不能抵赖和否认曾经给B发过数据
根据解决手段可以分为以下几个
• 病毒防范
• 防火墙
• 存取控制(用户是可以进行读功能、写功能还是兼备读写功能)
• 身份鉴别
• 安全综合解决方案
• 根据威胁来源将其分为网络攻击行为、安全漏洞及恶意代码等类别
密码学
密码学包括密码编码学和密码分析学
• 密码编码学:密码体制的设计学
• 密码分析学:在未知密码的情况下从密文推演出明文的技术
相关术语
明文:信息的原始形式(plianttext,记为P)
密文:明文加密后的形式(ciphertext,记为C)
加密:明文变成密文的过程(encrypt,记为E),加密通常是由加密算法实现的
解密:密文还原成明文的过程(decrypt,记为D),解密通常是由解密算法来实现的
密钥:为了有效地控制加密和解密算法的实现,在其处理过程中要有通信双方掌握的专门信息参与,这种专门信息称为密钥(key,记为K)
根据密钥的特点,密码体制分为
非对称密钥体制和对称密钥体制两种
1.对称密钥
又称为传统密钥、秘密密钥、私钥加密(由加密和解密双方秘密保管,不能让第三方得到)、单钥密钥加密算法。即信息的发送方和接收方用一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。对称密钥体制的核心是加密和解密采用相同的密钥。保密性仅取决于对密钥的保密,而算法是公开的
对称密钥加密算法的执行过程
对称密钥加密算法的执行过程.png❀只有在发送方和接收方处才能得到明文,在网络传输的过程中一直是密文的状态
替代密码
将字母a,b,c,d,......,w,x,y,z的自然顺序保持不变,但使之与D,E,F,G,......,X,A,B,C分别对应:
密钥为3
例如:明文caesar cipher对应的密文为FDHVDU FLSKHU
置换密码
按照某一规则重新排列消息中的比特或字符的顺序,密钥的目的是对列编号
密钥:CIPHER
顺序:145326
举例:
明文
attack
begins
at two
密文 abaaitcnw tgtetkso
对称密钥加密算法分为两类:
• 一次只对明文中的单个位(或字节)运算的算法,称为序列算法、序列密码或流密码(stream cipher)
• 对明文的一组位进行运算(这些位组称为分组),称为块密码或分组密码(block cipher)
分组密码体制
分组密码体制.png数据加密标准DES
DES是世界上第一个公认的实用密码算法标准,是一种典型的分组加密算法。加密前,先对整个的明文进行分组,每一个组长64位;使用密钥64位,对每一个64位分组进行加密处理。最后将各组密文串接,得出整个的密文
数据加密标准DES.pngDES经过总共16轮的替代和换位的变换后,使得密码分析者无法获得该算法一般特性以外更多的信息
新一代加密标准AES
AES是一个迭代的、对称密钥分组的密码。算法可以使用128、192和256位密钥,并且用128位分组加密和解密数据,算法迭代次数由分组长度和密钥长度共同决定
AES.pngAES算法在每一轮都采用置换和代替并行地处理整个数据分组,这个分组被编排为一个称作状态阵列的4x4字节矩阵。AES算法的加密实际上就是对输入状态阵列进行一系列运算缠身输出的过程
AES算法输出过程.png2.非对称加密算法
公开密钥体制的方法也叫做非对称加密算法,需要公开密钥(public key)和私有密钥(private key)两个密钥。非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。公开密钥(加密密钥)和非对称加密解密算法是公开的,但私有密钥(解密密钥)是保密的,由密钥的主人妥善保管。公开密钥体制中最著名的是RSA算法
比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。 目前最常用的非对称加密算法是RSA算法。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多
公开密钥密码体制
公开密钥密码体制.png公开密钥算法的特点:
• 发送者用加密密钥PK对明文X加密后,在接受者用解密密钥SK解密,即可恢复出明文,
或写为DSK(EPK(X))= X
• 加密密钥是公开的,但不能用它来解密,即
DPK(EPK(X))≠ X
• 在计算机上可容易地产生成对的PK和SK
• 从已知的PK实际上不可能推导出SK
• 加密和解密算法都是公开的
虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。为了解释这个过程,请看下面的例子:
(1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。
(2) Alice的浏览器向银行的网站请求公钥。
(3) 银行将公钥发送给Alice。
(4) Alice的浏览器使用银行的公钥将自己的对称密钥加密。
(5) Alice的浏览器将加密后的对称密钥发送给银行。
(6) 银行使用私钥解密得到Alice浏览器的对称密钥。
(7) Alice与银行可以使用对称密钥来对沟通的内容进行加密与解密了
数字签名和消息认证
除了信息的保密之外,如何保证信息的来源方是真实的,保证收到的信息的可靠的而没有被非法篡改也是非常重要的。认证包括对用户身份的认证和对消息正确性的认证两种方式
用户认证用于鉴别用户的身份是否是合法用户,可以利用数字签名技术来实现的
消息认证(又称报文鉴别)主要用于验证所受到的消息确实是来自真正的发送方且未被修改的消息,也可以验证消息的顺序和及时性
消息认证
用于消息认证最常用的是消息认证码(MAC)和散列函数
消息认证码是在一个密钥的控制下将任意长的消息映射到一个简短的定长数据分组,将它附加在消息后。接受者通过重新计算MAC来对消息进行认证
数字签名
又称公钥数字签名,是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用
当通信双方发生了下列情况时,数字签名技术能够解决引发的争端:
否认:发送方不承认自己发送过某一报文
伪造:接收方自己伪造一份报文,并声称它来自发送方
冒充:网络上的某个用户冒充另一个用户接收或发送报文
篡改:接收方对收到的信息进行篡改
每个人都有一对“钥匙”(数字身份),其中一个只有她/他本人知道(密钥),另一个公开的(公钥)。签名的时候用密钥,验证签名的时候用公钥。又因为任何人都可以落款声称她/他就是你,因此公钥必须向接受者信任的人(身份认证机构)来注册。注册后身份认证机构给你发一数字证书。对文件签名后,你把此数字证书连同文件及签名一起发给接受者,接受者向身份认证机构求证是否真地是用你的密钥签发的文件
目前应用最广泛的数字签名包括
• Hash签名
• DSS签名
• RSA签名
• ELGamal数字签名
采用公钥的数字签名
数字签名.png若Alice要抵赖曾发送报文给Bob,Bob可将P及DA(P)出示给第三者。第三者很容易证实Alice确实发送X给Bob
如何解决两个实体通过网络实现对称密钥的共享?
具有公信力的密钥分发中心KDC(Key distribution center)来作为诸多实体间的中介
密钥分发中心KDC
Alice、Bob需要共享对称密钥
KDC:为每个注册的用户提供不同的密钥服务
Alice,Bob在KDC注册后获取了自己的对称密钥,KA-KDC KB-KDC
当Alice获取Bob的公钥时(可以从网站、E-mail,甚至软盘),如何能够使她相信这就是Bob的公钥,而不是Trudy的?
具有公信力的认证机构CA(Certification authority)
认证机构CA为特定的实体管理公开密钥。实体(个人或路由器)可以在CA注册公开密钥
实体提供“身份证明”给CA,CA创建信任状给实体与公开密钥进行绑定,由CA对信任状进行数字签名
当Alice需要Bob的公开密钥时:
获取Bob信任状(从Bob或其他什么地方),把CA提供的公开密钥对Bob的信任状进行认证和解码,从而得到Bob的公开密钥
❀既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证
整体过程
1.鲍勃有两把钥匙,一把是公钥,另一把是私钥
1.png2.鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把
2.png3.苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果
3.png4.鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密
4.png5.鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)
5.png6.然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)
6.png7.鲍勃将这个签名,附在信件下面,一起发给苏珊
7.png8.苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的
8.png9.苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过
摘要是不能反推出内容的,但是有些不怀好意的人可能根本不想知道信件的内容,他就是想让你相信内容是他发送的而已。但是如果摘要需要进行加密,不怀好意的人用他自己的私钥进行加密后,你用真实发送方的公钥是解不开的。所以数字签名可以保证内容确实是由发送方发送的,而且内容没有被篡改
10.复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密
10.png11.后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)
11.png12.鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了
12.png13.苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的
13.png"数字证书"的实例
1.首先,客户端向服务器发出加密请求
2.服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端
2.png3.客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内
3.png4.如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告
4.png5.如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告
5.png6.如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息
6.png
网友评论