Kein Upload, 100% lokal, kein Konto

Artikel

Daten privat kodieren und dekodieren

Entwickler fügen täglich Token, Nutzdaten und Anmeldedaten in Kodierungs- und Dekodierungsseiten ein. Die bequemsten laufen auf einem Server, das heißt, Ihre Daten verlassen den Rechner für eine Aufgabe, die das nie erfordert hat. Diese vier Werkzeuge arbeiten vollständig im Browser, also bleiben die Daten bei Ihnen.

Base64: sieht wirr aus, ist aber nicht geheim

Base64 ist eine Kodierung, keine Verschlüsselung. Es wandelt Binärdaten in Text um, der ein Kopieren und Einfügen oder den Transport durch Systeme übersteht, die nur einfache Zeichen verarbeiten. Wer die Base64-Zeichenkette sieht, kann sie in einem einzigen Schritt zurück ins Original dekodieren, daher ist eine Zeichenkette mit einem API-Schlüssel, einem privaten Zertifikat oder dem Inhalt einer E-Mail für jeden lesbar, der sie besitzt. Das Risiko: Dieser Wert versteckt sich oft in Konfigurationsdateien, Data-URLs oder Authentifizierungs-Headern und wirkt unverständlich, was dazu verleitet, ihn in den erstbesten Decoder im Netz einzufügen. Dieser Decoder erhält das rohe Geheimnis. Ein Werkzeug, das Base64 lokal dekodiert, zeigt Ihnen die Originalbytes, ohne dass der Wert je einen Server erreicht.

Hello! zu SGVsbG8h kodiert und wieder dekodiert, zeigt, dass Base64 von jedem ohne Schlüssel umkehrbar ist.

URL-Kodierung: Query-Strings tragen mehr, als Sie denken

Die Prozentkodierung erlaubt es, Leerzeichen, Akzente und reservierte Zeichen sicher in eine URL zu setzen. Der Text, den Sie kodieren oder dekodieren, ist häufig ein echter Query-String aus einer Anwendung, und diese tragen Sitzungskennungen, Suchbegriffe, E-Mail-Adressen, Weiterleitungsziele und manchmal signierte Parameter. Eine vollständige URL in einen entfernten Encoder einzufügen, übergibt all das auf einen Schlag an Dritte, und Query-Strings sind genau die Art Wert, die in Serverprotokollen landet. Kodieren und Dekodieren im Browser bedeutet, dass die URL im Speicher Ihres eigenen Geräts verarbeitet und während der Arbeit nie übertragen wird.

JWT: die Nutzdaten sind signiert, nicht verborgen

Ein JSON Web Token besteht aus drei mit Punkten verbundenen Base64url-Abschnitten: einem Header, den Nutzdaten und einer Signatur. Die Signatur beweist, dass das Token nicht manipuliert wurde, verbirgt aber die Nutzdaten in keiner Weise, die sich in lesbares JSON mit Benutzerkennungen, Rollen, Ablaufzeiten und allen vom Aussteller hinzugefügten Claims dekodieren lassen. Ein gültiges Token ist zudem eine lebendige Anmeldeinformation: Bis zum Ablauf kann jeder, der es besitzt, im Namen des Benutzers handeln. Ein funktionierendes Token in einen Online-Decoder einzufügen, sendet eine aktive Anmeldeinformation an einen Server, den Sie nicht kontrollieren. Ein Decoder, der das Token in Ihrem Browser analysiert, zeigt denselben Header und dieselben Nutzdaten, ohne dass das Token je die Seite verlässt.

Die drei Teile eines JWT: lesbarer Header, lesbares Payload, und eine Signatur, die die Integrität beweist, ohne etwas zu verbergen.

Hashing: die Eingabe zählt mehr als der Digest

Eine Hashfunktion verwandelt jede Eingabe in einen Digest fester Länge, und Sie können den Digest nicht zur Eingabe zurückrechnen. Diese Eigenschaft macht Hashing nützlich, um die Integrität einer Datei zu prüfen oder Werte zu vergleichen, ohne das Original zu speichern. Der Haken liegt auf der Eingabeseite: Um den Hash eines Passworts, eines Dokuments oder eines Konfigurationsgeheimnisses zu berechnen, müssen Sie dem Werkzeug den echten Wert geben. Läuft dieses Werkzeug auf einem Server, reist die sensible Eingabe dorthin, obwohl nur der harmlose Digest zurückkommt. Den Hash lokal zu berechnen, hält die Eingabe auf Ihrem Gerät, sodass Sie den benötigten Digest erhalten, ohne das offenzulegen, was Sie gehasht haben.

