Die folgende Frage ist komplexer als es zunächst scheinen mag.Wie verschlüsselt man ein JSON-Objekt kryptographisch?
Angenommen, ich habe ein beliebiges JSON-Objekt, das eine beliebige Menge an Daten enthalten kann, einschließlich anderer verschachtelter JSON-Objekte. Was ich will, ist ein kryptographischer Hash/Digest der JSON-Daten, ohne Rücksicht auf die eigentliche JSON-Formatierung selbst (zB: Ignorieren von Zeilenumbrüchen und Abstandsunterschieden zwischen den JSON-Tokens).
Der letzte Teil ist eine Voraussetzung, da der JSON von einer Vielzahl von (De-) Serialisierern auf verschiedenen Plattformen erzeugt/gelesen wird. Ich kenne mindestens eine JSON-Bibliothek für Java, die beim Lesen von Daten während der Deserialisierung die Formatierung vollständig entfernt. Als solches wird es den Hash-Wert brechen. Die obige willkürliche Datenklausel verkompliziert auch die Dinge, da sie mich daran hindert, bekannte Felder in einer gegebenen Reihenfolge zu nehmen und sie vor dem Hashen zu verketten (denke ungefähr daran, wie Javas nicht-kryptografische Methode hashCode() funktioniert).
Schließlich ist das Hashing des gesamten JSON-Strings als ein Byte-Chunk (vor der Deserialisierung) auch nicht wünschenswert, da es Felder im JSON gibt, die beim Berechnen des Hash ignoriert werden sollten.
Ich bin mir nicht sicher, es ist eine gute Lösung für dieses Problem, aber ich begrüße alle Ansätze und Gedanken =)
Ich kann nicht helfen, aber beachten Sie, wie passend Ihr Name zu der Frage ist. –
Haben Sie sich die XML DSig angesehen? Sie haben das gleiche Problem und haben eine ziemlich komplexe "canonicalization" Spezifikation. – mtraut
Dies wird standardisiert. Weitere Informationen finden Sie im JSON-Web-Signatur (JWS) -Entwurfs-RFC. http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-17 – user239558