据我了解,浏览器通过 SSL 获取受保护网站的公钥,并通过公钥加密 rsa 算法,这两个建立会话密钥,然后通过一些对称算法继续通信,因为对称密钥加密/解密速度更快。SSL 使用哪种对称密钥算法?DES?AES?或者是其他东西?
4 回答
当客户端连接到服务器时,它会协商使用所谓的密码套件(加密、密钥交换、身份验证算法的组合)。每个 SSL 客户端或服务器都有一个允许的密码套件列表,并且在握手期间客户端和服务器协商使用什么密码套件。有时可能会发生,没有共同点(密码套件集不相交)并且无法建立连接。
SSL 支持的对称算法有 DES、3DES、ARCFOUR、AES、Camellia、RC2、IDEA、SEED、NULL(无加密)。
在连接建立(“握手”)期间,客户端和服务器决定使用“密码套件”。密码套件说明了使用的算法(非对称密钥协议、对称加密和完整性检查)。具体来说,客户端发送一个它支持的密码套件列表,服务器选择其中一个,它也支持。通常,服务器会在客户端发送的套件中选择它支持的第一个套件(换句话说,客户端消息中套件的顺序是它的“优先顺序”,服务器通常会尊重客户端的偏好)。
例如,密码套件TLS_RSA_WITH_3DES_EDE_CBC_SHA
意味着会话密钥将使用 RSA(非对称加密,使用服务器证书中的 RSA 公钥)传输,数据将使用 3DES 对称加密,完整性检查将使用 SHA-1哈希函数。有关标准密码套件的列表,请参阅TLS 规范(稍后添加了其他套件,特别是一些带有 AES 的套件)。
几种可能性,包括 RC4 和 DES,甚至没有加密。不是我熟悉的领域,但我认为客户端和服务器会协商找到一个他们都可以使用的领域
如果您在 Firefox 下使用 HTTPS,如果您单击 URL 栏中的小“锁定”图标,它将弹出一个包含连接详细信息的窗口。例如,在我的服务器上,我使用 128 位 AES 和 firefox 连接。
当然,不同的 Web 浏览器会给出不同的结果,因为 TLS 连接会协商连接。