11

据我所知,通过SSL,浏览器获取安全网站的公钥,并通过公钥加密rsa算法,这两个建立会话密钥,然后通过一些对称算法继续通信,因为对称密钥加密/解密速度更快。 SSL使用哪种对称密钥算法? DES? AES?或者是其他东西?SSL使用哪种对称密钥算法?

+0

http://en.wikipedia.org/wiki/Secure_Sockets_Layer#TLS_handshake_in_detail – 2011-05-22 14:38:48

+0

总结其他人所说的话:有几种选择;连接中使用的内容取决于特定的客户端和服务器。 – Jumbogram 2011-05-23 01:09:54

回答

19

当客户端连接到服务器时,它协商所谓的密码组(加密组合,密钥交换,认证算法)来使用。每个SSL客户端或服务器都有一个允许的密码套件列表,并且在握手过程中,客户端和服务器协商使用哪种密码套件。有时可能发生,没有共同的分母(密码套件不相交),并且无法建立连接。支持SSL的对称算法有DES,3DES,ARCFOUR,AES,Camellia,RC2,IDEA,SEED,NULL(无加密)。

+0

你忘了ARIA:http://tools.ietf.org/html/rfc6209 – Jumbogram 2011-05-23 01:00:33

+0

@jumbogram感谢你指点这个RFC,我不知何故错过了它。但是,我应该指出,严格来说这不是TLS的一部分。 RFC是“信息性的”而不是Sstandards Track,它具有非常本地化的用途(一个国家)。我还可以提到在前苏联很受欢迎的GOST,但它并没有在其他地方使用过。 – 2011-05-23 06:18:06

5

在连接建立(“握手”)期间,客户端和服务器决定使用“密码套件”。密码套件陈述使用的算法(非对称密钥协议,对称加密和完整性检查)。详细地说,客户端发送它支持的密码套件的列表,并且服务器选择其中的一个,它也支持它。通常,服务器在客户端发送的客户端中选择它支持的第一个套件(换句话说,客户端消息中的套件的排序是它的“优先顺序”,服务器通常会尊重客户端的首选项)。

例如,密码套件TLS_RSA_WITH_3DES_EDE_CBC_SHA意味着会话密钥将使用RSA(非对称加密,使用来自服务器证书的RSA公钥)传输,数据将使用3DES进行对称加密,并且完整性检查将会使用SHA-1散列函数。有关标准密码套件的列表,请参阅TLS specification(其他套件稍后添加,特别是一些带有AES的套件)。