

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation de clés fiables dans AWS CloudHSM
<a name="manage-keys-using-trusted-keys"></a>

AWS CloudHSM prend en charge l'encapsulation fiable des clés pour protéger les clés de données contre les menaces internes. Cette rubrique décrit comment créer des clés fiables pour sécuriser les données.

**Topics**
+ [Présentation des clés fiables](understand-trusted-key-wraps.md)
+ [Attributs de clés fiables](key_attribute_background.md)
+ [Comment utiliser des clés fiables pour encapsuler des clés de données](wrap_keys_using_trusted.md)
+ [Comment désencapsuler une clé de données avec une clé fiable](unwrap_keys_using_trusted.md)

# Comprendre les clés fiables dans AWS CloudHSM
<a name="understand-trusted-key-wraps"></a>

Une *clé sécurisée* est une clé utilisée pour encapsuler d'autres clés et que les administrateurs et les responsables du chiffrement (COs) identifient spécifiquement comme fiable à l'aide de l'attribut. `CKA_TRUSTED` En outre, les administrateurs et les responsables du chiffrement (COs) utilisent `CKA_UNWRAP_TEMPLATE` des attributs associés pour spécifier les actions que les clés de données peuvent effectuer une fois qu'elles sont déballées par une clé fiable. Les clés de données désencapsulées par la clé fiable doivent également contenir ces attributs pour que l'opération de désencapsulage réussisse, ce qui permet de garantir que les clés de données désencapsulées ne sont autorisées que pour l'usage que vous souhaitez.

Utilisez l'attribut `CKA_WRAP_WITH_TRUSTED` pour identifier toutes les clés de données que vous souhaitez encapsuler avec des clés fiables. Cela vous permet de restreindre les clés de données afin que les applications ne puissent utiliser que des clés fiables pour les désencapsuler. Une fois que vous avez défini cet attribut sur les clés de données, il devient en lecture seule et vous ne pouvez pas le modifier. Lorsque ces attributs sont en place, les applications ne peuvent déballer vos clés de données qu'avec les clés auxquelles vous faites confiance, et les désencapsulages se traduisent toujours par des clés de données dotées d'attributs qui limitent la manière dont ces clés peuvent être utilisées.

# Attributs clés fiables dans AWS CloudHSM
<a name="key_attribute_background"></a>

Les attributs suivants vous permettent de marquer une AWS CloudHSM clé comme étant fiable, de spécifier qu'une clé de données ne peut être encapsulée et déballée qu'avec une clé fiable, et de contrôler ce que peut faire une clé de données après son déballage :
+ `CKA_TRUSTED` : Appliquez cet attribut (en plus de `CKA_UNWRAP_TEMPLATE`) à la clé qui encapsulera les clés de données pour indiquer qu'un administrateur ou un responsable de chiffrement (CO) a fait preuve de la diligence nécessaire et qu'il fait confiance à cette clé. Seul un administrateur ou un CO peut définir `CKA_TRUSTED`. L'utilisateur de chiffrement (CU) possède la clé, mais seul un CO peut définir son attribut `CKA_TRUSTED`.
+ `CKA_WRAP_WITH_TRUSTED` : Appliquez cet attribut à une clé de données exportable pour indiquer que vous ne pouvez encapsuler cette clé qu'avec des clés marquées comme `CKA_TRUSTED`. Une fois `CKA_WRAP_WITH_TRUSTED` défini sur true, l'attribut passe en lecture seule et vous ne pouvez ni le modifier ni le supprimer.
+ `CKA_UNWRAP_TEMPLATE` : Appliquez cet attribut à la clé d'encapsulage (en plus de `CKA_TRUSTED`) pour spécifier les noms et valeurs d'attribut que le service doit automatiquement appliquer aux clés de données qu'il désencapsule. Lorsqu'une application soumet une clé pour désencapsulage, elle peut fournir également son propre modèle de désencapsulage. Si vous spécifiez un modèle de désencapsulage et que l'application fournit son propre modèle de désencapsulage, le HSM utilise les deux modèles pour appliquer des noms et des valeurs d'attribut à la clé. Toutefois, si une valeur dans le `CKA_UNWRAP_TEMPLATE` pour la clé d’encapsulage entre en conflit avec un attribut fourni par l'application lors de la demande de désencapsulage, cette dernière échoue. 

