Choix de la longueur de la balise - AWS Chiffrement des bases SDK

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.

Choix de la longueur de la balise

Notre bibliothèque de chiffrement côté client a été renommée AWS Database Encryption SDK. Ce guide du développeur fournit toujours des informations sur le client de chiffrement DynamoDB.

Lorsque vous écrivez une nouvelle valeur dans un champ crypté configuré pour un chiffrement interrogeable, le SDK AWS Database Encryption calcule un HMAC sur la valeur du texte brut. Cette sortie HMAC correspond un à un (1:1) à la valeur en texte brut de ce champ. La sortie HMAC est tronquée de sorte que plusieurs valeurs de texte brut distinctes correspondent à la même balise HMAC tronquée. Ces collisions, ou faux positifs, limitent la capacité d'un utilisateur non autorisé à identifier des informations distinctives concernant la valeur en texte brut.

Le nombre moyen de faux positifs générés pour chaque balise est déterminé par la longueur de la balise restante après la troncature. Vous devez uniquement définir la longueur des balises lors de la configuration des balises standard. Les balises composées utilisent les mêmes longueurs que les balises standard à partir desquelles elles sont fabriquées.

La balise ne modifie pas l'état crypté du champ. Toutefois, lorsque vous utilisez des balises, il existe un compromis inhérent entre l'efficacité de vos requêtes et la quantité d'informations révélées sur la distribution de vos données.

L'objectif du chiffrement interrogeable est de réduire les coûts de performance associés aux bases de données chiffrées côté client en utilisant des balises pour effectuer des requêtes sur des données cryptées. Les balises sont stockées à côté des champs cryptés à partir desquels elles sont calculées. Cela signifie qu'ils peuvent révéler des informations distinctives sur la distribution de votre jeu de données. Dans des cas extrêmes, un utilisateur non autorisé peut être en mesure d'analyser les informations révélées à propos de votre distribution et de les utiliser pour identifier la valeur en texte brut d'un champ. Le choix de la bonne longueur de balise peut aider à atténuer ces risques et à préserver la confidentialité de votre distribution.

Passez en revue votre modèle de menace pour déterminer le niveau de sécurité dont vous avez besoin. Par exemple, plus le nombre de personnes ayant accès à votre base de données est élevé, mais ne devraient pas avoir accès aux données en texte brut, plus vous souhaiterez peut-être protéger la confidentialité de la distribution de votre jeu de données. Pour accroître la confidentialité, une balise doit générer davantage de faux positifs. Une confidentialité accrue entraîne une baisse des performances des requêtes.

Sécurité contre performance
  • Une longueur de balise trop longue produit trop peu de faux positifs et peut révéler des informations distinctives sur la distribution de votre jeu de données.

  • Une longueur de balise trop courte produit trop de faux positifs et augmente le coût des requêtes en termes de performances, car cela nécessite une analyse plus approfondie de la base de données.

Lorsque vous déterminez la longueur de balise appropriée pour votre solution, vous devez trouver une longueur qui préserve de manière adéquate la sécurité de vos données sans affecter les performances de vos requêtes plus que ce qui est absolument nécessaire. Le niveau de sécurité préservé par une balise dépend de la distribution de votre jeu de données et de la corrélation des champs à partir desquels vos balises sont construites. Les rubriques suivantes supposent que vos balises sont distribuées de manière uniforme et ne contiennent pas de données corrélées.

Calculer la longueur de la balise

La longueur de la balise est définie en bits et fait référence au nombre de bits de l'étiquette HMAC qui sont conservés après troncature. La longueur de balise recommandée varie en fonction de la distribution du jeu de données, de la présence de valeurs corrélées et de vos exigences spécifiques en matière de sécurité et de performances. Si votre jeu de données est distribué de manière uniforme, vous pouvez utiliser les équations et procédures suivantes pour identifier la meilleure longueur de balise pour votre implémentation. Ces équations ne font qu'estimer le nombre moyen de faux positifs produits par la balise ; elles ne garantissent pas que chaque valeur unique de votre jeu de données produira un nombre spécifique de faux positifs.

Note

L'efficacité de ces équations dépend de la distribution de votre jeu de données. Si votre jeu de données n'est pas distribué de manière uniforme, consultezLes balises sont-elles adaptées à mon ensemble de données ?.

