4D v16.3ENCRYPT BLOB |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
ENCRYPT BLOB
|
ENCRYPT BLOB ( ZuVerschlüsseln ; SendePrivKey {; EmpfPubKey} ) | ||||||||
Parameter | Typ | Beschreibung | ||||||
ZuVerschlüsseln | BLOB |
![]() |
Daten zum Verschlüsseln | |||||
![]() |
Verschlüsselte Daten | |||||||
SendePrivKey | BLOB |
![]() |
Privater Schlüssel des Senders | |||||
EmpfPubKey | BLOB |
![]() |
Öffentlicher Schlüssel des Empfängers | |||||
Der Befehl ENCRYPT BLOB verschlüsselt den Inhalt des BLOB mit dem Parameter ZuVerschlüsseln mit dem privaten Schlüssel SendePrivKey des Senders sowie optional auch den öffentlichen Schlüssel EmpfPubKey des Empfängers. Eine Verschlüsselung (öffentliche und private Schlüssel) erhalten Sie über den Befehl GENERATE ENCRYPTION KEYPAIR.
Hinweis: Dieser Befehl verwendet Algorithmus und Verschlüsselungsfunktionen des SSL Protokolls. Achten Sie deshalb darauf, dass alle dafür notwendigen Komponenten korrekt auf Ihrem Rechner installiert sind — selbst wenn Sie SSL nicht für 4D Web Server Verbindungen einsetzen. Ausführliche Informationen dazu finden Sie im Abschnitt TLS Protokoll.
Das BLOB mit den Schlüsseln hat ein internes PEM (Privacy Enhanced Mail) Format. Über dieses plattformunabhängige Format können Sie mühelos Schlüssel in einem E-Mail oder in einer Textdatei per Kopieren/Einsetzen austauschen bzw. verwalten.
Sobald der Befehl läuft, enthält das BLOB mit dem Parameter ZuVerschlüsseln die verschlüsselten Daten. Sie lassen sich nur über den Befehl DECRYPT BLOB entschlüsseln, mit dem öffentlichen Schlüssel des Senders als Parameter.
Wurde darüberhinaus zum Verschlüsseln der Information der optionale öffentliche Schlüssel des Empfängers verwendet, ist zum Entschlüsseln auch der private Schlüssel des Empfängers notwendig.
Verschlüsselter Nachrichtenaustausch zwischen den Personen “Anne” und “Peter”:
Eine Verschlüsselung der Daten verlangsamt die Ausführung Ihrer Anwendungen, insbesondere wenn ein Schlüsselpaar verwendet wird. Es gibt jedoch bestimmte Maßnahmen zum Optimieren:
Einen Schlüssel verwenden
Eine Firma möchte die Daten in einer 4D Datenbank firmenintern halten. Sie muss diese Information über Dateien regelmäßig via Internet an die Niederlassungen senden. Die Niederlassungen wiederum müssen sicher sein, dass die Informationen wirklich von der Mutterfirma stammen.
1) Die Mutterfirma kann mit dem Befehl GENERATE ENCRYPTION KEYPAIR ein Schlüsselpaar generieren:
`Methode GENERATE_KEYS_TXT
C_BLOB($BPublicKey;$BPrivateKey)
GENERATE ENCRYPTION KEYPAIR($BPrivateKey;$BPublicKey)
BLOB TO DOCUMENT("PublicKey.txt";$BPublicKey)
BLOB TO DOCUMENT("PrivateKey.txt";$BPrivateKey)
2) Die Mutterfirma behält den privaten Schlüssel und sendet an jede Niederlassung eine Kopie des Dokuments mit dem öffentlichen Schlüssel. Zur maximalen Sicherheit sollte der Schlüssel auf Diskette kopiert werden, die den Niederlassungen persönlich übergeben wird.
3) Dann kopiert die Firma die firmeninterne Information (die z.B. in einem Textfeld gespeichert ist) in BLOBs, die mit dem privaten Schlüssel verschlüsselt werden:
`Methode ENCRYPT_INFO
C_BLOB($vbEncrypted;$vbPrivateKey)
C_TEXT($vtEncrypted)
$vtEncrypted:=[Private]Info
VARIABLE TO BLOB($vtEncrypted;$vbEncrypted)
DOCUMENT TO BLOB("PrivateKey.txt";$vbPrivateKey)
If(OK=1)
ENCRYPT BLOB($vbEncrypted;$vbPrivateKey
BLOB TO DOCUMENT("Update.txt";$vbEncrypted)
End if
4) Die Update-Dateien können dann über einen ungesicherten Kanal wie z.B. Internet an die Niederlassungen gesandt werden.
5) Jede Niederlassung kann das Dokument mit dem öffentlichen Schlüssel entschlüsseln:
`Methode DECRYPT_INFO
C_BLOB($vbEncrypted;$vbPublicKey)
C_TEXT($vtDecrytped)
C_TIME($vtDocRef)
ALERT("Bitte das verschlüsselte Dokument wählen.")
$vtDocRef:=Open document("") `Wähle Update.txt
If(OK=1)
CLOSE DOCUMENT($vtDocRef)
DOCUMENT TO BLOB(Document;$vbEncrypted)
DOCUMENT TO BLOB("PublicKey.txt";$vbPublicKey)
If(OK=1)
DECRYPT BLOB($vbEncrypted;$vbPublicKey)
BLOB TO VARIABLE($vbEncrypted;$vtDecrypted)
CREATE RECORD([Private])
[Private]Info:=$vtDecrypted
SAVE RECORD([Private])
End if
End if
Wenn die Daten von einer anderen Quelle stammen (die den privaten Schlüssel nicht kennen kann), gibt es eine Fehlermeldung, da der öffentliche Schlüssel nicht passt.
Ein Schlüsselpaar verwenden
Eine Firma möchte Informationen via Internet austauschen. Jede Niederlassung empfängt firmeninterne Information und sendet Information an die Mutterfirma. Es gibt also zwei Anforderungen:
`Methode ENCRYPT_INFO_2
C_BLOB($vbEncrypted;$vbPrivateKey;$vbPublicKey)
C_TEXT($vtEncrypt)
C_TIME($vtDocRef)
$vtEncrypt:=[Private]Info
VARIABLE TO BLOB($vtEncrypt;$vbEncrypted)
` Ihr eigener privater Schlüssel wird geladen...
DOCUMENT TO BLOB("PrivateKey.txt";$vbPrivateKey)
If(OK=1)
` ...ebenso der öffentliche Schlüssel des Empfängers
ALERT("Bitte den öffentlichen Schlüssel des Empfängers wählen.")
$vhDocRef:=Open document("") `Zu ladender öffentlicher Schlüssel
If(OK=1)
CLOSE DOCUMENT($vtDocRef)
DOCUMENT TO BLOB(Document;$vbPublicKey)
`BLOB Verschlüsselung mit dem beiden Schlüsseln als Parameter
ENCRYPT BLOB($vbEncrypted;$vbPrivateKey;$vbPublicKey)
BLOB TO DOCUMENT("Update.txt";$vbEncrypted)
End if
End if
`Methode DECRYPT_INFO_2
C_BLOB($vbEncrypted;$vbPublicKey;$vbPrivateKey)
C_TEXT($vtDecrypted)
C_TIME($vhDocRef)
ALERT("Bitte das verschlüsselte Dokument wählen.")
$vhDocRef:=Open document("") `Wähle die Datei Update.txt
If(OK=1)
CLOSE DOCUMENT($vhDocRef)
DOCUMENT TO BLOB(Document;$vbEncrypted)
`Ihr eigener privater Schlüssel wird geladen
DOCUMENT TO BLOB("PrivateKey.txt";$vbPrivateKey)
If(OK=1)
` ...ebenso der öffentliche Schlüssel des Senders
ALERT("Bitte öffentlichen Schlüssel des Senders wählen")
$vhDocRef:=Open document("") `Zu ladender öffentlicher Schlüssel
If(OK=1)
CLOSE DOCUMENT($vhDocRef)
DOCUMENT TO BLOB(Document;$vbPublicKey)
`Das BLOB mit den beiden Schlüsseln als Parameter entschlüsseln
DECRYPT BLOB($vbEncrypted;$vbPublicKey;$vbPrivateKey)
BLOB TO VARIABLE($vbEncrypted;$vtDecrypted)
CREATE RECORD([Private])
[Private]Info:=$vtDecrypted
SAVE RECORD([Private])
End if
End if
End if
Produkt: 4D
Thema: BLOB
Nummer:
689
Erstellt: 4D v6.7
Encryption, Public Key, Private key, PKCS, Optimization
4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)