Pour plus d'informations sur les attributs, veuillez consulter les rubriques suivantes :
+ [Attributs de clés PKCS \$111](pkcs11-attributes.md)
+ [Attributs de clés JCE](java-lib-attributes_5.md)
+ [Attributs de clés CLI CloudHSM](cloudhsm_cli-key-attributes.md)

# Comment utiliser des clés fiables pour encapsuler des clés de données AWS CloudHSM
<a name="wrap_keys_using_trusted"></a>

Pour utiliser une clé sécurisée pour encapsuler une clé de données AWS CloudHSM, vous devez suivre trois étapes de base :

1. Pour la clé de données que vous prévoyez d'encapsuler avec une clé fiable, définissez son attribut `CKA_WRAP_WITH_TRUSTED` sur true.

1. Pour la clé fiable avec laquelle vous prévoyez d'encapsuler la clé de données, définissez son attribut `CKA_TRUSTED` sur true.

1. Utilisez la clé fiable pour encapsuler la clé de données.

## Étape 1 : définir le `CKA_WRAP_WITH_TRUSTED` de la clé de données sur true
<a name="w2aac15c19c11b7"></a>

Pour la clé de données que vous souhaitez encapsuler, choisissez l'une des options suivantes pour définir l'attribut `CKA_WRAP_WITH_TRUSTED` de la clé sur true. Cela restreint la clé de données afin que les applications ne puissent utiliser que des clés fiables pour l'encapsuler.

### Option 1 : si vous générez une nouvelle clé, définissez `CKA_WRAP_WITH_TRUSTED` sur true
<a name="w2aac15c19c11b7b5"></a>

Générez une clé à l'aide de [PKCS \$111](pkcs11-library.md), [JCE](java-library.md) ou [CloudHSM CLI](cloudhsm_cli.md). Consultez les exemples suivants pour plus de détails.

------
#### [ PKCS \$111 ]

Pour générer une clé avec PKCS \$111, vous devez définir l'attribut `CKA_WRAP_WITH_TRUSTED` de la clé sur true. Comme indiqué dans l'exemple suivant, procédez en incluant cet attribut dans le `CK_ATTRIBUTE template` de la clé puis en lui attribuant la valeur true :

```
CK_BYTE_PTR label = "test_key";
CK_ATTRIBUTE template[] = {
        {CKA_WRAP_WITH_TRUSTED, &true_val,         sizeof(CK_BBOOL)},
        {CKA_LABEL,             label,             strlen(label)},
        ...
};
```

Pour plus d'informations, veuillez consulter [nos exemples publics illustrant la génération de clés avec PKCS \$111](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/generate).

------
#### [ JCE ]

Pour générer une clé avec JCE, vous devez définir l'attribut `WRAP_WITH_TRUSTED` de la clé sur true. Comme indiqué dans l'exemple suivant, procédez en incluant cet attribut dans le `KeyAttributesMap` de la clé puis en lui attribuant la valeur true :

```
final String label = "test_key";
final KeyAttributesMap keySpec = new KeyAttributesMap();
keySpec.put(KeyAttribute.WRAP_WITH_TRUSTED, true);
keySpec.put(KeyAttribute.LABEL, label);
...
```

Pour plus d'informations, veuillez consulter [nos exemples publics illustrant la génération de clés avec JCE](https://docs.aws.amazon.com/cloudhsm/latest/userguide/java-samples.html#java-samples-code_5).

------
#### [ CloudHSM CLI ]

Pour générer une clé avec la CLI CloudHSM, vous devez définir l'attribut `wrap-with-trusted` de la clé sur true. Pour ce faire, incluez `wrap-with-trusted=true` dans l'argument approprié pour la commande de génération de clés :
+ Pour les clés symétriques, ajoutez `wrap-with-trusted` à l'argument `attributes`.
+ Pour les clés publiques, ajoutez `wrap-with-trusted` à l'argument `public-attributes`.
+ Pour les clés privées, ajoutez `wrap-with-trusted` à l'argument `private-attributes`.

Pour de plus amples informations sur la génération de paires de clés, veuillez consulter [La generate-asymmetric-pair catégorie dans la CLI CloudHSM](cloudhsm_cli-key-generate-asymmetric-pair.md).

Pour plus d'informations sur la génération de clés symétriques, veuillez consulter [La catégorie generate-symetric dans la CLI CloudHSM](cloudhsm_cli-key-generate-symmetric.md).

------

