常見的加密算法可以分成三類,對稱加密算法夸溶,非對稱加密算法和Hash算法苟穆。
(1)對稱加密
指加密和解密使用相同密鑰的加密算法甲喝。對稱加密算法的優(yōu)點在于加解密的高速度和使用長密鑰時的難破解性。假設兩個用戶需要使用對稱加密方法加密然后交換數(shù)據愧旦,則用戶最少需要2個密鑰并交換使用世剖,如果企業(yè)內用戶有n個,則整個企業(yè)共需要n×(n-1) 個密鑰笤虫,密鑰的生成和分發(fā)將成為企業(yè)信息部門的惡夢旁瘫。對稱加密算法的安全性取決于加密密鑰的保存情況,但要求企業(yè)中每一個持有密鑰的人都保守秘密是不可能的琼蚯,他們通常會有意無意的把密鑰泄漏出去——如果一個用戶使用的密鑰被入侵者所獲得酬凳,入侵者便可以讀取該用戶密鑰加密的所有文檔,如果整個企業(yè)共用一個加密密鑰遭庶,那整個企業(yè)文檔的保密性便無從談起宁仔。
常見的對稱加密算法:DES、3DES峦睡、DESX翎苫、Blowfish、IDEA榨了、RC4煎谍、RC5、RC6和AES
(2)非對稱加密
指加密和解密使用不同密鑰的加密算法龙屉,也稱為公私鑰加密呐粘。假設兩個用戶要加密交換數(shù)據,雙方交換公鑰,使用時一方用對方的公鑰加密事哭,另一方即可用自己的私鑰解密漫雷。如果企業(yè)中有n個用戶,企業(yè)需要生成n對密鑰鳍咱,并分發(fā)n個公鑰降盹。由于公鑰是可以公開的,用戶只要保管好自己的私鑰即可谤辜,因此加密密鑰的分發(fā)將變得十分簡單蓄坏。同時,由于每個用戶的私鑰是唯一的丑念,其他用戶除了可以可以通過信息發(fā)送者的公鑰來驗證信息的來源是否真實涡戳,還可以確保發(fā)送者無法否認曾發(fā)送過該信息。非對稱加密的缺點是加解密速度要遠遠慢于對稱加密脯倚,在某些極端情況下渔彰,甚至能比非對稱加密慢上1000倍。
常見的非對稱加密算法:RSA推正、ECC(移動設備用)恍涂、Diffie-Hellman、El Gamal植榕、DSA(數(shù)字簽名用)
(3)Hash算法
Hash算法特別的地方在于它是一種單向算法再沧,用戶可以通過Hash算法對目標信息生成一段特定長度的唯一的Hash值,卻不能通過這個Hash值重新獲得目標信息尊残。因此Hash算法常用在不可還原的密碼存儲炒瘸、信息完整性校驗等。
特點:
- 哈希(Hash)是將目標文本轉換成具有相同長度的寝衫、不可逆的雜湊字符串(或叫做消息摘要)顷扩,而加密(Encrypt)是將目標文本轉換成具有不同長度的、可逆的密文竞端。
- Hash算法無論輸入的源數(shù)據的長度是多少屎即,同一種Hash算法轉換后結果的長度都相同。
常見的Hash算法:MD2事富、MD4技俐、MD5、HAVAL统台、SHA雕擂、SHA-1、HMAC贱勃、HMAC-MD5井赌、HMAC-SHA1
這里的不可逆既指不能根據轉換后的結果逆轉回原文流部,也指對于兩個輸入,即使其轉換結果相同也不能說這兩個輸入就一定相同纹坐。
因為枝冀,Hash算法的定義域是一個無限集合,但是值域確是一個有限集合耘子,將一個無限集合映射到有限集合上果漾,根據“鴿籠原理”,每個哈希結果都存在無數(shù)個可能的目標文本谷誓,因此哈希是一個多對一的映射绒障,所以它也不存在逆映射。
但是對于其他加密算法捍歪,它的結果往往取決于輸入户辱,其定義域和值域都是無限集合,明顯是一個一一映射糙臼,對于一一映射焕妙,理論上都是可逆的。
2弓摘、對于Hash算法和加解密算法一般情況下我們是如何選擇的呢?
基本原則是:如果被保護數(shù)據僅僅用作比較驗證痕届,在以后不需要還原成明文形式韧献,則使用哈希;如果被保護數(shù)據在以后需要被還原成明文研叫,則需要使用加密锤窑。
如一般情況下,幾乎所有的注冊用戶時我們輸入的密碼都是使用Hash算法進行加密然后將其保存在數(shù)據庫中的嚷炉。當我們登錄時渊啰,輸入我們的密碼,然后通過Hash運算申屹,將運算結果與數(shù)據庫中存儲的結果比較绘证,相同的話就登錄,不同的話就代表密碼錯誤哗讥,需要重新輸入嚷那。
可以使用如下的辦法:
1)hash+鹽(salt)
salt可以簡單的理解成:隨機產生的一定長度的魏宽,可以和密碼相結合腐泻,從而使hash算法產生不同結果的字符串。也就相當于你的新密碼 = 舊密碼 + 隨機的鹽值队询,然后對新密碼進行hash派桩。
優(yōu)點:這種方法會極大防止受到彩虹表的攻擊,因為即便攻擊者構造出彩虹表蚌斩,因為你使用了 hash(密碼+ salt)铆惑,攻擊者彩虹表里的哈希值(hash(密碼))和你數(shù)據庫中的哈希值是不同的。
缺點: 如果攻擊者知道了salt和你的哈希值凳寺,就可以計算出你的原始密碼(當然也沒有那么容易)
2)增加計算的時間 (哈希 + salt + Iteration)
通過迭代計算的方式增加計算密碼的成本鸭津。迭代的周期控制在用戶可以接受范圍內,這樣攻擊者的計算和時間成本就會大大增加肠缨。