安全远程密码协议,用于在不安全的环境中进行密钥交换,同时支持零知识进行身份认证。零知识认证指的是客户端向服务器证明自己知道密码,但是不需要向服务器发送密码来验证自己的身份。在完成密钥交换和身份认证过程中,密码永远不会离开客户端,即使有攻击者窃听到交互的信息,也不能反向推导出机密信息。
SRP协议的设计
根据【1】的定义,SRP消息交互流程如下所示:
SRP-6 和 6a 中的符号定义:
N: 安全大素数(N = 2q+1,其中 q 为素数)。所有算术运算都是以 N 为模进行的。
g: 一个模 N 的生成器
H(): 单向哈希函数
k: 乘数参数(SRP-6a 中为 k = H(N, g),传统 SRP-6 中为 k = 3)
s: 用户的盐值
I:用户名