Citrix ADC

Komplexe Vorgänge auf Text

Zusätzlich zum einfachen Zeichenfolgenabgleich können Sie Ausdrücke konfigurieren, die Stringlänge und Textblock auf Muster und nicht auf bestimmte Zeichenfolgen untersuchen.

Beachten Sie Folgendes für jede textbasierte Operation:

  • Für jede Operation, die ein String-Argument verwendet, darf die Zeichenfolge 255 Zeichen nicht überschreiten.
  • Sie können Leerzeichen einschließen, wenn Sie eine Zeichenfolge in einem Ausdruck angeben.

Operationen an der Länge eines Strings

Die folgenden Vorgänge extrahieren Zeichenfolgen nach einer Zeichenanzahl.

Zeichenanzahl (Operation) Beschreibung
<text>.TRUNCATE(<count>) Gibt eine Zeichenfolge zurück, nachdem das Ende des Ziels um die Anzahl der Zeichen in abgeschnitten wurde<count>. Wenn die gesamte Zeichenfolge kürzer ist als<count>, wird nichts zurückgegeben.
<text>.TRUNCATE(<character>,<count>) Gibt eine Zeichenfolge zurück, nachdem der Text<character> um die in angegebene Anzahl von Zeichen abgeschnitten wurde<count> .
<text>.PREFIX(<character>,<count>) Wählt das längste Präfix im Ziel aus, das höchstens<count> Vorkommen von hat<character> .
<text>.SUFFIX(<character>,<count>) Wählt das längste Suffix im Ziel aus, das höchstens<count> Vorkommen von hat<character> . Betrachten Sie beispielsweise den folgenden Antworttext: JLeWx. Der folgende Ausdruck gibt den Wert “JLeWx” zurück: http.res.body (100) .suffix (‘L’,1) Der folgende Ausdruck gibt “lleWx” zurück: http.res.body (100) .suffix (‘L’,2)
<text>.SUBSTR(<starting_offset>, <length>) Wählen Sie eine Zeichenfolge mit der<length>Anzahl von Zeichen aus dem Zielobjekt aus. Beginnen Sie mit dem Extrahieren der Zeichenfolge nach dem<starting_offset>. Wenn die Anzahl der Zeichen nach dem Offset kleiner als der Wert des<length> Arguments ist, wählen Sie alle verbleibenden Zeichen aus.
<text>.SKIP(<character>, <count>) Wählen Sie eine Zeichenfolge aus dem Ziel aus, nachdem Sie das längste Präfix übersprungen haben, das höchstens<count> Vorkommen von hat<character> .

Operationen für einen Teil einer Zeichenfolge

Lesen Sie imTabelle Zeichenfolgenoperationen, um zu wissen, wie Sie eine Teilmenge einer größeren Zeichenfolge mithilfe einer der Operationen extrahieren.

Operationen zum Vergleich der alphanumerischen Reihenfolge zweier Strings

Der COMPARE-Vorgang untersucht das erste nicht übereinstimmende Zeichen zweier verschiedener Zeichenfolgen. Dieser Vorgang basiert auf der lexikographischen Reihenfolge, die beim Sortieren von Begriffen in Wörterbüchern verwendet wird.

Dieser Vorgang gibt die arithmetische Differenz zwischen den ASCII-Werten der ersten nicht übereinstimmenden Zeichen in den verglichen Zeichenfolgen zurück. Die folgenden Unterschiede sind Beispiele:

  • Der Unterschied zwischen “abc” und “und” ist -1 (basierend auf dem dritten paarweisen Zeichenvergleich).
  • Der Unterschied zwischen “@” und “abc” ist -33.
  • Der Unterschied zwischen “1” und “abc” ist -47.

Es folgt die Syntax für die COMPARE-Operation.

<text>.COMPARE(<string>)

Extrahieren einer Ganzzahl aus einer Zeichenfolge von Bytes, die Text darstellen

In erfahren Sie, wieInteger-ExtraktionstabelleSie eine Bytezeichenfolge behandeln, die Text als Bytefolge darstellen, 8 Bits, 16 Bits oder 32 Bits aus der Sequenz extrahieren und dann die extrahierten Bits in eine ganze Zahl konvertieren.

Konvertieren von Text in einen Hash-Wert

Sie können eine Textzeichenfolge mit der HASH -Funktion in einen Hash-Wert konvertieren. Diese Funktion gibt eine 31-Bit-positive Ganzzahl als Ergebnis der Operation. Es folgt das Format des Ausdrucks:

<text>.HASH

Diese Funktion ignoriert Groß- und Leerzeichen. Beispielsweise würden nach der Operation die beiden Zeichenfolgen Ab c und ein bc den gleichen Hash-Wert erzeugen.

Kodieren und Dekodieren von Text durch Anwendung des Base64-Codierungsalgorithmus

Die folgenden zwei Funktionen kodieren und dekodieren eine Textzeichenfolge durch Anwendung des Base64-Kodierungsalgorithmus

Funktion Beschreibung
text.B64ENCODE Codiert die Textzeichenfolge (durch Text gekennzeichnet), indem der Base64-Codierungsalgorithmus angewendet wird.
text.B64DECODE Dekodiert die Base64-codierte Zeichenfolge (durch Text gekennzeichnet) durch Anwendung des Base64-Dekodierungsalgorithmus. Der Vorgang löst einen UNDEF aus, wenn Text nicht im B64-kodierten Format vorliegt.

Verfeinern der Suche in einer Rewrite-Aktion mit der EXTEND- Funktion

Die EXTEND-Funktion wird bei Rewrite-Aktionen verwendet, die Muster oder Mustersätze angeben und auf die Körper von HTTP-Paketen abzielen. Wenn eine Musterübereinstimmung gefunden wird, erweitert die EXTEND-Funktion den Suchbereich um eine vordefinierte Anzahl von Bytes auf beiden Seiten der entsprechenden Zeichenfolge. Ein regulärer Ausdruck kann dann verwendet werden, um Übereinstimmungen in dieser erweiterten Region neu zu schreiben. Rewrite-Aktionen, die mit der EXTEND-Funktion konfiguriert sind, führen Umschreibaktionen schneller aus als Umschreibaktionen, die ganze HTTP-Körper nur mit regulären Ausdrücken auswerten.

Das Format der EXTEND-Funktion ist EXTEND (m, n), wobei m und n die Anzahl der Bytes sind, um die der Suchumfang vor und nach dem passenden Muster erweitert wird. Wenn eine Übereinstimmung gefunden wird, umfasst der neue Suchbereich m Bytes, die unmittelbar vor der übereinstimmenden Zeichenfolge stehen, die Zeichenfolge selbst und die n Bytes, die der Zeichenfolge folgen. Ein regulärer Ausdruck kann dann verwendet werden, um einen Teil dieser neuen Zeichenfolge neu zu schreiben.

Die Funktion EXTEND kann nur verwendet werden, wenn die Rewrite-Aktion, in der sie verwendet wird, folgende Anforderungen erfüllt:

  • Die Suche wird mit Mustern oder Mustersätzen durchgeführt (nicht reguläre Ausdrücke)
  • Die Aktion Umschreiben wertet nur die Körper von HTTP-Paketen aus.

Außerdem kann die EXTEND -Funktion nur mit den folgenden Arten von Rewrite-Aktionen verwendet werden:

  • replace_all
  • insert_after_all
  • delete_all
  • insert_before_all

Beispielsweise möchten Sie möglicherweise alle Instanzen von “” undhttp://exampleurl.com/http://exampleurl.au/” in den ersten 1000 Bytes des Hauptteils löschen. Dazu können Sie eine Umschreibungsaktion konfigurieren, um nach allen Instanzen der Zeichenfolge exampleurl zu suchen, den Suchbereich auf beiden Seiten der Zeichenfolge zu erweitern, wenn eine Übereinstimmung gefunden wird, und dann einen regulären Ausdruck verwenden, um das Umschreiben in der erweiterten Region durchzuführen. Im folgenden Beispiel wird der Suchbereich um 20 Bytes auf der linken Seite und 50 Bytes rechts neben der passenden Zeichenfolge erweitert:

add rewrite action delurl_example delete_all 'HTTP.REQ.BODY(1000)' -pattern exampleurl -refineSearch 'extend(20,50).regex_select(re#http://exampleurl.(com|au)#)'

Konvertieren von Text in Hexadezimalformat

Die folgende Funktion konvertiert Text in Hexadezimalformat und extrahiert die resultierende Zeichenfolge:

<text>.BLOB_TO_HEX(<string>)

Diese Funktion konvertiert beispielsweise die Bytezeichenfolge “abc” in “61:62:63 “.

Text verschlüsseln und entschlüsseln

In Standard-Syntaxausdrücken können Sie die Funktionen ENCRYPT und DECRYPT verwenden, um Text zu verschlüsseln und zu entschlüsseln. Daten, die mit der ENCRYPT-Funktion auf einer bestimmten Citrix ADC Appliance oder einem Hochverfügbarkeitspaar verschlüsselt werden, sind für die Entschlüsselung durch die DECRYPT-Funktion auf derselben Citrix ADC-Appliance oder einem HA-Paar vorgesehen. Die Appliance unterstützt die Verschlüsselungsmethoden RC4, DES3, AES128, AES192 und AES256. Der für die Verschlüsselung erforderliche Schlüsselwert ist nicht benutzerspezifisch. Wenn eine Verschlüsselungsmethode festgelegt ist, generiert die Appliance automatisch einen zufälligen Schlüsselwert, der für die angegebene Methode geeignet ist. Die Standardmethode ist die AES256-Verschlüsselung, die die sicherste und von Citrix empfohlene Verschlüsselungsmethode ist.

Sie müssen die Verschlüsselung nur konfigurieren, wenn Sie die Verschlüsselungsmethode ändern möchten oder dass die Appliance einen neuen Schlüsselwert für die aktuelle Verschlüsselungsmethode generiert.

Hinweis: Sie können auch XML-Nutzlasten verschlüsseln und entschlüsseln. Hinweise zu den Funktionen zum Verschlüsseln und Entschlüsseln von XML-Nutzlasten finden Sie unterXML-Nutzlasten verschlüsseln und entschlüsseln.

Verschlüsselung konfigurieren

Während des Startvorgangs führt die Appliance den Befehl set ns EncryptionParams mit standardmäßig der AES256-Verschlüsselungsmethode aus und verwendet einen zufällig generierten Schlüsselwert, der für die AES256-Verschlüsselung geeignet ist. Die Appliance verschlüsselt auch den Schlüsselwert und speichert den Befehl mit dem verschlüsselten Schlüsselwert in der Citrix ADC Konfigurationsdatei. Daher ist die AES256-Verschlüsselungsmethode standardmäßig für die Funktionen ENCRYPT und DECRYPT aktiviert. Der in der Konfigurationsdatei gespeicherte Schlüsselwert bleibt bei Neustarts bestehen, obwohl die Appliance den Befehl bei jedem Neustart ausführt.

