概述
摘要算法:将任意长的输入消息串变换为唯一的固定长的输出(无论数据大小),以实现其唯一认证标识。
摘要算法,又称为无密钥加密算法
实现方式:MDx系列算法 SHA算法
摘要算法优缺点
优点:
可以保证数据的完整性。
缺点:
无法保证数据的真实性,即不能确定数据和散列值是来自发送方的,因为攻击者完全可以将数据和散列值一起替换。
经典实现 Hash函数(单向杂凑函数、单向散列函数)的性质
1.唯一性 同一个输入的Hash操作,只能得到唯一的输出
2.压缩性 通常输出h(x)的长度要小于x自身的长度
3.高效性 每一个输入,均易于计算其输出值
4.单向性 完全不可逆,无法通过输出串来直接恢复源数据
5.不可预见性 输出值与源数据大小无关,直观上也无明显关系
6.抗碰撞性 无法找到两个不同的输入产出同一个输出值
非对称密码技术与摘要算法的应用(数字签名)
数字签名:附加在数据单元上的一些数据,或是对数据单元所作的密码变换
采用电子形式实现鉴别,用于鉴定签名人的身份及数据内容的认可,防止源点或终点抵赖或欺骗
数字签名为广义“加密”过程,数字签名验证为广义“解密”过程
数字签名标准(DSS Digital Signature Standard)
DSA NIST开发 免费
RSA 非对称密钥加密技术 对手ECC
数字签名的主要功能(主要是 完整性 可认证 不可抵赖)
- 防冒充(伪造) 私有密钥只有签名者自己知道
- 可鉴别身份 接收方必须能够鉴别发送方所宣称的身份
- 防篡改 签名可与原有文件形成一个混合的整体数据
- 防重放 对签名报文添加流水号、时间戳等技术,但是需要解决时钟同步问题
- 防抵赖 要求接收者返回一个自己签名的表示收到的报文
- 提供保密性 数字签名可以加密要签名的消息。也可不要
数字签名与现实签名的区别:现实世界签名副本与原件有区别。数字签名则无区别且是用特定的签名把特定签名者与消息绑定在一起
常用数字签名算法
- 普通数字签名算法有 RSA、Elgamal、椭圆曲线数字ECC签名算法
- 特殊数字签名有盲签名、代理 签名、群签名
消息认证
目前的认证技术:用户的认证和对消息的认证两种方式。
消息认证
优缺点:
优点:消息认证只能保障完整性和可认证
缺点:无法保证不可抵赖性。
消息认证码(mac)
概述:是一种确认完整性并认证的技术
实现方式
-
用对称密钥加密消息得到的密文就可作为消息认证码。因为,消息的 发送方和接收方共享一个密钥,对于接收方而言,只有消息的发送者才能够成功将消息加密。当然,在这种方式下的消息认证码无法将消息与任何一方关联,也就是发送方可以否认消息的发送,因为密钥由双方共享。
-
发送方用自己的私钥对消息加密得到的密文 (签名)也可作为消息认 证码。但是前面分析过,对整个信息内容进行加密,在实际应用中代价过高,因此不可行
-
通过散列函数对明文消息计算得到的消息摘要可以作为消息认证码。 目前,基于**散列函数的消息认证码 (HMAC)**是常用的生成方式,HMAC已被用于安全套接字层/传输层安全和安全电子交易 (SecureElectronicTansaction,SET)等协议标准中
数字签名图示
缺点
- 因发送原始数据和加密签名,所以数据会占用带宽
- 解密麻烦
- 验证麻烦需要解密在进行注意核对
解决方案: 采用报文摘要算法加密数据,生成定长的签名,接收方只需拿原始数据进行hash核对即可。如下图:
数字签名不可避免的问题(中间人攻击)
解决方式
设置一个机构CA,证明这些机构是权威官方的。
实现方式
- CA验证实体真实身份
- 将该实体和公钥绑定到一起,然后由它对这个证书进行数字签名
- 证书拥有者将证书发布到网上,供希望与其通信的人下载,这样使得:
- 即使伪造者替换证书,接收放也能看出伪造。
- 替换证书公钥 通过摘要检查也能看到证书被修改
数字证书
本质:一个小的计算机文件
生成步骤:密钥生成-注册-验证注册者身份-证书生成
机构:著名的有VeriSign entrust safescrypt
证书技术细节:公钥证书是包含持证主体(可人可物),包含主体信息,由可信任机构CA签署。用于确保主体与公钥关系绑定。证书格式为X.509
X.509标准
由ITU(国际电信联盟)指定的标准 包含字段
- 版本 x.509版本
- 系列号 加上ca的名字可唯一确定这本证书
- 签名算法 签署证书所用的算法
- 发布者 ca的x.509的名字
- 有效期
- 持有者姓名
- 公钥 持有者的公钥和所用算法的编号
- 发布者id
- 持有者id
- 扩展
- 签名 用ca私钥签名的证书的签名
证书过期后会会被保存到CRL(证书撤销列表)中
数字证书验证时
- 检查签名
- 证书有效期
- 是否在CRL中
PKI
即公共基础设施,是一套软硬件系统和安全策略的集合,实现大规模网络公钥分发问题,是建立大规模网络中信任基础
组成:
- 用户 认证机构(ca) 仓库(保存证书的数据库)
- ra(注册机构):负责受理用户申请证书的机构,签发是再由ca进行的。
不足之处
- 资源代价高 pki认证管理过程复杂 且消耗资源代价高
- 私钥的安全性 pki没有对用户私钥存储提出明确措施
信任链
作用:当双方通信都需要彼此ca的公钥,若ca不同,则需生成证书层次,即信任链,因为根证书直接嵌入软件或硬件中,系统对根证书签发的数字证书都表示信任,所以只要验证其办发数字证书ca的根证书,也就信任了网络实体获得的数字证书。
问题思考
-
消息认证码无法防止否认,那为什么数字签名却可以防止否认呢?
答:消息认证码是对称密钥,可抵赖。数字签名是非对称用私钥加密,只有发送方公钥可解密,不可抵赖,第三方可进行验证,保障了不可抵赖性。 -
单单数字签名可以保证机密性嘛?
答:不可,签名只是发送数据的凭证,是用来验证数据完整性、身份认证以及保障不可抵赖性的。 -
数字签名可以随意复制嘛?如果可以的话,那岂不是密钥意义了?
答:在数字签名当中,消息与签名之间的是对应关系的,消息不同,签名的内同也不同。因此,复制来的签名最终在接收放验证时是不会通过的。