【发布时间】:2016-08-23 07:58:24
【问题描述】:
我正在开发一组应用程序,它提供了使用电子邮件在多个用户之间读取加密数据的可能性。
这相当困难...如果将电子邮件消息与通过单个服务器的实时聊天 (IM) 进行比较(对于实时聊天,我只需要 chanell 和 TLS)。因为我需要解密刚刚保存在远程服务器上的消息。
另外,我认为安全服务器不能保留私钥,因为用户想确定,事件提供方(后端)不能解密内容。私钥必须存储在一些东西上,比如智能卡(只有用户拥有)。
对于电子邮件,我发现了两个选项:
- S/MIME
- OpenPGP
所以...(对我而言)主要问题是如何分发私人数据,这将允许为收到加密电子邮件的用户解密电子邮件。
所以,问题是关于私钥的正确分配,现在我无法想象如何以安全的方式交付它。
【问题讨论】:
-
我投票结束这个问题,因为这不是一个直接的开发问题,而是更多关于安全系统的一般架构的问题。 security.SE 可能更适合,但一些关于公钥/私钥和混合密码系统的基本阅读可能是一个好的开始。
-
无论如何:通常,您不会创建私钥并分发它们。相反,客户端(客户端应用程序)执行并分发其公钥。
-
@JensErat 我记得由于 Diffie-Hellman 和其他相关工作。有一个不对称+对称的工作。客户端 A 和客户端 B 在它们之间交换某种随机数字,基于这些数字,他们创建一个公钥来加密通道通信。之后,客户端 A 对文件进行加密,并在消息中组合私钥 + 加密文件,然后用公钥加密消息。传输时,MiT 无法解密,之后客户端 B 用公钥解密数据,然后获取客户端 A 的私钥并解密文件。我说的对吗?
-
Diffie-Hellman 解决了另一个问题,如果只有服务器拥有私钥并且客户端只知道(受信任的)公钥/证书,则建立安全连接(对称/会话密钥)。 Diffie Hellmann 与异步消息传递无关(“稍后解密”)。
-
@JensErat 我明白了,谢谢。我真的需要更多的知识。
标签: email security encryption openpgp smime