加密技術及流行加密演算法

2021-04-15 10:28:20 字數 4673 閱讀 7338

深入淺出談加密

加密技術已經滲透進了整個資訊時代,任何人都不可避免地要接觸到——即使你根本不知道「加密」是什麼。銀行卡、登入計算機的口令、電子郵件的賬號密碼……無一例外地跟加密技術緊緊聯絡在一起。

任何乙個安全專家提起如今資訊科技的安全保護措施,都不可避免要涉及乙個詞:加密(encrypt)。的確,縱觀當今資訊世界,加密離我們並不遙遠,從小小的個人密碼,到重要機密檔案,無一不是經過加密後的產物。

許多人一提起「加密」,都會有一種畏懼心理,以為加密技術絕對是「新手勿近」的尖端科技。其實不然,加密實際上一直陪伴在你一生的成長之中,回憶一下小時候很多人都玩過的智力遊戲:007收到遇害同事的字條,上面寫著4fefkkiljk81ip,根據事先約定,已知c=3、q=h,問該同事要傳遞什麼資訊給007?如果把這道題目放到資訊科技領域來看待,就是一條經過簡單替換字元演算法加密的字串,它把原始字元改為使用相對應的數字排序來替代,從而產生了一組「沒有意義」的字元組合,但是因為我們知道c=3等若干條件,所以稍加排序即可得到這樣的句子:do not trust hary,這個過程也被稱為「解密」(decrypt)。

有些讀者也許會不屑一顧,就這麼簡單的遊戲也算加密?別忘了,我們是在已經知道「c=3」的前提下完成「解密」的,換句話說,也就是已經知道了「演算法」,否則光憑以上一組不知所云的字串,誰能解開其中的秘密?

加密和解密

「就不讓你直接看到資訊」——將與之相似的思路加以擴充,便成了「加密」的來由;而拓展「我偏要看到你不想讓我看的資訊」的思想,則發展出了「解密」技術。加密和解密從誕生之日起,就是一對不可分割的難兄難弟。

加密作為保障資料安全的一種方式,很早就出現在人類的資訊傳遞中,從遠古時代開始,人們就已經在採用一種如今稱為「編碼」(code)的方法用於保護文字資訊。最早影響全世界的加密技術誕生於戰爭年代,由德國人發明,用於傳遞情報資訊;而最早影響全世界的解密技術,也誕生於戰爭年代,由英美人開發出來用於破譯德國人的情報資訊。正是戰爭讓加解密技術不斷改進發展,直到現在,加密技術仍然在為資訊時代的資料安全服務。

說了這麼多,也該為加密技術做乙個較為準確而科學的概念了,所謂「加密」,就是對原內容為明文的檔案或資料按某種演算法進行處理,使其成為不可讀的**,經過這樣處理的資料通常稱為「密文」,密文只能在經過相對應的反向演算法處理後才能恢復原來的內容,通過這樣的途徑來達到保護資料不被非法竊取、閱讀的目的,而將該編碼資訊轉化為其原來資料的過程,就是「解密」。

無論哪乙個國家,都會有專家專注於加密技術的研究,因此也就出現了形形色色的加密演算法,這些加密演算法按照生物界「弱肉強食」的定律發展並完善著。其中,強度高(不容易被破解)的演算法得以保留和繼續發展,強度低的演算法最終被時間淘汰。除了一些公開的加密演算法之外,也存在著一部分未公開的私人加密演算法。通常我們提及加密技術時所說的「md5加密」、「sha-1加密」、「rsa加密」等,其實就是在說它們所採用的演算法。

演算法:關鍵的抉擇

「我想要葡萄,還想要橙子,可是我只能選擇其中一樣,我該選哪個?」如果要為自己的資料加密,我們就不得不面對這樣乙個選擇,因為世界上的演算法不止乙個,究竟什麼演算法才是最適合的呢?於是,我們逐漸陷入乙個選擇的泥潭中。其實,在選擇使用哪種演算法作為你的加密基礎前,如果能對各種常見演算法的原理有個大概的了解,相信你就不會感到那麼迷茫了。

基於「訊息摘要」的演算法

