設為首頁 收藏本站

運維網

查看: 229|回復: 1
打印 上一主題 下一主題

[資源發布] 常用算法簡介

[復制鏈接]
累計簽到:224 天
連續簽到:4 天
跳轉到指定樓層
1#
發表于 2019-11-26 11:47:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
常用算法簡介
一、摘要算法
摘要算法也稱哈希算法,不可逆算法,主要有MD家族(MD5)、SHA家族(SHA256)、CRC32等。
1.Md5
Message-Digest Algorithm 5(信息-摘要算法),目前該系列中最常用的算法之一,抗分析和抗差分方面比Md4表現更好。
主要通過將消息分解成512-bit大小然后求余、取余、調整長度、與鏈接變量進行循環運算,得出固定長度128-bits的算法。
當然之前已被證明可碰撞,但考慮到碰撞概率較低,結合實際情況使用,可用于數據篡改校驗以及敏感ID數據表示,較高安全場景不適用。

2.Sha1-Sha2
安全哈希算法(Secure Hash Algorithm)
速度較慢,不適合大文件簽名,但是安全性比Md5要高。
SHA-1是160位的哈希值,運算過程與MD5類似,步驟要多,但是原始報文長度不能超過2的64次方。
而SHA-2有多種位值,主要包含SHA256、SHA384、SHA512。
SHA家族在SSL行業中使用較多,目前已經切換到SHA2,其中最受歡迎的是SHA-256,而SHA512支持度不高,SHA2預計有效期為5年左右,屆時會升級SHA3。

3.Hmac
HMAC,全稱為“Hash Message Authentication Code”,中文名“散列消息鑒別碼”,是基于密鑰的 Hash 算法的認證協議。它用公開函數和密鑰產生一個固定長度的值作為認證標識,用這個標識鑒別消息的完整性,它是對HASH算法的補充。
優點:
可以保持散列函數原有的性能不退化。
源碼是公開和通用的,直接與常用底層Hash算法結合使用,Hash算法更換也較方便(現在都有HmacMd5,HmacSha等實現)。
安全性在摘要算法上增加了一步密鑰破解的難度。

4.CRC32
32位循環冗余校驗多項式,計算規則比較簡單,校驗碼較短,主要用于通信數據校驗,碰撞率較高,一般我們可以用于簡單取模操作。

Hash破解方式:
1)暴力破解,也就是窮舉法,時間換空間,需要消耗大量資源和時間,僅適合短密碼碰撞。
2)字典法,其實也是暴力破解的變種,空間換時間,事先生成各種短密碼的md5表以備碰撞查詢。
3)彩虹表,使用hash鏈碰撞方式,在時間和空間上的一種折中,使用小于字典表的存儲,小于暴力破解的時間。
4)差分攻擊,王老師提出對md5進行破解的方式,通過修改相應比特位的方法來達到滿足這一系列充分條件,貌似只需要測試2^37條隨機消息,即可找到碰撞消息。

然而針對破解方法,我們只需要使用Hmac算法,保護好認證碼,破解難度就提高很多了。


幾種摘要算法對比:

算法        摘要長度(字節)        速度        安全性(當前碰撞復雜度)        計算規則        應用場景
MD5        32        較快(1)        較高(3)
分組、替換補位、輪轉
互聯網應用數據、文件傳輸完整性驗證、隱私ID保護
SHA1        40        一般(2)        較高(2)        分組、替換補位、輪轉
文件傳輸完整性驗證、CA數字證書(已淘汰)
SHA256        64        較慢(3)        最高(1)        分組、替換補位、輪轉
文件傳輸完整性驗證、CA數字證書(正使用)
CRC32        8        一般(2)        較低(5)        多項式除法        本地文件簡單校驗、網絡底層數據傳輸完整性校驗

二、轉碼算法1.Base64
Base64并不是一種加密算法,而是一種轉碼算法。它把3個8位字節轉化為4個6位區塊再補零到8位,用這種方式可將有效值控制在6個比特位,即可表示可見的a-zA-Z0-9+/,=補位,它的名字的由來,即“基于64個字符”之意。它計算速度非???,既不能用作數據安全加密也不能用于一致性校驗。
為什么Base64使用廣泛,如加密算法經常用base64輸出結果、網頁嵌入小圖片、數據傳輸等,主要原因是不可見字符(亂碼)會在某些傳輸設備、某些轉換過程會丟失數據,這里補充一個低級錯誤場景:

