Man-in-the-Middle

中間的人能否從密鑰交換中說出您使用哪種加密方式?

  • October 7, 2022

加密方案通常建立在這樣的想法之上:即使中間人攻擊者確切知道您正在使用哪種加密,他們也無法在沒有密鑰的情況下解密您的消息。

有許多不同的機制供兩個使用者創建或交換密鑰,而中間的人無法推斷出密鑰。如果中間攻擊者事先不知道您將使用哪種密鑰交換,那麼該攻擊者是否能夠推斷出您是如何交換密鑰的?

這並不一定很重要,因為這是安全密鑰交換的全部意義所在。我主要是好奇,例如,是否有可能僅通過檢查正在發送的數據包來對專有密鑰交換協議進行逆向工程,即使您無法自行推斷密鑰。

密碼學研究的子領域致力於使檢測正在使用的密碼和密鑰交換算法變得困難。有幾種嚴格的方法:

  1. 使來自兩個不同對稱密碼的密文分佈彼此無法區分。這種方法是在針對大規模監視的對稱加密安全中引入的。
  2. 將密文 A 隱藏在密文 B 中(來自不同的密碼),即使給定 B 的密鑰和明文,也無法區分它。變形加密:針對獨裁者的私人通信
  3. 與隨機 + 加密速記法無法區分的密鑰交換,用於隱藏自然語言分佈中的密鑰交換和密文。Elligator:與均勻隨機字元串無法區分的橢圓曲線點+ Meteor:用於現實分佈的加密安全隱寫術

通常可以通過查看消息對協議進行逆向工程。通常,協議是建立在現有技術之上的,例如 X.509 證書、ASN.1 BER/DER、CBOR 等二進制編碼、XML 或 JSON 等文本編碼。這些編碼結構包含大量關於正在傳輸什麼樣的資訊。

在大多數情況下,無需努力隱藏協議 - 根本不需要。有許多開放協議正在使用,很容易檢測到這些協議。即使上述元資訊不可用,通常也可以檢測到密鑰。如果使用 ECDH,則參與者需要交換公鑰。通常可以從握手消息中檢測到密鑰,例如通過檢查密鑰是否具體在曲線上。

綜上所述,如果您只是從截獲的消息中獲取字節,則很可能創建一個難以逆向工程的協議。但請記住:即使協議是保密的,它也只需要一次洩漏就可以找到正在使用的協議。因此,隱藏協議本身可以被認為是一種混淆工作;它只提供有限的安全性(這通常被稱為 Kerckhoff 原則)。

**結論:**有時在查看實際位和字節時找出協議的行為方式可能會很棘手。但是,通常協議描述很容易獲得,並且安全性由密鑰和算法確定。即使協議描述不是直接可用的,也可以通過對消息進行逆向工程(在握手中)來找出很多細節。

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