Re: [問題] openssl rsa 產生key的過程

作者: Qbsuran (Qbsuran)   2018-07-19 02:12:17
借標題回一下,有錯鞭小力點
首先名詞先確定一下
對稱式加密:密鑰系統、私鑰系統,這邊的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的資訊)
作者: ddtsatan   2018-07-19 22:14:00
作者: bdvstg (bdvstg)   2018-07-20 09:57:00

Links booklink

Contact Us: admin [ a t ] ucptt.com