Stream-Cipher

流密碼的對數蠻力

  • May 24, 2020

首先,我想確保我正確理解流密碼:我通過流密碼放置一個plainchar(例如字節?)並接收一個cipherchar。正確的?

當我現在有一對明文/密文時,我可以暴力破解映射plainchar[0]到的所有秘密cipherchar[0]。對於下一個字元,我只需要嘗試第一個成功的密碼。這樣,蠻力搜尋空間以對數方式減少。

這個對嗎?

更新正如@poncho 正確指出的那樣,搜尋空間不是以對數方式減少的,而是為明文生成密文的昂貴的加密操作。這必須對每個嘗試過的密碼進行,這是暴力破解的所有可能密碼。

…然後我可以暴力破解映射plainchar[0]到的所有秘密cipherchar[0]。對於下一個字元,我只需要嘗試第一個成功的密碼。這樣,蠻力搜尋空間以對數方式減少。

¹ , ²。問題是,*“暴力破解所有秘密”*本來就應該是不可能的。


¹ 對於安全的流密碼。

²以及另一個答案中正確指出的對數減少的非標准定義。

這樣,蠻力搜尋空間以對數方式減少。

嗯,不。

如果有 $ N $ 可能的鍵,然後你測試 $ N $ 第一個字節上的鍵。然後,您只保留第一個字節上成功的那些,並在第二個字節上測試那些;大約是 $ N / 256^1 $ . 然後,您測試那些在兩個字節上都成功的鍵,大約是 $ N / 256^2 $ 鍵。

當您計算已測試的密鑰總數(包括您多次測試的密鑰)時,您會得出預期的結果:

$$ N + N/256^1 + N/256^2 + N/256^3 + … = (256/255)N $$

和, $ (256/255)N $ 不是“對數減少” $ N $ …

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