RSA是一种用于保护通过Internet传输的数据的公共密钥密码系统。它最常用于建立SSL/TLS会议 - 和OpenVPN协议(有时是IKEV2)确保TLS握手。

该算法称为RSA,因为1977年提出的三个人的姓(Ron Rivest,Adi Shamir和Leonard Adleman)。它是一个不对称的加密系统,使用两个RSA键,称为钥匙对。
与其他公钥加密系统一样,RSA密钥交易所涉及共享在生成时从私钥中得出的公共密钥。在这种类型的加密系统中,任何访问私钥的人都可以推断公共密钥。
由于涉及复杂的数学系统,相反(从公共密钥中得出私钥)是不可能的。这就是为什么可以安全地通过Internet共享公共密钥以建立安全连接并开始共享加密数据的原因。
要记住的重要事情是,在您可以通过Internet共享加密数据之前,首先有必要在客户端和服务器之间建立安全的连接。
为此,必须发生一个钥匙交换(称为握手),以便双方都可以就将用于加密数据的密钥达成一致。
当前,客户可以使用五种不同的算法来进行该关键交换,其中RSA是其中之一。我们已包含以下所有五种算法:
- RSA
- Diffie-Hellman
- 椭圆曲线差异 - 赫尔曼
- 短暂的Diffie-Hellman
- 短暂椭圆曲线差异螺旋
值得注意的是,某些客户(例如Wireguard协议)利用其他加密原始图(例如Curve25519)来建立握手。但是,这仍然只是一条椭圆曲线,旨在与上述椭圆曲线差异 - 赫尔曼密钥协议方案一起使用。
RSA键
RSA密钥对是RSA算法使用的公共和私钥的名称。公共RSA密钥是加密密钥,而私钥(必须保密,以确保只有预期的接收者才能读取数据)是解密密钥。
值得注意的一件事是,RSA算法实际上非常慢,主要是因为其不对称性质。结果,协议通常利用RSA作为加密套件的一部分来传输共享密钥对称键加密,然后将其用于批量加密/解密。
因此,通常不利用RSA来加密批量数据本身,而是建立用于使用像AES这样的更快的对称加密算法加密的数据的手段。
RSA键和VPN
如果您的VPN提供商使用OpenVPN或SSTP协议在您和其VPN服务器之间建立安全隧道,则意味着VPN客户端使用RSA键来保护TLS握手。
OpenVPN协议使用控制频道上的RSA传递了该键AES加密在数据通道上使用。为了确保这种握手,RSA钥匙尺寸应至少为2048位。
如今,许多VPN提供商都使用4096位密钥,但是大多数专家并不认为这是严格的安全目的所必需的。因此,一个OpenVPN隧道尚未以RSA握手密钥大小为2048位建立。
最后,还值得注意的是,某些VPN还使用RSA在实施IKEV2时使用TLS握手(例如质子VPN,例如,使用RSA-4096使用AES-256对称密码实现IKEV2以保护TLS握手)。