### Option 2 : Si vous utilisez une clé existante, utilisez la CLI CloudHSM pour la définir son `CKA_WRAP_WITH_TRUSTED` sur true
<a name="w2aac15c19c11b7b7"></a>

Pour attribuer la valeur true à l'attribut `CKA_WRAP_WITH_TRUSTED` d'une clé existante, procédez comme suit :

1. Utilisez la commande [Connectez-vous à un HSM à l'aide de la CLI CloudHSM](cloudhsm_cli-login.md) pour vous connecter en tant qu'utilisateur de chiffrement (CU).

1. Utilisez la commande [Définissez les attributs des clés à l'aide de la CLI CloudHSM](cloudhsm_cli-key-set-attribute.md) pour définir l'attribut `wrap-with-trusted` de la clé sur true.

   ```
   aws-cloudhsm > key set-attribute --filter attr.label=test_key --name wrap-with-trusted --value true
   {
     "error_code": 0,
     "data": {
       "message": "Attribute set successfully"
     }
   }
   ```

## Étape 2 : définir le `CKA_TRUSTED` de la clé fiable sur true
<a name="w2aac15c19c11b9"></a>

Pour qu'une clé soit une clé fiable, son attribut `CKA_TRUSTED` doit être défini sur true. Pour ce faire, vous pouvez utiliser la CLI CloudHSM ou l'Utilitaire de gestion CloudHSM (CMU).
+ Si vous utilisez la CLI CloudHSM pour définir l'attribut `CKA_TRUSTED` d’une clé, veuillez consulter [Marquer une clé comme fiable à l'aide de la CLI CloudHSM](manage-keys-cloudhsm-cli-trusted.md).
+ Si vous utilisez la CMU pour définir l'attribut `CKA_TRUSTED` d'une clé, veuillez consulter [Comment marquer une clé comme fiable à l'aide de l'utilitaire AWS CloudHSM de gestion](cloudhsm_using_trusted_keys_control_key_wrap.md).

## Étape 3. Utilisez la clé fiable pour encapsuler la clé de données
<a name="w2aac15c19c11c11"></a>

Pour associer la clé de données référencée à l'étape 1 à la clé fiable que vous avez définie à l'étape 2, veuillez consulter les liens suivants pour obtenir des exemples de code. Chacun montre comment encapsuler les clés.
+ [AWS CloudHSM Exemples de PKCS \$111](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/tree/master/src/wrapping)
+ [AWS CloudHSM Exemples JCE](https://github.com/aws-samples/aws-cloudhsm-jce-examples/tree/sdk5/src/main/java/com/amazonaws/cloudhsm/examples)

# Comment déballer une clé de données avec une clé fiable pour AWS CloudHSM
<a name="unwrap_keys_using_trusted"></a>

Pour déballer une clé de données AWS CloudHSM, vous avez besoin d'une clé fiable `CKA_UNWRAP` définie sur true. Pour être une telle clé, elle doit également répondre aux critères suivants :
+ L'attribut `CKA_TRUSTED` de la clé doit être défini sur true.
+ La clé doit utiliser des attributs `CKA_UNWRAP_TEMPLATE` et associés pour spécifier les actions que les clés de données peuvent effectuer une fois qu'elles sont désencapsulées. Si, par exemple, vous souhaitez qu'une clé désencapsulée ne soit pas exportable, vous définissez `CKA_EXPORTABLE = FALSE` dans le cadre de `CKA_UNWRAP_TEMPLATE`.

**Note**  
`CKA_UNWRAP_TEMPLATE` n'est disponible qu'avec PKCS \$111.

Lorsqu'une application soumet une clé pour désencapsulage, elle peut fournir également son propre modèle de désencapsulage. Si vous spécifiez un modèle de désencapsulage et que l'application fournit son propre modèle de désencapsulage, le HSM utilise les deux modèles pour appliquer des noms et des valeurs d'attribut à la clé. Toutefois, si, au cours de la demande de désencapsulage, une valeur du `CKA_UNWRAP_TEMPLATE` de la clé fiable entre en conflit avec un attribut fourni par l'application, la demande de désencapsulage échoue. 

Pour voir un exemple de désencapsulage d'une clé de données avec une clé fiable, reportez-vous à [cet exemple PKCS \$111](https://github.com/aws-samples/aws-cloudhsm-pkcs11-examples/blob/master/src/wrapping/unwrap_with_template.c).