天天看點

資訊安全:CISSP 密碼學知識總結1 密碼學基礎2 對稱密鑰加密3 非對稱密鑰加密4 Hash函數5 數字簽名6 PKI(公鑰基礎架構)7 密碼學的應用8 密碼學攻擊

原文連結:http://blog.csdn.net/ddk3001/article/details/53997927

說明:本文内容是《CISSP Official Study Guide(第7版)》第6章(Cryptography and Symmetric Key Algorithms)和第7章(PKI and Cryptographic Applications)的學習總結。這兩章全面介紹了密碼學的知識,本文是概要總結,可作為地圖參考,對于其中的細節,請查閱相關書籍和資料。

1 密碼學基礎

1.1 密碼學的目标

目标 說明 技術
機密性 保證資料未被洩露 秘密密鑰系統、公開密鑰系統
完整性 保證資料未被修改

秘密密鑰系統、公開密鑰系統。

保護消息:數字簽名 (第7章)。

保護檔案:Hash算法 (第21章)。

身份驗證

對使用者聲明的身份進行驗證。

A要确認正在通信的對方是B,

即,B要使A相信他是B。

挑戰/響應技術
不可否認

為接收者提供擔保,

保證消息确實來自發送者,而不是其他人。

A說消息來自B,B否認不了。

即,A要使B不能否則消息是他發送的。

公開密鑰系統:因為隻有自己持有私鑰。

不能使用秘密密鑰系統,

因為B可以說消息是A自己做的。

FIPS Federal Information Processing Standard 聯邦資訊處理标準

FIPS 140-2 密碼子產品的安全需求 :為密碼子產品定義了硬體和軟體需求

1.2 密碼學的數學原理

1、One-Way Function單向函數

公鑰密碼系統都是建立在單向函數的基礎上。

2、Nonce 随機數

在加密過程中添加Nonce,進而獲得更大強度。

例子:IV(初始化向量) 參見DES

3、零知識證明

零知識證明:在不向第三方揭示事實本身的情況下,向第三方證明你對事實的了解。

密碼學:使用公鑰加密系統,能提供零知識證明。

4、Split Knowledge 分割知識

分割知識:責任分離

例子:密鑰托管(key escrow)。

  • 密鑰、數字簽名、數字證書可以存儲在托管資料庫中。
  • 如果使用者密鑰丢失,可以從托管資料庫中提取密鑰。
  • “M of N控制”要求:N個人中至少有M個人一起工作,才能完成這項工作。

5、工作函數

工作函數:從成本或時間方面來度量密碼系統的強度。

1.3 密碼算法(Cipher)

1、One-Time pad 一次性密碼本

主要障礙:很難生成、分發和保護冗長的密鑰

主要應用:保護極其敏感的通信,實際中隻用于短消息。

2、Running Key Cipher 滾動密鑰密碼

書籍密碼,用于生成一次性密碼本所需的密鑰

3、混淆(Confusion)和擴散(Diffusion)

密碼學算法依賴兩種基本操作來隐藏明文資訊:混淆和擴散

Confusion :明文與密鑰的關系十分複雜,攻擊者不能通過通過觀察明文和密文的關系來确定密鑰。

Diffusion :明文的改變導緻多種變化,這種變化會擴散到整個密文中。

密碼算法 :“替換”引入了混淆,“換位”引入了擴散。

1.4 現代密碼學

秘密密鑰系統 公開密鑰系統
機密性 機密性、完整性、身份驗證、不可否認性

帶外交換密鑰

密鑰需要經常更新

剔除使用者困難

帶内交換公鑰

隻有使用者私鑰被破壞時,才需要重建密鑰

容易剔除使用者

速度快

用于批量資料加密

慢度速

用于少量資料加密(數字簽名、數字信封、數字證書)

不可擴充:n(n-1)/2

每兩人之間都需要一個密鑰

可擴充:2n

每個人需要兩個密鑰(公鑰和私鑰)

Hash算法

2 對稱密鑰加密

2.1 對稱加密算法

DES Data Encryption Standard 資料加密标準
AES Advanced Encryption Standard 進階加密标準
IDEA International Data Encryption Algorithm 國際資料加密算法

2.1.1 DES

1977年 美國政府釋出 用于政府通信

DES已經不再安全,2001年AES取代了DES

DES:分組長度64位,密鑰長度56位(另外有8位用作奇偶校驗或随意設定),16輪加密。

算法過程:http://wenku.baidu.com/view/ed21dc80b9d528ea81c7796b.html?re=view

操作模式Mode 操作方法 特點
ECB

