CISSP 第七章 密碼術

密碼術

7.1 密碼學的歷史

加密方法從原來的主要爲顯示信息發展成爲隱藏信息。

替代密碼substitution cipher:每個字母被替換成另一個字母
單字母替代密碼monoalphabetic substitution cipher:只是用一個字母表
多字母替代密碼polyalphabetic substitution cipher:使用多個字母表

atbash:將字母表調換順序,是替代密碼的一個實例

密碼棒密碼scytale cipher

凱撒密碼:每個字母右移三位,是單字母替代密碼的一個實例

7.2 密碼學定義與概念

提供加解密的系統或產品稱爲密碼系統(cryptosystem)

7.2.1 Kerckhoffs原則

密碼系統唯一需要保密的部分應當是密鑰,算法應該被公開

7.2.2 密碼系統的強度

加密方法的強度源自算法的複雜程度、密鑰的機密度、密鑰的長度、初始化向量以及它們如何在密碼系統內協同工作。

7.2.3 密碼系統的服務

密碼系統可以提供機密性、完整性、身份驗證、授權和不可否認性。

7.2.4 一次性密碼本one-time pad

一次性密碼本由隨機位組成,加密過程採用異或的函數,必須被安全分發至目的地,和明文消息一樣長。

7.2.5 滾動密碼與隱藏密碼

滾動密碼running key cipher:可以是一本書的頁碼組成的消息
隱藏密碼concealment cipher:是消息中的消息,比如以每隔3個單詞爲密鑰值

7.2.6 隱寫術steganography

隱寫術是一種將數據隱藏在另一種介質中以藏匿數據的方法,是通過隱匿實現安全。

隱寫術涉及的組件:
載體:內部具有隱藏信息的信號、數據流或文件
隱寫介質:將信息隱藏在內的介質
有效載荷:要隱藏和傳輸的信息

最低有效位(Least Significant Bit,LSB)是一種在某些類型的介質中嵌入消息的方法。最適合在內部隱藏數據的是具有高分辨率的圖片或不同類型聲音的音頻文件。

數字水印(digital watermark)也是一種隱寫術,目的是限制使用某家或個人所擁有的素材,稱爲數字權利管理(Digital Rights Management,DRM)

7.3 密碼的類型

對稱加密密碼具有兩種基本類型:替代和換位(置換)
簡單的替代和換位密碼容易遭受頻率分析(frequency analysis)攻擊

7.3.1 替代密碼

使用密鑰來規定應當如何實現替代,實例:凱撒密碼

7.3.2 換位密碼transposition ciper

採用不同的順序移動字符的位置

密鑰衍生函數(Key Derivation Function,KDF)用於從初始值(主密鑰)生成由隨機值構成的子密鑰。
算法是靜態的,密碼學提供的隨機性主要依靠構建密鑰的素材。

7.4 加密的方法

7.4.1 對稱算法和非對稱算法

對稱算法—對稱密鑰(祕密密鑰)
非對稱算法—非對稱密鑰(公鑰和私鑰)

7.4.2 對稱密碼學

發送方和接收方使用相同的密鑰來加解密,加解密的速度很快,可以提供機密性,但不能提供身份驗證和不可否認性,使用非常大的密鑰時破解也很困難。

DES,3DES,Blowfish,IDEA,AES,RC4,RC5,RC6

7.4.3 非對稱密碼學

使用發送方的私鑰加密數據稱爲公開消息格式(open message format),確保身份驗證
使用接收方的公鑰來加密數據稱爲安全消息格式(secure message format),保證機密性

公鑰和私鑰都可以用於加解密,能提供身份驗證和不可否認性,具有更好的密鑰分發功能,易於擴展。

RSA,ECC,數字簽名算法DSA,Diffie-Hellman,Merkle-Hellman揹包算法,El Gamal

7.4.4 分組密碼與流密碼

對稱算法的兩種主要類型:分組密碼和流密碼

  1. 分組密碼block cipher

消息被劃分成若干分組,再通過擾亂(confusion)和擴散(diffusion)方法加密
擾亂:通過替代實現
擴散:通過換位實現,一個明文位的改變會更改許多密文位

  1. 流密碼stream cipher