byte[] bs=new byte[]{-62, -33, -114, 45};
System.out.println(Arrays.toString(new String(bs,"UTF-8").getBytes("UTF-8")));
//我們得到的是[-17, -65, -67, -33, -114, 45],如果用ISO8859_1單字節字符集或者Base64字符就不會這樣,因為UTF-8、GBK等字符集是變長多字節字符集,在字節轉字符時轉碼失敗會導致字節丟失。?


這里將Base64作為轉碼代表拿出來只是為了區分加密和轉碼的概念。
三、可逆加密算法

1.對稱加密算法(AES)
Advanced Encrytion Standard(高級加密標準)
加密方與解密方使用同一組密鑰,即對稱加密。
在之前我們有用過DES算法,主要是將64位的明文輸入塊變為64位的密文輸出塊,再到后面3DES算法使用3條64位的密鑰對數據進行三次加密,被廣泛的應用。
直到AES出現,AES算法基于幾種不同的排列和置換運算,它可以使用128、192和256位密鑰,并且用128位(16字節)分組加密和解密數據,擁有更高的密鑰長度和安全性。
注意:java中默認最多使用128位密鑰,如果要使用AES256,則需要下載添加local_policy.jar 和US_export_policy.jar到security

2.非對稱加密算法(RSA)
算法取名于三位發明人姓名首字母,RSA算法基于一個十分簡單的數論事實:將兩個大質數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。
RSA的公鑰用于加密,私鑰用于解密,即稱非對稱加密。
RSA加密安全級別極高,但是性能不高,一般不適合長文本加密,可以和AES結合使用,AES加密消息正文,RSA提供密鑰分配安全保障。

對稱加密算法對比:
名稱
密鑰長度
運算速度
安全性
資源消耗
DES
56位
較快


3DES
112位或168位



AES
128、192、256位




非對稱算法對比:
名稱
安全性(相同密鑰長度)
簽名速度
驗證速度
資源消耗
應用場景
RSA




數字證書認證,實現較為簡單,成熟度較高。
ECC
較高



數字證書認證,實現較為復雜,成熟度不高,將來可能替代RSA

四、SSL案例結合
網絡通信主要有三大風險:
1)竊聽風險
2)篡改風險
3)冒充風險
而SSL(安全傳輸層協議)就是專門為解決這些問題應運而生的。
通過SSL加解密過程分析,我們可以了解各類算法在解決三大風險問題時扮演什么角色。
假設S(服務端)、C(客戶端)兩方需要進行安全通信傳輸數據。
SSL包括單向認證(C確認S身份)、雙向認證(雙方確認身份),這里分析一下單向認證的過程。

主要來看四次握手:
      1.1 C發出請求,提供協議版本、隨機數1、支持的加密算法和壓縮算法。

      1.2 服務端S響應C的請求,確認協議版本和要使用的加密算法、返回服務器證書(CA認證過的公鑰)和隨機數2。

      1.3 C再次回應,提供公鑰加密后的隨機數3、以及內容hash校驗值,并通知開始使用約定加密方法和消息秘鑰發送。

      1.4 S最后回應。

