Citrix ADC

Opérations complexes sur le texte

En plus de la simple correspondance de chaînes, vous pouvez configurer des expressions qui examinent la longueur de chaîne et le bloc de texte pour des motifs plutôt que des chaînes spécifiques.

Soyez conscient des éléments suivants pour toute opération basée sur le texte :

  • Pour toute opération qui prend un argument de chaîne, la chaîne ne peut pas dépasser 255 caractères.
  • Vous pouvez inclure des espaces blancs lorsque vous spécifiez une chaîne dans une expression.

Opérations sur la longueur d’une chaîne

Les opérations suivantes extraient les chaînes par un nombre de caractères.

Opération de comptage de caractères Description
<text>.TRUNCATE(<count>) Renvoie une chaîne après avoir tronqué la fin de la cible par le nombre de caractères dans <count>. Si la chaîne entière est plus courte que,<count> rien n’est retourné.
<text>.TRUNCATE(<character>, <count>) Renvoie une chaîne après avoir tronqué le texte après <character> par le nombre de caractères spécifié dans <count>.
<text>.PREFIX(<character>, <count>) Sélectionne le préfixe le plus long de la cible qui a au plus d’occurrences <count> de <character>.
<text>.SUFFIX(<character>, <count>) Sélectionne le suffixe le plus long de la cible ayant au plus d’occurrences <count> de <character>. Par exemple, considérez le corps de réponse suivant : JLEwX. L’expression suivante renvoie une valeur de « jlewX » : http.res.body (100) .suffixe (‘L’,1) L’expression suivante renvoie « llewX » : http.res.body (100) .suffixe (‘L’,2)
<text>.SUBSTR(<starting_offset>, <length>) Sélectionnez une chaîne avec <length>le nombre de caractères dans l’objet cible. Commencez à extraire la chaîne après le <starting_offset>. Si le nombre de caractères après le décalage est inférieur à la valeur de l’argument <length>, sélectionnez tous les caractères restants.
<text>.SKIP(<character>, <count>) Sélectionnez une chaîne de la cible après avoir ignoré le préfixe le plus long ayant au plus d’occurrences <count> de <character>.

Opérations sur une partie d’une chaîne

Reportez-vousTable des opérations de chaîneà la pour savoir comment extraire un sous-ensemble d’une chaîne plus grande à l’aide de l’une des opérations.

Opérations de comparaison de l’ordre alphanumérique de deux chaînes

L’opération COMPARER examine le premier caractère non correspondant de deux chaînes différentes. Cette opération est basée sur l’ordre lexicographique, qui est la méthode utilisée pour commander des termes dans les dictionnaires.

Cette opération renvoie la différence arithmétique entre les valeurs ASCII des premiers caractères non correspondants dans les chaînes comparées. Les différences suivantes sont des exemples :

  • La différence entre « abc » et « et » est -1 (basée sur la troisième comparaison de caractères par paire).
  • La différence entre « @ » et « abc » est -33.
  • La différence entre « 1” et « abc » est -47.

Voici la syntaxe de l’opération COMPARER.

<text>.COMPARE(<string>)

Extraire un entier d’une chaîne d’octets représentant du texte

Reportez-vousTable d’extraction d’entiersà la pour savoir comment traiter une chaîne d’octets représentant du texte comme une séquence d’octets, extraire 8 bits, 16 bits ou 32 bits de la séquence, puis convertir les bits extraits en un entier.

Convertir le texte en une valeur de hachage

Vous pouvez convertir une chaîne de texte en une valeur de hachage à l’aide de la fonction HASH. Cette fonction renvoie un entier positif 31 bits à la suite de l’opération. Voici le format de l’expression :

<text>.HASH

Cette fonction ignore la casse et les espaces blancs. Par exemple, après l’opération, les deux chaînes Ab c et une bc produiraient la même valeur de hachage.

Encoder et décoder du texte en appliquant l’algorithme de codage Base64

Les deux fonctions suivantes encodent et décodent une chaîne de texte en appliquant l’algorithme de codage Base64

