Key-Exchange
這個 PGP 密鑰交換安全嗎?
我目前正在嘗試在兩方之間創建安全的密鑰交換。我有一個很好的 PGP 實現,它適用於我的應用程序,但是我的 DH 真的很慢而且效果不好;所以我在想也許我可以與 PGP 進行密鑰交換。
我的想法是這樣的:
當事人 1 -> 公鑰 -> 當事人 2
當事人 2 -> 公鑰 -> 當事人 1
第 1 方生成隨機比特並使用公鑰將它們發送給第 2
方 第 2 方生成隨機比特並使用公鑰將它們發送給第 1 方
共享密鑰 = Sha256(Part 1 隨機與 Party 2 隨機連接)
這會安全嗎?(假設 Sha256、PGP 和隨機生成器的實現是相同的。
假設
- 在“使用公鑰”的問題中描述了在預期接收者的公鑰下的加密;
- 相應私鑰的保密性;
- 通過某種外部機制,公鑰安全地綁定到合法方;
- 各方有一些未說明的約定來定義哪一方是第一方,定義誰先傳輸並以“級聯”方式排序
那麼是的,
- 雙方的“共享密鑰”相同,沒有主動對手的更改
- 對手(即使是活躍的)無法預測合法方使用的“共享密鑰”的任何特徵。
注意不良特徵:
- 沒有前向保密:從過去被動竊聽的通信中,攻擊者後來得知這兩個私鑰可以找到“共享密鑰”。現代密鑰交換協議是安全的。
$$ Edit: The simple/standard/best method for forward secrecy is DH, with some independent authentication mechanism (e.g. using the PGP keys in signature mode). I know no way to turn generic encryption or/and signature into forward secure key exchange without some other asymmetric crypto primitive. $$
- 第二次傳輸的一方可以在一定程度上削弱“共享密鑰”;例如,選擇它是隨機的,以便“共享密鑰”的前 32 位為零,或者其他位的某些功能。然而,每增加一點削弱都會使努力加倍。
- 雙方沒有保證他們的“共享密鑰”與任何人共享;唯一的保證是它只能與與對方聲稱的公鑰匹配的私鑰的合法持有者共享。