1. 程式人生 > 其它 >資訊保安工程師----五天修煉(第三章 3.1密碼學的基本概念)

資訊保安工程師----五天修煉(第三章 3.1密碼學的基本概念)

技術標籤:資訊保安工程師資訊保安工程師

第三章 3.1密碼學的基本概念

密碼學的基本概念

研究密碼編制的科學稱為密碼編制學(Cryptography)
研究密碼破譯的科學稱為密碼分析學(Cryptanalysis)
密碼編制學和密碼分析學共同組成密碼學(Cryptology)

密碼學作為資訊保安的基礎,其安全目標主要包括三個非常重要的方面:保密性(confidentiality)、完整性(integrity)和可用性(availability)

保密性:確保資訊僅被合法使用者訪問,而不被洩露給非授權的使用者、實體或過程

完整性:是指所有資源只能由授權方或以授權的方式進行修改,即資訊未經授權不能進行改變的特性

可用性:是指所有資源在適當的時候可以由授權方訪問,即資訊可被授權實體訪問並按需求使用的特性

如果能夠根據密文系統地確定出明文或金鑰,或者能夠根據明文—密文對系統地確定出金鑰,則我們說這個密碼是可破譯的。

密碼分析者攻擊密碼的方法主要有以下三種

窮舉攻擊:密碼分析者採用依次試遍所有可能的金鑰對所獲密文進行解密,直至得到正確的明文

統計分析攻擊:就是指密碼分析者通過分析密文和明文的統計規律來破譯密碼

數學分析攻擊:是指密碼分析者針對加密演算法的數學依據通過數學求解的方法來破譯密碼

攻擊密碼的型別分為以下四種:

僅知密文攻擊(Ciphertext-only attack):是指密碼分析者僅根據截獲的密文來破譯密碼。
明文攻擊(Known-plaintext attack):是指密碼分析者根據已經知道的某些明文-密文對來破譯密碼。

選擇明文攻擊(Chosen-plaintext attack):是指密碼分析者不僅可以得到一些“明文-密文對”,還利用選擇被加密的明文,並獲得相應的密文(差分分析屬於選擇明文攻擊,通過比較分析有特定區別的明文在通過加密後的變化情況來攻擊密碼演算法)
選擇密文攻擊(Chosen-ciphertext attack):是指密碼分析者能夠選擇密文並獲得相應的明文。這種方法對攻擊者最有利。主要攻擊公開金鑰密碼體制,特別是攻擊其數字簽名

置換密碼:明文的字母不變,但位置被打亂了

代替密碼:代替密碼是指先建立一個替換表(代替密碼的金鑰),加密時通過查表,將明文的每個字母依次替換為對應的字元,生成密文。根據代替密碼使用替換表的個數,了、可以將代替密碼分為單表替代密碼,多名碼代替密碼,多字母代替密碼,多表代替密碼

單表代替密碼又稱為簡單代替密碼,一個明文字元對應一個密文字元,常見的簡單代替密碼有加法密碼、乘法密碼、仿射密碼等。

加法密碼

對每個c, m ∈Zn,加法密碼的加密和解密演算法是:
C= Ek(m)= (m+k) mod n
M= Dk©= (c-k) mod n
k是滿足0 <k < n 的正整數。若n是26個字母,加密方法是用明文字母后面第k個字母代替明文字母
Caesar(凱撒)密碼是典型的加法密碼,由Julius Caesar 發明,最早用在軍方。將字母表中的每個字母,用它後面的第3個字母代替
Caesar密碼舉例

明文:meet me after the toga party

密文:PHHW PH DIWHU WKH WRJD SDUWB

對每個明文字母m,用密文字母c代換,那麼Caesar 密碼演算法如下:

加密: C = E(m) = (m + 3) mod 26

解密: M = D© = (c–3) mod 26

移位可以是任意的,如果用k(1≤k≤25)表示移位數,則通用的Caesar 密碼演算法表示為:

加密: C = Ek(m) = (m + k) mod 26

解密: M = Dk© = (c–k) mod 26

乘法密碼

對每個c, m ∈Zn,乘法密碼的加密和解密演算法是:
C= Ek(m)= (mk) mod n
M= Dk©= (ck-1) mod n
其中k和n互素,即gcd(k, n)=1,否則不存在模逆元,不能正確解密
乘法密碼的密碼空間大小是φ(n),φ(n)是尤拉函式。乘法密碼的金鑰空間很小,當n為26字母,則與26互素的數是1、3、5、7、9、11、15、17、19、21、23、25,即φ(n)=12 因此乘法密碼的金鑰空間為12。
乘法密碼也稱取樣密碼,因為密文字母表是將明文字母按照下標每隔k位取出一個字母排列而成。
乘法密碼舉例
例3.2 假設選取金鑰為9,使用乘法密碼的加密演算法,那麼明文字母和密文字母的代換表構造如下

在這裡插入圖片描述

若明文為a man liberal in his views
那麼密文為AENVUJKXUNLUGHUKQG

仿射密碼
加法密碼和乘法密碼結合就構成仿射密碼,仿射密碼的加密和解密演算法是:
C= Ek(m)=(k1m+k2) mod n
M= Dk©=k1-1(c- k2) mod n
仿射密碼具有可逆性的條件是gcd(k, n)=1。當k1=0時,仿射密碼變為加法密碼,當k2=0時,仿射密碼變為乘法密碼。
仿射密碼中的金鑰空間的大小為nφ(n),當n為26字母,φ(n)=12,因此仿射密碼的金鑰空間為12×26 = 312。
仿射密碼舉例
例3.3設金鑰K= (7, 3), 用仿射密碼加密明文hot。

三個字母對應的數值是7、14和19。分別加密如下:

  (7×7 + 3) mod 26 = 52 mod 26 =0

  (7×14 + 3) mod 26 = 101 mod 26 =23

  (7×19 + 3) mod 26 =136 mod 26 =6

三個密文數值為0、23和6,對應的密文是AXG

古典密碼破譯方法

窮舉分析:對於加法密碼,金鑰整數K只有n-1個不同的取值。對於明文字母表為英文字母表的情況,K只有25種可能的取值。即使是對於明文字母表為8位擴充套件ASCII碼而言,K也只有255種可能的取值。因此,只要對K的可能取值逐一窮舉就可破譯加法密碼。

統計分析:任何自然語言都有許多固有的統計特性。如果自然語言的這種統計特性在密文中有所反應,則密碼分析者便可以通過分析明文和密文的統計規律而將密碼破譯。許多古典密碼都可以用統計分析的方法破譯。

量子演算法

量子的疊加性和相干性原理具有計算能力

量子計算演算法主要有Grover演算法和Shor演算法,在量子計算環境下,RSA,EIGamal,ECC公鑰密碼和DH金鑰協商協議將不再安全