Sie können den Befehl set ns EncryptionParams manuell ausführen oder das Konfigurationsdienstprogramm verwenden, wenn Sie die Verschlüsselungsmethode ändern möchten oder wenn die Appliance einen neuen Schlüsselwert für die aktuelle Verschlüsselungsmethode generieren soll. Wenn Sie die CLI verwenden, um die Verschlüsselungsmethode zu ändern, legen Sie nur den Methodenparameter fest, wie in Beispiel 1: Ändern der Verschlüsselungsmethode gezeigt. Wenn die Appliance einen neuen Schlüsselwert für die aktuelle Verschlüsselungsmethode generieren soll, legen Sie den Methodenparameter auf die aktuelle Verschlüsselungsmethode und den KeyValue-Parameter auf eine leere Zeichenfolge (“”) fest, wie in Beispiel 2: Generieren eines neuen Schlüsselwerts für die aktuelle Verschlüsselungsmethode gezeigt. Nachdem Sie einen neuen Schlüsselwert generiert haben, müssen Sie die Konfiguration speichern. Wenn Sie die Konfiguration nicht speichern, verwendet die Appliance den neu generierten Schlüsselwert nur bis zum nächsten Neustart. Danach wird der Schlüsselwert in der gespeicherten Konfiguration wiederhergestellt.

Konfigurieren der Verschlüsselung mit der GUI

  1. Navigieren Sie zu System > Einstellungen.
  2. Klicken Sie im Bereich Einstellungen auf Verschlüsselungsparameter ändern.
  3. Führen Sie im Dialogfeld Verschlüsselungsparameter ändern eine der folgenden Aktionen aus:
    • Um die Verschlüsselungsmethode zu ändern, wählen Sie in der Liste Methode die gewünschte Verschlüsselungsmethode aus.
    • Um einen neuen Schlüsselwert für die aktuelle Verschlüsselungsmethode zu generieren, klicken Sie auf Neuen Schlüssel für die ausgewählte Methode generieren.
  4. Klicken Sie auf OK.

Verwenden der Funktionen ENCRYPT und DECRYPT

Sie können die Funktionen ENCRYPT und DECRYPT mit jedem Ausdruckspräfix verwenden, das Text zurückgibt. Beispielsweise können Sie die Funktionen ENCRYPT und DECRYPT in Umschreibrichtlinien für die Cookie-Verschlüsselung verwenden. Im folgenden Beispiel verschlüsseln die Rewrite-Aktionen ein Cookie namens MyCookie, das von einem Back-End-Dienst gesetzt wird, und entschlüsseln dasselbe Cookie, wenn es von einem Client zurückgegeben wird:

add rewrite action my-cookie-encrypt-action replace "HTTP.RES.SET_COOKIE.COOKIE("MyCookie").VALUE(0)" "HTTP.RES.SET_COOKIE.COOKIE("MyCookie").VALUE(0).ENCRYPT" -bypassSafetyCheck YES

add rewrite action my-cookie-decrypt-action replace "HTTP.REQ.COOKIE.VALUE("MyCookie")" "HTTP.REQ.COOKIE.VALUE("MyCookie").DECRYPT" -bypassSafetyCheck YES

Nachdem Sie Richtlinien für die Verschlüsselung und Entschlüsselung konfiguriert haben, speichern Sie die Konfiguration, um die Richtlinien in Kraft zu setzen.

Konfigurieren des Verschlüsselungsschlüssels für die Verschlüsselung von Drittanbietern

In Standard-Syntaxausdrücken können Sie ENCRYPT- und DECRYPT-Funktionen zum Verschlüsseln und Entschlüsseln von Text in einer Anforderung oder Antwort verwenden. Die durch die ENCRYPT-Funktion auf einer Appliance verschlüsselten Daten (Standalone, Hochverfügbarkeit oder Cluster) sollen von der DECRYPT-Funktion von derselben Appliance entschlüsselt werden. Die Appliance unterstützt Verschlüsselungsmethoden RC4, DES, Triple-DES, AES92 und AES256. Jede dieser Methoden verwendet einen geheimen Schlüssel für die Verschlüsselung und Entschlüsselung von Daten. Sie können diese Methoden verwenden, um Daten auf zwei Arten zu verschlüsseln und zu entschlüsseln: Selbstverschlüsselung und Verschlüsselung von Drittanbietern.

Die Selbstverschlüsselungsfunktion in einer Appliance (Standalone, Hochverfügbarkeit oder Cluster) verschlüsselt und entschlüsselt Daten, indem der Header-Wert ausgewertet wird. Ein Beispiel, um dies zu verstehen, ist die HTTP-Cookie-Verschlüsselung. Der Ausdruck wertet den Header aus, verschlüsselt den HTTP-Cookie-Wert im Set-Cookie-Header in der ausgehenden Antwort und entschlüsselt dann den Cookie-Wert, wenn er im Cookie-Header einer nachfolgenden eingehenden Anforderung vom Client zurückgegeben wird. Der Schlüsselwert ist nicht vom Benutzer konfigurierbar. Stattdessen generiert die Appliance automatisch einen zufälligen Schlüsselwert für die konfigurierte Methode, wenn eine Verschlüsselungsmethode im Befehl set ns EncryptionParams konfiguriert ist. Standardmäßig verwendet der Befehl die AES256-Verschlüsselungsmethode, bei der es sich um die hochsichere Methode handelt, und Citrix empfiehlt diese Methode.

