愛倫·坡所說:密碼可破!人類的智慧不可能造成這樣的密碼,使得人類本身的才智即使運用得當也無法破開它!
一 、密碼學的發展歷程
密碼學在公元前400多年就早已經產生了,正如《破譯者》一書中所說“人類使用密碼的歷史幾乎與使用文字的時間一樣長”。密碼學的起源的確要追溯到人類剛剛出現,并且嘗試去學習如何通信的時候,為了確保他們的通信的機密,最先是有意識的使用一些簡單的方法來加密信息,通過一些(密碼)象形文字相互傳達信息。接著由于文字的出現和使用,確保通信的機密性就成為一種藝術,古代發明了不少加密信息和傳達信息的方法。例如我國古代的烽火就是一種傳遞軍情的方法,再如古代的兵符就是用來傳達信息的密令。就連闖蕩江湖的俠士,都有秘密的黑道行話,更何況是那些不堪忍受壓迫義士在秘密起義前進行地下聯絡的暗語,這都促進了密碼學的發展。
事實上,密碼學真正成為科學是在19世紀末和20世紀初期,由于軍事、數學、通訊等相關技術的發展,特別是兩次世界大戰中對軍事信息保密傳遞和破獲敵方信息的需求,密碼學得到了空前的發展,并廣泛的用于軍事情報部門的決策。例如在希特勒一上臺時,德國就試驗并使用了一種命名為“謎”的密碼機,“謎”型機能產生220億種不同的密鑰組合,假如一個人日夜不停地工作,每分鐘測試一種密鑰的話,需要約4.2萬年才能將所有的密鑰可能組合試完,希特勒完全相信了這種密碼機的安全性。然而,英國獲知了“謎”型機的密碼原理,完成了一部針對“謎”型機的綽號叫“炸彈”的密碼破譯機,每秒鐘可處理2000個字符,它幾乎可以破譯截獲德國的所有情報。后來又研制出一種每秒鐘可處理5000個字符的“巨人”型密碼破譯機并投入使用,至此同盟國幾乎掌握了德國納粹的絕大多數軍事秘密和機密,而德國軍方卻對此一無所知;太平洋戰爭中,美軍成功破譯了日本海軍的密碼機,讀懂了日本艦隊司令官山本五十六發給各指揮官的命令,在中途島徹底擊潰了日本海軍,擊斃了山本五十六,導致了太平洋戰爭的決定性轉折。因此,我們可以說,密碼學為戰爭的勝利立了大功。在當今密碼學不僅用于國家軍事安全上,人們已經將重點更多的集中在實際應用,在你的生活就有很多密碼,例如為了防止別人查閱你文件,你可以將你的文件加密;為了防止竊取你錢物,你在銀行賬戶上設置密碼,等等。隨著科技的發展和信息保密的需求,密碼學的應用將融入了你的日常生活。
二 、密碼學的基礎知識
密碼學(Cryptogra phy)在希臘文用Kruptos(hidden)+graphein(to write)表達,現代準確的術語為“密碼編制學”,簡稱“編密學”, 與之相對的專門研究如何破解密碼的學問稱之為“密碼分析學”。密碼學是主要研究通信安全和保密的學科,他包括兩個分支:密碼編碼學和密碼分析學。密碼編碼學主要研究對信息進行變換,以保護信息在傳遞過程中不被敵方竊取、解讀和利用的方法,而密碼分析學則于密碼編碼學相反,它主要研究如何分析和破譯密碼。這兩者之間既相互對立又相互促進。密碼的基本思想是對機密信息進行偽裝。一個密碼系統完成如下偽裝:加密者對需要進行偽裝機密信息(明文)進行偽裝進行變換(加密變換),得到另外一種看起來似乎與原有信息不相關的表示(密文),如果合法者(接收者)獲得了偽裝后的信息,那么他可以通過事先約定的密鑰,從得到的信息中分析得到原有的機密信息(解密變換),而如果不合法的用戶(密碼分析者)試圖從這種偽裝后信息中分析得到原有的機密信息,那么,要么這種分析過程根本是不可能的,要么代價過于巨大,以至于無法進行。
在計算機出現以前,密碼學的算法主要是通過字符之間代替或易位實現的,我們稱這些密碼體制為古典密碼。其中包括:易位密碼、代替密碼(單表代替密碼、多表代替密碼等)。這些密碼算法大都十分簡單,現在已經很少在實際應用中使用了。由于密碼學是涉及數學、通訊、計算機等相關學科的知識,就我們現有的知識水平而言,只能初步研究古典密碼學的基本原理和方法。但是對古典密碼學的研究,對于理解、構造和分析現代實用的密碼都是很有幫助。以下介紹我們所研究的古典密碼學。
三 、古典密碼學的基本方法
從密碼學發展歷程來看,可分為古典密碼(以字符為基本加密單元的密碼)以及現代密碼(以信息塊為基本加密單元的密碼)兩類。而古典密碼有著悠久的歷史,從古代一直到計算機出現以前,古典密碼學主要有兩大基本方法:
代替密碼:就是將明文的字符替換為密文中的另一種的字符,接收者只要對密文做反向替換就可以恢復出明文。
置換密碼(又稱易位密碼):明文的字母保持相同,但順序被打亂了。
現在我們匯報我們研究的幾種簡單的古典密碼學:
1. 滾桶密碼引用 在古代為了確保他們的通信的機密,先是有意識的使用一些簡單的方法對信息來加密。如公元六年前的古希臘人通過使用一根叫scytale的棍子,將信息進行加密。送信人先將一張羊皮條繞棍子螺旋形卷起來(如圖),然后把要寫的信息按某種順序寫在上面,接著打開羊皮條卷,通過其他渠道將信送給收信人。如果不知道棍子的寬度(這里作為密匙)就是不容易解密里面的內容的,但是收信人可以根據事先和寫信人的約定,用同樣的scytale的棍子將書信解密。
2. 掩格密碼引用 16世紀米蘭的物理學和數學家Cardano發明的掩格密碼,可以事先設計好方格的開孔,將所要傳遞的信息和一些其他無關的符號組合成無效的信息,使截獲者難以分析出有效信息。
3. 棋盤密碼引用 我們可以建立一張表,使每一個字符對應一數 , 是該字符所在行標號, 是列標號。這樣將明文變成形式為一串數字密文。
4. 凱撒(Caesar)密碼引用 據記載在羅馬帝國時期,凱撒大帝曾經設計過一種簡單的移位密碼,用于戰時通信。這種加密方法就是將明文的字母按照字母順序,往后依次遞推相同的字母,就可以得到加密的密文,而解密的過程正好和加密的過程相反。
|