1. 程式人生 > >DES、AES、RSA、MD5加密演算法辨析與應用場景

DES、AES、RSA、MD5加密演算法辨析與應用場景

資訊保安Cryptographic Techniques

對稱加密演算法

Data Encryption Standard(DES)

  • DES 是一種典型的塊加密方法:將固定長度的明文通過一系列複雜的操作變成同樣長度的密文,塊的長度為64位。同時,DES 使用的金鑰來自定義變換過程,因此演算法認為只有持有加密所用的金鑰的使用者才能解密密文。 DES 的金鑰表面上是64位的,實際有效金鑰長度為56位,其餘8位可以用於奇偶校驗。

  • DES 現在已經不被視為一種安全的加密演算法,主要原因是它使用的56位金鑰過短。

  • 為了提供實用所需的安全性,可以使用 DES 的派生演算法 3DES 來進行加密 (雖然3DES 也存在理論上的攻擊方法)。

Advanced Encryption Standard(AES)

  • AES 在密碼學中又稱 Rijndael 加密法,用來替代原先的 DES,已經被多方分析且廣泛使用。

  • AES 加密過程在一個稱為 “體 (state)” 的44位元組矩陣上進行,其初值是一個16位元組的明文區塊 (Rijndael 加密法因支援更大的區塊,其矩陣行數可視情況增加)。加密時,各輪 AES 加密迴圈 (除最後一輪外) 均包含4個步驟。

    1. AddRoundKey ‐ 矩陣中的每一個位元組都與該輪金鑰(round key) 做 XOR 運算;每個子金鑰由金鑰生成方案產生。
    2. SubBytes ‐ 通過一個非線性的替換函式,用查詢表的方式把每個位元組替換成對應的位元組。
    3. ShiftRows ‐ 將矩陣中的每個橫列進行迴圈式移位。
    4. MixColumns ‐ 為了充分混合矩陣中各個直行的操作。這個步驟使用線性轉換來混合每內聯的四個位元組。最後一個加密迴圈中省略 MixColumns 步驟,而以另一個 AddRoundKey 取代。

非對稱加密演算法

Diffie‐Hellman Key Exchange Algorithm

  • Diffie‐Hellman 金鑰交換演算法:加密和解密可以使用不同的規則,只要這兩種規則之間存在某種對應關係,即可在不直接傳遞金鑰的情況下,完成解密,迴避了直接傳遞金鑰過程的風險

  • wiki

RSA

  • 1977年由 MIT 的 Ron Rivest、Adi Shamir 和 Leonard Adleman 一起提出,以他們三人姓氏開頭字母命名,是一種獲得廣泛使用的非對稱加密演算法。

  • 對極大整數做因數分解的難度 (The Factoring Problem) 決定了 RSA 演算法的可靠性。換言之,對一個極大整數做因數分解愈困難,RSA 演算法就愈可靠。假如有人找到一種快速因數分解的演算法的話,那麼用 RSA 加密的資訊的可靠性就肯定會極度下降。目前看來找到這樣的演算法的可能性非常小。

RSA

RSA

RSA

雜湊(Hashing)演算法

在資訊保安領域,將源資料經過雜湊演算法計算出資料指紋(data fingerprint),用於識別經過傳播途徑得到的資料是否有誤 (通訊誤碼或被竄改),以保證資料的來源真實性。

Message Digest(MD5)

MD5 即 Message‐Digest Algorithm 5 (資訊‐摘要演算法 5),是計算機廣泛使用的雜湊演算法之一,經常用於確保資訊傳輸的完整性和一致性 。

  • MD5 輸入不定長度資訊,經過程式流程,生成四個32位資料,最後聯合起來輸出固定128bit長度的資訊摘要。計算的基本過程為:求餘、取餘、調整長度、與連結變數
    進行迴圈運算、得出結果。
  • MD5 的前身有 MD2、MD3 和 MD4。

Secure Hash Algorithm(SHA-1、SHA-256)

  • SHA-1可以生成一個被稱為訊息摘要的160位(20位元組)雜湊值

  • wiki

應用場景

  • DES/AES加密速度快,適合大量資料,處理資料後可復原。

  • RSA

    1. RSA用於保密性時,就是公鑰加密,私鑰解密。 因為公鑰是可以公開了, 那麼任何人都可以使用公鑰對資訊進行加密,但是隻有持有私鑰的人才能正確解密。這樣就保證了資訊的保密性,因為只有私鑰持有者才能正確解密。
    2. RSA用於認證性時,比如數字簽名,即私鑰持有者對資訊進行簽名,驗證者可以根據公開的公鑰進行驗證簽名是否正確和有效,即實現了認證性,以及不可抵賴性。
  • MD5/SHA-1用於完整性,確保資訊在傳輸過程保持一致性;用於密碼加密,資料庫中不儲存密碼明文,而是儲存其雜湊值,校驗時比較雜湊值是否相同

組合使用

  • 採用非對稱加密演算法管理對稱演算法的金鑰,然後用對稱加密演算法加密資料,使用雜湊函式進行資料摘要

附:

  • Confidentiality:保密性原則要求做到只有傳送人和授權接收人才能訪問訊息的內容。如果非法人員能夠訪問訊息內容,則破壞了保密性原則。
  • Integrity:完整性原則確保訊息內容在傳送方發出後和到達接收方之間不會發生改變,即保持一致性。
  • Authenticity:認證機制用於證明身份。認證過程保證對電子訊息或文件來源的正確標示。
  • Non‐repudiation:不可抵賴原則確保傳送訊息的使用者不能對其傳送訊息的行為進行抵賴。