Salted BCrypt Hashes erstellen und prüfen

In diesem Tutorial erfahren Sie, wie Sie Salted BCrypt-Hashes mit dem BCrypt Calculator Adapter in der X4 Suite erstellen und überprüfen.

BCrypt ist eine Passwort-Hashfunktion, die ein Salt enthält, um das Passwort vor Angriffen zu schützen. Für zusätzliche Sicherheit wird die Funktion deutlich verlangsamt, wenn sie häufig hintereinander ausgeführt werden soll. Die Funktion ist adaptiv und passt sich an schnellere Hardware an. So kann die höhere Geschwindigkeit kompensiert werden und es besteht auch bei schneller Hardware Schutz vor Brute-Force-Angriffen.

Mit dem Adapter Bcrypt Calculator können wir Salted BCrypt-Hashes in technischen Prozessen erzeugen und verifizieren. Dieses Tutorial enthält drei Beispiele, wie der Adapter verwendet werden kann:

  • Neuen Hash-Wert erstellen
  • Passwort gegen einen Hash-Wert prüfen
  • Passwort prüfen und aktualisieren

Inhaltsverzeichnis

Case

Arbeiten mit Adaptern

X4 Suite-Komponenten

X4 Suite-Adapter

Branchen

Branchenübergreifend

Sie können ein Template zu diesem Tutorial über den Button herunterladen. Entpacken Sie einfach die .zip-Datei und ziehen Sie das Template mit der Dateiendung .x4projecttemplate per Drag & Drop in den Repository Navigator des X4 Designers.

Template herunterladen

Neuen Hash-Wert erstellen

Im ersten Beispiel möchten wir ein neues Salted BCrypt Hash erzeugen. Das dafür benötigte Passwort erhalten wir als Klartext.

Projekt erstellen

Zunächst erstellen wir ein neues ESB-Projekt. Um ein neues ESB-Projekt zu erstellen, klicken Sie im X4 Designer auf File > New > ESB Project.

Neues Projekt anlegen
  • Der Project Creation Wizard öffnet sich.

Geben Sie für Project name BCryptCalculator ein.

  • Ein neues ESB-Projekt wird angelegt.

Ein Projektname (Project name) darf kein Leerzeichen enthalten!

Für unseren Prozess, mit dem wir aus einem Passwort im Klartext einen Hash-Wert generieren, benötigen wir mehrere Elemente:

  • Adapter BCrypt Calculator CreateHash.fa
    Mit diesem Adapter erzeugen wir einen neuen Hash-Wert.
  • XML-Datei NewHash.xml
    In dieser XML-Datei speichern wir das generierte Salted BCrypt Hash.

Adapter CreateHash erstellen

Diese Elemente legen wir nun an. Wir beginnen mit dem Adapter BCrypt Calculator. Klicken Sie im Repository Navigator mit der rechten Maustaste im ESB-Projekt BCrypt Calculator auf den Ordner Adapters, um das Kontextmenü zu öffnen.

  • Das Kontextmenü öffnet sich.

Klicken Sie auf New > Adapter.

  • Der File Creation Wizard öffnet sich.
Neuen Adapter anlegen

Wählen Sie den Adapter BCrypt Calculator aus.

Sie können den Adapter über das Suchfeld im oberen Bereich des File Creation Wizard suchen.

Geben Sie als File name CreateHash.fa ein.

Um den Adapter anzulegen, klicken Sie auf Finish.

  • Der Adapter wird angelegt und geöffnet.

Stellen Sie den Adapter wie folgt ein:

ParameterWertBeschreibung
clearTextMyPasswordPasswort im Klartext

Speichern Sie den Adapter, indem Sie in der Werkzeugleiste auf Speichern bzw. Alle Speichern klicken:

Sie können Ihre Änderungen auch mit Strg+S speichern.

XML-Datei NewHash erstellen

