1

我们的客户通过 SSL 调用我们的 Web 服务并使用用户名和密码进行身份验证。然后我们的服务器生成一个对称密钥并将其发送回客户端。

然后,客户端与我们的服务器建立 TCP 连接,并发送登录消息。此时,我要对客户端进行身份验证。

我的想法是让客户端使用对称密钥加密一段众所周知的/静态文本,并将其用作它拥有密钥的证据。

由于对称密钥是随机生成的,我可以在这里使用静态文本吗?

任何输入表示赞赏。

4

2 回答 2

2

SSL 用于对客户端和服务器进行身份验证,并且非对称加密是您可以在此场景中使用的最安全的原语。对称密码可用于通过使用 密码块链接消息身份验证代码进行身份验证, 也称为 CBC-MAC 模式。CBC-MAC 的使用具有与 HMAC 类似的保护,但使用对称密码而不是消息摘要功能。WPA 使用 CBC-MAC 模式来保护无线网络。

于 2010-06-30T16:15:42.350 回答
2

您的想法会受到重放攻击- 如果有人观察到用户登录,他们可以存储静态文本加密的对称密钥并稍后使用它来验证自己。

这样做的公认方式是挑战/响应。客户端连接,服务器生成随机质询并将其发送给客户端,客户端以加密版本的质询进行响应(尽管您实际上应该在这里使用 HMAC,而不是分组密码,否则您的客户端有效一个单块解密预言机!)。使用两个不同的随机密钥(通过 Web 服务同时提供)也会更安全,一个用于加密,一个用于身份验证。

但请注意,正如所写的那样,这个方案仍然容易受到中间人攻击。正如The Rook建议的那样,使用 SSL 肯定会更好。这将要求您的客户端生成一个公钥并将其发送到 Web 服务。Web 服务使用包含客户端公钥的签名证书以及 DN 字段中的客户端唯一标识符(用户名或其他)进行响应。单独连接上的服务器验证使用的客户端证书(确保它由您的 Web 服务签名),并验证证书中的客户端标识符是否与请求连接的客户端匹配。

于 2010-07-01T01:15:41.397 回答