關於字元語言中的密碼學
假設我有一條中文(或其他非語音語言)消息,我想對其進行加密。
英語中一些最簡單的加密是替換密碼,但對於像中文這樣的語言來說,這樣的密碼似乎不是一個可行的選擇(它更類似於程式碼……)。這種字母表的簡單密碼是什麼?(假設我們不想先將其音譯成英語)。
其次,假設有人在這種語言上使用了替代密碼(在程式碼意義上,每個單詞都代表另一個)。
- 頻率分析仍然有效嗎?
- 與替代密碼一起使用時,非語音語言或多或少安全嗎?
- 假設頻率分析不是一種選擇,如何打破它?
為了設計密碼,首先必須決定字母表。
這對於像中文這樣的語言來說有點問題,因為不清楚應該使用多少(以及哪些)字元。人們所知道的標誌的數量差別很大。您不希望僅僅因為您在密文中使用了一些未知字元而使您的加密消息無法解密。這裡的一種可能性是將密文字母表限制為某個“每個人都知道”的子集(同時仍然允許在明文端使用更大的字母表)。
假設我們已經決定了一個字母表,我們還應該決定這個字母表的某種編碼,即符號的某種順序,或到數字的映射。這允許使用一些簡單的數學公式/算法進行實際加密,而不必使用“翻譯表”作為密鑰(在大字母表的情況下這將是相當大的)。
每個單字母替換密碼都可以表示為一個“大表”,因此打破大表算法也打破了彼此(單字母)算法(這實際上只是以更短的方式編寫大表的方法)。
那麼,如何破解單字母密碼呢?就像往常一樣。在像中文這樣的語言中,也有更頻繁的單詞(= 符號),或多或少地出現兩個詞或三個詞的組合,就像我們在歐洲的單音字母表中一樣。問題在於有更多不同的符號,因此您需要更多的文本才能獲得重要的樣本。然後我們先嘗試最可能的單詞,然後嘗試填寫其餘的單詞,看看它是否開始有意義。如果多個不同的標誌在這裡有意義的話,一些只使用一次或兩次的標誌很可能根本無法解碼。
即使在 ECB 模式下(在其他模式下,它們不是純替換密碼),真正大字母表(如 AES)上的現代替換密碼也相對相當安全,原因是您沒有太多塊來找到許多重複的塊 -而且由於空間和時間的原因,您根本無法寫下整個替換錶。