Für unseren Prozess benötigen wir noch eine Datei, in der wir den neuen Hash-Wert abspeichern können, die XML-Datei NewHash.xml. Klicken Sie im Repository Navigator mit der rechten Maustaste im ESB-Projekt BCrypt Calculator auf den Ordner Resources, um das Kontextmenü zu öffnen.

  • Das Kontextmenü öffnet sich.

Klicken Sie auf New > XML Document.

Neue XML-Datei anlegen
  • Der File Creation Wizard öffnet sich.

Geben Sie für File name NewHash.xml ein.

Um die Datei zu erzeugen, klicken Sie auf Finish.

  • Die XML-Datei wird erzeugt und im Repository Navigator angezeigt.

Die Datei hat außer der XML-Deklaration und einem Wurzelelement keinen Inhalt. Der Inhalt wird später durch den Prozess erzeugt und geschrieben.

Prozess CreateNewHash erstellen

Die eben erzeugen Elemente wollen wir nun in einem Prozess zusammenführen. Dafür müssen wir in unserem ESB-Projekt einen Prozess anlegen. Klicken Sie im Repository Navigator mit der rechten Maustaste im ESB-Projekt BCrypt Calculator auf den Ordner Processes, um das Kontextmenü zu öffnen.

  • Das Kontextmenü öffnet sich.

Klicken Sie auf New > Process.

  • Der File Creation Wizard öffnet sich.

Wählen Sie ein leeres Template und geben Sie als File name CreateNewHash.wrf ein.

Um den Prozess zu erstellen, klicken Sie auf Finish.

  • Der Prozess wird erstellt und angezeigt.

Fügen Sie die benötigten Elemente per Drag & Drop aus dem Repository Navigator zum Prozess hinzu:

  • CreateHash.fa
  • NewHash.xml

Der Prozess sieht nun so aus:

Prozess CreateNewHash erstellen

Nun müssen wir die einzelnen Bausteine noch konfigurieren. Wählen Sie den linken Adapter CreateHash aus, indem Sie darauf klicken.

In der linken unteren Ecke werden Ihnen die Properties (Eigenschaften) dieses Bausteins angezeigt. Stellen Sie die Properties wie folgt ein. Bestätigen Sie die jeweilige Eingabe, indem Sie die Enter-Taste drücken.

PropertyWertBeschreibung
LabelCreate HashBeschriftung des Bausteins
OperationGenerateHashOperation, die durch den Adapter ausgeführt wird.

Wählen Sie die XML-Datei NewHash aus, indem Sie darauf klicken.

In der linken unteren Ecke werden Ihnen die Properties (Eigenschaften) dieses Bausteins angezeigt. Stellen Sie die Properties wie folgt ein. Bestätigen Sie die jeweilige Eingabe, indem Sie die Enter-Taste drücken.

PropertyWertBeschreibung
LabelNew HashBeschriftung des Bausteins
OperationWriteBestimmt, ob die Datei geschrieben oder gelesen wird.

Nicht erwähnte Properties müssen Sie nicht anpassen.

Wir setzen die Operation der XML-Datei NewHash auf Write, damit wir die vom Adapter erzeugte XML-Datei, die den generierten Hash-Wert enthält, abspeichern können. Jedes Mal, wenn ein neuer Output durch den Adapter generiert wird, wird die Datei überschrieben.

Unser Prozess sieht nun so aus:

Prozess CreateNewHash anpassen

Prozess CreateNewHash testen

Jetzt möchten wir natürlich wissen, ob unser Prozess funktioniert und ob das eingegebene Passwort richtig umgewandelt wird.

Klicken Sie in der Werkzeugleiste des X4 Designer auf Start Debugging.

Debuggen starten

Wir können den Prozess Schritt für Schritt (1, Resume) oder auf einmal (2, Step into / Step over) ausführen lassen.

Debug Mode wählen

Sobald der Prozess beendet ist, können wir prüfen, ob der Adapter eine XML-Datei ausgegeben hat, die den Hash-Wert enthält. Um die XML-Datei zu öffnen, klicken Sie doppelt auf den Baustein New Hash in unserem Prozess CreateNewHash.

  • Die eben im Prozess erzeugte und abgespeicherte XML-Datei wird geöffnet und hat folgende Struktur:
    <?xml version="1.0" encoding="UTF-8"?>
    <Hash>$2a$10$cwbHiB99latW7TsPTyOJ7.xmjt4btCaGA7ZBri/gcwjkHeWOw4kUG</Hash>

