密碼學中,加密(英語:Encryption)是將原始資訊(稱為明文)轉換為另一種形式(稱為密文),使之不可讀的過程。在理想情況下,只有被授權者才能將密文解密回明文,並訪問原始資訊。加密本身並不能防止資訊在傳輸中被竊取或干擾,但能防止竊取資訊者獲得可理解的內容。

因為種種技術原因,加密方法通常使用一個通過演算法生成的偽隨機金鑰。雖然任何加密後的訊息即使不知道金鑰也可能被破解,但對於一個良好的加密演算法而言,破解需要相當多的技術和算力。被授權讀取資訊的人可以輕鬆通過發信人所提供的金鑰解密資訊,但未經授權的人員則不行。

在歷史上,密碼學中有眾多加密方法。早期的加密方法常用於軍事通訊。從此開始,現代計算中也出現了眾多加密技術,並且加密在現代計算中也變得越來越常見。[1] 現代的加密方式通常使用公鑰對稱金鑰。現代加密技術依賴現代電腦在破解金鑰上並不高效的事實來保證其安全性。

歷史

古代

最早的加密形式之一是符號替換(代換式密碼),被發現於公元前1900年埃及的赫努姆霍特普二世的墓葬中。符號替換加密是一種「非標準的」加密,這意味着符號需要密碼演算法(即替換規則)或金鑰才能被理解。這種早期的加密方式在整個古希臘和羅馬範圍內被用於軍事用途[2]。其中最為知名的軍用加密演算法之一是凱撒密碼(Caesar Cipher):這一演算法通過將明文中的字母在字母表中向後移動固定數量的位置來得到密文實現。使用這種方法加密的訊息可以使用凱撒密碼中的這一「固定數量」(即偏移量)來解密。

約公元800年時,阿拉伯數學家 Al-Kindi 開發了頻率分析法——一種對凱撒密碼進行系統性破解的嘗試[2]。這一技術着眼於密文中字母出現的頻率來確定合適的偏移量。然而,這一技術在1465年 Leon Battista Alberti 發明多字母密碼演算法後變得無效,因為該密碼中包括多種不同的語言。為了使頻率分析法發揮作用,破解者需要知道傳送者所使用的語言[2]

19至20世紀

約1790年時,Thomas Jefferson 提出了一種用於編解碼訊息的加密演算法,以提供一種更安全的軍事通訊方法。這一演算法現在被稱為輪式密碼或傑斐遜盤。雖然從未實際製造,但從原理上來看,其是一個具有多個轉輪的圓柱軸,可用於混淆長達36字元的英語訊息。要解密這一訊息,只需將其插入具有相同密碼演算法的接收器即可。

另一種類似傑斐遜盤的裝置M-94由美國陸軍少校 Joseph Mauborne 於1917年獨立研製。直到1942年,美軍一直將其用於通訊。

第二次世界大戰中,軸心國使用了一種更為先進的M-94裝置,稱為恩尼格瑪密碼機。與傑斐遜盤和M-94不同,一組密碼字母組合每天都會被完全更換,而每天所使用的密碼字母組合只有軸心國知道。因此,當時許多人認為破解密碼的唯一方法是在24小時內嘗試超過17000種密碼字母組合[3]。而盟軍利用算力嚴格限制了他們需要每天檢查的組合數量,從而導致了恩尼格瑪密碼機的失效。

現代

如今,加密被用於商業與安全用途的互聯網傳輸通訊中[4]。而隨着算力的不斷增長,電腦加密也在持續進化,以防止竊聽攻擊。1999年時,首個現代密碼演算法之一DES(其使用56位金鑰,具有72,057,594,037,927,936種金鑰可能性)在22小時15分鐘內被EFF的DES破解器通過暴力破解方式破解。而現代加密標準通常使用更為強壯的金鑰長度,通常可達256位,如AES-256TwofishChaCha20Serpent等。一般認為使用128位元或更高強度的金鑰的加密演算法無法被暴力破解,因為總共存在約3.4×10^38種金鑰可能性,對於大多數現代電腦的算力無法在可接受的時間內得到金鑰(並非絕對不可破解,只是暴力破解需要的成本過高)。對較長金鑰的密碼的破解的最可能選擇是發現密碼演算法本身漏洞,如串流加密法RC4由於原生偏移量和缺陷被破解。

分類

對稱金鑰加密

對稱金鑰加密方案中,加密和解密金鑰是相同的。通訊方必須具有相同的金鑰才能實現安全通訊。對稱金鑰的一個典型例子:德國軍方的恩尼格瑪密碼機。這種密碼機每天都有金鑰設置。當盟軍弄清楚機器如何工作時,他們能夠在發現給定日期傳輸的加密金鑰後立即解密訊息中編碼的資訊。

公鑰加密

在公鑰加密(即公開金鑰加密)方案中,發佈加密金鑰供任何人使用和加密訊息。但是,只有接收方才能訪問能夠讀取訊息的解密金鑰。公鑰加密最早是在1973年的一份秘密檔案中描述的[5]; 之前所有加密方案都是對稱金鑰加密(也稱為私鑰)。

應用

加密可以用於保證安全性,但是其它一些技術在保障通訊安全方面仍然是必須的,尤其是關於數據完整性和資訊驗證。例如,訊息鑒別碼(MAC)或者數碼簽章

相關軟件

加密或軟件編碼隱匿(Code Obfuscation)同時也在軟件版權保護中,用於對付反向工程,未授權的程式分析,破解和軟件盜版及數碼內容數碼版權管理DRM)等。

加密演算法

加密演算法就是加密的方法。

加密演算法可以分為兩類:對稱加密非對稱加密

密碼學中,加密是將明文資訊隱匿起來,使之在缺少特殊資訊時不可讀。

對稱加密就是將資訊使用一個金鑰進行加密,解密時使用同樣的金鑰,同樣的演算法進行解密。

非對稱加密,又稱公開金鑰加密,是加密和解密使用不同金鑰的演算法,廣泛用於資訊傳輸中。

參見

參考資料

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.