【安全系列之加密算法】常用安全的加密算法
最近在做安全相關(guān)的工作,那么我們?cè)谑裁辞闆r下應(yīng)該使用什么樣的加密算法? 什么樣的加密算法是安全的呢? 安全的基礎(chǔ)上,性能如何呢? 這里記錄一下
?1、首先,為什么要加密?
數(shù)據(jù)存儲(chǔ)和傳輸存在的風(fēng)險(xiǎn):
1. 防止不速之客查看機(jī)密的數(shù)據(jù)文件;
2. 防止機(jī)密數(shù)據(jù)被泄露或篡改;
3. 防止特權(quán)用戶(如系統(tǒng)管理員)查看私人數(shù)據(jù)文件;
4. 使入侵者不能輕易地查找一個(gè)系統(tǒng)的文件。?
?2、常見加密方式
?2.1對(duì)稱加密
?采用單鑰密碼系統(tǒng)的加密方法,同一個(gè)密鑰可以同時(shí)用作信息的加密和解密,這種加密方法稱為對(duì)稱加密,也稱為單密鑰加密。特點(diǎn):
常見加密算法
DES : Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法,1977年被美國(guó)聯(lián)邦政府的國(guó)家標(biāo)準(zhǔn)局確定為聯(lián)邦資料處理標(biāo)準(zhǔn)(FIPS),并授權(quán)在非密級(jí)政府通信中使用,隨后該算法在國(guó)際上廣泛流傳開來。
AES : Advanced Encryption Standard, 高級(jí)加密標(biāo)準(zhǔn) .在密碼學(xué)中又稱Rijndael加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)用來替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。
對(duì)稱加密算法(加解密密鑰相同)
| 名稱 | 密鑰長(zhǎng)度 | 運(yùn)算速度 | 安全性 | 資源消耗 |
| DES | 56位 | 較快 | 低 | 中 |
| 3DES | 112位或168位 | 慢 | 中 | 高 |
| AES | 128、192、256位 | 快 | 高 | 低 |
| 名稱 | 數(shù)據(jù)大小(MB) | 時(shí)間(s) | 平均速度MB/S | 評(píng)價(jià) |
| DES | 256 | 10.5 | 22.5 | 低 |
| 3DES | 256 | 12 | 12 | 低 |
| AES(256-bit) | 256 | 5 | 51.2 | 中 |
| Blowfish | 256 | 3.7 | 64 | 高 |
2.2 非對(duì)稱加密
非對(duì)稱加密算法又稱現(xiàn)代加密算法。
非對(duì)稱加密是計(jì)算機(jī)通信安全的基石,保證了加密數(shù)據(jù)不會(huì)被破解。
與對(duì)稱加密算法不同,非對(duì)稱加密算法需要兩個(gè)密鑰:公開密鑰(publickey) 和私有密(privatekey)
公開密鑰和私有密鑰是一對(duì)
如果用公開密鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私有密鑰才能解密。
如果用私有密鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的公開密鑰才能解密。
因?yàn)榧用芎徒饷苁褂玫氖莾蓚€(gè)不同的密鑰,所以這種算法叫作非對(duì)稱加密算法。
非對(duì)稱算法(加密密鑰和解密密鑰不同)
| 名稱 | 成熟度 | 安全性(取決于密鑰長(zhǎng)度) | 運(yùn)算速度 | 資源消耗 |
| RSA | 高 | 高 | 慢 | 高 |
| DSA | 高 | 高 | 慢 | 只能用于數(shù)字簽名 |
| ECC | 低 | 高 | 快 | 低(計(jì)算量小,存儲(chǔ)空間占用小,帶寬要求低) |
2.3 對(duì)稱與非對(duì)稱算法比較
| 名稱 | 密鑰管理 | 安全性 | 速度 |
| 對(duì)稱算法 | 比較難,不適合互聯(lián)網(wǎng),一般用于內(nèi)部系統(tǒng) | 中 | 快好幾個(gè)數(shù)量級(jí)(軟件加解密速度至少快100倍,每秒可以加解密數(shù)M比特?cái)?shù)據(jù)),適合大數(shù)據(jù)量的加解密處理 |
| 非對(duì)稱算法 | 密鑰容易管理 | 高 | 慢,適合小數(shù)據(jù)量加解密或數(shù)據(jù)簽名 |
3、消息摘要
無論輸入的消息有多長(zhǎng),計(jì)算出來的消息摘要的長(zhǎng)度總是固定的。例如應(yīng)用MD5算法摘要的消息有128個(gè)比特位,用SHA-1算法摘要的消息最終有160比特位的輸出
只要輸入的消息不同,對(duì)其進(jìn)行摘要以后產(chǎn)生的摘要消息也必不相同;但相同的輸入必會(huì)產(chǎn)生相同的輸出
消息摘要是單向、不可逆的
MD5:MD5是一種不可逆的加密算法,目前是最牢靠的加密算法之一,尚沒有能夠逆運(yùn)算的程序被開發(fā)出來,它對(duì)應(yīng)任何字符串都可以加密成一段唯一的固定長(zhǎng)度的代碼。
SHA1:是由NISTNSA設(shè)計(jì)為同DSA一起使用的,它對(duì)長(zhǎng)度小于264的輸入,產(chǎn)生長(zhǎng)度為160bit的散列值,因此抗窮舉(brute-force)性更好。SHA-1設(shè)計(jì)時(shí)基于和MD4相同原理,并且模仿了該算法。SHA-1是由美國(guó)標(biāo)準(zhǔn)技術(shù)局(NIST)頒布的國(guó)家標(biāo)準(zhǔn),是一種應(yīng)用最為廣泛的Hash函數(shù)算法,也是目前最先進(jìn)的加密技術(shù),被政府部門和私營(yíng)業(yè)主用來處理敏感的信息。而SHA-1基于MD5,MD5又基于MD4。
HMAC:是密鑰相關(guān)的哈希運(yùn)算消息認(rèn)證碼(Hash-based Message Authentication Code),HMAC運(yùn)算利用哈希算法,以一個(gè)密鑰和一個(gè)消息為輸入,生成一個(gè)消息摘要作為輸出。也就是說HMAC是需要一個(gè)密鑰的。所以,HMAC_SHA1也是需要一個(gè)密鑰的,而SHA1不需要。
算法選擇(從性能和安全性綜合)
- 對(duì)稱加密: AES(128位),五種工作模式中,電碼本模式(Electronic?Codebook?Book?(ECB))不安全盡量不要使用。
- 非對(duì)稱加密: ECC(160位)或RSA(1024),
- 消息摘要: MD5
- 數(shù)字簽名:DSA
- 輕量級(jí):TEA、RC系列(RC4),Blowfish (不常換密鑰)
參考:
重要(寫的很詳細(xì),平時(shí)可以用):網(wǎng)絡(luò)安全之密碼學(xué) 信息安全/加密算法_Manaphy Chen的博客-CSDN博客_信息安全加密算法
常見的幾種加密算法比較_傳輸數(shù)據(jù)
各種加密算法比較 - 落葉的瞬間; - 博客園
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的【安全系列之加密算法】常用安全的加密算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring boot单元测试
- 下一篇: 如何查看数据库索引的利用率?