网安笔记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七层参考模型分类

  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. 密码系统的代数特点进行验证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值