Fonction Description
text.B64ENCODE Encode la chaîne de texte (désignée par du texte) en appliquant l’algorithme de codage Base64.
text.B64DECODE Décode la chaîne codée Base64 (désignée par du texte) en appliquant l’algorithme de décodage Base64. L’opération déclenche un UNDEF si le texte n’est pas au format B64.

Affiner la recherche dans une action de réécriture à l’aide de la fonction Extend

La fonction Extend est utilisée dans les actions de réécriture qui spécifient des modèles ou des jeux de motifs et ciblent les corps des paquets HTTP. Lorsqu’une correspondance de motif est trouvée, la fonction Extend étend la portée de la recherche par un nombre prédéfini d’octets des deux côtés de la chaîne correspondante. Une expression régulière peut ensuite être utilisée pour effectuer une réécriture sur les correspondances dans cette région étendue. Les actions de réécriture configurées avec la fonction EXtend effectuent des réécritures plus rapides que les actions de réécriture qui évaluent des corps HTTP entiers en utilisant uniquement des expressions régulières.

Le format de la fonction EXTEND est EXTEND (m, n), où m et n sont le nombre d’octets par lesquels la portée de la recherche est étendue avant et après le modèle correspondant, respectivement. Lorsqu’une correspondance est trouvée, la nouvelle portée de recherche comprend m octets qui précèdent immédiatement la chaîne correspondante, la chaîne elle-même et les n octets qui suivent la chaîne. Une expression régulière peut ensuite être utilisée pour effectuer une réécriture sur une partie de cette nouvelle chaîne.

La fonction EXtend ne peut être utilisée que si l’action de réécriture dans laquelle elle est utilisée remplit les conditions suivantes :

  • La recherche est effectuée à l’aide de modèles ou de jeux de motifs (pas d’expressions régulières)
  • L’action de réécriture évalue uniquement les corps des paquets HTTP.

En outre, la fonction Extend ne peut être utilisée qu’avec les types d’actions de réécriture suivants :

  • remplacer_all
  • insert_after_all
  • delete_all
  • insert_before_all

Par exemple, vous pouvez supprimer toutes les instances de “http://exampleurl.com/” et “http://exampleurl.au/” dans les 1000 premiers octets du corps. Pour ce faire, vous pouvez configurer une action de réécriture pour rechercher toutes les instances de la chaîne exampleurl, étendre la portée de la recherche des deux côtés de la chaîne lorsqu’une correspondance est trouvée, puis utiliser une expression régulière pour effectuer la réécriture dans la région étendue. L’exemple suivant étend la portée de la recherche de 20 octets à gauche et de 50 octets à droite de la chaîne correspondante :

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

Convertir le texte au format hexadécimal

La fonction suivante convertit le texte au format hexadécimal et extrait la chaîne résultante :

<text>.BLOB_TO_HEX(<string>)

Par exemple, cette fonction convertit la chaîne d’octets « abc » en “61:62:63 « .

Chiffrer et déchiffrer le texte

Dans les expressions syntaxiques par défaut, vous pouvez utiliser les fonctions ENCRYPT et DECRYPT pour chiffrer et déchiffrer du texte. Les données chiffrées par la fonction ENCRYPT sur une appliance Citrix ADC ou une paire haute disponibilité (HA) donnée sont destinées à être déchiffrées par la fonction DECRYPT sur la même appliance Citrix ADC ou paire HA. L’appliance prend en charge les méthodes de chiffrement RC4, DES3, AES128, AES192 et AES256. La valeur de clé requise pour le chiffrement n’est pas spécifiée par l’utilisateur. Lorsqu’une méthode de chiffrement est définie, l’appliance génère automatiquement une valeur de clé aléatoire appropriée à la méthode spécifiée. La méthode par défaut est le chiffrement AES256, qui est la méthode de chiffrement la plus sécurisée et celle recommandée par Citrix.

Vous n’avez pas besoin de configurer le chiffrement sauf si vous souhaitez modifier la méthode de chiffrement ou si vous souhaitez que l’appliance génère une nouvelle valeur de clé pour la méthode de chiffrement actuelle.

