Authentication

如何從“密碼學:介紹”中攻擊此身份驗證協議

  • December 28, 2013

考慮以下協議(來自 Nigel Smart 的“密碼學:介紹”一書):

A → B: A, Na
B → S: B, {A, Na, Tb}Kbs, Nb
S → A: {B, Na, Kab, Tb}Kas, {A, Kab, Tb}Kbs, Nb
A → B: {A, Kab, Tb}Kbs, {Nb}Kab

其中較小的字母是後綴,因此範例Kab表示 A 和 B 共享的密鑰。 Tb表示消息的時間戳並Nb表示隨機數。

我的問題是:如果外部攻擊者同時冒充 A 和 S,攻擊者如何設法誘騙 B 相信 A 已通過身份驗證?有人告訴我,我應該能夠在 3 條消息中描述如何做到這一點(省略協議中的一條消息)。

我嘗試的解決方案是:如果模擬了 A 和 S,那麼當 B 向 S 發送消息時,外部攻擊者將知道正在發送什麼,因此攻擊者可以正常將消息轉發給 A,但可能會破壞消息。我無法編寫協議,因為它有點令人困惑。

另請參閱此身份驗證協議實現什麼以及共享哪些資訊?有關同一協議的相關問題。

如果攻擊者 M 同時冒充 A 和 S,那麼他顯然不必費心將協議中的第三條消息發送給自己。因此,協議簡化為:

M(A) → B: A, Na
B → M(S): B, {A, Na, Tb}Kbs, Nb
M(A) → B: {A, Kab, Tb}Kbs, {Nb}Kab

其中 M(A) 和 M(S) 分別表示 M 冒充 A 和 S。

就其本身而言,這不是一次成功的攻擊:雖然 M 可以選擇任何Kab他想要的有效值,但他通常無法獲得相應的密文{A, Kab, Tb}Kbs發送給 B。但是,如果 和 的格式Kab兼容Na,則 M 可以選擇Kab等於Na,並且如果 B 不檢查這種可能性,那麼 M 可以簡單地重放{A, Na, Tb}Kbs他在第二步從 B 收到的密文,從而導致攻擊:

M(A) → B: A, Na=Kab
B → M(S): B, {A, Na=Kab, Tb}Kbs, Nb
M(A) → B: {A, Na=Kab, Tb}Kbs, {Nb}Na=Kab

如果花括號表示的加密方案具有延展性,則可能存在其他攻擊方法,但即使不是,上述攻擊也會起作用。

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