0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

加密:最常見的算法

星星科技指導(dǎo)員 ? 作者:jwallrabenstein ? 2023-06-27 15:47 ? 次閱讀

在加密中:它是什么以及它是如何工作的? 我們承諾了單字母替換密碼的解決方案。見下文:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
I Z S G K B X J F E R T U Q A W O H M Y N C V L D P

密文: ITT VAHR IQG QA WTID UIRKM EISR I GNTT ZAD

明文:全是工作,不玩耍,讓杰克成為一個(gè)沉悶的男孩

在這篇博客中,我們將介紹一些眾所周知的對(duì)稱加密算法。對(duì)稱算法類是指所涉及的每一方都必須訪問相同的密鑰,因此它們關(guān)于密鑰的信息是相同或?qū)ΨQ的。在我們的下一篇博客中,我們將介紹非對(duì)稱算法,其中所有參與者之間有關(guān)密鑰的信息并不相同。讓我們首先研究一個(gè)眾所周知的,但現(xiàn)在大部分已停用的對(duì)稱算法:DES。

數(shù)據(jù)加密標(biāo)準(zhǔn) (DES) 是由 IBM 開發(fā)并于 1977 年標(biāo)準(zhǔn)化的對(duì)稱加密算法。盡管它已被AES取代(我們將在下面進(jìn)行研究),但DES的設(shè)計(jì)選擇為關(guān)鍵空間問題提供了一個(gè)極好的真實(shí)示例。雖然對(duì)這些算法如何工作的完整描述遠(yuǎn)遠(yuǎn)超出了本文的范圍,但讓我們看一下它們?cè)O(shè)計(jì)中舉例說明對(duì)稱加密算法重要屬性的部分。

DES 算法在 64 位輸入數(shù)據(jù)塊上運(yùn)行,并通過稱為 Feistel 網(wǎng)絡(luò)的結(jié)構(gòu)處理每個(gè)塊(如右圖所示)。由于該算法在 64 位塊的固定大小輸入上運(yùn)行,我們稍后需要引入不同的操作模式:將較大的輸入拆分為塊并組合輸出以形成最終密文的方法。正如我們將看到的,它并不像簡(jiǎn)單地連接對(duì)應(yīng)于每個(gè)塊的 64 位密文那么簡(jiǎn)單!

明文輸入首先是排列的,但由于排列是固定的并且是公開的,因此它不會(huì)為設(shè)計(jì)增加安全性——它只是為了減慢缺乏算法硬件實(shí)現(xiàn)的對(duì)手的速度。需要注意的是,現(xiàn)代加密算法的安全性不依賴于算法任何部分的保密性。相反,只有密鑰被假定為對(duì)手不知道?,F(xiàn)代密碼設(shè)計(jì)中的這一重要概念被稱為Kerckhoffs原理。

然后將數(shù)據(jù)拆分為左 (L0) 和右 (R0) 的一半,右半部分與子鍵 K1(通過算法從主鍵派生)組合。右半部分和子鍵通過函數(shù)“f”組合在一起,以紅色突出顯示。

f被稱為Feistel函數(shù),是使DES成為一個(gè)難題的重要組成部分。有趣的是,我們將看到,與本文開頭的一般難題示例 f(x) 不同,DES 中的 Feistel 函數(shù) f 實(shí)際上不是可逆的!相反,可逆性屬性(使用 DES 解密的能力)來(lái)自 Feistel 網(wǎng)絡(luò)結(jié)構(gòu):使用密文塊和子密鑰以相反的順序運(yùn)行網(wǎng)絡(luò)會(huì)產(chǎn)生原始明文。

Feistel 函數(shù) f(如下圖所示)的結(jié)構(gòu)是通過擴(kuò)展和獨(dú)占 or 運(yùn)算符將正確的 32 位數(shù)據(jù)與子鍵 K 組合在一起來(lái)操作的。然后將此組合結(jié)果分成 8 個(gè) 6 位塊,每個(gè)塊通過替換盒或“S-box”。這些 S 盒中的每一個(gè)都實(shí)現(xiàn)了眾所周知的非線性轉(zhuǎn)換,將 6 位輸入映射到 4 位輸出。選擇這些映射中的每一個(gè)對(duì)于DES的安全性至關(guān)重要,在標(biāo)準(zhǔn)化之前,NSA用自己的映射替換了原始映射。當(dāng)時(shí)被廣泛認(rèn)為是惡意的,后來(lái)發(fā)現(xiàn)NSA的映射可以抵抗一種(當(dāng)時(shí)公開未知的)稱為差分密碼分析的攻擊。

wKgaomSaoWSAZehjAAC3-INrpUU510.png

