概述
整体结构
密码体制
对称密钥密码体制
对称密钥就是指加密和解密使用的密钥是同一个
比较有名的加密算法就是DES
和AES
。
DES 数据加密标准
步骤
- 对明文分组,每一组都为64位的二进制数据
- 对每一个分组的数据进行加密
- 拼接所有分组,得到整个密文
特点
- 保密性取决于对密钥的保密性,因为算法是公开的
- 密钥的长度为
64
位,其中实际的密钥长度只有55
位,8
位用于奇偶校验 - 56位的
DES
已经被认为是不安全的:经过这么多年的相关研究与计算机的发展,破译DES
已不是难事
三重DES
把一个64位明文用一个密钥
加密,再使用另一个密钥
解密,然后再使用第一个密钥
加密,得到最终的密文
。即:
AES 高级加密标准
是DES
的取代方案,其使用的加密算法为Rijindael
算法。
特点
- 一对一
再有第三方就不保密了,所以只能一对一。 - 双向通信
由于双方使用同一个密钥加密和解密,所以数据可以双向安全传输。 - 密钥的传输和分配存在难度
- 事先约定密钥:
会给密钥的管理和更换带来极大的不便 - 使用信使传送密钥:
不适用于高度自动化的计算机网络 - 使用密钥分配中心
KPC
:
使网络成本增加
- 事先约定密钥:
- 仍旧在使用
因为公钥密码体制也存在一定的缺陷,并不能完全替代对称密钥密码体制
DES
和AES
对比总结
密码体制 | 传输方向 | 端点数量 | 缺点 |
---|---|---|---|
对称密钥 | 双向 | 一对一 | 密钥分配存在困难 |
公钥 | 单向 | 多对一 | 算法开销大 |
公钥密码体制
产生原因:
- 对称密钥在传输和分配上的问题
- 对
数字签名
的需求
密钥组成
假设使用的的公钥为
,
操作为 “解密” 的计算操作,
操作为 “加密” 的计算操作
公钥 PK:
向公众公开,用于对数据加密
无法用于解密使用同一个公钥加密的数据
无法逆向求出对应私钥
私钥 SK:
自己保留,用于对数据进行解密
可以用于解密使用公钥加密过的数据:
特点
- 多对一
公钥具有公开的性质,私钥只有自己才保有,所以其他用户都可以使用公钥加密数据并传输。 - 单向保密通信
因为如果反过来,在发送给别人时,使用私钥加密,则所有知道公钥的都可以解密该数据,则不具有保密性。所以只有“别人”向“自己”发时才具有保密性。 - 开销大
因为要求计算出的私钥和公钥满足上面说过的特性。
数字签名
数字签名在网络中的作用,就好比盖章、亲笔签名在实际生活中的作用,都是用于确保和证明消息的真实性。
流程
- 发送方
是用自己的私钥
对报文
进行
(私钥解密时的计算操作)运算加密,得到密文
- 接受方
使用
的公钥
对密文
进行
(公钥加密时的计算操作)运算解密,得到原报文
特点
- 报文鉴别:其他人无法伪造报文
只有发送方有自己的私钥 - 报文完整性:可以确保收到的报文未被篡改
接收方在收到加密后的报文后进行解密,并对报文内容的可读性进行判断,如果传输时的密文被篡改,则解密后无法得到具有可读性的报文,即解密后得到乱码 - 不可抵赖性:发送方不可否认对报文的签名
对于接收方来说,可以拿到密文和发送方的公钥,可将这二者交由第三方进行公证
由于第1、2两点性质、以及公钥性质的存在,又且仅有发送方的报文能被正常解密,就连接收方自己都无法伪造(公钥无法解密被公钥自己加密的数据)
鉴别
鉴别,是指对通信的对象、通信的内容进行确认。
相似的概念:授权
:确认过程是否被允许加密
:通过加密运算,确保数据安全
报文鉴别
对通信的消息内容进行确认,常用的方法就是密码散列函数
。
密码散列函数
长度固定,且较短
单向函数,是一种多对一的映射:
即对于函数的计算结果
,存在多个
满足
:
MD5
MD:Message Digest,报文摘要
流程
- 模
求余,并追加在报文之后
- 在报文和余数之间填充
()一个1和若干个0),让最终的长度为
512
的整数倍 - 追加和填充之后的数据在进行复杂的分块运算
特点
- 结果的每一位和原来数据的每一位都有关
- 该算法已经存在破解的方法
SHA
与MD5
类似,但长度为160
位,比MD5
的128
多了25%
。
特点
- 比
MD5
更安全 - 计算更慢
- 相关的版本有多个
SHA-1
:已被证明安全性未达到设计标准,逐渐被后面两个版本取代SHA-2
SHA-3[W-SHA3]
MD5
和SHA
对比总结
散列算法 | 散列值长度 | 安全性 | 计算效率 |
---|---|---|---|
MD5 | 128 | 偏低 | 较高 |
SHA | 160 | 较高 | 较低 |
密钥分配
当今的网络环境中,密钥需要频繁更换以保证可靠性。所以密钥的分配是密钥管理中最大的问题。
对称密钥的分配
密钥分配中心 KDC
特点
- 用户需要在KDC进行登记,登记时安装用于和KDC通信的主密钥
- KDC中保存了用于KDC和主机之间通信的主密钥,用于KDC与主机之间加密通信
- KDC提供的用于真正会话双方通信的密钥具有临时性(仅可以使用一次)
流程
- 在A和B双方通信前,发送方A先和
KDC
通信,以加密的方式取得A、B通信的密钥 - 再将
发送给B
- A和B再通过
进行通信
Kerberos协议
Kerberos即使鉴别协议,也是KDC
特点
将KDC
拆为AS
、TGS
两部分:
AS
负责产生TGS
通信的加密密钥TGS
负责产生和目标主机会话的密钥
其他参考
公钥的分配
CA
:认证中心CA
分配的证书用于认证某个公钥是否为某个实体所拥有的(通过向CA
查询)
安全协议
网络层
IPsec
协议族
工作方式:
- 隧道式:在原始IP数据报前后添加若干控制信息,形成新的IP数据报
- 传输式:在原始IP数据报的报文段的前后添加若干控制信息,形成新的IP数据报
运输层
SSL
与TLS
TLS
是SSL
的改进版,也有用SSL
表示SSL/TLS
运输层级
- 在不使用
SSL
协议时,应用层通过TCP套接字来使用TCP的服务 - 在使用了
SSL
协议后,应用层通过SSL套接字来调用SSL子层的服务,SSL子层再通过TCP套接字来使用TCP的服务
安全服务
SSL
服务器鉴别SSL
客户端鉴别SSL
会话加密
大致流程
- 协商加密算法:浏览器A向服务器B发送自己的SSL版本号和可选的加密算法,B从中选择自己支持的加密算法
- 服务器鉴别:B向A发送自己的数字证书,A使用CA发布的公钥进行鉴别
- 会话密钥计算:A产生一个用于本次会话加密的随机数作为会话的密钥,并使用B的公钥加密后传输给B
- 安全数据传输:双方使用会话密钥进行加密的数据传输