JSON Web 加密 (JWE) 是 RFC 7516 定義的標準,它使用基於 JSON 的資料結構表示加密內容。它允許您加密任意有效負載以確保機密性和完整性(如果需要)。此加密內容可以包括任何類型的數據,例如敏感的使用者資訊、安全性令牌甚至文件。
JWE 廣泛用於 Web 應用程式和 API,以安全地傳輸敏感數據,例如令牌、使用者資訊和財務詳細資訊。它確保資訊即使被攔截也無法被未經授權的實體讀取。加密的有效負載只能由擁有正確解密金鑰的預期接收者解密並使用。
JSON Web 加密 (JWE) 是一種以 JSON 物件的形式在各方之間安全地傳輸資訊的標準。 JWE 使用加密來確保其保護的資料的機密性和完整性。典型的 JWE 結構由五個部分組成,這些部分連接在一起並以句點 (.) 分隔。這五個部分是:
JWE 的每個部分在加密和解密過程中都扮演著特定的角色。讓我們詳細研究每個部分。
JOSE(JSON 物件簽署和加密)標頭是 JWE 的第一部分,包含加密過程的元資料。它是一個 base64url 編碼的 JSON 對象,其中包括:
:如果加密負載不是預設的 application/json,則可以選擇指示加密負載的內容類型。
{ "alg": "RSA-OAEP", "enc": "A256GCM" }
2.2 加密金鑰
,則使用對稱金鑰包裝。
2.3 初始化向量(IV)
初始化向量 (IV)
是 JWE 結構中的第三個組成部分。它是一個 base64url 編碼的隨機值,與加密演算法一起使用,以確保相同的明文每次都會進行不同的加密。 IV 可防止加密資料中出現模式,從而增強安全性。2.4 密文 密文是使用內容加密金鑰(CEK)和加密演算法(enc 參數)對明文(有效負載資料)進行加密的結果。密文採用 base64url 編碼,是 JWE 的核心部分,因為它保存受保護的內容。
驗證標籤(也稱為標籤)是一個base64url 編碼值,為密文、初始化向量(IV) 和附加驗證資料提供完整性和真實性( AAD)。它是在使用 AES GCM 等演算法的加密過程中產生的。
如果加密後 JWE 結構的任何部分被更改,解密過程將失敗,因為身份驗證標籤不匹配。
考慮一個場景,我們想要加密訊息「Hello, World!」使用 JWE。這是一個簡化的細分:
最終的 JWE 可能看起來像這樣:
{ "alg": "RSA-OAEP", "enc": "A256GCM" }
JWE 的工作原理是結合使用公鑰加密(用於加密對稱金鑰)和對稱加密(用於加密實際負載)。過程的工作原理如下:
金鑰產生與管理
加密過程
解密過程
建立 JWE 涉及選擇支援 JWE 標準的函式庫。 Nimbus JOSE JWT 是 Java 中最受歡迎的程式庫之一。以下是一個簡單的範例,示範如何建立 JWE:
設定依賴關係
如果您使用 Maven,請將以下依賴項新增至 pom.xml:
{ "alg": "RSA-OAEP", "enc": "A256GCM" }
建立並加密 JWE
這是一個 Java 程式碼片段,示範了 JWE 的創建:
eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ. g_hE3pPLiSs9C60_WFQ-VP_mQ1BU00Z7Xg. 48V1_ALb6US04U3b. 5eym8mytxoXCBlYkhjBtkmmI. XFBoMYUZodetZdvTiFvSkQ
代碼說明
結果
運行上面的程式碼將產生一個加密的JWE字串,然後將其解密回原始訊息:
<dependency> <groupId>com.nimbusds</groupId> <artifactId>nimbus-jose-jwt</artifactId> <version>9.22</version> </dependency>
JSON Web 加密 (JWE) 是現代 Web 應用程式中安全資料傳輸的重要工具。了解其結構、工作原理及其優缺點將幫助您就何時以及如何在應用程式中使用它做出明智的決定。如果您有任何疑問或需要進一步說明,請隨時在下面發表評論!
閱讀更多文章:了解 JWE:結構、操作、優點、缺點以及如何建立一個
以上是了解 JWE:結構、操作、優點、缺點以及如何創建 JWE的詳細內容。更多資訊請關注PHP中文網其他相關文章!