不幸的是,并非所有國(guó)家安全局對(duì)DES的貢獻(xiàn)都是無(wú)私的。最初的設(shè)計(jì)要求使用64位密鑰,這在1970年代的安全性綽綽有余。然而,NSA強(qiáng)烈主張使用更弱的48位密鑰,該標(biāo)準(zhǔn)最終確定為56位。當(dāng)時(shí)的公開理由是使用每個(gè)字節(jié)的一個(gè)位作為奇偶校驗(yàn)位(導(dǎo)致只有 64 個(gè)有意義位的“56 位”密鑰)來(lái)驗(yàn)證 DES 密鑰是否“有效”。當(dāng)然,嘗試使用錯(cuò)誤的密鑰解密將達(dá)到相同的目標(biāo)。如今,56 位 DES 密鑰不提供安全性,因此不應(yīng)使用 DES 算法。相反,對(duì)稱加密算法應(yīng)該至少使用128位密鑰,這是我們研究的下一個(gè)算法滿足的屬性:高級(jí)加密標(biāo)準(zhǔn)AES。

AES

1997年,美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)宣布了一項(xiàng)開發(fā)高級(jí)加密標(biāo)準(zhǔn)(AES)的競(jìng)賽,這是一種將取代DES的對(duì)稱加密算法。2001年,Rijndael算法(比利時(shí)設(shè)計(jì)師Vincent Rijmen和Joan Daemen的姓氏組合)被選為獲勝者,并被標(biāo)準(zhǔn)化為AES。它定義為 128、192 和 256 位的密鑰大小,遠(yuǎn)大于 DES 使用的 56 位密鑰。

wKgaomSaoWmASa_NAAEUj8qBGwo064.png

AES 算法使用替換-置換網(wǎng)絡(luò),該網(wǎng)絡(luò)類似于 DES 使用的 Feistel 網(wǎng)絡(luò),但不同之處在于替換盒 (S-box) 是可逆的。AES執(zhí)行四個(gè)基本操作:

添加圓鍵

為了混合密鑰材料,從主密鑰派生一個(gè)子密鑰以形成 AES 圓形密鑰。狀態(tài)數(shù)組 s 初始化為 128 位明文輸入塊,并通過 exclusive-or 與 round 鍵的單詞 w 組合以形成更新的狀態(tài)。

子字節(jié)

與 DES 類似,狀態(tài)隨后通過非線性 S 盒進(jìn)行轉(zhuǎn)換,在 AES 中,S-box 以可逆的方式將字節(jié)映射到字節(jié)。根據(jù) Kerckhoffs 原理,這種轉(zhuǎn)換和 AES 算法的整個(gè)描述是眾所周知的。

移位行

此步驟在當(dāng)前狀態(tài)下循環(huán)移動(dòng)最后三行。此操作與 MixColumns 操作一起提供擴(kuò)散:在整個(gè)生成的密文輸出中傳播明文輸入中的微小變化。這種“雪崩效應(yīng)”可以防止攻擊者知道明文-密文對(duì)的攻擊:多次擴(kuò)散操作,加上每次迭代中添加圓形密鑰的混亂,使得即使知道明文和密文也難以恢復(fù)密鑰。

混合列

最終操作將信息混合在一列中,從而提供進(jìn)一步的擴(kuò)散效果。

然后,根據(jù)所選的密鑰大小,對(duì)這些操作組進(jìn)行多次迭代。

