搜尋
首頁Javajava教程了解 JWE:結構、操作、優點、缺點以及如何創建 JWE

1. 什麼是JWE(JSON Web加密)?

Understanding JWE: Structure, Operations, Advantages, Disadvantages, and How to Create One

JSON Web 加密 (JWE) 是 RFC 7516 定義的標準,它使用基於 JSON 的資料結構表示加密內容。它允許您加密任意有效負載以確保機密性和完整性(如果需要)。此加密內容可以包括任何類型的數據,例如敏感的使用者資訊、安全性令牌甚至文件。

1.1 為什麼要使用JWE?

Understanding JWE: Structure, Operations, Advantages, Disadvantages, and How to Create One

JWE 廣泛用於 Web 應用程式和 API,以安全地傳輸敏感數據,例如令牌、使用者資訊和財務詳細資訊。它確保資訊即使被攔截也無法被未經授權的實體讀取。加密的有效負載只能由擁有正確解密金鑰的預期接收者解密並使用。

1.2 JWE 的主要特點

  • 保密性:JWE 的首要目標是確保內容的機密性。
  • 完整性:保證資料在傳輸過程中不會被竄改。
  • 互通性:JWE 與不同的加密演算法和環境相容。
  • 緊湊性:JWE 提供了一種緊湊的表示形式,易於透過 HTTP 傳輸。

2. JWE的結構

Understanding JWE: Structure, Operations, Advantages, Disadvantages, and How to Create One

JSON Web 加密 (JWE) 是一種以 JSON 物件的形式在各​​方之間安全地傳輸資訊的標準。 JWE 使用加密來確保其保護的資料的機密性和完整性。典型的 JWE 結構由五個部分組成,這些部分連接在一起並以句點 (.) 分隔。這五個部分是:

  • 標題(何塞標題)
  • 加密金鑰
  • 初始化向量
  • 密文
  • 驗證標籤

JWE 的每個部分在加密和解密過程中都扮演著特定的角色。讓我們詳細研究每個部分。

2.1 JOSE 標頭(JSON 物件簽名與加密標頭)

JOSE(JSON 物件簽署和加密)標頭是 JWE 的第一部分,包含加密過程的元資料。它是一個 base64url 編碼的 JSON 對象,其中包括:

  • alg (演算法):指定用於加密內容加密金鑰 (CEK) 的演算法。常見演算法包括 RSA-OAEPRSA1_5A128KWA256KW
  • A256KW enc(加密演算法):表示用於加密有效負載(明文)的加密演算法。例如 A128GCMA256GCM
  • A128CBC-HS256
  • typ(類型):可選擇性地指示令牌的類型,通常是 JWT。
cty(內容類型)

:如果加密負載不是預設的 application/json,則可以選擇指示加密負載的內容類型。

範例:
{
  "alg": "RSA-OAEP",
  "enc": "A256GCM"
}

此標頭指定使用 RSA-OAEP 演算法對內容加密金鑰進行加密,並使用 AES GCM 和 256 位元金鑰對有效負載進行加密。

2.2 加密金鑰
  • JWE 的第二部分是加密金鑰,它是用於加密實際資料(有效負載)的金鑰。此金鑰使用 JOSE 標頭的 alg 參數中指定的演算法進行加密。 如果 algRSA-OAEP
  • ,則內容加密金鑰
  • (CEK) 使用 RSA-OAEP 演算法和收件者的公鑰進行加密。 如果 algA128KW
A256KW

,則使用對稱金鑰包裝。

加密金鑰採用 base64url 編碼。

2.3 初始化向量(IV)

初始化向量 (IV)

是 JWE 結構中的第三個組成部分。它是一個 base64url 編碼的隨機值,與加密演算法一起使用,以確保相同的明文每次都會進行不同的加密。 IV 可防止加密資料中出現模式,從而增強安全性。

對於 AES GCM 模式,IV 通常為 96 位元(12 位元組)長。

