RSA 是一種公鑰加密系統,用於保護通過互聯網傳輸的數據。它最常用於建立SSL/TLS會議 – 並由OpenVPN協議(有時是 IKEv2)以確保 TLS 握手的安全。

該算法之所以被稱為 RSA,是因為 1977 年提出該算法的三個人的姓氏(Ron Rivest、Adi Shamir 和 Leonard Adleman)。它是一種非對稱加密系統,使用兩個 RSA 密鑰(稱為密鑰對)。
與其他公鑰加密系統一樣,RSA 密鑰交換涉及共享在生成私鑰時派生的公鑰。在這種類型的加密系統中,任何有權訪問私鑰的人都可以推斷出公鑰。
由於涉及復雜的數學系統,相反的情況(從公鑰導出私鑰)是不可能的。這就是為什麼通過互聯網共享公鑰來建立安全連接並開始共享加密數據是安全的。
需要記住的重要一點是,在通過互聯網共享加密數據之前,首先需要在客戶端和服務器之間建立安全連接。
為此,必須進行密鑰交換(稱為握手),以便雙方就用於加密數據的密鑰達成一致。
目前,客戶端可以使用五種不同的算法來執行密鑰交換,RSA 就是其中之一。我們已經包含了以下所有五種算法:
- RSA
- 迪菲-赫爾曼
- 橢圓曲線 Diffie-Hellman
- 短暫的迪菲-赫爾曼
- 短暫橢圓曲線 Diffie-Hellman
值得注意的是,有些客戶(例如WireGuard協議)利用其他加密原語(例如 Curve25519)來建立握手。然而,這仍然只是一條設計用於與上述橢圓曲線 Diffie-Hellman 密鑰協商方案一起使用的橢圓曲線。
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 隧道使用 2048 位 RSA 握手密鑰大小建立的數據尚未被認為是值得關注的原因。
最後,還值得注意的是,一些 VPN 在實施 IKEv2 時也使用 RSA 來保護 TLS 握手(例如質子 VPN,例如,它使用 AES-256 對稱密碼實現 IKEv2,使用 RSA-4096 來保護 TLS 握手。