Electronic CodeBook

電子密碼本

把明文分為64位的分組,

使用密鑰對每個分組進行加密。

缺點:安全性差

隻用于交換少量資料

CBC

Cipher Block Chaining

加密分組連結

第一個分組使用IV(初始化向量)進行異或,然後進行加密。

之後的每個分組與前一個密文分組進行異或,然後進行加密。

IV需要發送給接收方,方法:

1、以明文方式放在完整密文之前。

2、用密鑰和ECB模式對IV進行加密。

缺點:如果某個分組出錯,會傳播到後面所有分組

(錯誤傳播)。

CFB

Cipher FeedBack

加密回報

CFB是流加密形式的CBC,

差別是隻是對實時資料進行加密

缺點:錯誤傳播
OFB

Output FeedBack

輸出回報

與CBC幾乎相同,

差別是它使用種子值與明文進行異或。

IV用于建立種子值,通過對先前的種子值運作DES算法,可以派生出之後的種子值。

優點:不會傳播錯誤
CTR

CounTeR

計數器

流加密,類似于OFB,

但它不使用種子值,而使用計數器。

優點:不會傳播錯誤

适合并行計算

ECB 缺點:安全性差
分組加密 流加密
CBC CFB 缺點:錯誤傳播
IV IV
OFB CTR 優點:不會傳播錯誤
IV+種子值 IV+計數器

2.1.2 3DES

2DES并不比DES更安全

3DES使用相同的而算法實作更安全的加密。

有四個版本:

  • EEE3 、EDE3 密鑰長度56*3 = 168 // 3個密鑰
  • EEE2 、EDE2 密鑰長度56*2 = 112 // 2個密鑰

2.1.3 各種算法比較

美國政府算法 分組長度 密鑰長度 特點和用途
DES 64

56

16輪加密

1977年釋出,用于美國政府通信

2001年AES取代了DES

3DES 64 168

與DES的算法相同

實作了更安全的加密

AES 128

128

10輪加密

2001年開始使用

Rojndael擴充了AES

Skipjack 64 80

用于FIPS 185 (聯邦資訊處理标準)

因密鑰托管受美國政府控制,是以未被普遍接受。

專利算法 分組長度 密鑰長度 特點和用途
IDEA 64 128

瑞士開發人員的專利

在PGP中使用

RC2 64 128 RSA公司
RC4 流式 128 RSA公司
RC5 32/64/128 0 ~ 2048 RSA公司
自由使用算法 分組長度 密鑰長度 特點和用途
Blowfish 64 32~448

比DES和IDEA更快。

在許多商業軟體和作業系統中使用,例如SSH

Twofish 128 256 是AES的另一個選擇

2.2對稱密鑰管理

(1)建立和分發

  • 方法1:離線分發
  • 方法2:公鑰加密
  • 方法3:Diffie-Hellman算法
    • 方法:是“離線分發”和“公鑰加密”的折中,它基于标準離散對數問題。
    • 應用:S-RPC使用此算法交換密鑰
    • 缺點:容易受到中間人攻擊

Diffie-Hellman算法 :

1、交換資料:A和B約定兩個大數,即p(質數)和g(整數),并且 1 < g < p

2、計算R和S

  • a) A選擇一個随機的大整數r,計算:R = gr % p (r隻有A知道)
  • b) B選擇一個随機的大整數s,計算:S = gs % p (s隻有B知道)

3、交換資料:A把R發送給B,B把S發送給A

4、計算密鑰

  • a) A計算:K = Sr % p = gsr % p (r隻有A知道)
  • b) B計算:K = Rs % p = gsr % p (s隻有B知道)
  • c) K可作為通信用的私鑰

5、 分析:根據g、p、R、S,無法推斷出r和s?

(2)存儲和銷毀

(3)恢複和托管

  • Fair Cryptosystems(公平加密系統):密鑰被分成多個部分,交給多方儲存。
  • Escrowed Encryption Standard(托管加密标準):
    • 方法為政府提供了解密密文的技術方法,用于FIPS 185 (聯邦資訊處理标準)。
    • 這個标準是Skipjack的基礎。因密鑰托管受美國政府控制,是以Skipjack未被普遍接受。

2.3 密碼術的生命周期

選擇密碼系統時,要考慮在資訊的生命周期内,足以保證資訊的安全。

選擇時要考慮:

  • 清單内容
  • 加密算法
  • 密鑰長度
  • 使用的安全交易協定,例如:SSL、TLS

3 非對稱密鑰加密

算法 基于 特點
RSA 大質數的因式分解