Die Verschlüsselungsfunktion von Drittanbietern verschlüsselt oder entschlüsselt Daten mit einer Drittanbieteranwendung. Beispielsweise kann ein Client Daten in einer Anforderung verschlüsseln, und die Appliance entschlüsselt die Daten vor dem Senden an den Back-End-Server oder umgekehrt. Dazu müssen die Appliance und die Drittanbieteranwendung einen geheimen Schlüssel gemeinsam nutzen. Auf der Appliance können Sie den geheimen Schlüssel direkt mit einem Verschlüsselungsschlüsselobjekt konfigurieren, und der Schlüsselwert wird automatisch von der Appliance für eine stärkere Verschlüsselung generiert. Derselbe Schlüssel wird auf der Drittanbieter-Appliance manuell konfiguriert, sodass sowohl die Appliance als auch die Drittanbieter-Anwendung denselben Schlüssel zum Verschlüsseln und Entschlüsseln von Daten verwenden können.

Hinweis: Mit der Verschlüsselung von Drittanbietern können Sie auch XML-Nutzlasten verschlüsseln und entschlüsseln. Informationen zu den Funktionen zum Verschlüsseln und Entschlüsseln von XML-Nutzlasten finden Sie unter XML-Nutzlasten verschlüsseln und entschlüsseln.

Chiffre Methoden

Eine Verschlüsselungsmethode bietet zwei Funktionen: eine Verschlüsselungsfunktion, die eine Klartext-Bytesequenz in eine Chiffretext-Bytesequenz umwandelt, und eine Entschlüsselungsfunktion, die den Chiffretext zurück in den Klartext umwandelt. Verschlüsselungsmethoden verwenden Bytesequenzen, die als Schlüssel bezeichnet werden, um Verschlüsselung und Entschlüsselung durchzuführen. Verschlüsselungsmethoden, die denselben Schlüssel für die Verschlüsselung und Entschlüsselung verwenden, werden symmetrisch bezeichnet. Verschlüsselungsmethoden, die verschiedene Schlüssel für die Verschlüsselung und Entschlüsselung verwenden, sind asymmetrisch. Die bemerkenswertesten Beispiele für asymmetrische Verschlüsselungen sind in der Kryptographie öffentlicher Schlüssel, die einen öffentlichen Schlüssel für die Verschlüsselung und einen privaten Schlüssel verwendet, der nur dem Entschlüsseler bekannt ist.

Eine gute Verschlüsselungsmethode macht es undurchführbar, Verschlüsselungstext zu entschlüsseln (knacken), wenn Sie den Schlüssel nicht besitzen. Undurchführbar bedeutet wirklich, dass das Knacken des Cyphertextes mehr Zeit und Rechenressourcen in Anspruch nehmen würde, als es wert ist. Wenn Computer leistungsfähiger und billiger werden, werden Chiffre, die früher nicht durchführbar waren, machbarer. Außerdem werden im Laufe der Zeit Fehler in Chiffrier-Methoden (oder deren Implementierungen) gefunden, was das Rissen erleichtert. Neuere Verschlüsselungsmethoden werden daher gegenüber älteren bevorzugt. Im Allgemeinen bieten Schlüssel mit längerer Länge bessere Sicherheit als kürzere Schlüssel, auf Kosten längerer Verschlüsselungs- und Entschlüsselungszeiten.

Eine Chiffremethode kann Streamchiffren oder Blockchiffren verwenden. RC4 ist die meist gesicherte Stream-Chiffre und es wird nur für Legacy-Anwendungen verwendet. Blockchiffren können Polsterung enthalten.

Stream-Chiffre

Eine Stream-Verschlüsselungsmethode arbeitet mit einzelnen Bytes. Auf Citrix ADC-Appliances ist nur eine Streamverschlüsselung verfügbar: RC4, die eine 128 Bit (16 Byte) Schlüssellänge verwendet. Für einen bestimmten Schlüssel erzeugt RC4 eine pseudo-zufällige Sequenz von Bytes, rufen Sie einen Keystream auf, der mit dem Klartext X-ored ist, um den Chiffretext zu erzeugen. RC4 gilt nicht mehr als sicher und sollte nur verwendet werden, wenn dies von Legacy-Anwendungen erforderlich ist.

Blockchiffren

Eine Blockchiffremethode arbeitet auf einem festen Block von Bytes. Eine Citrix ADC Appliance bietet zwei Blockchiffren: Data Encryption Standard (DES) und Advanced Encryption Standard (AES). DES verwendet eine Blockgröße von 8 Byte und (auf einer Citrix ADC Appliance) zwei Optionen für die Schlüssellänge: 64 Bit (8 Bytes), von denen 56 Bit Daten und 8 Bits Parität sind, und Triple-DES, eine Schlüssellänge von 192 Bit (24 Bytes). AES hat eine Blockgröße von 16 Bytes und (auf Citrix ADC) drei Optionen für die Schlüssellänge: 128 Bit (16 Bytes), 192 Bit (24 Bytes) und 256 Bit (32 Bytes).

