Implémentations d'un fournisseur de clé pour la clé de commerçant

La solution la plus sécurisée consiste à stocker la clé de commerçant sur une unité matérielle. Une solution matérielle prend en charge le stockage sécurisé et la technologie de connaissances réparties de la clé de commerçant. Toutefois, vous pouvez également stocker une clé de chiffrement dans un fichier, à condition de prendre les mesures de précaution qui s'imposent. Ces mesures incluent notamment l'utilisation de droits d'accès à des fichiers, la surveillance de l'intégrité des fichiers et le contrôle de l'accès aux fichiers.

Par défaut, deux fournisseurs de clé de chiffrement de la clé de commerçant sont disponibles. La première clé, WCMerchantKeyImpl, permet d'extraire la clé de commerçant du fichier XML de l'instance. La seconde clé, WCExternalFileMerchantKeyImpl, permet d'extraire la clé de commerçant d'un fichier externe.

WCMerchantKeyImpl

L'implémentation par défaut, com.ibm.commerce.security.keys.WCMerchantKeyImpl, continue à lire la clé de commerçant dans le fichier instance.xml. Elle ne peut pas être utilisée pour définir la clé de commerçant dans le fichier XML de l'instance. WCMerchantKeyImpl ne doit donc pas être utilisée comme fournisseur d'une nouvelle clé ("new") lors de l'exécution de MigrateEncryptedInfo. En revanche, elle peut être utilisée comme fournisseur de la clé en cours ("current") lorsque vous décidez de changer de fournisseur de clé.

Ce fournisseur de clé est défini de la manière suivante dans le fichier workspace_dir/WC/xml/config/WCKeys.xml :


<?xml version="1.0" encoding="UTF-8"?>
<keys>
<key name="MerchantKey" 
providerName="WC" 
status="current"
className="com.ibm.commerce.security.keys.WCMerchantKeyImpl"> 
</key>
</keys>

Comme vous pouvez le constater, la définition n'indique pas le chemin du HCL Commercefichier de configuration . Cette omission ne représente pas un problème si la définition est utilisée au moment de l'exécution car l'instance en cours est connue et le système peut accéder au fichier de configuration approprié. En revanche, lorsque Key Locator Framework est utilisé à partir d'un script en ligne de commande, par exemple MigrateEncryptedInfo, l'environnement d'exécution n'est pas initialisé. Par conséquent, vous ne pouvez pas identifier le fichier de configuration approprié pour l'instance à l'aide de la définition ci-dessus dans un scénario incluant plusieurs instances. Par conséquent, un paramètre de configuration supplémentaire, instanceName, est nécessaire pour indiquer le nom de l'instance lorsque WCMerchantKeyImpl doit être utilisé en ligne de commande. Le nom de l'instance permet d'identifier le HCL Commercefichier de configuration pour extraire la clé de commerçant.

Par exemple, le fichier de configuration de clés d'une instance appelée "demo" apparaît sous la forme suivante :


<?xml version="1.0" encoding="UTF-8"?>
<keys>
<key name="MerchantKey" 
providerName="WC" 
status="current"
className="com.ibm.commerce.security.keys.WCMerchantKeyImpl">
<config name="instanceName" value="demo"/> 
</key>
</keys>

WCExternalFileMerchantKeyImpl

Une implémentation qui permet se conformer aux normes PCI, com.ibm.commerce.security.keys.WCExternalFileMerchantKeyImpl, est utilisée pour lire et stocker la clé de commerçant dans un fichier externe. Comme le fichier XML de l'instance contient bien d'autres informations que la clé de commerçant, il est difficile de contrôler l'accès au fichier. Pour être conforme aux normes PCI, cette implémentation de fournisseur de clé lit la clé de commerçant depuis un fichier externe.

Si une nouvelle clé de commerçant est nécessaire, deux administrateurs doivent entrer chacun une moitié de la clé de commerçant dans deux fichiers externes temporaires. Cette opération permet d'adhérer aux critères de partage des connaissances. Le nom et l'emplacement de ces fichiers temporaires sont indiqués dans le fichier de configuration de clés. Les clés indiquées dans les fichiers externes sont stockées sous forme de texte clair.

