Protocol-Design

你什麼時候增加一個隨機數,什麼時候不增加?

  • January 25, 2016

K 是_Alice 和_Bob 已知的用於加密的共享密鑰。 $ N_A $ 是 Alice 創建的隨機數。函式 f 是遞增 1 的函式。

(1) 愛麗絲 -> 鮑勃: $ E_K(N_A) $

所以 Alice 使用共享密鑰加密一個 nonce 並將其發送給 Bob。

(2) 鮑勃 -> 愛麗絲: $ E_K(f(N_A)) $

Bob 收到它,我認為他首先需要對其進行解密,然後將其加 1,再次對其進行加密,然後將其發送回 Alice。

**現在的問題是,您何時以及為什麼要使用此案例?**這兩個步驟的場景可能是什麼?

例如,我在Needham-Schroeder 協議中看到了這兩個步驟,但我不明白他們為什麼需要這兩個步驟。

我唯一的想法是 Bob 向 Alice 驗證自己的身份,因為如果 Alice 後來解密它,Alice 將看到 Bob 是否能夠解密它。但是為什麼你需要增加隨機數呢?


**更新:**根據 otus,我的想法似乎是正確的,我不得不詢問我見過的另一個案例:

(1) 愛麗絲 -> 鮑勃: $ N_A $

Alice 將普通的 nonce 發送給 Bob。

(2) 鮑勃 -> 愛麗絲: $ E_K(N_A) $

Bob 使用共享密鑰對其進行加密並將其發送回 Alice。

對於第二個案例,我很確定我對第一個案例的想法是正確的 -> 只是為了驗證 Bob。所以我認為增量函式的案例是為了別的。

**那麼這兩個案例是出於相同的目的嗎?**只是為了向愛麗絲驗證鮑勃?它們之間有什麼區別?你什麼時候申請這兩者中的哪一個,為什麼?

我唯一的想法是 B 向 A 驗證自己的身份,因為如果 A 稍後解密它,A 將查看 B 是否能夠解密它。但是為什麼你需要增加隨機數呢?

沒錯,就是這個意思。

如果 B 不需要增加 nonce 並且只是加密了相同的值,則發送回的消息將與 A 發送的消息相同,因此攻擊者可以在不知道如何解密的情況下正確響應。

在其他不使用增量的協議中,還有其他方法可以完成相同的任務。例如,B 可以使用另一個共享密鑰對其進行加密。

**那麼這兩個案例是出於相同的目的嗎?**只是為了向愛麗絲驗證鮑勃?它們之間有什麼區別?你什麼時候申請這兩者中的哪一個,為什麼?

在身份驗證方面沒有真正的區別。他們都向 Alice 證明 Bob 擁有正確的密鑰。

由於需要雙方加密和解密值,具有加密和增量的效率略低。但是,它的優點是不允許攻擊者直接要求對所選明文進行加密,從而可以攻擊同一密鑰的其他用途。如果密鑰僅用於身份驗證,這不一定是問題,但在 Needham-Schroeder 的情況下,目標是建立會話密鑰。

要回答您的第一個問題,需要遞增以防止對該消息進行欺騙。攻擊者可以發迴聲稱是 Bob 的相同加密隨機數。但是,如果 Bob 對 nonce 進行加分並將其加密發送回,Alice 將確定 Bob 已收到 nonce 並增加了它。

現在,Alice 加密 nonce,而 Bob 解密-加罪-加密過程是一項繁瑣的任務。因此,為了更快地實現相同的身份驗證,正如 otus 建議的那樣,Bob 可以簡單地使用只有他們兩個人知道的私鑰加密 Aice 的 nonce。

回答你的第二個問題:是的,這兩種方法是出於相同的身份驗證目的,不同之處在於不同的協議使用相同思想的不同實現。

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