Remarque : Vous pouvez également chiffrer et déchiffrer des charges utiles XML. Pour plus d’informations sur les fonctions de chiffrement et de décryptage des charges utiles XML, reportez-vous à la section Chiffrer et déchiffrer les charges utiles XML.

Configurer le chiffrement

Au démarrage, l’appliance exécute la commande set ns EncryptionParams avec, par défaut, la méthode de chiffrement AES256 et utilise une valeur de clé générée aléatoirement appropriée pour le chiffrement AES256. L’appliance chiffre également la valeur de clé et enregistre la commande, avec la valeur de clé chiffrée, dans le fichier de configuration Citrix ADC. Par conséquent, la méthode de chiffrement AES256 est activée pour les fonctions ENCRYPT et DECRYPT par défaut. La valeur de clé enregistrée dans le fichier de configuration persiste pendant les redémarrages même si l’appliance exécute la commande chaque fois que vous la redémarrez.

Vous pouvez exécuter manuellement la commande set ns EncryptionParams ou utiliser l’utilitaire de configuration si vous souhaitez modifier la méthode de chiffrement ou si vous souhaitez que l’appliance génère une nouvelle valeur de clé pour la méthode de chiffrement actuelle. Pour utiliser l’interface de ligne de commande pour modifier la méthode de chiffrement, définissez uniquement le paramètre de méthode, comme indiqué dans “Exemple 1 : Modification de la méthode de chiffrement.” Si vous souhaitez que l’appliance génère une nouvelle valeur de clé pour la méthode de chiffrement actuelle, définissez le paramètre de méthode sur la méthode de chiffrement actuelle et le paramètre KeyValue sur une chaîne vide (« »), comme indiqué dans “Exemple 2 : Génération d’une nouvelle valeur de clé pour la méthode de chiffrement actuelle.” Après avoir généré une nouvelle valeur de clé, vous devez enregistrer la configuration. Si vous n’enregistrez pas la configuration, l’appliance utilise la nouvelle valeur de clé uniquement jusqu’au prochain redémarrage, après quoi elle revient à la valeur de clé dans la configuration enregistrée.

Configurer le chiffrement à l’aide de l’interface graphique

  1. Accédez à Système > Paramètres.
  2. Dans la zone Paramètres, cliquez sur Modifier les paramètres de chiffrement .
  3. Dans la boîte de dialogue Modifier les paramètres de chiffrement, effectuez l’une des opérations suivantes :
    • Pour modifier la méthode de chiffrement, dans la liste Méthode, sélectionnez la méthode de chiffrement souhaitée.
    • Pour générer une nouvelle valeur de clé pour la méthode de chiffrement actuelle, cliquez sur Générer une nouvelle clé pour la méthode sélectionnée.
  4. Cliquez sur OK.

Utiliser les fonctions ENCRYPT et DECRYPT

Vous pouvez utiliser les fonctions ENCRYPT et DECRYPT avec n’importe quel préfixe d’expression qui renvoie du texte. Par exemple, vous pouvez utiliser les fonctions ENCRYPT et DECRYPT dans les stratégies de réécriture pour le chiffrement des cookies. Dans l’exemple suivant, les actions de réécriture cryptent un cookie nommé MyCookie, qui est défini par un service back-end, et décryptent le même cookie lorsqu’il est renvoyé par un client :

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

Après avoir configuré les stratégies de chiffrement et de déchiffrement, enregistrez la configuration pour appliquer les stratégies.

Configurer la clé de chiffrement pour le chiffrement tiers

Dans les expressions syntaxiques par défaut, vous pouvez utiliser les fonctions ENCRYPT et DECRYPT pour chiffrer et déchiffrer du texte dans une requête ou une réponse. Les données chiffrées par la fonction ENCRYPT sur une appliance (autonome, haute disponibilité ou cluster) doivent être déchiffrées par la fonction DECRYPT par la même appliance. L’appliance prend en charge les méthodes de chiffrement RC4, DES, Triple-DES, AES92 et AES256 et chacune de ces méthodes utilise une clé secrète pour le chiffrement et le déchiffrement des données. Vous pouvez utiliser l’une de ces méthodes pour chiffrer et déchiffrer les données de deux façons : l’auto-cryptage et le cryptage tiers.

