精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡單了解下經典加密算法DES和AES

ruikundianzi ? 來源:IP與SoC設計 ? 2023-03-07 11:39 ? 次閱讀

安全加密在IC領域也是相當重要的部分了,這次我們簡單了解下經典加密算法,DES和AES。

DES簡介

DES全稱為Data Encryption Standard,即數據加密標準,是一種使用密鑰加密的塊算法。DES加密算法出自IBM的研究,1977年被美國聯邦政府的國家標準局確定為聯邦資料處理標準(FIPS),并授權在非密級政府通信中使用,之后開始廣泛流傳,但是近些年使用越來越少,因為DES使用56位密鑰(密鑰長度越長越安全),隨著現代計算能力的提升,破解難度越來越低。對于加密算法而言,這意味著它將慢慢淡出主流。

DES安全性

(1)如果DES密鑰太短經不起窮盡攻擊。

(2)DES存在弱密鑰和半弱密鑰。

不過,在某些簡單應用中,DES加密算法還是有使用空間的。

DES算法的入口參數有三個:Key、Data、Mode。

·其中Key為8個字節共64位,是DES算法的工作密鑰;

·Data也為8個字節64位,是要被加密或被解密的數據;

·Mode為DES的工作方式,有兩種:加密或解密。

DES算法是這樣工作的:

如Mode為加密,則用Key 去把數據Data進行加密, 生成Data的密碼形式(64位)作為DES的輸出結果;

如Mode為解密,則用Key去把密碼形式的數據Data解密,還原為Data的明碼形式(64位)作為DES的輸出結果。

DES算法為密碼體制中的對稱密碼體制,又被稱為美國數據加密標準。

DES是一個分組加密算法,典型的DES以64位為分組對數據加密,加密和解密用的是同一個算法。

密鑰長64位,密鑰事實上是56位參與DES運算(第8、16、24、32、40、48、56、64位是校驗位,使得每個密鑰都有奇數個1),分組后的明文組和56位的密鑰按位替代或交換的方法形成密文組。

6f2079f4-bbe8-11ed-bfe3-dac502259ad0.png

DES加密

初始置換IP

將64 bit明文的位置進行置換,得到一個亂序的64 bit明文組,而后分成左右兩段,每段為32bit,以L0和R0表示,IP中各列元素位置號數相差為8,相當于將原明文各字節按列寫出,各列比特經過偶采樣和奇采樣置換后,再對各行進行逆序。

1. 初始置換IP作用是:將64位明文打亂重新排列。如,初始置換IP就是將原名來64位明文數據的第58位換到第1位,原來的50位換到第2位,…,依次類推。

2.初始置換結果分為兩組:左L0(32位)、右R0(32位)

6f36f35a-bbe8-11ed-bfe3-dac502259ad0.png

初始置換表

乘積變換

乘積變換是DES算法的核心部分,此步驟需要經歷16輪,而且每一輪變換都需要一個48bit子密鑰,共需要16個48bit密鑰。將經過IP置換后的數據分成32 bit的左右兩組,在迭代過程中彼此左右交換位置。

每次迭代時只對右邊的32 bit進行一系列的加密變換,在此輪迭代即將結束時,把左邊的32 bit與右邊得到的32bit做異或運算,作為下一輪迭代時右邊的段,并將原來右邊未經變換的段直接送到左邊的寄存器中作為下一輪迭代時左邊的段。

在每一輪迭代時,右邊的段要經過選擇擴展運算E、密鑰加密運算、選擇壓縮運算S、置換運算P和左右數據段的異或運算。

6f6262ec-bbe8-11ed-bfe3-dac502259ad0.png

乘積變換中的加密變換

(1)選擇擴展運算E

6fa01862-bbe8-11ed-bfe3-dac502259ad0.png

選擇擴展運算E

6fb3c380-bbe8-11ed-bfe3-dac502259ad0.jpg

選擇擴展運算效果圖

(2)獲取子密鑰進行加密運算

6fdfbd50-bbe8-11ed-bfe3-dac502259ad0.png

子密鑰產生算法

1) 置換1

7055f93e-bbe8-11ed-bfe3-dac502259ad0.png