Base64-Kodierung: Byte-Zuordnung und Auffüllung

Base64 übersetzt 8-Bit-Bytes in 6-Bit-Zeichen, indem es drei Eingabe-Bytes (24 Bit) in vier 6-Bit-Werte gruppiert. Jeder 6-Bit-Wert wird einem Zeichen im Base64-Alphabet (A-Z, a-z, 0-9, +, /) zugeordnet. Da der Prozess Eingaben erfordert, die durch 24 Bit teilbar sind, werden kurze Eingaben aufgefüllt: Ein verbleibendes Byte erzeugt zwei Füllzeichen (==), zwei verbleibende Bytes erzeugen eines (=). Die Base64url-Variante, die in JSON Web Tokens (JWTs) verwendet wird, ersetzt + durch - und / durch _, um den String URL-sicher zu machen, und entfernt die =-Auffüllung vollständig, da Füllzeichen in strikten URI-Parsern Fehler verursachen können. Diese Unterscheidung zu kennen, ist wichtig beim Debuggen von Token-Verarbeitung: Ein JWT, das missgebildet aussieht, könnte einfach Base64url-kodiert sein statt als Standard-Base64.

JWT-Signaturen: HS256, RS256 und Algorithmusverwirrung

Die Sicherheit eines JSON Web Tokens hängt vollständig von seiner Signatur ab, dem dritten punktgetrennten Segment. Bei HS256 (HMAC-SHA256) signiert der Server den Base64url-kodierten Header und Payload mit einem geheimen Schlüssel. Die SHA-256-Hash-Funktion bietet Kollisionsresistenz: Es ist rechnerisch nicht möglich, einen modifizierten Payload zu erzeugen, der zum gleichen Signatur-Hash führt, ohne den geheimen Schlüssel zu kennen. Bei RS256 signiert der Server mit einem RSA-Private-Key und verifiziert mit einem Public-Key. Eine bekannte Schwachstelle namens Algorithmusverwirrung entsteht, wenn eine Serverbibliothek den erwarteten Algorithmustyp nicht strikt durchsetzt. Ein Angreifer kann das Feld alg im Token-Header von RS256 auf HS256 ändern und das Token mit dem öffentlichen Schlüssel des Servers als HMAC-Secret signieren, da öffentliche Schlüssel oft zugänglich sind. Durch lokales Dekodieren des JWT-Headers im Browser lässt sich prüfen, welcher Algorithmus tatsächlich angegeben ist, ohne das aktive Token externen Protokollierungssystemen preiszugeben.

Tools in diesem Artikel

Häufige Fragen

Sind Base64 oder URL-Kodierung eine Form von Sicherheit?

Nein. Beide sind umkehrbare Kodierungen, die für den sicheren Transport von Daten gedacht sind, nicht zu deren Schutz. Wer die kodierte Zeichenkette lesen kann, dekodiert sie sofort, ohne Schlüssel oder Passwort. Wenn Sie einen Wert vertraulich halten müssen, verschlüsseln Sie ihn mit einem geeigneten Algorithmus und verwalten Sie den Schlüssel getrennt. Behandeln Sie jeden Base64- oder prozentkodierten Wert so, als stünde er im Klartext.

Warum ist es wichtig, wo ich ein Token dekodiere oder ein Passwort hashe?

Weil die Eingabe der sensible Teil ist. Ein gültiges JWT ist eine lebendige Anmeldeinformation, und das Passwort, das Sie hashen, ist das echte Geheimnis. Ein serverbasiertes Werkzeug erhält diese rohe Eingabe, noch bevor es ein Ergebnis liefert, das heißt, eine Kopie kann protokolliert oder an einem Ort aufbewahrt werden, den Sie nicht sehen. Ein Werkzeug, das in Ihrem Browser läuft, führt dieselbe Operation im Speicher Ihres eigenen Rechners aus, sodass Token oder Passwort nie irgendwohin gesendet werden.