网安笔记07 协议的基本概念

协议的基本概念

定义:两个或多个参与者完成某任务采取的一系列步骤

有序;至少两个参与者;必须完成任务

仲裁协议

需要有仲裁方 arbitrator, 公正第三方,其他方信赖

对协议参加者无偏向;信息正确;帮助互不信赖实体完成任务

特点:

  1. 计算机可能怀疑作为仲裁者的计算机
  2. 设立仲裁者需要承担开销
  3. 增加时延
  4. 仲裁者对对话处理。可能成为系统瓶颈
  5. 仲裁者会成为黑客攻击的目标

裁决协议

裁决人 adjudicator, 公正可信赖第三方,不直接参与协议。
参与者发生纠纷需要其裁决

  • 无仲裁子协议, 双方协商好签署,没有第三方
  • 裁决子协议 双方找第三方,双方提供者证据,第三方根据证据进行裁决

特点:

  1. 双方诚实
  2. 怀疑欺骗,则第三方根据证据裁定是否欺骗
  3. 裁决协议应确定欺骗者身份
  4. 只可检测欺骗,不可预防欺骗发生

自动执行协议:(self-enforcing)

  1. 保证公平性
  2. 无需仲裁者参与和解决争端
  3. 一方企图欺骗另一方,另一方立刻检测欺骗发生,停止协议

好协议特点

  1. 涉及各方须知协议细节
  2. 各方遵守协议
  3. 协议非模糊/清晰
  4. 协议完整 —— 对所有情况要做出反应
  5. 操作要么一方/多方计算, 要么各方之间传递

协议分类,密码协议

安全协议功能分类

  1. 认证协议 authentication protocol —— 给实体提供关于另一个实体身份的确信度
  2. 密钥建立协议 agreement/exchange/distribution protocol —— 两个通信实体之间建立共享密钥
  3. 认证密钥简历 authenticated key/agreement/exchange/distribution —— 另一实体身份被验证,两个实体之间共享密钥

ISO七层参考模型分类

扫描二维码关注公众号,回复: 15330835 查看本文章
  1. 高层
  2. 低层

根据算法分类

  1. 双钥/公钥 协议 public
  2. 单钥协议 secret
  3. 混合协议 hybrid

密钥建立协议

密钥建立协议可在实体之间共享秘密

  1. 共享秘密 通常作为 一次性会话密钥,可以扩展多方共享密钥建立 —— 如会议密钥建立
  2. 协议可用单钥、双钥体制实现,借助可信赖第三方
  3. 密钥建立协议
    1. 密钥传输 —— 密钥从实体传给另一个实体
    2. 密钥协商 —— 双方、多方共同信息建立共享密钥

会话密钥?

  • 保密通信中,对每次会话用不同密钥加密,故交会话密钥。
  • 密钥旨在持续范围内有效,结束会话后被清除

1. 单钥体制

  1. A向T请求得到与Bob的会话密钥
  2. T给A E K A ( K e y )   E K B ( K e y ) E_{K_A}(Key)\ E_{K_B}(Key) EKA(Key) EKB(Key)
  3. A解密 D K A ( E K A ( K e y ) ) = K e y D_{K_A}(E_{K_A}(Key)) = Key DKA(EKA(Key))=Key
  4. A给B $ E_{K_B}(Key)$
  5. B解密 D K B ( E K B ( K e y ) ) = K e y D_{K_B}(E_{K_B}(Key)) = Key DKB(EKB(Key))=Key
  6. AB之间用Key通信

2. 双密钥

  1. A拿到B的公钥
  2. A给B发送 E K B P ( K e y ) E_{K_{BP}}(Key) EKBP(Key)
  3. B解密 D K B S ( E K B P ( K e y ) ) = K e y D_{K_{BS}}(E_{K_{BP}}(Key)) = Key DKBS(EKBP(Key))=Key
  4. AB会话密钥key进行通信

协议未对公钥合法性验证,无法抵抗自己人攻击

3. 中间人攻击 MITM

  1. M截获A的公钥,然后发送M的公钥给B
  2. M截获B的公钥,然后发送M的公钥给A
  3. A和B采用的密钥都是M的公钥,加密信息可以被M破解

4. 联锁协议

  1. A和B发送公钥给对方
  2. . A用B的公钥加密,但只发送一半密文
  3. B用A公钥加密,但只发送一半密文
  4. A B 再将剩下的一半发给对方,组合后私钥解密

安全性讨论
中间人只获得一半密文的时候,数据对攻击者没有用处(攻击者无法解密)

如何实现?

  • 分组加密算法
  • 消息解密依赖初始化向量
  • 发送的开始一半消息可以是加密消息的Hash函数,另一半消息可以是加密信息

5. 数字签名

  1. A从T得到B的公钥证书
  2. B从T得到A的公钥证书
  3. A B 采用CA公钥验证CA签名正确性,获得对方公钥
  4. 使用可信公钥通信

6. 密钥和消息传输

  1. A生成随机数作为密钥K,对M加密
  2. A得到B的公钥加密K
  3. 发送给对方B
  4. B先用私钥解密得到K
  5. 再用K对M进行解密

