Verschlüsseln Sie Ihre eigenen Daten mit dem 4D-Algorithmus

Wie Sie vielleicht schon vor einiger Zeit bemerkt haben, bietet Ihnen 4D eine einfache Möglichkeit, Ihre Daten zu verschlüsseln. Jetzt können Sie mit 4D auch denselben Algorithmus wie bei der Datenverschlüsselung verwenden, aber diesmal für Ihre eigenen Bedürfnisse. So können Sie nun jede beliebige Information ver- und entschlüsseln, sei es ein einzelnes Feld in einer Tabelle oder externe Dateien.

Hinweis: Zur Veranschaulichung der in diesem Blogbeitrag vorgestellten neuen Befehle sehen Sie hier ein HDI mit gefälschten medizinischen Analysen und deren externen PDF-Berichten. In diesem HDI sind die Berichte verschlüsselt und Sie entschlüsseln sie, um lesbare Dokumente zu erhalten.

Stärker werden

Heutzutage müssen immer mehr kritische Daten verschlüsselt werden, um Hackerangriffe oder Datenlecks zu verhindern. Mit der Möglichkeit, Tabellen einfach zu verschlüsseln, hat 4D bereits eine Antwort auf dieses Hauptbedürfnis gefunden. Aber manchmal müssen Sie nur ein Feld in einer Tabelle oder externe Dateien verschlüsseln, die mit Datensätzen wie Berichten, Rechnungen oder medizinischen Analysen verknüpft sind. Sie konnten dies bereits mit der Klasse 4D.CryptoKey tun, aber asymmetrische Algorithmen sind für die Zwecke der Informationssignatur besser geeignet. Wir bieten Ihnen nun die Möglichkeit, Ihre eigenen Daten oder Dateien mit einem starken symmetrischen AES-256-Algorithmus zu verschlüsseln, den 4D auch für die Verschlüsselung von Daten und Journalen verwendet.

Hinter den Vorhängen

Der neue Encrypt data BLOB Befehl holt sich ein BLOB und berechnet ein verschlüsseltes BLOB unter Verwendung von Parametern wie einem Key-Pass-Objekt und Salt.

Ein Key-Pass-Objekt ist ein Objekt, das aus einem New data key Befehlsaufruf. Sie können auch direkt eine Passphrase anstelle eines Key-Pass-Objekts verwenden. Da 4D zur Verschlüsselung einen Algorithmus vom Typ AES verwendet, ist der resultierende Blob ein Vielfaches von 16 Byte groß. Wenn also die ursprüngliche Blobgröße kein Vielfaches von 16 ist, fügt der Befehl Nullbytes hinzu.

Bei der umgekehrten Operation erhält der neue Decrypt data BLOB Befehl ein verschlüsseltes Blob und berechnet ein entschlüsseltes Blob mit denselben Parametern. Aber Vorsicht: Wenn die Parameter nicht exakt die gleichen Werte haben wie beim Verschlüsseln, ist der entschlüsselte Blob nicht derselbe wie der Original-Blob. Das ist sogar das erwartete Verhalten der Kryptographie!

Salt ist gar nicht so schlecht

Die Verwendung von Salt ist eine Möglichkeit, um sicherzustellen, dass die Originaldaten nicht aus verschlüsselten Daten wiederhergestellt werden können. Eine Möglichkeit, Daten zu hacken, ist die Häufigkeitsanalyse, d. h. der Vergleich der verschlüsselten Daten mit sehr ähnlichen Originaldaten. Wenn Sie dieselben Daten mit derselben Passphrase, aber unterschiedlichen Salts verschlüsseln, wird der Fingerabdruck (verschlüsselte Daten) völlig anders aussehen.

Das Salz ist von größerer Bedeutung, da es mehrere Werte enthält. Wenn Sie zum Beispiel ein Feld oder eine Datei verschlüsseln, die mit einem Datensatz verknüpft ist, können Sie einfach den Primärschlüssel als Salt verwenden. Selbst wenn der ursprüngliche Feld- oder Dateiinhalt für mehrere Datensätze derselbe ist, wird der verschlüsselte Inhalt völlig unterschiedlich sein.