置換1后的效果

2) 循環左移

706702e2-bbe8-11ed-bfe3-dac502259ad0.png

每個寄存器所需移動的數據位數

3) 壓縮置換

70778ee6-bbe8-11ed-bfe3-dac502259ad0.png

壓縮置換表

(3)選擇壓縮算法S

70a9980a-bbe8-11ed-bfe3-dac502259ad0.png

S盒信息

(4)置換運算P

70bac422-bbe8-11ed-bfe3-dac502259ad0.png

P盒置換表

逆初始置換

逆初始置換是DES加密過程的最后一步,它的作用打亂重排第十六次加密迭代的結果然后形成64位密文。

1. 把64位中間密文打亂重排。初始置換IP與逆初始置換是互逆的。如,在IP中把輸入的第2位置換到第8位,而在逆初始置換中,把輸入的第8位置換到第2位。

2. 形成最終的64位密文。

3DES簡介

3DES是DES加密算法的一種模式,它使用3條64位的密鑰對數據進行三次加密。數據加密標準(DES)是美國的一種由來已久的加密標準,它使用對稱密鑰加密法。

另起一段對它進行簡單介紹的原因,是因為它特殊的價值:承上啟下。

3DES(Triple DES)是DES向AES過渡的加密算法,是DES的一個更安全的變形。它以DES為基本模塊,通過組合分組方法設計出分組加密算法。

3DES有兩種加密方式:

1. 第一、三次加密使用同一種密鑰,這種方式密鑰長度128位(112位有效)

2. 三次加密使用不同密鑰,這種方式密鑰長度192位(168位有效)

3DES的密鑰長度為24個字節,而 DES 的密鑰長度為8的倍數,比如8,16,24都可以。

AES簡介

AES,Advanced Encryption Standard,高級加密標準,在密碼學中又稱Rijndael加密法,是美國聯邦政府采用的一種區塊加密標準。它的出現主要是為了取代DES加密算法。

雖然出現了3DES的加密方法,但由于它的加密時間是DES算法的3倍多,64Bit的分組大小相對較小,所以還是不能滿足人們對安全性的要求。

1997年,美國國家標準技術研究所宣布希望征集高級加密標準,最終5個候選算法進入最后一輪:Rijndael,Serpent,Twofish,RC6和MARS。而Rijndael算法笑到了最后。

AES原本指的是一套標準FIPS 197,而AES算法一般指分組大小為128bits的Rijndeal算法。這也是AES與Rijndeal的一個區別。

70cf0d06-bbe8-11ed-bfe3-dac502259ad0.png

AES與R的區別

7103094e-bbe8-11ed-bfe3-dac502259ad0.png

下面簡單介紹下各個部分的作用與意義:

明文P

沒有經過加密的數據。

密鑰K

用來加密明文的密碼,在對稱加密算法中,加密與解密的密鑰是相同的。密鑰為接收方與發送方協商產生,但不可以直接在網絡上傳輸,否則會導致密鑰泄漏,通常是通過非對稱加密算法加密密鑰,然后再通過網絡傳輸給對方,或者直接面對面商量密鑰。密鑰是絕對不可以泄漏的,否則會被攻擊者還原密文,竊取機密數據。

AES加密函數

設AES加密函數為E,則 C = E(K, P),其中P為明文,K為密鑰,C為密文。也就是說,把明文P和密鑰K作為加密函數的參數輸入,則加密函數E會輸出密文C。

密文C

經加密函數處理后的數據

AES解密函數

設AES解密函數為D,則 P = D(K, C),其中C為密文,K為密鑰,P為明文。也就是說,把密文C和密鑰K作為解密函數的參數輸入,則解密函數會輸出明文P。

在這里簡單介紹下對稱加密算法與非對稱加密算法的區別。

對稱加密算法

加密和解密用到的密鑰是相同的,這種加密方式加密速度非常快,適合經常發送數據的場合。缺點是密鑰的傳輸比較麻煩。

非對稱加密算法

加密和解密用的密鑰是不同的,這種加密方式是用數學上的難解問題構造的,通常加密解密的速度比較慢,適合偶爾發送數據的場合。優點是密鑰傳輸方便。常見的非對稱加密算法為RSA、ECC和EIGamal。

