开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第22天,点击查看活动详情
数字签名算法
数字签名
在信息安全领域中,数字签名是保证数据完整性和抗否认性的重要安全技术。数字签名技术往往将消息摘要技术和公开密钥加密技术结合起来,确保信息在传输过程中不被非法篡改、破坏,并能对消息发送者进行身份认证,防止攻击者冒充他人发送虚假信息。
完整的数据加密及身份认证流程
消息摘要
-
将消息作为函数的输入数据进行处理,生成定长的输出数据(即消息摘要),并将其作为消息的附加信息
-
利用Hash函数的两个基本特性
- 输入数据的任何细微变化将导致输出数据的巨大改变
- 难以逆运算
-
消息接受方能验证收到的消息在传输过程中是否发生了改变,从而保证了消息的完整性和有效性。消息摘要有时也称为消息的数字指纹。
-
两个典型的Hash算法:MD5算法和SHA-1算法
单向散列函数
Hash函数特性
- 单向性:已知哈希函数的输出,要求它的输入是困难的,即已知c=hash(m),求m是困难的
- 快速性:已知m,计算hash(m)是容易的
- 抗碰撞性:已知hash(m1)=c1,构造m2使hash(m2)=c1是困难的
- 雪崩性:c=hash(m),c的每一比特都与m的每一比特有关,并有高度敏感性。即每改变m的一个比特,都将对c产生明显影响
- 接受的输入数据没有长度限制:对输入任何长度的数据能够生成该输入消息固定长度的输出。
Hash 函数的安全性
-
攻击者的目标通常是找到两个不同消息映射为同一值。
-
对函数有二种基本攻击方法
- 穷举攻击法(Exhaustive Attack)
- 生日攻击(Birthday Attack)
MD5算法
- MD5的全称是Message-Digest Algorithm 5
- 在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来 MD5将任意长度的输入消息变换成一个128bit的大整数,并且它是一个不可逆的变换算法。
- MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。
- MD5还广泛用于加密和解密技术上。比如在UNIX系统中用户的密码就是以MD5(或其它类似的算法)经加密后存储在文件系统中。
SHA-1算法
- 信息填充 SHA-1的消息填充方法与MD5相同
- 初始化消息摘要(MD)缓存器 SHA-1使用160位的缓存来存放算法的中间结果和最终的散列值。这个缓存由5个32位的寄存器A, B, C,D,E构成。
消息认证码
消息认证码(Message Authentication Code,MAC)是一种实现消息认证的方法。MAC是由消息M和密钥K的一个函数值MAC=CK(M)产生的。其中M是变长的消息,K是仅由收发双方共享的密钥,CK(M)是定长的认证码。
基于对称密钥认证(Kerberos)
对称加密方法
通信双方A和B共享一个通信密钥,在A方请求鉴别时,B方向A方发送一个 随机数R,A将其加密后送还B,B方使用同一个密钥对其进行解密,并同原来的R进行比较,以进行鉴别。
-
特点:
- 鉴别是单方向
- 要求端系统可靠
- 窃听者易进行选择明文攻击
Kerberos
提供了一个集中式的认证服务器结构,认证服务器的功能是实现用户与其访问的服务器间的相互鉴别。 其实现采用的是对称密钥加密技术
基于非对称密钥认证(PKI)
PKI(Public Key Infrastructure)
-
用公钥原理和技术实施和提供安全服务的具有普适性的安全基础设施
-
一个完整的PKI应该包括5大系统
认证机构(CA)
证书库
密钥备份和恢复系统
证书作废处理系统
PKI应用接口系统
PKI 基本服务
- 认证 采用数字签名技术,签名作用于相应的数据之上 被认证的数据 —— 数据源认证服务 用户发送的远程请求 —— 身份认证服务
- 完整性 PKI采用了两种技术 数字签名:既可以是实体认证,也可以是数据完整性 MAC(消息认证码):如DES-CBC-MAC等
- 保密性 用公钥分发随机密钥,然后用随机密钥对数据加密
- 不可否认 发送方的不可否认 —— 数字签名 接受方的不可否认 —— 收条 + 数字签名