En général, plus votre jeu de données s'éloigne d'une distribution uniforme, plus vous devez réduire la longueur de votre balise.

  1. Estimer la population

    La population est le nombre attendu de valeurs uniques dans le champ à partir duquel votre balise standard est construite, et non le nombre total attendu de valeurs stockées dans le champ. Prenons l'exemple d'un Room champ crypté qui identifie le lieu des réunions des employés. Le Room terrain devrait stocker 100 000 valeurs totales, mais les employés ne peuvent réserver que 50 salles différentes pour les réunions. Cela signifie que la population est de 50 car seules 50 valeurs uniques peuvent être stockées Room sur le terrain.

    Note

    Si votre balise standard est construite à partir d'un champ virtuel, la population utilisée pour calculer la longueur de la balise est le nombre de combinaisons uniques créées par le champ virtuel.

    Lorsque vous estimez votre population, veillez à prendre en compte la croissance prévue de l'ensemble de données. Une fois que vous avez écrit de nouveaux enregistrements avec la balise, vous ne pouvez pas mettre à jour la longueur de la balise. Passez en revue votre modèle de menace et toutes les solutions de base de données existantes afin d'estimer le nombre de valeurs uniques que ce champ devrait stocker au cours des cinq prochaines années.

    Votre population n'a pas besoin d'être précise. Tout d'abord, identifiez le nombre de valeurs uniques dans votre base de données actuelle ou estimez le nombre de valeurs uniques que vous comptez stocker au cours de la première année. Ensuite, utilisez les questions suivantes pour vous aider à déterminer la croissance prévue des valeurs uniques au cours des cinq prochaines années.

    • Vous attendez-vous à ce que les valeurs uniques soient multipliées par 10 ?

    • Vous attendez-vous à ce que les valeurs uniques soient multipliées par 100 ?

    • Vous attendez-vous à ce que les valeurs uniques soient multipliées par 1 000 ?

    La différence entre 50 000 et 60 000 valeurs uniques n'est pas significative et elles se traduiront toutes deux par la même longueur de balise recommandée. Toutefois, la différence entre 50 000 et 500 000 valeurs uniques aura un impact significatif sur la longueur de balise recommandée.

    Envisagez de passer en revue les données publiques concernant la fréquence des types de données courants, tels que les codes postaux ou les noms de famille. Par exemple, il existe 41 707 codes postaux aux États-Unis. La population que vous utilisez doit être proportionnelle à votre propre base de données. Si le ZIPCode champ de votre base de données inclut des données provenant de l'ensemble des États-Unis, vous pouvez définir votre population comme 41 707, même si le ZIPCode champ ne contient pas actuellement 41 707 valeurs uniques. Si le ZIPCode champ de votre base de données ne contient que des données provenant d'un seul État et qu'il n'inclura jamais que des données provenant d'un seul État, vous pouvez définir votre population comme le nombre total de codes postaux dans cet État au lieu de 41 704.

  2. Calculez la plage recommandée pour le nombre de collisions prévu

    Pour déterminer la longueur de balise appropriée pour un champ donné, vous devez d'abord identifier une plage appropriée pour le nombre de collisions attendu. Le nombre attendu de collisions représente le nombre moyen attendu de valeurs uniques de texte brut correspondant à une balise HMAC particulière. Le nombre attendu de faux positifs pour une valeur de texte en clair unique est inférieur d'un au nombre attendu de collisions.

    Nous recommandons que le nombre de collisions attendu soit supérieur ou égal à deux et inférieur à la racine carrée de votre population. Les équations suivantes ne fonctionnent que si votre population possède 16 valeurs uniques ou plus.

    2 ≤ number of collisions < √(Population)

    Si le nombre de collisions est inférieur à deux, la balise produira trop peu de faux positifs. Nous recommandons deux comme nombre minimum de collisions attendues, car cela signifie qu'en moyenne, chaque valeur unique du champ générera au moins un faux positif par mappage à une autre valeur unique.

  3. Calculez la plage recommandée pour les longueurs des balises

    Après avoir identifié le nombre minimum et maximum de collisions attendues, utilisez l'équation suivante pour identifier une plage de longueurs de balises appropriées.

    number of collisions = Population * 2-(beacon length)

    Tout d'abord, déterminez la longueur de la balise lorsque le nombre de collisions attendues est égal à deux (le nombre minimum recommandé de collisions attendues).

    2 = Population * 2-(beacon length)

    Ensuite, déterminez la longueur de la balise où le nombre de collisions attendu est égal à la racine carrée de votre population (le nombre maximum recommandé de collisions attendues).

    √(Population) = Population * 2-(beacon length)

    Nous recommandons d'arrondir la sortie produite par cette équation à la longueur de balise la plus courte. Par exemple, si l'équation produit une longueur de balise de 15,6, nous vous recommandons d'arrondir cette valeur à 15 bits au lieu d'arrondir à 16 bits au maximum.

  4. Choisissez une longueur de balise

    Ces équations identifient uniquement une plage de longueurs de balises recommandée pour votre champ. Nous vous recommandons d'utiliser une longueur de balise plus courte pour préserver la sécurité de votre jeu de données dans la mesure du possible. Toutefois, la longueur de la balise que vous utilisez réellement est déterminée par votre modèle de menace. Tenez compte de vos exigences de performance lorsque vous examinez votre modèle de menace afin de déterminer la longueur de balise la mieux adaptée à votre domaine.

    L'utilisation d'une longueur de balise plus courte réduit les performances des requêtes, tandis que l'utilisation d'une longueur de balise plus longue réduit la sécurité. En général, si votre jeu de données est réparti de manière inégale ou si vous créez des balises distinctes à partir de champs corrélés, vous devez utiliser des longueurs de balises plus courtes afin de minimiser la quantité d'informations révélées sur la distribution de vos ensembles de données.

    Si vous examinez votre modèle de menace et décidez que les informations distinctives révélées concernant la distribution d'un champ ne constituent pas une menace pour votre sécurité globale, vous pouvez choisir d'utiliser une longueur de balise supérieure à la plage recommandée que vous avez calculée. Par exemple, si vous avez calculé la plage de longueurs de balise recommandée pour un champ entre 9 et 16 bits, vous pouvez choisir d'utiliser une longueur de balise de 24 bits pour éviter toute perte de performance.

    Choisissez la longueur de votre balise avec soin. Une fois que vous avez écrit de nouveaux enregistrements avec la balise, vous ne pouvez pas mettre à jour la longueur de la balise.