AES的基本結構

AES為分組密碼,分組密碼也就是把明文分成一組一組的,每組長度相等,每次加密一組數據,直到加密完整個明文。在AES標準規范中,分組長度只能是128位,也就是說,每個分組為16個字節(每個字節8位)。

密鑰的長度可以使用128位、192位或256位。密鑰的長度不同,推薦加密輪數也不同,如下表所示:

7173cbf2-bbe8-11ed-bfe3-dac502259ad0.png

AES加密有AES-128、AES-192、AES-256三種,分別對應三種密鑰長度128bits(16字節)、192bits(24字節)、256bits(32字節)。當然,密鑰越長,安全性越高,加解密花費時間也越長。

默認的是 AES-128,其安全性完全夠用。

這里實現的是AES-128,也就是密鑰的長度為128位,加密輪數為10輪。

AES的加密公式為C = E(K,P),在加密函數E中,會執行一個輪函數,并且執行10次這個輪函數,這個輪函數的前9次執行的操作是一樣的,只有第10次有所不同。也就是說,一個明文分組會被加密10輪。AES的核心就是實現一輪中的所有操作。

AES的處理單位是字節,128位的輸入明文分組P和輸入密鑰K都被分成16個字節,分別記為P = P0 P1 … P15 和 K = K0 K1 … K15。如,明文分組為P = abcdefghijklmnop,其中的字符a對應P0,p對應P15。

一般地,明文分組用字節為單位的正方形矩陣描述,稱為狀態矩陣。在算法的每一輪中,狀態矩陣的內容不斷發生變化,最后的結果作為密文輸出。

該矩陣中字節的排列順序為從上到下、從左至右依次排列,如下圖所示:

7187fb18-bbe8-11ed-bfe3-dac502259ad0.png

分組密碼體制

所謂分組密碼體制就是指將明文切成一段一段的來加密,然后再把一段一段的密文拼起來形成最終密文的加密方式。AES 采用分組密碼體制,即 AES 加密會首先把明文切成一段一段的,而且每段數據的長度要求必須是128位16個字節,如果最后一段不夠16個字節了,就需要用 Padding 來把這段數據填滿16個字節,然后分別對每段數據進行加密,最后再把每段加密數據拼起來形成最終的密文。

初始向量IV

初始向量 IV 的作用是使加密更加安全可靠,我們使用 AES 加密時需要主動提供初始向量,而且只需要提供一個初始向量就夠了,后面每段數據的加密向量都是前面一段的密文。初始向量 IV 的長度規定為128位16個字節,初始向量的來源為隨機生成。

AES加密模式

AES只是個基本算法,實現AES有幾種加密模式。分組密碼有五種工作體制:1.電碼本模式(Electronic Codebook Book (ECB));2.密碼分組鏈接模式(Cipher Block Chaining (CBC));3.計算器模式(Counter (CTR));4.密碼反饋模式(Cipher FeedBack (CFB));5.輸出反饋模式(Output FeedBack (OFB))。

ECB模式(電子密碼本模式:Electronic codebook)

71e10906-bbe8-11ed-bfe3-dac502259ad0.png

ECB是最簡單的塊密碼加密模式,加密前根據加密塊大小(如AES為128位)分成若干塊,之后將每塊使用相同的密鑰單獨加密,解密同理。

CBC模式(密碼分組鏈接:Cipher-block chaining)

720b2894-bbe8-11ed-bfe3-dac502259ad0.png

CBC模式對于每個待加密的密碼塊在加密前會先與前一個密碼塊的密文異或然后再用加密器加密。第一個明文塊與一個叫初始化向量的數據塊異或。

CFB模式(密文反饋:Cipher feedback)

721ef73e-bbe8-11ed-bfe3-dac502259ad0.png

與ECB和CBC模式只能夠加密塊數據不同,CFB能夠將塊密文(Block Cipher)轉換為流密文(Stream Cipher)。

OFB模式(輸出反饋:Output feedback)

722e423e-bbe8-11ed-bfe3-dac502259ad0.png

