密碼編碼技術介紹筆記 原

------------------------2018-09-20-密碼編碼技術介紹筆記------------------------ 安全支付系統的構建基礎 —— 密碼編碼技術介紹 http://wiki.baidu.com/pages/viewpage.action?pageId=140017902

1.3 基本術語 (1)密碼學(Cryptology):包括密碼編碼學和密碼分析學 (2)密碼編碼學(Cryptography):主要研究對信息進行編碼,實現對信息的隱藏 (3)密碼分析學(Cryptanalytics):主要研究加密消息的破譯和消息的僞造 (4)Cipher:密碼 (5)加密(Encipher):將明文轉換成密文的過程 (6)解密(Decipher):將密文還原成明文的過程 (7)明文(Plaintext):原始的可讀數據 (8)密文(Ciphertext):加密後的不可讀數據 (9)密鑰(Key):對加密與解密過程進行控制的參數 (10)E(p):加密變換 (11)D(c):解密變換

1.4.1 密碼體制的分類 根據密鑰的特徵分類,密碼系統分爲對稱密碼體制和非對稱密碼體制. 對稱密碼(Symmetric System,One-key System, Secret-key System): 加密密鑰和解密密鑰相同,或者一個密鑰可以由另一個推導出.由於加密能力和解密能力耦合,開放性差. 非對稱密碼(Asymmetric System,Two-key System,Public-key System): 加密密鑰和解密密鑰不同,從一個密鑰推導出另外一個密鑰計算上不可行.由於加密,解密能力解耦,開放性好.

根據加密算法是否可逆,密碼體制可以分爲單向函數型密碼體制和雙向變換型密碼體制. 單向函數型適用於不需要解密密文的場合,容易將明文加密成密文,如單向散列函數. 雙向變換型可進行可逆的加解密變換,如DES,RSA等算法

1.4.2 計算安全性和無條件安全性 計算安全(Computationally Security):如果一個算法用約定期限內可得到的資源都不能破譯,則被認爲是計算上安全的.

無條件安全也稱信息論安全(Information-theoretic Security):不論敵手有多少密文,都沒有足夠的信息恢復出明文. 目前只有一次一密,由於得到的密文在密文空間等概率分佈,完全獨立於明文和密鑰分佈,因而能達到理論上無條件安全.

1.4.3 密碼系統的基本要求 密碼系統設計的基本方法是擴散和混淆,目的是爲了抵抗敵手對密碼系統的統計分析.

擴散(Diffusion):將明文的統計特性擴散到密文中去, 實現方式是使得密文中的每一位由明文中的多位產生. 明文的統計特性被散佈開,因而在密文中的每一字母出現的概率更接近於相等,使敵手難以通過統計分析得到有用的信息.

混淆(Confusion):就是使得密文和密鑰之間的統計關係變得儘可能複雜,使敵手無法得到密鑰. 敵手即便得到了密文之間的統計關係,也難以得到密鑰.

實用的密碼系統必須滿足以下基本要求: 1.系統應該是實際安全的,截獲密文或已知明文-密文對時.要確定密鑰或任意明文在計算上不可行. 2.加密,解密算法適用於密鑰空間中的所有元素. 3.數據的安全依賴於密鑰而非算法的保密. 4.系統易於實現,使用簡單,並且不應使通信網絡的效率過分降低

2.2 單向散列函數 單向散列函數本質上是一個單向函數:求散列值容易,但根據散列值求逆計算上不可行. 如打碎玻璃,混合顏色,人的衰老,都是生活中典型的單向函數實例

單向散列函數的別名有:壓縮函數,收縮函數,消息摘要,指紋,密碼校驗和,信息完整性校驗,操作校驗碼, 它將可變長度輸入串轉換爲固定長度輸出串,是典型的多到一映射. 單向散列函數必須無衝突(Collision-free),即難以產生預映射的值,使它們的散列值相同, 這種特性可用來實現數據完整性校驗和數字簽名. 常用的單向散列函數有四大系列:MD,SHA,HMAC,CRC.

2.2.1 MD算法 信息摘要算法(Message Digest Algorithm)家族四個算法,MD2,MD4,MD5,MD6

MD6是2008年發明的,目前尚未發現碰撞攻擊.