Lors de la mise à jour du fichier contenant la clé de commerçant, la méthode WCKey.updateValue() est appelée pour mettre à jour le fichier externe avec la nouvelle valeur de la clé de commerçant chiffrée et effacer le contenu des deux fichiers externes temporaires. Pour plus de sécurité, ce fournisseur autorise le client à spécifier une clé de chiffrement de clé facultative. Cette clé de chiffrement de clé est utilisée pour chiffrer la clé de commerçant lors du stockage de cette dernière dans le fichier externe. Si la clé de chiffrement de clé n'est pas spécifiée, la clé de chiffrement interne est utilisée.

La section suivante présente le fichier de configuration de clés qui enregistre le fournisseur WCExternalFileMerchantKeyImpl.


<?xml version="1.0" encoding="UTF-8"?>
<keys>
<key name="MerchantKey" 
providerName="WC" status="new"
className="com.ibm.commerce.security.keys.WCExternalFileMerchantKeyImpl">
<config name="keyFile" 
value="merchantKey.xml"
/>
<config name="keyEncryptionKeyFile" 
value="KeyEncryptionKey.xml"/>
<config name="newKeyFile1" value="newMerchantKey1.xml"/>
<config name="newKeyFile2" value="newMerchantKey2.xml"/>
</key>
</keys>
Où :
keyFile
Fichier de clés utilisé pour stocker et chiffrer la clé de commerçant à l'aide d'une clé de chiffrement de clé. Pour une nouvelle clé, le fichier de clés (par exemple, merchantKey.xml) doit être créé manuellement, avec une valeur de clé vide : <key value="" />. Lorsque MigrateEncryptedInfo est exécuté, les valeurs clés en texte clair de newKeyFile1 et newKeyFile2 sont fusionnées, cryptées, puis stockées dans merchantKey.xml.
keyEncryptionKeyFile
Facultatif : Indique le fichier utilisé pour stocker la clé de chiffrement de clé en texte clair. Si cet attribut n'est pas indiqué, la clé de chiffrement par défaut est utilisée. Au minimum, la clé de chiffrement de clé doit être aussi forte que la clé de commerçant (32 caractères hexadécimaux).
newKeyFile1
Requis lorsque le statut du fournisseur de clé indiqué dans le fichier de configuration de clés est "new". Cette valeur correspond au nom de fichier où la première partie de la clé de commerçant est stockée en texte clair. Le contenu du fichier est effacé une fois l'exécution de l'outil terminée et tous les fichiers temporaires supprimés.
newKeyFile2
Requis lorsque le statut du fournisseur de clé indiqué dans le fichier de configuration de clés est "new". Cette valeur correspond au nom de fichier où la seconde partie de la clé de commerçant est stockée en texte clair. Le contenu du fichier est effacé une fois l'exécution de l'outil terminée et tous les fichiers temporaires supprimés.
Remarque :
  • Le format des attributs keyFile, keyEncryptionKey et des deux paramètres newKeyFile est le suivant :
    
    <?xml version="1.0" encoding="UTF-8"?>
    <keys xmlns="http://www.ibm.com/xmlns/prod/WebSphereCommerce"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.ibm.com/xmlns/prod/WebSphereCommerce
    
    C:\WebSphere\CommerceServer\wc.ear\xml\config\xsd\key.xsd">
    <key value="1234567890abcdef" />
    </keys>
    
  • Vous pouvez indiquer des chemins absolus ou relatifs pour tous ces attributs de configuration. Si vous indiquez le chemin relatif, la valeur est définie par rapport au fichier de configuration de clés personnalisé, CustomKeys.xml. Dans un environnement d'exécution, l'emplacement du fichier CustomKeys.xml est défini dans la section <Instance> du fichier XML de l'instance. Pour les utilitaires de ligne de commande, l'emplacement du fichier CustomKeys.xml est indiqué sous la forme d'arguments de ligne de commande.
status
Indiquez si le fournisseur de clés est actif. Les valeurs possibles sont les suivantes : current et new.
La valeur current indique que le fournisseur de clés est en cours d'utilisation et actif. Les données chiffrées de la base de données sont chiffrées à l'aide de la clé de ce fournisseur.
Une valeur new indique le fournisseur de clés vers lequel effectuer la migration. Ce fournisseur est utilisé par l'utilitaire MigrateEncryptedInfo pour migrer les données chiffrées vers cette nouvelle clé.