一、對稱加密和非對稱加密入門 1. 如何不被竊聽 —— 加密 - 這種加密方案在密碼學(xué)里稱為對稱密碼,加密方和解密方使用的是相同的密鑰。
- 知名的密碼算法有 AES(2001)、Blowfish(1993)、DES(1977),再遠(yuǎn)一點,有二戰(zhàn)時期的恩尼格碼(轉(zhuǎn)輪機原理,德國)、紫色密碼(轉(zhuǎn)輪機原理,日本),以及著名的凱撒密碼(沒錯就是地中海北岸那個凱撒)、柵欄密碼等。
2. 如何交換密鑰 —— 非對稱加密 解決信道安全問題 - Bob 事先生成一對公鑰和私鑰,私鑰 pri 由自己保管,把公鑰 pub 發(fā)給 Alice。
- Alice 使用 pub 對消息內(nèi)容進行加密,Bob 用 pri 進行解密。
- 需要注意的是, 只有私鑰才可以解密,所以即使 Eve 竊取到了 pub(只有 pub 被傳輸而容易被竊?。?,她也無法解密。
- 這種加密方式在密碼學(xué)里稱為非對稱密碼,所謂“非對稱”指的是加密方和解密方用的密鑰不一樣。
- 知名的非對稱算法有:DSA(數(shù)字簽名算法,只能用于簽名,1991)、ECC(橢圓曲線加密,1985)、RSA(公鑰加密算法,1977)等。
- 這些算法除了用于加密外,還可以用于 數(shù)字簽名。非對稱算法有個致命弱點: 性能很低。實際應(yīng)用中一般采用混合加密體制、哈希簽名體制。
3. 如何防止數(shù)據(jù)篡改 —— MAC 圖中的 MAC 指的是 消息認(rèn)證碼(Message Authentication Code),你現(xiàn)在不需知道它的原理,只要記住 :(1)傳入兩個參數(shù) message 和 key,進行一系列計算后得到一個值叫 MAC。(2)只有 message 和 key 相同的情況下,才能得到相同的 MAC。 - 消息認(rèn)證碼有多種實現(xiàn)方式,其中最常見的是 HMAC(Hash MAC),即使用哈希算法來實現(xiàn) MAC,還有一種是基于分組密碼算法的 MAC,不常見。
- 聰明如你,肯定會想到如果 key 被竊取該怎么辦?這就涉及到 數(shù)字簽名了,后文會講到。
4. 如何校驗身份 —— MAC - MAC包含幾種實現(xiàn)方式:基于 HASH 的 MAC 稱為 HMAC,應(yīng)用比較廣泛。
- 有些同學(xué)應(yīng)該接觸過阿里云的 Access Key,其實就是 HMAC 的原理。
- 有些同學(xué)在兩個系統(tǒng)之間API調(diào)用時,會使用同一個 key 做 md5 計算來實現(xiàn) API 鑒權(quán),這稱為“加鹽HASH”,可以簡單理解為 HMAC 的簡化版。
- 同樣的,如果 key 被竊取該怎么辦?這可以用 數(shù)字簽名來解決。
5.更進一步 —— 數(shù)字簽名 發(fā)送方是用 私鑰進行簽名,而接收方用 公鑰 進行驗簽,這跟加密情況正好相反。 6. 公鑰的身份證 —— 數(shù)字證書 偽造公鑰,Bob 需要事先生成公鑰 pub 和私鑰 pri ,然后把 pub 分發(fā)給 Alice。那么攻擊過程就從這入手,Eve 生成自己的一對公鑰 pub' 和 私鑰 pri',截獲 Bob 的 pub,并用自己的 pub' 冒充 Bob 的公鑰發(fā)給 Alice。 這是個“偷天換日”的過程,Eve 通過偽造公鑰(中間人攻擊),不光竊聽到 Alice 的消息,還能保證整個過程中 Alice 和 Bob 都沒有察覺! Eve 不是喜歡偽造公鑰嗎,Bob 這次就要請 Trent 為自己的公鑰注冊一張 “身份證” —— 數(shù)字證書。見證如見人,哦不對,見證如見公鑰!以下是注冊數(shù)字證書的過程: - Bob 請求 Trent 為自己的公鑰 pub 注冊一個證書。
- Trent 收到請求后,用自己的私鑰 pri ' 對 pub(以及身份信息) 進行簽名,得到一個 sign。
- Trent 把證書 certificate = pub + sign 頒發(fā)給 Bob。
- Bob 把自己的證書 pub + sign 發(fā)給 Alice。
- Alice 使用 Trent 的公鑰 pub ' 對 sign 進行驗簽,如果校驗成功則說明 pub 的確是 Bob 的公鑰,因為她相信 Trent 的權(quán)威性。
Eve 不可能找 Trent 為她辦一個 Bob 的數(shù)字證書,因為 Trent 不會同意的,就像警察蜀黍不會給我辦一張別人的身份證一樣。所以,Eve 無法偽造 Bob 的公鑰。 - 考慮到非對稱算法的效率問題,實際應(yīng)用中一般是先對數(shù)據(jù)進行哈希,然后才用私鑰對哈希值(摘要)進行簽名。
- Trent 在密碼技術(shù)領(lǐng)域中一般稱為 認(rèn)證機構(gòu)(Certification Authority,即 CA)。
- 以數(shù)字證書為基礎(chǔ),業(yè)界制定了一系列的規(guī)范和規(guī)格,比如由誰頒發(fā)證書、如何進行頒發(fā)、如何作廢證書等,稱為 公鑰基礎(chǔ)設(shè)施(Public-Key Infrastructure,即 PKI)。
二、對稱加密常見密碼學(xué) AES,DES,3DES,TDEA,Blowfish,RC5,IDEA 三、非對稱加密經(jīng)典算法 RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)
|