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