將消息作爲位流對待,通過密碼流生成器(keystream generator)生成的位流與明文位進行異或運算從而產生密文,類似一次性密碼本

  1. 初始化向量Initialzation Vector

IV是算法中爲了確保加密過程不會產生某種模式的隨機值,確保使用相同密鑰加密相同的明文不會產生相同的密文。

強大的流密碼算法應具備的額特徵:
密鑰流值具有長週期無重複的模式,不可預知,與密鑰線性無關,統計平衡(0和1數量差不多)

流密碼加解密速度快,能夠迎合增加帶寬的要求。
流密碼適合硬件使用,因爲需要強大的處理能力,分組密碼適合軟件使用。

  1. 密碼轉換技術

擾亂、擴散、雪崩、IV、隨機密碼生成器
壓縮、擴張、填充、密鑰混合

7.4.5 混合加密方法

  1. 對稱與非對稱算法混合使用

公鑰密碼學(public key cryptography):非對稱算法爲保護加密密鑰和密鑰分發而生成的公鑰和私鑰,對稱算法爲加解密數據生成的保密密鑰
保密密鑰/祕密密鑰用於加密消息,非對稱密鑰用於加密要傳輸的祕密密鑰

  1. 會話密鑰session key

只使用一次的對稱密鑰,用於對通信會話期間的兩個用戶間的消息進行加密

WEP就沒有使用會話密鑰進行數據加密,802.11i進行了優化,確保每個數據包都使用唯一的會話密鑰進行加密。

7.5 對稱系統的類型

7.5.1 數據加密標準DES

DES使用64位密鑰(其中8位用於奇偶校驗,56位是實際密鑰)
AES的Rijndael算法後來替代了DES,用於加密敏感但未分類的信息。

  1. DES的工作方式

DES是對稱分組加密算法

  1. 算法被破解的意義

會話密鑰的重要性

  1. DES模式

電子密碼本Electronic Code Book,ECB
每個數據分組使用完全相同的密鑰進行加密,沒有單獨爲每組加密提供足夠的隨機性。一旦密鑰被破解,就能解密所有的密文,也可以收集明文密文,反向建立密碼本。

ECB是最快最方便的模式,可以用於加密少量數據,如PIN、身份驗證過程中的挑戰/響應值以及加密的密鑰。

密碼分組鏈接Cipher Block Chaining,CBC
算法處理每個文本分組、密鑰以及基於前一個分組的值,並將他們應用於下一個文本分組,第一個分組與初始化向量進行異或處理再加密。
CBC只加密64位大小的數據分組。

密碼反饋Cipher Feedback,CFB
一般使用CFB來加密比較小型的數據,因此必須對每個新的數據流都使用一個新的IV值。
CFB可以用於加密任意大小的數據分組,常見的是8位,方式和CBC相同。

輸出反饋Output Feedback,OFB
與OFB類似,一次性加密少量數據(1~8位),優勢是能保證可能的錯誤不會影響加解密過程,適用於對錯誤非常敏感的數據(如數字化視頻或數字化語音信號)

計數器模式Counter Mode,CTR
與OFB類似,但沒有隨機唯一的IV值,而是使用IV計數器隨每個需要加密的明文分組而遞增。也沒有鏈路關係,單個數據分組的加密過程可以並行發生,且接收方不必等接收到所有消息再解密。

同步加密系統和異步加密系統

同步:使用密鑰流一次加密明文一個位,密鑰流與明文值同步,如流算法
異步:使用前面生成的輸出值來加密現有的明文值,如使用鏈路的分組算法

7.5.2 3DES

三重DES,Triple Data Encryption Algorithm
性能差,完成加解密所用的時間比DES長3倍

4種不同模式:
DES-EEE3,DES-EDE3,DES-EEE2,DES-EDE2

7.5.3 高級加密標準AES

Advanced Encryption Standard,是分組密碼,被用來替代DES
Rijndael是AES內使用的算法,支持128,192,和256位大小的數據分組,對存儲器的要求較低,能夠抵禦時序攻擊。

7.5.4 國際數據加密算法IDEA

International Data Encryption Algorithm,是分組密碼
密鑰長度是128位,分組是64位,比DES速度快

