加密

过程

密碼學中,加密(英語: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)等。

加密算法

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

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

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

對稱加密就是將信息使用一個密鑰進行加密,解密時使用同樣的密鑰,同樣的算法進行解密。

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

參見

參考資料

  1. ^ Kessler, Gary. An Overview of Cryptography. Princeton University. November 17, 2006 [2020-11-18]. (原始內容存檔於2020-12-12). 
  2. ^ 2.0 2.1 2.2 History of Cryptography | Binance Academy. web.archive.org. 2020-04-26 [2024-05-12]. 
  3. ^ Hern, Alex. How did the Enigma machine work?. The Guardian. 2014-11-14 [2024-05-12]. ISSN 0261-3077 (英國英語). 
  4. ^ CISSP, Gary C. Kessler, Ph.D., CCE,. An Overview of Cryptography. www.garykessler.net. [2024-05-12]. 
  5. ^ Public-Key Encryption - how GCHQ got there first!. [2019-09-17]. 原始內容存檔於2010-05-19.