1. 程式人生 > >密碼學總體介紹與分析 1

密碼學總體介紹與分析 1

密碼學大致加密演算法可以分為兩種,

  • 一種是對稱加密(Symmetric cryptograthy),
  • 另一種是非對稱加密(Asymmetric cryptography) 第二種也叫公鑰加密(Public-Key Cryptography)

兩者的區別是是否使用了相同的祕鑰。對稱加密使用相同祕鑰,非對稱加密使用兩種祕鑰。

對稱加密代表有 “三重DES”和“AES”,非對稱加密代表有 RSA、ElGamal演算法加密、橢圓曲線加密等 .

 

相對於對稱密碼加密解密採用相同的密碼,非對稱密碼加密採用的是不同的祕鑰,公鑰和私鑰是成對出現的,公鑰加密的資訊只有相應的私鑰才能解密。

  • 非對稱加密,就是向大家派發鎖(公鑰),大家可以通過鎖對資訊加密,鎖是公開的,丟了也無所謂,但鑰匙(私鑰)只有一把,歸資訊的接收者所有
  • 對稱加密好比大家用相同的鎖對資訊加密,加密雙方都擁有相同的鑰匙,鑰匙(祕鑰)丟了,鎖(明文資訊)就被別人打開了

 

非對稱加密流程

  1. 接收方生成公鑰私鑰對,私鑰由接收方保管
  2. 接收方將公鑰傳送給傳送方
  3. 傳送方通過公鑰對明文加密,產生密文
  4. 傳送方向接收方傳送密文
  5. 接收方通過私鑰解密密文,得到明文

缺點是無法解決公鑰認證問題,可能被中間人偽造公鑰

 

RSA

RSA加密存在的問題:

  • 效率慢,因此在工業場景下,往往是通過非對稱加密配送祕鑰、對稱加密加密明文的混合加密方式,如著名的SSL
  • 公鑰認證問題難,訊息傳送方無法確認公鑰的身份問題
  • 無法避免中間人攻擊,可能被人在中間劫持後傳送一個偽造的公鑰,此公鑰加密後的密文可以被劫持者解密,之後所有的密文對劫持者都是透明的
  • 選擇密文攻擊,即通過不斷的傳送請求,分析請求的反饋,猜測祕鑰和明文
  • 密碼劣化,隨著算力的提升,密碼的安全性下降

 

其他非對稱加密演算法:

  • ECC (Elloptic Curve Cryptography) 橢圓曲線密碼
  • ElGamal 
  • Rabin

 

混合密碼系統

對稱加密和非對稱加密的結合,由於對稱加密演算法速度快、強度高,而非對稱加密演算法效率低,但能解決祕鑰配送問題,

因此可以通過非對稱加密配送對稱祕鑰,再採用對稱祕鑰用來加密的方式,實現網路的祕鑰配送和通訊加密。

 

單向雜湊

單向雜湊是為了保證訊息的完整性,防止資訊被篡改的一項技術。

特點:

  • 無論訊息長度,計算出的長度永遠不變
  • 快速計算
  • 訊息不同,雜湊值不同,需要具有抗碰撞性 Collision Resistance

            -弱抗碰撞性:給定雜湊值,找到和該訊息具有相同雜湊值的另一條訊息是困難的

            -強抗碰撞性:任意雜湊值,找到雜湊值相同的兩條不同的訊息是困難的

  • 具有單向性 one-way,不可由雜湊值推出原訊息

 

單向雜湊演算法

  • MD(Message Digest)

MD 雜湊演算法分為 MD4, MD5 兩套演算法,都可計算出 128 bits 的雜湊。MD 系列演算法已經被中國科學家王小云破解(可於有限時間內找出碰撞)。

  • SHA(Secure Hash Algorithm)

      SHA 是單向雜湊演算法的一個標準的統稱,其下又分為 SHA-1, SHA-2, SHA-3 三套演算法。

  1. 其中 SHA-1 可生成 160 bit 雜湊值,已被攻破(由王小云、姚期智聯手破解),不推薦使用。
  2. SHA-2 可生成不同長度的雜湊,如 256 bits (SHA-256), 384 bits (SHA-384), 512 bits (SHA-512),同時對輸入的訊息長度存在一定限制,SHA-256 上限接近於 $2^{64}-1$ 位元,SHA-384、SHA512 則接近於 $2^{128}-1$ 位元。
  3. SHA-3,是 2012 年被採用的最新標準,採用了 Keccak 演算法。

            Keccak 演算法的優點:

  1.  採用與 SHA2 完全不同的結構
  2.  結構清晰,易於分析
  3.  適用於各種硬體,效能優越
  4.  可生成任意長度
  5.  對訊息長度無限制
  6.  可採用雙工結構,輸入同時輸出,提升效率

MD4,5, RIPEMD, RIPEMD-160, SHA-1, SHA-2 均採用 MD 結構(Merkle-Damgard construction)

 

對雜湊的攻擊

  • 暴力破解,冗餘碰撞
  • 生日攻擊,針對強抗碰撞性

Reference: https://www.jianshu.com/p/a8070920810d