7.5.5 Blowfish

是分組密碼,處理64位數據分組,密鑰長度32~448位

7.5.6 RC4

是流密碼,密鑰長度可變,用於SSL和WEP協議,算法簡單快捷有效,但擴散率低,容易遭到修改攻擊

7.5.7 RC5

是分組密碼,分組大小、密鑰長度和運行的輪數都是可變的,分組大小通常爲32/64/128位,密鑰長度可達2048位,用於加解密的輪數最多255輪

7.5.8 RC6

是分組密碼,使用128位分組和各種長度的密鑰(128/192/256),速度比RC5塊

7.6 非對稱系統的類型

對稱密鑰密碼學的缺點:

  1. 只能提供機密性,不提供身份驗證或不可否認
  2. 可擴展性弱,需要通信的人數越多,需要管理維護的對稱密鑰數也增多
  3. 密鑰的分發必須由安全信使送交至目的地

於是,出現了非對稱密鑰密碼學

7.6.1 Diffie-Hellman算法

Diffie-Hellman使兩個系統不需要提前建立關係或預先安排就能安全地交換對稱密鑰,只能用於密鑰的交換,不能進行消息的加密和解密。容易受到中間人攻擊,且不提供加密和數字簽名功能。
比如A發送“對稱密鑰S+B的公鑰”給B,B怎麼能確定密鑰S是A發出來的呢?無法確定,即無法提供數字簽名功能。

Diffie-Hellman的數學原理是在一個有限域內計算離散對數的困難性

7.6.2 RSA

RSA公鑰用於加密和簽名認證,私鑰用於解密和生成簽名。
RSA也可以用於加密傳輸對傳密鑰。

RSA的數學原理基於將一個大整數分解成兩個質數的困難性。

7.6.3 EI Gamal

EI Gamal是一種可用於數字簽名、加密和密鑰交換的公鑰算法。
EI Gamal的數學原理是在一個有限域內計算離散對數的困難性,是Diffie-Hellman算法的擴展。
是最慢的算法。

7.6.4 橢圓曲線密碼系統ECC

與RSA類似,能提供數字簽名、加密和安全密鑰交換,比RSA和其他非對稱算法效率更高。
ECC的數學原理是計算橢圓曲線的離散對數。

ECC適用於資源有限(有限的處理能力、存儲量、電源供應和帶寬)的設備,可以使用比RSA更短的密鑰提供同樣級別的保護。

7.6.5 揹包算法Knapsack

第一版只能加密,之後可以提供數字簽名
算法基於“揹包問題”,不安全,現已棄用

7.6.6 零知識證明zeroknowledge proof

證明者向驗證者證明並使其相信自己知道或擁有某一消息,但證明過程不能向驗證者泄漏任何關於被證明消息的信息。

比如,A使用私鑰加密信息發送給B,B使用A的公鑰解密成功,說明A擁有私鑰。這個過程中,A並沒有告訴B他的私鑰,但使B相信他是擁有私鑰的。

7.7 消息完整性

校驗位和循環冗餘校驗(CRC)一般可以檢測出無意的數據更改,如線路干擾斷電導致的數據變化。
散列算法可以用於檢測有意或無意的未授權更改。

7.7.1 單向散列

單向散列是一種函數,將可變的消息變換成固定長度的值,即散列值。
散列函數是公開的。使用散列函數的消息可以被篡改,接收方無法確證其是否被修改。

如何對消息傳輸時沒有經過任何修改?使用消息身份驗證代碼(MAC)
MAC函數是通過以某種形式對消息應用祕密密鑰而派生的一種身份驗證機制。
3種基本類型:

  1. HMAC

對“消息+對稱密鑰”使用散列算法,得到MAC值,傳輸“消息+MAC值”給接收方,接收方以相同的方式計算MAC值,進行對比。

這個技術要求雙方擁有相同的對稱密鑰,但HMAC函數不包括將對稱密鑰安全傳輸到目的地。這需要通過Diffie-Hellman或RSA實現。

HMAC能提供數據源身份驗證和完整性保證,但不保證機密性。

  1. CBC-MAC

在CBC模式下使用對稱分組密碼對消息進行加密,並將輸出的密文分組用作MAC。傳送附有MAC值的明文消息給接收方。

