Cryptage applicatif

La fonctionnalité décrite dans cette section permet de configurer des champs, lors de l'implémentation, pour que les données qu'ils contiennent soient cryptées lorsqu'elles sont stockées dans la base de données. Cette fonctionnalité et la fonctionnalité de masquage dans l'interface utilisateur s'excluent mutuellement. Elle prend en charge les éléments cryptés spécifiques stockés dans un CLOB ou une colonne XML.

Les points ci-dessous présentent les principales caractéristiques de la fonctionnalité de cryptage :

  • La clé de cryptage est définie à l'aide d'un trousseau de clés. Pour plus d'informations sur la définition des trousseaux de clés de cryptage, voir Cryptage de champ.

  • Lorsque le cryptage est configuré pour un champ, les données cryptées sont stockées dans un champ de cryptage spécial, différent du champ source (champ présenté à l'utilisateur dans l'interface utilisateur). Le champ source capture les données sous forme masquée. Un champ spécial étant requis pour le cryptage, le produit doit assurer la prise en charge du cryptage de ce champ.

  • Pour les données cryptées devant permettre la recherche, le système prend en charge la capture d'une valeur hachée dans un champ spécial. Le produit doit assurer la prise en charge de cette fonctionnalité. Outre qu'un champ spécial doit être fourni pour la capture de la valeur hachée, la fonctionnalité de recherche de base doit également prendre en charge cette configuration.

  • Le système prend en charge le cryptage de données capturées en tant qu'élément dans un champ XML. Si le champ XML est fourni dans un schéma dont le produit est propriétaire, le produit doit assurer une prise en charge spécifique de la capture des données cryptées.

  • Pour des raisons de rétrocompatibilité, le système prend également en charge les clés de cryptage et de hachage définies à l'aide d'un fichier de clés. Cette méthode n'est pas recommandée à l'avenir, mais des informations supplémentaires sur la définition du fichier de clés dans le système sont disponibles dans le guide d'installation. Pour plus d'informations sur l'adoption de la fonctionnalité de trousseau de clés si vous utilisez actuellement le fichier de clés, voir Passage d'un fichier de clés à un trousseau de clés.

Les sections ci-après fournissent des informations supplémentaires sur la prise en charge du cryptage fourni par Framework. Pour plus d'informations, voir le chapitre traitant de la sécurité dans le guide d'administration de votre produit.

Cryptage et masquage des données

Lorsque, dans un produit, le cryptage est activé pour champ donné, un champ de cryptage spécial doit être créé pour recueillir la valeur cryptée. Le cryptage étant facultatif, le champ source (celui présenté à l'utilisateur) ne doit pas être le champ crypté spécial. Si le cryptage est configuré, le système renseigne le champ crypté en interne. Par défaut, le champ source est rempli d'astérisques. Ainsi, ce sont les données masquées que voit l'utilisateur dans la page, et non la valeur cryptée.

Les points ci-dessous précisent le comportement du système selon que le cryptage est configuré ou non. Supposons par exemple que le champ soit un numéro de carte de crédit. L'utilisateur voit un champ nommé CC_​NBR qu'il renseigne. La table comporte un second champ nommé ENCR_​CC_​NBR. Un utilisateur saisit le numéro de carte de crédit :

  • Si le cryptage n'est pas configuré, le champ CC_​NBR est mis à jour pour contenir le numéro de carte de crédit saisi et le champ ENCR_​CC_​NBR reste vide. A noter que, dans ce cas, l'implémentation peut choisir de configurer le masquage dans l'interface utilisateur.

  • Si le cryptage est configuré, le champ CC_​NBR est mis à jour pour contenir "*******************" et le champ ENCR_​CC_​NBR contient la valeur cryptée. Les astérisques remplissent la totalité du champ standard, jusqu'à un maximum de 50 caractères.

Si, pour une raison quelconque, le masquage standard complet par astérisques ne convient pas, le système permet de fournir un algorithme de masquage explicite qui utilise le même emplacement de plug-in de configuration Mutualisation de paramètres - masquage de données que le masquage dans l'interface utilisateur.

Avertissement :
Contrairement au masquage dans l'interface utilisateur, le masquage des champs cryptés est indépendant de la sécurité. Les données stockées dans le champ source de toutes les données cryptées doivent être masquées. Veillez à ne pas configurer une logique d'autorisations à des fins de sécurité dans les algorithmes utilisés pour ce type de masquage.

Configuration d'une option Mutualisation de paramètres

Créez une configuration Mutualisation de paramètres de type Cryptage. Pour chaque champ source que vous cryptez, entrez une option de type Cryptage de champ. Sa valeur contiendra les mnémoniques faisant référence à l'alias de clé de cryptage approprié, ainsi que la configuration associée au champ et à son emplacement de table. Contrairement à celle du masquage des données dans l'interface utilisateur, la configuration du cryptage des données concerne le stockage des données et non leur affichage. En outre, chaque entrée peut définir un algorithme de masquage explicite destiné à remplacer l'algorithme par défaut et, si c'est pris en charge, un champ de hachage et un trousseau de clés de hachage.

Pour plus d'informations sur la définition des trousseaux de clés de cryptage, voir Cryptage de champ.

Pour les données stockées dans une colonne spécifique d'une table, un champ explicite doit exister pour capturer la valeur cryptée. Indiquez le nom de la table, le nom du champ source et le nom du champ crypté ainsi que le trousseau de clés : table='table_​name', field='fld_​name', encryptedField='encr_​fld_​name', keyRing='key ring code'

Il est également possible de spécifier une clause "where" lorsque les données figurent dans une table enfant et que les données d'un certain type doivent être cryptées.

Exemple : table='CI_​PER_​ID', field='PER_​ID_​NBR', encryptedField='ENCR_​PER_​ID_​NBR', keyRing='CM-SymmetricKey', where='ID_​TYPE_​CD='SSN''

Pour les données stockées dans une colonne XML dans un enregistrement, le champ source à crypter doit faire référence à un nom de champ de métadonnées de sa définition de schéma ainsi qu'à un élément pour la capture des données cryptées et à l'alias : field='field_​name', encryptedField='encr_​field_​name', KeyRing='key ring code'

La syntaxe à utiliser pour faire référence à un algorithme de masquage est la suivante : maskAlg='algorithm name'.

La syntaxe à utiliser pour ajouter une configuration de capture de valeur de hachage à des fins de recherche est la suivante : hashKeyRing='key ring code' hashField='HASH_​FLD_​NAME'.

L'exemple de configuration ci-dessous utilise toutes les options possibles (algorithme de masquage spécifique, clause "where" et prise en charge d'un champ de hachage) :