BEISPIEL FÜR DATEIVERSCHLÜSSELUNG

Um die Ver- und Entschlüsselung von Dateien mit Wiederherstellung der Originalgröße einfach zu handhaben, können Sie die folgenden Methoden verwenden.

Diese Methoden verwalten die 16-Byte-Ergänzung, indem sie die ursprüngliche Dateigröße in der verschlüsselten Datei selbst speichern, so dass sie bei der Entschlüsselung leicht abgerufen werden kann.

//encryptFile
#DECLARE($originalFile : 4D .File; $passPhrase : Text ; $salt : Integer ; $encryptedFile : 4D .File)->$result : Boolean
// AES-type encryption : as resulting blob size is a multiple of 16 bytes, some final null bytes may be added.
var $fileContent ; $blobToEncrypt; $blobEncrypted : Blob
var $contentLength ; $offset : Integer

$fileContent:=$originalFile.getContent()
// Store original file length at the beginning of the blob to encrypt
$contentLength :=BLOB size($fileContent)
VARIABLE TO BLOB ($contentLength; $blobToEncrypt; $offset)
COPY BLOB ($fileContent; $blobToEncrypt; 0; $offset; $contentLength)
$result :=Encrypt data BLOB($blobToEncrypt; $passPhrase; $salt; $blobEncrypted)
If ($result)
$encryptedFile .setContent($blobEncrypted)
End if

//decryptFile
#DECLARE($encryptedFile : 4D .File; $passPhrase : Text ; $salt : Integer ; $decryptedFile : 4D .File)->$result: Boolean
// AES-type decryption : as encrypted blob size is a multiple of 16 bytes, some final null bytes may have been added.
var $fileContent ; $blobToDecrypt; $blobDecrypted : Blob
var $contentLength ; $offset : Integer

$blobToDecrypt:=$encryptedFile.getContent()
$result :=Decrypt data BLOB($blobToDecrypt; $passPhrase; $salt; $blobDecrypted)
If ($result)
// Retrieve original file length at the beginning of the decrypted blob
BLOB TO VARIABLE ($blobDecrypted; $contentLength; $offset)
COPY BLOB ($blobDecrypted; $fileContent; $offset; 0; $contentLength)
$decryptedFile .setContent($fileContent)
End if

ANWENDUNGSFALL

Um zu veranschaulichen, wie Sie diese neuen Befehle verwenden können, sehen Sie hier ein HDI, das einige gefälschte medizinische Analysen und deren externe PDF-Berichte enthält. In diesem HDI sind die Berichte verschlüsselt und Sie entschlüsseln sie, um lesbare Dokumente zu erhalten.

HDI: BLOB-Verschlüsselung

Jetzt liegt es an Ihnen, Daten zu verschlüsseln und zu entschlüsseln, so wie es 4D tut!

Avatar
- Product Owner - Damien Fuzeau ist seit Februar 2019 Mitglied des 4D Produktteams. Als Product Owner ist er für das Schreiben von User Stories zuständig, die er dann in funktionale Spezifikationen umsetzt. Zu seinen Aufgaben gehört es auch, dafür zu sorgen, dass die gelieferten Funktionsimplementierungen den Anforderungen der Kunden entsprechen. Damien hat an der Universität von Nantes einen Abschluss in Softwaretechnik gemacht. Er verbrachte mehr als 23 Jahre in seinem früheren Unternehmen, zunächst als Entwickler (er entdeckte 4D im Jahr 1997) und später als technischer Leiter und Softwarearchitekt. Dieses Unternehmen ist ein 4D OEM Partner und hat 4D basierte Geschäftssoftware für Tausende von Usern auf Hunderten von Servern eingesetzt. Damien ist also mit der Entwicklung und dem Einsatz von 4D in einem mehrsprachigen Kontext vertraut.