MAC提供了數據源身份驗證,也叫系統身份驗證,使得接收方知道消息來自擁有相同對稱密碼的另一個副本的系統。

CBC-MAC能提供數據源身份驗證和完整性保證,但不保證機密性。

  1. CMAC

對稱算法(AES或3EDS)創建對稱密鑰,對稱密鑰用於創建子密鑰,子密鑰單獨使用,以加密一條消息的不同分組。
工作方式與CBC-MAC相同,但基於更復雜的邏輯和數學函數。

7.7.2 各種散列算法

良好的密碼散列函數的特徵:

  • 對整條消息計算散列值
  • 單向函數
  • 能避免衝突,不存在多條不同的消息生成相同的散列值
  • 能抵禦生日攻擊
  1. MD2
    單向散列函數,產生128位消息摘要,運行速度慢

  2. MD4
    單向散列函數,產生128位消息摘要,可應用於軟件實現的快速計算環境

  3. MD5
    單向散列函數,產生128位消息摘要,算法複雜,更安全
    容易遭受衝突攻擊,不適用於需要防禦衝突攻擊的SSL認證和數字簽名

  4. SHA
    SHA產生160位的散列值,產生的結果輸入非對稱算法,從而爲消息計算簽名。
    SHA可以抵禦蠻力攻擊,包括生日攻擊。

  5. HAVAL
    可變長的單向散列函數,消息分組是1024位,產生的散列值長度爲128~256位

  6. Tiger
    主要是對64位系統執行散列功能,比MD5和SHA-1都要快,產生192位散列值

7.7.3 針對單向散列函數的攻擊

好的散列算法不會爲多條不同的消息產生相同的散列值,這稱之爲衝突。
攻擊者可以製造衝突,稱爲生日攻擊。

如果散列算法的輸出爲n,那麼要通過蠻力攻擊找出具體特定散列值的消息需要計算2的n次方條隨機消息的散列值。
如果要找到兩條有相同散列值的消息,那麼需要計算2的n/2次。

散列算法的輸出位越長,強度就越大,對蠻力攻擊的抵禦能力越強。

7.7.4 數字簽名

數字簽名是使用發送方私鑰加密的散列值。

加密—機密性
散列算法—完整性
數字簽名—身份驗證、不可否認性、完整性
加密和數字簽名—加密性、身份驗證、不可否認性、完整性

在這裏插入圖片描述

7.7.5 數字簽名標準

美國聯邦政府要求使用SHA生成160位消息摘要輸出,再輸入到DSA、RSA或橢圓曲線數字簽名算法中,以確保完整性和數字簽名。

DSA只能夠用於數字簽名,比RSA慢。
RSA可以用於數字簽名、加密以及對稱密鑰的安全分發。

7.8 公鑰基礎設施PKI

公鑰密碼學是PKI的一個組成部分。
PKI的組成:認證授權、註冊授權、證書、密鑰以及用戶

7.8.1 認證授權機構CA

CA負責創建和分發證書,保管證書,以及在必要時取消證書。
取消證書的信息存在證書撤銷列表中(Certificate Revocation List,CRL),也可以使用在線證書狀態協議(Online Certiicate Status Protocol,OCSP),OCSP會檢查由CA維護的CRL。

7.8.2 證書

CA創建證書的標準是X.509
證書包含序列號、版本號、身份信息、算法信息、有效期以及發行證書的授權機構的簽名。
在這裏插入圖片描述

7.8.3 註冊授權機構RA

RA是用戶和CA的中間人,當需要證書時,用戶向RA發送請求,RA再將請求發給CA。

7.8.4 PKI步驟

PKI提供機密性、訪問控制、完整性、身份驗證和不可否認性。

7.9 密鑰管理

使用Kerberos協議時,密鑰分發中心(Key Distribution Center,KDC)用於存儲、分發和維護進行加密的會話密鑰與祕密密鑰。這種方式提供了自動化分發密鑰的方法。

但如果KDC的票據授予服務(Ticket Granting Service,TGS)受損,那麼所有計算機以及它們的服務都會受到影響,且可能被損壞。

7.9.1 密鑰管理原則

