第八讲 数字签名和认证协议
数字签名的概念
- 数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。
- 消息认证码和数字签名的区别:
消息的(未加密的)散列,如果附加到消息本身,只能防止对消息(或散列本身)的意外更改,因为修改消息的攻击者可以简单地计算一个新的散列并使用它而不是原来的。所以这只会提供完整性。
如果散列通过不同的受保护通道传输,它还可以保护消息免受修改。这有时与非常大的文件(如 ISO 映像)的哈希一起使用,其中哈希本身通过 HTTPS 传递,而大文件可以通过不安全的通道传输。
甲消息认证码(MAC)(有时也被称为密钥的散列)由谁不知道的秘密密钥(由发送者和接收者共享)可防止消息伪造。
这意味着接收者可以伪造任何消息——因此我们拥有完整性和认证(只要接收者没有分裂的个性),但不是不可否认性。
此外,攻击者可以重放使用相同密钥验证的早期消息,因此协议应该对此采取措施(例如,通过包括消息编号或时间戳)。(另外,在双方对话的情况下,确保双方拥有不同的密钥,或者通过另一种方式确保攻击者无法将来自一方的消息发送回这一方。)
MAC 可以从未加密的散列(例如使用 HMAC 构造)创建,或直接创建为 MAC 算法。
使用私钥创建(数字)签名,并使用非对称密钥对的相应公钥进行验证。只有私钥的持有者才能创建这个签名,通常任何知道公钥的人都可以验证它。数字签名不能阻止前面提到的重放攻击。
指定验证者签名有一种特殊情况,只有知道另一个密钥的人才能验证,但这通常不是说“签名”时的意思。
因此,这提供了所有完整性、身份验证和不可否认性。
大多数签名方案实际上是在散列函数的帮助下实现的。此外,它们通常比 MAC 慢,因此通常仅在还没有共享机密或不可否认性很重要时才使用。
可以参考:HASH、MAC和数字签名有什么不同?
数字签名的要求
-
传统签名的基本特点:
① 必须能验证签名者、签名时间
② 必须能够认证被签名的消息内容
③ 签名能够由第三方仲裁,以解决争执 -
数字签名是传统签名的数字化,基本要求:
① 签名必须是与消息相关的二进制位串
② 签名必须使用发送方特有的信息,防伪造或否认
③ 签名的产生和识别比较容易
④ 伪造数字签名在计算上是不可行的
⑤ 保存数字签名的拷贝是可行的
数字签名体制
数字签名的分类
- 直接数字签名:只涉及通信双方
- 仲裁数字签名:可信第三方介入
直接数字签名
- 直接数字签名方法1:用发送方的私钥对整条消息进行签名
- 直接数字签名方法2:用发送方的私钥对消息的Hash码进行签名
这里和消息认证码MAC同理,先加密后签名不如先签名后加密的方案。
直接数字签名的缺点:
- 依赖于发送方的保密密钥
发送方要抵赖发送某一消息时,可能会声称其私有密钥丢失或被窃,从而他人伪造了他的签名。
通常需要采用与私有密钥安全性相关的行政管理控制手段来制止或至少是削弱这种情况,但威胁在某种程度上依然存在。
改进的方式例如可以要求被签名的信息包含一个时间戳(日期与时间),并要求将已暴露的密钥报告给一个授权中心。 - X的私钥确实在时间T被窃取,敌方可以伪造X的签名及早于或等于时间T的时间戳。
仲裁数字签名
- 工作原理:通常的做法是所有从发送方X到接收方Y的签名消息首先送到仲裁者A,A将消息及其签名进行一系列测试,以检查其来源和内容,然后将消息加上日期并与已被仲裁者验证通过的标识一起发给Y。
- 仲裁者在这一类签名模式中扮演敏感和关键的角色。所有的参与者必须极大地相信这一仲裁机制工作正常。
- 仲裁数字签名模式1
- 仲裁数字签名模式2
- 仲裁数字签名模式3
仲裁数字签名:相对于接收方而言,签名具有唯一性。
通俗地讲,仲裁数字签名模式2在仲裁数字签名模式1的基础上实现了让仲裁者A看不到明文,但是依然无法解决合谋的问题(这是对称密钥带来的问题)。于是有了仲裁数字签名模式3,利用公钥密码体系,既保证了仲裁者看不到明文M,又保证了不会存在仲裁者与任意一方合谋的问题。
身份认证
对用户身份的证实,用以识别合法或非法的用户,组织非授权用户访问资源。
数字签名和鉴别技术的一个最主要的应用领域就是身份认证。
在网络应用环境中,网络资源的安全性保障通常采用基于用户身份的资源访问控制策略。
身份认证的作用是对用户身份进行鉴别,能够保护网络中的数据和服务不被未授权的用户所访问。
单向身份认证
收发双方不需要同时在线联系,例如电子邮件。
-
对称加密方法:
-
公钥加密方法:
双向身份认证
最常用的协议,该协议使得通信双方各方互相认证鉴别各自的身份,然后交换会话密钥。
- 解决重放攻击的方法:序列号、时间戳、挑战/应答
- 对称加密方法:
改进的方法:
- 公钥加密方法
数字签名标准DSS
DSS仅提供数字签名的功能,不能用于加密或密钥分配。
- RSA与DSS的比较
签名过程
- 输入:明文的Hash函数、为签名而产生的随机数k
- 控制参数:发送方的私钥\(KR_a\)、一组公共参数\(KU_G\),称为全局公钥
- 输出:包含两部分:s和r
- DSS签名和验证:
DSS算法的安全性依赖于离散对数求解的困难性。DSS和DSA算法的k必须每次不同,否则可能会暴露私钥。同时,即使对相同明文签名,结果也不同。
其他数字签名方式
- 群签名:一个群体中的任意一个成员可以以匿名的方式代表整个群体对消息进行签名。
- 限制签名次数的签名方案:在很多实际应用中,需要控制签名的随意性,可在RSA基础上,设计控制签名次数的方案,其缺点是要使用“可信中心”和“信用中心”
- 授权签名或称代理签名:是一种特殊形式的签名。它在现代企业活动中具有重要意义。
- 盲签名:与其他签名的不同处在于,签名者并不知道(或不需要知道)所签发消息的具体内容
※ Kerberos工作原理
- Kerberos提供了一个集中式的认证服务器结构,认证服务器的功能是实现用户与其访问的服务器间的相互鉴别。Kerberos建立的是一个实现身份认证的框架结构。其实现采用的是对称密钥加密技术,而未采用公开密钥加密。
Kerberos的设计目标
总的来说,Kerberos协议设计目标是提供一种可信的第三方的身份认证服务。
- 安全性:能够有效防止攻击者假扮成另一个合法的授权用户。
- 可靠性:分布式服务器体系结构,提供相互备份。
- 对用户透明性
- 可伸缩:能够支持大数量的客户和服务器
Kerberos设计的基本思路
- 使用一个(或一组)独立的认证服务器(AS)为网络中的客户提供身份认证服务
- 认证服务器(AS),用户口令由AS保存在数据库中
- AS与每个服务器共享一个唯一保密密钥(已被安全分发)
Kerberos V4认证协议
- 认证过程示意图:
Kerberos领域(realm)
- 构成:一个完整的Kerberos环境包括一个Kerberos服务器,一组工作站和一组应用服务器。
- 具有如下特征:
① Kerberos服务器数据库中拥有所有的用户ID和口令散列码;所有用户需要向Kerberos服务器注册。
② 每个应用服务器都与Kerberos服务器共享一个密钥
③ 所有用户均在Kerberos服务器上注册
④ 所有服务器均在Kerberos服务器上注册
⑤ 领域的划分是根据网络的管理边界来划定的 - Kerberos领域间的互通
① 跨领域的服务访问
② 领域间互通的前提 - 远程服务访问的认证过程:
Kerberos v4的缺陷
- 依赖性:加密系统对IP协议的依赖性和对时间依赖性
- 字节顺序:用户自定义
- 票据有效期:8位字段来表示,有效期最小为5分钟,最大约为21小时
- 认证转发能力:不允许签发给一个用户的鉴别证书转发给其他工作站或其他客户使用
- 领域间的鉴别:管理起来困难
- 加密操作缺陷:非标准形式的DES加密(传播密码分组链接PCBC)方式,易受攻击
- 会话密钥:存在着攻击者重放会话报文进行攻击的可能
- 口令攻击:未对口令提供额外的保护,攻击者有机会进行口令攻击
Kerberos v5的改进
- 加密系统:支持使用任何加密技术
- 通信协议:IP协议外,还提供了对其他协议的支持
- 报文字节顺序:采用抽象语法表示(ASN.1)和基本编码规则(BER)来进行规范
- 票据的有效期:允许任意大小的有效期,有效期定义为一个开始时间和结束时间
- 提供了鉴别转发能力
- 更有效的方法来解决领域间的认证问题
- 抗口令攻击:提供了一种预鉴别机制,使口令攻击更加困难,但不能完全避免口令攻击。