Protocol-Design

對 OTR 消息的否認

  • March 10, 2017

我一直在研究非公開的消息傳遞協議,它的可否認性屬性對我來說有些奇怪。

考慮以下場景:

在 OTR 對話過程中,Alice 決定打破 Bob 的否認,例如,她希望能夠向某個第三方證明 Bob 確實發送了以下一條或多條消息,而沒有任何方式讓他合理地否認這一事實。

根據 OTR 協議,只有當 Bob 得到 Alice 收到他的最新密鑰的肯定確認後,Bob 才會發布他的舊 MAC。這樣一來,Bob 就不會在 Alice 可以驗證任何經過其身份驗證的傳輸中的消息之前發布舊的 MAC。

但是,是什麼阻止了 Alice 從對話中的某個時間點開始忽略 Bob 的所有較新密鑰,從而使他無法丟棄任何舊密鑰並發布任何舊 MAC 密鑰?如果 Alice 能夠證明她確實從未讓 Bob 發布舊的 MAC 值,那這不會打破他的否認嗎?

是否有一些針對這種攻擊的保護措施,例如舊密鑰的超時,鼓勵實現自動發布任何剩餘的舊 MAC 密鑰,即使對方從未確認他們的接收或完全離開對話?

或者 OTR 消息傳遞是否容易受到這種(誠然非常具體的)攻擊?

由於 MAC 密鑰是對稱的,因此它不會破壞 Bob 的否認性。Bob 仍然具有合理的否認能力,因為 Alice 可以很容易地偽造她聲稱來自 Bob 的任何消息。

另外,請記住,OTR 使用可延展加密(流密碼模式)並具有可偽造性,這使得對 Bob 的否認更加容易。

雖然唯一的其他答案是正確的,因為它不會破壞 Bob 的否認,但我想添加一些內容,因為這個問題出現在搜尋結果的第一頁。

這種攻擊的一種變體在OTR 版本 2 的有限狀態安全分析一文中描述,第 3.2 節:“強可否認性攻擊”:

控制整個網路的外部攻擊者在發送 MAC 密鑰時刪除它,並在收到它之前重新插入它。因此,監聽對話的偽造者無法訪問 MAC 密鑰,也無法篡改任何消息。

無論 Bob 被阻止發布舊密鑰還是它們在傳輸過程中失去,效果都是一樣的。然而,唯一的(相當哲學的)結果是它打破了 OTR 的可否認性聲明,即任何人都可以生成使用此 MAC 密鑰的消息,因為該協議無法保證 MAC 密鑰實際上已發布。

一般來說,這種對“可偽造性”的關注,尤其是這種發布 MAC 密鑰的方案,對於可否認性似乎沒有多大意義。引用 Di Raimondo 等人的論文“Deniable Authentication and Key Exchange”:

如果雙方可以否認與對方交換了密鑰,那麼也可以拒絕其餘的通信。

同一篇論文證明了 OTR 中使用的 SIGMA-R 協議是“部分可否認的”。這意味著即使不能因為使用數字簽名而拒絕參與,但通信夥伴的身份以及以下消息的內容可以。(我認為只要沒有提供其他數字簽名形式的證明,這就是為什麼使用 MAC 很重要的原因。)

tl; dr:OTR 的“可偽造性”與可否認性無關,據我所知,這是不必要的。因此,對這種 MAC 密鑰發布的任何攻擊都無關緊要。

編輯:我還認為應該注意標籤不正確-這是關於“可拒絕身份驗證”,而不是“可拒絕加密”。

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