1977年提出,是RSA公司的專利,

2000年時RSA向公開領域釋出了該算法。

Merkle-Hellman

背包算法

集合論中的超遞增集的因式分解 1984年被破解
El Gamal 标準離散對數問題

El Gamal擴充了Diffie-Hellman算法,用于支援公鑰密碼系統。可自由使用。

缺點:密文長度是明文長度的兩倍。

ECC 橢圓曲線的離散對數問題

優點:使用相同密鑰長度時,

比RSA和El Gamal提供更大的加密強度。

下面三種密鑰長度提供相同的保護程度:

  • RSA : 1088位。 Rivest、Shamir、Adleman
  • DSA : 1024位。 Digital Signature Algorithm
  • ECC : 160 位。 Elliptic Curve Cryptosystem

3.1 RSA

RSA算法已經成為許多知名安全基礎設定的安全骨幹,例如微軟、Nokia、Cisco。

參考:http://blog.csdn.net/sunmenggmail/article/details/11994013

RSA算法:計算公鑰和私鑰

1、選擇兩個大質數p和q,計算:

  • a) N = p * q
  • b) r = (p-1)(q-1)

2、選擇一個小于 r 的整數 e,求得 e 關于模 r 的模反元素d。(模反元素存在,當且僅當e與r互質)

3、将 p 和 q 的記錄銷毀。

4、(N,e)是公鑰,(N,d)是私鑰。

例子:計算公鑰和密鑰

1、假設p = 3、q = 11

  • a) N = pq = 33
  • b) r = (p-1)(q-1) = (3-1)(11-1) = 20

2、計算:

  • a) 根據模反元素的計算公式,可以得出e·d ≡ 1 (mod 20),即e·d = 20n+1 (n為正整數);
  • b) 假設n=1,則e·d = 21。e、d為正整數,并且e與r互質,則e = 3,d = 7。
  • c) 到這裡,公鑰和密鑰已經确定。公鑰為(N, e) = (33, 3),密鑰為(N, d) = (33, 7)。

3.2 Merkle-Hellman背包算法

基于“集合論中的超遞增集”因式分解,

用的是:集合論中的超遞增集(super-increasing sets)

1984年被破解

3.3 El Gamal

El Gamal擴充了Diffie-Hellman算法,用于支援公鑰密碼系統。

El Gamal和Diffie-Hellman算法都是基于:标準離散對數問題

優點:該算法可自由使用

缺點:密文長度是明文長度的兩倍。

3.4 ECC

基于:橢圓曲線的離散對數問題

4 Hash函數

散列函數:輸出消息摘要(散列值)

消息摘要:可以确認消息未被修改過

雜湊演算法:

  • SHA :SHA-1、SHA-2、SHA3
  • MD :MD2、MD4、MD5
  • HMAC
  • HAVAL :對MD5做了修改。使用1024位的分組,産生128/160/192/224/256位的散列值。

4.1 SHA

SHA Secure Hash Algorithm 安全雜湊演算法

SHA是NIST開發的美國政府标準(FIPS 180)

SHA-1 512位分組 160位散列值 // 已證明此算法存在缺陷

SHA-2:

  • SHA-256 : 512位分組、256位散列值
  • SHA-224 : 512位分組、224位散列值
  • SHA-512 : 1024位分組、512位散列值
  • SHA-384 : 1024位分組、384位散列值

SHA-3: 2012年,使用Keccak算法

4.2 MD

MD Message Digest 消息摘要

1989年,由Rivest開發

MD2 : 128位散列值 // 已證明不安全

MD4 : 512位分組、128位散列 // 已證明不安全

MD5 : 512位分組、128位散列 // 已證明不安全

5 數字簽名

DSA 數字簽名算法

5.1 使用公鑰的DSA

“消息摘要”可用于數字簽名算法(系統)

數字簽名:證明某個消息來自一個特定使用者(不可否認),并保證消息未被修改過(完整性)。

數字簽名算法使用了:公鑰密碼系統(不可否認)、雜湊演算法(完整性)

數字簽名算法如下:

1、A執行操作:

  • a) 使用雜湊演算法計算明文消息的消息摘要
  • b) 使用A的私鑰對消息摘要進行加密,加密後的消息摘要就是“數字簽名”

2、A将明文消息和數字簽名一起發送給B

3、B收到消息後:

  • a) 使用A的公鑰對數字簽名進行解密,進而确認這個消息這是A發送的。(不可否認)
  • b) 計算明文的消息摘要,并與解密的消息摘要對比,進而确認明文内容未被修改。(完整性)