La fonctionnalité d’auto-cryptage d’une appliance (autonome, haute disponibilité ou cluster) chiffre puis déchiffre les données en évaluant la valeur d’en-tête. Un exemple pour comprendre cela est le cryptage des cookies HTTP. L’expression évalue l’en-tête, chiffre la valeur du cookie HTTP dans l’en-tête Set-Cookie dans la réponse sortante, puis déchiffre la valeur du cookie lorsqu’elle est renvoyée dans l’en-tête du cookie d’une requête entrante ultérieure du client. La valeur de clé n’est pas configurable par l’utilisateur. Au lieu de cela, lorsqu’une méthode de chiffrement est configurée dans la commande set ns EncryptionParams, l’appliance génère automatiquement une valeur de clé aléatoire pour la méthode configurée. Par défaut, la commande utilise la méthode de chiffrement AES256, qui est la méthode hautement sécurisée, et Citrix recommande cette méthode.

La fonctionnalité de chiffrement tiers crypte ou déchiffre les données avec une application tierce. Par exemple, un client peut chiffrer des données dans une requête et l’appliance les déchiffre avant de les envoyer au serveur principal ou vice versa. Pour ce faire, l’appliance et l’application tierce doivent partager une clé secrète. Sur l’appliance, vous pouvez configurer directement la clé secrète à l’aide d’un objet clé de chiffrement et la valeur de clé est automatiquement générée par l’appliance pour un chiffrement plus solide. La même clé est configurée manuellement sur l’appliance tierce afin que l’appliance et l’application tierce puissent utiliser la même clé pour le chiffrement et le déchiffrement des données.

Remarque : En utilisant le cryptage tiers, vous pouvez également chiffrer et déchiffrer des charges utiles XML. Pour plus d’informations sur les fonctions de cryptage et de décryptage des charges utiles XML, reportez-vous à « Chiffrement et décryptage des charges utiles XML.

Méthodes de chiffrement

Une méthode de chiffrement fournit deux fonctions : une fonction de chiffrement qui transforme une séquence d’octets de texte brut en séquence d’octets de texte chiffré, et une fonction de déchiffrement qui transforme le texte chiffré en texte brut. Les méthodes de chiffrement utilisent des séquences d’octets appelées clés pour effectuer le chiffrement et le déchiffrement. Les méthodes de chiffrement qui utilisent la même clé pour le chiffrement et le déchiffrement sont appelées symétriques. Les méthodes de chiffrement qui utilisent différentes clés pour le chiffrement et le déchiffrement sont asymétriques. Les exemples les plus notables de chiffrement asymétriques sont la cryptographie à clé publique, qui utilise une clé publique accessible à tous pour le chiffrement et une clé privée connue uniquement du décrypteur.

Une bonne méthode de chiffrement rend impossible de déchiffrer (« crack ») le texte chiffré si vous ne possédez pas la clé. « Irréalisable » signifie vraiment que craquer le cyphertext prendrait plus de temps et de ressources informatiques que cela ne vaut la peine. À mesure que les ordinateurs deviennent plus puissants et moins chers, les chiffrements qui étaient auparavant impossibles à craquer deviennent plus réalisables. En outre, au fil du temps, des défauts sont trouvés dans les méthodes de chiffrement (ou leurs implémentations), rendant la fissuration plus facile. Les méthodes de chiffrement les plus récentes sont donc préférées aux méthodes plus anciennes. En général, les clés de longueur plus longue offrent une meilleure sécurité que les clés plus courtes, au prix de temps de chiffrement et de décryptage plus longs.

Une méthode de chiffrement peut utiliser des chiffrements de flux ou des chiffrements de blocs. RC4 est le chiffrement de flux principalement sécurisé et il est utilisé uniquement pour les applications héritées. Les chiffrements par blocs peuvent inclure un rembourrage.

