加密协议(Cryptographic Protocols)
本节将会结合之前学过的对称加密、加密散列函数以及非对称加密来解决问题,其中主要问题便是如何在服务区(Server)与客户(Client)之间进行认证。任何时候我们谈到加密协议,就不得不提及与之相关的威胁模型(Threat Model),威胁模型分析是寻找系统潜在威胁以建立对抗的策略,以建立安全的系统,简单来说就是了解攻击者的能力。
- 假设攻击者算力有限
- 加密系统正常工作
- \(E_k(m)\),攻击者在没有 \(k\) 的情况下无法解密
- 哈希函数\(H(x)\)
- 原相抗性:对于所有预设输出,从计算角度应无法找到符合输入哈希的输出)
- 抗碰撞性:无法从计算角度找到任何两个哈希值都相同的独特输入 \(x\),例如\(h(x) = h(x′)\)
- 攻击者类型
- passive attacker: only eavesdrop
- active attacker: controls the network, modify messages, replay messages, attack-in-the-middle
密钥交换协议(Encrypted Key Exchange protocol,EKE)
Steven M. Bellovin and Michael Merritt, 1992
该协议运用之前所学的Diffie-Hellman密钥交换方法,并对产生的信息级联用户id,再进行对称加密
上述协议的缺点是需要将key(p)的明文保存在服务器上,并且没有实现用户与服务器之间的身份验证。
为了实现用户与服务器之间的身份验证,我们需要验证双方都持有相同的key。由服务器随机选择一个数 \(r\) ,用key对其加密得到 \(E_k(r)\),级联发送 \(<E_p(g^{x_B} \bmod q), E_k(r)>\),用户收到后进行解密,为了向服务器证明自己确实接收到了 \(r\),并且为了验证服务器,再随机选择一个数 \(r_A\),利用key加密后获得\(<E_k(r||r_A)>\) 发送给服务器,服务器解密后获得 \(r\) 与 \(r_A\),首先比较 \(r\) 是否一致,确认用户身份,再将 \(r_A\) 加密后发送给用户,用户验证 \(r_A\) 是否一致来确认对方身份。
完整版EKE: