密碼學算法


  1. 密碼學概述

    • 基本認知

      1. 科學

        • 密碼學是科學、有嚴格的規范,設計密碼學算法需要具備深厚的數學知識

      2. 公開

        • 密碼學算法的實現原理是公開的,經過長時間的考驗

      3. 相對安全

        • 計算機處理速度越來越快,某個密碼學算法的數學基礎可能受到挑戰,現階段安全密碼算法,未來可能就不安全了

      4. 攻擊方法多樣

        • 大部分密碼學算法需要秘鑰,最簡單的破解方法就是獲取秘鑰(暴力破解、彩虹表等)

      5. 應用標准

        • 未來正確使用密碼學算法,並依據標椎使用(比如:PKCS),可以不了解密碼學算法原理,但必須掌握應用標准

      6. 不比具備很強數學知識

        • 很多密碼學算法並非計算機專家創建,而是數學家.(不妨礙我們使用密碼學算法)

      7. 解決特定問題

        • 每種算法都有應用場景,解決特定的問題

    • 目標

      1. 機密性

        • 信息在存儲,運輸、處理過程中的安全保密,要求信息不會泄露給未經授權的人.對稱加密算法和公開秘鑰算法都能保護機密性

      2. 完整性

        • 接受方接受到的信息就是發送方發送的原始信息,如數據被篡改,接受方有策略數據被篡改,那傳輸的數據就具備完整性.在密碼學中,主要使用消息驗證碼(MAC)算法保證完整性

      3. 不可抵賴性

        • 在密碼學中,使用數字簽名技術避免抵賴

      4. 身份驗證

        • 通信雙方(發送方、接收方)必須確保對端就是通信對象.在密碼學中,一般使用數字簽名確認身份

    • 常用密碼庫

      1. MIRACL

        • 由Shamus軟件公司開發,包括了:RSA、AES、DSA、ECC和Diffie-Hellman秘鑰交換算法

      2. CryptoAPI

        • 微軟在Windows中的一個安全加密應用框架

        • 密碼應用程序接口,密碼服務提供者模塊

      3. OpenSSL

        • 開放源代碼的軟件庫包,三個只要的功能部分:SSL協議庫、應用程序以及密碼算法庫

  2. 密碼學算法分類

    • 類型

      • 哈希算法(Hash)

        1. 國內:SM3

        2. 國際:MD5、SHA-1、SHA-2、SHA-3

        3. 說明:SM3的256位保密強度高於MD5

      • 對稱加密算法

        1. 國內:SM1、SM4、ZUC

        2. 國際:DES、3DES、AES

        3. 說明:SM1的128位保密強度和性能與AES相當,SM4的128位已升級為國際標准

      • 公開秘鑰算法

        1. 國內:SM2

        2. 國際:RSA、ECC

        3. 說明:SM2的256位基於ECC算法,安全性比RSA1024有明顯優勢

    • 隨機數

      • 類型

        1. 真正的隨機數生成器

          • 硬件生成

          • 效率高、隨機性、不可預測性、不可重現性

          • 需要物理設備獲取

        2. 偽隨機數生成器

          • 軟件生成

          • 效率高、隨機性

          • 通過算法獲取

        3. 密碼學偽隨機數生成器

          • 軟件生成

          • 效率高、隨機性、不可預測性

          • 用於密碼學

      • 工作原理

        1. 生成器內部維護一個狀態(internal state),其數值來源於外部,成為熵:動態時間、溫度、聲音變化等

        2. 偽隨機數內部狀態來源模擬的數值,稱為種子(seed)

      • 可生成密碼學隨機數的算法

        1. 塊密碼算法CTR模式:對稱加密算法

        2. 摘要函數:單向性

        3. 流密碼算法:對稱加密算法

      • 用途

        1. 密鑰

          • 對稱加密算法、公開密鑰算法、MAC算法都會用到密鑰,密鑰本質上是一個隨機數

        2. 初始化向量(IV)

          • 塊密碼算法中很多迭代模式會使用(IV)

        3. nonce

          • 塊密碼算法中的CTR模式、AEAD加密模式也會用到nonce

        4. salt

          • 基於口令的加密算法會用到,通過salt生成一個密鑰

    • Hash函數

      • 加密基元

        1. 基於密碼學Hash算法產生的其他密碼算法:MAC消息驗證碼、偽隨機數生成器、基於口令的加密算法、數字簽名等等

      • Hash特性

        1. 摘要/散列/指紋=hash(消息)

        2. 相同的消息獲得相同摘要值、速度快、單向性(不可逆)、原始消息變化摘要值也會變化、不同摘要值不同

      • Hash算法用途

        1. 文件比較

        2. 身份校驗

      • Hash算法分類

        1. MD5

          • 算法:MD5、輸出值長度:128比特、輸入值最大長度:無限制、說明:實踐中已經產生碰撞,理論上不具備弱抗碰撞性

        2. SHA-1

          • 算法:SHA-1、輸出值長度:160比特、輸入值最大長度:2的64次方減一比特、說明:實踐中已經產生碰撞

        3. SHA-2

          • 算法:SHA-256、輸出值長度:256比特、輸入值最大長度:2的64次方減一比特、說明:安全使用

          • 算法:SHA-512、輸出值長度:512比特、輸入值最大長度:2的128次方減一比特、說明:安全使用

          • 算法:SHA-224、輸出值長度:224比特、輸入值最大長度:2的64次方減一比特、說明:安全使用

          • 算法:SHA-384、輸出值長度:384比特、輸入值最大長度:2的128次方減一比特、說明:安全使用

        4. SHA-3

          • 算法:SHA3-256、輸出值長度:256比特、輸入值最大長度:2的64次方減一比特、說明:安全使用

          • 算法:SHA3-512、輸出值長度:512比特、輸入值最大長度:2的128次方減一比特、說明:安全使用

          • 算法:SHA3-224、輸出值長度:224比特、輸入值最大長度:2的64次方減一比特、說明:安全使用

          • 算法:SHA3-384、輸出值長度:384比特、輸入值最大長度:2的128次方減一比特、說明:安全使用

    • 對稱加密算法

      • 原理

        1. 密文=E(明文、算法、秘鑰)

        2. 明文=D(密文、算法、秘鑰)

      • 分類

        1. 塊密碼算法:DES、3DES、AES

        2. 流密碼算法:RC4

      • 模式

        1. ECB(Electronic Codebook)、特點:運算快速,支持並行處理,需要填充、說明:不推薦使用

        2. CBC(Cipher Block Chaining)、特點:支持並行處理,需要填充、說明:推薦使用

        3. CFB(Cipher Feedback)、特點:支持並行處理,不需要填充、說明:不推薦使用

        4. OFB(Output Feedback)、特點:迭代運算使用流密碼模式,不需要填充、說明:不推薦使用

        5. CTR(Counter)、特點:迭代運算使用流密碼模式,支持並行處理,不需要填充、說明:推薦使用

        6. XTS(XEX-based tweaked-codebook)、特點:不需要填充、說明:用於本地硬盤存儲解決方案中

      • 標准

        1. 填充標准:明文長度必須是分組長度的倍數,如不是倍數,則必須有填充機制

        2. PKCS#7填充:可處理的分組長度是1到255個字節

        3. AES算法使用標准,比如:AES-128-CBC-PKCS#7,其中秘鑰長度128,分組模式CBC,填充標准PKCS#7,AES算法默認分組128bit

    • 消息驗證碼

      • Hash算法能夠完成密碼學目標之一的完整性校驗,但卻不能避免消息被篡改,為避免消息被篡改,需要用到消息驗證碼.消息驗證碼非常重要,一般結合加密算法一起使用

      • 消息驗證碼的模型:MAC值 = mac(消息、密鑰)

      • MAC一般和原始消息一起傳輸,原始消息可以選擇加密,也可以選擇不加密,通信雙方會以相同的方式生成MAC值,然后進行比較

      • MAC算法種類:CBC-MAC算法和HMAC算法,http中使用最多的為HMAC算法.

        1. CBC-MAC算法:CBC-MAC算法從塊密碼算法的CBC分組模式演變而來,簡單的說就是最后一個密鑰分組的值就是MAC值

        2. HMAC算法:使用Hash算法作為加密基元,結合Hash算法有多種變種(HMAC-SHA-1、HMAC-SHA256、HMAC-SHA512)

    • 對稱算法和MAC算法結合

      • 加密算法不能提供完整性,加密的同時必須引入MAC算法避免消息被篡改

      • 結合對稱加密算法和MAC算法提供機密性額完整性的模式叫Authenticated Encryption(AE)加密模式,有三種:

        1. E&M模式:消息分別進行加密運算和MAC運算,然后將兩個運算結果結合起來發送

        2. MtE模式:先對消息進行MAC計算,然后將消息和MAC值組合,再進行加密,最終加密值發送出去(http使用)

        3. EtM模式:先對消息進行加密得到密文,然后對密文再計算MAC值,最終將密文和MAC值組合在一起發送

      • 保證數據加密和完整性的三種模式:

        1. AEAD模式:在底層組合了加密算法和MAC算法,同事保證數據加密和完整性.

        2. CCM模式:使用CBC-MAC算法保證完整性,使用AES算法CTR模式保證加密

        3. GCM模式:GHASH進行MAC運算,AES算法CTR模式進行加密運算,擁有十分不錯的效率和性能

    • 公開密鑰算法

      • 特點:

        1. 功能不一樣:對稱算法主要用於加密和解密,而公開秘鑰算法可以用於加密解密、秘鑰協商、數字簽名

        2. 運算速度很慢:相比對稱加密算法來說,公開秘鑰算法尤其是RSA算法運算非常慢

        3. 秘鑰是一對:對稱加密算法中,密鑰是一串數字,加密者和解密者使用同樣的密鑰.公開密鑰算法是一對,分別為公鑰和私鑰

      • 標准:

        1. RSA算法主要使用PKCS#I定義了兩種機制處理填充問題,從而保證同樣的明文、同樣的密鑰經過RSA加密,每次的密文都是不一樣的

        2. 兩種填充機制分別是RSAES-PKCSI-VI_5和RSAES-OAEP,目前推薦使用的填充標准是RSAES-OAEP,OpenSSL命令行默認使用的標准是RSAES-PKCSI-VI_5

    • 秘鑰(安全性)

      • 是什么?

        1. 對稱加密算法、MAC算法使用的密鑰就是一串數字

        2. 公開密鑰算法中的密鑰四一對,由多個部分組成,但是本質上也可以認為由多個數字組成

      • 作用

        1. 名稱:對稱加密算法秘鑰、作用:加密解密、說明:秘鑰不能泄露

        2. 名稱:非對稱加密算法秘鑰、作用:加密解密、說明:公鑰可以公開,秘鑰不能泄露

        3. 名稱:MAC算法加密、作用:消息驗證、說明:秘鑰不能泄露

        4. 名稱:數字簽名算法秘鑰、作用:身份驗證、說明:公鑰可以公開,秘鑰不能泄露

        5. 名稱:會話秘鑰、作用:加密解密、說明:密鑰不能泄密,該密鑰一般配合對稱加密算法進行加密解密

        6. 名稱:基於口令的密鑰、作用:進行權限校驗,加密解密等、說明:口令不能泄密

      • 生命周期

        1. 生成(偽隨機數生成器口令加密[PBE]算法、偽隨機數生成器)

        2. 存儲(靜態秘鑰[長期秘鑰]、動態秘鑰[會話秘鑰])

        3. 解密

        4. 傳輸(硬編碼在代碼中口頭、郵件)(秘鑰協商算法[不用存儲])

      • 秘鑰協商算法

        • 密鑰協商算法就是為解決密鑰分配、存儲、傳輸等問題,其也是公開秘鑰算法的一種

      • 秘鑰協商算法種類

        1. RSA秘鑰協商算法:

          • 首先使用客戶端生成一個會話秘鑰,然后使用公鑰加密發哥服務器,服務器解密會話秘鑰.接下來服務端和客戶端使用對稱加密算法和會話秘鑰加解密數據.

        2. DH秘鑰協商算法:

          • DH算法在進行密鑰協商的時候,通信雙方的任何一方無法獨自計算出會話密鑰,通信雙方各自保留一部分關鍵信息,再將另外一部分信息告訴對方,雙方有了全部信息告訴對方,雙方有了全部信息才能共同計算出相同的會話密鑰.

    • ECC

      1. 為了保證DH的密鑰對不被破解,提升安全性的主要手段就是增加密鑰對的長度,但是長度越長,性能越低.為了解決性能問題,就有了橢圓曲線密碼學(Elliptic Curv e Cryptography),簡稱ECC.

      2. ECC是新一代公開秘鑰算法,主要優點就是安全性,極短的密鑰能夠提供很大的安全性,同時性能也很高.比如224比特的ECC密鑰和2048比特的RSA密鑰可以達到同樣的安全水平,由於ECC密鑰具有很短的長度,運算速度非常快.

      3. 在具體應用的時候,ECC可以結合其他公開密鑰算法形成更快、更安全的公開密鑰算法,比如結合DH密鑰協商算法組成ECDH密鑰協商算法,結合數學簽名DSA算法組成ECDSA數字簽名算法.

      4. ECC本質上就是一個數學公式,任何人基於公式都可以設計出橢圓曲線.[盡量選擇性能更高、安全系數更高的命名曲線]

    • 數字簽名

      1. 公開密鑰算法的另外一種用途就是數字簽名技術

      2. 解決方案:

        • RSA簽名算法

        • DSA簽名算法

      3. 數字簽名用途

        • 防篡改:數據不會被修改,MAC算法也有這個特點

        • 防抵賴:消息簽署者不能抵賴

        • 防偽造:發送的消息不能夠偽造,MAC算法也有這個特點

      4. 數字簽名流程:

        • 生成流程

          1. 發送者對消息計算摘要值

          2. 發送者用私鑰對摘要值進行簽名得到簽名值

          3. 發送者將原始消息和簽名值一同發給接受者

        • 驗證流程

          1. 接收者接收到消息后,拆分出消息和消息簽名值A

          2. 接收者使用公鑰對消息進行運算得到摘要值B

          3. 接收者對摘要值B和簽名值A進行比較,如果相同表示簽名驗證成功,否則就會驗證失敗

  3. 密碼學算法應用場景

    • 算法安全預測

      • 摩爾定律

    • 應用場景

      • Hash算法(信息摘要算法)

        1. 算法:MD5、SHA-1、SHA-2、SHA-3

        2. 性能:機密性、完整性

        3. 應用場景:

          • 存儲賬號和口令(hash算法加salt)

          • 生成信息摘要,校驗數據完整

      • 對稱加密算法

        1. 算法:DES、3DES、AES、RC4

        2. 性能:機密性

        3. 應用場景:

          • 對效率有要求的實時數據加密通信(使用VPN或者代理進行加密通信時)

          • 大批量數據加密時

          • HTTP加密通訊時

      • 公開秘鑰算法

        1. 算法:RSA、DSA、ECC

        2. 性能:機密性

        3. 應用場景:

          • 秘鑰加密

          • 數字簽名

          • 單向加密

          • 雙向加密

      • 消息驗證碼(MAC)

        1. 算法:CBC-MAC、HMAC

        2. 性能:完整性

        3. 應用場景:

          • 對機密性要求不高,只保障完整性和不被篡改時

      • 數字簽名算法

        1. 算法:RSA數字簽名算法、DSA數字簽名算法、ECDSA數字簽名算法

        2. 性能:身份驗證、不可抵賴性

        3. 應用場景:

          • 防篡改

          • 防抵賴

          • 防偽造

  4. 密碼學算法安全性和性能

    • 秘鑰長度與算法安全

      • 安全的關鍵要素是秘鑰的長度,理論上秘鑰越長就越安全,但是秘鑰越長性能就下降很多

    • 密碼學算法性能

      • 性能和安全是密碼學算法重要指標,在選擇時盡量選擇安全性高的算法,在此基礎上在選擇性能高的算法

  5. 總結

    • 機密性

      • 對稱算法

      • 公開秘鑰算法

    • 完整性

      • Hash函數算法

      • MAC:基於Hash函數算法、基於對稱算法(CBC)

      • 數字簽名算法

    • 身份驗證

      • HMAC

      • 數字簽名算法

    • 不可抵賴性

      • 數字簽名算法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM