ENCRYPT BLOB

4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 6.7


ENCRYPT BLOB (ZuVerschlüsseln; SendePrivKey{; EmpfPubKey})

ParameterTypBeschreibung
ZuVerschlüsselnBLOBDaten zum Verschlüsseln
Verschlüsselte Daten
SendePrivKeyBLOBPrivater Schlüssel des Senders
EmpfPubKeyBLOBÖffentlicher Schlüssel des Empfängers

Beschreibung

Der Befehl ENCRYPT BLOB erschlü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 unter dem Thema "Gesichertes Protokoll".

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 "Sichere Verbindungen".

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.

Verschlüsselungsbefehle optimieren

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.

Beispiele

Einen Schlüssel verwenden

ine 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 öffetliche Schlüssel nicht paßt.

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

Referenz

DECRYPT BLOB, GENERATE ENCRYPTION KEYPAIR.


4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next