table='CI_​​PER_​​ID', field='PER_​​ID_​​NBR', keyRing='CM-SymmetricKey', encryptedField='ENCR_​​PER_​​ID_​​NBR', hashKeyRing='CM-HashKey' hashField='HASH_​​PER_​​ID_​​NBR', where='ID_​​TYPE_​​CD=SSN', maskAlg='CM-PERIDMASK'

A des fins de rétrocompatibilité, le produit prend en charge la définition d'une clé de cryptage à l'aide d'un fichier de clés. Pour les implémentations qui continuent d'utiliser cette configuration, vous devez référencer l'alias ou l'alias de hachage au lieu du trousseau de clés. L'exemple de configuration ci-dessous utilise toutes les options possibles, mais utilise l'alias au lieu d'un trousseau de clés.

table='CI_​​PER_​​ID', field='PER_​​ID_​​NBR', alias='aliasKey', encryptedField='ENCR_​​PER_​​ID_​​NBR', hashAlias='hashAliasKey' hashField='HASH_​​PER_​​ID_​​NBR', where='ID_​​TYPE_​​CD=SSN', maskAlg='CM-PERIDMASK'

Par ailleurs, lorsque vous utilisez un alias, le champ crypté peut éventuellement être "encapsulé" avec un marqueur spécial (par exemple, ENC{} ) pour indiquer que la valeur du champ est cryptée. Ceci peut être spécifié par le paramètre wrap="true" ou wrap="false". La valeur par défaut est "false". Cette valeur doit être définie sur "false", sauf si un traitement supplémentaire de votre code est inclus pour gérer le marqueur spécial.

Pour plus d'informations sur l'adoption de la fonctionnalité de trousseau de clés si vous utilisez actuellement le fichier de clés, voir Passage d'un fichier de clés à un trousseau de clés.

Recherche par valeur cryptée

Les points ci-dessous présentent la configuration de la zone d'explorateur nécessaire pour que le produit prenne en charge une valeur hachée pour un champ crypté à des fins de recherche :

  • La valeur du filtre utilisateur doit faire référence au champ source et doit inclure une mnémonique supplémentaire encrypt=. Par exemple

    type=STRING
    label=PER_ID_NBR 
    encrypt=[CI_PER_ID,PER_ID_NBR,ID_TYPE_CD,F1]

    Pour plus d'informations, voir Filtres utilisateur.

  • La valeur hachée doit figurer dans le SQL, dans la clause WHERE. A noter que, le cryptage étant facultatif, une zone de produit incluant la recherche selon un champ susceptible d'être crypté doit prévoir la recherche d'une correspondance pour le filtre dans le champ source (sous forme de texte ordinaire) ou dans le champ haché. Par exemple :

    WHERE
       [(F2) (ID.PER_ID_NBR =:F2 OR ID.HASH_PER_ID_NBR = :F2)]

Personnalisation de l'algorithme de cryptage

Cette fonctionnalité s'applique uniquement aux implémentations qui utilisent le fichier de clés. Cette configuration n'est pas recommandée à l'avenir. Ce texte est maintenu ici à des fins d'information.

Bien que l'algorithme de cryptage à utiliser avec une clé donnée puisse être obtenu à partir de la clé dans le fichier de clés, il faut parfois utiliser des informations supplémentaires associées à l'algorithme pour le cryptage et le décryptage des données.

Le système fournit une option de configuration Mutualisation de paramètres pour le type de mutualisation de paramètres Cryptage dont le type est Informations d'algorithme et qui peut être utilisée pour ajuster le comportement du cryptage.

  • Vous pouvez modifier le mode par défaut et le remplissage de l'algorithme de cryptage.

  • Si une clé doit être utilisée pour la signature numérique, l'algorithme de signature correspondant peut également être spécifié.

Pour plus de détails sur la syntaxe, voir la description détaillée du type d'option de mutualisation de paramètres.