加密算法的類型 + 每種算法都有優(yōu)缺點(diǎn)
不同類型的加密算法旨在以一種只能使用正確密鑰提取原始數(shù)據(jù)的方式來(lái)混淆數(shù)據(jù)。但是,有多種不同的方法可以實(shí)現(xiàn)這一點(diǎn)。
加密算法的兩大類是對(duì)稱加密和非對(duì)稱加密。這些加密方法中的每一種都有其優(yōu)點(diǎn)和缺點(diǎn)。
對(duì)稱加密
對(duì)稱加密算法使用相同的密鑰進(jìn)行加密和解密。這意味著加密消息的發(fā)送者和接收者需要在開(kāi)始發(fā)送加密數(shù)據(jù)之前通過(guò)安全通道共享密鑰的副本。對(duì)稱加密算法有兩種不同的類型:塊密碼和流密碼。
分組密碼
分組密碼以固定大小的塊加密數(shù)據(jù)。例如,高級(jí)加密標(biāo)準(zhǔn) (AES) 使用 128 位的塊長(zhǎng)度。
如果明文比塊長(zhǎng)度短,則在加密之前將其填充到所需的長(zhǎng)度。在另一端,消息的接收者將對(duì)其進(jìn)行解密,然后刪除填充以恢復(fù)原始消息。
如果明文長(zhǎng)于塊長(zhǎng)度,則將其分成多個(gè)不同的塊進(jìn)行加密。一種分組密碼操作模式定義了這些塊如何相互關(guān)聯(lián)。
每種操作模式都有其優(yōu)點(diǎn)和缺點(diǎn)。例如,電子密碼本 (ECB) 模式是最簡(jiǎn)單的操作模式。使用 ECB,每個(gè)塊都是完全獨(dú)立加密的。
企鵝
這樣做的缺點(diǎn)是具有相同明文的塊產(chǎn)生相同的密文。上圖是 Linux 企鵝的圖片。雖然此數(shù)據(jù)已加密,但特定顏色(黑色、白色等)像素的密文在整個(gè)圖像中是相同的,因此企鵝仍然可見(jiàn)。
其他操作模式通過(guò)將每個(gè)塊的加密相互關(guān)聯(lián)來(lái)消除這個(gè)問(wèn)題。有些還提供附加功能,例如伽羅瓦計(jì)數(shù)器模式 (GCM),它會(huì)生成消息驗(yàn)證碼 (MAC),以驗(yàn)證數(shù)據(jù)在傳輸過(guò)程中沒(méi)有被修改。
示例:高級(jí)加密標(biāo)準(zhǔn) (AES)
最著名的分組密碼是高級(jí)加密標(biāo)準(zhǔn) (AES)。該加密算法被選為美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院 (NIST) 舉辦的競(jìng)賽的結(jié)果,以取代老化的數(shù)據(jù)加密標(biāo)準(zhǔn) (DES)。
AES 是一組三種不同的算法,旨在使用 128、192 或 256 位加密密鑰。這些算法分為密鑰調(diào)度和加密算法。
三個(gè)版本的 AES 加密算法基本相同。它分為輪次,輪次由一組數(shù)學(xué)運(yùn)算組成。不同 AES 版本之間的主要區(qū)別在于使用的輪數(shù):10、12 和 14。
每一輪 AES 使用從原始密鑰派生的唯一輪密鑰。派生這些輪密鑰是密鑰調(diào)度的工作每個(gè) AES 版本的密鑰調(diào)度是不同的,因?yàn)樗鼈儾捎貌煌L(zhǎng)度的密鑰并產(chǎn)生不同數(shù)量的 128 位輪密鑰。
流密碼
另一種對(duì)稱加密算法是流密碼。與分組密碼不同,流密碼每次加密一個(gè)明文。
流密碼
流密碼是基于唯一完全牢不可破的加密算法設(shè)計(jì)的:一次性密碼 (OTP)。OTP 采用與明文相同長(zhǎng)度的隨機(jī)密鑰和異或 (XOR) 明文的每一位和密鑰一起生成密文,如上圖所示。
使用 OTP 解密與加密相同。這是因?yàn)槿魏闻c自身異或的東西都是零,而任何與零異或的東西都是它自己。使用明文 P、密文 C 和密鑰 K
C XOR K = (C XOR K) XOR K = C XOR (K XOR K) = C XOR 0 = C
盡管 OTP 具有很高的安全性,但它很少使用,因?yàn)榘踩毓蚕砥涔ぷ魉璧拇罅筷P(guān)鍵材料是不切實(shí)際的。流密碼使用與 OTP 相同的想法,但密鑰的安全性稍差。
流密碼不是完全隨機(jī)的密鑰,而是使用密鑰來(lái)提供偽隨機(jī)數(shù)生成器。通過(guò)共享相同的密鑰和算法,消息的發(fā)送者和接收者可以產(chǎn)生相同的比特串,使他們能夠加密和解密消息。
示例:Rivest Cipher 4 (RC4)
RC4 是廣泛使用的流密碼的一個(gè)示例。它由 Ron Rivest 于 1987 年創(chuàng)建,最初是 RSA Security 的商業(yè)機(jī)密。1994 年,密碼的詳細(xì)信息被泄露,使其可供公眾使用。
RC4 用于各種不同的應(yīng)用,包括 Wi-Fi 的 WEP 和 WPA 加密標(biāo)準(zhǔn)。該密碼有一些已知的漏洞,特別是對(duì)于某些應(yīng)用程序,但如果生成的密鑰流的一些初始字節(jié)被丟棄,仍然可以使用。
非對(duì)稱加密
與對(duì)稱加密不同,非對(duì)稱加密使用兩個(gè)不同的密鑰進(jìn)行加密和解密。公鑰用于加密消息,而私鑰用于解密。
私鑰是一個(gè)完全隨機(jī)的數(shù)字。公鑰是使用數(shù)學(xué)上的“難”問(wèn)題從私鑰導(dǎo)出的。
這個(gè)“難”的問(wèn)題是基于一個(gè)“容易”執(zhí)行但“難以”逆轉(zhuǎn)的數(shù)學(xué)運(yùn)算。使用了許多不同的“硬”問(wèn)題,包括基于整數(shù)的問(wèn)題和基于橢圓曲線的問(wèn)題。
基于整數(shù)的密碼學(xué)
基于整數(shù)的非對(duì)稱密碼學(xué)使用兩個(gè)主要的“難題”。這些是因式分解和離散對(duì)數(shù)問(wèn)題。
因式分解問(wèn)題是基于這樣一個(gè)事實(shí):將兩個(gè)數(shù)字相乘相對(duì)容易,但很難將它們分解。事實(shí)上,因式分解非常困難,最好的方法(在“經(jīng)典”計(jì)算機(jī)上)是通過(guò)蠻力搜索。想要分解兩個(gè)素?cái)?shù)乘積的人需要測(cè)試潛在因子,直到他們碰巧找到這兩個(gè)因子之一,這可能需要很長(zhǎng)時(shí)間。
基于因式分解問(wèn)題的非對(duì)稱加密算法將具有使用兩個(gè)私鑰(大素?cái)?shù))的乘積計(jì)算的公鑰。這種計(jì)算很容易執(zhí)行,但是任何想要從公鑰中導(dǎo)出私鑰的人都需要將其分解,這要困難得多。
乘法的難度隨著因子的長(zhǎng)度呈多項(xiàng)式增長(zhǎng),但因式分解的難度呈指數(shù)增長(zhǎng)。這使得找到一個(gè)“甜蜜點(diǎn)”成為可能,在這個(gè)“甜蜜點(diǎn)”中,系統(tǒng)可用但基本上牢不可破。
離散對(duì)數(shù)問(wèn)題使用取冪和對(duì)數(shù)作為其“簡(jiǎn)單”和“困難”運(yùn)算。與因式分解類似,計(jì)算對(duì)數(shù)的復(fù)雜性隨著指數(shù)大小的增加而增長(zhǎng)得更快。
示例:Rivest-Shamir-Adleman (RSA)
按照今天的標(biāo)準(zhǔn),對(duì)稱加密 是一種簡(jiǎn)單的密碼算法 ,然而,它曾經(jīng)被認(rèn)為是最先進(jìn)的。事實(shí)上,德國(guó)軍隊(duì)在二戰(zhàn)期間用它來(lái)發(fā)送私人通信。電影 《模仿游戲》 實(shí)際上 很好地解釋了對(duì)稱加密的工作原理以及它在戰(zhàn)爭(zhēng)期間所扮演的角色。
使用對(duì)稱加密,以純文本形式輸入的消息會(huì)經(jīng)過(guò)數(shù)學(xué)排列來(lái)加密。加密消息很難破解,因?yàn)橄嗤募兾谋咀帜?在加密消息中并不總是相同。例如,消息“HHH”不會(huì)加密為三個(gè)相同的字符。
要加密和解密消息,您需要相同的密鑰,因此稱為對(duì)稱加密。雖然在沒(méi)有密鑰的情況下解密 消息非常困難,但必須使用相同的密鑰來(lái)加密和解密消息這一事實(shí)帶來(lái)了巨大的風(fēng)險(xiǎn)。這是因?yàn)槿绻糜诠蚕砻荑€的分發(fā)渠道遭到破壞,整個(gè) 安全消息系統(tǒng)就會(huì)被破壞。 現(xiàn)存最著名的非對(duì)稱加密算法之一是由 Ron Rivest、Adi Shamir 和 Leonard Adleman 開(kāi)發(fā)的稱為 RSA 的算法。該算法基于因式分解問(wèn)題。
RSA
上圖顯示了 RSA 工作原理的簡(jiǎn)單示例。將明文 (2) 提高到公鑰 (5) 的冪:2^5 = 32。然后將該值除以公共模數(shù) (14),余數(shù) (4) 作為密文發(fā)送:32 % 14 = 4。
在另一端,使用私鑰而不是公鑰執(zhí)行相同的操作以生成明文:(4^11) % 14 = 2。此計(jì)算有效,因?yàn)檫x擇了公鑰和私鑰,因此它們是相反的在所選模數(shù)中。
橢圓曲線密碼學(xué)
基于整數(shù)的非對(duì)稱密碼學(xué)使用因式分解和離散對(duì)數(shù)問(wèn)題來(lái)構(gòu)建安全加密算法。橢圓曲線密碼學(xué)使用了相同的問(wèn)題,但稍有扭曲。
圓曲線密碼術(shù)
圓曲線密碼術(shù)不使用整數(shù)進(jìn)行計(jì)算,而是使用橢圓曲線上的點(diǎn),如上圖所示。私鑰仍然是一個(gè)隨機(jī)數(shù),但公鑰是曲線上的一個(gè)點(diǎn)。
在這些曲線上定義了一些不同的數(shù)學(xué)運(yùn)算。這里有兩個(gè)重要的:
點(diǎn)加法(相當(dāng)于整數(shù)乘法)
點(diǎn)乘法(相當(dāng)于整數(shù)取冪)
在這些曲線上,可以執(zhí)行與分解和離散對(duì)數(shù)問(wèn)題的“簡(jiǎn)單”運(yùn)算等效的計(jì)算。這意味著可以采用相同的基本算法來(lái)處理橢圓曲線。
但是為什么要打擾呢?橢圓曲線密碼學(xué)很有用,因?yàn)檩^小的密鑰長(zhǎng)度可提供相同級(jí)別的安全性。這意味著橢圓曲線密碼學(xué)使用更少的存儲(chǔ)、處理能力和能量來(lái)保護(hù)與基于整數(shù)的算法相同級(jí)別的數(shù)據(jù)。這些節(jié)省對(duì)于物聯(lián)網(wǎng) (IoT) 設(shè)備或智能手機(jī)等資源受限系統(tǒng)非常重要。
對(duì)稱和非對(duì)稱加密的優(yōu)缺點(diǎn)
對(duì)稱和非對(duì)稱加密算法都旨在完成相同的工作:保護(hù)數(shù)據(jù)的機(jī)密性。但是,他們以非常不同的方式完成工作,每種方法都有其優(yōu)點(diǎn)和缺點(diǎn):
對(duì)稱加密:對(duì)稱加密的主要優(yōu)點(diǎn)是它的效率。一般來(lái)說(shuō),對(duì)稱加密算法比非對(duì)稱加密使用更少的內(nèi)存和處理能力。
非對(duì)稱加密:非對(duì)稱加密不需要雙方在發(fā)送加密消息之前安全地共享密鑰。只要您擁有他們的私鑰,就可以與任何人安全地進(jìn)行通信。
這些不同的優(yōu)勢(shì)意味著對(duì)稱和非對(duì)稱密碼學(xué)經(jīng)常一起使用,就像在 TLS 協(xié)議中一樣。非對(duì)稱加密用于安全地交換對(duì)稱密鑰,對(duì)稱加密用于批量數(shù)據(jù)傳輸。
量子計(jì)算及其對(duì)密碼學(xué)的影響
在討論不同加密算法的優(yōu)缺點(diǎn)時(shí),重要的是要考慮到量子計(jì)算的發(fā)展。量子計(jì)算機(jī)有能力破解當(dāng)今常用的一些非對(duì)稱加密算法。
這樣做的原因是,非對(duì)稱密碼學(xué)中使用的一些“難”問(wèn)題對(duì)于量子計(jì)算機(jī)來(lái)說(shuō)并不“難”。雖然對(duì)于經(jīng)典計(jì)算機(jī)來(lái)說(shuō),因式分解是指數(shù)級(jí)的困難,但由于 Shor 算法的存在,它對(duì)于量子計(jì)算機(jī)來(lái)說(shuō)只有多項(xiàng)式困難。
如果乘法和因式分解都具有多項(xiàng)式復(fù)雜性,那么就不可能使用這個(gè)問(wèn)題來(lái)構(gòu)建一個(gè)既可用又安全的密碼系統(tǒng)。離散對(duì)數(shù)問(wèn)題也是如此。一旦足夠大的量子計(jì)算機(jī)可用,它也會(huì)被破壞。
然而,這并不意味著量子計(jì)算將是非對(duì)稱密碼學(xué)的終結(jié)。已經(jīng)發(fā)現(xiàn)了被認(rèn)為對(duì)量子計(jì)算機(jī)也“困難”的新問(wèn)題。這導(dǎo)致基于這些新的“硬”問(wèn)題開(kāi)發(fā)新的后量子非對(duì)稱加密算法。
關(guān)鍵詞: 一文讀懂加密算法的類型+每種算法都有優(yōu)缺點(diǎn) 對(duì)稱加密