使用加密消息的安全通信

Secure communication using encrypted messages

我对如何加密用户之间的消息有疑问。请注意,我只会谈论密码学理论,而不是像 C++ 和 Windows 密码学这样的依赖于平台的代码。我说的是系统编程,而不是使用 TLS、SSL 等进行的网络编程加密...

此外,请忽略证书和消息签名,因此只需将 Public 密钥视为已被验证为非欺诈性且消息来自正确的用户即可。

我认为在用户之间实现快速安全的加密通信的最佳方式是让两个用户都拥有一个会话密钥,因为对称加密比非对称加密更快,并且使用非对称加密 (RSA) 来安全传输会话关键。

我知道还有其他密钥协议算法,如 Diffie-Hellmans,但让我们坚持使用我选择的 RSA。

如果您发现这可能是不安全的(中间人攻击)或执行加密通信的效率极低的方式,请告诉我。

理论步骤:

i.) 各方 = {服务器,客户端}

ii.) 服务器:生成会话密钥 (RC4)

iii.) 客户端:生成 private/public 密钥对 (RSA)

iv.) 客户端:发送 public 密钥到服务器

v.) 服务器:使用客户端的 Public 密钥加密会话密钥,然后发送加密的 客户端的会话密钥

vi.) 客户端:使用客户端的私钥解密会话密钥

vii.) 双方现在都持有用于快速加密通信的会话密钥

Server(Server's Session key) <--> Session Key's encrypted packet (Communication medium) <--> Client(Server's Session key, Client's Public/Private key pair)

谢谢!

假设

  • Public 密钥篡改是不可能的
    • 我想你是这个意思,"ignore Certificates and Signing of messages"
  • 密码系统没有被破坏
    • 对称密码未被破解(例如 RC4 被破解)
    • 非对称密码没有被破解
    • 单向哈希函数没有被破坏
    • 随机数生成器没坏

在这些条件下,这是绝对安全的。事实上,您在问题中描述的是 PGP 的工作原理。

如果您愿意了解更多关于针对 PGP 的攻击,请前往 here。 如果您愿意学习密码学基础知识,this 是一个很好的初学者教程。

lets stick with RSA which is what i've chosen.

这就是你最大的弱点所在。

TLS(可以使用 RSA)、SSH 和 PGP 等协议为协商加密提供了定义明确的机制,而 openssl 等实现提供了一个记录、测试、可移植、健壮且我们将测试的抽象层。

推出自己的解决方案会带来注入漏洞的巨大风险。并且需要持续的维护痛苦。

BTW RC4 被很多人认为坏了。