Encryption

這六個 TLS 密碼套件中的最佳選擇

  • April 27, 2017

我有一個支持 6 個 TLS 密碼的小型嵌入式平台。有沒有好/更好/最好的選擇?

我在網上四處尋找某種評級系統或已知弱點的密碼列表,但我找不到太多。

回到我的項目,我使用 Wireshark 工具在與伺服器進行身份驗證時擷取“客戶端 hello”,我的(slim)選項如下:

  • TLS_RSA_WITH_RC4_128_SHA (0x0005)
  • TLS_RSA_WITH_RC4_128_MD5 (0x0004)
  • TLS_RSA_WITH_AES_128_CBC_SHA (0x002F)
  • TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000A)
  • TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)

我聽說三重 DES、RC4 和 MD5 不安全,所以我應該避免使用這些算法的密碼嗎?這會給我留下密碼套件 TLS_RSA_WITH_AES_128_CBC_SHA 和 TLS_DHE_DSS_WITH_AES_128_CBC_SHA 嗎?

理想情況下,您不應該使用其中任何一個完全沒有

這就是為什麼。

  • RC4、MD5 和 DES 不應再使用。舊加密貨幣。扔了它。
  • AES 中的 CBC 模式有時會遇到實現問題(參見 Padding Oracles)。因此,應該避免CBC。
  • SHA1 被認為是不安全的,自 2017 年 1 月以來,主流瀏覽器不再接受它作為證書籤名雜湊。

因此,如果您絕對必須堅持使用其中一種密碼,我同意@otus 的觀點,並推薦 TLS_DHE_DSS_WITH_AES_128_CBC_SHA。


如果您有機會將其他密碼添加到您的嵌入式平台,請知道:

對稱密碼:

  • 截至 21 世紀初,**AES 和 ChaCha20是最好的對稱密碼。**簡單地說,它們之間的區別是塊密碼和流密碼,因此速度不同。
  • AES經常利用AES-NI,這是一種硬體加速,在目前筆記型電腦和伺服器的許多處理器上都有。
  • ChaCha20 在移動和嵌入式平台上是首選,AES 硬體加速很少見,因為它確實更快。
  • Poly1305實際上是 ChaCha20 的最佳搭檔,因此它們是成對出現的。
  • 對於 AES,請考慮 AEAD 兼容模式,例如 GCM
  • 選擇 SHA2或以上的雜湊算法(SHA384、SHA512、…)。越高,越安全。但這太過分了,需要更多時間並且在尺寸方面更重。所以堅持使用 SHA256。

非對稱密碼(用於密鑰交換):

  • 今天的趨勢和最佳用途是 Diffie-Hellman。更好的是,Ephemeral Elliptic-Curve Diffie-Hellman (ECDHE),因為它更小、更快(您可以在幾毫秒內生成 384 位參數,對應於在嵌入式設備上需要數小時才能生成的 7680 個非 EC 位) .

證書籤名:

  • 沒有人使用DH。
  • RSA~~很好。從現在開始要避免。~~還是不錯的。

它的驗證速度甚至比 DSA 還要快 - 看看 (由您決定這是否對您的使用重要)openssl speed

  • **最佳用途:ECDSA。**DSA是新的,再加上橢圓曲線,它比 RSA 更小,速度更快 - 再看看openssl speed. 被認為更安全。遺憾的是,目前 OpenSSL 不支持 Edwards 曲線。

(對不起,如果我錯過了細節或不清楚,請在午休時間寫下。)

編輯:添加了關於 ECDSA 和 RSA 之間選擇的說明。感謝@Dreadlockyx 和@otus 讓我再看一遍!

引用自:https://crypto.stackexchange.com/questions/42621