Heim > Java > javaLernprogramm > JWE verstehen: Struktur, Betrieb, Vorteile, Nachteile und wie man eines erstellt

JWE verstehen: Struktur, Betrieb, Vorteile, Nachteile und wie man eines erstellt

Mary-Kate Olsen
Freigeben: 2024-12-31 03:36:17
Original
373 Leute haben es durchsucht

1. Was ist JWE (JSON Web Encryption)?

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

JSON Web Encryption (JWE) ist ein durch RFC 7516 definierter Standard, der verschlüsselte Inhalte mithilfe von JSON-basierten Datenstrukturen darstellt. Damit können Sie beliebige Nutzlasten verschlüsseln, um Vertraulichkeit und bei Bedarf auch Integrität zu gewährleisten. Dieser verschlüsselte Inhalt kann jede Art von Daten umfassen, beispielsweise vertrauliche Benutzerinformationen, Sicherheitstokens oder sogar Dateien.

1.1 Warum JWE verwenden?

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

JWE wird häufig in Webanwendungen und APIs verwendet, um sensible Daten wie Token, Benutzerinformationen und Finanzdetails sicher zu übertragen. Es stellt sicher, dass die Informationen nicht von Unbefugten gelesen werden können, selbst wenn sie abgefangen werden. Die verschlüsselte Nutzlast kann nur von dem vorgesehenen Empfänger entschlüsselt und verwendet werden, der über den richtigen Entschlüsselungsschlüssel verfügt.

1.2 Hauptmerkmale von JWE

  • Vertraulichkeit: Das Hauptziel von JWE ist die Gewährleistung der Vertraulichkeit der Inhalte.
  • Integrität: Es garantiert, dass die Daten während der Übertragung nicht manipuliert wurden.
  • Interoperabilität: JWE ist mit verschiedenen kryptografischen Algorithmen und Umgebungen kompatibel.
  • Kompaktheit: JWE bietet eine kompakte Darstellung, die einfach über HTTP transportiert werden kann.

2. Struktur von JWE

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

JSON Web Encryption (JWE) ist ein Standard zur sicheren Übertragung von Informationen zwischen Parteien als JSON-Objekt. JWE verwendet Verschlüsselung, um die Vertraulichkeit und Integrität der geschützten Daten sicherzustellen. Eine typische JWE-Struktur besteht aus fünf Teilen, die miteinander verkettet und durch Punkte (.) getrennt sind. Die fünf Teile sind:

  • Kopfzeile (JOSE-Kopfzeile)
  • Verschlüsselter Schlüssel
  • Initialisierungsvektor
  • Geheimtext
  • Authentifizierungs-Tag

Jeder Teil eines JWE spielt eine bestimmte Rolle im Ver- und Entschlüsselungsprozess. Lassen Sie uns jeden Teil im Detail betrachten.

2.1 JOSE-Header (JSON-Objektsignatur- und Verschlüsselungsheader)

Der JOSE-Header (JSON Object Signing and Encryption) ist der erste Teil des JWE und enthält Metadaten über den Verschlüsselungsprozess. Es handelt sich um ein Base64URL-codiertes JSON-Objekt, das Folgendes enthält:

  • alg (Algorithmus): Gibt den Algorithmus an, der zum Verschlüsseln des Content Encryption Key (CEK) verwendet wird. Zu den gängigen Algorithmen gehören RSA-OAEP , RSA1_5 , A128KW , A256KW usw.
  • enc (Verschlüsselungsalgorithmus): Gibt den Verschlüsselungsalgorithmus an, der zum Verschlüsseln der Nutzlast (Klartext) verwendet wird. Beispiele hierfür sind A128GCM, A256GCM, A128CBC-HS256 usw.
  • typ (Typ): Gibt optional den Typ des Tokens an, normalerweise JWT.
  • cty (Inhaltstyp): Gibt optional den Inhaltstyp der verschlüsselten Nutzlast an, wenn es sich um etwas anderes als die Standardanwendung/JSON handelt.

Beispiel:

{
  "alg": "RSA-OAEP",
  "enc": "A256GCM"
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieser Header gibt an, dass der Inhaltsverschlüsselungsschlüssel mit dem RSA-OAEP-Algorithmus verschlüsselt wird und die Nutzlast mit AES GCM mit einem 256-Bit-Schlüssel verschlüsselt wird.

2.2 Verschlüsselter Schlüssel

Der zweite Teil eines JWE ist der verschlüsselte Schlüssel, der zum Verschlüsseln der eigentlichen Daten (Nutzlast) verwendet wird. Dieser Schlüssel wird mit dem im Parameter alg des JOSE-Headers angegebenen Algorithmus verschlüsselt.

  • Wenn das alg RSA-OAEP ist, wird der Inhaltsverschlüsselungsschlüssel (CEK) mithilfe des RSA-OAEP-Algorithmus mit dem öffentlichen Schlüssel des Empfängers verschlüsselt.
  • Wenn der alg A128KW oder A256KW ist, wird ein symmetrischer Schlüsselumbruch verwendet.

Der verschlüsselte Schlüssel ist base64-URL-codiert.

2.3 Initialisierungsvektor (IV)

Der Initialisierungsvektor (IV) ist die dritte Komponente in der JWE-Struktur. Es handelt sich um einen Base64URL-codierten Zufallswert, der zusammen mit dem Verschlüsselungsalgorithmus verwendet wird, um sicherzustellen, dass derselbe Klartext jedes Mal anders verschlüsselt wird. Der IV verhindert Muster in den verschlüsselten Daten und erhöht so die Sicherheit.

Für den AES-GCM-Modus ist der IV normalerweise 96 Bit (12 Byte) lang.

2.4 Geheimtext

Der Chiffretext ist das Ergebnis der Verschlüsselung des Klartextes (der Nutzdaten) mit dem Inhaltsverschlüsselungsschlüssel (CEK) und dem Verschlüsselungsalgorithmus (Enc-Parameter). Der Chiffretext ist base64url-kodiert und stellt den Kernbestandteil des JWE dar, da er den geschützten Inhalt enthält.

  • Der Verschlüsselungsprozess umfasst das Auffüllen, Verschlüsseln und Konvertieren der verschlüsselten Ausgabe in das Base64URL-Format.
  • Wenn zusätzliche authentifizierte Daten (AAD) enthalten sind, werden diese verwendet, um die Authentizität und Integrität sowohl des JOSE-Headers als auch des Chiffretextes sicherzustellen.

2.5 Authentifizierungs-Tag

Das Authentifizierungs-Tag (auch bekannt als Tag) ist ein Base64-URL-codierter Wert, der dem Chiffretext, dem Initialisierungsvektor (IV) und zusätzlichen authentifizierten Daten Integrität und Authentizität verleiht (AAD). Es wird während des Verschlüsselungsprozesses mithilfe von Algorithmen wie AES GCM generiert.

Wenn irgendein Teil der JWE-Struktur nach der Verschlüsselung geändert wird, schlägt der Entschlüsselungsprozess fehl, da das Authentifizierungs-Tag nicht übereinstimmt.

3. Beispiel eines JWE

Stellen Sie sich ein Szenario vor, in dem wir eine Nachricht „Hello, World!“ verschlüsseln möchten. mit JWE. Hier ist eine vereinfachte Aufschlüsselung:

  • Geschützter Header: {"alg": "RSA-OAEP", "enc": "A256GCM"🎜>
  • Verschlüsselter Schlüssel: Base64Url(encrypt(symmetrischer Schlüssel mit öffentlichem Schlüssel des Empfängers))
  • Initialisierungsvektor (IV): Base64Url(zufällig generierte IV)
  • Chiffretext : Base64Url(encrypt("Hello, World!" mit dem symmetrischen Schlüssel))
  • Authentifizierungs-Tag: Base64Url(GCM-Tag)
Das endgültige JWE könnte in etwa so aussehen:


{
  "alg": "RSA-OAEP",
  "enc": "A256GCM"
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
4. Wie funktioniert JWE?

JWE verwendet eine Kombination aus Public-Key-Kryptografie (zur Verschlüsselung des symmetrischen Schlüssels) und symmetrischer Verschlüsselung (zur Verschlüsselung der eigentlichen Nutzlast). So funktioniert der Prozess:

Schlüsselgenerierung und -verwaltung

    Sender und Empfänger einigen sich auf einen Kryptografiestandard mit öffentlichem Schlüssel (z. B. RSA oder Elliptic Curve).
  • Der Absender generiert einen zufälligen symmetrischen Schlüssel, um die Nachricht zu verschlüsseln.
  • Der symmetrische Schlüssel wird dann mit dem öffentlichen Schlüssel des Empfängers verschlüsselt.

Verschlüsselungsprozess

    Der Absender erstellt den JWE-Header, der die Verschlüsselungsalgorithmen angibt.
  • Die Nutzlast (Daten) wird mit dem symmetrischen Schlüssel und einem Initialisierungsvektor (IV) verschlüsselt.
  • Der symmetrische Schlüssel wird mit dem öffentlichen Schlüssel des Empfängers verschlüsselt.
  • Die resultierenden Komponenten werden verkettet, um das endgültige JWE zu bilden.

Entschlüsselungsprozess

  • Der Empfänger verwendet seinen privaten Schlüssel, um den verschlüsselten symmetrischen Schlüssel zu entschlüsseln.
  • Der entschlüsselte symmetrische Schlüssel wird dann zum Entschlüsseln des Chiffretextes verwendet.
  • Der Empfänger überprüft die Integrität der Daten mithilfe des Authentifizierungs-Tags.

5. Vor- und Nachteile von JWE

5.1 Vorteile

  • Vertraulichkeit: Bietet End-to-End-Verschlüsselung und gewährleistet so den Datenschutz.
  • Interoperabilität: Kompatibel mit verschiedenen Systemen und Plattformen.
  • Integrität und Sicherheit: Stellt sicher, dass Daten vor Manipulation geschützt sind.
  • Unterstützt mehrere Empfänger: Ermöglicht die Verschlüsselung von Daten an mehrere Empfänger mit unterschiedlichen Schlüsseln.

5.2 Nachteile

  • Komplexität: Der Prozess der Ver- und Entschlüsselung kann komplex und fehleranfällig sein.
  • Leistungsaufwand: Der Verschlüsselungs-/Entschlüsselungsprozess erhöht den Rechenaufwand.
  • Größere Nutzlastgröße: JWE-Nutzlasten sind aufgrund der Verschlüsselungsmetadaten im Vergleich zu einfachen Daten oder JWT größer.

6. So erstellen Sie ein JWE in Java

Beim Erstellen einer JWE müssen Bibliotheken ausgewählt werden, die JWE-Standards unterstützen. Eine der beliebtesten Bibliotheken in Java ist Nimbus JOSE JWT. Unten finden Sie ein einfaches Beispiel, das zeigt, wie ein JWE erstellt wird:

Abhängigkeiten einrichten

Fügen Sie die folgende Abhängigkeit zu Ihrer pom.xml hinzu, wenn Sie Maven verwenden:

{
  "alg": "RSA-OAEP",
  "enc": "A256GCM"
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Erstellen und Verschlüsseln eines JWE

Hier ist ein Java-Codeausschnitt, der die Erstellung eines JWE demonstriert:

eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ.
g_hE3pPLiSs9C60_WFQ-VP_mQ1BU00Z7Xg.
48V1_ALb6US04U3b.
5eym8mytxoXCBlYkhjBtkmmI.
XFBoMYUZodetZdvTiFvSkQ
Nach dem Login kopieren

Erläuterung des Kodex

  • Schlüsselgenerierung: Ein RSA-Schlüsselpaar wird generiert, um das JWE zu verschlüsseln und zu entschlüsseln.
  • Header und Payload: Der Header gibt die Verschlüsselungsalgorithmen an und die Payload enthält die zu verschlüsselnden Daten.
  • Verschlüsselung: Der RSAEncrypter wird zum Verschlüsseln der Nutzlast verwendet.
  • Entschlüsselung: Der RSADecrypter entschlüsselt die Nutzlast wieder in ihre ursprüngliche Form.

Ergebnis

Durch Ausführen des obigen Codes wird eine verschlüsselte JWE-Zeichenfolge generiert und diese dann wieder in die ursprüngliche Nachricht entschlüsselt:

<dependency>
    <groupId>com.nimbusds</groupId>
    <artifactId>nimbus-jose-jwt</artifactId>
    <version>9.22</version>
</dependency>
Nach dem Login kopieren

7. Fazit

JSON Web Encryption (JWE) ist ein unverzichtbares Werkzeug für die sichere Datenübertragung in modernen Webanwendungen. Wenn Sie seine Struktur, seine Funktionsweise sowie seine Vor- und Nachteile verstehen, können Sie fundierte Entscheidungen darüber treffen, wann und wie Sie es in Ihren Anwendungen verwenden. Wenn Sie Fragen haben oder weitere Erläuterungen benötigen, können Sie unten einen Kommentar hinterlassen!

Weitere Beiträge finden Sie unter: JWE verstehen: Struktur, Abläufe, Vorteile, Nachteile und wie man ein solches erstellt

Das obige ist der detaillierte Inhalt vonJWE verstehen: Struktur, Betrieb, Vorteile, Nachteile und wie man eines erstellt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage