Authentication

給出密碼是一個字元的回饋的算法的安全性要低多少?

  • January 20, 2018

如果我們有一個愚蠢的登錄程序(簡稱 SLP),就像這部漫畫一樣;如果送出的密碼是一個字元,它會在登錄時提供回饋。

更長的密碼會不會更不安全?盈虧平衡點是多少?

如果我有一個長度為 1 的密碼,我總是會得到回饋,我是一個人,所以 SLP 不會降低密碼的安全性。如果我的長度為 2,我會得到一半的回饋,所以 SLP 會使長度為 2 的密碼與長度為 1 的密碼一樣安全?

我用來散列這些密碼的算法是:

hash(password)
for(i=0; i++; i < len(password)
 hash(password.deleteChar(i))

登錄:

if(hashAndMatch(password)){
 login()
} else {
 for(i=0; i++; i < len(password){
   if(hashAndMatch(password.deleteChar(i))){
     giveFeedBack()
     break;
   }
  }
  error('Wrong password or username')
}

我們假設有 $ 95 $ 密碼的可能字元。因此,有 $ 95^n $ 可能的 $ n $ 字元密碼。您希望蠻力採取那麼多猜測的順序來正確, $ O(95^n) $ .

在您的情況下,考慮到附加資訊,一旦您知道除一個之外的所有字元都正確,則只需要額外的 $ 95 $ 呼叫以獲取確切的密碼。所以,攻擊這個需要 $ 95^{n-1}+95=O(95^{n-1}) $ 工作。

因此,基本上它將安全性降低了一個字元。

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