Zero-Knowledge-Proofs

對安全遠端密碼協議 (SRP) 驗證程序的字典攻擊有多現實?

  • June 12, 2014

我正在部署一個安全的遠端密碼協議實現,我想知道當客戶端生成的驗證器被洩露給攻擊者時會產生什麼後果。我讀過 Thomas Wu 的論文,儘管它很好,但它並沒有談到那種情況。我還閱讀了RFC 5054,它有以下斷言:

如果攻擊者知道了使用者的 SRP 驗證器(例如,通過訪問伺服器的密碼文件),攻擊者可以偽裝成該使用者的真實伺服器,並且還可以嘗試字典攻擊來恢復該使用者的密碼。

如果客戶端使用驗證器作為伺服器身份的保證,我可以看到這會變得多麼糟糕。這是字典攻擊的第二個斷言讓我感到奇怪。

x = H(s, P)
v = g^x mod n

在不知道 x 的情況下求解 P 需要多少努力?似乎 n 的隱含 mod 完全掩蓋了 x。然後,應該有許多 P 值可以生成 av,但可以通過驗證階段的集合要小得多。

如果字典攻擊可以找到密碼,這比共享秘密協議更好嗎?RFC 中提到的字典攻擊是否只是在說“如果我有一台無限速的電腦,我真的會毀了你的一天嗎?” 或者這是否意味著它可以在偽裝成伺服器的同時對客戶端進行字典攻擊?

SRP 背後的安全目標是攻擊者可以偽裝成客戶端(並嘗試登錄知道密鑰的伺服器),偽裝成伺服器(並允許知道密鑰的客戶端嘗試登錄) ,或主動監視(和修改)有效客戶端和有效伺服器之間的通信,不會從交換中學到任何東西,除非單個密碼是否有效。最後一點對於基於密碼的身份驗證方法無濟於事,因為攻擊者總是可以猜測密碼,然後使用有效的伺服器或客戶端繼續執行協議,看看它是否成功。SRP 的重點是攻擊者不能做得比這更好。

現在,在協議中,值 v 永遠不會通過線路發送,因此攻擊者看不到它,因此不可能對該值進行字典攻擊(除非攻擊者可以以某種方式重新獲得該值,但不認為這是有可能)。

另一方面,您強調的註釋假設攻擊者可以做的不僅僅是使用協議;它假定他也能夠訪問伺服器上的密碼文件。如果他能做到這一點,好吧,是的,他知道的足以冒充伺服器,而且他還可以對密碼進行字典攻擊;即對於他字典中的每個密碼 P’,他計算:

x' = H(s, P')
v' = g^x'

並檢查是否 v == v’ (注意:您不太可能偶然發現也通過此檢查的其他密碼)

請注意,這並非特定於 SRP;對於任何基於密碼的身份驗證方法,如果攻擊者可以了解伺服器所知道的一切,那麼他就可以冒充伺服器,此外,他還可以執行不可檢測的字典攻擊(例如,通過模擬客戶端使用各種密碼登錄;這是無法檢測到的,因為這完全發生在攻擊者的設備上,因此您不會被告知有人試圖使用一長串密碼登錄系統)。

至於為什麼這比共享秘密協議更好,好吧,即使攻擊者沒有直接訪問伺服器的密碼文件,他也可以進行字典攻擊;對於 SRP,需要這種訪問權限。

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