密碼學開山篇——密碼學的基本概念

我國密碼政策

我國的密碼分級

  1. 核心密碼
    • 用於保護黨、政、軍的核心機密
  2. 普通密碼
    • 用於保護國家和事企單位的低於核心機密而又高於商用的機密信息
  3. 商用密碼
    • 用於保護國家和事企單位的非機密的敏感信息
  4. 個人密碼
    用於保護個人的隱私信息。

核心密碼、普通密碼、商用密碼由國家密碼管理局統一管理。

我國商用密碼政策

  1. 統一領導
    • 國家密碼管理局統一領導
  2. 集中管理
    • 國家密碼管理局集中管理
  3. 定點研製
    • 只允許指定單位進行研製
  4. 專控經營
    • 只有經受許可的單位才能經營
  5. 滿足使用
    • 國內各個單位都能申請使用

密碼學的基本概念

密碼學的基本思想

僞裝以隱蔽信息,使未經授權者不能理解它的真實含義。

  • 僞裝就是對信息進行一種可逆的數學變換
  • 僞裝前的原始信息稱爲明文,僞裝後的信息稱爲密文
  • 僞裝的過程稱爲加密,去掉僞裝還原明文的過程稱爲解密
  • 加密在加密密鑰的控制下進行,解密在解密密鑰的控制下進行
  • 用於加密的一簇數學變化稱爲加密算法,用於解密的一簇數學變換稱爲解密算法

密碼學的基本目標

在下面的一個通信模型中

image-20200317194035550

信源A 通過公開的信道向信宿B傳遞信息。這中間存在一個敵手,可以從公開信道發起攻擊。它有兩種攻擊方式:

  1. 被動攻擊(竊聽):獲取但不改變傳輸的信息
  2. 主動攻擊:不僅竊聽,而且還改變傳輸的信息,目的是實現僞造和欺騙。(不考慮破壞信道的主動攻擊)

我們對抗這種竊聽,採用的使加密技術

image-20200317195121423

這樣敵手獲取的就是加密後的信息,若不能破譯成功,就算攻擊失敗了。

而加密技術正解決信息的機密性問題——能解決信息的傳輸保密和存儲保密的問題

對抗主動攻擊,我們採用的是認證技術

image-20200317200314009

當敵手更改消息內容時,會使認證碼與消息不匹配。從而導致攻擊失敗。
我們主要對以下內容進行驗證:

  • 發方的身份
  • 收方的身份
  • 內容的真僞
  • 時間的真僞

認證技術解決的是信息的真實性認證問題(能夠檢測出主動攻擊)

對抗抵賴的技術——互不信任的雙方的認證問題

image-20200317201509086

所以,密碼學的基本目標就是解決信息安全的三個基本需求,即:

  • 信息的機密性保證
  • 信息的真實性認證
  • 承諾的不可否認性保證。

對於信息的機密性保證,我們有加密算法來完成;

對於真實性認證,由認證算法和配套的協議來完成;

對於承諾的不可否認性保證,由數字簽名算法、配套的協議和仲裁機構來完成。

下圖實現了一個加密算法的執行過程

image-20200317204943841

對敵手攻擊能力的假設

思想:假設敵手具有最強的攻擊能力

Kerckhoffs假設:假設敵手知除密鑰之外的所有知識

那麼就要求密碼算法應該滿足:一切的祕密蘊含於密鑰之中C

假設敵手知道:

  • 所使用的密碼算法

    • 加密算法Ek(m)E_k(m)
    • 脫密算法Dk(c)D_k(c)
    • 明文空間M
    • 密文空間C
    • 密鑰空間K
    • Ek:MCE_k:M \rightarrow C
  • 知道明文的概率分佈規律

  • 知道密文的概論分佈規律

  • 知道所有可能的破譯方法

爲何這樣假設?

  • 我們不能保證 敵手得不到這些信息
  • 如果在敵手最有力的條件下仍然不可破譯,則說明密碼算法在實際中更加安全
  • 對於性能相同的兩個密碼算法,我們一定要選擇強度高的密碼算法

密碼體制(CryptoSystem)的構成

由五部分組成<M,C,K,E,D>

  • 明文空間M:全體明文的集合
  • 密文空間C:全體密文的集合
  • 密鑰空間K:全體密鑰的集合,K=<Ke,Kd>K=<K_e,K_d>,其中KeK_e是加密密鑰,KdK_d是解密密鑰
  • 加密算法E:一簇由$M\rightarrow C $的加密變換
  • 解密算法D:一簇由CMC\rightarrow M解密變換,解密變換是加密變換的逆

對於一個確定的密鑰,加密算法將確定一個具體的加密變換,解密算法將確定出一個具體的解密變換,且解密變換是加密變換的逆變換。

也就是,對於明文空間中的任一個明文M,加密算法E加密密鑰KeK_e的控制下將明文加密成密文C:

C=E(M,Ke)C=E(M,K_e)

解密算法D解密密鑰KdK_d的控制下加密文解出來同一明文