不以明文的形式保存在密碼術設備之外
備份副本或可恢復密鑰
恢復密鑰時需要IT部門,審計部門,管理部門的多個人員參與,減少密鑰濫用的風險

7.9.2 密鑰和密鑰管理的規則

  • 密鑰長度足夠長
  • 密鑰以安全的方式保存和發送
  • 密鑰應當隨機,算法應使用密鑰空間裏的所有值
  • 密鑰的生命週期與數據的敏感程度相對應,敏感數據使用的密鑰生命週期短
  • 密鑰使用頻率越高,生命週期越短
  • 密鑰應該備份或託管
  • 密鑰生命週期結束時,應恰當銷燬

密鑰託管是恢復丟失或受損密鑰的常見方法。
多方密鑰恢復(multiparty key recovery)指要求多個實體重新構建密鑰以進行密鑰恢復流程。

7.10 可信平臺模板TPM

TPM是一個安裝在現在計算機主板上的微芯片,能夠存儲和處理密集的安全敏感數據,如對稱和非對稱密鑰,散列,數字證書的存儲處理。

TPM的使用:

  1. 綁定硬盤驅動器
  2. 密封系統狀態到一個特定的硬件和軟件配置中

7.11 鏈路加密與端對端加密

鏈路加密link encryption,也稱在線加密online encryption

  • 加密沿某種特定通信通道傳輸的所有數據,包括數據包的頭部尾部和路由信息
  • 在數據鏈路層和物理層工作
  • 每跳設備都需要對數據包進行解密加密,因此每個設備都需要一個密鑰,密鑰的分發和管理更復雜

端對端加密end-to-end encryption

  • 不加密數據包的頭部尾部,缺乏保護
  • 在應用層工作
  • 用戶可以決定哪些數據被加密以及如何加密,更靈活
  • 每跳設備不需要擁有解密數據包的密鑰

7.12 電子郵件標準

7.12.1 多用途Internet郵件擴展(MIME)

MIME是一種規定特定文件類型如何傳輸和處理的技術規範。
安全MIMIE(S/MIME)是一種對電子郵件進行加密和數字簽名以及提供安全數據傳輸的標準。
S/MIME通過加密算法提供機密性,通過散列算法提供完整性,通過使用X.509公鑰證書提供身份驗證,通過加密簽名消息摘要提供不可否認性。

7.12.2 可靠加密PGP

Pretty Good Privacy,PGP
PGP是一個完整的密碼系統,可以加密來保護電子郵件和文件。

PGP使用RSA公鑰加密來實現密鑰管理提供不可否認性,使用IDEA對稱密碼進行數據加密,使用MD5散列算法提供完整性。

PGP不使用CA層結構或任何類型的正式信任證書,而是依賴信任web。
每個用戶都有一個稱爲密鑰環(key ring)的文件,它是從用戶那接收的公鑰集合。

信任web沒有中心領導(如CA),因此當用戶丟失私鑰時,需通知到每一個信任其公鑰的人,在PKI中只需要通知倒CA更新CRL。

7.12.3 量子密碼學

quantum crytography
量子密碼學是一種無法攻破且能夠探測到任何偷聽者的系統。

7.13 Internet安全

Web瀏覽器使得用戶能夠通過HTTP請求和接收網頁,用戶瀏覽器則將特定的語言、(HTML、DHTML、XML)轉換爲可以在顯示器上查看的格式。

  1. HTTP

HTTP是無狀態的Web協議,用戶訪問網頁時,TCP控制用戶和服務器之間的握手並保持他們之間的連接,IP協議確保從服務器到用戶的通信在整個Internet上的路由是正確的,HTTP顯示傳輸的有效載荷,即網頁。

  1. HTTP安全(HTTPS)

HTTPS是在SSL上運行的HTTP,SSL使用公鑰加密,並且提供數據加密、服務器身份驗證、消息完整性以及可選客戶端身份驗證。

數據在傳輸過程中需要加密可以使用SSL和TLS,加密存儲的數據可以通過整盤加密、PGP或其他類型的軟件型加密方法。

  1. 安全HTTP

S-HTTP是一種用於保護在兩臺計算機間傳送所有消息的技術

  1. 安全電子交易SET