Polsterung

Wenn der Klartext für eine Blockchiffre keine ganzheitliche Anzahl von Blöcken ist, ist möglicherweise ein Auffüllen mit mehr Bytes erforderlich. Angenommen, der Klartext ist “xyzzy” (hex 78797a7a79). Für einen 8-Byte-Dreifach-DES-Block müsste dieser Wert aufgefüllt werden, um 8 Bytes zu erstellen. Das Auffüllschema muss es der Entschlüsselungsfunktion ermöglichen, die Länge des ursprünglichen Klartextes nach der Entschlüsselung zu bestimmen. Im Folgenden sind einige Auffüllschemata derzeit verwendet (n ist die Anzahl der hinzugefügten Bytes):

  • PKCS7: Fügt n Byte Wert n hinzu. Beispiel: 78797a7a79030303. Dies ist das Auffüllschema, das von der Richtlinienfunktion OpenSSL und ENCRYPT () verwendet wird. Das PKCS5-Auffüllschema ist das gleiche wie PKCS7.
  • ANSI X.923: Fügt n-1 Nullbytes und ein letztes Byte des Wertes n hinzu. Beispiel: 78797a7a79000003.
  • ISO 10126: Fügt n-1 zufällige Bytes und ein letztes Byte des Wertes n hinzu. Zum Beispiel 78797a7a79xxxx03, wobei xx ein beliebiger Bytewert sein kann. Die Richtlinienfunktion DECRYPT () akzeptiert dieses Auffüllschema, wodurch auch die Schemata PKCS7 und ANSI X.923 akzeptiert werden können.
  • ISO/IEC 7816-4: Fügt ein 0x80-Byte und n-1-Byte hinzu. Beispiel: 78797a7a79800000. Dies wird auch OneAndZeros Padding aufgerufen.
  • Null: Fügt n Nullbytes hinzu. Beispiel: 78797a7a79000000. Dies kann nur mit Klartext verwendet werden, der keine NUL-Bytes enthält.

Wenn Padding verwendet wird und der Klartext eine ganze Anzahl von Blöcken ist, wird in der Regel ein zusätzlicher Block hinzugefügt, so dass die Entschlüsselungsfunktion eindeutig die ursprüngliche Nur-Text-Länge bestimmen kann. Für PCKS7 und 8-Byte-Block wäre dies 0808080808080808.

Betriebsarten

Es gibt eine Reihe von verschiedenen Betriebsmodi für Blockchiffren, die angeben, wie mehrere Klartextblöcke verschlüsselt werden. Einige Modi verwenden einen Initialisierungsvektor (IV), einen Datenblock mit Ausnahme des Klartextes, der zum Starten des Verschlüsselungsprozesses verwendet wird. Es empfiehlt sich, eine andere IV für jede Verschlüsselung zu verwenden, so dass derselbe Klartext unterschiedliche Chiffretext erzeugt. Die IV muss nicht geheim sein, und so wird dem Chiffretext vorangestellt. Folgende Modi sind verfügbar:

  • Electronic Codebook (ECB): Jeder Block von Klartext wird unabhängig verschlüsselt. Ein IV wird nicht verwendet. Padding ist erforderlich, wenn der Klartext kein Vielfaches der Chiffrier-Blockgröße ist. Der gleiche Klartext und der gleiche Schlüssel erzeugt immer den gleichen Chiffretext. Aus diesem Grund gilt die ECB als weniger sicher als andere Modi und sollte nur für ältere Anwendungen verwendet werden.
  • Cipher Block Chaining (CBC): Jeder Block von Klartext ist xOred mit dem vorherigen Chiffretextblock oder IV für den ersten Block, bevor er verschlüsselt wird. Padding ist erforderlich, wenn der Klartext kein Vielfaches der Chiffrier-Blockgröße ist. Dies ist der Modus, der mit der Citrix ADC EncryptionParams-Methode verwendet wird.
  • Cipher Feedback (CFB): Der vorherige Chiffretextblock oder der IV für den ersten Block wird verschlüsselt und die Ausgabe wird mit dem aktuellen Klartextblock xOred, um den aktuellen Chiffretextblock zu erstellen. Die Rückmeldung kann 1 Bit, 8 Bit oder 128 Bit sein. Da der Klartext xOred mit dem Verschlüsselungstext ist, ist kein Auffüllen erforderlich.
  • Output Feedback (OFB): Ein Keystream wird generiert, indem die Chiffre nacheinander auf die IV angewendet wird und die Keystream-Blöcke mit dem Klartext umgeht. Padding ist nicht erforderlich.

Konfigurieren von Verschlüsselungsschlüsseln für die Verschlüsselung von Drittanbietern