我們已經(jīng)看到,DES 和 AES 都是分別處理 64 位和 128 位明文塊的對(duì)稱加密算法。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 密鑰
    +關(guān)注

    關(guān)注

    1

    文章

    134

    瀏覽量

    19657
  • DES
    DES
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    48145
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    分享一些最常見最實(shí)用的機(jī)器學(xué)習(xí)算法

    在這篇文章中,分享一些最常用的機(jī)器學(xué)習(xí)算法。
    的頭像 發(fā)表于 10-14 14:24 ?9018次閱讀
    分享一些<b class='flag-5'>最常見</b>最實(shí)用的機(jī)器學(xué)習(xí)<b class='flag-5'>算法</b>

    電工最常見電路

    電工最常見電路
    發(fā)表于 10-12 21:11

    算法授權(quán)加密方案,圖像算法加密,語(yǔ)音算法加密,硬件加密方案

    核心技術(shù)的保護(hù)固然重要,而對(duì)封裝和PCB布線等可見部分的保護(hù)也不容忽視。多數(shù)公司一般習(xí)慣于使用采納了安全芯片和算法的版權(quán)保護(hù)系統(tǒng)。 深圳市鼎恒創(chuàng)科技專注于固件保護(hù)和數(shù)據(jù)加密傳輸多年,相關(guān)負(fù)責(zé)人從事加密
    發(fā)表于 11-20 10:24

    DES加密算法是什么

    一、加密算法1、 DES加密算法DES數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法。DES中的密鑰key為8個(gè)字節(jié)64位,但每第8個(gè)為校驗(yàn)位不參
    發(fā)表于 07-22 09:13

    對(duì)稱加密算法是什么

    對(duì)稱加密算法也叫私鑰加密算法,其特征是收信方和發(fā)信方使用相同的密鑰,即加密密鑰和解密密鑰是相同或等價(jià)的。非對(duì)稱加密算法也叫公鑰加密算法。其特
    發(fā)表于 07-22 07:09

    TN404_ELF2 AES加密使用指南

    正文 AES(Advanced Encryption Standard,高級(jí)加密標(biāo)準(zhǔn))算法,是一種最常見的對(duì)稱加密算法。AES 在密碼學(xué)中又稱 Rijndael
    發(fā)表于 10-28 08:06

    電工最常見電路集

    電工最常見電路集:
    發(fā)表于 02-28 15:39 ?415次下載
    電工<b class='flag-5'>最常見</b>電路集

    關(guān)于應(yīng)用到游戲中的加密算法的用途及缺陷

    加密主要包含通信數(shù)據(jù)和存儲(chǔ)數(shù)據(jù)加密,目的都是為了保證其傳送和儲(chǔ)存的隱秘性,從而保證數(shù)據(jù)的安全。 目前常見加密方式有對(duì)稱加密、非對(duì)稱
    發(fā)表于 09-25 11:15 ?0次下載

    常見公鑰加密算法有哪些

    RSA、ElGamal、背包算法、Rabin(Rabin的加密法可以說是RSA方法的特例)、Diffie-Hellman (D-H) 密鑰交換協(xié)議中的公鑰加密算法、Elliptic Curve
    發(fā)表于 12-10 09:41 ?4.3w次閱讀

    最常見10大算法類型

    本文總結(jié)了程序員在代碼面試中最常遇到的10大算法類型,想要真正了解這些算法的原理,還需程序員們花些功夫。算法按用途分,體現(xiàn)設(shè)計(jì)目的、有什么特點(diǎn)算法
    發(fā)表于 01-29 11:10 ?2.4w次閱讀

    激光導(dǎo)航AGV中最常見的控制算法都有哪些

    辨別方向的一個(gè)過程。那么激光導(dǎo)航agv中最常見的控制算法都有哪些呢?下面國(guó)辰機(jī)器人就為大家一一講解。 1、磁條導(dǎo)航 磁條導(dǎo)航技術(shù)目前用的人不是很多,有點(diǎn)類似電磁導(dǎo)航,但是跟電磁導(dǎo)航不一樣的地方在于它是通過地面磁條來(lái)鋪設(shè)線路的,通過
    發(fā)表于 12-12 11:02 ?2527次閱讀

    舉例幾種常見加密算法

    今天主要總結(jié)下常用的對(duì)稱性加密算法DES和AES,非對(duì)稱性加密算法RSA。 01 ?DES加密算法 1.DES含義 DES全稱為Data Encrypt
    的頭像 發(fā)表于 04-28 13:52 ?2w次閱讀
    舉例幾種<b class='flag-5'>常見</b>的<b class='flag-5'>加密算法</b>

    量子計(jì)算機(jī)如何破解最常見加密算法

    主流量子計(jì)算可能還有幾十年的時(shí)間,但其破解加密的能力意味著研究人員現(xiàn)在正在研究如何提高量子時(shí)代的安全性。
    的頭像 發(fā)表于 08-09 14:15 ?3902次閱讀

    最常見的目標(biāo)跟蹤算法

    對(duì)象跟蹤問題一直是計(jì)算機(jī)視覺的熱點(diǎn)任務(wù)之一,簡(jiǎn)單的可以分為單目標(biāo)跟蹤與多目標(biāo)跟蹤,最常見的目標(biāo)跟蹤算法都是基于檢測(cè)的跟蹤算法,首先發(fā)現(xiàn)然后標(biāo)記,好的跟蹤算法必須具備REID的能力。今天
    的頭像 發(fā)表于 09-14 16:20 ?2553次閱讀

    常見加密算法分類

    在開發(fā)過程中,為了保證程序能夠安全高效運(yùn)行,數(shù)據(jù)信息不被泄露,我們通常都會(huì)對(duì)要操作的數(shù)據(jù)進(jìn)行加解密,從而提高程序的安全性。常見加密算法分類見下圖,可分為對(duì)稱加密、非對(duì)稱加密、散列
    的頭像 發(fā)表于 11-21 10:08 ?1312次閱讀
    <b class='flag-5'>常見</b><b class='flag-5'>加密算法</b>分類