重点是设计一个简单的系统,用户可以在其中发送加密消息(在服务器的支持下)。
在这种情况下,客户端没有本地存储,所以我不得不使用用户可以在需要时选择、记住和键入的密码。(我知道这会削弱整个系统,但这是一个硬性要求)
另一个要求是服务器不能存储明文私钥或任何其他可用于解密消息的数据(例如:只有用户可以读取加密消息,服务器管理员不应该能够)。
我的方法是在客户端生成一个非对称密钥对,在服务器上发布公钥以及私钥的加密副本(使用用户密码加密)。然后,用户可以使用收件人公开的公钥向其他用户发送加密消息;当用户需要解密消息时,他的(加密的)私钥在客户端从服务器获取,使用用户提供的密码解密,然后用于解密消息。
这有道理吗?这个系统设计有什么缺陷吗?(除了用户选择短密码或错误密码所带来的弱点)这种方法是否已经在类似的场景中使用过?
谢谢 :)