协议的基本概念
定义:两个或多个参与者完成某任务采取的一系列步骤
有序;至少两个参与者;必须完成任务
仲裁协议
需要有仲裁方 arbitrator, 公正第三方,其他方信赖
对协议参加者无偏向;信息正确;帮助互不信赖实体完成任务
特点:
- 计算机可能怀疑作为仲裁者的计算机
- 设立仲裁者需要承担开销
- 增加时延
- 仲裁者对对话处理。可能成为系统瓶颈
- 仲裁者会成为黑客攻击的目标
裁决协议
裁决人 adjudicator, 公正可信赖第三方,不直接参与协议。
参与者发生纠纷需要其裁决
- 无仲裁子协议, 双方协商好签署,没有第三方
- 裁决子协议 双方找第三方,双方提供者证据,第三方根据证据进行裁决
特点:
- 双方诚实
- 怀疑欺骗,则第三方根据证据裁定是否欺骗
- 裁决协议应确定欺骗者身份
- 只可检测欺骗,不可预防欺骗发生
自动执行协议:(self-enforcing)
- 保证公平性
- 无需仲裁者参与和解决争端
- 一方企图欺骗另一方,另一方立刻检测欺骗发生,停止协议
好协议特点
- 涉及各方须知协议细节
- 各方遵守协议
- 协议非模糊/清晰
- 协议完整 —— 对所有情况要做出反应
- 操作要么一方/多方计算, 要么各方之间传递
协议分类,密码协议
安全协议功能分类
- 认证协议 authentication protocol —— 给实体提供关于另一个实体身份的确信度
- 密钥建立协议 agreement/exchange/distribution protocol —— 两个通信实体之间建立共享密钥
- 认证密钥简历 authenticated key/agreement/exchange/distribution —— 另一实体身份被验证,两个实体之间共享密钥
ISO七层参考模型分类
- 高层
- 低层
根据算法分类
- 双钥/公钥 协议 public
- 单钥协议 secret
- 混合协议 hybrid
密钥建立协议
密钥建立协议可在实体之间共享秘密
- 共享秘密 通常作为 一次性会话密钥,可以扩展多方共享密钥建立 —— 如会议密钥建立
- 协议可用单钥、双钥体制实现,借助可信赖第三方
- 密钥建立协议
- 密钥传输 —— 密钥从实体传给另一个实体
- 密钥协商 —— 双方、多方共同信息建立共享密钥
会话密钥?
- 保密通信中,对每次会话用不同密钥加密,故交会话密钥。
- 密钥旨在持续范围内有效,结束会话后被清除
1. 单钥体制
- A向T请求得到与Bob的会话密钥
- T给A EKA(Key) EKB(Key)E_{K_A}(Key)\ E_{K_B}(Key)EKA(Key) EKB(Key)
- A解密 DKA(EKA(Key))=KeyD_{K_A}(E_{K_A}(Key)) = KeyDKA(EKA(Key))=Key
- A给B $ E_{K_B}(Key)$
- B解密 DKB(EKB(Key))=KeyD_{K_B}(E_{K_B}(Key)) = KeyDKB(EKB(Key))=Key
- AB之间用Key通信
2. 双密钥
- A拿到B的公钥
- A给B发送EKBP(Key)E_{K_{BP}}(Key)EKBP(Key)
- B解密DKBS(EKBP(Key))=KeyD_{K_{BS}}(E_{K_{BP}}(Key)) = KeyDKBS(EKBP(Key))=Key
- AB会话密钥key进行通信
协议未对公钥合法性验证,无法抵抗自己人攻击
3. 中间人攻击 MITM
- M截获A的公钥,然后发送M的公钥给B
- M截获B的公钥,然后发送M的公钥给A
- A和B采用的密钥都是M的公钥,加密信息可以被M破解
4. 联锁协议
- A和B发送公钥给对方
- . A用B的公钥加密,但只发送一半密文
- B用A公钥加密,但只发送一半密文
- A B 再将剩下的一半发给对方,组合后私钥解密
安全性讨论
中间人只获得一半密文的时候,数据对攻击者没有用处(攻击者无法解密)
如何实现?
- 分组加密算法
- 消息解密依赖初始化向量
- 发送的开始一半消息可以是加密消息的Hash函数,另一半消息可以是加密信息
5. 数字签名
- A从T得到B的公钥证书
- B从T得到A的公钥证书
- A B 采用CA公钥验证CA签名正确性,获得对方公钥
- 使用可信公钥通信
6. 密钥和消息传输
- A生成随机数作为密钥K,对M加密
- A得到B的公钥加密K
- 发送给对方B
- B先用私钥解密得到K
- 再用K对M进行解密
7. 密钥和消息广播
- A生成随机数K,对M加密
- A得到B,C,D的公钥
- A用B,C,D的公钥加密K,得到EBP(K) ECP(K) EDP(K)E_{B_P}(K)\ E_{C_P}(K)\ E_{D_P}(K)EBP(K) ECP(K) EDP(K)
- A 广播加密消息与加密会话密钥
- B C D均可以用私钥得到K并解密得到M
8.DH密钥交换
AB都知道两个大素数n和g,g是群(0,…,n-1)的本原元,整数公开
- A选择大整数x,使得X=gx mod nX = g^x\ mod\ nX=gx mod n
- B选择大整数y,使得Y=gy mod nY = g^y\ mod\ nY=gy mod n
- A计算K=Yx mod n=gxy mod nK = Y^x\ mod\ n = g^{xy}\ mod\ nK=Yx mod n=gxy mod n
- B计算K=Xy mod n=gxy mod nK = X^y\ mod\ n = g^{xy}\ mod\ nK=Xy mod n=gxy mod n
无法抵抗中间人攻击
认证建立协议
消息/数据源/实体认证 —— 欺骗、伪装攻击
传统方法:口令
- 容易被窃取,安全性弱
使用单项双向认证
单向函数
- A给Host发送Passwd
- Host得到MD′=H(P)MD' = H(P)MD′=H(P)
- Host将MD’与MD比较
- 相同通过认证,反之拒绝
字典攻击,掺杂
单向函数加密口令文件容易遭受攻击。
- 可以使用常用口令获得密文,然后对比密文查看哪些内容重合 —— 字典攻击
使用掺杂应对
- 得到伪随机序列(可根据注册时间生成),与passwd级联后单向加密,削弱字典成功成功概率
Skey认证
一个认证程序
- A键入随机数R
- 计算f(R),f2(R)...,f100(R)f(R),f^2(R)...,f^{100}(R)f(R),f2(R)...,f100(R),得到的值分别为x1,...,x100x_1,...,x_{100}x1,...,x100,将x101x_{101}x101和A的姓名存入数据库中
- A登录的时候输入姓名和x100x_{100}x100,计算机计算x101x_{101}x101并比较
- 相等通过认证
- 计算机用x101x_{101}x101取代x100x_{100}x100,A保存x101x_{101}x101清除x100x_{100}x100
双钥
- H给A发送随机数R
- A给H发送IDA和EAS(R)ID_A和E_{A_S}(R)IDA和EAS(R) (对R签名)
- H检索A公钥,解密(验证签名)得到R′R'R′
- R == R’通过验证
H对A认证,但A没对H认证,单向认证
联锁协议
- A和B交换公钥
- A B 互相发送经过对方公钥加密的passwd
- A B分别解密得到对方的Passwd
Mallory可以对此实现中间人攻击
SKID身份识别
SKID2/3使用单钥体制
- A给B发送随机数RAR_ARA,RIPE规定64b
- B给A发送随机数RBR_BRB 和HK(RA,RB,B)=MAC(K,RA∣∣RB∣∣B)H_K(R_A, R_B, B) = MAC(K, R_A||R_B||B)HK(RA,RB,B)=MAC(K,RA∣∣RB∣∣B)
- A计算 HK′(RA,RB,B)=MAC′(K,RA∣∣RB∣∣B)H_K^{'}(R_A, R_B, B) = MAC^{'}(K, R_A||R_B||B)HK′(RA,RB,B)=MAC′(K,RA∣∣RB∣∣B) ,与B发送的值比较,成功认证Bob
不能抵抗中间人攻击
SKID3 双向SKID身份识别
前三步和SKID2一样
- A给B发送 HK(RB,A)=MAC(K,RB∣∣A)H_K(R_B,A) = MAC(K,R_B||A)HK(RB,A)=MAC(K,RB∣∣A)
- B算HK′(RB,A)H_K'(R_B,A)HK′(RB,A)并比较,相等则认证
也无法抵抗中间人攻击
消息认证
- A对M签名,并将签名发给B(可行
- A用单钥对M加密,把密文发给B(不可行
- A计算M的MAC值,把MAC发给B(不可行
密钥建立协议
- 隐式密钥认证, A确定B的身份,只需要确认密钥
- 密钥确认,A确信未身份识别的B确实有某个密钥
- 显示密钥:A确信已身份识别的参与者有密钥
大嘴青蛙
- A给T 发送A,EA(TA,B,K)A,E_A(T_A,B,K)A,EA(TA,B,K)
- T给B 发送 EB(TB,A,K)E_B(T_B,A,K)EB(TB,A,K)
- A和B得到K进行童话
关键: A可以生成好的会话密钥
Yahalom
- A给B发送A,RAA, R_AA,RA
- B给T发送B,EB(A,RA,RB)B, E_B(A, R_A, R_B)B,EB(A,RA,RB)
- T给A发送EA(B,K,RA,RB),EB(A,K)E_A(B,K,R_A,R_B), E_B(A,K)EA(B,K,RA,RB),EB(A,K)
- A解密第一条消息,提取KKK,验证RAR_ARA和第一步发送的RAR_ARA相同,然后发送给B :EB(A,K)EK(RB)E_B(A,K) E_K(R_B)EB(A,K)EK(RB)
- B用共享密钥对第一条消息解密,得到K,再用K得到RBR_BRB,验证是否与2中的RBR_BRB相同
Needham-Schoroeder
- A给T发送A,B,RAA,B,R_AA,B,RA
- T给A 发EA[RA,B,K,EB(A,K)]E_A[R_A,B,K,E_B(A,K)]EA[RA,B,K,EB(A,K)]
- A解密得出K,验证RAR_ARA是否与1的相等,给B发 EB(A,K)E_B(A,K)EB(A,K)
- B对消息解密得到K,生成随机数RBR_BRB,给A发送EK(RB)E_K(R_B)EK(RB)
- A对消息解密得到RBR_BRB,生成RB−IR_B-IRB−I (I是索引号码),给B发送EK(RB−I)E_K(R_B-I)EK(RB−I)
- B用K对消息解密,验证得到明文为RB−1IR_B-1IRB−1I
防止重放攻击
安全漏洞:旧的会话密钥仍有价值
Otway-Rees协议
- A给B发 I,A,B,EA(RA,I,A,B)I,A,B,E_A(R_A,I,A,B)I,A,B,EA(RA,I,A,B)
- B给T发 I,A,B,EA(RA,I,A,B),EB(RB,I,A,B)I,A,B,E_A(R_A,I,A,B),E_B(R_B,I,A,B)I,A,B,EA(RA,I,A,B),EB(RB,I,A,B)
- T给B发 I,EA(RA,K),EB(RB,K)I,E_A(R_A,K), E_B(R_B,K)I,EA(RA,K),EB(RB,K)
- B对收到的消息解密求出K,将属于A发的消息发给A EA(RA,K)E_A(R_A,K)EA(RA,K)
- A解密得到K和RAR_ARA并验证
Kerberos
- A给T发送 A,BA,BA,B
- T给A发送EA(T,L,K,B)EB(T,L,K,A)E_A(T,L,K,B) E_B(T,L,K,A)EA(T,L,K,B)EB(T,L,K,A)
- A对第一条消息解密求出K,给B发送消息EK(A,T),EB(T,L,K,A)E_K(A,T), E_B(T,L,K,A)EK(A,T),EB(T,L,K,A)
- B对收到消息解密得到K,然后把T+IT+IT+I,K加密后发给A :EK(T+I)E_K(T+I)EK(T+I)
- A对收到消息解密得到T+IT+IT+I验证正确性
协议可行,但要求时钟域T的始终同步。
这个结果是把始终同步到安全的帝国是服务器的几分钟内,并在这个时间间隔内重放获得
EKE协议
- A给 B发A,EP(K′)A, E_P(K')A,EP(K′)
- B给A发 EP[EK′(K)]E_P[E_{K'}(K)]EP[EK′(K)]
- A给B发 EK(RA)E_K(R_A)EK(RA)
- B给A发 EK(RA,RB)E_K(R_A,R_B)EK(RA,RB)
- A给B发 EK(RB)E_K(R_B)EK(RB)
- B 用K对消息解密得到RBR_BRB认证
3-6是双向认证
秘密分拆协议
- T生成随机串R, 长度等同M
- S=M⊕RS = M\oplus RS=M⊕R
- T把R分给A,把S给B
- A和B将各自的比特串异或 M=S⊕RM = S\oplus RM=S⊕R
技术相对安全,每一部分本身没有价值
拆给四方
- T生成 E,F,G
- 异或得到U=M⊕E⊕F⊕GU = M\oplus E\oplus F\oplus GU=M⊕E⊕F⊕G
- E给A F给B G给C U给D
但是如果任何一部分丢失了,且T不再,相当于该信息丢失了
秘密广播协议,会议密钥分配
密码协议安全性
缺陷存在原因
- 设计者误解密码技术
- 照搬了协议的某些特性
- 对某一特定环境盒安全需求研究不足
对协议的攻击
- 已知明文攻击
- 选择密文攻击
- 预言者会话攻击
- 并行会话攻击
分析
- 攻击检验发
- 逐个对协议攻击,检验是否能抵抗。主要使用语言描述形式
- 形式语言逻辑分析
- 用非专门语言盒验证工具对协议进行模型建立然后验证
- 开发专家系统
- 分析只是,新人逻辑
- 密码系统的代数特点进行验证
文章详细介绍了协议的不同类型,包括仲裁协议、裁决协议和自动执行协议,强调了它们在确保任务完成和防止欺诈中的作用。同时,文章探讨了安全通信中的关键概念,如认证协议、密钥建立协议和数字签名,以及如何通过这些机制防止中间人攻击和确保数据完整性。此外,还提到了一些具体的密码协议,如DH密钥交换和SKID身份识别协议,以及它们的安全性和潜在弱点。
1541

被折叠的 条评论
为什么被折叠?



