0

我将客户的密码存储在他的设备中,有时客户需要将密码发送到服务器。

  • 当客户端连接到我(服务器)时,
  • 我给了他一个用于加密的密钥。
  • 我希望客户端通过密钥发送加密密码。
  • 服务器将使用密钥(已存储)解密密码并验证密码。

即使它可能并不完美,但它听起来比使用存储在客户端和服务器中的一个静态密钥更安全。

听起来很简单,我在看 c++ 加密库(crypto++),bleh 看起来太复杂了。

发现有一个好用的。钥匙沙。

但似乎没有提供我需要的功能。
Keyczar 似乎需要生成一个包含加密密钥的文件,而这个文件是由他们的一个工具生成的,这太麻烦了。

如果这可以在 c++ 或 keyczar 中完成(我可能错过了它可以做什么)
请告诉我如何做。

谢谢你。

Linux/Mac 平台。

4

2 回答 2

1

如果密钥交换不安全,您将一无所获(减少重放攻击除外);也许只是为了保护传输安全而研究 TLS/SSL

于 2011-04-04T10:47:52.957 回答
1

如果您在用户使用它来加密他或她的密码之前立即将密钥发送给用户,那么您可能会以明文形式发送密码。(无论如何,您正在发送重建明文密码所需的所有数据。)

更好的方法是使用TLS加密整个会话,使用随机数保护(以避免重放攻击)随机生成的会话密钥。

如果您真的想要花哨,您可以使用客户端 x509 证书来为您验证客户端 - 那么您根本不需要服务器上的密码。(但您可能仍想使用密码来存储在设备上加密的私钥。)

如果您喜欢这个想法但不喜欢 TLS,因为 x509 非常复杂,那么使用 ssh 密钥集成ssh会话管理可能会更容易。ssh 密钥比 x509 密钥更容易使用,但它们的简单性意味着它们并不适用于任何地方。

于 2011-04-04T10:54:29.887 回答