加密原理
引言
互聯(lián)網(wǎng)的驚人發(fā)展使企業(yè)和消費(fèi)者都感到非常興奮,它正改變著我們的生活和工作方式。但是,互聯(lián)網(wǎng)的安全程度如何——尤其是在通過(guò)它發(fā)送機(jī)密信息時(shí)的安全性——已經(jīng)成為人們關(guān)心的主要問(wèn)題。
我們確實(shí)有許多信息不希望讓他人看到,例如:
電子商務(wù)依賴(lài)于安全發(fā)送信息的能力。 |
人們通過(guò)多種方法在計(jì)算機(jī)和互聯(lián)網(wǎng)上實(shí)現(xiàn)信息安全性。一種簡(jiǎn)單而又直接的方法是僅將機(jī)密信息保存在可移動(dòng)存儲(chǔ)介質(zhì)上,如軟盤(pán)上。但是,最流行的安全性實(shí)現(xiàn)形式都依賴(lài)于加密,這是一種對(duì)信息進(jìn)行編碼而使得僅擁有密鑰的人(或計(jì)算機(jī))才能將其解碼的程序。
在本文中,您將了解到有關(guān)加密和驗(yàn)證的知識(shí),以及什么是公鑰和對(duì)稱(chēng)密鑰系統(tǒng)以及散列算法。
加密系統(tǒng)
計(jì)算機(jī)加密建立在人類(lèi)歷史中一直使用的密碼術(shù)的基礎(chǔ)上。在數(shù)字時(shí)代之前,使用密碼術(shù)最多的是政府,尤其是用于軍事目的。據(jù)考證,遠(yuǎn)在羅馬帝國(guó)時(shí)代就存在經(jīng)過(guò)編碼的消息。但是,現(xiàn)今人們使用的大多數(shù)密碼術(shù)形式均依賴(lài)于計(jì)算機(jī),原因在于僅憑借人腦編寫(xiě)的代碼非常容易被計(jì)算機(jī)破解。
大多數(shù)計(jì)算機(jī)加密系統(tǒng)都屬于以下兩種類(lèi)型之一:
- 對(duì)稱(chēng)密鑰加密
- 公鑰加密
在下面幾節(jié),您將了解所有這些系統(tǒng)。
對(duì)稱(chēng)密鑰加密
在對(duì)稱(chēng)密鑰加密中,每臺(tái)計(jì)算機(jī)都有一個(gè)密鑰(代碼),用于對(duì)通過(guò)網(wǎng)絡(luò)發(fā)送到另一臺(tái)計(jì)算機(jī)的信息包進(jìn)行加密。對(duì)稱(chēng)密鑰要求您知道將要與哪些計(jì)算機(jī)通信,以便您能夠在每臺(tái)計(jì)算機(jī)上安裝密鑰。對(duì)稱(chēng)密鑰加密實(shí)際上與密碼相同,兩臺(tái)計(jì)算機(jī)都必須知道密碼才能對(duì)信息進(jìn)行解碼。該代碼提供了用于對(duì)信息進(jìn)行解碼的鑰匙。下面是一個(gè)簡(jiǎn)單的例子:您創(chuàng)建一條消息并進(jìn)行編碼,將原消息中的每個(gè)字母都替換為其在字母表中后兩位的字母,然后發(fā)送給朋友。這樣“A”變成了“C”,“B”變成了“D”。您告訴自己信任的朋友,代碼是“后移兩位”。這樣您的朋友收到消息時(shí)就可以進(jìn)行解碼,從而得知消息的內(nèi)容。任何其他看到該消息的人看到的只是無(wú)意義的內(nèi)容。
公鑰加密
公鑰加密方法結(jié)合使用了私鑰和公鑰。私鑰只有您的計(jì)算機(jī)知道,而公鑰則由您的計(jì)算機(jī)提供給任何希望與其安全通信的其他計(jì)算機(jī)。若要解碼被加密的消息,計(jì)算機(jī)必須使用發(fā)出消息的計(jì)算機(jī)提供的公鑰,以及它自己的私鑰。Pretty Good Privacy(PGP)是一種非常流行的公鑰加密實(shí)用工具,它幾乎可用于對(duì)任何數(shù)據(jù)加密。
發(fā)出消息的計(jì)算機(jī)使用對(duì)稱(chēng)密鑰對(duì)文檔進(jìn)行加密,然后又使用接收消息的計(jì)算機(jī)的公鑰對(duì)對(duì)稱(chēng)密鑰進(jìn)行加密。后者使用其私鑰來(lái)解碼對(duì)稱(chēng)密鑰,然后使用對(duì)稱(chēng)密鑰來(lái)解碼文檔。
大規(guī)模實(shí)施公鑰加密(例如,安全Web服務(wù)器可能需要這種加密)要求采取另一種方式。這時(shí)數(shù)字證書(shū)能派上用途。從根本上講,數(shù)字證書(shū)是一段信息,聲明Web服務(wù)器受稱(chēng)為證書(shū)頒發(fā)機(jī)構(gòu)的獨(dú)立源的信任。證書(shū)頒發(fā)機(jī)構(gòu)充當(dāng)兩臺(tái)計(jì)算機(jī)均信任的“中間人”。它確認(rèn)每臺(tái)計(jì)算機(jī)的身份與其聲明的身份相符,然后將每臺(tái)計(jì)算機(jī)的公鑰提供給對(duì)方。
公鑰加密:SSL(安全套接字層)
安全套接字層(SSL)是一種廣泛實(shí)施的公鑰加密。SSL最初由網(wǎng)景公司(Netscape)開(kāi)發(fā),是互聯(lián)網(wǎng)瀏覽器和Web服務(wù)器用于傳輸機(jī)密信息的互聯(lián)網(wǎng)安全協(xié)議。SSL現(xiàn)在已經(jīng)成為總體安全協(xié)議傳輸層安全(TLS)的一部分。
您一旦向某個(gè)網(wǎng)站上的表單輸入機(jī)密信息 (如信用卡號(hào)碼),地址中的“http”后就會(huì)出現(xiàn)“s”。 |
在您的瀏覽器中,您可以通過(guò)多種不同方式知道自己什么時(shí)候在使用安全協(xié)議(例如TLS)。您將注意到,地址行中的“http”中被替換為“https”,在瀏覽器窗口底部的狀態(tài)欄中還會(huì)看到一個(gè)小的掛鎖符號(hào)。
掛鎖符號(hào)表明您正在使用加密。 |
公鑰加密占用大量計(jì)算資源,所以大多數(shù)系統(tǒng)結(jié)合使用公鑰和對(duì)稱(chēng)密鑰。當(dāng)兩臺(tái)計(jì)算機(jī)發(fā)起安全會(huì)話(huà)時(shí),一臺(tái)計(jì)算機(jī)創(chuàng)建一個(gè)對(duì)稱(chēng)密鑰,并將其發(fā)送給使用公鑰加密的另一臺(tái)計(jì)算機(jī)。然后這兩臺(tái)計(jì)算機(jī)使用對(duì)稱(chēng)密鑰加密進(jìn)行通信。一旦完成會(huì)話(huà),每臺(tái)計(jì)算機(jī)都會(huì)丟棄該會(huì)話(huà)使用的對(duì)稱(chēng)密鑰。進(jìn)行新的會(huì)話(huà)要求創(chuàng)建新的對(duì)稱(chēng)密鑰,然后重復(fù)上述過(guò)程。
公匙加密的散列算法
公鑰加密中的密鑰以散列值為基礎(chǔ)。這個(gè)值是使用散列算法、根據(jù)輸入的一個(gè)基礎(chǔ)數(shù)字計(jì)算出來(lái)的。從本質(zhì)上講,散列值是原始值的概要。關(guān)于散列值的重要一點(diǎn)是,如果不知道用于創(chuàng)建散列值的數(shù)據(jù),就幾乎不可能推導(dǎo)出原始輸入數(shù)字。下面是一個(gè)簡(jiǎn)單示例:
輸入數(shù)字 | 散列算法 | 散列值 |
10,667 | 輸入數(shù)字乘以143 | 1,525,381 |
您可以看到,要確定值1,525,381原來(lái)是10,667和143相乘的結(jié)果是多么困難。但是,如果您知道乘數(shù)是143,就很容易計(jì)算出值10,667。公鑰加密實(shí)際上比該示例復(fù)雜得多,但基本原理相同。
公鑰通常使用復(fù)雜算法和非常大的散列值來(lái)進(jìn)行加密,其中包括40位甚至128位數(shù)字。128位可以有2128個(gè)不同組合!這就像是要在撒哈拉沙漠中找出某顆沙礫一樣。
計(jì)算機(jī)身份驗(yàn)證
如前所述,加密是將一臺(tái)計(jì)算機(jī)發(fā)送至另一臺(tái)計(jì)算機(jī)的所有數(shù)據(jù)編碼為只有后者才能解碼的形式的過(guò)程。驗(yàn)證是另一種過(guò)程,用于檢驗(yàn)來(lái)自信任源的信息。從基本上講,如果信息是“可信的”,表明您知道誰(shuí)創(chuàng)建了該信息,而且您知道自此人創(chuàng)建該信息以來(lái)它沒(méi)有受到任何形式的改動(dòng)。加密和驗(yàn)證這兩個(gè)過(guò)程可共同創(chuàng)造出安全的環(huán)境。
要對(duì)計(jì)算機(jī)的用戶(hù)或信息進(jìn)行身份驗(yàn)證,有多種方法:
- 密碼:使用用戶(hù)名和密碼是最常見(jiàn)的驗(yàn)證形式。您在計(jì)算機(jī)提示時(shí)輸入用戶(hù)名和密碼。計(jì)算機(jī)根據(jù)安全文件核對(duì)二者以確認(rèn)。如果名稱(chēng)或密碼不匹配,則不允許您進(jìn)一步訪(fǎng)問(wèn)。
- 通行卡:這些卡有很多種,從類(lèi)似于信用卡的帶磁條的一般卡到具有嵌入式計(jì)算機(jī)芯片的復(fù)雜智能卡,不一而足。
- 數(shù)字簽名:從基本上講,數(shù)字簽名是確保電子文檔(電子郵件、電子表格和文本文件)可信的一種方式。數(shù)字簽名標(biāo)準(zhǔn)(DSS)基于一種使用數(shù)字簽名算法(DSA)的公鑰加密方式。DSS是一種已經(jīng)獲得美國(guó)政府認(rèn)可的數(shù)字簽名格式。DSA算法包括一個(gè)私鑰(僅文檔創(chuàng)建人或簽署人知道)和一個(gè)公鑰。公鑰包括四個(gè)部分。如果在文檔上附加數(shù)字簽名之后更改文檔中的任何內(nèi)容,則數(shù)字簽名所對(duì)照的值即被更改,使簽名變得無(wú)效。
最近,在家庭和辦公室計(jì)算機(jī)系統(tǒng)上開(kāi)始出現(xiàn)更復(fù)雜的驗(yàn)證形式。這些新系統(tǒng)大多使用某種形式的生物測(cè)定技術(shù)進(jìn)行驗(yàn)證。它使用生物信息來(lái)驗(yàn)證身份。具體驗(yàn)證方法包括:
- 指紋掃描
- 視網(wǎng)膜掃描
- 面部掃描
- 語(yǔ)音識(shí)別
檢查數(shù)據(jù)損壞情況
對(duì)于安全信息處理的另一種需要是確保數(shù)據(jù)在傳輸或加密期間沒(méi)有被損壞。有多種流行的方法可以做到這一點(diǎn):
- 校驗(yàn)和:校驗(yàn)和也許是最古老的確保數(shù)據(jù)正確的方法之一。由于無(wú)效的校驗(yàn)和同時(shí)表明數(shù)據(jù)已在某種程度上受到損壞,因此校驗(yàn)和也提供了一種驗(yàn)證方式。它通過(guò)兩種方法來(lái)確定。假定某個(gè)數(shù)據(jù)包的校驗(yàn)和為1個(gè)字節(jié)長(zhǎng)。一個(gè)字節(jié)包含8個(gè)位,而每個(gè)位可能處于兩種狀態(tài)之一,從而共有256(28 )種可能的組合。由于第一種組合等于零,一個(gè)字節(jié)的最大值為255。
- 如果數(shù)據(jù)包中其他字節(jié)的和為255或更低,則校驗(yàn)和就是此值。
- 如果數(shù)據(jù)包中其他字節(jié)的和超出255,則校驗(yàn)和是總值除以256后的余數(shù)。
- 如果數(shù)據(jù)包中其他字節(jié)的和為255或更低,則校驗(yàn)和就是此值。
讓我們看一個(gè)校驗(yàn)和示例:
字節(jié) 1 | 字節(jié) 2 | 字節(jié) 3 | 字節(jié) 4 | 字節(jié) 5 | 字節(jié) 6 | 字節(jié) 7 | 字節(jié) 8 | 總值 | 校驗(yàn)和 |
212 | 232 | 54 | 135 | 244 | 15 | 179 | 80 | 1,151 | 127 |
- 1,151/256=4.496(四舍五入為4)
- 4x256=1,024
- 1,151-1,024=127
- 循環(huán)冗余校驗(yàn)(CRC)——CRC在概念上類(lèi)似于校驗(yàn)和,但它們使用多項(xiàng)式除法來(lái)確定CRC的值,其長(zhǎng)度通常為16或32位。CRC的優(yōu)勢(shì)在于它非常精確。如果有一個(gè)位不正確,CRC值就不匹配。校驗(yàn)和與CRC都可以很好地防止傳輸中的隨機(jī)誤差,但對(duì)于避免您的數(shù)據(jù)受到有意攻擊而提供的保護(hù)很少。對(duì)稱(chēng)和公鑰加密技術(shù)則要安全得多。
所有這些過(guò)程結(jié)合在一起,為您提供所需的各種工具以確保通過(guò)互聯(lián)網(wǎng)發(fā)送和接收的信息的安全性。事實(shí)上,通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)發(fā)送信息通常比任何其他發(fā)送方法都安全得多。電話(huà)(尤其是無(wú)繩電話(huà))極易被竊聽(tīng),特別是被不道德的人使用無(wú)線(xiàn)電掃描儀竊聽(tīng)。傳統(tǒng)郵件和其他物理介質(zhì)在到達(dá)目的地之前通常會(huì)由許多人經(jīng)手,從而增加了被損壞的可能性。了解加密,并確保您通過(guò)互聯(lián)網(wǎng)發(fā)送的任何機(jī)密信息的安全(切記“https”和掛鎖符號(hào)),會(huì)讓您更放心。
[責(zé)任編輯:小敏]
評(píng)論
查看更多