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 des chaînes et les blocs de texte à la recherche de motifs plutôt que de chaînes spécifiques.

Pour toute opération basée sur du texte, prenez en compte les points suivants :

  • 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 en fonction du nombre de caractères.

Opération de nombre de caractères Description
<text>.TRUNCATE(<count>) Renvoie une chaîne après avoir tronqué la fin de la cible du nombre de caractères dans <count>. Si la chaîne entière est plus courte que <count>, rien n’est renvoyé.
<text>.TRUNCATE(<character>, <count>) Renvoie une chaîne après avoir tronqué le texte après <character> du nombre de caractères spécifié dans <count>.
<text>.PREFIX(<character>, <count>) Sélectionne le préfixe le plus long de la cible dont le nombre d’ <count> occurrences est le plus long <character>.
<text>.SUFFIX(<character>, <count>) Sélectionne le suffixe le plus long de la cible dont le nombre d’ <count> occurrences est le plus long <character>. Par exemple, considérez le corps de réponse suivant : peninsula. L’expression suivante renvoie la valeur de sula: http.res.body(100).suffix('n',0). L’expression suivante renvoie insula: http.res.body(100).suffix('n',1). L’expression suivante renvoie la valeur de peninsula: http.res.body(100).suffix('n',2). L’expression suivante renvoie la valeur de peninsula: http.res.body(100).suffix('n',3).
<text>.SUBSTR(<starting_offset>, <length>) Sélectionnez une chaîne contenant <length>le nombre de caractères de 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 dans la cible après avoir ignoré le préfixe le plus long qui a au moins <count> occurrences de <character>.

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

Reportez-vous à la table Opérations de chaîne 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 COMPARE examine le premier caractère non concordant de deux chaînes différentes. Cette opération est basée sur l’ordre lexicographique, qui est la méthode utilisée pour trier les termes dans les dictionnaires.

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

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

Voici la syntaxe de l’opération COMPARE.

<text>.COMPARE(<string>)

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

Reportez-vous à la table d’extraction Integer 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 entier.

Convertir le texte en une valeur de hachage

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

<text>.HASH

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

Encodez et décodez 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 texte) en appliquant l’algorithme de codage Base64.
text.B64DECODE Décode la chaîne codée en 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.

Affinez 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 motifs ou des jeux de motifs et ciblent le corps des paquets HTTP. Lorsqu’une correspondance de motif est trouvée, la fonction EXTEND étend la portée de la recherche d’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 rapidement que les actions de réécriture qui évaluent des corps HTTP entiers à l’aide d’expressions régulières uniquement.

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 motif 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 motifs ou de jeux de motifs (et non d’expressions régulières)
  • L’action de réécriture évalue uniquement le corps des paquets HTTP.

De plus, la fonction EXTEND ne peut être utilisée qu’avec les types d’actions de réécriture suivants :

  • replace_all
  • insert_after_all
  • delete_all
  • insert_before_all

Par exemple, vous voudrez peut-être 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 du 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 ».

Crypter et déchiffrer du texte

Dans les expressions de syntaxe 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 au déchiffrement par la fonction DECRYPT sur la même appliance Citrix ADC ou la même paire HA. L’appliance prend en charge les méthodes de cryptage RC4, DES3, AES128, AES192 et AES256. La valeur de clé requise pour le chiffrement n’est pas spécifiable par l’utilisateur. Lorsqu’une méthode de chiffrement est définie, l’appliance génère automatiquement une valeur de clé aléatoire adaptée à la méthode spécifiée. La méthode par défaut est le chiffrement AES256, qui est la méthode de cryptage 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échiffrement des charges utiles XML, consultez Chiffrement et déchiffrement des 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 cryptage AES256, et utilise une valeur de clé générée aléatoirement qui convient au chiffrement AES256. L’appliance chiffre également la valeur de la clé et enregistre la commande, avec la valeur de la clé chiffrée, dans le fichier de configuration Citrix ADC. Par conséquent, la méthode de cryptage AES256 est activée par défaut pour les fonctions ENCRYPT et DECRYPT. La valeur de clé enregistrée dans le fichier de configuration persiste lors des redémarrages, même si l’appliance exécute la commande chaque fois que vous la redémarrez.

Vous pouvez exécuter la commande set ns EncryptionParams manuellement 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 valeur de clé nouvellement générée 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.

Utilisez 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 CRYPTER et DECRYPT dans les stratégies de réécriture pour le chiffrement des cookie. Dans l’exemple suivant, les actions de réécriture chiffrent un cookie nommé MyCookie, qui est défini par un service principal, 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
<!--NeedCopy-->

Après avoir configuré les stratégies de chiffrement et de déchiffrement, enregistrez la configuration pour que les stratégies entrent en vigueur.