OFB是先用塊加密器生成密鑰流(Keystream),然后再將密鑰流與明文流異或得到密文流,解密是先用塊加密器生成密鑰流,再將密鑰流與密文流異或得到明文,由于異或操作的對稱性所以加密和解密的流程是完全一樣的。

CTR模式(計數器:Counter)

727424de-bbe8-11ed-bfe3-dac502259ad0.png

計數器模式不常見,在CTR模式中, 有一個自增的算子,這個算子用密鑰加密之后的輸出和明文異或的結果得到密文,相當于一次一密。這種加密方式簡單快速,安全可靠,而且可以并行加密,但是在計數器不能維持很長的情況下,密鑰只能使用一次。

AES有五種加密模式,我們一般使用的是CBC模式,而ECB則相對不安全。ECB 模式是最基本的加密模式,僅僅使用明文和密鑰來加密數據,相同的明文塊會被加密成相同的密文塊,這樣明文和密文的結構將是完全一樣的,就會更容易被破解,相對來說不是那么安全,因此很少使用。

而CBC模式則比 ECB模式多了一個初始向量 IV,加密的時候,第一個明文塊會首先和初始向量 IV 做異或操作,然后再經過密鑰加密,然后第一個密文塊又會作為第二個明文塊的加密向量來異或,依次類推下去,這樣相同的明文塊加密出的密文塊就是不同的,明文的結構和密文的結構也將是不同的,因此更加安全,因而我們常用的就是CBC加密模式。

AES加密

729a9ed4-bbe8-11ed-bfe3-dac502259ad0.jpg

開始加密,進入4個輪函數:

1、AddRoundKey:輪密鑰加運算

2、ByteSub:字節變換 (S盒變換)

3、ShiftRows:行變換

4、MixColumns:列變換

輪密鑰加 / AddRoundKey

72ec09ea-bbe8-11ed-bfe3-dac502259ad0.jpg

簡單的把當前狀態 (state) 與擴展密鑰進行按位異或

字節變換 / ByteSub

72f90046-bbe8-11ed-bfe3-dac502259ad0.jpg

這一步就是將state中每一個字節替換為S_box中的對應字節。S_box是一個有256個元素的一維數組,直接查找當前字節所對應的新的字節并替換即可。

行變換 / ShiftRow

730ec534-bbe8-11ed-bfe3-dac502259ad0.jpg

這個就比較好理解了,就是把每行左環移,第一行不變,第二行環移1位,第三行環移2位,第三行環移3位。

列混合 / MixColumn

731d3cfe-bbe8-11ed-bfe3-dac502259ad0.jpg

這是整個AES加密流程中最復雜的一步,同時要應用到之前在S盒變換里提到過的GF(256)域,如果真的想要理解這一步的話建議先去仔細了解一下GF(256)再來繼續閱讀,此處不多加闡述。

密鑰擴展 / KeyExpansion

萬事俱備,只欠東風。4個輪函數已經全部齊了,現在只差一步——密鑰擴展。

73481a32-bbe8-11ed-bfe3-dac502259ad0.jpg

簡述DES與AES的區別

AES中的S盒運用了GF(28)的數學基礎,DES中的S盒主要是為了確保非線性。與DES相比,AES用到了非常深的數學基礎。

與AES算法相比,DES在參數特性方面主要區別體現在以下幾個方面:

1、DES的數據塊大小為8個字節,而AES的數據塊大小為16個字節。

2、DES的密鑰長度是64位(其中8位用于校驗),而AES的密鑰長度是128位(AES算法比DES算法更安全)。

3、這兩種算法在加/解方面的具體原理是不一樣的,但DES加密算法的塊大小及密鑰長度都不能滿足現在的安全需求了,就像最開始提到的那樣,所以現在比較少使用這種加密算法,而是使用像AES或者3DES之類更高級的加密算法。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • AES
    AES
    +關注

    關注

    0

    文章

    103

    瀏覽量

    33206
  • DES
    DES
    +關注

    關注

    0

    文章

    64

    瀏覽量

    48199
  • 加密算法
    +關注

    關注

    0

    文章

    211

    瀏覽量

    25530
  • 加解密
    +關注

    關注

    0

    文章

    18

    瀏覽量

    6513

