09.14 瞭解加密學:從數學到物理(一)

前言:加密學是區塊鏈得以安全運行的關鍵之一。如何來理解加密學?本文適合普通讀者,可以瞭解密碼學的基礎原理。本文作者是George Moraetes ,資深信息安全專家,文章來源於medium.com,由藍狐筆記社群“Leo”翻譯。

了解加密学:从数学到物理(一)

密碼學是數學和物理學,它是信息安全的核心,用於保護數據和確保隱私。

要想理解信息安全中的常用方法是不是必須成為數學天才?對於加密學家來說,也許是的,因為他們的工作是提供極難解密的加密算法。從保護用戶的信用卡信息,到保護遠程用戶與網絡的連接或保護知識產權免受數字盜版,加密在我們生活和工作中有很廣泛的應用。

本文的重點是讓大家都能理解令人生畏的密碼學,讓大家明白它是如何來加密數據的。本文闡述的主要內容包括密碼學歷史、基礎知識以及常用算法。

密碼學簡史

在現代文獻中,密碼學有兩個詞“cryptology”和“cryptography”來表示,它們經常交換使用,這在語義學上帶來了混淆。這兩個詞含義不同,解釋如下:

Cryptology——是關於加密的研究和/或加密系統的科學。

Cryptography——為達成秘密或隱藏目的,應用密碼系統方法的實踐。

Cryptoanalysis——它的目的是發現一些漏洞,可以在不必知道密鑰或算法的情況下,允許從密文中檢索明文。

(譯者注:從以上作者的解釋來看,Cryptology更多是加密學理論研究,Cryptography 更多是加密學的應用研究和實踐)

本文中所提及的大部分內容都是“Cryptography”。密碼學作為一門科學已經存在很多年,第一個使用密碼學的已知證據是在公元前1900左右雕刻的銘文中發現的,在一個古埃及貴族Khnumhotep II的墓室裡首次出現。抄寫員用了一些奇怪的象形文字符號來代替更普通的符號。它的目的不是為了隱藏信息,也許是為了通過改變形式來彰顯尊貴。

了解加密学:从数学到物理(一)

公元前100年,在羅馬帝國巔峰時期,凱撒曾使用加密方式向前線軍隊傳達秘密信息。“凱撒密碼”可能是在文獻中被提及次數最多的歷史上的密碼。在替換密碼中,明文中的每個字符都被另外的字符替換,以形成密文。凱撒使用的變體是隔3個位置的密碼轉換。每個字母隔三個位置進行轉換,這樣,字母A被字母D代替,字母B被E代替,如此類推。字母在末尾迴繞,這樣X會被A代替。

第二次世界大戰期間,美國海軍陸戰隊招募和訓練了那瓦霍印第安部落的人,他們熟練使用那瓦霍語。對於密碼使用來說,這是一個很有吸引力的選擇。因為那瓦霍族之外很少有人能講那瓦霍語,也沒有出版過任何那瓦霍語的書籍。在加密學標準來看,那瓦霍族語言密碼並不複雜。如果一位那瓦霍族人加上一位受過訓練的加密學者就能在一起富有成效地工作,就有機會攻破那瓦霍族語密碼。1942年,在巴丹死亡行軍(Bataan Death March)中,日本軍隊本來有機會做到這一點,他們在菲律賓抓住了Joe Kieyoomia。

Kieyoomia是美國陸軍的中士,那瓦霍族人,但不是密碼學者,雖然他被命令對無線電信息進行解讀,但因為他沒有參加過密碼學訓練,這些密碼對他來說,毫無頭緒。當他報告自己無法理解無線電信息時,他遭受了折磨。最終,這些日本軍隊沒能解密這些口頭密碼。

上世紀70年代早期,IBM意識到他們的客戶要求採用某種形式的加密,隨之IBM成立了“加密組”,由Horst-Feistel領導。他們設計了名為“Lucifer”的密碼。1973年,NBS(美國國家標準局,現改名為美國國家標準與技術研究院,NIST)提出一項關於分組密碼的提案,該分組密碼成為了國家標準。他們顯然意識到,在沒有良好的加密支持下,他們購買了大量的商業產品。Lucifer被最終採用,稱為DES(數據加密標準)。

1997年,DES在窮舉搜索攻擊下被攻破。DES的主要問題是加密密鑰尺寸過小。隨著算力增長,通過暴力計算密鑰的所有不同組合,獲得可能的明文信息。20世紀80年代,只有一個選擇,那就是DES。但時代變了。今天,我們有更多的選擇,算法更強,更快,設計更良好。現在,問題在於如何選擇。

1997年,NIST再次提出一個提案,這是新的分組密碼方案。它收到50份建議書。2000年,它接受了Rijndael,並命名為AES(高級加密標準)。

