ssl - WSSE 认证悖论

标签 ssl https cryptography wsse

我目前正在研究 WSSE 协议(protocol)以保护我的 api。

我已经理解了基础,并且头脑清晰。

但是我遇到了一个问题。

假设我想生成一个一次性摘要,我必须连接时间戳、随机数和 secret 密码。

但是,在服务器端,我没有在数据库中存储明文密码,所以我无法检查摘要。

切换到清除密码不是一个选项。

我无法向客户端提供用于散列密码的算法,因为它们使用盐,而客户端无法使用盐。

我能想到的唯一解决方案是不散列摘要,只是连接数据和 base64。

这样我就可以对用户密码进行编码以检查其有效性。

由于密码以纯文本形式传输,因此可能不安全,但如果我强制使用 HTTPS 进行身份验证怎么办?

会安全吗?

最佳答案

As password is transmited in plain text it may not be secure, but what if I force HTTPS to authenticate?

Will it be safe?

是的,在正常范围内,这是确保它安全的唯一方法。

只需发送完整密码,但要通过安全 TLS 连接发送。您可以使用安全 key 派生函数,例如 brypt 或 PBKDF2,并输入存储的随机盐(每个用户一个)和密码来检索“哈希”,然后可以将其检查为存储在数据库中的那个。

请注意,您不需要从客户端发送时间戳。不过,记录并限制身份验证尝试的次数当然是个好主意。您不能使用时间戳作为哈希的输入,每次时间戳更改时结果都会不同。

关于ssl - WSSE 认证悖论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12588498/

相关文章:

javascript - HTTPS Web 应用程序可以调用非 HTTPS 来源吗?

java - 具有公钥的 RSA 签名作为未在 java 中验证的文本

apache - 部署在代理后面时,Grails 会生成正确的链接

javascript - Nodejs 将服务器 HTTP 更改为 HTTPS

c - 修改 Ext4 文件系统写入磁盘的数据

c# "Bad Data"解密时出现异常 - 使用 Base64 编码进行传输

c# - 验证 TLS 电子邮件接收

ssl - 错误 "ERR_INVALID_REDIRECT"到表单登录

security - 使用 Ansible 自动部署 SSL 私钥

ssl - 在 MQ 窗口上更新证书后 channel 未运行