Configuration de la clé de chiffrement pour le chiffrement

Dans les expressions de syntaxe par défaut, vous pouvez utiliser les fonctions ENCRYPT et DECRYPT pour chiffrer et déchiffrer le texte d’une demande ou d’une réponse. Les données chiffrées par la fonction ENCRYPT sur une appliance (autonome, haute disponibilité ou cluster) sont destinées à être déchiffrées par la fonction DECRYPT par la même appliance. L’appliance prend en charge les méthodes de cryptage 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 manières : l’autochiffrement et le cryptage tiers.

La fonctionnalité d’auto-chiffrement d’une appliance (autonome, haute disponibilité ou cluster) chiffre puis déchiffre les données en évaluant la valeur de l’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 demande entrante ultérieure du client. La valeur de la clé n’est pas configurable par l’utilisateur. En revanche, 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 cryptage AES256, qui est la méthode hautement sécurisée, et Citrix recommande cette méthode.

La fonctionnalité de chiffrement tiers chiffre ou déchiffre les données avec une application tierce. Par exemple, un client peut chiffrer les données d’une demande et l’appliance déchiffre les données 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 de clé de chiffrement et la valeur de clé est automatiquement générée par l’appliance pour un chiffrement renforcé. 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 chiffrer et déchiffrer les données.

Remarque : En utilisant le chiffrement tiers, vous pouvez également chiffrer et déchiffrer les charges utiles XML. Pour plus d’informations sur les fonctions de chiffrement et de déchiffrement des charges utiles XML, reportez-vous à la section « Cryptage et déchiffrement des charges de traitement 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 une 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 des clés différentes pour le chiffrement et le déchiffrement sont asymétriques. Les exemples les plus notables de chiffrement asymétrique se trouvent dans 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 le déchiffrement (« craquer ») du texte chiffré si vous ne possédez pas la clé. « Infaisable » signifie vraiment que le déchiffrement du texte chiffré prendrait plus de temps et de ressources informatiques qu’il n’en vaut la peine. À mesure que les ordinateurs deviennent plus puissants et moins chers, les chiffrements qui étaient auparavant impossibles à déchiffrer deviennent de plus en plus réalisables. De plus, au fil du temps, des failles se retrouvent dans les méthodes de chiffrement (ou dans leurs implémentations), ce qui facilite le craquage. Les méthodes de chiffrement plus récentes sont donc préférées aux anciennes. En général, les clés de plus grande longueur offrent une meilleure sécurité que les clés plus courtes, au prix de temps de chiffrement et de déchiffrement plus longs.

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

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, appelle un flux de clés, qui est oré X avec le texte brut pour produire le texte chiffré. RC4 n’est plus considéré comme sécurisé et ne doit être utilisé que si les applications héritées l’exigent.

Chiffrements par blocs

Une méthode de chiffrement par blocs fonctionne sur un bloc d’octets fixe. 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 de longueur de clé : 64 bits (8 octets), dont 56 bits de données et 8 bits de 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 de longueur de clé : 128 bits (16 octets), 192 bits (24 octets) et 256 bits (32 octets).

Remplissage

Si le texte brut d’un chiffrement par blocs n’est pas un nombre entier de blocs, un remplissage avec plus d’octets peut être nécessaire. Par exemple, supposons que le texte en clair soit « xyzzy » (hexadécimal 78797a7a79). Pour un bloc Triple-DES de 8 octets, cette valeur doit ê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échiffrement. Voici quelques schémas de remplissage actuellement utilisés (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 la fonction de stratégie ENCRYPT(). Le schéma de remplissage PKCS5 est le même que celui de PKCS7.
  • ANSI X.923 : Ajoute n-1 zéro octet 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 octet. Par exemple, 78797a7a79800000. C’est aussi ce que l’on appelle le padding OneAndZeros.
  • Zéro : ajoute n zéro octet. Exemple : 78797a7a79000000. Cette option ne peut être utilisée qu’avec du texte brut qui n’inclut pas d’octets NUL.

Si le remplissage est utilisé et que le texte en clair est un nombre entier 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 de 8 octets, il s’agirait de 0808080808080808.

Modes de fonctionnement

Il existe différents modes de fonctionnement 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 en dehors du texte brut utilisé pour démarrer le processus de chiffrement. Il est recommandé d’utiliser un IV différent pour chaque cryptage, de sorte qu’un même texte en clair produise un texte chiffré différent. Le IV n’a pas besoin d’être secret, c’est pourquoi il est ajouté au texte chiffré. Les modes incluent :

  • Electronic Codebook (ECB) : Chaque bloc de texte en clair est crypté indépendamment. Aucun IV n’est utilisé. Le remplissage est requis si le texte en clair 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écurisé que les autres modes et ne doit être utilisé que pour les applications héritées.
  • Cipher Block Chaining (CBC) : Chaque bloc de texte brut est codé avec le bloc de texte chiffré précédent, ou l’IV du premier bloc, avant d’être chiffré. Le remplissage est requis si le texte en clair 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.
  • Retour de chiffrement (CFB) : Le bloc de texte chiffré précédent, ou l’IV du premier bloc, est chiffré et la sortie est codée avec le bloc de texte brut actuel pour créer le bloc de texte chiffré actuel. La rétroaction peut être de 1 bit, 8 bits ou 128 bits. Comme le texte en clair est codé avec le texte chiffré, le remplissage n’est pas nécessaire.
  • Output Feedback (OFB) : Un flux de clés est généré en appliquant le chiffrement successivement au IV et en codant les blocs de flux de clés avec le texte brut. Le remplissage n’est pas nécessaire.

Configuration des clés de chiffrement pour le chiffrement tiers

Voici les tâches de configuration effectuées lors de 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 la génération d’une IV aléatoire par ENCRYPT (). Supprime un commentaire existant. La méthode et la valeur de la 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 comporter de référence.
  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 la 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
<!--NeedCopy-->

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ésinstaller 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)
<!--NeedCopy-->

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

