【发布时间】:2015-12-25 02:41:44
【问题描述】:
我有一个关于如何加密用户之间的消息的问题。请注意,我将只讨论密码学理论,而不是像 C++ 和 Windows 密码学这样的平台相关代码。我说的是系统编程,而不是使用 TLS、SSL 等进行的 Web 编程加密......
另外,忽略消息的证书和签名,因此只需将公钥视为已被验证为非欺诈性的,并且消息来自正确的用户。
我认为,在用户之间实现快速且安全的加密通信的最佳方式是让两个用户都拥有一个会话密钥,因为对称加密比非对称更快,并使用非对称加密 (RSA) 来安全传输会话密钥。
我知道还有其他密钥协商算法,例如 Diffie-Hellmans,但我还是坚持使用我选择的 RSA。
如果您发现这可能是不安全的(中间人攻击)或执行加密通信的效率极低的方式,请告诉我。
理论步骤:
i.) 各方 = {服务器,客户端}
ii.) 服务器:生成会话密钥 (RC4)
iii.) 客户端:生成私钥/公钥对 (RSA)
iv.) 客户端:向服务器发送公钥
v.) 服务器:使用客户端的公钥加密会话密钥,然后发送加密的 客户端的会话密钥
vi.) 客户端:使用客户端的私钥解密会话密钥
vii.) 双方现在都持有用于快速加密通信的会话密钥
Server(Server's Session key) Session Key的加密包(通信媒介) Client(Server's Session key, Client's Public/Private key pair)
谢谢!
【问题讨论】:
标签: security encryption rsa public-key-encryption private-key