密碼學/簡介
密碼學是研究資訊隱藏和驗證的學科。它包括協議、演算法和策略,用於安全且一致地防止或延緩對敏感資訊的未經授權的訪問,並實現對通訊中每個元件的可驗證性。
密碼學源於希臘語:kryptós,“隱藏”,和gráphein,“寫作” - 或“隱藏的寫作”。研究和發展密碼學的人被稱為密碼學家。研究如何規避密碼學對意外接收者的使用稱為密碼分析,或破譯。密碼學和密碼分析有時統稱為密碼學,涵蓋整個學科。在實踐中,“密碼學”也經常用來指代整個領域,特別是作為應用科學。在 21 世紀初,在一個日益互聯和技術化的世界中,密碼學開始無處不在,人們也越來越依賴它帶來的好處,特別是更高的安全性和可驗證性。
密碼學是一個跨學科的學科,借鑑了多個領域。在計算機時代之前,它與語言學密切相關。如今,重點已經轉移,密碼學廣泛使用數學的技術領域,特別是那些統稱為離散數學的領域。這包括來自數論、資訊理論、計算複雜性、統計學和組合學的主題。它也是工程學的一個分支,但它是一個不尋常的分支,因為它必須處理積極的、聰明的和惡意的反對。
密碼學子領域的例子是隱寫術 - 研究隱藏訊息的存在,而不一定是訊息本身的內容(例如,微點或隱形墨水) - 以及流量分析,即分析通訊模式以瞭解秘密資訊。
當資訊從可理解的形式轉換為不透明的形式時,這稱為加密。當資訊恢復為可理解的形式時,這稱為解密。資訊的預期接收者或授權使用取決於使用者是否擁有特定的秘密知識。只有擁有秘密知識的使用者才能將不透明的資訊轉換回其可理解的形式。秘密知識通常稱為金鑰,儘管秘密知識可能包括用於加密/解密的整個過程或演算法。資訊以其可理解的形式稱為明文(或純文字);以其加密的形式稱為密文。用於加密和解密的演算法稱為密碼(或密碼)。
密碼學中的常見目標
[edit | edit source]本質上,密碼學涉及四個主要目標。它們是
- 訊息機密性(或隱私):只有授權的接收者才能從其加密形式中提取訊息的內容。這是透過隱藏、阻止或延遲對加密資訊的自由訪問來實現的。
- 訊息完整性:接收者應該能夠確定訊息是否已被篡改。
- 傳送者身份驗證:接收者應該能夠從訊息中驗證傳送者的身份、訊息的來源或它經過的路徑(或組合),以驗證發射者的宣告或驗證接收者的預期。
- 傳送者不可否認性:傳送者不應該能夠否認傳送訊息。
並非所有密碼系統都能實現上述所有目標。密碼學的一些應用有不同的目標;例如,某些情況需要否認,其中參與者可以合理地否認他們是訊息的傳送者或接收者,或將這些目標擴充套件到包括以下變體:
- 訊息訪問控制:誰是訊息的有效接收者。
- 訊息可用性:透過提供限制訊息、通道、發射者或接收者在時間或空間上的有效性的方法。
密碼學的常見形式
[edit | edit source]密碼學涉及所有合法的資訊使用者都擁有訪問該資訊的所需金鑰。
- 如果傳送者和接收者必須使用相同的金鑰來對受保護的資訊進行編碼或解碼,則該密碼是對稱金鑰密碼,因為每個人都使用相同的金鑰來處理同一訊息。主要問題是,金鑰必須以某種方式私下地提供給傳送者和接收者。因此,對稱金鑰密碼也稱為私鑰(或金鑰)密碼。
- 如果傳送者和接收者分別擁有與其在通訊中所扮演的角色相對應的不同金鑰,則該密碼是非對稱金鑰密碼,因為對同一訊息的編碼和解碼存在不同的金鑰。它也稱為公鑰加密,因為使用者公開分發其中一個金鑰,而不擔心保密。在向用戶傳送機密訊息的情況下,他們會分發加密金鑰。非對稱加密依賴於這樣一個事實,即擁有加密金鑰不會洩露解密金鑰。
- 數字簽名是身份驗證的一種形式,與公鑰加密有一些相似之處。兩個金鑰是公共驗證金鑰和秘密簽名金鑰。與公鑰加密一樣,驗證金鑰可以分發給其他人,但前提是分發過程應該以某種方式驗證秘密金鑰的所有者。安全性依賴於這樣一個事實,即擁有驗證金鑰不會洩露簽名金鑰。
- 雜湊函式是具有特殊屬性的無金鑰訊息摘要。
其他
設計不良或實現不良的密碼系統只能透過偶然、虛張聲勢或對手缺乏興趣來實現這些目標。使用者可以,並且經常會,在信譽良好的密碼方案中找到弱點,即使這些方案設計精良。
即使使用設計精良、實現良好且使用得當的密碼系統,某些目標在某些情況下也不實用(或不可取)。例如,訊息傳送者可能希望匿名,因此會故意選擇不使用不可否認性。或者,該系統可能是為了在計算資源有限的環境中使用,或者訊息機密性可能不是問題。
在古典密碼學中,訊息通常被加密並從一個人或一組人傳送到另一個人或一組人。在現代密碼學中,對於“傳送者”或“接收者”有很多可能的選項。一些例子,用於現代世界的真實密碼系統,包括
- 在本地計算機上執行的計算機程式,
- 在“附近”的計算機上執行的計算機程式,該程式為其他附近系統上的使用者“提供安全服務”,
- 一個人(通常被理解為“在鍵盤上”)。但是,即使在這個例子中,假設的人類通常也不被認為實際上對任何東西進行加密、簽名、解密或身份驗證。相反,他或她指示計算機程式執行這些操作。人類行為與被認為(無需過多考慮)“由人類完成”的行為之間的這種“模糊分離”是密碼系統設計、實現和使用中出現問題的一個來源。這些問題通常非常微妙,也相應地模糊;實際上,即使對於具有知識、技能和良好工程意識的實踐密碼學家來說,也是如此。
當存在關於這些點的混淆時(例如,在設計階段、在實現過程中、安裝後由使用者使用,或者…),在實現每個陳述的目標時很容易出現故障 - 通常不會引起任何參與的人類注意,甚至給定一個完美的密碼系統。這種故障通常是由於密碼學以外的問題造成的;每次這樣的故障都表明,好的演算法、好的協議、好的系統設計和好的實現本身並不能,甚至結合起來也不能提供“安全”。相反,需要仔細考慮整個密碼系統的設計及其在實際裝置上由實際人員在執行“生產”系統軟體(例如,作業系統)時在實際生產中的使用 - 這在實踐中經常缺失或不足。世界的密碼系統。
儘管密碼學有著悠久而複雜的歷史,直到 19 世紀,密碼學才發展出比對加密或密碼分析(尋找密碼系統弱點科學)的臨時方法更先進的方法。後者的例子包括查爾斯·巴貝奇在克里米亞戰爭時代對多字母密碼的數學密碼分析工作,後來由普魯士的卡西斯基公開重複。在這段時間裡,密碼學幾乎沒有理論基礎;相反,對密碼學的理解通常由來之不易的知識片段和經驗法則組成;例如,參見 19 世紀後期的奧古斯特·科赫斯(Auguste Kerckhoffs)的密碼著作。一個日益增長的數學趨勢一直加速到第二次世界大戰(特別是在威廉·F·弗裡德曼將統計技術應用於密碼學以及馬裡安·雷耶夫斯基最初破解德國陸軍的謎機系統)。第二次世界大戰以來,密碼學和密碼分析都變得更加數學化。即使在那時,也是廣泛的計算機可用性和網際網路作為通訊媒介,才使除了國家政府或類似大型企業以外的任何人普遍使用有效密碼學。
外部連結