2.4 密文 密文是使用內容加密金鑰(CEK)和加密演算法(enc 參數)對明文(有效負載資料)進行加密的結果。密文採用 base64url 編碼,是 JWE 的核心部分,因為它保存受保護的內容。
  • 加密過程包括填充、加密以及將加密輸出轉換為base64url格式。
  • 如果包含額外的驗證資料 (AAD),則用於確保 JOSE 標頭和密文的真實性和完整性。

2.5 認證標籤

驗證標籤(也稱為標籤)是一個base64url 編碼值,為密文、初始化向量(IV) 和附加驗證資料提供完整性和真實性( AAD)。它是在使用 AES GCM 等演算法的加密過程中產生的。

如果加密後 JWE 結構的任何部分被更改,解密過程將失敗,因為身份驗證標籤不匹配。

3. JWE 範例

考慮一個場景,我們想要加密訊息「Hello, World!」使用 JWE。這是一個簡化的細分:

  • 受保護的標頭 : {"alg":"RSA-OAEP","enc":"A256GCM"}
  • 加密金鑰 : Base64Url(加密(與接收者公鑰的對稱金鑰))
  • 初始化向量(IV):Base64Url(隨機產生的IV)
  • 密文 : Base64Url(用對稱金鑰加密("Hello, World!"))
  • 驗證標籤:Base64Url(GCM標籤)

最終的 JWE 可能看起來像這樣:

{
  "alg": "RSA-OAEP",
  "enc": "A256GCM"
}

4. JWE 如何運作?

JWE 的工作原理是結合使用公鑰加密(用於加密對稱金鑰)和對稱加密(用於加密實際負載)。過程的工作原理如下:

金鑰產生與管理

  • 傳送者和接收者就公鑰加密標準(例如 RSA 或橢圓曲線)達成協議。
  • 發送者產生一個隨機對稱金鑰來加密訊息。
  • 然後使用接收者的公鑰對對稱金鑰進行加密。

加密過程

  • 傳送者建立指定加密演算法的 JWE 標頭。
  • 有效負載(資料)使用對稱金鑰和初始化向量 (IV) 進行加密。
  • 對稱金鑰使用接收者的公鑰進行加密。
  • 產生的組件被連接起來形成最終的 JWE。

解密過程

  • 接收者使用他們的私鑰來解密加密的對稱金鑰。
  • 解密後的對稱金鑰隨後用於解密密文。
  • 接收者使用身分驗證標籤驗證資料的完整性。

5. JWE的優缺點

5.1 優點

  • 保密性:提供端對端加密,確保資料隱私。
  • 互通性:跨不同系統和平台相容。
  • 完整性與安全性:確保資料免遭竄改。
  • 支援多位收件者:允許使用不同的金鑰將資料加密到多個收件者。

5.2 缺點

  • 複雜性:加密和解密的過程可能很複雜且容易出錯。
  • 效能開銷:加密/解密過程會增加計算開銷。
  • 更大的有效負載大小:由於加密元數據,JWE 有效負載比純數據或 JWT 更大。

6. 如何用 Java 建立 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

代碼說明

  • 金鑰產生 :產生 RSA 金鑰對來加密和解密 JWE。
  • Header 和 Payload : header 指定加密演算法,Payload 包含要加密的資料。
  • 加密:RSAEncrypter 用於加密有效負載。
  • 解密:RSADecrypter 將有效負載解密回其原始形式。

結果

運行上面的程式碼將產生一個加密的JWE字串,然後將其解密回原始訊息:

<dependency>
    <groupid>com.nimbusds</groupid>
    <artifactid>nimbus-jose-jwt</artifactid>
    <version>9.22</version>
</dependency>

七、結論

JSON Web 加密 (JWE) 是現代 Web 應用程式中安全資料傳輸的重要工具。了解其結構、工作原理及其優缺點將幫助您就何時以及如何在應用程式中使用它做出明智的決定。如果您有任何疑問或需要進一步說明,請隨時在下面發表評論!

閱讀更多文章:了解 JWE:結構、操作、優點、缺點以及如何建立一個