Im Folgenden sind die Konfigurationsaufgaben bei der Konfiguration des Verschlüsselungsschlüssels ausgeführt.

  1. Hinzufügen eines Verschlüsselungsschlüssels. Konfiguriert einen Verschlüsselungsschlüssel für eine angegebene Verschlüsselungsmethode mit einem angegebenen Schlüsselwert.
  2. Ändern eines Verschlüsselungsschlüssels. Sie können Parameter für einen konfigurierten Verschlüsselungsschlüssel bearbeiten.
  3. Das Setzen eines Verschlüsselungsschlüssels wird aufgehoben. Setzt Parameter für einen konfigurierten Verschlüsselungsschlüssel auf ihre Standardwerte. Ein EncryptionKey-Wert mit dem Namen muss vorhanden sein. Setzt Padding auf DEFAULT (bestimmt durch die Methode), Löscht eine vorhandene IV, wodurch ENCRYPT () eine zufällige IV generiert. Löscht einen vorhandenen Kommentar. Die Methode und der Schlüsselwert können nicht zurückgesetzt werden.
  4. Entfernen eines Verschlüsselungsschlüssels. Löscht einen konfigurierten Verschlüsselungsschlüssel. Der Schlüssel kann keine Referenzen haben.
  5. Zeigt einen Verschlüsselungsschlüssel an. Zeigt Parameter für den konfigurierten Verschlüsselungsschlüssel oder alle konfigurierten Schlüssel an. Wenn der Name weggelassen wird, wird der Schlüsselwert nicht angezeigt.

Hinzufügen eines Verschlüsselungsschlüssels mit der CLI

Geben Sie an der Eingabeaufforderung Folgendes ein:

add ns encryptionKey <name> -method <method> [-keyValue <keyvalue>][-padding (OFF | ON)] [-iv <hexstring>] -keyValue <keyvalue> [-comment <string>]

Hierbei gilt:

<method> = ( NONE | RC4 | DES3 | AES128 | AES192 | AES256 | DES | DES-CBC | DES-CFB | DES-OFB | DES-ECB | DES3-CBC | DES3-CFB | DES3-OFB | DES3-ECB | AES128-CBC | AES128-CFB | AES128-OFB | AES128-ECB | AES192-CBC | AES192-CFB | AES192-OFB | AES192-ECB | AES256-CBC | AES256-CFB | AES256-OFB | AES256-ECB ) <hexstring> = hex-encoded byte sequence

Die obigen Verschlüsselungsmethoden geben den Betriebsmodus mit CBC als Standardbetriebsmodus an. Daher sind die Methoden DES, DES2, AES128, AES192 und AES256 äquivalent zu den Methoden DES-CBC, DES3-CBC, AES128-CBC, AES192-CBC und AES256-CBC.

Ändern eines Verschlüsselungsschlüssels mit der CLI

Geben Sie an der Eingabeaufforderung Folgendes ein:

set ns encryptionKey <name> [-method <method>] [-keyValue <keyvalue>] [-padding ( OFF | ON )] [-iv <string>] [-comment <string>]

Heben Sie die Feststellung eines Verschlüsselungsschlüssels mit der CLI auf

Geben Sie an der Eingabeaufforderung Folgendes ein:

unset ns encryptionKey <name> [-padding] [-iv] [-comment]

Entfernen eines Verschlüsselungsschlüssels mit der CLI

Geben Sie an der Eingabeaufforderung Folgendes ein:

rm ns encryptionKey <name>

Anzeigen eines Verschlüsselungsschlüssels mit der CLI

Geben Sie an der Eingabeaufforderung Folgendes ein:

Beispiel:

show ns encryptionKey [<name>]

add ns encryptionKey my_key -method aes256 -keyValue 26ea5537b7e0746089476e5658f9327c0b10c3b4778c673a5b38cee182874711 –iv c2bf0b2e15c15004d6b14bcdc7e5e365
set ns encryptionKey my_key -keyValue b8742b163abcf62d639837bbee3cef9fb5842d82d00dfe6548831d2bd1d93476
unset ns encryptionKey my_key -iv
rm ns encryptionKey my_key
show ns encryptionKey my_key
Name: my_key
Method: AES256
Padding: DEFAULT
Key Value: (not disclosed)

Hinzufügen eines Verschlüsselungsschlüssels mit der GUI

Navigieren Sie zu System > Verschlüsselungsschlüssel, und klicken Sie auf Hinzufügen, um einen Verschlüsselungsschlüssel zu erstellen.

Ändern eines Verschlüsselungsschlüssels mit der GUI

Navigieren Sie zu System > Verschlüsselungsschlüssel, und klicken Sie auf Bearbeiten, um Parameter für einen konfigurierten Verschlüsselungsschlüssel zu ändern.

Entfernen eines Verschlüsselungsschlüssels mit der GUI

Navigieren Sie zu System > Verschlüsselungsschlüssel, und klicken Sie auf Löschen .

ENCRYPT- und DECRYPT-Funktionen für die Verschlüsselung von Drittanbietern

Im Folgenden ist die ENCRYPT-Funktion für die dritte Teil Verschlüsselung verwendet.

ENCRYPT (encryptionKey, out_encoding)

Hierbei gilt:

Eingabedaten für die Appliance sind der zu verschlüsselnde Text

EncryptionKey: Ein optionaler String-Parameter, der das konfigurierte Verschlüsselungsschlüsselobjekt angibt, um die Verschlüsselungsmethode, den Wert des geheimen Schlüssels und andere Verschlüsselungsparameter bereitzustellen. Wenn nicht angegeben, verwendet die Methode den automatisch generierten Schlüsselwert, der dem Befehl set ns EncryptionParams zugeordnet ist.

out_encoding: Dieser Wert gibt an, wie die Ausgabe codiert wird. Falls nicht angegeben, wird die BASE64-Codierung verwendet.

Eingabe:

