看板 Linux 關於我們 聯絡資訊
借標題回一下,有錯鞭小力點 首先名詞先確定一下 對稱式加密:密鑰系統、私鑰系統,這邊的key有時候被翻譯成私鑰(secret key) 非對稱式加密:公鑰系統,key有兩把,公鑰和私鑰(public key和private key) 「私鑰」雖然中文一樣,但是原文英文意思完全不同 ========================================= RSA可以用在兩個地方,非對稱式加密和數位簽章(ckc1ark大大講的:私鑰簽章 公鑰驗證) 那麼來講一下最常聽到這些演算法應用的地方:SSL/TLS SSL/TLS常常被誤會成它就是公鑰系統,實際上它包含了:密鑰系統、公鑰系統、雜湊、亂數產生、HMAC...等 SSL/TLS過程大概是兩個階段 1. client和server交換加解密資訊 2. 密文傳輸 第二個階段的密文傳輸是怎麼加密的,是低,就是用「對稱式加密」 那麼這時候對稱式加密的key(secret key)什麼時候傳遞的? 就是第一階段的交換加解密資訊時候傳遞的 第一階段交換的加解密資訊實際上是交換非對稱式加密的公鑰(和其他東西) 再用這個非對稱加密的公鑰來加密之後要用的對稱式加密secret key 所以這樣就能解決非對稱加密速度太慢的問題(filiaslayers大大提到的) ========================================= 那再繼續往下講,「如何交換或協商對稱式加密的secret key(第一階段)」 現代SSL/TLS連線資訊通常會寫這樣: 1. ECDHE-ECDSA 2. ECDHE-RSA 3. RSA-RSA 前面代表交換對稱式加密key的方法,後面代表憑證的數位簽章演算法 RSA因為速度很慢,加上key要夠大(2048 bits以上)安全性才夠,所以有個演算法來了 DH(Diffie-Hellman)是一種演算法可以兩方自己決定secret key(在SSL/TLS叫做session key) 但是它需要的一些參數並不會每次不同,所以再加上E(Ephemeral),它就會每次產生不同的參數已達到Perfect Forward Secrecy(PFS) 然後再加上Elliptic Curve(EC),就能達到不用很長的key就能達到一定的安全性 EC的key 224 bits相當於RSA的2048 bits (Source: NIST 800-57, Table 2) 所以 ECDHE-ECDSA:ECDHE來決定secret key,ECDSA來做數位簽章 ECDHE-RSA:ECDHE來決定secret key,RSA做數位簽章 RSA-RSA:RSA來交換secret key(key的來源是憑證的private key),RSA做數位簽章 按照這個關係,所以並不會有RSA-ECDSA,因為用RSA來交換secret key,但是憑證內沒有private key給它用 ========================================= 補充一下:因為ECDHE能達到PFS的關係,所以即使破解了這條session的key 但是無法拿來破解其他同一個server的session,所以有些的passive SSL decryption會失敗就是這個原因 passive SSL decryption是把SSL封包錄下來,然後用server的私鑰(RSA)來解密 但是假設產生secret key牽涉到ECDHE就一定無法解,(除非利用NSS Key Log來記錄client的資訊) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.107.20 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1531937540.A.F10.html
ddtsatan: 推 07/19 22:14
bdvstg: 推 07/20 09:57