Chiffrements de flux

Une méthode de chiffrement de flux fonctionne sur des octets individuels. Un seul chiffrement de flux est disponible sur les appliances Citrix ADC- : RC4, qui utilise une longueur de clé de 128 bits (16 octets). Pour une clé donnée, RC4 génère une séquence pseudo-aléatoire d’octets, appelez un flux de clés, qui est X-ored avec le texte brut pour produire le texte chiffré. Le RC4 n’est plus considéré comme sécurisé et ne doit être utilisé que si les applications existantes l’exigent.

Ciphers par blocs

Une méthode de chiffrement par blocs fonctionne sur un bloc fixe d’octets. Une appliance Citrix ADC fournit deux chiffrements par blocs : Data Encryption Standard (DES) et Advanced Encryption Standard (AES). DES utilise une taille de bloc de 8 octets et (sur une appliance Citrix ADC) deux choix pour la longueur de clé : 64 bits (8 octets), dont 56 bits sont des données et 8 bits sont la parité, et Triple-DES, une longueur de clé de 192 bits (24 octets). AES a une taille de bloc de 16 octets et (sur Citrix ADC) trois choix pour la longueur de clé : 128 bits (16 octets), 192 bits (24 octets) et 256 bits (32 octets).

Rembourrage

Si le texte brut d’un chiffrement de blocs n’est pas un nombre intégral de blocs, un remplissage avec plus d’octets peut être nécessaire. Par exemple, supposons que le texte brut est « xyzzy » (hex 78797a7a79). Pour un bloc Triple-DES de 8 octets, cette valeur devrait être complétée pour créer 8 octets. Le schéma de remplissage doit permettre à la fonction de déchiffrement de déterminer la longueur du texte brut original après le décryptage. Voici quelques schémas de remplissage actuellement en cours d’utilisation (n est le nombre d’octets ajoutés) :

  • PKCS7 : Ajoute n octets de valeur n chacun. Par exemple, 78797a7a79030303. Il s’agit du schéma de remplissage utilisé par OpenSSL et ENCRYPT () fonction de stratégie. Le schéma de remplissage PKCS5 est le même que PKCS7.
  • ANSI X.923 : Ajoute n-1 zéro octets et un octet final de valeur n. Par exemple, 78797a7a79000003.
  • ISO 10126 : Ajoute n-1 octets aléatoires et un octet final de valeur n. Par exemple, 78797a7a79xxxx03, où xx peut être n’importe quelle valeur d’octet. La fonction de stratégie DECRYPT () accepte ce schéma de remplissage, ce qui lui permet également d’accepter les schémas PKCS7 et ANSI X.923.
  • ISO/IEC 7816-4 : Ajoute un octet 0x80 et n-1 zéro octets. Par exemple, 78797a7a79800000. Ceci est également appelé rembourrage OneAndZeros.
  • Zéro : Ajoute n zéro octets. Exemple : 78797a7a79000000. Cela ne peut être utilisé qu’avec du texte brut qui n’inclut pas les octets NUL.

Si le remplissage est utilisé et que le texte brut est un nombre intégral de blocs, un bloc supplémentaire est généralement ajouté afin que la fonction de déchiffrement puisse déterminer sans ambiguïté la longueur du texte brut d’origine. Pour PCKS7 et bloc 8 octets, ce serait 0808080808080808.

Modes de fonctionnement