Exemple

Prenons l'exemple d'une base de données qui a marqué le unit champ comme ENCRYPT_AND_SIGN dans les actions cryptographiques. Pour configurer une balise standard pour le unit champ, nous devons déterminer le nombre attendu de faux positifs et la longueur de la balise pour le unit champ.

  1. Estimer la population

    Après avoir examiné notre modèle de menace et notre solution de base de données actuelle, nous nous attendons à ce que le unit champ contienne à terme 100 000 valeurs uniques.

    Cela signifie que la population est de 100 000 habitants.

  2. Calculez la plage recommandée pour le nombre de collisions prévu.

    Pour cet exemple, le nombre prévu de collisions doit être compris entre 2 et 316.

    2 ≤ number of collisions < √(Population)
    1. 2 ≤ number of collisions < √(100,000)
    2. 2 ≤ number of collisions < 316
  3. Calculez la plage recommandée pour la longueur de la balise.

    Dans cet exemple, la longueur de la balise doit être comprise entre 9 et 16 bits.

    number of collisions = Population * 2-(beacon length)
    1. Calculez la longueur de la balise lorsque le nombre attendu de collisions est égal au minimum identifié à l'étape 2.

      2 = 100,000 * 2-(beacon length)

      Longueur de la balise = 15,6, soit 15 bits

    2. Calculez la longueur de la balise lorsque le nombre attendu de collisions est égal au maximum identifié à l'étape 2.

      316 = 100,000 * 2-(beacon length)

      Longueur de la balise = 8,3, soit 8 bits

  4. Déterminez la longueur de balise adaptée à vos exigences de sécurité et de performances.

    Pour chaque bit inférieur à 15, le coût des performances et la sécurité doublent.

    • 16 bits

      • En moyenne, chaque valeur unique correspondra à 1,5 autre unité.

      • Sécurité : deux enregistrements comportant la même balise HMAC tronquée ont 66 % de chances d'avoir la même valeur en texte brut.

      • Performance : une requête récupérera 15 enregistrements pour 10 enregistrements que vous avez réellement demandés.

    • 14 bits

      • En moyenne, chaque valeur unique correspondra à 6,1 autres unités.

      • Sécurité : deux enregistrements avec la même balise HMAC tronquée ont 33 % de chances d'avoir la même valeur en texte brut.

      • Performance : une requête récupérera 30 enregistrements pour 10 enregistrements que vous avez réellement demandés.