密碼學總體介紹與分析 1
密碼學大致加密演算法可以分為兩種,
- 一種是對稱加密(Symmetric cryptograthy),
- 另一種是非對稱加密(Asymmetric cryptography) 第二種也叫公鑰加密(Public-Key Cryptography)
兩者的區別是是否使用了相同的祕鑰。對稱加密使用相同祕鑰,非對稱加密使用兩種祕鑰。
對稱加密代表有 “三重DES”和“AES”,非對稱加密代表有 RSA、ElGamal演算法加密、橢圓曲線加密等 .
相對於對稱密碼加密解密採用相同的密碼,非對稱密碼加密採用的是不同的祕鑰,公鑰和私鑰是成對出現的,公鑰加密的資訊只有相應的私鑰才能解密。
- 非對稱加密,就是向大家派發鎖(公鑰),大家可以通過鎖對資訊加密,鎖是公開的,丟了也無所謂,但鑰匙(私鑰)只有一把,歸資訊的接收者所有
- 對稱加密好比大家用相同的鎖對資訊加密,加密雙方都擁有相同的鑰匙,鑰匙(祕鑰)丟了,鎖(明文資訊)就被別人打開了
非對稱加密流程
- 接收方生成公鑰私鑰對,私鑰由接收方保管
- 接收方將公鑰傳送給傳送方
- 傳送方通過公鑰對明文加密,產生密文
- 傳送方向接收方傳送密文
- 接收方通過私鑰解密密文,得到明文
缺點是無法解決公鑰認證問題,可能被中間人偽造公鑰
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 三套演算法。
- 其中 SHA-1 可生成 160 bit 雜湊值,已被攻破(由王小云、姚期智聯手破解),不推薦使用。
- 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$ 位元。
- SHA-3,是 2012 年被採用的最新標準,採用了 Keccak 演算法。
Keccak 演算法的優點:
- 採用與 SHA2 完全不同的結構
- 結構清晰,易於分析
- 適用於各種硬體,效能優越
- 可生成任意長度
- 對訊息長度無限制
- 可採用雙工結構,輸入同時輸出,提升效率
MD4,5, RIPEMD, RIPEMD-160, SHA-1, SHA-2 均採用 MD 結構(Merkle-Damgard construction)
對雜湊的攻擊
- 暴力破解,冗餘碰撞
- 生日攻擊,針對強抗碰撞性
Reference: https://www.jianshu.com/p/a8070920810d