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

the next big thing  –  1 Kommentare
Anzeige

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.

Anzeige

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:

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

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

Anzeige