Falls etwas im Prozess nicht wie erwartet funktioniert, können wir den Prozess im Debug-Modus Schritt für Schritt überprüfen. Für jeden Schritt können wir uns die Ausgaben jedes einzelnen Prozessbausteins ansehen. Dazu müssen wir nur auf das kleine Symbol oben rechts neben dem Baustein klicken:

Output debuggen

Kennwort gegen einen Hash-Wert verifizieren

In diesem Beispiel verifizieren wir ein Kennwort im Klartext gegen einen bestimmten Hash-Wert.

Projekt erstellen

Für unser Beispiel benötigen wir ein ESB-Projekt. Sie können entweder ein neues ESB-Projekt anlegen (siehe Neuen Hash-Wert erstellen) oder in unserem vorhandenen Projekt BCryptCalculator weiterarbeiten.

Für unseren Prozess, mit dem wir ein Passwort im Klartext gegen einen Hash-Wert prüfen, benötigen wir mehrere Elemente:

  • Adapter BCrypt Calculator VerifyPassword.fa
    Mit diesem Adapter verifizieren wir ein Kennwort gegen einen Hash-Wert.
  • XML-Datei VerifyResult.xml
    Wird verwendet, um das Ergebnis der Prüfung zu speichern.

Adapter VerifyPassword erstellen

Diese Elemente legen wir nun an. Wir beginnen mit dem Adapter BCrypt Calculator. Klicken Sie im Repository Navigator mit der rechten Maustaste im aktuellen ESB-Projekt auf den Ordner Adapters, um das Kontextmenü zu öffnen.

  • Das Kontextmenü öffnet sich.

Klicken Sie auf New > Adapter.

Neuen Adapter anlegen
  • Der File Creation Wizard öffnet sich.

Wählen Sie den Adapter BCrypt Calculator aus.

Geben Sie als File name VerifyPassword.fa ein.

Um den Adapter anzulegen, klicken Sie auf Finish.

  • Der Adapter wird angelegt und geöffnet.

Sie können den Adapter über das Suchfeld im oberen Bereich des File Creation Wizard suchen.

Stellen Sie den Adapter wie folgt ein:

ParameterWertBeschreibung
clearTextMyPasswordPasswort im Klartext
bcryptHashSalted BCrypt-HashSalted BCrypt-Hash, der mit dem Klartext-Passwort verglichen werden soll.

Der Wert, der für den Parameter bcryptHash eingegeben wird, muss zum eingegebenen Passwort passen. Um ein positives Validierungsergebnis zu erhalten, verwenden wir die Werte aus dem ersten Beispiel. Sie können den Hash-Wert einfach aus der Datei NewHash.xml kopieren (Zeichenfolge zwischen <Hash> und </Hash>).

Speichern Sie den Adapter, indem Sie in der Werkzeugleiste auf Speichern bzw. Alle Speichern klicken:

Datei speichern

Sie können Ihre Änderungen auch mit Strg+S speichern.

XML-Datei VerificationResult erstellen

Für unseren Prozess benötigen wir noch eine Datei, in der wir das Ergebnis der Verifikation abspeichern können, dieS XML-Datei VerificationResult.xml. Klicken Sie im Repository Navigator mit der rechten Maustaste im aktuellen ESB-Projekt auf den Ordner Resources, um das Kontextmenü zu öffnen.

Neue XML-Datei anlegen
  • Das Kontextmenü öffnet sich.

Klicken Sie auf New > XML Document.

  • Der File Creation Wizard öffnet sich.

Geben Sie für File name VerificationResult.xml ein.

Um die Datei zu erzeugen, klicken Sie auf Finish.

  • Die XML-Datei wird erzeugt und im Repository Navigator angezeigt.