Il existe un certain nombre de modes de fonctionnement différents pour les chiffrements par blocs, qui spécifient comment plusieurs blocs de texte brut sont chiffrés. Certains modes utilisent un vecteur d’initialisation (IV), un bloc de données mis à part le texte brut utilisé pour démarrer le processus de chiffrement. Il est recommandé d’utiliser un IV différent pour chaque cryptage, de sorte que le même texte brut produise un texte chiffré différent. Le IV n’a pas besoin d’être secret, et il est donc préfixé au chiffrement. Les modes comprennent :

  • Livre électronique de codes (ECB) : chaque bloc de texte brut est crypté indépendamment. Un IV n’est pas utilisé. Un remplissage est requis si le texte brut n’est pas un multiple de la taille du bloc de chiffrement. Le même texte brut et la même clé produisent toujours le même texte chiffré. Pour cette raison, ECB est considéré comme moins sûre que les autres modes et ne devrait être utilisé que pour les applications héritées.
  • Cipher Block Chaining (CBC) : Chaque bloc de texte brut est rendu OU exclusif avec le bloc de texte chiffré précédent, ou l’IV pour le premier bloc, avant d’être chiffré. Un remplissage est requis si le texte brut n’est pas un multiple de la taille du bloc de chiffrement. Il s’agit du mode utilisé avec la méthode Citrix ADC EncryptionParams.
  • Cipher Feedback (CFB) : Le bloc de texte chiffré précédent, ou IV pour le premier bloc, est crypté et la sortie est rendu OU exclusif avec le bloc de texte brut courant pour créer le bloc de texte chiffré courant. La rétroaction peut être de 1 bit, 8 bits ou 128 bits. Puisque le texte brut est rendu OU exclusif avec le texte de chiffrement, le remplissage n’est pas requis.
  • Feedback (OFB) : Un flux de clés est généré en appliquant successivement le chiffrement au IV et xOring les blocs de flux de clés avec le texte brut. Le rembourrage n’est pas nécessaire.

Configurer les clés de chiffrement pour le chiffrement tiers

Voici les tâches de configuration effectuées dans la configuration de la clé de chiffrement.

  1. Ajout d’une clé de chiffrement. Configure une clé de chiffrement pour une méthode de chiffrement spécifiée avec une valeur de clé spécifiée.
  2. Modification d’une clé de chiffrement. Vous pouvez modifier les paramètres d’une clé de chiffrement configurée.
  3. Désinstallation d’une clé de chiffrement. Définit les paramètres d’une clé de chiffrement configurée sur leurs valeurs par défaut. Une valeur EncryptionKey portant le nom doit exister. Définit le remplissage sur DEFAULT (déterminé par la méthode), supprime un IV existant, ce qui provoque ENCRYPT () à générer un IV aléatoire. Supprime un commentaire existant. La méthode et la valeur de clé ne peuvent pas être réinitialisées.
  4. Suppression d’une clé de chiffrement. Supprime une clé de chiffrement configurée. La clé ne peut pas avoir de références.
  5. Afficher une clé de chiffrement. Affiche les paramètres de la clé de chiffrement configurée ou de toutes les clés configurées. Si le nom est omis, la valeur de clé n’est pas affichée.

Ajouter une clé de chiffrement à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

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

Où,

<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

Les méthodes de chiffrement ci-dessus spécifient le mode de fonctionnement avec CBC comme mode de fonctionnement par défaut. Par conséquent, les méthodes DES, DES2, AES128, AES192 et AES256 sont équivalentes aux méthodes DES-CBC, DES3-CBC, AES128-CBC, AES192-CBC et AES256-CBC.

Modifier une clé de chiffrement à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

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

Désactiver une clé de chiffrement à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

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

Supprimer une clé de chiffrement à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

rm ns encryptionKey <name>

Afficher une clé de chiffrement à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

Exemple :

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)

Ajouter une clé de chiffrement à l’aide de l’interface graphique

Accédez à Système > Clés de chiffrement et cliquez sur Ajouter pour créer une clé de chiffrement.

Modifier une clé de chiffrement à l’aide de l’interface graphique

Accédez à Système > Clés de chiffrement et cliquez sur Modifier pour modifier les paramètres d’une clé de chiffrement configurée.

Supprimer une clé de chiffrement à l’aide de l’interface graphique

Accédez à Système > Clés de chiffrement et cliquez sur Supprimer .

Fonctions ENCRYPT et DECRYPT pour le cryptage tiers

Voici la fonction ENCRYPT utilisée pour le cryptage tiers.

ENCRYPT (encryptionKey, out_encoding)

Où,