原文標題:科普:簡述DES與AES的區別

文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何去實現DES加密算法

    DES算法簡單原理是什么?如何去實現DES加密算法
    發表于 04-26 07:14

    如何設計一個基于FPGA的DES加密算法系統

    為了克服傳統DES加密算法流水線的FPGA實現的子密鑰需先后串級計算,密鑰不能動態刷新的缺點,提出一種新的加密算法,提高DES FPGA實現系統的處理速度,增加系統的密鑰動態刷新功能,
    發表于 04-30 06:29

    加密算法(DES,AES,RSA,MD5,SHA1,Base64)

    加密算法(DES,AES,RSA,MD5,SHA1,Base64)比較和項目應用加密技術通常分為兩大類:"對稱式"和"非對稱式"。對稱性加密算法
    發表于 07-19 08:44

    DES加密算法是什么

    一、加密算法1、 DES加密算法DES數據加密標準,是一種使用密鑰加密的塊
    發表于 07-22 09:13

    最強加密算法AES加密算法的Matlab和Verilog實現 精選資料推薦

    目錄背景AES加密的幾種模式基本運算AES加密原理Matlab實現Verilog實現Testbench此文重點講述了AES
    發表于 07-28 07:34

    des加密算法代碼

    des加密算法代碼 /* d3des.h - * * Headers and defines for d3des.c * Grave
    發表于 01-16 10:12 ?34次下載

    地圖數據網絡分發的混合加密算法

    分析并比較對稱加密算法DES, AES和非對稱加密算法RSA,結合地圖數據網絡分發的實際應用,提出散列組合加密算法。該
    發表于 04-16 09:48 ?32次下載

    基于蔡氏電路和DES的圖像加密算法

    針對Data Encryption Standard(DES, 數據加密標準)算法所存在的不足和混沌序列的特點,提出了一種新的基于蔡氏電路和DES 的圖像
    發表于 01-07 16:02 ?12次下載

    DESAES、TEA加密算法的比較

    DES 算法具有對稱性, 既可以用于加密又可以用于解密。對稱性帶來的一個很大的好處在于硬件實現, DES加密和解密可以用完全相同的硬件來
    發表于 08-26 10:48 ?2.1w次閱讀

    基于AES加密算法的S盒優化設計_胡春燕

    基于AES加密算法的S盒優化設計_胡春燕
    發表于 03-19 11:31 ?2次下載

    AES加密算法說明

    1 引 言 AES加密算法的一種優化的FPGA實現方法 隨著密碼分析水平,芯片處理能力和計算技術的不斷進步,des的安全強度已經難以適應新的安全需要,其實現速度、代碼大小和跨平臺性均難以繼續滿足
    發表于 11-30 01:31 ?2149次閱讀

    c語言實現des加密算法詳細過程

     摘要:DES算法為密碼體制中的對稱密碼體制,又被稱為美國數據加密標準,是1972年美國IBM公司研制的對稱密碼體制加密算法。明文按64位進行分組,密鑰長64位,密鑰事實上是56位參與
    發表于 12-10 11:28 ?3.5w次閱讀
    c語言實現<b class='flag-5'>des</b><b class='flag-5'>加密算法</b>詳細過程

    用matlab實現AES加密算法

    AES加密算法是密碼學中的高級加密標準(Advanced Encryption Standard,AES),又稱Rijndael加密法,是美
    發表于 05-25 15:18 ?11次下載
    用matlab實現<b class='flag-5'>AES</b><b class='flag-5'>加密算法</b>

    舉例幾種常見的加密算法

    今天主要總結下常用的對稱性加密算法DESAES,非對稱性加密算法RSA。 01 ?DES加密算法
    的頭像 發表于 04-28 13:52 ?2w次閱讀
    舉例幾種常見的<b class='flag-5'>加密算法</b>

    科普:簡述DESAES的區別

    安全加密在IC領域也是相當重要的部分了,這次我們簡單了解下經典加密算法DES
    的頭像 發表于 05-11 11:40 ?5220次閱讀
    科普:簡述<b class='flag-5'>DES</b>與<b class='flag-5'>AES</b>的區別