M=D(C,Kd)=D(E(M,Ke),Kd)M=D(C,K_d)=D(E(M,K_e),K_d)

image-20200317162215557

上圖說明了一個雙方加密通信的一個過程,不安全的信道上傳送的是加密的信息。而解密算法在接收者哪裏,解密密鑰和加密密鑰通過特殊的更安全一點的信道傳輸。就算攻擊着竊取到密文,也很難解開。

密碼體制的分類

從加密密鑰與解密密鑰是否相等來劃分

  • 傳統密碼
    • Ke=KdK_e=K_d
    • 典型密碼:DES,AES,SMS4,RC4
  • 公開密鑰密碼
    • KeKdK_e\neq K_d
    • 而且從KeKdK_e不能計算出來K_d
    • 即使把KeK_e公開,這樣也不會危害KdK_d的安全
    • 典型密碼:RSA,EIGAMAL,ECC

從密鑰使用方式來劃分

  • 序列密碼

    • 明文、密文、密鑰**以位(字符)**爲單位加解密
    • 核心密碼的主流
    • 典型密碼:RC4,祖沖之密碼
  • 分組密碼

    • 明文、密文、密鑰以分組爲單位進行加解密
    • 商用密碼的主流
    • 典型密碼:DES,AES,SMS4

從密碼算法是否變化分

  • 固定算法密碼

    • 密碼在工作過程中算法固定不變,密鑰可變
    • 迄今爲止絕大多數密碼都是固定算法密碼
    • 典型密碼:AES,DES,SMS4,RC4,RSA,EIGAMAL,ECC
  • 演化密碼

    • 借鑑生物進化,將密碼學與演化計算結合
    • 密碼算法不斷演化、變換,而且越來越好
    • 實現密碼設計與密碼分析自動化的一種方法
    • 密碼系統智能化的一種成功的實踐

image-20200317172749224

從是否基於數學來劃分

  • 基於數學的密碼
    • 前面的所有密碼
  • 基於非數學的密碼
    • 量子密碼
      • 在唯密文攻擊性下無條件安全的密碼
      • 基於量子的保密物理屬性
      • 利用量子力學產生的真隨機數做密鑰,利用量子通信的保密性傳輸密鑰,利用模2加進行加密,而且按照一次一密的方式。
    • DNA密碼
      • 基於生物學中的困難問題
      • 由於不基於運算,所以無論計算機的計算能力多麼強大,與DNA密碼都是無關的
      • 尚不成熟,缺少理論,技術實現複雜

量子密碼和DNA密碼都屬於理論研究階段。

密碼學的組成

  • 研究密碼編制的科學稱爲密碼編制學(Cryptography)
    • 研究密碼算法的編制技術
    • 確切點是研究安全、高效的信息加密算法和信息認證算法的設計理論與設計技術
  • 研究密碼破譯的科學稱爲密碼分析學 (Cryptanalysis)
    • 研究密碼破譯的理論與技術
    • 密碼破譯包括信息加密算法的破譯和信息認證算法的破譯
    • 信息加密算法破譯的目的是獲取被加密的信息
    • 信息認證算法的破譯目的是僞造合理的消息,以達到僞造和欺騙的目的。
    • 密碼算法對抗密碼破譯的能力被稱爲密碼算法的保密強度
  • 密鑰管理學
    • 研究密鑰的生成、分配與管理的理論、技術和方法的科學

密碼編制學和密碼分析學共同組成密碼學(Cryptology)

密碼分析

可破譯與不可破譯

如果沒有密鑰?那麼誰都可以破譯。

如果能夠根據密文系統的確定出明文或密鑰,或者能後通過明文-密文系統的確定出密鑰,則我們說這個密碼是可破譯的

如果一個密碼被分析者截獲多少密文用什麼方法進行攻擊都不能被攻破,則稱爲是絕對不可破譯的。

理論上,絕對不可破譯的密碼是存在的,一次一密
任何可實用的密碼都是
可破譯
的。

窮舉攻擊

密碼分析者採用依次試遍所有可能的密鑰對所獲得的密文進行解密,直到得到正確的明文;或者依次用一個確定的密鑰對所有可能的明文進行進行加密,直到獲得所有的密文。
判定的標準就是脫密結果最合理的就是正確的密鑰。

理論上,對於任意可實用密碼只要有足夠的資源,都可以用窮舉攻擊將其攻破。目前:可能密鑰總數少於2642^{64}的密碼不能對抗窮舉攻擊。密鑰總數達到21282^{128},那麼我們認爲是可以抵抗窮舉攻擊的。

窮舉攻擊是最笨,但往往也是最有效的攻擊方法。比如某些人喜歡用生日、電話號碼當作密碼。
評定一個攻擊方法有效往往通過計算量、存儲量、已知的數據量和成功率來衡量的。

基於數學的分析

所謂數學分析是指密碼分析者針對加解密算法的數學依據,通過數學分析的方法來破譯密碼

