密碼學(xué)的基本原理
所謂加密,就是一個(gè)改變數(shù)據(jù),使之變得不可辨識(shí)、無授權(quán)者無法使用的過程;同時(shí),它還要保證解密過程能成功把改變后的數(shù)據(jù)恢復(fù)成原始形式。安全技術(shù)一般都把加密的數(shù)學(xué)方法和用于加密的參數(shù)(叫做 “key(密鑰)”)區(qū)別開來。被選定的密鑰(通常是一段隨機(jī)的字符串)也是加密過程的輸入,對(duì)加密過程來說也是必不可少的。同一把密鑰往往也是解密過程的必要輸入。
這個(gè)保護(hù)過程的原理是,只要密鑰(有時(shí)候也叫 “口令”,password)沒有暴露、只被得到授權(quán)的人所知,那么原始數(shù)據(jù)就不會(huì)暴露給其他人。只有知道密鑰的人才能解密密文。這個(gè)思路,我們叫 “私鑰” 密碼設(shè)計(jì)學(xué)(譯者注:稱作 “對(duì)稱密碼學(xué)” 可能更恰當(dāng)一些,因?yàn)榧咏饷苓^程是對(duì)稱的,都使用同一把密鑰),也是最廣為人知的加密形式。
那么,加密之所以必要的基本理由如下:
機(jī)密性(confidentiality)—— 在傳輸數(shù)據(jù)的時(shí)候,不希望竊聽者能夠知道被廣播的消息的內(nèi)容。在保管數(shù)據(jù)的時(shí)候不希望未經(jīng)授權(quán)的人(比如黑客)能夠訪問,也是同理。
身份認(rèn)證(Authentication)—— 相當(dāng)于簽名。收信者希望能確證該信息是特定的某個(gè)人發(fā)出的,其他人不能冒充(甚至初始發(fā)信方后面想抵賴也不可能)。
完整性(Integrity)—— 這意味著收信者能夠證實(shí)自己得到的數(shù)據(jù)是完完整整、沒有經(jīng)第三方改動(dòng)過的。
不可抵賴性(Non-repudiation)—— 防止發(fā)信方抵賴自己創(chuàng)建過、發(fā)送過某條消息。
譯者注:作者在這里提到的才算是現(xiàn)代密碼學(xué)研究的范圍。比如身份認(rèn)證和不可抵賴性,都是很重要的屬性,但是在實(shí)用中幾乎與加解密過程無關(guān),但對(duì)數(shù)字簽名的研究毫無疑問是密碼學(xué)的內(nèi)容。加解密的安全性跟機(jī)密性有關(guān),只是現(xiàn)代密碼學(xué)的一部分。
Cipher
密碼設(shè)計(jì)學(xué)是(通過加密)隱藏敏感數(shù)據(jù)的藝術(shù)和科學(xué)。它包括加密過程(就是在原始的 “原文” 上使用加密算法)和解密過程(就是在密文上使用算法,使之恢復(fù)到可讀的形式)。
要解釋什么是 Cipher,最好還是給你看幾個(gè)簡(jiǎn)單的例子:
波利比烏斯密碼
波利比烏斯密碼(Polibius Cipher)也是一種字符替換型密碼。在我這個(gè)示例中,我用的是一個(gè) 6×6 的二維矩陣,可以把所有的大寫字母和數(shù)字 0 到 9 都包括進(jìn)去。然后我們可以得出下表:

有了這個(gè)舉證,我們就可以開始代換了。比如,字母 “A” 可以表示成 “1 × 1”,或者 “X = 1,Y = 1”,甚至再簡(jiǎn)化成 11。再舉例,字幕 “N” 可以表示成 “2 × 3”,或者 “X = 2,Y = 3”,簡(jiǎn)化后就是 23。
來試試加密一條簡(jiǎn)單的信息:
消息(原文):ENCRYPT ME 2 DAY
加密后的數(shù)據(jù)(密文):51–23–31–63–15–43–24 13–51 55 41–11–15
納入生僻字符后,這張表可以變得很大很復(fù)雜。而且,定期地隨機(jī)改變字符的位置也會(huì)讓暴力破解無從下手。這很像我們今天在高級(jí)計(jì)算型加密方法所用的多態(tài)性(polymorphism)。
凱撒密碼

