当我在登录(而非注册)表单中输入密码时,我使用的一些网站会检查我的密码。因此,例如,首先我可能有:
Username: sapi ✓
Password: passw ×
当我完成打字时,该网站已经让我知道没有错误:
Username: sapi ✓
Password: password123 ✓
仍然需要提交表单才能实际登录。
假设这不是在客户端完成的(例如,通过通知客户端散列算法和目标散列);这种方法显然是不安全的,因为它允许您获取任意用户的哈希值。
假设通信是加密的,在键入时逐字检查密码是否会带来安全风险?
我关心的主要领域是这样做涉及重复传输相似的(子)字符串:
- 一些开销数据+密码的第一个字母
- 一些开销数据+密码的第二个字母
- ...
- 一些开销数据+整个密码
这使得每个通信的明文在某种程度上具有确定性(或至少与前一个和下一个通信的明文相关)。
我知道一些加密算法容易受到已知明文攻击,尽管我不确定 SSL 是否是其中之一。我也不知道这里获得的知识水平(显然比已知明文攻击要少得多)是否足以降低输出的熵。
我想我有两个问题:
- 这是标准网络加密算法(基本上是 https)的安全风险吗?和
- 如果没有,是否有一类算法可能会带来问题?
我已经对我指的是登录表单而不是注册表单的问题进行了澄清。换句话说,客户端不能简单地使用 JS 根据已知长度/复杂性规则验证密码;该帐户已经存在,并且仅显示正确密码的复选标记。