Die Datei enthält außer der XML-Deklaration und einem Wurzelelement keinen Inhalt. Der Inhalt wird später durch den Prozess erzeugt und geschrieben.

Prozess VerifyPassword erstellen

Die eben erzeugen Elemente wollen wir nun in einem Prozess zusammenführen. Dafür müssen wir in unserem ESB-Projekt einen Prozess anlegen. Klicken Sie im Repository Navigator mit der rechten Maustaste im aktuellen ESB-Projekt auf den Ordner Processes, um das Kontextmenü zu öffnen.

  • Das Kontextmenü öffnet sich.

Klicken Sie auf New > Process.

  • Der File Creation Wizard öffnet sich.

Wählen Sie ein leeres Template und geben Sie als File name VerifyPassword.wrf ein.

Um den Prozess zu erstellen, klicken Sie auf Finish.

  • Der Prozess wird erstellt und angezeigt.

Fügen Sie die benötigten Elemente per Drag & Drop aus dem Repository Navigator zum Prozess hinzu:

  • VerifyPassword.fa
  • VerificationResult.xml

Der Prozess sieht nun so aus:

Prozess VerifyPassword erstellen

Nun müssen wir die einzelnen Bausteine noch konfigurieren. Wählen Sie den linken Adapter VerifyPassword aus, indem Sie darauf klicken.

In der linken unteren Ecke werden Ihnen die Properties (Eigenschaften) dieses Bausteins angezeigt. Stellen Sie die Properties wie folgt ein. Bestätigen Sie die jeweilige Eingabe, indem Sie die Enter-Taste drücken.

PropertyWertBeschreibung
LabelVerify PasswordBeschriftung des Bausteins
OperationVerifyOperation, die durch den Adapter ausgeführt wird.

Wählen Sie die XML-Datei VerificationResult aus, indem Sie darauf klicken.

In der linken unteren Ecke werden Ihnen die Properties (Eigenschaften) dieses Bausteins angezeigt. Stellen Sie die Properties wie folgt ein. Bestätigen Sie die jeweilige Eingabe, indem Sie die Enter-Taste drücken.

PropertyWertBeschreibung
LabelVerification ResultBeschriftung des Bausteins
OperationWriteBestimmt, ob die Datei geschrieben oder gelesen wird.

Nicht erwähnte Properties müssen Sie nicht anpassen.

Wir setzen die Operation der XML-Datei VerifyPassword auf Write, damit wir die vom Adapter erzeugte XML-Datei, die den generierten Hash-Wert enthält, abspeichern können. Jedes Mal, wenn ein neuer Output durch den Adapter generiert wird, wird die Datei überschrieben.

Unser Prozess sieht nun so aus:

Prozess VerifyPassword anpassen

Prozess VerifyPassword testen

Jetzt möchten wir natürlich wissen, ob unser Prozess funktioniert und ob das eingegebene Passwort richtig umgewandelt wird.

Klicken Sie in der Werkzeugleiste des X4 Designer auf Start Debugging.

Debuggen starten

Wir können den Prozess Schritt für Schritt (1, Resume) oder auf einmal (2, Step into / Step over) ausführen lassen.

Debug Mode wählen

Sobald der Prozess beendet ist, können wir prüfen, ob der Adapter eine XML-Datei ausgegeben hat, die den Hash-Wert enthält. Um die XML-Datei zu öffnen, klicken Sie doppelt auf den Baustein VerificationResult in unserem Prozess VerifyPassword.

  • Die eben im Prozess erzeugte und abgespeicherte XML-Datei wird geöffnet und hat folgende Struktur:
    <?xml version="1.0" encoding="UTF-8"?>
    <Ok>The cleartext string matches the hash</Ok>

Der Output für eine fehlgeschlagene Verfikation wäre folgender:

<?xml version="1.0" encoding="UTF-8"=>
<Error>The cleartext string does not match the hash.</Error>

Weitere Informationen zum Verhalten des Adapters finden Sie im Handbuch zur X4 Suite unter „BCrypt Calculator“

Falls etwas im Prozess nicht wie erwartet funktioniert, können wir den Prozess im Debug-Modus Schritt für Schritt überprüfen. Für jeden Schritt können wir uns die Ausgaben jedes einzelnen Prozessbausteins ansehen. Dazu müssen wir nur auf das kleine Symbol oben rechts neben dem Baustein klicken:

Output debuggen

Passwort aktualisieren

In diesem Beispiel verifizieren wir ein Passwort gegen einen Hash-Wert. Wenn die Verifikation erfolgreich ist, dann aktualisieren wir das Kennwort.

Projekt erstellen

Für unser Beispiel benötigen wir ein ESB-Projekt. Sie können entweder ein neues ESB-Projekt anlegen (siehe Neuen Hash-Wert erstellen) oder in unserem vorhandenen Projekt BCryptCalculator weiterarbeiten.

Für unseren Prozess, mit dem wir ein Passwort im Klartext gegen eiinen Hash-Wert prüfen, benötigen wir mehrere Elemente:

  • Adapter BCrypt Calculator UpdatePassword.fa
    Mit diesem Adapter aktualisieren wir ein Kennwort.
  • XML-Datei UpdatedHash.xml
    Wird verwendet, um das aktualisierte Passwort zu speichern.

Adapter UpdatePassword erstellen

Diese Elemente legen wir nun an. Wir beginnen mit dem Adapter BCrypt Calculator. Klicken Sie im Repository Navigator mit der rechten Maustaste im aktuellen ESB-Projekt auf den Ordner Adapters, um das Kontextmenü zu öffnen.

  • Das Kontextmenü öffnet sich.

Klicken Sie auf New > Adapter.

Neuen Adapter anlegen
  • Der File Creation Wizard öffnet sich.

Wählen Sie den Adapter BCrypt Calculator aus.

Geben Sie als File name UpdatePassword.fa ein.

Um den Adapter anzulegen, klicken Sie auf Finish.

  • Der Adapter wird angelegt und geöffnet.

Sie können den Adapter über das Suchfeld im oberen Bereich des File Creation Wizard suchen.

Stellen Sie den Adapter wie folgt ein:

ParameterWertBeschreibung
clearTextMyPasswordPasswort im Klartext
bcryptHashSalted BCrypt-HashSalted BCrypt-Hash, der mit dem Klartext-Passwort verglichen werden soll.
newClearTextMyNewPasswordNeues Passwort im Klartext

Der Wert, der für den Parameter bcryptHash eingegeben wird, muss zum eingegebenen Passwort passen. Um ein positives Validierungsergebnis zu erhalten, verwenden wir die Werte aus dem ersten Beispiel. Sie können den Hash-Wert einfach aus der Datei NewHash.xml kopieren (Zeichenfolge zwischen <Hash> und </Hash>).

Speichern Sie den Adapter, indem Sie in der Werkzeugleiste auf Speichern bzw. Alle Speichern klicken:

Sie können Ihre Änderungen auch mit Strg+S speichern.

XML-Datei UpdatedHash erstellen

Für unseren Prozess benötigen wir noch eine Datei, in der wir das Ergebnis der Verifikation abspeichern können, die XML-Datei UpdatedHash.xml. Klicken Sie im Repository Navigator mit der rechten Maustaste im aktuellen ESB-Projekt auf den Ordner Resources, um das Kontextmenü zu öffnen.

  • Das Kontextmenü öffnet sich.

Klicken Sie auf New > XML Document.

Neue XML-Datei anlegen
  • Der File Creation Wizard öffnet sich.

Geben Sie für File name UpdatedHash.xml ein.

Um die Datei zu erzeugen, klicken Sie auf Finish.

  • Die XML-Datei wird erzeugt und im Repository Navigator angezeigt.

Die Datei enthält außer der XML-Deklaration und einem Wurzelelement keinen Inhalt. Der Inhalt wird später durch den Prozess erzeugt und geschrieben.

Prozess UpdatePassword erstellen

Die eben erzeugen Elemente wollen wir nun in einem Prozess zusammenführen. Dafür müssen wir in unserem ESB-Projekt einen Prozess anlegen. Klicken Sie im Repository Navigator mit der rechten Maustaste im aktuellen ESB-Projekt auf den Ordner Processes, um das Kontextmenü zu öffnen.

  • Das Kontextmenü öffnet sich.

Klicken Sie auf New > Process.

  • Der File Creation Wizard öffnet sich.

Wählen Sie ein leeres Template und geben Sie als File name UpdatePassword.wrf ein.

Um den Prozess zu erstellen, klicken Sie auf Finish.

  • Der Prozess wird erstellt und angezeigt.

Fügen Sie die benötigten Elemente per Drag & Drop aus dem Repository Navigator zum Prozess hinzu:

  • UpdatePassword.fa
  • UpdatePassword.xml

Der Prozess sieht nun so aus:

Prozess UpdatePassword erstellen

Nun müssen wir die einzelnen Bausteine noch konfigurieren. Wählen Sie den linken Adapter UpdatePassword aus, indem Sie darauf klicken.

In der linken unteren Ecke werden Ihnen die Properties (Eigenschaften) dieses Bausteins angezeigt. Stellen Sie die Properties wie folgt ein. Bestätigen Sie die jeweilige Eingabe, indem Sie die Enter-Taste drücken.

PropertyWertBeschreibung
LabelUpdate PasswordBeschriftung des Bausteins
OperationVerifyAndReplaceOperation, die durch den Adapter ausgeführt wird.

Wählen Sie die XML-Datei UpdatedHash aus, indem Sie darauf klicken.

In der linken unteren Ecke werden Ihnen die Properties (Eigenschaften) dieses Bausteins angezeigt. Stellen Sie die Properties wie folgt ein. Bestätigen Sie die jeweilige Eingabe, indem Sie die Enter-Taste drücken.

PropertyWertBeschreibung
LabelUpdated HashBeschriftung des Bausteins
OperationWriteBestimmt, ob die Datei geschrieben oder gelesen wird.

Nicht erwähnte Properties müssen Sie nicht anpassen.

Wir setzen die Operation der XML-Datei UpdatedHash auf Write, damit wir die vom Adapter erzeugte XML-Datei, die den generierten Hash-Wert enthält, abspeichern können. Jedes Mal, wenn ein neuer Output durch den Adapter generiert wird, wird die Datei überschrieben.

Unser Prozess sieht nun so aus:

Prozess UpdatePassword anpassen

Prozess UpdatePassword testen

Jetzt möchten wir natürlich wissen, ob unser Prozess funktioniert und ob das eingegebene Passwort richtig umgewandelt wird.

Klicken Sie in der Werkzeugleiste des X4 Designer auf Start Debugging.

Debuggen starten

Wir können den Prozess Schritt für Schritt (1, Resume) oder auf einmal (2, Step into / Step over) ausführen lassen.

Debug Mode wählen

Sobald der Prozess beendet ist, können wir prüfen, ob der Adapter eine XML-Datei ausgegeben hat, die den Hash-Wert enthält. Um die XML-Datei zu öffnen, klicken Sie doppelt auf den Baustein UpdateHash in unserem Prozess UpdatePassword.

  • Die eben im Prozess erzeugte und abgespeicherte XML-Datei wird geöffnet und hat folgende Struktur:
    <?xml version="1.0" encoding="UTF-8"?>
    <NewPassword>$2a$10$CFDxoiyEIiZwKbXicpW3neJ2UuQK1D8BUt.7RCdYqrs3VhfFnxUOi</NewPassword>
     

Falls etwas im Prozess nicht wie erwartet funktioniert, können wir den Prozess im Debug-Modus Schritt für Schritt überprüfen. Für jeden Schritt können wir uns die Ausgaben jedes einzelnen Prozessbausteins ansehen. Dazu müssen wir nur auf das kleine Symbol oben rechts neben dem Baustein klicken:

Output debuggen