首頁  >  文章  >  系統教程  >  歷史上的加密演算法

歷史上的加密演算法

PHPz
PHPz轉載
2023-12-31 19:23:50737瀏覽
導讀 作為一種安全手段,加密演算法和我們大多數人的生活發生著緊密聯繫。只要你上網,都會從中受益,因為凡是使用 https 的網站都已經使用了加密協定 TLS/SSL。因此,我們都在被動享受加密演算法帶來的隱私保護及通訊安全。此外,從安全技術層面,網路層到主機文件層,無論哪層加密應用或協定背後都是由各種加密演算法支撐。

本文就嘗試由古及今,對這種與我們網路生活息息相關的加密演算法的發展演變,以及在整個過程中先後出現的集中關鍵加密演算法一一論述,帶領大家了解背後這種有趣的演算法.

加密演算法主要作用是把明文變成密文,防止資訊外洩。加密後的密文看起來和亂碼很像,但卻不是亂碼。大部分亂碼是因為編碼不一致導致的,編碼不屬於加密演算法,只是改變了顯示格式而已。比如,base64 只是一種編碼而已,不能保障明文安全。以後聽到 base64 加密的說法,表示他們不專業。

加密演算法需要保證以下三點:

1.機密性:保證資料即使被偷取,小偷也不知道是啥。

2.完整性:保證資料在傳輸過程中即使被劫持修改,接收方能夠發現資訊已被截取,而選擇換掉。

3.可用性:保證加密演算法的開銷、複雜度都在可用範圍。

滿足上述要求的加密演算法經歷了從古典密碼過渡到現代密碼的漫長歷史發展時期。

古代人如何加密? 1、史上最早的加密演算法

替代法
最早的加密演算法主要用於軍事,歷史上最早關於加密演算法的記載出自於周朝兵書《六韜.龍韜》中的《陰符》和《陰書》。其中記載:

太公曰:「主與將,有陰符,凡八等。有大勝克敵之符,長一尺。破軍擒將之符,長九寸。降城得邑之符,長八寸。卻敵報遠之符,長七寸。警眾堅守之符,長六寸。請糧益兵之符,長五寸。敗軍亡將之符,長四寸。失利亡士之符,長三寸。諸奉使行符,稽留,若符事聞,洩告者,皆誅之。八符者,主將秘聞,所以陰通言語,不洩中外相知之術。敵雖聖智,莫之能識。」

武王問太公曰:「… 符不能明;相去遼遠,言語不通。為之奈何?」 太公曰:「諸有陰事大慮,當用書,不用符。主以書遺將,將以書問主。書皆一合而再離,三發而一知。再離者,分書為三部。三發而一知者,言三人,人操一分,相參而不相知情也。此謂陰書。敵雖聖智,莫之能識。」

簡單來說,陰符是以八等長度的符來表達不同的訊息和指令,屬於密碼學中的替代法,在應用中是把訊息轉變成敵人看不懂的符號,這種符號法只能表述最關鍵的八種意義。陰書作為陰符的補充,運用了文字拆分法直接把一份文字拆成三分,由三種渠道發送到目標方手中,敵人只有同時截獲三分內容才可能破解。

移位法
無獨有偶,在遙遠的西方加密演算法也大規模使用於戰爭之中。在希羅多德的《歷史》中記載了公元前五世紀,希臘城邦和波斯帝國頻頻交戰,希臘城邦中廣泛使用移位法對戰爭通訊信息進行加密處理,波斯帝國因此難以獲得對方軍事情報,無法提前做軍事部署。希臘城邦用來傳遞軍事訊息、命令的每段文字都有固定的字數,接密者手中會有一份文字移位說明。解密者拿到密文後,根據移位說明解密,破解軍事命令或訊息。

2、古代密碼演變的凱撒密碼

古典密碼主要採用行動法和替換法。其中,移位法就是讓明文都向固定方向移動特定位數,例如 I love you 右移動 4 位就變成了 M pszi csy。經過逐漸發展完善,最有名的莫過於凱撒密碼。但英文或拉丁文字母出現的頻率並不一致。以英文字母為例:字母e出現頻率明顯高過其他字母。獲得足夠密文樣本後,透過頻率計算準確找到移位規則,從而破解密文。於是大部分凱撒密碼採用替換法,定義一張明文密文映射表:

