RSA、DSA 和 ECC 加密演算法有什麼區別?

  • 2022 年 11 月 17 日
  • 筆記

RSA、DSA 和 ECC 加密演算法是用於在公鑰基礎設施中生成密鑰的主要演算法。

公鑰基礎設施 (PKI) 用於管理互聯網通訊和電腦網路中的身份和安全性。 啟用 PKI 的核心技術是公鑰密碼術,這是一種依賴於使用兩個相關密鑰(公鑰和私鑰)的加密機制。

這個公鑰和私鑰對一起加密和解密消息。 以這種方式配對兩個密碼密鑰也稱為非對稱加密,它不同於對稱加密,其中單個密鑰用於加密和解密。

非對稱加密的優點是公鑰可以公開給全世界看,而私鑰在用戶設備上保持安全,比對稱加密安全得多。

公鑰加密如何依賴加密

公鑰密碼術依靠數學演算法來生成密鑰。公鑰由一串隨機數組成,可用於加密消息。只有預期的接收者才能解密和閱讀此加密消息,並且只能使用相關的私鑰來解密和閱讀,該私鑰是秘密的,只有接收者知道。

公鑰是使用複雜的加密演算法創建的,以將它們與相關的私鑰配對,這樣它們就不會被暴力攻擊利用。

公鑰的密鑰大小或比特長度決定了保護的強度。例如,2048 位 RSA 密鑰通常用於 SSL 證書、數字簽名和其他數字證書。此密鑰長度提供了足夠的加密安全性,以防止黑客破解演算法。 CA/瀏覽器論壇等標準組織定義了支援的密鑰大小的基準線要求。

PKI 支援我們在使用網站、移動應用程式、在線文檔和連接的設備時每天都會遇到的、不顯眼且無處不在的數字證書。 PKI 最常見的用例之一是基於 X.509 的傳輸層安全性 (TLS)/安全套接層 (SSL)。這是 HTTPS 協議的基礎,可實現安全的 Web 瀏覽。但數字證書也適用於廣泛的用例,包括應用程式程式碼簽名、數字簽名以及數字身份和安全性的其他方面。

什麼是 RSA、DSA 和 ECC 演算法?

PKI 密鑰生成使用了三種主要演算法:

  • Rivest-Shamir-Adleman (RSA)
  • 數字簽名演算法 (DSA)
  • 橢圓曲線密碼學 (ECC)

RSA、DSA、ECC 演算法

RSA 演算法由 Ron Rivest、Adi Shamir 和 Leonard Adleman 於 1977 年開發。 它依賴於大素數分解需要強大的計算能力這一事實,並且是第一個利用公鑰/私鑰範式的演算法。 與 RSA 相關的密鑰長度不同,2048 位 RSA 密鑰長度是當今大多數網站的標準。

DSA 使用與 RSA 不同的演算法來創建公鑰/私鑰,基於模冪運算和離散對數問題。它為同等大小的密鑰提供與 RSA 相同級別的安全性。 DSA 由美國國家標準與技術研究院 (NIST) 於 1991 年提出,並於 1993 年被聯邦資訊處理標準 (FIPS) 採用。

ECC 基於控制有限域上橢圓曲線代數結構的數學演算法。它提供與 RSA 和 DSA 同等級別的加密強度,但密鑰長度更短。 ECC 是三者中最新開發的加密方法,橢圓曲線數字簽名演算法 (ECDSA) 於 1999 年獲得認可,使用橢圓曲線加密的密鑰協議和密鑰傳輸於 2001 年緊隨其後。與 DSA 一樣,ECC 已通過 FIPS 認證,並且還得到了美國國家安全局 (NSA) 的認可。

請注意,可以同時支援多種加密演算法。例如,Apache 伺服器可以在同一台伺服器上同時支援 RSA 和 DSA 生成的密鑰。採用這種「束手無策」的方法可以增強您的企業安全性。

RSA 和 DSA 如何比較?

雖然 RSA 和 DSA 使用不同類型的數學演算法來生成密鑰對,但出於加密強度的目的,兩者被認為是等效的。相反,RSA 和 DSA 之間的主要區別在於性能和速度。

性能和速度

RSA 在加密和簽名方面比 DSA 快,但在解密和驗證方面比 DSA 慢。但是,由於身份驗證需要兩者,因此對於許多實際應用程式而言,性能差異在很大程度上可以忽略不計。

RSA 在密鑰生成方面也比 DSA 慢,但由於密鑰生成一次並使用數月或數年,這通常不是一個重要的考慮因素。

SSH 協議支援

另一個不同之處在於它們的 Secure Shell (SSH) 協議支援。 RSA 與原始 SSH 以及更新的第二版 SSH2 兼容,而 DSA 僅適用於 SSH2。由於 SSH 被認為不如 SSH2 安全,這可能是使用 DSA 的一個考慮因素。

聯邦背書

DSA 和 RSA 之間的另一個區別是 DSA 得到美國聯邦政府的認可。 對於向聯邦機構提供服務的企業,跟上政府標準的能力可能是使用 DSA 的一個理由。

底線是,對於大多數用例、行業和監管環境,RSA 和 DSA 非常相似,提供相同的加密強度,兩者之間的差異相對較小。 這兩種演算法也同樣兼容領先的互聯網協議,包括 Nettle、OpenSSL、wolfCrypt、Crypto++ 和 cryptlib。

ECC 與 RSA 和 DSA 相比如何?

ECC 和 RSA/DSA 之間的最大區別在於 ECC 為等效密鑰大小提供了更大的加密強度。 ECC 密鑰比相同大小的 RSA 或 DSA 密鑰更安全。

密鑰大小比較:

對稱密鑰大小(位) RSA 大小(位) 橢圓曲線密鑰大小(位)
80 1024 160
112 2048 224
128 3072 256
192 7680 384
256 15360 521

根據 NIST 推薦的密鑰大小

ECC 更高效

如圖所示,使用 ECC,您可以獲得等效的加密強度,但密鑰大小要小得多 – 大約小一個數量級。例如,要達到使用 112 位對稱密鑰加密的等效加密強度,需要 RSA 2048 位密鑰,但只需要 ECC 224 位密鑰。

更短的密鑰長度意味著設備需要更少的處理能力來加密和解密數據,這使得 ECC 非常適合移動設備、物聯網和其他計算能力更有限的用例。

安全和速度

在 Web 伺服器等更傳統的用例中,與 RSA 或 DSA 相比,ECC 也有一些優勢,因為較小的密鑰大小可以通過更快的 SSL 握手實現更強的安全性,這意味著更快的網頁載入時間。

值得注意的是,ECDSA 是 ECC 的原始版本,是 DSA 的一個變種。 ECDSA 提供與 ECC 相同的每比特數的加密強度級別。