Les données d’entrée de l’appliance sont le texte à chiffrer

EncryptionKey : paramètre de chaîne facultatif qui spécifie l’objet clé de chiffrement configuré pour fournir la méthode de chiffrement, la valeur de clé secrète et d’autres paramètres de chiffrement. Si elle est omise, la méthode utilise la valeur de clé générée automatiquement associée à la commande set ns EncryptionParams.

out_encoding : Cette valeur spécifie comment la sortie est codée. En cas d’omission, l’encodage BASE64 est utilisé.

Entrée :

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

Sortie : La sortie est un texte chiffré à l’aide de la méthode et de la clé spécifiées et encodé à l’aide d’un encodage de sortie spécifié. Il insère un IV généré avant le texte chiffré pour les méthodes et les modes de bloc qui nécessitent un IV, et soit aucun IV n’est spécifié pour EncryptionKey, soit l’EncryptionKey est omis.

Voici la fonction DECRYPT utilisée pour le décryptage de la troisième partie.

DECRYPT(encryptionKey, in_encoding)

Où,

Les données d’entrée sont un texte chiffré utilisant la méthode spécifiée et la clé codée à l’aide de l’encodage d’entrée spécifié. Ce texte devrait inclure un IV généré avant le texte chiffré pour les méthodes et les modes de bloc qui nécessitent un IV, et aucun IV n’est spécifié pour EncryptionKey ou l’EncryptionKey est omis.

EncryptionKey—Paramètre de chaîne facultatif qui spécifie l’objet EncryptionKey configuré pour fournir la méthode de chiffrement, la clé secrète et d’autres paramètres de chiffrement. Si cette option est omise, la méthode et la clé générée automatiquement associée au paramètre EncryptionParams seront utilisées

in_encodage : paramètre d’énumération facultatif qui spécifie comment l’entrée doit être codée. Les valeurs sont les mêmes que le out_encoding de ENCRYPT. S’il est omis, l’encodage BASE64 sera attendu.

Les données de sortie sont un texte déchiffré non encodé.

Variantes et paramètres facultatifs

Voici les variantes de ces fonctions avec les paramètres optionnels :

Variante Description
ENCRYPT Utilisez la commande EncryptionParams et le paramètre de codage de sortie BASE64.
ENCRYPT (out_encoding) Utilisez EncryptionParams et le paramètre de codage de sortie spécifié.
ENCRYPT (EncryptionKey) Utilisez le paramètre de codage de sortie EncryptionKey et BASE64 spécifiés.
ENCRYPT (EncryptionKey, out_encoding) Utilisez le paramètre EncryptionKey et de codage de sortie spécifiés.
DECRYPT Utilisez la commande EncryptionParams et le paramètre d’encodage d’entrée BASE64.
DECRYPT (out_encoding) Utilisez la commande EncryptionParams et le paramètre d’encodage d’entrée spécifié.
DECRYPT (EncryptionKey) Utilisez le paramètre d’encodage d’entrée EncryptionKey et BASE64 spécifiés.
DECRYPT (EncryptionKey, out_encoding) Utilisez le paramètre EncryptionKey et d’encodage d’entrée spécifiés.

Configurer les clés HMAC

Les appliances Citrix ADC prennent en charge une fonction HMAC (Hashed Message Authentication Code) qui calcule une méthode de résumé ou un hachage de texte d’entrée à l’aide d’une clé secrète partagée entre un expéditeur et un récepteur de message. La méthode de résumé (dérivée d’une technique RFC 2104) authentifie l’expéditeur et vérifie que le contenu du message n’a pas été modifié. Par exemple, lorsqu’un client envoie un message avec la clé HMAC partagée à une appliance Citrix ADC, les expressions de stratégie avancées (PI) utilisent la fonction HMAC pour calculer le code basé sur le hachage sur le texte sélectionné. Ensuite, lorsque le récepteur reçoit le message avec la clé secrète, il recalcule le HMAC en le comparant avec le HMAC d’origine pour déterminer si le message a été modifié. La fonction HMAC est prise en charge par des appliances autonomes et par des appliances dans une configuration haute disponibilité ou dans un cluster. L’utiliser est similaire à la configuration d’une clé de chiffrement.