Secure Electronic Transaction,SET
SET是一種加密協議和基礎設施,用於發送加密的信用卡號。

  1. cookie

cookie是瀏覽器保存在用戶硬盤上的文本文件。包含敏感信息的cookie一般駐留在內存中。
cookie保留了HTTP連接之間的歷史記錄。

  1. 安全外殼SSH

Secure Shell,SSH
SSH爲遠程計算機提供終端式訪問,在易受攻擊的通道(如Internet)上提供身份驗證和安全傳輸。

SSH比Telnet、FTP、rlogin、rexec和rsh更安全,兩臺計算機需要握手,再通過Diffie-Hellman交換會話密鑰,確保信息在傳輸過程中加密,且能保證消息完整性。

  1. IPSec

Internet Protocol Security,Internet協議安全
IPSec協議族爲兩臺設備之間交換受保護數據建立安全的通道,提供加密和身份驗證。

IPSec使用兩個基本的安全協議:
身份驗證首部(Authentication Header)
封裝安全有效載荷(Encapsulation Security Payload,ESP)

AH提供身份驗證和完整性,ESP提供源身份驗證、機密性和消息完整性。如果使用了NTA,就不能用AH協議,而要使用ESP。因爲AH要基於網絡層首部來計算校驗值,NAT會改變數據包的ip地址,導致校驗值發生變化。

IPSec的兩種工作模式:

  • 傳輸模式transport mode:消息的有效載荷受到保護
  • 隧道模式tunnel mode:消息的有效載荷、路由信息和首尾部消息受到保護,更安全

SA(Security Association,安全關聯,是兩臺設備在握手過程中協商一致的各種參數,如加密密鑰算法和密鑰生命週期等)具有方向性,每臺遠程設備都具有一個用於入站連接的SA和一個用於出站連接的SA。

7.14 攻擊

主動攻擊:篡改消息、更改系統文件和假冒他人
被動攻擊:偷聽、嗅探數據

下面介紹的都是主動攻擊

7.14.1 唯密文攻擊

最常見也最難成功的攻擊
通過使用相同加密算法的多條消息的密文找出使用的密鑰

7.14.2 已知明文攻擊

攻擊者擁有多條消息的明文和相應的密文,找出用於加密的密鑰,從而解密和讀取其他消息

7.14.3 選定明文攻擊

攻擊者擁有明文和密文,可選擇已加密的明文來查看相應密文,找出密鑰

7.14.4 選定密文攻擊

攻擊者選擇將要解密的密文,可以獲得解密後的明文,找出密鑰
比前幾種攻擊方式更困難

7.14.5 差分密碼分析

這種攻擊查看特定差異的明文加密而生成的密文對,分析這些差異的影響和結果,從而找出密鑰。

這是一種針對DES和其他分組算法的成功而有效的選定明文攻擊。

7.14.6 線性密碼分析

攻擊者對使用相同密鑰的幾條不同消息執行已知明文攻擊,確定分組算法加密過程中利用某個特定密鑰的最大概率

7.14.7 旁路攻擊

通過外部信息來破解加密密鑰,如測量功率消耗、輻射排放、處理數據花費的時間

7.14.8 重放攻擊replay attack

攻擊者捕獲某些類似的數據並提交,從而欺騙接收設備使其誤以爲是合法信息。
一般重放攻擊使用身份驗證消息。

時間標記和系列號是防禦重放攻擊的兩種對策。

7.14.9 代數攻擊

分析算法內使用的數學原理中存在的脆弱性,利用內在的代數結構。
例:針對RSA的攻擊

7.14.10 分析式攻擊

與蠻力攻擊類似,但會確定算法結構上的弱點再進行攻擊
例:雙重DES攻擊和RSA因式分解攻擊

7.14.11 統計式攻擊

使用識別統計模式的一種密碼分析攻擊
例:比較0和1的數量

7.14.12 社會工程攻擊

非技術性的攻擊,引誘用戶泄露敏感信息

7.14.13 中間相遇攻擊

用於嘗試從兩端突破的方式,從一端加密,另一端解密,從而可以在中間相遇

發佈了32 篇原創文章 · 獲贊 43 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章