7. 密钥和消息广播

  1. A生成随机数K,对M加密
  2. A得到B,C,D的公钥
  3. A用B,C,D的公钥加密K,得到 E B P ( K )   E C P ( K )   E D P ( K ) E_{B_P}(K)\ E_{C_P}(K)\ E_{D_P}(K) EBP(K) ECP(K) EDP(K)
  4. A 广播加密消息与加密会话密钥
  5. B C D均可以用私钥得到K并解密得到M

8.DH密钥交换

AB都知道两个大素数n和g,g是群(0,…,n-1)的本原元,整数公开

  1. A选择大整数x,使得 X = g x   m o d   n X = g^x\ mod\ n X=gx mod n
  2. B选择大整数y,使得 Y = g y   m o d   n Y = g^y\ mod\ n Y=gy mod n
  3. A计算 K = Y x   m o d   n = g x y   m o d   n K = Y^x\ mod\ n = g^{xy}\ mod\ n K=Yx mod n=gxy mod n
  4. B计算 K = X y   m o d   n = g x y   m o d   n K = X^y\ mod\ n = g^{xy}\ mod\ n K=Xy mod n=gxy mod n

无法抵抗中间人攻击

认证建立协议

消息/数据源/实体认证 —— 欺骗、伪装攻击

传统方法:口令

  • 容易被窃取,安全性弱

使用单项双向认证

单向函数

  1. A给Host发送Passwd
  2. Host得到 M D ′ = H ( P ) MD' = H(P) MD=H(P)
  3. Host将MD’与MD比较
  4. 相同通过认证,反之拒绝

字典攻击,掺杂

单向函数加密口令文件容易遭受攻击。

  • 可以使用常用口令获得密文,然后对比密文查看哪些内容重合 —— 字典攻击

使用掺杂应对

  • 得到伪随机序列(可根据注册时间生成),与passwd级联后单向加密,削弱字典成功成功概率

Skey认证

一个认证程序

  1. A键入随机数R
  2. 计算 f ( R ) , f 2 ( R ) . . . , f 100 ( R ) f(R),f^2(R)...,f^{100}(R) f(R),f2(R)...,f100(R),得到的值分别为 x 1 , . . . , x 100 x_1,...,x_{100} x1,...,x100,将 x 101 x_{101} x101和A的姓名存入数据库中
  3. A登录的时候输入姓名和 x 100 x_{100} x100,计算机计算 x 101 x_{101} x101并比较
  4. 相等通过认证
  5. 计算机用 x 101 x_{101} x101取代 x 100 x_{100} x100,A保存 x 101 x_{101} x101清除 x 100 x_{100} x100

双钥

  1. H给A发送随机数R
  2. A给H发送 I D A 和 E A S ( R ) ID_A和E_{A_S}(R) IDAEAS(R) (对R签名)
  3. H检索A公钥,解密(验证签名)得到 R ′ R' R
  4. R == R’通过验证

H对A认证,但A没对H认证,单向认证

联锁协议

  1. A和B交换公钥
  2. A B 互相发送经过对方公钥加密的passwd
  3. A B分别解密得到对方的Passwd

Mallory可以对此实现中间人攻击

SKID身份识别

