正如你已经指出的那样RSA非对称加密方案,这意味着:
c = E(pub_key, m) // ciphertext = encryption(public key, message)
m = D(pri_key, c) // message = decryption(private key, ciphertext)
相比之下,对称加密方案(例如前面的例子)AES) 的工作原理如下:
c = E(key, m)
m = E(key, c)
换句话说,相同的密钥用于加密和解密。
这就是非对称密码系统发挥作用的地方。它允许各方安全地交换对称加密的密钥。
基本上,原始(但非常脆弱!)密钥交换看起来是这样的:
- 服务器将其公钥发送给客户端
pub_key_S
- 客户端向服务器发送用服务器的公钥加密的公钥
c = E(pub_key_S, pub_key_C)
- 服务器解密
c
用他的私钥pub_key_C = D(pri_key_S, c)
- 服务器生成一个新的随机对称密钥
key_CS
- 服务器用客户端的公钥加密新生成的密钥
c = E(pub_key_C, key_CS)
- 服务器发送
c
给客户
- 客户端用他的私钥解密密文
pri_key_C
key_CS = D(pri_key_C, c)
现在客户端和服务器有一个共享的密钥key_CS
他们可以使用它来安全地进行正在进行的会话通信。
这样的协议实际上要复杂一些,包括证书、数字签名、哈希码等。使用最广泛的协议可能是SSL 或 TLS http://de.wikipedia.org/wiki/Transport_Layer_Security。 (例如https).
如果您对此类协议的详细信息感兴趣,我建议您查看该链接。