我有一个关于如何加密用户之间的消息的问题。注意我只会谈论加密理论而不是平台相关的代码,比如C ++和Windows Cryptography。我说的是系统编程,而不是使用TLS,SSL等进行网络编程加密......
此外,请忽略证书和签名消息,因此只需将公钥视为已经过验证的非欺诈性消息,并将消息视为来自正确的用户。
我认为,在用户之间实现快速安全的加密通信的最佳方式是让两个用户都拥有会话密钥,因为对称加密比非对称加密更快,并且使用非对称加密(RSA)来安全地传输会话密钥。
我知道还有其他一些关键的协议算法,比如Diffie-Hellmans,但是我们坚持使用我选择的RSA。
如果您发现这可能是一种不安全的(中间人攻击)或执行加密通信的效率极低的方式,请告诉我。
理论步骤:
我。)缔约方= {服务器,客户}
ii。)服务器:生成会话密钥(RC4)
iii。)客户端:生成私钥/公钥对(RSA)
iv。)客户端:将公钥发送到服务器
v。)服务器:使用客户端的公钥加密会话密钥,然后发送加密 客户端的会话密钥
vi。)客户端:使用客户端私钥解密会话密钥
vii。)双方现在都持有快速加密通信的会话密钥
服务器(服务器的会话密钥)< - >会话密钥的加密分组(通信介质)< - >客户端(服务器的会话密钥,客户端的公钥/私钥对)
谢谢!
答案 0 :(得分:3)
假设:
在这些条件下,这是非常安全的。事实上,您在问题中描述的是PGP的工作原理。
如果您愿意了解有关针对PGP的攻击的更多信息,请转到here。 如果您愿意学习密码学的基础知识,this是一本优秀的初学者教程。
答案 1 :(得分:1)
坚持使用我选择的RSA。
这就是你最大的漏洞所在。
TLS(可以使用RSA)等协议SSH和PGP为协商加密提供了一个明确定义的机制,而openssl等实现提供了一个记录的,经过测试的,可移植的,健壮的,我们将测试的抽象层。
滚动自己的解决方案会带来注入漏洞的巨大风险。并且需要持续的维护痛苦。
许多人认为BTW RC4已被破坏。