Accédez à Système > Clés de chiffrement, puis 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, puis 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, puis cliquez sur Supprimer.

Fonctions ENCRYPT et DECRYPT pour le chiffrement tiers

Voici la fonction ENCRYPT utilisée pour le chiffrement 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 la clé secrète et d’autres paramètres de chiffrement. Si elle n’est pas spécifiée, 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 le mode de codage de la sortie. S’il n’est pas spécifié, le codage 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
<!--NeedCopy-->

Sortie : La sortie est un texte chiffré à l’aide de la méthode et de la clé spécifiées et codé à l’aide d’un codage de sortie spécifié. Il insère une IV générée avant le texte chiffré pour les méthodes de bloc et les modes nécessitant une IV, et soit aucune IV n’est spécifiée pour la clé de chiffrement, soit la clé de chiffrement est omise.

Voici la fonction DECRYPT utilisée pour le déchiffrement tiers.

DECRYPT(encryptionKey, in_encoding)

Où,

Les données d’entrée sont un texte chiffré à l’aide de la méthode spécifiée et une clé codée à l’aide du codage d’entrée spécifié. Ce texte est censé inclure une IV générée avant le texte chiffré pour les méthodes et modes de blocs qui nécessitent une IV, et soit aucune IV n’est spécifiée pour la clé de chiffrement, soit la clé de chiffrement est omise.

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. En cas d’omission, la méthode et la clé générée automatiquement associées au paramètre EncryptionParams seront utilisées

IN_ENCODING : paramètre d’énumération facultatif qui spécifie comment l’entrée doit être codée. Les valeurs sont les mêmes que l’encodage sortant de ENCRYPT. S’il n’est pas spécifié, le codage BASE64 est attendu.

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

Variantes et paramètres facultatifs

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

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 les paramètres de codage de sortie EncryptionKey et BASE64 spécifiés.
ENCRYPT(encryptionKey, out_encoding) Utilisez la clé de chiffrement et le paramètre de codage de sortie spécifiés.
DECRYPT Utilisez la commande EncryptionParams et le paramètre de codage d’entrée BASE64.
DECRYPT(out_encoding) Utilisez la commande EncryptionParams et le paramètre de codage d’entrée spécifié.
DECRYPT(encryptionKey) Utilisez les paramètres de codage d’entrée EncryptionKey et BASE64 spécifiés.
DECRYPT(encryptionKey, out_encoding) Utilisez la clé de chiffrement et le paramètre de codage 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 du texte d’entrée à l’aide d’une clé secrète partagée entre l’expéditeur et le destinataire du 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ée (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 au HMAC d’origine pour déterminer si le message a été modifié. La fonction HMAC est prise en charge par les appliances autonomes et par les appliances dans une configuration haute disponibilité ou dans un cluster. Son utilisation 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 de condensation 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 condensation peut être modifiée sans modifier la valeur de clé, car la longueur de la valeur de clé n’est pas déterminée par le condensé. Toutefois, il est conseillé de spécifier une nouvelle clé lors de la modification 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 comporter de référence.
  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 la 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 de clé « 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 chiffre et déchiffre les 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 à des fins d’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 modifier la valeur de la clé, car la longueur de la valeur de clé n’est pas déterminée par le résumé. Toutefois, il est conseillé de spécifier une nouvelle clé lors de la modification du résumé. À l’invite de commandes, tapez :

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

<!--NeedCopy-->

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 de 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 contenir 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)
<!--NeedCopy-->