MD5是1992年發明的.MD5算法由MD2,MD4算法發展而來,它以512位分組來處理輸入的信息,且每個分組被劃分爲16個32位子分組, 經過一系列的處理後,算法的輸出由4個32位分組組成,將這4個32位分組級聯後將生成一個128位散列值. 2004年已經發現完整的MD5算法的碰撞,通過前綴構造法(http://www.win.tue.nl/hashclash)能夠快速找出MD5哈希結果相同的兩個不同明文.

由於抗碰撞攻擊的脆弱性,MD5算法不應該再簡單地應用於完整性校驗,數字簽名場合. 目前還不能有效地從MD5哈希結果值逆向計算摘要消息,因此在登錄密碼存儲等場景,MD5算法仍然適用

2.2.2 SHA算法 SHA家族主要有五個算法:SHA-1,SHA-256,SHA-224,SHA-512,SHA-384 安全散列算法(Secure Hash Algorithm)由美國國家安全局設計,並通過美國國家標準與技術研究院發佈. SHA-1算法在許多安全協議中使用,包括SSL,PGP,SSH等. 雖然破解SHA-1仍然是極其困難的,但隨着計算機變得越來越快,SHA-1算法的安全性也逐年降低,SHA-1的安全性如今被密碼學家嚴重質疑,Google,微軟也逐漸棄用SHA-1算轉而採用安全強度更高的SHA-2算法

2.2.3 HMAC算法 哈希運算消息認證碼(Hash-based Message Authentication Code,HMAC)是帶密鑰的散列函數,依賴於MD,SHA等其他單向散列算法. MD,SHA系列算法一般不直接用來簽名,而是採用更上層的HMAC算法,確保簽名算法具有更好的擴散性和混淆效果,提高密碼分析的難度.

2.2.4 循環冗餘校驗碼 循環冗餘校驗碼(Cyclic Redundancy Check)是數據通信領域中常用的一種差錯校驗碼,碰撞概率較高而無法檢出所有錯誤,但計算高效. 應用場景:ZIP和RAR用的CRC-32,Bluetooth用的CRC-16-CCITT.

2.3 對稱密碼算法 按照明文的處理方式不同,對稱密碼可以分爲分組密碼和流密碼.

分組密碼(Block Cipher):明文數字劃分爲長度等同的分組,每組分別在相同密鑰控制下變換爲等長密文數字,如DES,AES,IDEA算法等. 流密碼(Stream Cipher):對明文中單比特進行加密運算,依賴於僞隨機數發生器,如RC4,SEAL算法等,多用於軍事,外交場合.

2.4 非對稱密碼算法 非對稱密碼也稱公鑰密碼,主要提供加解密,數字簽名和密鑰交換等服務. 優點:公鑰密碼避免了對稱密鑰系統中容易產生的,任何一方單方面密鑰泄密問題以及分發密鑰時的不安全因素. 缺點:計算量大,加解密速度較對稱密碼算法慢好幾個數量級,並且在選擇明文攻擊面前很脆弱. 應用場景:一般不用來加密消息,而用來加密會話密鑰

2.4.1 RSA算法 RSA算法是首個較爲完善的公鑰密碼算法基於大整數因式分解陷門單向函數. 可用於加解密(公鑰加密私鑰解密)和數字簽名(私鑰加密公鑰解密)

2.4.2 DH密鑰分發協議 Diff-Hellman(DH)密鑰交換協議主要用於通信雙方的密鑰交換或密鑰協商過程, 使用該協議需要結合身份認證以抵抗中間人攻擊.經常與數字簽名結合使用.

實例分析:SSL協議 SSL(Secure Sockets Layer,安全套接層)爲網絡通信提供安全及數據完整性的一種安全協議, 包含單向散列,對稱加密,公鑰密碼等一系列算法. 協議內容大致劃分爲以下三塊:

1.頒發證書和驗證證書 頒發證書:對證書信息M進行散列得到H(M),然後用CA的私鑰對散列值進行簽名.得到Sign. 驗證證書:計算H(M),Sign,兩者一致則驗證通過,否則驗證不通過.

2.協商會話密鑰:結合DH密鑰分發協議和SSL證書提供的身份認證,生成共享的會話密鑰

3.對稱密鑰機密傳輸數據

根據以上分析,SSL協議在密碼算法層面有以下薄弱點: 單向散列算法破解,則可篡改SSL證書 簽名算法破解,能夠隨意僞造證書 密鑰分發協議破解,推導出會話密鑰 對稱加密算法破解,威脅傳輸數據安全

重要結論回顧: 只有一次一密能做到理論上無條件安全 完整MD5算法的碰撞攻擊已被發現,MD5不應該再簡單應用於完整性認證,數字簽名場景 公開密鑰算法不用來加密消息,而用來加密密鑰 公開密鑰算法使密鑰的管理和分發變得簡單和更加安全 密碼系統都立足於安全假設,安全性是相對的 密碼系統設計的基本方法是擴散和混淆

------------------------2018-09-20-密碼編碼技術介紹筆記------------------------

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