BASE64: original PEM base64-encoding: 6 bits (0..63) encoded as one ASCII character:
                  0..23 = 'A'..'Z', 24..51 = 'a'..'z', 52..61 = '0'..'9', 62 = '+', 63 = '/', '=' = pad byte.
      BASE64URL:  URL and Filename safe base64-encoding: same as BASE64 except 62 = '-', 63 = '_'
      HEX_UPPER:  Hexadecimal with 0..9 = '0'..'9' and 10..15 = 'A'..'F'.
      HEX_LOWER:  Hexadecimal with 0..9 = '0'..'9' and 10..15 = 'a'..'f'.
      HEX_COLONS: Hexadecimal with 0..9 = '0'..'9' and 10..15 = 'A'..'F'; ':' between each hex byte. Matches BLOB_TO_HEX() output format
      HEX:  For input, accepts HEX_UPPER, HEX_LOWER, and HEX_COLONS format. For output, produces HEX_LOWER format

Ausgabe: Die Ausgabe ist ein Text, der mit der angegebenen Methode und Schlüssel verschlüsselt und mit einer angegebenen Ausgabecodierung codiert wird. Es fügt eine generierte IV vor dem verschlüsselten Text für Blockmethoden und -modi ein, für die ein IV erforderlich ist. Entweder ist für den EncryptionKey kein IV angegeben, oder der EncryptionKey wird weggelassen.

Im Folgenden ist die DECRYPT-Funktion für die dritte Teil Entschlüsselung verwendet.

DECRYPT(encryptionKey, in_encoding)

Hierbei gilt:

Eingabedaten sind ein verschlüsselter Text mit der angegebenen Methode und Schlüssel, der mit der angegebenen Eingabecodierung kodiert wird. Dieser Text wird voraussichtlich ein generiertes IV vor dem verschlüsselten Text für Blockmethoden und -modi enthalten, für die ein IV erforderlich ist. Entweder ist für den EncryptionKey kein IV angegeben, oder der EncryptionKey wird weggelassen.

encryptionKey — Ein optionaler String-Parameter, der das konfigurierte encryptionKey-Objekt angibt, um die Verschlüsselungsmethode, den geheimen Schlüssel und andere Verschlüsselungsparameter bereitzustellen. Wenn nicht angegeben, werden die Methode und der automatisch generierte Schlüssel verwendet, die der EncryptionParams-Einstellung zugeordnet sind.

in_encoding — Ein optionaler Enumerationsparameter, der angibt, wie die Eingabe kodiert werden soll. Die Werte sind die gleichen wie die out_encoding von ENCRYPT. Wenn nicht angegeben, wird die BASE64-Kodierung erwartet.

Bei den Ausgabedaten handelt es sich um einen nicht kodierten entschlüsselten Text.

Varianten und optionale Parameter

Im Folgenden sind die Varianten dieser Funktionen mit den optionalen Parametern:

Variante Beschreibung
ENCRYPT Verwenden Sie den Befehl encryptionParams und den Ausgabecodierungsparameter BASE64.
ENCRYPT(out_encoding) Verwenden Sie encryptionParams und den angegebenen Ausgabecodierungsparameter.
ENCRYPT(encryptionKey) Verwenden Sie den angegebenen encryptionKey und BASE64-Ausgabecodierungsparameter.
ENCRYPT(encryptionKey, out_encoding) Verwenden Sie den angegebenen encryptionKey und den Ausgabecodierungsparameter.
DECRYPT Verwenden Sie den Befehl encryptionParams und den Eingabecodierungsparameter BASE64.
DECRYPT(out_encoding) Verwenden Sie den Befehl encryptionParams und den angegebenen Eingabecodierungsparameter.
DECRYPT(encryptionKey) Verwenden Sie den angegebenen encryptionKey und BASE64-Eingabecodierungsparameter.
DECRYPT(encryptionKey, out_encoding) Verwenden Sie den angegebenen encryptionKey und den Eingabecodierungsparameter.

Konfigurieren von HMAC-Schlüsseln

Citrix ADC Appliances unterstützen eine HMAC-Funktion (Hashed Message Authentication Code), mit der eine Digest-Methode oder ein Hash von Eingabetext mithilfe eines geheimen Schlüssels berechnet wird, der zwischen einem Nachrichtensender und einem Nachrichtenempfänger geteilt wird. Die Digest-Methode (abgeleitet von einer RFC 2104-Technik) authentifiziert den Absender und überprüft, ob der Nachrichteninhalt nicht verändert wurde. Wenn ein Client beispielsweise eine Nachricht mit dem freigegebenen HMAC-Schlüssel an eine Citrix ADC Appliance sendet, verwenden erweiterte (PI) Richtlinienausdrücke die HMAC-Funktion, um den Hash-basierten Code für den ausgewählten Text zu berechnen. Wenn der Empfänger dann die Nachricht mit dem geheimen Schlüssel empfängt, berechnet er den HMAC neu, indem er ihn mit dem ursprünglichen HMAC vergleicht, um festzustellen, ob die Nachricht geändert wurde. Die HMAC-Funktion wird von eigenständigen Appliances und von Appliances in einer Hochverfügbarkeitskonfiguration oder in einem Cluster unterstützt. Die Verwendung ähnelt dem Konfigurieren eines Verschlüsselungsschlüssels.

Die Befehle add ns hmackey und set ns hmackey enthalten einen Parameter, der die Digest-Methode und den gemeinsam genutzten geheimen Schlüssel für die HMAC-Berechnung angibt.

