記得考上研究所那年正是電子商務爆發的年代,各種購物網站興起,人們也不斷挑戰新的商業模式。我注意到這些服務之所以能成形,背後的資訊安全發揮了決定性的作用。不止是當時的商業模式,未來(也就是現在)、未來的未來,各種服務都必須以充份的資訊安全為基礎才得以成功。越有價值的服務也會越重視資訊安全。因此,我將資訊安全列為研究方向,並請相關領域的老師擔任我的指導教授,沒想到就因此進入了《密碼學》的領域。
這篇文章先作為引子,介紹一些密碼學的歷史,帶大家在資訊保護的路上先逛一逛。嗯…好像很有趣卻又很空洞?不妨考慮付費看點實務應用吧!
人類一直存在著將交換祕密訊息的需求。在保護祕密的議題上有兩大分支:《密碼學》與《資訊隱藏》。密碼學是本文的主要議題,我們留到後面講。這裡先談談資訊隱藏。
資訊隱藏(Steganography,隱寫術)就是把想要傳輸的祕密藏起來,神不知鬼不覺的傳輸到接收訊息的那一方。它和密碼學的應用場景不同。打個比方:兩軍交戰時,若是某一方截獲了對方的訊息,就算解不開內容,至少也會把訊息擋下,不讓它傳出去。這時候再好的密碼系統都無用武之地,反而是資訊隱藏登場的機會了。
我這裡有一個
古老的故事。一位古代的領主想要把推翻國王的訊息傳給他的女婿。為了不讓這個殺頭的訊息被人發現,他找來了一位自己信任的奴隸,把訊息紋在奴隸的頭皮上,等到奴隸的頭髮長出來再送過去。只要路上的警衛沒料到這招,訊息就能安全的傳遞出去。
資訊隱藏在現代的應用很多。除了以往用來傳遞祕密外,現在更用在
數位版權管理。比如電影製片商可以在影像裡面偷偷塞入不同的序號,然後再交給發行商。假如某間發行商在影片正式公開前流出了影片的內容,製片商只要把流出的影片裡的序號取出,馬上就知道是哪家發行商走漏了影片。
資訊隱藏的議題在於藏得好不好。比如:對被用來隱藏的宿主造成的破壞越小越好(越不容易被偵測出來);用越小的破壞藏入越多的訊息越好;宿主被雜訊干擾時仍能取出訊息,而取出的訊息越完整越好(比如前面的例子裡,若影片經過轉檔或側拍,有些演算法仍然可以取出序號)。這是一門博大精深的議題,直到現在也還是熱門的研究領域。
終於要講密碼學(Cryptography)了。
密碼學又稱亂碼化技術。基本上就是亂到讓敵人看不懂,只讓自己人看懂。這其中存在著加密和解密兩個過程。明文加密後變成密文;密文解密後變回明文。加密和解密時需要使用一些特定的祕密(金鑰)。只有手握這些祕密的人才有能力加密和解密。
古典的加密技術裡,最常舉例的便是古希臘的
密碼棒。那是將一根木棒削成約定好的粗細。收到密文的人將寫著密文的布條纏繞上去後,密文中的祕密訊息就會浮現出來。這裡,那塊布條就是密文。布條裡面藏有明文。而那根棒棒就是金鑰了。二戰美國傘兵知名的「打雷」、「閃電」口令,也是一種查表式的密碼,能用來快速分辨敵友。記得我當兵的時候也用過。比如在上哨前安全士官會交接當天的口令,當行軍接近哨點時就必須要能答得出來。密碼學的使用無所不在。
除了加密訊息,避免不相關的人讀懂之外,密碼學還有著身份驗證的應用。怎麼說?能夠將明文加密成合法密文的人,當然表示它擁有合法的金鑰。在身份驗證的場景裡,取回明文已不是重點,挑戰對方加密或解密的能力才是。
現代的密碼演算法不外乎位移、置換以及能推導與反推導的演算法。
所謂的位移,就是將明文的內容做特定距離的移動。比如明文是「THE」時,我們的將各個字元往右移兩位,那密文就變成了「VJG」。而解密的時候就將密文裡的各個字元往左移兩位就好。
置換的加密方式是將明文換成特定的值,然後在解密時換回來。比如明文是「BBC」時,我們用「A變甲」、「B變乙」、「C變丙」的置換方式,則密文就變成了「乙乙丙」。解密時就反過來置換就好。
位移和置換是古老的手段,但是快速又好用,目前還看不出退流行。而推導與反推導的演算法則是數學家發揮的舞台。數學家經常利用難解問題,將祕密隱藏在其中,然後讓解密的那一方取得某些「優勢參數」(通常就是能用來開鎖的鑰匙),以便順利解開難題,取回明文。
這裡,我先不使用數學難題來舉例。我們假設一個推導(加密)演算法為「e(m) = m * k = c」,x 為明文、k為金鑰的數值、c為密文。另外我們再做一個反推導(解密)的公式「d(c) = c / k = m」。然後我們設明文為3、金鑰為5,因此得到密文「e(3) = 3 * 5 = 15」。解密時用「d(15) = 15 / 5 = 3」得到原本的明文 。
看完了小弟對資訊保護技術的粗略介紹,是否對密碼學燃起了一點興趣?在資訊安全的領域裡,一直都是道高一尺魔高一丈,對抗永不止息。時至今日,密碼學仍然是十分熱門的學科,因為今天還受用的演算法,沒有人有把握它還能用上五年、十年、或二十年。事實上,我們今日(本文於2021年落筆)常用的密碼演算法就正在面臨嚴峻的考驗呢!
本文介紹的這些資訊十分粗淺。完全不到可以應用的階段。十分建議資訊從業人員花一點時間(還有金錢(笑))對密碼學多做一些了解。肯定用得著。而非資訊的從業人員,若能付出少許金錢與時間就能多了解一點知識的話,我也認為這是不錯的投資。
我在之後的付費資訊裡預計將介紹以下資訊(挖坑ing):
- 密碼演算法、原理和未來展望 ─ 密碼學怎麼來的?到底在搞什麼?
- 密碼演算法實務應用 ─ 實際上要怎麼加密?實務上會碰到什麼問題?
- 資訊安全與密碼學 ─ 加密就安全了?這可不一定。
另外,我也預計製作底下免付費的內容,讓大家知道密碼學還可以這樣用:
- 密碼學 v.s. 加密貨幣;中心化 v.s. 去中心化
- 密碼學與人工智慧有什麼關係?
感謝您的閱讀。讓我們在另一篇文章裡再會囉(啾咪)。