歷史最悠久的加密算法之一就是以其創(chuàng)造者凱撒而聞名的凱撒密碼(Caeser Cipher)。他用這套方法來保證跟羅馬將軍們的安全通信,這樣羅馬帝國的敵人們就算拿到信也沒有辦法讀懂。凱撒密碼是加密的一種初級(jí)形式,很容易被破解,所以今天已經(jīng)基本不會(huì)用在任何安全用途中了。
從原理上來說,凱撒密碼就是重排字母表,不同的位移值也會(huì)使得編碼后的數(shù)據(jù)完全不同。位移值,顧名思義,就是通過讓字母左移或者右移一定位數(shù)來生成密文的數(shù)值。(譯者注:所以,在這里,大家可以把凱撒密碼理解成一種根據(jù)字母表順序的位移來加密的算法(cipher),而位移值就是那個(gè) Key,密鑰。)
這里我們用右移 3 位的做法來看一個(gè)實(shí)際的例子:
英文原文:ENCRYPT ME
密文:HQFUBSW PH (解密時(shí)候要相應(yīng)左移 3 位才能解密)
上面這條消息可以通過嘗試所有可能的位移值來暴力破解:不斷嘗試新的位移值,直到解出來的原文看起來像樣子。更加復(fù)雜的密碼比如 Vigenere 密碼和 Gronsfeld 密碼也是用同樣的原理設(shè)計(jì)出來的。但是解密起來就很麻煩,因此每個(gè)字母都代表一個(gè)位移值。
維吉尼亞密碼表

在理解密碼設(shè)計(jì)學(xué)之前,我們先要了解加密算法的工作原理,因?yàn)樗鼈兪撬屑用苓^程的基礎(chǔ)。速記是一種記錄隱藏信息的方法,實(shí)際上可以歸為古典密碼設(shè)計(jì)學(xué)一類,因?yàn)楝F(xiàn)代密碼設(shè)計(jì)學(xué)已經(jīng)成了 “計(jì)算機(jī)安全” 的代名詞。
多態(tài)性
多態(tài)性是密碼設(shè)計(jì)學(xué)中較為高級(jí)的部分,在計(jì)算機(jī)加密技術(shù)中最為常見。多態(tài)性指的是,一種加密方法在每次使用時(shí)都會(huì)產(chǎn)生不同的結(jié)果,而且在每次使用過后都會(huì)發(fā)生改變。多態(tài)性常見于計(jì)算機(jī)加密算法。也就是說,如果我們將相同的數(shù)據(jù)加密兩次,每次都會(huì)得到一個(gè)不同的加密結(jié)果。
我們用汽車鑰匙來打個(gè)比方?,F(xiàn)在,我們只需要在一個(gè)小巧的電子遙控設(shè)備上輕輕一按,就可以解鎖汽車了。當(dāng)你解鎖車門時(shí),你或許從來沒思考過其中的原理 —— 你按下按鈕的那一刻,會(huì)有一段特定的數(shù)據(jù)發(fā)送到你的車上,一旦匹配成功,車門就解鎖了。要實(shí)現(xiàn)這點(diǎn),最簡(jiǎn)單的方法是為每個(gè)遙控設(shè)備設(shè)定不同的頻率。但是,這樣管理起來會(huì)很麻煩。因此,所有遙控設(shè)備都采用了同樣的波長,但是使用不同的算法(滾動(dòng)碼)來生成發(fā)送給汽車的數(shù)據(jù)。這些就是多態(tài)性算法。
由于這些算法每次使用過后都會(huì)發(fā)生改變,很難對(duì)其進(jìn)行逆向工程。即使有黑客破解了算法(首先,破解多態(tài)性算法本身難度就很大),他還得找到與該算法匹配的汽車/鑰匙(這又是一項(xiàng)復(fù)雜的任務(wù))。
-
密碼
+關(guān)注
關(guān)注
9文章
203瀏覽量
31381 -
加密算法
+關(guān)注
關(guān)注
0文章
219瀏覽量
26246
發(fā)布評(píng)論請(qǐng)先 登錄
選擇加密算法時(shí)需考慮哪些因素?
AMI在Aptio V UEFI固件中成功部署后量子密碼學(xué)
SM4算法實(shí)現(xiàn)分享(一)算法原理
SM4算法原理及分享1
加密算法指令設(shè)計(jì)
國密系列算法簡(jiǎn)介及SM4算法原理介紹
加密算法的應(yīng)用
AES加密流程
RISCV-K指令集擴(kuò)展分享
AES加密模式簡(jiǎn)介與對(duì)比分析
安芯半導(dǎo)體發(fā)布全新防復(fù)制加密芯片RJGT28E30
貼片三極管上的印字與真實(shí)名稱的對(duì)照表詳細(xì)說明
調(diào)試變頻器詳細(xì)說明
抵御量子計(jì)算威脅:航芯「抗量子密碼加密簽名方案」為信息安全筑起新防線
密碼學(xué)科普:多個(gè)加密算法的詳細(xì)說明
評(píng)論