安全协议
参考书籍安全协议(第2版) 做自我总结学习
第一章 概述
1.1 概念与定义
使用密码学来完成某项特定任务并满足安全需求的协议,又称密码协议
协议与算法:安全协议在消息处理环节采用了若干密码算法
角色:参与者、攻击者、可信第三方(Trusted Third Party,TTP)
1.2 分类
1.2.1 密钥建立协议
对称/非对称–>密钥分发协议/密钥协商协议
1.2.2 认证协议
认证是对数据、实体标识的保证。
1.2.3 电子商务协议
电子商务就是利用电子信息技术进行各种商务活动。
1.2.4 安全多方计算协议
安全多方计算协议的目的是保证分布式环境中各参与方以安全的方式来共同执行分布式的计算任务。
安全要求:协议正确性和私有输入的私密性
协议= 存在可信第三方?仲裁协议:自执行协议
1.3 安全性质
机密性、完整性、认证性、不可否认性、公平性
安全需求不同
1.4 对安全协议的攻击
窃听 | 篡改 | 重放 | 预重放 | 反射* |
---|---|---|---|---|
拒绝服务(Dos) | 类型攻击 | 密码分析 | 证书操纵 | 协议交互 |
1.5 安全协议三大理论分析方法
1.5.1 安全多方计算
1.5.2 形式化分析
1.5.3 可证明安全理论
第二章 密码学基础
2.8.4 ElGamal 数字签名
-
密钥生成:p大素数,p-1有大素数因子; α \alpha α是一个模p的本原元(primitive element);消息M, 0 ≤ m ≤ p − 1 0\le m \le p-1 0≤m≤p−1,
私钥x: 1 ≤ x ≤ p − 1 1\le x\le p-1 1≤x≤p−1,公钥 y ≡ α x m o d p y\equiv\alpha^xmod p y≡αxmodp
-
签名:
- 随机整数k, 1 ≤ k ≤ p − 1 1\le k \le p-1 1≤k≤p−1,且 g c d ( k , p − 1 ) = 1 gcd(k , p-1)=1 gcd(k,p−1)=1;
- r = α k m o d p , s = ( m − x A r ) k − 1 m o d ( p − 1 ) r = \alpha^k mod~p, s =(m-x_Ar)k^{-1}mod~(p-1) r=αkmod p,s=(m−xAr)k−1mod (p−1);
- ( r , s ) (r,s) (r,s)作为签名
-
验签:
- α m = y A r r s \alpha^m = y_A^rr^s αm=yArrs成立则签名正确
2.8.5 Schnorr签名
-
密钥生成:大素数p,q,满足 q ∣ p − 1 q|p-1 q∣p−1,q大于等于160位,p大于等于512位 保证离散对数困难 (升级 p 2048,q 224)
消息空间 M = Z P ∗ M = Z^*_P M=ZP∗,签名空间 S = Z p ∗ × Z q ∗ S = Z^*_p \times Z^*_q S=Zp∗×Zq∗,密钥空间 K = { ( p , q , g , x , y ) : y ≡ g x m o d p } K=\{(p,q,g,x,y):y\equiv g^xmod~p\} K={(p,q,g,x,y):y≡gxmod p}
g ∈ Z p ∗ , g q ≡ 1 m o d p g\in Z_p^*,g^q\equiv 1 mod ~p g∈Zp∗,gq≡1mod p, 私钥x满足 1 < x < q 1<x<q 1<x<q,公钥 y ≡ g x m o d p y \equiv g^x mod p y≡gxmodp
-
签名:
-
随机数 k ∈ Z p ∗ k \in Z_p^* k∈Zp∗
-
r ≡ g k m o d p , e = H ( r ∥ M ) r\equiv g^k mod~p,e = H(r\|M) r≡gkmod p,e=H(r∥M)
-
s ≡ ( k − x e ) m o d p s\equiv (k-xe)mod~p s≡(k−xe)mod p
-
( e , s ) (e,s) (e,s)为签名
-
-
验签:
- r ′ ≡ g s y e m o d p r' \equiv g^sy^e mod~p r′≡gsyemod p
- H ( r ′ ∥ M ) = e ⇔ V e r ( M , r , s ) H(r'\|M)=e\Leftrightarrow Ver(M,r,s) H(r′∥M)=e⇔Ver(M,r,s)
(图来自Cryptography Theory and practice- Douglas Stinson)
两个签名都用到了离散对数的困难性,Schnorr中用到两个大素数和哈希函数H()
第三章 基本安全协议
3.1 秘密分割
将消息分成n块,每一块都集合才能恢复消息
3.2 秘密共享
将秘密分割存储的密码技术,防止秘密过于集中
“门限方案”(m,n),m为门限值,n为份额数 利用任意m个或更多个份额可以恢复消息 ( 2 ≤ m ≤ n 2\leq m \leq n 2≤m≤n)
常用拉格朗日多项式门限方案:n个人共享密钥k,任意m个人可以获取密钥。生成比k大的素数p,再生成m-1个比p小的随机整数
R
1
,
R
2
,
⋯
,
R
m
−
1
R_1,R_2,{\cdots},R_{m-1}
R1,R2,⋯,Rm−1,定义F(x)为有限域上的多项式
F
(
x
)
=
(
R
m
−
1
x
m
−
1
+
R
m
−
2
x
m
−
2
+
⋯
+
R
1
x
+
k
)
m
o
d
p
(3.1)
F(x)=(R_{m-1}x^{m-1}+R_{m-2}x^{m-2}+{\cdots}+R_1x+k)~mod~p \tag{3.1}
F(x)=(Rm−1xm−1+Rm−2xm−2+⋯+R1x+k) mod p(3.1)
通过定义
k
i
=
F
(
x
i
)
k_i=F(x_i)
ki=F(xi)生成F的n个影子,让每个人拿到[p,
x
i
x_i
xi,
k
i
k_i
ki]后销毁
R
1
,
R
2
,
⋯
,
R
m
−
1
R_1,R_2,{\cdots},R_{m-1}
R1,R2,⋯,Rm−1和
k
k
k。任意m个共享者可通过构造线性方程恢复密钥k
Ex: 令密钥k为11,构造(3,5)门限方案,选取正整数7,8,构造多项式 F ( x ) = ( 7 x 2 + 8 x + 11 ) m o d 13 F(x)=(7x^2+8x+11)~mod~13 F(x)=(7x2+8x+11) mod 13 ;
分别计算 k 1 = F ( 1 ) = 0 , k 2 = F ( 2 ) = 3 , k 3 = 7 , k 4 = 12 , k 5 = 5 k1=F(1)=0,k2=F(2)=3,k3 =7,k4 = 12,k5 =5 k1=F(1)=0,k2=F(2)=3,k3=7,k4=12,k5=5; 利用k2,k3,k5解线性方程
{ a ∗ 2 2 + b ∗ 2 + k ≡ 3 ( m o d 13 ) a ∗ 3 2 + b ∗ 3 + k ≡ 7 ( m o d 13 ) a ∗ 5 2 + b ∗ 5 + k ≡ 5 ( m o d 13 ) \left\{\begin{aligned} {a*2^2+b*2+k \equiv 3(mod 13)}\\{a*3^2+b*3+k \equiv 7(mod 13)}\\{a*5^2+b*5+k \equiv 5(mod 13)} \end{aligned}\right. ⎩ ⎨ ⎧a∗22+b∗2+k≡3(mod13)a∗32+b∗3+k≡7(mod13)a∗52+b∗5+k≡5(mod13)
得到 a = 7 , b = 8 , k = 11 a=7,b=8,k=11 a=7,b=8,k=11
可验证秘密共享是添加一个验证算法,共享者可以确认自己拿到的“影子”份数是否与分发的一致
3.3 阈(yu)下信道
在公开信道中所建立的一种实现隐蔽通信的信道
其存在的必要条件是数据冗余,即一个"无害消息"可以对应几个不同的密码数据
例如基于ElGamal数字签名和RSA数字签名的阈下信道方案
一些应用:A在受威胁时可以安全地签名并隐藏信息;公司可以签名文件,嵌入信息以便追踪;政府可以标记数字货币
3.4 时间戳协议
解决版权侵权行为的有效手段,可以证明数字作品的起源时间
仲裁协议,需要可信第三方Trent,根据收到的文件(哈希值)来记录一个时间戳,但存在伪造错误数据的可能,可以通过与Trent接收他人请求得到的时间戳联系起来
分布式协议,不需第三方
3.5 比特承诺
此方案可描述如下:Alice对Bob承诺一个消息m,在下次Alice需要向Bob证实他之前承诺过的消息m前,Bob无法得知消息内容,即比特承诺的隐蔽性;Alice将消息m和检验承诺的方法告诉Bob,让他以此确认消息未被篡改,即比特承诺的约束性。
- 对称密码算法的比特承诺
- 单向函数的比特承诺
- 伪随机序列发生器的比特承诺
3.6 硬币抛掷
- 单向函数抛币协议
- 公开密钥密码抛币协议
3.7 智力扑克
3.8 密钥托管
密钥托管系统允许授权者在一些特定条件下解密密文
3.8.1 密钥托管标准(EES)
两个特性:一个不公开的加密算法(Skipjack),对称的分组密码;提供“后门”的法律实施访问域(LEAF),政府在法律授权下可以据此取得用户间通话密钥
3.8.2 门限密钥托管
(t,n)门限方案与密钥托管算法相结合
3.8.3 部分密钥托管
使监听机构延迟恢复密钥,避免大规模监听事件的发生
3.9 不经意传输(OT)
在这个协议中,一方Alice掌握秘密信息s,而Bob在协议结束时有1/2的概率获得s,但Alice不知道Bob是否得到s
- 正确性:只要A,B遵守协议,协议结束后B能够获得正确信息
- 发送方A的保密性:协议结束后,B只能得到他想要的信息
- 接收方B的保密性:协议结束后,A不知道B选择了哪一个或哪些信息
不经意传输是一种可保护隐私的双方通信协议,一般还是要建立在双方信任的基础上,能够以一种选择模糊化的方式传送消息
第四章 认证与密钥建立协议
安全电子商务
4.1 简介
4.1.1 结构
三个分类准则
- 已建立密钥:(1)两个实体已经共享密钥;(2)使用离线服务器,使用公钥密码体制通信,验证公钥的数字证书(3)在线服务器,一般要可信
- 会话密钥的生成:(1)密钥传输协议(2)密钥协商协议(3)混合协议
- 用户数量:点到点通信;会议密钥协议
4.1.2 协议目标
- 隐式密钥认证:只有身份确定才能知道密钥
- 密钥确认:协议一方需确认另一方已经拥有密钥
- 显式密钥认证
4.1.3 新鲜性
保证机制:时间戳、一次性随机数(Nonce)、计数器、混合方法(计数器&时间戳)
4.2 共享密钥密码的协议
4.2.1 实体认证协议
国际标准ISO/IEC9798-2详述了6个使用对称密码算法的协议。有4个仅提供实体认证,另外两个提供密钥建立和实体认证
.这四个有两个单向认证,两个双向认证协议
- A->B: { T A , B } K A B \{T_A,B\}K_{AB} {TA,B}KAB A到B的单向认证,B由时间戳** T A T_A TA判断是否有效,身份标识B**让A知道B是对等实体
- 类似1,用随机数代替时间戳
- A->B: { T A , B } K A B \{T_A,B\}K_{AB} {TA,B}KAB ;B->A: { T B , A } K A B \{T_B,A\}K_{AB} {TB,A}KAB 双向认证
- 类似3,提供了双向认证
提供了AB的身份标识以防反射攻击
4.2.2 无服务器密钥建立
两个用户长期共享一个密钥
有的协议需要用到KDF(密钥生成函数),如机制1中计算会话密钥 K A B ′ = f ( K A B , T A ) K'_{AB}=f(K_{AB},T_A) KAB′=f(KAB,TA);机制5中A、B分别选择 F A B , F B A F_{AB},F_{BA} FAB,FBA作为密钥材料,会话密钥为 K A B ′ = f ( F A B , F B A ) K'_{AB}=f(F_{AB},F_{BA}) KAB′=f(FAB,FBA)
4.2.3 基于服务器的密钥建立
Needham-Schroeder共享密钥协议
改进:使用时间戳/随机数
Kerberos认证服务使用了改进的Needham-Schroeder密钥建立协议作为一个模块,能够在开放式网络环境下互相进行身份认证,由四部分组成:AS,TGS,Client,Server
认证任务分配给两个服务器:认证服务器(AS),票据许可服务器(TGS),对应两类凭证:票据(Ticket),鉴别码(Authenticator)。
Ticket用于在服务器和用户服务请求额中安全地传递身份,Authenticator只能在一次服务中使用,辅以确保发出Ticket的用户就是Ticket中指定的用户
4.2.4 多服务器的秘钥建立
多个用户-群组密钥建立;多个服务器-若一个或多个服务器不可用,用户仍能建立会话密钥;若一个或多个服务器不可信,用户仍能建立好的密钥
Gong多服务器协议:用户A、B选择密钥材料,n个服务器作为变换中心使一个用户的密钥材料对其他用户可用。A、B和每个服务器都会共享一个长期密钥 K ( A , i ) K_{(A,i)} K(A,i), K ( B , i ) K_{(B,i)} K(B,i)
A,B使用门限策略来分割秘密x,y,用于预防一些服务器不可用;A,B通过收到一定份额的消息分别恢复y,x,会话密钥 K A , B = h ( x , y ) K_{A,B}=h(x,y) KA,B=h(x,y)
“交叉检验和”
4.3 使用公钥密码的认证与密钥传输
公钥技术优势:
- 可直接定义数字签名,提供非否认服务
- 简化密钥管理,不需要在线第三方
代价:
- 计算代价比较高
- 仍需要对公钥管理,证书管理机构(PKI)
4.3.1 实体认证协议
一次单向认证: A → B : T A , B , S i g A ( T A , B ) A\rightarrow B:T_A,B,Sig_A(T_A,B) A→B:TA,B,SigA(TA,B)
三次传输双向认证:
- B → A : N B B\rightarrow A:N_B B→A:NB
- A → B : N A , N B , B , S i g A ( N A , N B , B ) A\rightarrow B:N_A,N_B,B,Sig_A(N_A,N_B,B) A→B:NA,NB,B,SigA(NA,NB,B)
- B → A : N B , N A , A , S i g B ( N B , N A , A ) B\rightarrow A:N_B,N_A,A,Sig_B(N_B,N_A,A) B→A:NB,NA,A,SigB(NB,NA,A)
攻击:C对A假冒B,对B假冒A
4.3.2 密钥传输协议
-
ISO/IEC 11770-3协议
标识很重要,否则容易被冒充;时间戳(计数器)用于保证新鲜性和实体认证
-
Needham-Schroeder公钥协议
-
X.509标准协议
-
TLS协议
4.4 密钥协商协议
在公开信道上建立共享秘密,即会话密钥
4.4.1 Diffie-Hellman协商
具有前向安全性
A、B共享乘法群G的生成元g t A = g r A , t B = g r B t^A=g^{r_A},t^B=g^{r_B} tA=grA,tB=grB,短暂密钥 Z A B = g r A r B Z_{AB}=g^{r_Ar_B} ZAB=grArB;交换 x A , x B x_A,x_B xA,xB得到的是静态密钥 g x A x B g^{x_Ax_B} gxAxB
基础限制:对发送消息的认证
(1) 小子群攻击
(2) ELGamal加密和一轮密钥建立
(3)静态Diffie-Hellman的Lim-Lee协议
4.4.2 有基本消息格式的基于DH交换的协议
容易受到未知密钥共享攻击 C可以冒充A/B攻击
统一模型协议
4.4.3 增强消息格式的DH交换协议
对交换消息增加认证/签名;站对站协议(STS)消息交换时添加了数字签名
共享秘密是瞬时DH密钥,有前向安全性;对瞬时公钥( g r A g^{r_A} grA)签名,可避免密钥泄露假冒攻击
4.5 可证明安全的认证协议
首次建立了会话密钥分配协议的形式化安全模型,BR安全模型
定义: P = ( Π , Ψ , L L ) P=(\Pi,\Psi,LL) P=(Π,Ψ,LL)是一个多项式时间可计算的三元组函数, Π \Pi Π描述诚实方的行为, Ψ \Psi Ψ描述S的行为, L L LL LL描述用户主密钥的初始分布
参与方: I = { 0 , 1 , 2 , . . . , N } I = \{0,1,2,...,N\} I={0,1,2,...,N} 0代表可信中心S,敌手E,预言机之间不直接通信,被动地回答E的查询(Query),所以模型中至少存在一个良性(Benign)攻击者,忠实的传递预言机之间的协议消息
敌手模型:E控制所有合法机之间的通信,形式化为一个概率图灵机,攻击形式为5种Oracle询问
4.6 基于口令的协议
大多基于Diffie-Hellman的密钥协商并把共享口令用于认证
4.6.1 针对口令的攻击
4.6.2 EKE(加密密钥交换)
4.6.3 强化的EKE(H( π \pi π),加salt)
4.6.4 双因子认证
认证增强机制,口令卡,生物信息,手机短信等
4.6.5 扫码登录
4.6.6 开放授权OAuth
OAuth允许用户提供一个令牌,来访问一些特定数据,而非直接提供用户名和口令
第三方网站使用qq登录便是一个实例
4.7 基于图形口令的认证
4.8 基于验证码的认证
图灵测试(CAPTCHA)/逆向图灵测试 如图形化的文本验证码
4.9 具有隐私保护的认证密钥交换协议
隐私保护中,技术还是最有效、直接、廉价的手段
4.9.1 可否认的认证密钥交换协议
可用于电子商务以保护隐私,接收方Bob可以认证消息M由A发送,并无差错,但事后A可以否认,B也无法向第三方证明这一事实
基于身份:(1)认证性(2)可否任性 — 在电子选举中不受胁迫;通过Internet进行安全谈判
4.9.2 通信匿名的认证密钥交换协议
通信者身份不能泄露,
4.9.3 用户匿名的认证密钥交换协议
分配昵称实现用户匿名
Anonymizer代理
数字签名-群签名 无法确定谁是真正的签名者
4.10 会议秘钥协商
多方秘钥协商
一个安全的群组通信:
安全型需求:
(1)群组安全 (2)前向安全 (3)后向安全 (4)抵抗合谋攻击 (5)密钥独立
质量需求:
(1)低带宽占用 (2)低通信延迟 (3)1影响N (4)服务稳健性 (5)服务可靠性
环形通信模式的群组密钥交换协议
以下待补充