Encryption 外行术语中的安全远程密码(SRP)

Encryption 外行术语中的安全远程密码(SRP),encryption,cryptography,Encryption,Cryptography,我目前正在从事一个项目,该项目涉及安全地验证用户。我已经读了很多关于SRP的书,但仍然没有设法了解核心概念。如果您能用外行的语言解释SRP的想法和实施,我将不胜感激 注意:请不要发布有关SRP的网站链接,因为我肯定我已经在谷歌上搜索并阅读了其中的大部分;除非是一篇用清晰的语言解释SRP的论文。从双方已经同意密码开始 在协议的第一部分,双方生成一个随机数,并使用一些涉及该随机数和密码的简洁数学来同意一个随机共享秘密。这样做的方式每次都是不同的(即使密码相同),没有人在电线上监听可以确定共享的秘密,

我目前正在从事一个项目,该项目涉及安全地验证用户。我已经读了很多关于SRP的书,但仍然没有设法了解核心概念。如果您能用外行的语言解释SRP的想法和实施,我将不胜感激


注意:请不要发布有关SRP的网站链接,因为我肯定我已经在谷歌上搜索并阅读了其中的大部分;除非是一篇用清晰的语言解释SRP的论文。

从双方已经同意密码开始

在协议的第一部分,双方生成一个随机数,并使用一些涉及该随机数和密码的简洁数学来同意一个随机共享秘密。这样做的方式每次都是不同的(即使密码相同),没有人在电线上监听可以确定共享的秘密,并且只有双方都知道密码时才有效。(所涉及的数学基于离散对数问题,与Diffie Hellman密切相关。)

然后,双方继续向对方证明,他们都同意相同的共享秘密(即,他们都知道密码),但没有向任何人透露。这需要更多(不同)精巧的数学


如果双方都确信他们拥有相同的共享秘密,那么他们就可以从中派生会话密钥,并在他们选择的密码下开始通信。

那么,他们是否将约定的“密码”存储在某个地方?密码会被泄露吗?服务器只存储从密码派生的数据块。所使用的机制意味着无法从数据块确定密码,也无法将数据块当作密码来使用。因此,这实际上等同于(从黑盒的角度来看)我使用KDF生成公钥-私钥对,将公钥的一半交给服务器,然后使用标准公钥身份验证来验证未来的连接?@Ajedi32:如果你指的是密码的存储方式,那么是的,我认为这是一种合理的思考方式。处理密码的困难在于如何避免在网络上以明文形式发送密码,这也是SRP背后的驱动力之一。