2023spring 密码协议课程笔记
授课老师:汪定
密码学基础
加密算法
RSA加密
针对RSA的中间人相遇攻击
- 破坏IND-CPA安全性
- 利用RSA的可乘特性,明文分解等于密文分解
构造可实用RSA
RSA-OAEP(RSA最优非对称加密填充)
- 非满足IND-CCA2的加密方案,几乎都不实用
- 几乎所有密码学教科书式算法(如RSA,Elgamal,AES),都不满足IND-CCA,直接使用会带来致命安全问题
(137条消息) “完全或无”、IND-CPA、IND-CCA1、IND-CCA2的详细说明_AnWen~的博客-CSDN博客
密码学之安全模型总结 - Max1z - 博客园 (cnblogs.com)
消息认证(Message Authentication)
认证:消息的接收者对消息进行的验证
真实性:消息确实来自于其真正的发送者,而非假冒;
完整性:消息的内容没有被篡改。
是一个证实收到的消息来自可信的源点且未被篡改的过程。
- 它也可以验证消息的顺序和及时性
认证函数分为三类:
- 消息加密函数(Message encryption)
- 用完整信息的密文作为对信息的认证。
- 消息认证码MAC (Message Authentication Code)
- 是对信源消息的一个编码函数。
- 散列函数 (Hash Function)
- 是一个公开的函数,它将任意长的信息映射成一个固定长度的信息
加密函数
- $E_K(M)$提供保密,提供认证,不提供签名
- $E_{K_a}(M)$提供保密,不提供认证
- $E_{K’_b}(M)$提供认证
- $E_{K_a}(D_{k’_b}(M))$先签名后加密,提供认证,提供保密性
- $D_{K’_b}(E_{K_a}(M))$先加密后签名,提供保密性,不提供认证性
消息认证码
- $M||C_k(M)$提供认证
- $E_{k_2}(M||C_{k_1}(M))$提供认证,提供保密
- $E_{k_2}(M)||C_{k_1}(E_{k_2}(M))$提供认证,提供保密
Hash函数
- $E_k(M||H(M))$提供认证,提供保密
- $M||E_k(H(M))$提供认证
- $M||D_{K’_b}(H(M))$提供认证
- $E_k(M||D_{K’_b}(H(M))$提供认证,提供保密
- $M||H(M||K)$提供认证
- $E_k(M||H(M||S)$提供认证,提供保密
数字签名
- 直接数字签名方案(direct digital signature)
- $S_a(M)$直接签名
- $E_b(S_a(M))$加密+签名
- $M,S_a(H(M))$hash+签名
- $E_b(M,S_a(H(M)))$加密+hash+签名
- $M,(E_k(H(M)))$hash+签名
- 基于仲裁的数字签名方案(arbitrated digital signature)
- 对称密钥 + 明文传送
- $M,E_{at}(ID_a,H(M))$
- $E_{bt}(ID_{a},M,E_{at}(ID_a,H(M),T))$
- 对称密码+密文传送
- $E_{ab}(M),E_{at}(ID_{a},E_{ab}(H(M)))$
- $E_{bt}(ID_a,E_{ab}(M),E_{at}(ID_a,Eab(H(M),T)))$
- 公钥密码+密文传送
- $ID_a,S_a(ID_a,E_b(S_a(M)))$
- $S_t(ID_a,E_b(S_a(M)),T)$
- 对称密钥 + 明文传送
RSA数字签名体制
- 一般攻击
- 选择消息攻击
- 利用签名进行攻击从而获得明文
对先加密后签名方案的攻击
- 攻击方法一
- 攻击方法二
RSA数字签名的安全性——小结
- 不直接对消息进行签名,而应该对消息的Hash值进行签名
- 要采用先签名后加密的方式,而不要采用先加密后签名的方式
可实用的RSA数字签名方案RSA-PSS
数字签名标准 DSS: Digital Signature Standard
- DSS中所采用算法通常称为DSA(Digital Signature Algorithm)
- DSS中规定使用了安全散列函数(SHA-1),DSA可以看作是ElGamal数字签名体制的一个变体
- 基于椭圆曲线密码的数字签名算法ECDSA
- 椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟
Woo-Lam身份认证协议
缺陷:Trent->Bob返回的信息中不包含验证方”Alice“的身份,容易受到交错攻击
认证协议
安全协议概述
协议的安全性质
- 认证性
- 机密性
- 完整性
- 不可否认性
安全协议的攻击者模型
安全协议设计和分析的困难性
困难的原因
安全协议的功能越来越多样复杂
安全功能目标本身的微妙复杂性
比如,表面上十分简单的“身份认证” ,实际上十分复杂微妙。
协议运行环境的复杂性
- 安全协议往往运行在开放、多方、并发、移动环境中。
攻击者模型的复杂性
- 我们必须充分考虑攻击者的能力,考虑各种各样的攻击,而如何准确地描述攻击者的能力,特别是如何形式化地对攻击者和攻击行为进行建模和形式化的分析迄今仍是公开难题。
认证协议
认证协议:是一个有序的过程,通过这个过程,一个实体可以向另一个实体证明某种声称的属性。
- 消息发送者身份的真实性 -> 实体认证(或称身份认证)
消息的完整性,新鲜性 -> 消息认证(也称数据源认证)
- 确认消息发送者(Bob)身份的真实性
- 确认在原消息离开消息发送者之后的数据完整性
- 确认传输过来的消息的“新鲜性”
构建安全信道(从身份认证派生) -> 带认证的密钥建立
消息认证 vs 数据完整性
消息认证:验证消息是否真实、是否新鲜;数据完整性:验证消息在传输、存储过程中未经非法修改
- 消息认证必然需要通信,数据完整性则不一定包含通信过程,例如存储数据的完整性
- 消息认证必然需要识别消息源,而数据完整性则不一定涉及该过程,例如无源识别的数据完整性技术
- 最重要的,消息认证必然需要确认消息的新鲜性,而数据完整性却无此必要:一组老的数据可能有完善的数据完整性
消息认证 vs 身份认证
密钥建立
身份认证
身份认证是确认主体之间通信的真实性,或通信双方或多方身份的真实性
挑战应答机制
基于对称密码的实体认证
- MAP1协议
- EVE1协议
时间戳机制
密钥建立
会话密钥,即临时秘密,被严格限制在一小段时间内使用,如一次单独的通信会话,其推出的动机:
- 限制使用固定密钥的密文数量,以阻止选择明文/密文攻击
- 限制因意外泄露会话密钥而造成的相关保密数据的暴露数量
- 避免长期存储大量不同的秘密密钥(在一个实体可能与大量其他实体通信的情况下),而仅在实际需要时建立密钥
- 产生不同通信会话和应用的相互独立性
密钥建立协议主要包含两类
- 密钥分配协议:如何使一个参与方可以生成或获得一个秘密值,并将它安全地传给其他参与方
- 密钥协商协议:两个(多个)参与方共同提供信息,推导出一个共享密钥,并且任何一方不能预先估计结果
密钥分配协议
密钥分配协议通常需要一个可信服务器的参与,常称之为密钥服务器(Key Server,KS),亦称为密钥分发中心(Key Distribution Center,KDC)等
- 主要用于初始化系统设置和其他一些目的
协议参与的双方都希望:
- 能够确定是谁在和他进行密钥建立
- 能够防止未经授权的其他人推导出分配的密钥
密钥分配协议通常和认证协议联合使用
大嘴青蛙协议
NSSK协议
密钥协商协议
基于公钥的密钥协商协议——Diffie-Hellman协议
基于口令的密钥协商协议