零知识证明
Fiat-Shamir 算法
- $n = p * q。p, q$是大素数。 $n$为可信第三方机构公开,而$p, q$为私有或者销毁
- $s: Alice$的密钥, $0 < s < n$。 Alice 必须证明其知晓密钥$s$,而不需要向任何人出示$s$。
- $v:Alice$的公钥,满足$v \equiv s^2 \, mod \, n$ 。
- Alice 计算并得出v展示给Bob
- 无法从v推导出s。
- $r: Alice$随机挑选的一个数字,满足$0 < r < n-1$。
- $x : x = r^2 \, mod \, n$ 作为一个Alice计算后的证据x(evidence),并发送给Bob。
- $c: $ Bob随机挑选的一个数c(challenger),范围是{1, 0}。
- $y : y = rs^c \, mod \, n$ 由$Alice$计算得到结果y(response),并发送给Bob。
- Bob通过计算$y^2\, mod \,n \,\,?= xv^c\, mode \, n$ ,如果相等,则认证完毕。
认证技术
X.509
数据协议,定义一个数据目录服务,维护一个用户信息数据库。
Kerberos
认证协议,用于证明接收双方的合法性。基于C/S结构的单向认证,弱双向认证。
##认证攻击类型
- 假冒攻击
- 重放攻击
- 强迫延时攻击
- 交错攻击
- Oracle会话攻击
- 并行会话攻击
PKI
PKI 公钥基础设施,通过公开密钥技术和数字证书,来确保系统信息安全,并负责验证数字证书持有者身份的体系。绝对安全,由国家信用作为背书。
应用:VPN,安全电子邮件,web服务安全。
Kerberos
Kerberos 是一种计算机网络认证协议。基于票据(tickets) 的工作原理和$Neeedham-Schroeder \, Symmetric \, key \, Protocol$,允许结点以一种安全的策略,在不安全的网络中,互相证明的身份。
- 防窃听,防重放攻击。
- C/S 模型,提供双方认证。
- 该协议无竞争对手!
- 开源,多平台可用。
该协议建立在对称加密体系之上,并且需要一个可信的第三方机构 。在特定的认证情景中使用不同的对称加密算法。
* $Neeedham-Schroeder \, Symmetric \, key \, Protocol$
情景:
- TA是一个第三方的可信机构,可分发密钥中心,能够提供双方会话共享密钥。
- E(K,-)是一个对称加密算法(如DES)
- TA拥有一个密钥$K_{AT}$y与Alice一致,同样也有一个$K_{BT}$ 与Bob一致。
- Alice使用一个随机数$r_A$ 来认证TA,并从TA获得一个会话密钥 $K_{AB}$ 。
- Alice使用$K_{BT}$加密$(K_{AB}, r_B) $ 发给bob,bob使用$K_{BT}$解密。
- Bob使用会话密钥$K_{AB}$ 加密$r_B $发送给Alice。
- Alice使用$K_{AB}$解密得到$r_B$,并使用$K_AB$加密$r_B - 1$ 发送给Bob,Bob解密检查结果是否为$r_B -1$ 。
* 架构
AS = 认证服务器(认证机构)
SS = 提供服务的服务器(服务机构)
TGS= 票据许可服务器
TGT = 许可的票据
ST = 服务票据
* 流程
- 用户客户端注册
- 客户端认证
- 客户服务认证
- 客户服务请求
客户登录步骤:
- 用户输入用户名和密码,构成【长期密钥】,用于加密网络传输的数据。
- 使用hash函数运行输入的密码,得到客户的主密钥【客户/客户 密钥】,并由客户端保管。
- TGS,SS会话密钥属于短期密钥,利用主密钥实现交换和发布。
客户认证步骤:
- 客户机向AS发送一个明文消息,代表用户请求服务。
- AS校验Bob是否在其数据库中,如果在,则AS返回一下两条信息给客户
- 消息A,用主密钥加密的【客户/TGS】会话密钥。
- 消息B, 用TGS加密的票据授权票据TGT,客户网络地址,票据有效期,【客户/TGS会话密钥】。
- 客户机收到A,B,使用主密钥解密A 得到【客户/TGS 会话密钥】,消息B无法解密,因为没有TGS密钥来解密。
客户服务认证步骤:
- 申请服务时,客户机向TGS发送两条消息:
- 消息C,由消息B和申请服务的ID组成。
- 消息D,用【客户/TGS会话密钥】加密的认证。(客户ID+时间戳组成)
- 基于收到的消息C,D,TGS将从消息C中重新获取消息B,用TGS密钥解密消息B,从而得到【客户/TGS会话密钥】,TGS使用这个密钥解密消息D,成功认证,然后返回两条消息给客户机 :
- 消息E,用SS服务器加密的客户-SS服务票据ST(客户ID,客户网络地址,【客户/SS会话密钥】,票据有效期)
- 消息F:用【客户/TGS会话密钥】加密的【客户/SS会话密钥】。
客户服务申请步骤:
- 基于从TGS收到的消息E,F,客户机有足够的消息向SS认证自己。客户机发送消息给SS:
- 消息E,由先前步骤得到的E。
- 消息G:用【客户/SS会话密钥】加密的一个新的认证,包括客户ID和时间戳
- SS用自己的密钥解密消息E(票据),重新得到 【客户/SS会话密钥】,用这个会话密钥,SS解密消息G得到认证,返回确认函H给客户机,确认该身份真实,并同一向该客户提供服务。
- 消息H:在客户认证中找到时间戳, +1,用【客户/SS会话密钥加密】
- 客户机使用【客户/SS会话密钥】解密确认函H,并检查时间戳是否被正确地更新,如果是,客户机可以信赖该服务器,并向该服务器发送服务请求。
- 服务器向客户机提供所请求地服务。
* 局限性
- 单点故障:中心化
- 时钟同步:未同步时间戳认证将会失效。
- 管理协议未标准化