密碼學的基本原理
所謂加密,就是一個改變數據,使之變得不可辨識、無授權者無法使用的過程;同時,它還要保證解密過程能成功把改變后的數據恢復成原始形式。安全技術一般都把加密的數學方法和用于加密的參數(叫做 “key(密鑰)”)區別開來。被選定的密鑰(通常是一段隨機的字符串)也是加密過程的輸入,對加密過程來說也是必不可少的。同一把密鑰往往也是解密過程的必要輸入。
這個保護過程的原理是,只要密鑰(有時候也叫 “口令”,password)沒有暴露、只被得到授權的人所知,那么原始數據就不會暴露給其他人。只有知道密鑰的人才能解密密文。這個思路,我們叫 “私鑰” 密碼設計學(譯者注:稱作 “對稱密碼學” 可能更恰當一些,因為加解密過程是對稱的,都使用同一把密鑰),也是最廣為人知的加密形式。
那么,加密之所以必要的基本理由如下:
機密性(confidentiality)—— 在傳輸數據的時候,不希望竊聽者能夠知道被廣播的消息的內容。在保管數據的時候不希望未經授權的人(比如黑客)能夠訪問,也是同理。
身份認證(Authentication)—— 相當于簽名。收信者希望能確證該信息是特定的某個人發出的,其他人不能冒充(甚至初始發信方后面想抵賴也不可能)。
完整性(Integrity)—— 這意味著收信者能夠證實自己得到的數據是完完整整、沒有經第三方改動過的。
不可抵賴性(Non-repudiation)—— 防止發信方抵賴自己創建過、發送過某條消息。
譯者注:作者在這里提到的才算是現代密碼學研究的范圍。比如身份認證和不可抵賴性,都是很重要的屬性,但是在實用中幾乎與加解密過程無關,但對數字簽名的研究毫無疑問是密碼學的內容。加解密的安全性跟機密性有關,只是現代密碼學的一部分。
Cipher
密碼設計學是(通過加密)隱藏敏感數據的藝術和科學。它包括加密過程(就是在原始的 “原文” 上使用加密算法)和解密過程(就是在密文上使用算法,使之恢復到可讀的形式)。
要解釋什么是 Cipher,最好還是給你看幾個簡單的例子:
波利比烏斯密碼
波利比烏斯密碼(Polibius Cipher)也是一種字符替換型密碼。在我這個示例中,我用的是一個 6×6 的二維矩陣,可以把所有的大寫字母和數字 0 到 9 都包括進去。然后我們可以得出下表:
有了這個舉證,我們就可以開始代換了。比如,字母 “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
納入生僻字符后,這張表可以變得很大很復雜。而且,定期地隨機改變字符的位置也會讓暴力破解無從下手。這很像我們今天在高級計算型加密方法所用的多態性(polymorphism)。
凱撒密碼
歷史最悠久的加密算法之一就是以其創造者凱撒而聞名的凱撒密碼(Caeser Cipher)。他用這套方法來保證跟羅馬將軍們的安全通信,這樣羅馬帝國的敵人們就算拿到信也沒有辦法讀懂。凱撒密碼是加密的一種初級形式,很容易被破解,所以今天已經基本不會用在任何安全用途中了。
從原理上來說,凱撒密碼就是重排字母表,不同的位移值也會使得編碼后的數據完全不同。位移值,顧名思義,就是通過讓字母左移或者右移一定位數來生成密文的數值。(譯者注:所以,在這里,大家可以把凱撒密碼理解成一種根據字母表順序的位移來加密的算法(cipher),而位移值就是那個 Key,密鑰。)
這里我們用右移 3 位的做法來看一個實際的例子:
英文原文:ENCRYPT ME
密文:HQFUBSW PH (解密時候要相應左移 3 位才能解密)
上面這條消息可以通過嘗試所有可能的位移值來暴力破解:不斷嘗試新的位移值,直到解出來的原文看起來像樣子。更加復雜的密碼比如 Vigenere 密碼和 Gronsfeld 密碼也是用同樣的原理設計出來的。但是解密起來就很麻煩,因此每個字母都代表一個位移值。
維吉尼亞密碼表
在理解密碼設計學之前,我們先要了解加密算法的工作原理,因為它們是所有加密過程的基礎。速記是一種記錄隱藏信息的方法,實際上可以歸為古典密碼設計學一類,因為現代密碼設計學已經成了 “計算機安全” 的代名詞。
多態性
多態性是密碼設計學中較為高級的部分,在計算機加密技術中最為常見。多態性指的是,一種加密方法在每次使用時都會產生不同的結果,而且在每次使用過后都會發生改變。多態性常見于計算機加密算法。也就是說,如果我們將相同的數據加密兩次,每次都會得到一個不同的加密結果。
我們用汽車鑰匙來打個比方。現在,我們只需要在一個小巧的電子遙控設備上輕輕一按,就可以解鎖汽車了。當你解鎖車門時,你或許從來沒思考過其中的原理 —— 你按下按鈕的那一刻,會有一段特定的數據發送到你的車上,一旦匹配成功,車門就解鎖了。要實現這點,最簡單的方法是為每個遙控設備設定不同的頻率。但是,這樣管理起來會很麻煩。因此,所有遙控設備都采用了同樣的波長,但是使用不同的算法(滾動碼)來生成發送給汽車的數據。這些就是多態性算法。
由于這些算法每次使用過后都會發生改變,很難對其進行逆向工程。即使有黑客破解了算法(首先,破解多態性算法本身難度就很大),他還得找到與該算法匹配的汽車/鑰匙(這又是一項復雜的任務)。
-
密碼
+關注
關注
8文章
191瀏覽量
30559 -
加密算法
+關注
關注
0文章
216瀏覽量
25586
發布評論請先 登錄
相關推薦
深入解析ECC256橢圓曲線加密算法
![深入解析ECC256橢圓曲線<b class='flag-5'>加密算法</b>](https://file1.elecfans.com/web3/M00/04/45/wKgZO2dyD6eAEiGRAABGmFoYzIo378.png)
加密算法在云計算中如何應用?
加密算法在網絡安全中扮演什么角色?
加密算法的選擇對于加密安全有多重要?
常見的加密算法有哪些?它們各自的優勢是什么?
對稱加密技術在實際應用中如何保障數據安全?
華納云:加密算法在保護網絡安全中扮演什么角色
AES加密協議是什么?AES加密協議的應用
STM32L072系列支持AES加密算法嗎?
指紋加密移動硬盤詳細方案解析
![指紋<b class='flag-5'>加密</b>移動硬盤<b class='flag-5'>詳細</b>方案解析](https://file1.elecfans.com/web2/M00/C4/CC/wKgZomX364iAEfnBAAouqkmok3A366.png)
評論