數字簽名提供:完整性、身份認證、不可否認

如果要保證機密性,需要執行:

1、A用B的公鑰對“明文消息+數字簽名”進行加密,然後發送給B

2、B執行:

  • a) 用B的私鑰對消息進行解密 => 機密性
  • b) 用A的公鑰解密數字簽名 => 身份認證、不可否認
  • c) 比較消息摘要 => 完整性

5.2 使用密鑰的DSA

HMAC Hashed Message Authentication Code 散列消息身份驗證碼

簡單方法 :明文消息 + 未加密的消息摘要 //

複雜方法 :明文消息 + 私鑰加密消息摘要 // 完整性、不可否認

HMAC :消息明文 + 密鑰加密消息摘要 // 完整性

5.3 數字簽名标準

NIST FIPS 186-4指定了政府使用的數字簽名算法(DSA),稱為DSS(數字簽名标準)

  • 雜湊演算法:SHA-2
  • 加密算法:可以選擇如下
    • DSA :FIPS 186-4
    • RSA :ANSI X93.1
    • EC DSA :ANSI X9.26 (橢圓曲線DSA)

另外兩種數字簽名算法:

  • Schnorr
  • Nybergrueppel

6 PKI(公鑰基礎架構)

6.1 PKI的基本概念

PKI的基本概念:

  • 使用“公鑰和私鑰”證明身份:
    • A生成公鑰和私鑰,把公鑰給B
    • A用私鑰加密資訊發送B
    • B用公鑰能解密消息,就能證明這個消息來自A。
  • 怎麼保證“公鑰”确實是A生成?(詳見注冊和驗證)
    • CA是中立機構,A和B都相信它
    • CA確定A确實是他聲稱的身份,并用A提供的公鑰制成“數字證書”。
    • A把CA确認過的數字證書(公鑰)提供給B,因為B信任CA,是以相信這個公鑰确實是A的。
CA Certificate Authority 證書授權機構 CA為數字證書提供公證服務
RA Register Authority 注冊授權機構 RA幫助CA驗證使用者的身份
Digital Certification 數字證書

用于證明個人的身份,本質是用CA的私鑰加密了使用者的公鑰。

如果使用者确認數字證書是由CA釋出的,那就知道這個公鑰是合法的。

數字證書被内建在許多Web浏覽器、Email用戶端軟體中。

PKI是一個概念,使用一個中立機構來證明A提供公鑰的有效的。

6.2 數字證書

數字證書:用于證明個人的身份,其本質是個人公鑰。

如果使用者确認數字證書是由CA釋出的,那就知道這個公鑰是合法的。

數字證書包含特定的身份識别資訊,其标準是ITU-T X.509 。

  • 注冊
    • CA驗證使用者身份,使用者向CA提供公鑰
    • CA建立一個數字證書,其中包含“使用者身份和使用者公鑰”的ITU-T X.509數字證書
    • CA用其私鑰對證書進行數字簽名,提供給使用者
    • 數字證書本質:用CA的私鑰加密了使用者的公鑰
  • 驗證
    • 用CA的公鑰解密數字證書,進而确認這來自CA。
    • 檢查保證數字證書沒有在CRL(證書撤銷清單)中
    • 确認證書中包含你信任的資料
  • 撤銷
    • CRL 證書撤銷清單 :清單驗證。有延遲,但仍然是最常用的方法。
    • OCSP 聯機證書狀态協定 :實時驗證。無延遲。

7 密碼學的應用

7.1 便攜裝置

加密:

  • Windows :BitLocker 和EFS(加密檔案系統)
  • Mac OSX :FileVault
  • TrueCrypt :開源軟體,可用于Linux、Windows、Mac

7.2 隐寫術和水印

Steganopgraphy 隐寫術 // 隐藏資訊

Watermarking 水印 // 保護知識産權

7.3 DRM

DRM Digital Rights Management 數字版權管理

  • 電子書 :DRM最成功的應用
  • 文檔
  • 音樂
  • 電影
  • 視訊遊戲

7.4 Email

Email要求 保護方法
機密性 加密
完整性 雜湊演算法
身份驗證、完整性 數字簽名
機密性、完整性、身份驗證、不可否認 加密 + 數字簽名

電子郵件标準:

(1)PGP Pretty Good Privacy

主要用于:基于Web的電子郵件系統

商業版本:RSA進行密鑰交換、 IDEA加解密、 MD5雜湊演算法

免費版本:DH進行密鑰交換、 CAST 128位加解密、 SHA-1雜湊演算法

(2)S/MIME Secure / Multipurpose Internet Mail Extensions