歷史上的加密演算法

#這種方式可在一定程度上解決密鑰可窮舉的問題,但仍對大數據量的頻率攻擊束手無策。後來該模式發展為靠引入一些特定參數來擾亂頻率,提高解密難度。

古典密碼後期發展出維吉尼亞密碼、ROT5/13/18/47、摩斯密碼等一系列密碼種類。但都是以替換法和移位法為核心基礎,安全性也主要是靠演算法不公開來保證。

現代人更科學的加密演算法

古典加密演算法本質上是語言學上模式的改變。直到20世紀中葉,香農發表了《秘密體制的通訊理論》一文,標誌著加密演算法的重心轉移到應用數學的轉移。於是,逐漸衍生出了當今重要的三類加密演算法:非對稱加密、對稱加密以及雜湊演算法。這三類演算法往往組合使用,以發揮最佳效果。

1、對稱加密演算法

#對稱加密演算法是使用最廣泛的加密演算法之一。常用的有 DES 演算法、AES 演算法、3DES 演算法、TDEA 演算法、Blowfish 演算法、RC5 演算法、IDEA 演算法等。其特點是,加密和解密兩方使用相同金鑰進行加、解密。依照原理不同,對稱加密可以大致分成流加密和分組加密兩種類型。

流加密
流加密是將明文按字元逐位地,對應地進行加密的一類對稱密碼演算法。明文和密鑰按位對其做約定的運算,即可獲得密文。流加密中以 RC4 和 GSM 兩種演算法最有名,最簡單的模型是異或流加密例,如:

歷史上的加密演算法

#流加密原理簡單,其演算法結構存在弱點,只要洩漏局部明文,攻擊者很容易算出密鑰。另外,由於是位元進行加密,攻擊者即使對資料進行竄改,也不會破壞原有資料結構,接收者很難發現其中變化。流加密雖然快速且高效,但其安全性較低,加密關鍵資訊不建議採用此方式。

分組加密
分組加密內部實作則複雜的多,每一個加密區塊都會經歷至少 16 輪運算,其代表演算法有 DES 和 AES。目前推薦使用 AES,DES已經不再安全。

DES

DES 是較早時期的對稱加密標準,核心主要分成初始置換、輪函數、逆置換三步,在當時得到了廣泛的應用。隨著電腦效能地不斷提高,暴力破解DES變得越來越容易。所以 DES 已經不再安全,近十幾年逐漸被 3DES 和 AES 取代。

AES

AES 已經被多方分析論證,在全世界廣泛使用,是目前最安全的對稱加密演算法之一。近十年,AES 已然成為對稱金鑰加密中最受歡迎的演算法之一。有別於 DES,AES 使用的是代換-置換網絡,而非 Feistel 架構。

大多數AES 計算是在一個特別的有限域內完成的,加密過程是在一個4×4 的位元組矩陣上運作,這個矩陣又稱為“狀態state”,其初值就是一個明文區塊。加密時,各輪 AES 加密循環(除最後一輪外)均包含 4 個步驟:

AddRoundKey-矩陣中的每個位元組都與該次輪密鑰round key做 XOR 運算;每個子密鑰由密鑰產生方案產生。

SubBytes-透過一個非線性取代函數,用查找表方式把每個位元組替換成對應位元組。

ShiftRows-將矩陣每個橫列進行循環式移位。

MixColumns-充分混合矩陣中各個直行的操作,使用線性轉換來混合每列的四個位元組。最後一個加密循環中省略 MixColumns 步驟,以另一個 ddRoundKey 取代。

加密模式

AES、DES 內部支援不同加密模式,每種模式的安全性和效率大不相同。兩種最常見模式 ECB 和 CBC 中,ECB 模式加密效率高,但安全性低,模式如下圖:

歷史上的加密演算法

#每次都是 Key 對單獨區塊進行加密,容易被對方破解。但由於每個模組之間毫無關聯,可以並發運算,大大提高加密效率。通常,ECB 的加密效率比 CBC 高 5-6 倍。但 CBC 較之 ECB 高,安全性則高得多。模式如下圖:

歷史上的加密演算法