Les commandes add ns hmackey et set ns hmackey incluent un paramètre qui spécifie la méthode digest et la clé secrète partagée à utiliser pour le calcul HMAC.

Pour configurer une clé HMAC, vous devez effectuer les opérations suivantes :

  1. Ajout d’une clé HMAC. Configure une clé HMAC avec une valeur de clé spécifiée.
  2. Modification d’une clé HMAC. Modifie les paramètres d’une clé HMAC configurée. La méthode de résumé peut être modifiée sans changer la valeur de clé, car la longueur de la valeur de clé n’est pas déterminée par le résumé. Cependant, il est conseillé de spécifier une nouvelle clé lors du changement du résumé.
  3. Désinstallation d’une clé HMAC. Définit les paramètres d’une clé HMAC configurée sur leurs valeurs par défaut. Un objet HMacKey portant le nom doit exister. Le seul paramètre qui peut être désactivé est le commentaire, qui est supprimé.
  4. Suppression d’une clé HMAC. Supprime une clé configurée. La clé ne peut pas avoir de références.
  5. Afficher une clé HMAC. Affiche les paramètres de la clé AC HMAC configurée ou de toutes les clés configurées. Si le nom est omis, la valeur de clé n’est pas affichée.

Configurer une clé HMAC unique et aléatoire

Vous pouvez générer automatiquement une clé HMAC unique. Si votre appliance est une configuration de cluster, la clé HMAC est générée au début du processus et distribuée à tous les nœuds et moteurs de paquets. Cela garantit que la clé HMAC est identique pour tous les moteurs de paquets et tous les nœuds du cluster.

À l’invite de commandes, tapez :

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

Exemple :

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

Où,

  • La syntaxe du nom est correcte et ne duplique pas le nom d’une clé existante.
  • La valeur KeyValue « AUTO » peut être utilisée dans les commandes set pour générer de nouvelles clés pour les objets EncrytionKey et HMacKey existants.

Remarque :

La génération automatique de clés est utile si l’appliance Citrix ADC crypte et décrypte des données avec la clé, ou génère et vérifie une clé HMAC. Étant donné que la valeur de clé elle-même est déjà chiffrée lorsqu’elle est affichée, vous ne pouvez pas récupérer la valeur de clé générée pour une utilisation par une autre partie.

Exemple :

add ns hmacKey my_hmac_key -digest sha1 -keyValue 0c753c6c5ef859189cacdf95b506d02c1797407d

Les méthodes de chiffrement ci-dessus spécifient le mode de fonctionnement avec CBC comme mode de fonctionnement par défaut. Par conséquent, les méthodes DES, DES2, AES128, AES192 et AES256 sont équivalentes aux méthodes DES-CBC, DES3-CBC, AES128-CBC, AES192-CBC et AES256-CBC.

Modifier une clé HMAC à l’aide de l’interface de ligne de commande

Cette commande modifie les paramètres configurés pour une clé HMAC. Vous pouvez modifier le résumé sans changer la valeur de la clé, car la longueur de la valeur de la clé n’est pas déterminée par le résumé. Cependant, il est conseillé de spécifier une nouvelle clé lors du changement du résumé. À l’invite de commandes, tapez :

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

Désinstaller une clé HMAC à l’aide de l’interface de ligne de commande

Cette commande définit les paramètres configurés pour une clé HMAC avec leurs valeurs par défaut. Un objet HMacKey portant le nom doit exister. Le seul paramètre que vous pouvez annuler est l’option commentaire, qui est supprimée. À l’invite de commandes, tapez :

unset ns hmacKey <name> -comment

Supprimer une clé HMAC à l’aide de l’interface de ligne de commande

Cette commande supprime la clé hmac configurée. La clé ne peut pas avoir de références. À l’invite de commandes, tapez :

rm ns hmacKey <name>

Afficher une clé HMAC à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

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)