SKID2/3使用单钥体制

  1. A给B发送随机数 R A R_A RA,RIPE规定64b
  2. B给A发送随机数 R B R_B RB H K ( R A , R B , B ) = M A C ( K , R A ∣ ∣ R B ∣ ∣ B ) H_K(R_A, R_B, B) = MAC(K, R_A||R_B||B) HK(RA,RB,B)=MAC(K,RA∣∣RB∣∣B)
  3. A计算 H K ′ ( R A , R B , B ) = M A C ′ ( K , R A ∣ ∣ R B ∣ ∣ 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一样

  1. A给B发送 H K ( R B , A ) = M A C ( K , R B ∣ ∣ A ) H_K(R_B,A) = MAC(K,R_B||A) HK(RB,A)=MAC(K,RB∣∣A)
  2. B算 H K ′ ( R B , A ) H_K'(R_B,A) HK(RB,A)并比较,相等则认证

也无法抵抗中间人攻击

消息认证

  1. A对M签名,并将签名发给B(可行
  2. A用单钥对M加密,把密文发给B(不可行
  3. A计算M的MAC值,把MAC发给B(不可行

密钥建立协议

  1. 隐式密钥认证, A确定B的身份,只需要确认密钥
  2. 密钥确认,A确信未身份识别的B确实有某个密钥
  3. 显示密钥:A确信已身份识别的参与者有密钥

大嘴青蛙

  1. A给T 发送 A , E A ( T A , B , K ) A,E_A(T_A,B,K) A,EA(TA,B,K)
  2. T给B 发送 E B ( T B , A , K ) E_B(T_B,A,K) EB(TB,A,K)
  3. A和B得到K进行童话

关键: A可以生成好的会话密钥

Yahalom

  1. A给B发送 A , R A A, R_A A,RA
  2. B给T发送 B , E B ( A , R A , R B ) B, E_B(A, R_A, R_B) B,EB(A,RA,RB)
  3. T给A发送 E A ( B , K , R A , R B ) , E B ( A , K ) E_A(B,K,R_A,R_B), E_B(A,K) EA(B,K,RA,RB),EB(A,K)
  4. A解密第一条消息,提取 K K K,验证 R A R_A RA和第一步发送的 R A R_A RA相同,然后发送给B : E B ( A , K ) E K ( R B ) E_B(A,K) E_K(R_B) EB(A,K)EK(RB)
  5. B用共享密钥对第一条消息解密,得到K,再用K得到 R B R_B RB,验证是否与2中的 R B R_B RB相同

Needham-Schoroeder

  1. A给T发送 A , B , R A A,B,R_A A,B,RA
  2. T给A 发 E A [ R A , B , K , E B ( A , K ) ] E_A[R_A,B,K,E_B(A,K)] EA[RA,B,K,EB(A,K)]
  3. A解密得出K,验证 R A R_A RA是否与1的相等,给B发 E B ( A , K ) E_B(A,K) EB(A,K)
  4. B对消息解密得到K,生成随机数 R B R_B RB,给A发送 E K ( R B ) E_K(R_B) EK(RB)
  5. A对消息解密得到 R B R_B RB,生成 R B − I R_B-I RBI (I是索引号码),给B发送 E K ( R B − I ) E_K(R_B-I) EK(RBI)
  6. B用K对消息解密,验证得到明文为 R B − 1 I R_B-1I RB1I

防止重放攻击
安全漏洞:旧的会话密钥仍有价值

Otway-Rees协议

  1. A给B发 I , A , B , E A ( R A , I , A , B ) I,A,B,E_A(R_A,I,A,B) I,A,B,EA(RA,I,A,B)
  2. B给T发 I , A , B , E A ( R A , I , A , B ) , E B ( R B , 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)
  3. T给B发 I , E A ( R A , K ) , E B ( R B , K ) I,E_A(R_A,K), E_B(R_B,K) I,EA(RA,K),EB(RB,K)
  4. B对收到的消息解密求出K,将属于A发的消息发给A E A ( R A , K ) E_A(R_A,K) EA(RA,K)
  5. A解密得到K和 R A R_A RA并验证

Kerberos

  1. A给T发送 A , B A,B A,B
  2. T给A发送 E A ( T , L , K , B ) E B ( 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)
  3. A对第一条消息解密求出K,给B发送消息 E K ( A , T ) , E B ( T , L , K , A ) E_K(A,T), E_B(T,L,K,A) EK(A,T),EB(T,L,K,A)
  4. B对收到消息解密得到K,然后把 T + I T+I T+I,K加密后发给A : E K ( T + I ) E_K(T+I) EK(T+I)
  5. A对收到消息解密得到 T + I T+I T+I验证正确性

协议可行,但要求时钟域T的始终同步。
这个结果是把始终同步到安全的帝国是服务器的几分钟内,并在这个时间间隔内重放获得

EKE协议

  1. A给 B发 A , E P ( K ′ ) A, E_P(K') A,EP(K)
  2. B给A发 E P [ E K ′ ( K ) ] E_P[E_{K'}(K)] EP[EK(K)]
  3. A给B发 E K ( R A ) E_K(R_A) EK(RA)
  4. B给A发 E K ( R A , R B ) E_K(R_A,R_B) EK(RA,RB)
  5. A给B发 E K ( R B ) E_K(R_B) EK(RB)
  6. B 用K对消息解密得到 R B R_B RB认证

3-6是双向认证

秘密分拆协议

  1. T生成随机串R, 长度等同M
  2. S = M ⊕ R S = M\oplus R S=MR
  3. T把R分给A,把S给B
  4. A和B将各自的比特串异或 M = S ⊕ R M = S\oplus R M=SR

技术相对安全,每一部分本身没有价值

拆给四方

  1. T生成 E,F,G
  2. 异或得到 U = M ⊕ E ⊕ F ⊕ G U = M\oplus E\oplus F\oplus G U=MEFG
  3. E给A F给B G给C U给D

但是如果任何一部分丢失了,且T不再,相当于该信息丢失了

秘密广播协议,会议密钥分配

密码协议安全性

缺陷存在原因

  • 设计者误解密码技术
  • 照搬了协议的某些特性
  • 对某一特定环境盒安全需求研究不足

对协议的攻击

  1. 已知明文攻击
  2. 选择密文攻击
  3. 预言者会话攻击
  4. 并行会话攻击

分析

  1. 攻击检验发
    1. 逐个对协议攻击,检验是否能抵抗。主要使用语言描述形式
  2. 形式语言逻辑分析
    1. 用非专门语言盒验证工具对协议进行模型建立然后验证
    2. 开发专家系统
    3. 分析只是,新人逻辑
    4. 密码系统的代数特点进行验证

猜你喜欢

转载自blog.csdn.net/JamSlade/article/details/130601348