JWT对称加密非对称加密
JWT
JWT原理圖:
JWT的數據結構
jwt頭:JWT頭部分是一個描述JWT元數據的JSON對象
有效載荷:七個默認字段+自定義私有字段
簽名=HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload),secret
JWT由頭部(header)載荷(payload)簽證(sign)三部分構成
jwt的頭部包含兩部分信息:
聲明類型,這里是jwt
聲明加密的算法 通常直接使用 HMAC SHA256
然后將頭部進行base64加密(該加密是可以對稱解密的),構成了第一部分。
載荷就是存放有效信息的地方。這些有效信息包含三個部分:
標準中注冊聲明
私有的聲明
公共的聲明 :
公共的聲明可以添加任何的信息,一般添加用戶的相關信息或其他業務需要的必要信息.但不建議添加敏感信息,因為該部分在客戶端可解密。
私有的聲明 :
私有聲明是提供者和消費者所共同定義的聲明,一般不建議存放敏感信息,因為base64是對稱解密的,意味著該部分信息可以歸類為明文信息。
有效載荷部分,是JWT的主體內容部分,也是一個JSON對象,包含需要傳遞的數據。 JWT指定七個默認字段供選擇。
jwt的第三部分是一個簽證信息,這個簽證信息由三部分組成
header (base64后的)
payload (base64后的)
secret·10
將上面的兩個編碼后的字符串都用句號.連接在一起(頭部在前),就形成了:JWT
JWT方案中安全性問題
jwt是存儲在客戶端的,服務器端不需要存儲jwt的,客戶端每次發送請求時會攜帶該token,然后到服務器端會驗證token是否正確,是否過期了,然后會通過解碼出攜帶的用戶的信息的,但是如果token在傳輸的過程中被攻擊者截取了的話,那么對方就可以偽造請求,利用竊取到的token模擬正常請求,實現用戶的正常操作,而服務器端完全不知道,因為JWT在服務器端是無狀態的,且服務器端不存儲jwt的。其實jwt解決的問題是認證和授權的問題,對于安全性的話,還是建議對外公布的接口使用https.
JSON Web Token 它有如下優點:
jwt核心
1)給用戶頒發的token值相當于一把鎖,服務器端的秘鑰相當于一把鑰匙
2)每次客戶端請求都會攜帶這把鎖,服務器端用秘鑰去開這把鎖,如果無法打開就證明是偽造的
無狀態登錄:
服務器不保存用戶的登錄信息,由客戶端請求攜帶自己的身份信息。服務器不再保存用戶的登錄信息,多次請求不用訪問回到同一臺服務,服務器可以彈性伸縮,減小服務端壓力,缺點一旦JWT簽發,在有效期內將會一直有效
對稱加密:
對稱加密指的就是加密和解密使用同一個秘鑰,所以叫做對稱加密。對稱加密只有一個秘鑰,作為私鑰。
常見的對稱加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES
對稱加密
優點:
算法公開、計算量小、加密速度快、加密效率高
缺點:
在數據傳送前,發送方和接收方必須商定好秘鑰,然后 使雙方都能保存好秘鑰。其次如果一方的秘鑰被泄露,那么加密信息也就不安全了。另外,每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的唯一秘鑰,這會使得收、發雙方所擁有的鑰匙數量巨大,密鑰管理成為雙方的負擔。
非對稱加密:
非對稱加密指的是:加密和解密使用不同的秘鑰,一把作為公開的公鑰,另一把作為私鑰。公鑰加密的信息,只有私鑰才能解密。
公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。
非對稱加密算法實現機密信息交換的基本過程是:
甲方生成一對密鑰并將其中的一把作為公用密鑰向其它方公開;得到該公用密鑰的乙方使用該密鑰對機密信息進行加密后再發送給甲方;甲方再用自己保存的另一把專用密鑰對加密后的信息進行解密。甲方只能用其專用密鑰解密由其公用密鑰加密后的任何信息。
私鑰加密的信息,只有公鑰才能解密。
常見的非對稱加密算法有:RSA、ECC(移動設備用)、Diffie-Hellman、El Gamal、DSA(數字簽名用)
優點:
安全
缺點:
速度較慢
非對稱加密
對稱加密和非對稱加密的區別
如果通過md5加密,網關需要每次訪問授權中心去通信驗證,微服務需要多次訪問授權中心去解密jwt,網絡請求頻率高,授權中心壓力過大。而通過非對稱加密則不存在這個問題。用公鑰即可解密header(頭部)與payload(載荷)。
1、加密和解密過程不同
對稱加密過程和解密過程使用的同一個密鑰,加密過程相當于用原文+密鑰可以傳輸出密文,同時解密過程用密文-密鑰可以推導出原文。但非對稱加密采用了兩個密鑰,一般使用公鑰進行加密,使用私鑰進行解密。
2、加密解密速度不同
對稱加密解密的速度比較快,適合數據比較長時的使用。非對稱加密和解密花費的時間長、速度相對較慢,只適合對少量數據的使用。
3、傳輸的安全性不同
對稱加密的過程中無法確保密鑰被安全傳遞,密文在傳輸過程中是可能被第三方截獲的,如果密碼本也被第三方截獲,則傳輸的密碼信息將被第三方破獲,安全性相對較低。
非對稱加密算法中私鑰是基于不同的算法生成不同的隨機數,私鑰通過一定的加密算法推導出公鑰,但私鑰到公鑰的推導過程是單向的,也就是說公鑰無法反推導出私鑰。所以安全性較高。
總結
以上是生活随笔為你收集整理的JWT对称加密非对称加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IMAP和POP3的相关知识与区别
- 下一篇: 基于Warshall算法的连通图及欧拉图