在沒有提示的情況下破譯“簡單”的密碼
很長一段時間以來,我一直熱衷於 IT 安全,並且我學到了很多關於網路和安全的知識。但是嘗試“解密挑戰”時,我缺乏我認為的基本加密/解密知識。
所以我有一個密文,而不知道用於加密明文的算法或密鑰。我認為這個密碼不是“太難”(比如沒有 AES)來破解,因為對於一個簡單的挑戰來說這將是一種過度殺傷力。
我想提一下,我想自己破解它,但我需要建議我應該朝哪個方向發展——最有可能使用什麼,如何驗證是否使用了某些加密算法,等等。
關於密碼:密碼包含
$$ cghijklmnopqrsuvwxyzABCDEFGIJKLMNOPQRSTUVWYZ0-6+ $$沒有空格,而某些模式會重複出現(相同的字元在密碼中以相同的順序重複幾次)。我也很確定密文沒有散列,因為我應該閱讀結果。破解 1000 多個字元的密碼不會是“挑戰”。 我已經做了什麼:
- 我嘗試了頻率分析,看看它是否只是用單字母符號代替符號 - 沒有成功(許多結果保持在 ~8%,沒有一個高於 10%)
- 我看過經典的轉置和替換方法,這些方法讓我想到了 Vigenére、Autokey、Beaufort 等加密方法。但是,就我的理解而言,它們旨在與非數字字母一起使用。
- 我計算出的“巧合指數”約為 0.06,這應該告訴我可能使用了替換(我還沒有完全弄清楚這是如何工作的)
- 我已經嘗試在可疑的、重複出現的“單詞”所在的位置分離密碼,只是為了找到看起來像分隔符的東西。然而,事後並沒有更清楚,我不知道如何繼續。
- 我已經按照建議進行了 base64 解碼,但結果更沒有幫助。看起來比以前更不相關,只是許多特殊字元與句點和數字混合在一起。
我需要的是關於如何找出可以使用哪種密碼的好建議,因為我目前沒有什麼想法可以嘗試。
我希望有人可以在這裡幫助我,因為我對這個話題真的很感興趣,但不知何故卡住了。
提前致謝!
我看過經典的轉置和替換方法,這些方法讓我想到了 Vigenére、Autokey、Beaufort 等加密方法。但是,就我的理解而言,它們旨在與非數字字母一起使用。
雖然大多數經典密碼都適用於通常的字母表(沒有不同的情況),但它們不限於此。擁有你提到的那個字母就很好了。在您的密碼分析中,您很可能無論如何都會使用字元的數字表示(使用加法和模數),然後歸結為對字母表進行排序。
關於密碼:密碼包含
$$ a-zA-Z0123456+ $$沒有空格,而某些模式會重複出現(相同的字元在密碼中以相同的順序重複幾次)。
如果有這樣的結構,很可能是 Vigenere 或類似的東西,在固定的“塊”中執行。與重複圖案的距離將指示塊大小,因為它們是塊大小的倍數。
我嘗試了頻率分析,看看它是否只是用單字母符號代替符號 - 沒有成功(許多結果保持在 ~8%,沒有一個高於 10%)
如果你有符號 a - z、A - Z、0 - 6,那麼 58 個符號怎麼會有“8% 的很多”?不過,看起來 Vigenere 很合適。
有幾點需要考慮:
- 有不同的情況可能意味著,他們有一個 2 * 26 的字母表(然後添加數字),或者他們只是使用明文的大小寫,但這應該很明顯(在第一種情況下分佈更均勻)。或者,他們可以只使用一個字母並隨機使用大寫或小寫。
- 專注於首先找出塊大小。您提到了巧合指數,但我猜您的意思是“弗里德曼測試”。您必須記住,您的字母表可能與標準字母表不同。使用實際的重合指數找出塊大小。作為一種算法,您也可以直接計算自相關(對於移位 $ i=1,2,\dots $ ,計算文本和移位文本具有相同符號的位置)。正確的塊大小(及其倍數)將是您從統一分佈式字母表中獲得的異常值(對於所有錯誤的塊大小)。
從那裡開始,它只是塊中每個位置的頻率分析。