「訊息摘要」(message digest)是一種能產生特殊輸出格式的演算法,這種加密演算法的特點是:無論使用者輸入什麼長度的原始資料,經過計算後輸出的密文都是固定長度的,這種演算法的原理是根據一定的運算規則對原資料進行某種形式的提取,這種提取就是「摘要」,被「摘要」的資料內容與原資料有密切聯絡,只要原資料稍有改變,輸出的「摘要」便完全不同,因此,基於這種原理的演算法便能對資料完整性提供較為健全的保障。但是,由於輸出的密文是提取原資料經過處理的定長值,所以它已經不能還原為原資料,即訊息摘要演算法是「不可逆」的,理論上無法通過反向運算取得原資料內容,因此它通常只能被用來做資料完整性驗證,而不能作為原資料內容的加密方案使用,否則誰也無法還原。儘管如此,「訊息摘要」演算法還是為密碼學提供了健全的防禦體系,因為連專家也無法根據攔截到的密文還原出原來的內容。

如今常用的「訊息摘要」演算法經歷了多年驗證發展而保留下來的演算法已經不多,這其中包括md2、md4、md5、sha、sha-1/256/383/512等,其中最廣泛應用的是基於md4發展而來的md5演算法。

md5演算法

由於「摘要」演算法加密的資料僅僅能作為一種身份驗證的憑據使用,如果我們要對整個文件資料進行加密,就不能採用這種「不可逆」的演算法了。「金鑰」演算法(key encoding)的概念因此而被提出,與開頭提到的智力題類似,此類演算法通過乙個被稱為「金鑰」的憑據進行資料加密處理,接收方通過加密時使用的「金鑰」字串進行解密,即雙方持有的「密碼」相同(對稱)。如果接收方不能提供正確的「金鑰」,解密出來的就不是原來的資料了。

以上是「對稱金鑰」的概念,那麼「非對稱金鑰」又該怎麼理解呢?有人用郵箱作為比喻,任何人都可以從郵箱的信封入口塞進信件,但是取信的權力卻僅僅在於持有郵箱鑰匙的人的手上。這個眾人皆知的信封入口就是「公鑰」(public key),而你持有的郵箱鑰匙就是「私鑰」(private key)。這種演算法規定,對方給你傳送資料前,可以用「公鑰」加密後再發給你,但是這個「公鑰」也無法解開它自己加密的資料,即加密過程是單向的,這樣即使資料被途中攔截,入侵者也無法對其進行破解,能還原資料內容的只有「私鑰」的持有者,這就是「非對稱金鑰」加密演算法,也稱為「公共金鑰演算法」。

你也許會想,這兩種形式加密出來的資料如果稍加耐心進行分析,一定能找到變化規律從而直接破解。這個想法沒錯,但是專家早就思考過這個可能性了,因此這種演算法雖然是採用某個字串作為憑據進行加密操作的,可是它可能把憑據拆分為多個不同的「子段」並進行多次運算,最終的結果就是讓你難以發現變化的規律,破解也就難上加難。

基於「對稱金鑰」的加密演算法主要有des、tripledes、rc2、rc4、rc5和blowfish等;基於「非對稱金鑰」的加密演算法主要有rsa、diffie-hellman等。

對稱金鑰:des、tripledes演算法

美國國家標準局在2023年開始研究除國防部以外其他部門的計算機系統的資料加密標準,最終選用了ibm公司設計的方案作為非機密資料的正式資料加密標準(des即data encryption standard)。des演算法從誕生開始,就被各個領域廣泛採用,包括atm櫃員機、pos系統、收費站等,des以它高強度的保密性能為大眾服務,那麼,它是如何工作的呢?

des演算法把64位的明文輸入塊變為64位的密文輸出塊,它所使用的金鑰也是64位。首先,des把輸入的64位資料塊按位重新組合,並把輸出分為l0、r0兩部分,每部分各長32位,並進行前後置換,最終由l0輸出左32位,r0輸出右32位,根據這個法則經過16次迭代運算後,得到l16、r16,將此作為輸入,進行與初始置換相反的逆置換,即得到密文輸出。

des演算法具有極高的安全性,到目前為止,除了用窮舉搜尋法對des演算法進行攻擊外,還沒有發現更有效的辦法,而56位長金鑰的窮舉空間為256,這意味著如果一台計算機的速度是每秒種檢測100萬個金鑰,那麼它搜尋完全部金鑰就需要將近2023年的時間,因此des演算法是一種很可靠的加密方法。

對稱金鑰:rc演算法

rc系列演算法是大名鼎鼎的rsa三人組設計的金鑰長度可變的流加密演算法,其中最流行的是rc4演算法,rc系列演算法可以使用2048位的金鑰,該演算法的速度可以達到des加密的10倍左右。