以上是了解 JWE:結構、操作、優點、缺點以及如何創建 JWE的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JVM性能與其他語言JVM性能與其他語言May 14, 2025 am 12:16 AM

JVM'SperformanceIsCompetitiveWithOtherRuntimes,operingabalanceOfspeed,安全性和生產性。 1)JVMUSESJITCOMPILATIONFORDYNAMICOPTIMIZAIZATIONS.2)c提供NativePernativePerformanceButlanceButlactsjvm'ssafetyFeatures.3)

Java平台獨立性:使用示例Java平台獨立性:使用示例May 14, 2025 am 12:14 AM

JavaachievesPlatFormIndependencEthroughTheJavavIrtualMachine(JVM),允許CodeTorunonAnyPlatFormWithAjvm.1)codeisscompiledIntobytecode,notmachine-specificodificcode.2)bytecodeisisteredbytheybytheybytheybythejvm,enablingcross-platerssectectectectectross-eenablingcrossectectectectectection.2)

JVM架構:深入研究Java虛擬機JVM架構:深入研究Java虛擬機May 14, 2025 am 12:12 AM

TheJVMisanabstractcomputingmachinecrucialforrunningJavaprogramsduetoitsplatform-independentarchitecture.Itincludes:1)ClassLoaderforloadingclasses,2)RuntimeDataAreafordatastorage,3)ExecutionEnginewithInterpreter,JITCompiler,andGarbageCollectorforbytec

JVM:JVM與操作系統有關嗎?JVM:JVM與操作系統有關嗎?May 14, 2025 am 12:11 AM

JVMhasacloserelationshipwiththeOSasittranslatesJavabytecodeintomachine-specificinstructions,managesmemory,andhandlesgarbagecollection.ThisrelationshipallowsJavatorunonvariousOSenvironments,butitalsopresentschallengeslikedifferentJVMbehaviorsandOS-spe

Java:寫一次,在任何地方跑步(WORA) - 深入了解平台獨立性Java:寫一次,在任何地方跑步(WORA) - 深入了解平台獨立性May 14, 2025 am 12:05 AM

Java實現“一次編寫,到處運行”通過編譯成字節碼並在Java虛擬機(JVM)上運行。 1)編寫Java代碼並編譯成字節碼。 2)字節碼在任何安裝了JVM的平台上運行。 3)使用Java原生接口(JNI)處理平台特定功能。儘管存在挑戰,如JVM一致性和平台特定庫的使用,但WORA大大提高了開發效率和部署靈活性。

Java平台獨立性:與不同的操作系統的兼容性Java平台獨立性:與不同的操作系統的兼容性May 13, 2025 am 12:11 AM

JavaachievesPlatFormIndependencethroughTheJavavIrtualMachine(JVM),允許Codetorunondifferentoperatingsystemsswithoutmodification.thejvmcompilesjavacodeintoplatform-interploplatform-interpectentbybyteentbytybyteentbybytecode,whatittheninternterninterpretsandectectececutesoneonthepecificos,atrafficteyos,Afferctinginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginging

什麼功能使Java仍然強大什麼功能使Java仍然強大May 13, 2025 am 12:05 AM

JavaispoperfulduetoitsplatFormitiondence,對象與偏見,RichstandardLibrary,PerformanceCapabilities和StrongsecurityFeatures.1)Platform-dimplighandependectionceallowsenceallowsenceallowsenceallowsencationSapplicationStornanyDevicesupportingJava.2)

頂級Java功能:開發人員的綜合指南頂級Java功能:開發人員的綜合指南May 13, 2025 am 12:04 AM

Java的頂級功能包括:1)面向對象編程,支持多態性,提升代碼的靈活性和可維護性;2)異常處理機制,通過try-catch-finally塊提高代碼的魯棒性;3)垃圾回收,簡化內存管理;4)泛型,增強類型安全性;5)ambda表達式和函數式編程,使代碼更簡潔和表達性強;6)豐富的標準庫,提供優化過的數據結構和算法。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能