Um einen HMAC-Schlüssel zu konfigurieren, müssen Sie Folgendes ausführen:

  1. Hinzufügen eines HMAC-Schlüssels. Konfiguriert einen HMAC-Schlüssel mit einem angegebenen Schlüsselwert.
  2. Ändern eines HMAC-Schlüssels. Ändert Parameter für einen konfigurierten HMAC-Schlüssel. Die Digest-Methode kann geändert werden, ohne den Schlüsselwert zu ändern, da die Schlüsselwertlänge nicht durch den Digest bestimmt wird. Es ist jedoch ratsam, beim Ändern des Digests einen neuen Schlüssel anzugeben.
  3. HMAC-Schlüssel aufheben. Setzt Parameter für einen konfigurierten HMAC-Schlüssel auf ihre Standardwerte. Ein HMacKey-Objekt mit dem Namen muss vorhanden sein. Der einzige Parameter, der aufgehoben werden kann, ist der Kommentar, der gelöscht wird.
  4. Entfernen eines HMAC-Schlüssels. Löscht einen konfigurierten Schlüssel. Der Schlüssel kann keine Referenzen haben.
  5. Zeigen Sie einen HMAC-Schlüssel an. Zeigt Parameter für den konfigurierten HMAC-AC-Key oder alle konfigurierten Schlüssel an. Wenn der Name weggelassen wird, wird der Schlüsselwert nicht angezeigt.

Konfigurieren eines eindeutigen und zufälligen HMAC-Schlüssels

Sie können automatisch einen eindeutigen HMAC-Schlüssel generieren. Wenn es sich bei der Appliance um eine Clusterkonfiguration handelt, wird der HMAC-Schlüssel zu Beginn des Prozesses generiert und an alle Knoten und Paketmodule verteilt. Dadurch wird sichergestellt, dass der HMAC-Schlüssel für alle Paketmodule und alle Knoten im Cluster identisch ist.

Geben Sie an der Eingabeaufforderung Folgendes ein:

add ns hmacKey <your_key> -digest <digest> -keyValue <keyvalue>

Beispiel:

add ns hmacKey <name> -digest sha1 -keyValue AUTO

Hierbei gilt:

  • Die Namenssyntax ist korrekt und dupliziert nicht den Namen eines vorhandenen Schlüssels.
  • Der “AUTO” KeyValue kann in den set-Befehlen verwendet werden, um neue Schlüssel für bestehende EncrytionKey und HMacKey Objekte zu generieren.

Hinweis:

Die automatische Schlüsselgenerierung ist nützlich, wenn die Citrix ADC Appliance Daten mit dem Schlüssel verschlüsselt und entschlüsselt oder einen HMAC-Schlüssel generiert und überprüft. Da der Schlüsselwert selbst bereits verschlüsselt ist, wenn er angezeigt wird, können Sie den generierten Schlüsselwert für die Verwendung durch andere Parteien nicht abrufen.

Beispiel:

add ns hmacKey my_hmac_key -digest sha1 -keyValue 0c753c6c5ef859189cacdf95b506d02c1797407d

Die obigen Verschlüsselungsmethoden geben den Betriebsmodus mit CBC als Standardbetriebsmodus an. Daher sind die Methoden DES, DES2, AES128, AES192 und AES256 äquivalent zu den Methoden DES-CBC, DES3-CBC, AES128-CBC, AES192-CBC und AES256-CBC.

Ändern eines HMAC-Schlüssels mit der CLI

Mit diesem Befehl werden die für einen HMAC-Schlüssel konfigurierten Parameter geändert. Sie können den Digest ändern, ohne den Schlüsselwert zu ändern, da die Länge des Schlüsselwerts nicht durch den Digest bestimmt wird. Es ist jedoch ratsam, beim Ändern des Digests einen neuen Schlüssel anzugeben. Geben Sie an der Eingabeaufforderung Folgendes ein:

set ns hmacKey <name> [-digst <digest>] [-keyValue <keyvalue>]
[-comment <string>]

HMAC-Schlüssel mit der CLI aufheben

Dieser Befehl legt Parameter fest, die für einen HMAC-Schlüssel mit ihren Standardwerten konfiguriert sind. Ein HMacKey-Objekt mit dem Namen muss vorhanden sein. Der einzige Parameter, den Sie deaktivieren können, ist die Kommentaroption, die gelöscht wird. Geben Sie an der Eingabeaufforderung Folgendes ein:

unset ns hmacKey <name> -comment

Entfernen eines HMAC-Schlüssels mit der CLI

Mit diesem Befehl wird der konfigurierte hmac Schlüssel gelöscht. Der Schlüssel kann keine Referenzen haben. Geben Sie an der Eingabeaufforderung Folgendes ein:

rm ns hmacKey <name>

Anzeigen eines HMAC-Schlüssels mit der CLI

Geben Sie an der Eingabeaufforderung Folgendes ein:

show ns encryptionKey [<name>]

add ns hmacKey my_hmac_key -digest sha1 -keyValue 0c753c6c5ef859189cacdf95b506d02c1797407d
set ns hmacKey my_hmac_key -keyValue f348c594341a840a1f641a1cf24aa24c15eb1317
rm ns hmacKey my_hmac_key
show ns hmacKey my_hmac_key
          Name: my_hmac_key
    Digest: SHA1
    Key Value: (not disclosed)