Meteor使用Secure Remote Password Protocol(SRP)对用户进行身份验证。 Meteor文档没有提供有关安全级别的任何进一步声明,但我想知道SRP是否可以在不需要SSL / TLS的情况下提供安全性? SRP的维基百科页面声明:
一个窃听者或中间的人无法获得足够的东西 信息无需进一步强制猜测密码 每次猜测都与各方互动...
我承认我对安全性知之甚少,但我找不到有关其使用的任何建议。
非常感谢
答案 0 :(得分:9)
SRP仅用于交换密码。更准确地说,它纯粹是为了让通信保证两端都拥有相同的共享秘密,而不允许窃听者或中间人以某种方式猜测共享秘密。这就是它所做的一切:双向认证,所以如果/当(例如)我登录到服务器,我知道服务器真的是我想要登录的那个,并且它知道我是一个用户正确的密码。
不,但是(甚至尝试)在各方之间创建SSL / TLS之间的加密连接。虽然有人在收听时无法获得足够的信息来记录我所在位置所涉及的密码(或模仿服务器以供其他人登录),但它不(单独)加密进一步的通信 - - 除了SRP本身以外,其他任何人仍然可以读取通过连接传递的所有数据。
答案 1 :(得分:1)
我知道,我在这里回答有点迟,但我决定补充一些说明。正如Jerry Coffin所说,SRP用于密码交换,证明双方拥有一些共享秘密,并且它本身不提供任何加密,但是,在握手过程中双方都生成相同的密钥,以后可以用于通过一些其他算法加密/解密,即AES-256。 但是如果你决定使用这种身份验证方法,你应该考虑这个:
总而言之:SRP是一个很好的附加安全层,它有助于保护用户密码,生成会话加密密钥,验证客户端到服务器,以及防止MITM攻击,但如果它在TLS内部则更安全/ SSL频道。
os.urandom应该和你在一起! ;)