Attack

雙重加密方案的攻擊

  • July 31, 2015

在此協議中:

  1. A → B : { <$$ A, {K}pk(B) $$> }pk(B)
  2. B → A : { <$$ B, {K}pk(A) $$> }pk(A)

我想確定為什麼這是不安全的。如果 A 和 B 都是誠實的代理,攻擊者如何學習密鑰 K?

這就是我開始的:

  1. A → B : { <$$ A, {K}pk(B) $$> }pk(B)

攻擊者 M 可以截獲它,但是 M 不能解密它。M 將其發送給 B,因此 B 認為消息來自 M:

  1. M → B : { <$$ A, {K}pk(B) $$> }pk(B)

然後我遇到了A的身份仍然在消息中的問題。當 B 解密時,他會意識到 D 和 A 不匹配,並結束會話。

任何幫助、提示或建議將不勝感激!謝謝!

編輯:我認為我所做的不僅僅是提供一個提示,所以如果這是一個問題,請不要進一步閱讀。

這個問題與 NSL 協議非常相似,因為它允許中間人,因為雙方都沒有聲明自己的身份:

那是:

A -&gt; E : { &lt;[A, {K}pk(E)]&gt; }pk(E) } E -&gt; B : { &lt;[A, {K}pk(B)]&gt; }pk(B) } B -&gt; E : { &lt;[B, {K}pk(A)]&gt; }pk(A) } E -&gt; A the above

導致:

現在 B 認為它與 A 有一個共享通道,但涉及到 E。您甚至可以完全簡化和省略 A,因為它的存在從未向 B 方證明:

或者:

E -&gt; B : { &lt;[A, {K}pk(B)]&gt; }pk(B) } B -&gt; anyone : { &lt;[B, {K}pk(A)]&gt;}pk(A) }

現在’B’大概相信關鍵 $ K $ 與聚會共享 $ A $ 實際上聚會時 $ E $ 持有副本。

我將就我認為該協議如何被破壞寫一個很好的答案。

閱讀另一個提示,並在繼續下一個之前考慮每個提示一段時間。它們的用處增加了。

提示1:

攻擊者不僅可以觀察數據包,還可以丟棄或替換它們。

提示2:

攻擊不涉及來自攻擊方的解密。

提示 3:

攻擊假設一個中間人場景。

提示4:

通過密鑰確認可以防止攻擊。

提示 5:

攻擊者通過提供密鑰來學習密鑰。

攻擊:

A 啟動與 B 一起執行的標準協議。M 是中間人並丟棄 A 的初始數據包。M 制定數據包 $ M\rightarrow B: { <[A, {K_M}pk(B)]> }pk(B) $ 與 $ K_M $ 他的選擇。B 照常繼續協議並將標準消息發送給 A,除了 $ K $ 被替換為 $ K_M $ 正如他所想,這就是A發送的。現在 M 知道雙方之間的共享密鑰 ( $ K_M $ )。這種攻擊只適用於手頭給出的協議。If A 檢查是否 $ K=K_M $ 他可以發現發生了攻擊並可以警告 B,但如果 A 只是使用在第二條消息中收到的密鑰,則攻擊會起作用。

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