Einführung in Node.js, Folge 21: Daten verschlüsseln

Das Verschlüsseln von Daten gewinnt zunehmend an Bedeutung. Node.js greift zu dem Zweck auf OpenSSL zurück und unterstützt sowohl die symmetrische als auch die asymmetrische Verschlüsselung. Darüber hinaus weiß es auch mit digitalen Signaturen, Hashfunktionen & Co. umzugehen. Wie funktioniert das?

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Lesezeit: 2 Min.
Von
  • Golo Roden

Das Verschlüsseln von Daten gewinnt zunehmend an Bedeutung. Node.js greift zu dem Zweck auf OpenSSL zurück und unterstützt sowohl die symmetrische als auch die asymmetrische Verschlüsselung. Darüber hinaus weiß es auch mit digitalen Signaturen, Hashfunktionen & Co. umzugehen. Wie funktioniert das?

Node.js enthält das crypto-Modul, mit dem sich auf die Funktionen von OpenSSL zugreifen lässt. Das ermöglicht unter anderem das Ver- und Entschlüsseln von Daten, das Erzeugen und Überprüfen von digitalen Signaturen und das Berechnen von Hashwerten.

Mehr Infos

Nahezu allen Funktionen gemein ist, dass zunächst ein passendes Objekt zu erzeugen ist. Dazu dienen eine Reihe von create…-Funktionen, beispielsweise createCipher und createDecipher. Die auf dem Weg erzeugten Objekte kennen zwei APIs, eine klassische und eine Stream-basierte. Welcher von beiden man den Vorzug gibt, ist im Großen und Ganzen letztlich Geschmackssache.

Leider bietet das crypto-Modul nicht alles, was man zum Ver- und Entschlüsseln benötigt. So gibt es beispielsweise keine Möglichkeit, ein Schlüsselpaar für die asymmetrische Verschlüsselung zu erzeugen. Das muss weiterhin von Hand über OpenSSL direkt auf der Konsole erfolgen.

Sobald die entsprechenden Schlüssel vorliegen, kann Node.js aber asymmetrisch verschlüsseln – und auch digitale Signaturen erzeugen und überprüfen. Dazu stehen gesonderte Funktionen zur Verfügung, die den Umgang mit den Schlüsseln und Signaturen besonders einfach machen.

Abgerundet werden diese Fähigkeiten durch die Möglichkeit, Hashwerte und Message Authentication Codes (MACs) zu berechnen. Beides dient der Überprüfung beziehungsweise dem Schutz der Integrität von Nachrichten.

Schließlich kennt Node.js außerdem auch den PBKDF2-Algorithmus, um aus einem Passwort einen Schlüssel zu erzeugen, der für die symmetrische Verschlüsselung geeignet ist. Da hierbei ein Salt benötigt wird, bietet das crypto-Modul mit der Funktion randomBytes außerdem die Möglichkeit, zufällige Bytes über einen kryptografisch sicheren Zufallszahlengenerator zu erzeugen.

Wie das alles funktioniert und worauf es dabei zu achten gilt, zeigt das folgende Video:

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier eine Vimeo-Video (Vimeo LLC) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Vimeo LLC) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

tl;dr: Node.js verwendet OpenSSL für Verschlüsselung, digitale Signaturen & Co., als Abstraktionsschicht dient das in Node.js integrierte crypto-Modul. ()