#每塊加密引入一個不同的 IV,需要上一塊進行迭代,最終完成整個加密過程。由於每塊的 IV 和密文塊有關,所以無法採用並發模式,必須串行整個過程。若非出於極高的效能要求,建議採用更安全、可靠的 CBC 模式。

2、非對稱加密演算法

非對稱加密演算法和對稱加密演算法的最大區別在於,加密金鑰和解密金鑰不再是一個。這種方式主要為了回應「多個加密者,一個解密者」的模式。於是在這種多對一的關係中就出現了一個公鑰體系。一個公鑰對應一個私鑰。公鑰公開,任何資料發送者都用公鑰對資料進行加密,但公鑰加密的內容只有私鑰才能解開。背後的數學原理從大數分解到複雜的橢圓曲線上的離散對數問題,非常複雜。常見非對稱加密演算法包括 DSA 演算法、RSA 演算法、Elgamal 演算法、背包演算法、Rabin 演算法、D-H 演算法、ECC 演算法等。非對稱加密演算法的執行效率限制著該演算法的實際應用,因此大部分應用在身份驗證中,並不會在通訊中使用。

3、雜湊演算法

#哈希演算法也是非常常見的加密演算法之一。它不是用來做資料傳輸,而是對資料是否被篡改加以驗證,防止不法分子篡改資料。特點是無論原文多長都會變成固定長度的字串,只能加密不能解密(只能單向運算)。常見雜湊演算法包含 MD5、SHA-1 和 SHA 224/256/512 等。前兩者已被證明不再安全,建議使用 SHA 256/512 等安全性高的演算法。

上述加密演算法已廣泛應用在各個領域。

資料庫加密演算法

隨著雲端和大數據的高速發展,資料庫也逐漸從安全的區域網路環境,遷移到私有雲甚至公有雲。資料庫遷移到雲端上,面臨更嚴峻的安全挑戰。資料庫中保存關鍵數據,雲端主機存在眾多不安全隱患,所以雲端資料庫加密成為解決安全隱患的一劑良藥。

對稱加密演算法

不同於檔案加密和通訊加密,資料庫加密需要特別注意加密演算法是否存在膨脹性,並對加密演算法的效能有苛刻的要求。 2009 年,安華金和在進行資料庫加密產品研發時,首先排除對稱演算法中的流加密演算法,原因是這種演算法雖然在運作效率和解決資料膨脹上有天然優勢,但在一定情況下存在不安全性。

為了追求加密效率,目前國內仍有部分安全廠商採用這種方式,最基本的安全性要求卻被忽略。較穩健的做法是採用對稱加密中的分組加密(AES)進行相關加密處理。分組加密安全性高,在安全性方面比較有保障,但需要解決因資料區塊大小限制所帶來的膨脹問題。這需要根據具體情況或欄位設計足夠精妙的使用方案,來針對不同欄位或類型解決膨脹問題,最終形成完美的資料庫加密方案。

國產密碼演算法

密碼演算法是保障資訊安全的核心技術,對於國家機密及各產業核心資料的保護起到至關重要的作用,使用3DES、SHA-1、RSA 等國際通用的密碼演算法系統及相關標準,存在較大安全隱患。因此,國家相關機關和監管機構站在國家安全和長遠戰略的高度提出了推動國密演算法應用實施、加強產業安全可控的要求。目前國內的資料庫加密產品在面對用戶的選型評估時,相當一部分是以支援國密演算法為首要條件,這對政府、軍工、保密等相關產業用戶來說非常重要,國家資訊安全的保障必須擺脫對國外技術和產品的過度依賴,加密演算法作為關鍵安全技術更應國產化。

具體而言,國產密碼演算法指國家密碼局認定的國產商用密碼演算法,例如,在金融領域目前主要使用公開的 SM2、SM3、SM4 三類演算法。以 SM4 演算法為例:SM4 分組密碼演算法是我國自主設計的分組對稱密碼演算法,用於實現資料的加密/解密運算,以確保資料和資訊的機密性。要確保一個對稱密碼演算法的安全性的基本條件是其具備足夠的金鑰長度,SM4 演算法與 AES 演算法具有相同的金鑰長度分組長度 128 比特,因此在安全性上高於 3DES 演算法。

以上是歷史上的加密演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:linuxprobe.com。如有侵權,請聯絡admin@php.cn刪除