Blog 222/365:【學新知】密碼學的發展,一場加密與解密永不停止的對戰

🤔為什麼要寫這篇小記?

不知道大家有沒有發現一件事情:由於網路的發達,我們在網路上要做任何事情,幾乎都要先註冊一個帳號及密碼。最讓人抓狂的是,有些網路服務(例如銀行)要求的密碼組合真的讓人汗顏,不但要長度必須為 6-16位英文、數字混雜,且英文必須包含大小寫字母,有些甚至要求密碼中不能出現跟帳號相同的字母排列組合!

「密碼」這件事情似乎常存在生活之中,但它背後的發展歷史是什麼、原理是什麼我們好像都不是特別清楚,有些在金融業、資訊業的朋友應該常接觸到如RSA加密、非對稱加密...blah blah之類的名詞,甚至有一大類的學科 - 「密碼學」就是專門在研究這些事情。

所以我感到好奇,密碼學到底是怎麼回事?

🤔密碼學的歷史其實很迷人

這週在得到上看到一門特別的課程 - 卓克《密碼學 30講》,利用30段音頻、約5個小時的時間來介紹密碼學的基本原理、歷史、人物列傳等。卓克這個人在中國是很有名的科普作家,如果大家有看過《泛科學》的生活科普類文章,大概就是類似這樣的寫作風格。厲害的科普專家,可以把一塊艱深的知識講解的很有趣,對於初學者來說是一個很好的入門點。

這篇小文章很快的跟大家介紹「密碼」演變的歷史階段,同時分享有趣的訊息加密歷史。

🤔密碼學的發展

密碼學的發展可以分成兩個時代:古典密碼學 和 現代密碼學,中間的分水嶺是以「電腦出現」當作分隔點。不論是古典還是現代,有一條主線劇情一直貫穿其中,那就是加密與解密在幾千年中此消彼長的對抗。有的時候,任何加密法都不保險;可有的時候,任何解密法都不管用。

這條劇情可以分成七個時代,
古典密碼學
  • 第一代:隱藏法
  • 第二代:移位法和替代法
  • 第三代:維吉尼亞加密法
  • 第四代:恩尼格瑪加密法
現代密碼學
  • 第五代:魔王加密法
  • 第六代:RSA加密法
  • 第七代:量子加密法

事實上我們已經在生活中的許多地方瞧見他們的影子。在有名的電影《模仿遊戲》中,主角圖靈破解的「恩尼格瑪密碼機 (Enigma)」就屬於第四代的恩尼格瑪加密法 ; 2009年出現的加密貨幣 - 比特幣使用的SHA256,則屬於現代密碼學的一個分支。

這些名詞聽起來就頭疼,所以我們還是先從最簡單的加密法開始說起。

🤔最原始的第一代加密法 - 隱藏法

最原始的第一代加密法說起來很簡單,我們每個人都用過,就是"隱藏法",也就是把信息藏起來。從有文字出現,一直到現在都在用。破解方法就是認真搜找,純粹是體力活。

史上第一個加密法的記載,是古希臘歷史學家希羅多德記錄的一個加密術的故事。這段故事,發生在他出生前300多年。

當時,強大的波斯帝國計劃入侵希臘。斯巴達曾經的老國王得知後,偷偷把這個消息寫在木板上又塗了一層蠟。這片木板成功躲過沿路衛兵的檢查,到達斯巴達。收信人刮去表面的那層蠟,就發現了下面的密報。得知波斯人的入侵計劃後,希臘開始備戰。公元前480年,波斯艦隊以為對方毫無準備,結果自己一天之內200多艘戰艦被擊沉,五年多的準備毀於一旦。

類似的隱藏法,在希羅多德的紀錄中還有高級版的。

例如先把送信人的頭髮剃光,然後把保密消息寫在那人的頭皮上,等他頭髮長出來後,讓送信人出發,到了目的地再把頭髮剃光,保密消息就讀出來了。這個方法不但可以躲過沿路的盤查,甚至連送信人也不知道消息內容,只是送一次消息至少要2個月時間,有點長。

簡單來說,就是想方設法藏匿,解密方法就是想方設法翻找。但自從有了文字後人們就一直在用,直到今天大家藏私房錢時用的還是這個套路。

🤔結論

恭喜大家,幾乎不用學習就已經會使用最原始的加密法。當然我們在漫畫、電影中看到的機關,也都可以屬於 "隱藏法" 的一種。

這讓我想到《死亡筆記本》第一集中,主角夜神月展示高超的機關設計能力,巧妙的隱藏了死亡筆記本的藏匿,讓我當時被嚇得的一愣一愣的。