Authentication
給出密碼是一個字元的回饋的算法的安全性要低多少?
如果我們有一個愚蠢的登錄程序(簡稱 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}) $ 工作。
因此,基本上它將安全性降低了一個字元。