摘要: 是不是只有那些數學頭腦很好的人,才能理解那些在訊息安全中常常用到的技術(密碼學)?如果你要成為密碼學家,那可能是的,畢竟密碼學家的工作就是構造極難破解的加密演算法。但是加密方法在當今世界的用途已經非常普遍了,從保護用戶的信用卡訊息、保護遠程用戶的網路連接,到保護智力產權、防止盜版,密碼學無處不在。

 


ENCRYPTED

▲圖片標題(來源:動區)

1. 密碼學(Cryptology)的歷史

「cryptology」和「cryptography」兩個詞在現代的文獻中常常是無差別混用的,這就把對它們實際意義的混淆延伸到了語義學中。實際上,這幾個不同的詞語最好這樣解釋:

Cryptology(密碼學) —— 對保密技術的藝術性以及 / 或者密碼系統科學性的研究

Cryptography(密碼設計學)—— 設計密碼系統來保密的實用方法

Cryptoanalysis(密碼學分析)—— 致力於發現無需得知密鑰或演算法就能從密文中反推出明文的漏洞

本文的絕大部分篇幅是在解釋「Cryptography(密碼設計學)」,也就是今時今日的密碼學實踐,也希望讀者能意識到這幾個詞的含義和區別。

就其本身而言,密碼學作為一種科學的研究已經存在了很多年,已知最早的一個密碼設計學的例子是在一段刻於公元前 1900 年的銘文,是在埃及貴族 Khnumhotep 二世墓地的主墓室裡發現的。那個雕刻者到處使用一些奇怪的符號來代替更常見的符號。不過目的似乎並不是隱藏訊息,只是為了改變其形式,讓它看起來更高貴一些。

在羅馬帝國的鼎盛時期(公元前 100 年),Julius Caesar(凱撒大帝)也因使用加密技術向前線將軍傳送消息而聞名。這種字符替換型加密方法(cipher)被稱為「凱撒密碼」,可能是文獻中最常提到的人類曾用過的加密方法。(所謂」「cipher」,就是用來加密或者解密的算法)。所謂「字符替換型加密方法」,就是把明文(我們想要加密的消息)中的每個字母都換成另一個字母,形成密文(即被編碼過的消息)。凱撒所用的方法是把每個字母位移三位,比如,「A」會被換成「D」,「B」會被換成「E」,以此類推(都是換成該字母后面第三個字母)。相應地,最後的幾個字母會被換成開頭的字母,比如「X」會被換成「A」。

在第二次世界大戰期間,美國海軍從納瓦霍人(Navajo)中招募並訓練了許多熟練使用納瓦霍語的人。從編碼消息的角度來看,這是個絕妙的辦法,因為很少有納瓦霍人以外的人學過怎麼說這種語言,而且當時還沒有用納瓦霍語出版的書。但是除了詞語之外,納瓦霍人的口語並不是十分複雜(按密碼設計學的標準來看),一個母語為納瓦霍語的人再加上一個訓練有素的密碼學家,合作起來完全可以破解這套密碼。日本人曾經有過一次機會,就是在 1942 年「巴丹死亡行軍(Bataan Death March)」期間他們在菲律賓抓住了 Joe Kieyoomia。Joe 是美國海軍的一位納瓦霍中士,但他並不是密語播報員,只負責翻譯無線電消息。只不過,因為他沒有參與過密語訓練,這些詞語是什麼意思他一點也不懂。當他說自己不能解讀這些消息時,日本人就開始嚴刑拷打他。因此,日本陸軍和海軍從來沒有破譯過這些密語。

再到 1970 年代,IBM 發現他們的客戶需要某種形式的加密手段,所以他們成立了一個密碼學小組,由Horst-Feistel 領頭。他們設計出了一種加密算法叫「Lucifer」。1973 年,美國國家標準局(現在叫做國家技術與標準局,NIST)放出話來,希望大家能提議一種夠格成為國家標準的數據加密方法。他們顯然已經意識到,自己買了很多並沒有什麼密碼學基礎的商業產品。Lucifer 最終被接受了,因此叫做「DES(數據加密標準)」。1997 年以後,DES 被窮舉式搜索攻擊攻破。DES 的主要問題在於加密密鑰的位數太小。隨著電腦運算力的增加,通過暴力窮舉所有可能的密鑰組合來破解密文慢慢變成了一種可行的辦法。

在 80 年代,大家幾乎只有一個選擇,就是 DES。今天的情形已經大不相同了,有一大堆更健壯、更快,設計也更好的算法可供選擇。問題已經變成了你如何釐清這些選擇。

1997 年,NIST 再次徵求新的加密算法提案,最終收到了 50 份提案。2020 年,NIST 接受了「Rijndael」算法,並命名為「AES」,高級加密標準。

2. 基本原理

所謂加密,就是一個改變數據,使之變得不可辨識、無授權者無法使用的過程;同時,它還要保證解密過程能成功把改變後的數據恢復成原始形式。安全技術一般都把加密的數學方法和用於加密的參數(叫做「key(密鑰)」)區別開來。被選定的密鑰(通常是一段隨機的字符串)也是加密過程的輸入,對加密過程來說也是必不可少的。同一把密鑰往往也是解密過程的必要輸入。

這個保護過程的原理是,只要密鑰(有時候也叫「口令」,password)沒有暴露、只被得到授權的人所知,那麼原始數據就不會暴露給其他人。只有知道密鑰的人才能解密密文。這個思路,我們叫「私鑰」 密碼設計學(註:稱作「對稱密碼學」可能更恰當一些,因為加解密過程是對稱的,都使用同一把密鑰),也是最廣為人知的加密形式。

那麼,加密之所以必要的基本理由如下:

機密性(confidentiality)——在傳輸數據的時候,不希望竊聽者能夠知道被廣播的消息的內容。在保管數據的時候不希望未經授權的人(比如駭客)能夠訪問,也是同理。

身份認證(Authentication)——相當於簽名。收信者希望能確證該訊息是特定的某個人發出的,其他人不能冒充(甚至初始發信方後面想抵賴也不可能)。

完整性(Integrity)——這意味著收信者能夠證實自己得到的數據是完完整整、沒有經第三方改動過的。

不可抵賴性(Non-repudiation)——防止發信方抵賴自己創建過、發送過某條消息。

詳見全文 Full Text: 動區

若喜歡本文,請關注我們的臉書 Please Like our Facebook Page:    Big Data In Finance

 


留下你的回應

以訪客張貼回應

0
  • 找不到回應

Popular Tags