簡單來說,整個通信過程主要歸納為三件事
      1.1 C向S索要公鑰并且通過CA驗證。主要是初始化加密通信的上下文,獲得非對稱加密的加密條件(算法選取、公鑰獲?。?,并用CA提供的數字簽名驗證證書是否可信,防止身份冒充。
      1.2 雙方通過三次隨機碼生成對話密鑰。非對稱加密以及隨機碼動態密鑰生成算法保證了對話密鑰的絕對安全性。
      1.3 雙方采用對話密鑰加密通信內容。使用DES、AES對稱加密,相對輕量的算法,保證了杜絕了通信內容竊聽的可能性。

在SSL協議中,三類算法職責非常明確,非對稱加密算法保證對稱密鑰安全,對稱加密算法保證通信主體內容不被破解,摘要算法保證內容不被篡改

+1 3

運維網聲明 1、歡迎大家加入本站運維交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主題由該帖子作者發表,該帖子作者與運維網享有帖子相關版權
3、所有作品的著作權均歸原作者享有,請您和我們一樣尊重他人的著作權等合法權益。如果您對作品感到滿意,請購買正版
4、禁止制作、復制、發布和傳播具有反動、淫穢、色情、暴力、兇殺等內容的信息,一經發現立即刪除。若您因此觸犯法律,一切后果自負,我們對此不承擔任何責任
5、所有資源均系網友上傳或者通過網絡收集,我們僅提供一個展示、介紹、觀摩學習的平臺,我們不對其內容的準確性、可靠性、正當性、安全性、合法性等負責,亦不承擔任何法律責任
6、所有作品僅供您個人學習、研究或欣賞,不得用于商業或者其他用途,否則,一切后果均由您自己承擔,我們對此不承擔任何法律責任
7、如涉及侵犯版權等問題,請您及時通知我們,我們將立即采取措施予以解決
8、聯系人Email:[email protected] 網址:www.mypefu.live

所有資源均系網友上傳或者通過網絡收集,我們僅提供一個展示、介紹、觀摩學習的平臺,我們不對其承擔任何法律責任,如涉及侵犯版權等問題,請您及時通知我們,我們將立即處理,聯系人Email:[email protected],QQ:1061981298 本貼地址:http://www.mypefu.live/thread-988948-1-1.html 上篇帖子: Web安全工程師(入門到進階)微專業第1期 下篇帖子: 應用系統入侵拿站教程全集
點擊關注更多內容
累計簽到:224 天
連續簽到:4 天
2#
 樓主| 發表于 2019-11-26 11:48:10 | 只看該作者
666666666666

運維網聲明 1、歡迎大家加入本站運維交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主題由該帖子作者發表,該帖子作者與運維網享有帖子相關版權
3、所有作品的著作權均歸原作者享有,請您和我們一樣尊重他人的著作權等合法權益。如果您對作品感到滿意,請購買正版
4、禁止制作、復制、發布和傳播具有反動、淫穢、色情、暴力、兇殺等內容的信息,一經發現立即刪除。若您因此觸犯法律,一切后果自負,我們對此不承擔任何責任
5、所有資源均系網友上傳或者通過網絡收集,我們僅提供一個展示、介紹、觀摩學習的平臺,我們不對其內容的準確性、可靠性、正當性、安全性、合法性等負責,亦不承擔任何法律責任
6、所有作品僅供您個人學習、研究或欣賞,不得用于商業或者其他用途,否則,一切后果均由您自己承擔,我們對此不承擔任何法律責任
7、如涉及侵犯版權等問題,請您及時通知我們,我們將立即采取措施予以解決
8、聯系人Email:[email protected] 網址:www.mypefu.live

點擊關注更多內容
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則  允許回帖郵件提醒樓主

掃碼加入運維網微信交流群X

掃碼加入運維網微信交流群

掃描二維碼加入運維網微信交流群,最新一手資源盡在官方微信交流群!快快加入我們吧...

掃描微信二維碼查看詳情

客服 E-mail:[email protected]

本站由青云提供云計算服務

運維網--中國最專業的運維工程師交流社區

京ICP備14039699號-1 Copyright ? 2012-2020

使用手機軟件掃描微信二維碼

關注我們可獲取更多熱點資訊

Good good study day day up


客服E-mail:[email protected] 在線客服QQ:點擊這里給我發消息


提醒:禁止發布任何違反國家法律、法規的言論與圖片等內容;本站內容均來自個人觀點與網絡等信息,非本站認同之觀點.


本站大部分資源是網友從網上搜集分享而來,其版權均歸原作者及其網站所有,我們尊重他人的合法權益,如有內容侵犯您的合法權益,請及時與我們聯系進行核實刪除!



合作伙伴: 青云cloud bjyun

快速回復 返回頂部 返回列表
让球胜平负