4D v14.3

ENCRYPT BLOB

Home

 
4D v14.3
ENCRYPT BLOB

ENCRYPT BLOB 


 

ENCRYPT BLOB ( ZuVerschlüsseln ; SendePrivKey {; EmpfPubKey} ) 
Parameter Typ   Beschreibung
ZuVerschlüsseln  BLOB in Daten zum Verschlüsseln
in Verschlüsselte Daten
SendePrivKey  BLOB in Privater Schlüssel des Senders
EmpfPubKey  BLOB in Ö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 SSL Protokoll.

  • Wird nur ein Schlüssel (der private Schlüssel des Senders) für die Verschlüsselung verwendet, können Personen, denen der öffentliche Schlüssel bekannt ist, die Information lesen. Dieses System garantiert nur, dass der Sender selbst die Information verschlüsselt hat.
  • Der simultane Gebrauch des privaten Schlüssels vom Sender und des öffentlichen Schlüssels vom Empfänger garantiert, dass nur der Empfänger die Information lesen kann.

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”:

Hinweis: Der Befehl verwendet eine Prüfsumme, um jegliche Anderung (bewusst oder unbewusst) des BLOB Inhalts zu verhindern. Von daher sollten Sie ein verschlüsseltes BLOB nicht verändern, es könnte dann möglicherweise nicht entschlüsselbar sein.

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:

  • Der Befehl wird, je nach dem aktuell verfügbaren Speicher, synchron oder asynchron ausgeführt.
    Der asynchrone Modus ist schneller, da er die anderen Prozesse nicht einfriert. Dieser Modus wird automatisch verwendet, wenn der verfügbare Speicherplatz mindestens doppelt so hoch ist wie die zu verschlüsselnden Daten.
    Sonst wird zur Sicherheit der synchrone Modus verwendet. Er ist langsamer, da der die anderen Prozesse einfriert.
  • Bei umfangreichen BLOBs können Sie nur einen kleinen strategisch wichtigen Teil des BLOB verschlüsseln. Das verringert die Prozesszeit und die Größe der zu bearbeitenden Daten.

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:

  • Der berechtigte Empfänger soll die Meldung nur lesen können,
  • Der Empfänger muss einen Beweis erhalten, dass der Sender selbst die Meldung gesendet hat.
1) Die Mutterfirma und jede Niederlassung generieren über die Methode GENERATE_KEYS_TXT ihre eigenen Schlüsselpaare.

2) Der private Schlüssel wird von beiden Seiten geheimgehalten. Die Mutterfirma und jede Niederlassung senden sich gegenseitig jeweils die öffentlichen Schüssel. Sie müssen nicht über einen gesicherten Kanal gesendet werden, da der öffentliche Schlüssel nicht zum Entschlüsseln ausreicht.

3) Um eine zu sendende Information zu verschlüsseln, führt die Niederlassung bzw. Mutterfirma die Methode ENCRYPT_INFO_2 aus. Diese verwendet zum Verschlüsseln den privaten Schlüssel des Senders und den öffentlichen Schlüssel des Empfängers:
  `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

4) Die verschlüsselte Datei kann nun via Internet an den Empfänger gesendet werden. Eine dritte Person kann die verschlüsselte Meldung nicht entschlüsseln, selbst wenn sie die öffentlichen Schlüssel des Absenders kennt. Zum Entschlüsseln ist nämlich auch der private Schlüssel des Empfängers notwendig.

5) Jeder Empfänger kann das Dokument mit dem eigenen privaten und dem öffentlichen Schlüssel des Senders entschlüsseln:
  `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

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: BLOB
Nummer: 689

 
GESCHICHTE 

Erstellt: 4D v6.7

 
SIEHE AUCH 

DECRYPT BLOB
GENERATE ENCRYPTION KEYPAIR

 
SCHLÜSSELWÖRTER 

Encryption, Public Key, Private key, PKCS, Optimization

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v11 SQL Release 6)
4D Programmiersprache ( 4D v12.4)
4D Programmiersprache ( 4D v14 R2)
4D Programmiersprache ( 4D v14 R3)
4D Programmiersprache ( 4D v13.5)
4D Programmiersprache ( 4D v14.3)
4D Programmiersprache ( 4D v14 R4)