安全加密在IC領(lǐng)域也是相當(dāng)重要的部分了,這次我們簡(jiǎn)單了解下經(jīng)典加密算法,DES和AES。
DES簡(jiǎn)介
DES全稱為Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法。DES加密算法出自IBM的研究,1977年被美國(guó)聯(lián)邦政府的國(guó)家標(biāo)準(zhǔn)局確定為聯(lián)邦資料處理標(biāo)準(zhǔn)(FIPS),并授權(quán)在非密級(jí)政府通信中使用,之后開(kāi)始廣泛流傳,但是近些年使用越來(lái)越少,因?yàn)镈ES使用56位密鑰(密鑰長(zhǎng)度越長(zhǎng)越安全),隨著現(xiàn)代計(jì)算能力的提升,破解難度越來(lái)越低。對(duì)于加密算法而言,這意味著它將慢慢淡出主流。
DES安全性
(1)如果DES密鑰太短經(jīng)不起窮盡攻擊。
(2)DES存在弱密鑰和半弱密鑰。
不過(guò),在某些簡(jiǎn)單應(yīng)用中,DES加密算法還是有使用空間的。
DES算法的入口參數(shù)有三個(gè):Key、Data、Mode。
·其中Key為8個(gè)字節(jié)共64位,是DES算法的工作密鑰;
·Data也為8個(gè)字節(jié)64位,是要被加密或被解密的數(shù)據(jù);
·Mode為DES的工作方式,有兩種:加密或解密。
DES算法是這樣工作的:
如Mode為加密,則用Key 去把數(shù)據(jù)Data進(jìn)行加密, 生成Data的密碼形式(64位)作為DES的輸出結(jié)果;
如Mode為解密,則用Key去把密碼形式的數(shù)據(jù)Data解密,還原為Data的明碼形式(64位)作為DES的輸出結(jié)果。
DES算法為密碼體制中的對(duì)稱密碼體制,又被稱為美國(guó)數(shù)據(jù)加密標(biāo)準(zhǔn)。
DES是一個(gè)分組加密算法,典型的DES以64位為分組對(duì)數(shù)據(jù)加密,加密和解密用的是同一個(gè)算法。
密鑰長(zhǎng)64位,密鑰事實(shí)上是56位參與DES運(yùn)算(第8、16、24、32、40、48、56、64位是校驗(yàn)位,使得每個(gè)密鑰都有奇數(shù)個(gè)1),分組后的明文組和56位的密鑰按位替代或交換的方法形成密文組。
DES加密
初始置換IP
將64 bit明文的位置進(jìn)行置換,得到一個(gè)亂序的64 bit明文組,而后分成左右兩段,每段為32bit,以L0和R0表示,IP中各列元素位置號(hào)數(shù)相差為8,相當(dāng)于將原明文各字節(jié)按列寫(xiě)出,各列比特經(jīng)過(guò)偶采樣和奇采樣置換后,再對(duì)各行進(jìn)行逆序。
1. 初始置換IP作用是:將64位明文打亂重新排列。如,初始置換IP就是將原名來(lái)64位明文數(shù)據(jù)的第58位換到第1位,原來(lái)的50位換到第2位,…,依次類推。
2.初始置換結(jié)果分為兩組:左L0(32位)、右R0(32位)
初始置換表
乘積變換
乘積變換是DES算法的核心部分,此步驟需要經(jīng)歷16輪,而且每一輪變換都需要一個(gè)48bit子密鑰,共需要16個(gè)48bit密鑰。將經(jīng)過(guò)IP置換后的數(shù)據(jù)分成32 bit的左右兩組,在迭代過(guò)程中彼此左右交換位置。
每次迭代時(shí)只對(duì)右邊的32 bit進(jìn)行一系列的加密變換,在此輪迭代即將結(jié)束時(shí),把左邊的32 bit與右邊得到的32bit做異或運(yùn)算,作為下一輪迭代時(shí)右邊的段,并將原來(lái)右邊未經(jīng)變換的段直接送到左邊的寄存器中作為下一輪迭代時(shí)左邊的段。
在每一輪迭代時(shí),右邊的段要經(jīng)過(guò)選擇擴(kuò)展運(yùn)算E、密鑰加密運(yùn)算、選擇壓縮運(yùn)算S、置換運(yùn)算P和左右數(shù)據(jù)段的異或運(yùn)算。
乘積變換中的加密變換
(1)選擇擴(kuò)展運(yùn)算E
選擇擴(kuò)展運(yùn)算E
選擇擴(kuò)展運(yùn)算效果圖
(2)獲取子密鑰進(jìn)行加密運(yùn)算
子密鑰產(chǎn)生算法
1) 置換1
置換1后的效果
2) 循環(huán)左移
每個(gè)寄存器所需移動(dòng)的數(shù)據(jù)位數(shù)
3) 壓縮置換
壓縮置換表
(3)選擇壓縮算法S
S盒信息
(4)置換運(yùn)算P
P盒置換表
逆初始置換
逆初始置換是DES加密過(guò)程的最后一步,它的作用打亂重排第十六次加密迭代的結(jié)果然后形成64位密文。
1. 把64位中間密文打亂重排。初始置換IP與逆初始置換是互逆的。如,在IP中把輸入的第2位置換到第8位,而在逆初始置換中,把輸入的第8位置換到第2位。
2. 形成最終的64位密文。
3DES簡(jiǎn)介
3DES是DES加密算法的一種模式,它使用3條64位的密鑰對(duì)數(shù)據(jù)進(jìn)行三次加密。數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)是美國(guó)的一種由來(lái)已久的加密標(biāo)準(zhǔn),它使用對(duì)稱密鑰加密法。
另起一段對(duì)它進(jìn)行簡(jiǎn)單介紹的原因,是因?yàn)樗厥獾膬r(jià)值:承上啟下。
3DES(Triple DES)是DES向AES過(guò)渡的加密算法,是DES的一個(gè)更安全的變形。它以DES為基本模塊,通過(guò)組合分組方法設(shè)計(jì)出分組加密算法。
3DES有兩種加密方式:
1. 第一、三次加密使用同一種密鑰,這種方式密鑰長(zhǎng)度128位(112位有效)
2. 三次加密使用不同密鑰,這種方式密鑰長(zhǎng)度192位(168位有效)
3DES的密鑰長(zhǎng)度為24個(gè)字節(jié),而 DES 的密鑰長(zhǎng)度為8的倍數(shù),比如8,16,24都可以。
AES簡(jiǎn)介
AES,Advanced Encryption Standard,高級(jí)加密標(biāo)準(zhǔn),在密碼學(xué)中又稱Rijndael加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。它的出現(xiàn)主要是為了取代DES加密算法。
雖然出現(xiàn)了3DES的加密方法,但由于它的加密時(shí)間是DES算法的3倍多,64Bit的分組大小相對(duì)較小,所以還是不能滿足人們對(duì)安全性的要求。
1997年,美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所宣布希望征集高級(jí)加密標(biāo)準(zhǔn),最終5個(gè)候選算法進(jìn)入最后一輪:Rijndael,Serpent,Twofish,RC6和MARS。而Rijndael算法笑到了最后。
AES原本指的是一套標(biāo)準(zhǔn)FIPS 197,而AES算法一般指分組大小為128bits的Rijndeal算法。這也是AES與Rijndeal的一個(gè)區(qū)別。
AES與R的區(qū)別
下面簡(jiǎn)單介紹下各個(gè)部分的作用與意義:
明文P
沒(méi)有經(jīng)過(guò)加密的數(shù)據(jù)。
密鑰K
用來(lái)加密明文的密碼,在對(duì)稱加密算法中,加密與解密的密鑰是相同的。密鑰為接收方與發(fā)送方協(xié)商產(chǎn)生,但不可以直接在網(wǎng)絡(luò)上傳輸,否則會(huì)導(dǎo)致密鑰泄漏,通常是通過(guò)非對(duì)稱加密算法加密密鑰,然后再通過(guò)網(wǎng)絡(luò)傳輸給對(duì)方,或者直接面對(duì)面商量密鑰。密鑰是絕對(duì)不可以泄漏的,否則會(huì)被攻擊者還原密文,竊取機(jī)密數(shù)據(jù)。
AES加密函數(shù)
設(shè)AES加密函數(shù)為E,則 C = E(K, P),其中P為明文,K為密鑰,C為密文。也就是說(shuō),把明文P和密鑰K作為加密函數(shù)的參數(shù)輸入,則加密函數(shù)E會(huì)輸出密文C。
密文C
經(jīng)加密函數(shù)處理后的數(shù)據(jù)
AES解密函數(shù)
設(shè)AES解密函數(shù)為D,則 P = D(K, C),其中C為密文,K為密鑰,P為明文。也就是說(shuō),把密文C和密鑰K作為解密函數(shù)的參數(shù)輸入,則解密函數(shù)會(huì)輸出明文P。
在這里簡(jiǎn)單介紹下對(duì)稱加密算法與非對(duì)稱加密算法的區(qū)別。
對(duì)稱加密算法
加密和解密用到的密鑰是相同的,這種加密方式加密速度非???,適合經(jīng)常發(fā)送數(shù)據(jù)的場(chǎng)合。缺點(diǎn)是密鑰的傳輸比較麻煩。
非對(duì)稱加密算法
加密和解密用的密鑰是不同的,這種加密方式是用數(shù)學(xué)上的難解問(wèn)題構(gòu)造的,通常加密解密的速度比較慢,適合偶爾發(fā)送數(shù)據(jù)的場(chǎng)合。優(yōu)點(diǎn)是密鑰傳輸方便。常見(jiàn)的非對(duì)稱加密算法為RSA、ECC和EIGamal。
AES的基本結(jié)構(gòu)
AES為分組密碼,分組密碼也就是把明文分成一組一組的,每組長(zhǎng)度相等,每次加密一組數(shù)據(jù),直到加密完整個(gè)明文。在AES標(biāo)準(zhǔn)規(guī)范中,分組長(zhǎng)度只能是128位,也就是說(shuō),每個(gè)分組為16個(gè)字節(jié)(每個(gè)字節(jié)8位)。
密鑰的長(zhǎng)度可以使用128位、192位或256位。密鑰的長(zhǎng)度不同,推薦加密輪數(shù)也不同,如下表所示:
AES加密有AES-128、AES-192、AES-256三種,分別對(duì)應(yīng)三種密鑰長(zhǎng)度128bits(16字節(jié))、192bits(24字節(jié))、256bits(32字節(jié))。當(dāng)然,密鑰越長(zhǎng),安全性越高,加解密花費(fèi)時(shí)間也越長(zhǎng)。
默認(rèn)的是 AES-128,其安全性完全夠用。
這里實(shí)現(xiàn)的是AES-128,也就是密鑰的長(zhǎng)度為128位,加密輪數(shù)為10輪。
AES的加密公式為C = E(K,P),在加密函數(shù)E中,會(huì)執(zhí)行一個(gè)輪函數(shù),并且執(zhí)行10次這個(gè)輪函數(shù),這個(gè)輪函數(shù)的前9次執(zhí)行的操作是一樣的,只有第10次有所不同。也就是說(shuō),一個(gè)明文分組會(huì)被加密10輪。AES的核心就是實(shí)現(xiàn)一輪中的所有操作。
AES的處理單位是字節(jié),128位的輸入明文分組P和輸入密鑰K都被分成16個(gè)字節(jié),分別記為P = P0 P1 … P15 和 K = K0 K1 … K15。如,明文分組為P = abcdefghijklmnop,其中的字符a對(duì)應(yīng)P0,p對(duì)應(yīng)P15。
一般地,明文分組用字節(jié)為單位的正方形矩陣描述,稱為狀態(tài)矩陣。在算法的每一輪中,狀態(tài)矩陣的內(nèi)容不斷發(fā)生變化,最后的結(jié)果作為密文輸出。
該矩陣中字節(jié)的排列順序?yàn)閺纳系较?、從左至右依次排列,如下圖所示:
分組密碼體制
所謂分組密碼體制就是指將明文切成一段一段的來(lái)加密,然后再把一段一段的密文拼起來(lái)形成最終密文的加密方式。AES 采用分組密碼體制,即 AES 加密會(huì)首先把明文切成一段一段的,而且每段數(shù)據(jù)的長(zhǎng)度要求必須是128位16個(gè)字節(jié),如果最后一段不夠16個(gè)字節(jié)了,就需要用 Padding 來(lái)把這段數(shù)據(jù)填滿16個(gè)字節(jié),然后分別對(duì)每段數(shù)據(jù)進(jìn)行加密,最后再把每段加密數(shù)據(jù)拼起來(lái)形成最終的密文。
初始向量IV
初始向量 IV 的作用是使加密更加安全可靠,我們使用 AES 加密時(shí)需要主動(dòng)提供初始向量,而且只需要提供一個(gè)初始向量就夠了,后面每段數(shù)據(jù)的加密向量都是前面一段的密文。初始向量 IV 的長(zhǎng)度規(guī)定為128位16個(gè)字節(jié),初始向量的來(lái)源為隨機(jī)生成。
AES加密模式
AES只是個(gè)基本算法,實(shí)現(xiàn)AES有幾種加密模式。分組密碼有五種工作體制:1.電碼本模式(Electronic Codebook Book (ECB));2.密碼分組鏈接模式(Cipher Block Chaining (CBC));3.計(jì)算器模式(Counter (CTR));4.密碼反饋模式(Cipher FeedBack (CFB));5.輸出反饋模式(Output FeedBack (OFB))。
ECB模式(電子密碼本模式:Electronic codebook)
ECB是最簡(jiǎn)單的塊密碼加密模式,加密前根據(jù)加密塊大?。ㄈ鏏ES為128位)分成若干塊,之后將每塊使用相同的密鑰單獨(dú)加密,解密同理。
CBC模式(密碼分組鏈接:Cipher-block chaining)
CBC模式對(duì)于每個(gè)待加密的密碼塊在加密前會(huì)先與前一個(gè)密碼塊的密文異或然后再用加密器加密。第一個(gè)明文塊與一個(gè)叫初始化向量的數(shù)據(jù)塊異或。
CFB模式(密文反饋:Cipher feedback)
與ECB和CBC模式只能夠加密塊數(shù)據(jù)不同,CFB能夠?qū)K密文(Block Cipher)轉(zhuǎn)換為流密文(Stream Cipher)。
OFB模式(輸出反饋:Output feedback)
OFB是先用塊加密器生成密鑰流(Keystream),然后再將密鑰流與明文流異或得到密文流,解密是先用塊加密器生成密鑰流,再將密鑰流與密文流異或得到明文,由于異或操作的對(duì)稱性所以加密和解密的流程是完全一樣的。
CTR模式(計(jì)數(shù)器:Counter)
計(jì)數(shù)器模式不常見(jiàn),在CTR模式中, 有一個(gè)自增的算子,這個(gè)算子用密鑰加密之后的輸出和明文異或的結(jié)果得到密文,相當(dāng)于一次一密。這種加密方式簡(jiǎn)單快速,安全可靠,而且可以并行加密,但是在計(jì)數(shù)器不能維持很長(zhǎng)的情況下,密鑰只能使用一次。
AES有五種加密模式,我們一般使用的是CBC模式,而ECB則相對(duì)不安全。ECB 模式是最基本的加密模式,僅僅使用明文和密鑰來(lái)加密數(shù)據(jù),相同的明文塊會(huì)被加密成相同的密文塊,這樣明文和密文的結(jié)構(gòu)將是完全一樣的,就會(huì)更容易被破解,相對(duì)來(lái)說(shuō)不是那么安全,因此很少使用。
而CBC模式則比 ECB模式多了一個(gè)初始向量 IV,加密的時(shí)候,第一個(gè)明文塊會(huì)首先和初始向量 IV 做異或操作,然后再經(jīng)過(guò)密鑰加密,然后第一個(gè)密文塊又會(huì)作為第二個(gè)明文塊的加密向量來(lái)異或,依次類推下去,這樣相同的明文塊加密出的密文塊就是不同的,明文的結(jié)構(gòu)和密文的結(jié)構(gòu)也將是不同的,因此更加安全,因而我們常用的就是CBC加密模式。
AES加密
開(kāi)始加密,進(jìn)入4個(gè)輪函數(shù):
1、AddRoundKey:輪密鑰加運(yùn)算
2、ByteSub:字節(jié)變換 (S盒變換)
3、ShiftRows:行變換
4、MixColumns:列變換
輪密鑰加 / AddRoundKey
簡(jiǎn)單的把當(dāng)前狀態(tài) (state) 與擴(kuò)展密鑰進(jìn)行按位異或
字節(jié)變換 / ByteSub
這一步就是將state中每一個(gè)字節(jié)替換為S_box中的對(duì)應(yīng)字節(jié)。S_box是一個(gè)有256個(gè)元素的一維數(shù)組,直接查找當(dāng)前字節(jié)所對(duì)應(yīng)的新的字節(jié)并替換即可。
行變換 / ShiftRow
這個(gè)就比較好理解了,就是把每行左環(huán)移,第一行不變,第二行環(huán)移1位,第三行環(huán)移2位,第三行環(huán)移3位。
列混合 / MixColumn
這是整個(gè)AES加密流程中最復(fù)雜的一步,同時(shí)要應(yīng)用到之前在S盒變換里提到過(guò)的GF(256)域,如果真的想要理解這一步的話建議先去仔細(xì)了解一下GF(256)再來(lái)繼續(xù)閱讀,此處不多加闡述。
密鑰擴(kuò)展 / KeyExpansion
萬(wàn)事俱備,只欠東風(fēng)。4個(gè)輪函數(shù)已經(jīng)全部齊了,現(xiàn)在只差一步——密鑰擴(kuò)展。
簡(jiǎn)述DES與AES的區(qū)別
AES中的S盒運(yùn)用了GF(28)的數(shù)學(xué)基礎(chǔ),DES中的S盒主要是為了確保非線性。與DES相比,AES用到了非常深的數(shù)學(xué)基礎(chǔ)。
與AES算法相比,DES在參數(shù)特性方面主要區(qū)別體現(xiàn)在以下幾個(gè)方面:
1、DES的數(shù)據(jù)塊大小為8個(gè)字節(jié),而AES的數(shù)據(jù)塊大小為16個(gè)字節(jié)。
2、DES的密鑰長(zhǎng)度是64位(其中8位用于校驗(yàn)),而AES的密鑰長(zhǎng)度是128位(AES算法比DES算法更安全)。
3、這兩種算法在加/解方面的具體原理是不一樣的,但DES加密算法的塊大小及密鑰長(zhǎng)度都不能滿足現(xiàn)在的安全需求了,就像最開(kāi)始提到的那樣,所以現(xiàn)在比較少使用這種加密算法,而是使用像AES或者3DES之類更高級(jí)的加密算法。
審核編輯:劉清
-
AES
+關(guān)注
關(guān)注
0文章
104瀏覽量
33287 -
DES
+關(guān)注
關(guān)注
0文章
64瀏覽量
48301 -
加密算法
+關(guān)注
關(guān)注
0文章
216瀏覽量
25586 -
加解密
+關(guān)注
關(guān)注
0文章
18瀏覽量
6559
原文標(biāo)題:科普:簡(jiǎn)述DES與AES的區(qū)別
文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何設(shè)計(jì)一個(gè)基于FPGA的DES加密算法系統(tǒng)
加密算法(DES,AES,RSA,MD5,SHA1,Base64)
最強(qiáng)加密算法?AES加密算法的Matlab和Verilog實(shí)現(xiàn) 精選資料推薦
des加密算法代碼
地圖數(shù)據(jù)網(wǎng)絡(luò)分發(fā)的混合加密算法
基于蔡氏電路和DES的圖像加密算法
DES、AES、TEA加密算法的比較
AES加密算法說(shuō)明
c語(yǔ)言實(shí)現(xiàn)des加密算法詳細(xì)過(guò)程
![c語(yǔ)言實(shí)現(xiàn)<b class='flag-5'>des</b><b class='flag-5'>加密算法</b>詳細(xì)過(guò)程](https://file1.elecfans.com//web2/M00/A7/0F/wKgZomUMQh2ARHgpAAATzM4ygAc290.jpg)
用matlab實(shí)現(xiàn)AES加密算法
![用matlab實(shí)現(xiàn)<b class='flag-5'>AES</b><b class='flag-5'>加密算法</b>](https://file.elecfans.com/web1/M00/51/7E/pIYBAFsHuLaAbvW2AAAeXsYBKS0711.png)
評(píng)論