rc4演算法的原理是「攪亂」, 它包括初始化演算法和偽隨機子密碼生成演算法兩大部分,在初始化的過程中,金鑰的主要功能是將乙個256位元組的初始數簇進行隨機攪亂,不同的數簇在經過偽隨機子密碼生成演算法的處理後可以得到不同的子金鑰序列,將得到的子金鑰序列和明文進行異或運算(xor)後,得到密文。

由於rc4演算法加密採用的是異或方式,所以,一旦子金鑰序列出現了重複,密文就有可能被破解,但是目前還沒有發現金鑰長度達到128位的rc4有重複的可能性,所以,rc4也是目前最安全的加密演算法之一。

非對稱金鑰:rsa演算法

rsa演算法是目前最流行的公鑰密碼演算法,它使用長度可以變化的金鑰。rsa是第乙個既能用於資料加密也能用於數字簽名的演算法。

rsa演算法的原理如下:

1.隨機選擇兩個大質數p和q,p不等於q,計算n=pq;

2.選擇乙個大於1小於n的自然數e,e必須與(p-1)×(q-1)互素。

3.用公式計算出d:d×e = 1 (mod (p-1)×(q-1)) 。

4.銷毀p和q。

最終得到的n和e就是「公鑰」,d就是「私鑰」,傳送方使用n去加密資料,接收方只有使用d才能解開資料內容。

rsa的安全性依賴於大數分解,小於1024位的n已經被證明是不安全的,而且由於rsa演算法進行的都是大數計算,使得rsa最快的情況也比des慢上好幾倍,這也是rsa最大的缺陷,因此它通常只能用於加密少量資料或者加密金鑰。需要注意的是,rsa演算法的安全性只是一種計算安全性,絕不是無條件的安全性,這是由它的理論基礎決定的。因此,在實現rsa演算法的過程中,每一步都應盡量從安全性方面考慮。

小密碼,大學問

隨著資訊化走進千家萬戶,人們越來越關注自己的資料安全,而資料安全除了在攻防體系上必須有所保障以外,關鍵的一點就是要對其進行強度夠高的加密,進一步減小資料被盜竊後的損失。這一觀點早已在網路論壇的發展中得到了證實,早期的論壇資料庫都是未經過加密處理就直接儲存的,在這個前提下,只要入侵者拿到了資料庫,就等於拿到了整個論壇,因為密碼欄位是明文形式的。有些重要的**甚至使用一些後台沒有提供資料加密方案的程式做站點,這是非常不明智的。

確定了加密方案後,有些人就自己寫演算法進行資料加密,殊不知這也算產生了安全隱患,通常個人無法寫出高強度的加密演算法,入侵者如果稍加分析便能破譯內容,你的辛苦也就付之東流。相反,如果採用在國際得到安全認證的流行加密方案,資料安全反而提高了,何樂而不為?

加密解密技術 對稱演算法加密

一 什麼是對稱演算法?對稱演算法也被稱作單金鑰演算法,也就是加密金鑰能從解密金鑰中推算出來,同樣解密金鑰也能從加密金鑰中推算出來,說白了,就是加密金鑰和解密金鑰是同乙個金鑰,對稱演算法的安全性依賴於金鑰,金鑰被人知道了,都能對訊息進行加密和解密 二 對稱演算法的加密和解密表示法 m表示明文,e表示加...

加密解密技術 對稱演算法加密

一 什麼是對稱演算法?對稱演算法也被稱作單金鑰演算法,也就是加密金鑰能從解密金鑰中推算出來,同樣解密金鑰也能從加密金鑰中推算出來,說白了,就是加密金鑰和解密金鑰是同乙個金鑰,對稱演算法的安全性依賴於金鑰,金鑰被人知道了,都能對訊息進行加密和解密 二 對稱演算法的加密和解密表示法 m表示明文,e表示加...

常見加密演算法及常見加密演算法簡述

通訊雙方即a與b,a傳送資料給b 加密過程 解釋 即便第三方將a傳送給b的資料截獲了,也無法破解資料,因為想要解密密文資料,就需要知道對稱秘鑰,想得到對稱秘鑰就需要知道b的私鑰,其他人是沒有b的私鑰的,所以通過這種方式保證了資料的私密性。如果保管b的私鑰,不是這裡要考慮的問題了 解密過程 以上僅是點...