統計分析攻擊:早期的基於數學的密碼分析主要是統計分析,它是指密碼分析者通過分析密文和明文的統計規律來破譯密碼。許多的古典密碼都可以通過統計分析而破譯。

公鑰密碼特別容易受到這種攻擊。因爲公鑰密碼是一種基於數學困難問題的密碼

爲了對抗數學分析,應當選用具有堅實數學基礎和足夠複雜的加解密算法。

基於非數學的分析

所謂非數學攻擊是指密碼分析者獲取並分析密碼芯片的物理參數(如,功率、電流、時間、執行時間等)來破譯密碼。
這種攻擊稱爲側信道攻擊

側信道攻擊的原理

  • 密碼芯片在執行不同的指令時候所消耗的功率、電流、時間、發出的聲音是不同的。
  • 密碼芯片在處理不同的數據時候所消耗的功率、電流、時間、發出的聲音是不同的

以獲取密鑰爲目的側信道攻擊。

以獲取密碼算法爲目的的側信道攻擊。

  • 芯片物理解剖
  • 側信道分析與數學分析結合

根據佔有的數據資源的分類

密碼學的基本假設:

  • 攻擊者總能獲得密文
  • 攻擊者總能知道密碼算法,但不知道密鑰
  • 攻擊者有足夠的計算資源
僅知密文攻擊(Ciphertext-only attack)

密碼分析者僅根據截獲的密文來破譯密碼。敵人除了加密算法、明文和密鑰的概論分佈外,還知道很多由同一個密鑰加密的密文。因爲密碼分析者僅知道密文,這是對密碼分析者最不利的情況

已知明文攻擊(Known-plaintext attack)

密碼分析者根據已經知道的明文-密文對,來破譯密碼。敵手除了具備僅密文攻擊的條件外,還具備許多密文對應的明文。

攻擊者總是能獲得密文,並猜出部分明文。計算機程序文件加密特別容易受這種攻擊。

選擇明文攻擊(Chosen-plaintext attack)

密碼分析者能夠選擇明文並獲得相應的密文。敵手除了具備一直明文攻擊外,還可以選擇對它有利的明文,並得到相應的密文。

計算機文件加密和數據庫加密特別容易受到這種攻擊

這是對攻擊者最有利的情況!

密碼學的理論基礎

信息論

  1. 從信息從信道傳輸中可能受到攻擊,引入密碼理論;
  2. 提出以擴散、混淆和乘積等基本方法設計密碼;
  3. 闡明瞭密碼體制,完善保密,理論保密和實際保密等概念。

設計複雜性理論

  1. 密碼的安全性以計算複雜度來度量;
  2. 現代密碼往往建立在一個數學難題上,而是計算複雜度的概念;
  3. 計算複雜度只能爲密碼提供一個必要條件。

密碼設計的基本方法

  1. 公開設計原則
    密碼的安全僅依賴於對密鑰的保密,不依賴於對算法的保密。

  2. 擴散和混淆
    擴散(diffusion):將明文和密鑰的每一位的影響散佈到儘可能多的密文位中,理想情況下達到完備性。
    混淆(confusion):使明文、密鑰和密文之間的關係複雜化。

    迭代與乘積
    迭代:設計一個輪函數,然後迭代
    乘積:幾種密碼聯合使用。

密碼算法設計的最理想狀態就是讓所有可能的破譯的方法都比窮舉攻擊更無效

安全的密碼算法應能夠對抗所有可能的攻擊方法——讓所有可能的攻擊方法失效

密碼學最基本的三個編碼技術

信息加密的一般流程

image-20200317222021081

其中消息到數字,和數字到消息,屬於信源編碼的問題。

代替編碼

利用預先設計好的代替規則,對明文進行逐字符或逐字符組進行代替的密碼

  • 分爲單表代替和多表代替兩種

移位密碼

各字符或字符組進行位置移動的密碼。

加減密碼

將明文逐字符或逐字符組與亂數相加或相減的密碼

單表代替密碼

利用預先設計好的固定代替規則,對明文進行逐字符或逐字符組進行代替的密碼

  • 固定是指代替規則只有一種,因而,密鑰和被加密的明文字符的序號無關。故相同的名文字符一定產生相同的密文字符。
  • 代替規則又稱爲代替函數、代替表或S盒
  • 字符或字符組又稱代替單位

特點:

  • 明文字符的形態一般將面目全非(形態變)
  • 明文的位置不變(缺)
  • 明文的跟隨關係反映在密文之中
    • 明文的跟隨關係反映在密文之中
    • 明文字符的統計規律就完全暴露在密文字符的統計規律之中

多表代替密碼

解決了單表代替密碼明文位置不變的問題

移位密碼

優點:

  • 明文字符的位置發生了改變

缺點:

  • 明文字符的形態沒有改變

可以與代替密碼結合實現強度很高的加密算法,可與代替密碼互補

加減密碼

雙減密碼

仿射密碼

可以與代替密碼結合實現強度很高的加密算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章