基礎知識

加密是改變數據的過程,由此,對於非授權人員來說,它是無法識別和無用的;與此同時,所謂的解密就是要把數據轉變為原來的形式。最安全的技術是使用數學算法和稱為“密鑰”的變量值。所選擇的密鑰,一般來說,都是隨機字符串,它們通過加密輸入,並被整合到數據轉變中。要解密數據,必須輸入完全相同的密鑰。

這是密碼保護的基礎,如果只有被授權方才能知曉密鑰,其他人是無法獲知數據的。只有知道密鑰的人才能解密。這稱之為“私鑰”密碼學,也是當今最廣為人知的形式。

現在,為什麼加密是必須的?它的根本理由是:

機密性——在傳輸數據時,人們不希望竊聽者理解廣播信息的內容。存儲數據也不應該被非授權者訪問,比如黑客。

身份驗證——相當於簽名。信息的接收者想要證據,證明這是來自特定方的信息,而不是來自其他人的信息。(即使最初的信息發送方後來想否認)

完整性——這是說,個體數據的接收者有證據表明,沒有第三方對信息進行更改。

不可否認——防止信息發送方否認曾創建和發送過信息

密碼

密碼學是隱藏敏感數據的藝術和科學。它包括加密和解密,加密是把密碼應用到原始的“明文”中,而解密則是用密碼把數據轉變為可讀形式。

為說明密碼,最好的方法是,向你展示簡化的例子:

Polybius 密碼

Polybius密碼是一種替代密碼。它涉及到使用6×6 二維矩陣,存有全部大寫字母和0-9的數字。

我們得到如下的矩陣:

了解加密学:从数学到物理(一)

在6×6 二維矩陣,它有36個字母-數字字符,我們可以開始替代過程。比如,字母A由1×1 代替,或者X=1,y=1,可以簡化為11;我們拿字母“N”來說,這個位置是2×3或x=2,y=3,可以簡化為23。

我們可以加密一條簡單的信息:

信息:ENCRYPT ME 2 DAY 加密後: 51–23–31–63–15–43–24 13–51 55 41–11–15

密碼可以變得更多更復雜,可以包括小字母和特別字符。而且,字符位置可以週期性或隨機變化,這讓暴力計算攻擊來說,幾乎是不可預測的。這個機制類似於當今的多態性,在高級計算加密方法中被採用。

凱撒密碼

史上最早的密碼之一就是Julius Caeser創造的凱撒密碼。他用它來安全加密給將軍們的信息,這樣羅馬帝國的敵人就無法弄懂信息的含義。凱撒密碼是加密的基本形式,破解很容易。因此,它很少在重要場景下被採用。

基本上,凱撒密碼是字母表的重新排列。不同的移位值可以用來創建不同的信息編碼。移位的數量,跟字面意思一樣,它為了創建加密的信息,讓字母數向左或向右移位。下面是實際案例,它向左移3位。

英文:ENCRYPT ME 加密後:HQFUBSW PH

以上的信息很容易被解密,只要通過暴力計算嘗試每個字母組合,最終可以發現一個能看得懂的解釋。在這個原則上已經創建了更復雜的密碼,例如The Vigenere 或 The Gronsfeld Ciphers,但它們利用替代方法。解密它也可能會混淆,每個字母作為值改變移位模式。

Vigenere密碼錶

了解加密学:从数学到物理(一)

理解密碼是如何工作的很重要,尤其是想要了解加密學,密碼是所有加密的基礎。速記是編寫隱藏信息的過程,實際上它更像是經典加密學,現在加密學已經成為“計算機安全”的同義詞。

多態性

多態性是加密學相對高級的部分,在計算機加密技術中很常見。多態性是一種密碼,它在每次使用後會自行改變,每次使用它都會產生不同的結果。這在加密算法中最常見,它常用於計算機中。這意味著,如果我們加密相同的數據兩次,每次它都會產生不同的加密結果。

想想我們的汽車鑰匙。如今,我們都有遠程電子小設備,輕輕一按即可解鎖汽車。你可能沒有想到,每次你打開汽車,一定量的數據會被傳送到你的車輛,這個數據專用於你的汽車,一旦匹配,車輛解鎖。實現這一目標的簡單方法,只是將每個遠程設備放在不同的頻率上。但是,這很難規範。所有,實際上,所有的波長都相同,並且它們使用不同的算法(滾動代碼)來把數據發送到汽車上。這些算法是多態的。

這意味著算法更難進行逆向工程,因為它們每次都在改變。即使黑客發現了算法(首先使用多態算法更難),黑客也必須將其與汽車(鑰匙)所在的組相匹配,而這是一項複雜的任務。


分享到:


相關文章: