4D Lösungen waren schon immer sicher und stabil. Das liegt daran, dass 4D viel in die Entwicklung und Aktualisierung von Sicherheitsfunktionen investiert. 4D setzt diesen Fokus in 4D v18 R4 mit einer neuen Funktion fort, die das Sicherheitstoolkit weiter verbessert. Eine neue Klasse mit einer Reihe von Methoden zur Durchführung gängiger kryptographischer Operationen ist jetzt verfügbar: CryptoKey class.
HDI Signieren und Verifizieren
Kryptographie-Funktionen
Kryptografiefunktionen können verwendet werden, um Sicherheitsmerkmale wie Datenschutz und Authentifizierung zu implementieren. Die Klasse CryptoKey bietet die folgenden Kryptografiefunktionen:
- sign() und verify(): Erstellen und Überprüfen digitaler Signaturen
- encrypt() und decrypt(): Verschlüsseln und Entschlüsseln von Daten
Zusätzlich zu diesen Operationen können Sie mit der Klasse CryptoKey auch neue RSA- oder ECDSA-Schlüssel erzeugen oder ein vorhandenes Schlüsselpaar aus einer PEM-Definition laden.
Signieren und Verifizieren
Mit den Funktionen sign() und verify() können Sie Nachrichtensignaturen signieren und verifizieren. Damit können Sie einen Echtheitsnachweis für digitale Nachrichten oder elektronische Dokumente erbringen.
Digitale Signaturen bieten:
- Nachrichtenauthentifizierung: Nachweis, dass ein bekannter Absender die Nachricht erstellt und signiert hat
- Integrität der Nachricht: Nachweis, dass die Nachricht nach dem Signieren nicht verändert wurde
- Unleugbarkeit: Der Unterzeichner kann die Unterzeichnung eines Dokuments nicht mehr leugnen, sobald die Signatur erstellt wurde.
Eine Nachricht wird mit einem privaten Schlüssel signiert, und die Signatur wird mit dem entsprechenden öffentlichen Schlüssel überprüft:
Beispiel
Der folgende Codeausschnitt zeigt, wie Sie eine Nachricht mit Hilfe der Methoden der neuen 4D Klasse CryptoKey signieren und verifizieren können:
Bobs Seite
// Create the message $message:="hello world" Folder(fk desktop folder).file("message.txt").setText($message) // Create a key $type:=New object("type";"RSA") $key:=4D.CryptoKey.new($type) // Get the public key and save it Folder(fk desktop folder).file("public.pem").setText($key.getPublicKey()) // Get signature as base64 and save it Folder(fk desktop folder).file("signature").setText($key.sign($message;$type)) /*Bob sent the message, the public key and the signature to Alice*/
Alices Seite
// Get message, public key & signature $message:=Folder(fk desktop folder).file("message.txt").getText() $publicKey:=Folder(fk desktop folder).file("public.pem").getText() $signature:=Folder(fk desktop folder).file("signature").getText() // Create a key $type:=New object("type";"PEM";"pem";$publicKey) $key:=4D.CryptoKey.new($type) // Verify signature If ($key.verify($message;$signature;$type).success) // The signature is valid End if
ENCRYPT und DECRYPT
Die Ver- und Entschlüsselung erfolgt mit Hilfe von Schlüsselpaaren. Bei der Verschlüsselung werden die ursprünglichen Informationen in eine nicht erkennbare Form umgewandelt, während bei der Entschlüsselung die verschlüsselten Daten in eine Form gebracht werden, die von einem Menschen oder einem Computer gelesen und verstanden werden kann.
Wirksame Sicherheit erfordert:
- Private Schlüssel bleiben privat
- Öffentliche Schlüssel können offen verteilt werden, ohne die Sicherheit zu gefährden.
Beispiel
Nehmen wir an, ich möchte „Hallo Welt“ verschlüsseln. So wird es gemacht:
$encrypted:=$key.encrypt("hello world")
Und für die Entschlüsselung:
$status:=$key.decrypt($encrypted)
Für weitere Informationen lesen Sie bitte die Dokumentation!
In einem der nächsten Blogeinträge werden wir Ihnen zeigen, wie weit Sie mit dieser Klasse gehen können und welche Möglichkeiten sie für die Entwicklung anspruchsvoller Anwendungen bietet. In der Zwischenzeit können Sie Ihre Erfahrungen mit Kryptowährungen gerne im 4D Forum teilen!