主要用于:桌面郵件應用程式

RSA加密算法、AES和3DES加密算法

7.5 Web應用

SSL : Secure Socket Layer

TLS : Transport Layer Secure

HTTPS : HTTP over SSL

(1)TLS

SSL已經發現有漏洞,現在已被TLS替換。

(2)SSL

Netscape開發,用于對C/S之間網站流量進行加密。

HTTPS使用TCP 443端口在C/S之間協商加密通信會話。

SSL的目的:為Web浏覽會話建立安全的通信通道。

方法是:

1、 使用者通路一個網站時,浏覽器檢索Web伺服器的數字證書,從中提取伺服器的“公鑰”。

2、 浏覽器建立一個随機的“對稱密鑰”,使用伺服器的“公鑰”來加密,然後發送給伺服器。

3、 伺服器用自己的“私鑰”進行解密,得到“對稱密鑰”,此後用這個對稱密鑰來交換資訊。

7.6 網絡連接配接

使用密碼學算法保護通信線路安全,即對通信線路進行加密。

線路加密的類型:

  • 鍊路加密 :加密整個資料包,逐跳完全解密。
  • 端到端加密 :隻加密資料包中的使用者資料,接收端解密。

(1)SSH ( Secure Shell )

SSH提供了端到端加密

SSH提供了常見網絡服務的加密方案:Telnet、FTP、Rlogin

兩個版本(SSH1和SSH2),SSH1現在被認為不安全。

(2)IPsec

IPsec為安全網絡通信提供了一個體系結構,它沒有規定所有實作細節,而是一個開放的子產品化架構。

IPsec用于在兩個實體(系統、路由器、網關)之間建立交換資訊的安全通道。

IPsec使用IP協定,通過公鑰密碼術提供:機密性、通路控制、不可否認、消息身份驗證。

主要用于VPN,通常與L2TP一起使用。

IPSec有兩個主要元件:

  • AH(身份驗證首部):提供消息完整性、不可否認性、身份驗證。
  • ESP(封裝安全負載):提供資料包内容的機密性和完整性。

IPSec提供了兩種操作模式:

  • 傳輸模式:隻加密資料包的負載。用于peer間通信。
  • 隧道模式:加密整個資料包(包括頭),用于網關間通信。

在運作時,通過建立SA(安全關聯)來建立IPSec會話。

如果要雙向通信,需要兩個SA(每個方向一個)。

如果要支援使用AH和ESP的雙向通信,需要四個SA。

(3)ISAKMP 網絡安全關聯和密鑰管理協定

IPSec依賴于SA的系統,這些SA通過使用ISAKMP進行管理。

ISAKMP通過協商、建立、修改和删除SA,為IPSec提供背景的安全支援服務。

(4)無線互聯

WEP : Wired Equivalent Privacy , WEP算法存在顯著缺陷

WPA : Wifi Protected Access , 改進了WEP加密

IEEE 802.1x : 常用的無線安全标準

應用層 HTTP, FTP, LPD, SMTP, Telnet, TFTP, EDI, POP3, IMAP, SNMP, NNTP, S-RPC, SET
表示層

Encryption protocols and format types,

such as ASCII, EBCDICM, TIFF, JPEG, MPEG, MIDI

任務層 NFS, SQL, RPC
傳輸層 SPX, SSL, TLS, TCP, UDP
網絡層 ICMP, RIP, OSPF, BGP, IGMP, IP, IPSec, IPX, NAT, SKIP
鍊路層 SLIP, PPP, ARP, RARP, L2F, L2TP, PPTP, FDDI, ISDN
實體層 EIA/TIA-232, EIA/TIA-449, X.21, HSSI, SONET, V.24, V.35

8 密碼學攻擊

攻擊方法:

1. 分析攻擊:關注算法本身的邏輯性

2. 實作攻擊:利用系統實作中的弱點

3. 統計攻擊:利用密碼系統的統計弱點,例如無法生成随機數和浮點錯誤

4. 暴力攻擊:彩虹表(預先計算機密碼散列值),應對方法是加鹽

5. 頻率分析和僅密文攻擊:隻有加密後的密文

6. 已知明文:有同一消息的明文和密文

7. 標明密文:攻擊者能夠解密密文的標明部分,使用這部分發現密鑰。

8. 標明明文:攻擊者能夠加密他們選擇的明文,進而分析加密算法的密文輸出。

9. 中間相遇攻擊:同時加密和解密,來發現密鑰對。

10. 中間人攻擊

11. 重播攻擊

12. 生日攻擊

繼續閱讀