Was sind digitale Signaturen und wie prüfe ich die?
Ein (neues) Feature von Content Nation ist die digitale Signatur von Artikeln.
Hier wird erklärt, was sie sind, warum es sie auf Content Nation gibt und welche Vorteile für Autoren und Leser das hat.
Was sind digitale Signaturen?
Fangen wir an mit der Definition:
Digitale Signaturen sind digitale Unterschriften.
Ergänzend zu Unterschrift im "echten" Leben können diese digitalen Unterschriften nicht nur nachweisen wer es signiert hat, sondern zusätzlich auch noch was signiert wurde.
Das ganze funktioniert auf der Basis von asymmetrischen mathematischen Funktionen.
Für Laien erklärt:
Es wird der Inhalt mittels mathematischen Funktionen (Hashing) von einem langen Text in eine vergleichsweise kurze Version umgewandelt. Dieses Hashing ist nicht umkehrbar, d.h. aus der kurzen Version kann die Original-Version nicht rekonstruiert werden. Aber wenn sich im Original auch nur ein Zeichen ändert, kommt ein komplett anderes Ergebnis raus.
Für Experten:
Content Nation verwendet SHA-384 für das Hashing, der zu hashende Text ist einseh- und prüfbar. Siehe unten.
Für alle:
Nachdem diese kurze "Version" erzeugt wurde, wird diese von dem Autor signiert, also unterschrieben.
Dies erfolgt mit einem asymmetrischen Verfahren. Dazu gibt es einen privaten Schlüssel und einen öffentlichen.
Der private Schlüssel ist, wie der Name besagt, privat und geheim. Dieser sollte sicher verwahrt werden und an niemanden weitergegeben werden. Hier auf Content Nation wird der Schlüssel im internen Profil-Admin Bereich erzeugt und im Browser gespeichert. Es wird auch ausdrücklich darauf hingewiesen, diesen sicher zu speichern.
Der private Schlüssel verschlüsselt (besser gesagt: signiert) nun die kurze Version. Das Ergebnis ist die Signatur.
Zum prüfen der digitalen Unterschrift wird der öffentliche Schlüssel verwendet. Mit diesem wird nun die Signatur entschlüsselt. Das klappt nur, wenn der öffentliche Schlüssel zu dem privaten gehört, sonst kommt was falsches heraus. Anschließend wird mittels gleichem hashing der zu prüfende Inhalt "verkürzt". Sind entschlüsselte Signatur und das hashing-Ergebnis identisch, dann wurde dieser Text signiert und unterschrieben.
Analog zu der Signatur des Inhalts durch den/die Autor/Autorin erfolgt eine anschließende Signatur durch Content Nation. Dort stehen dann noch weitere Infos drin, wie Veröffentlichungszeit und URL.
Warum gibt es die digitalen Signaturen auf Content Nation?
Viele Autoren kennen das Problem der Inhalts-Kopierei. Dort werden Teile oder auch ganze Texte durch fremde Personen "recycled" oder auch bekannt als Zitat ohne Quellen Erwähnung.
Mit diesen Funktionen der Signatur kann nun a) geprüft werden wer den Text erstellt hat (Inhalt-Signatur). Aber auch wann und wo das auf Content Nation veröffentlicht wurde (Content Nation Signatur).
Wenn nun jemand hingeht und euren Text "Zitiert" kann die Signatur nachweisen, dass ihr den Text bereits vor dem Zeitpunkt der Kopie veröffentlicht habt.
Es ist also sowohl ein Schutz für euch als auch für eure Leser.
Wie prüfe ich die digitale Signatur?
Achtung, jetzt wird es leider etwas technisch.
Hier eine Anleitung für Linux, vermutlich funktioniert das auch so unter Windows und MacOS, wenn die entsprechenden Kommandozeilen Tools von OpenSSLl installiert sind.
Inhalts-Signatur prüfen
Am Ende eines Artikel, bei dem die Signatur aktiviert ist, gibt es die 2 Signaturen für Inhalt und Veröffentlichung.
Darunter gibt es einen Link um weitere Informationen aufzuklappen.
In der ersten Box wird der Text für die Inhalt-Signatur angezeigt. Dies sind Titel des Artikels, Inhalt, Tags und Autor-Name, wenn angegeben.
Der Artikel-Inhalt wird jedoch vorher ein wenig bearbeitet. Alle Stylings (Überschriften, Textformatierungen etc.) werden entfernt und alle Leerzeichen und Zeilenumbrüche durch einzelne Leerzeichen ersetzt.
Für die Experten:
document.querySelector('#content>.content').textContent.replace(/\s+/g, ' ').trim();
Den Inhalt der Box nun in eine Datei kopieren. Achtung, kein Zeilenumbruch am Ende. Speichern als content.txt . Andere Namen sind natürlich auch möglich, die Code-Schnipsel entsprechend dann anpassen.
Als nächstes wird noch der öffentliche Schlüssel des Profils benötigt, der ist unter der Box verlinkt. Hier im Beispiel die 4dbaedff7a42483739d3404e528086f9.pem (die Signatur für die Hilfe).
Als letztes wird noch die Signatur selbst benötigt. Diese kopieren und abspeichern z.B. als signatur.txt .
Hierbei bitte ein Zeilenumbruch an das Ende der Datei machen. Ist doof, dass es unterschiedlich ist, aber ich kann die Tools nicht ändern.
Die Tools, die wir benutzen, benötigen diese Signatur aber als Binärdatei. Da müssen wir die umwandeln:
openssl base64 -d -in signatur.txt -out signatur.bin
Anschließen kann nun die Signatur überprüft werden:
openssl dgst -sha384 -verify 4dbaedff7a42483739d3404e528086f9.pem -signature signatur.bin content.txt
Wenn alles OK ist, sollte dort
Verified OK
stehen. Wenn nicht, prüfen, ob sich nicht evtl. ein Zeilenumbruch am Ende der signatur.txt eingeschleicht hat. Manche Editoren machen das automatisch.
Analog dazu wir auch die Content Nation Signatur geprüft. Der Inhalt der Signatur steht in der zweiten Box, die Schritte sind prinzipiell identisch.
Hier stehen drin, die Signatur des Inhalts, die eindeutige ID des öffentlichen Schlüssels, Veröffentlichungszeit und, falls vorhanden, letzte Änderung und final die URL.
Es wird nur der öffentliche Content Nation Schlüssel benötigt. Ist ebenfalls unter der Box verlinkt.
Hier nun auch wieder Signatur in Binärdatei wandeln:
openssl base64 -d -in signatur.txt -out signatur.bin
und Signatur prüfen
openssl dgst -sha384 -verify contentnationpublickey.pem -signature signatur.bin contentnation.txt
Digital signatures of this article
What are digital signatures and how do I verify them?Content signature:
4dbaedff7a42483739d3404e528086f9MGQCMEe1qP9upe1uVKoZrayGricAM4gY1oHyEKImTmL5fdYFOYv3rBefD+UkUCIq386Q8QIwS9z1fHXvabMvXlFOZC9Cz8lnZfr6wiGWBWQ1AWR78rqZKkZGzPS4yug2XzV+zLP8
Content Nation Signature
MGUCMBme58XkrwnnV/bifBijf31bX+ZyZ5FLt9Z3SBPvwCMkjfwRbXOGD9piWJBe6ZD9bgIxANjWbU50lhblw/bxBzXNWvvNCGFEFM2YAVGa9dN4H+DTqscNol3+0hP9rSox+vrLSA==
More signature information
Content signature:
Profile public key (4dbaedff7a42483739d3404e528086f9)