Hashing

Syntho beta feature

Actuellement, le hachage n'est disponible que pour les clés, mais il peut désormais être étendu aux colonnes ordinaires. Cette nouvelle fonctionnalité est introduite dans une nouvelle catégorie principale de la méthode de génération. L'approche de hachage par défaut est spécifiée pour chaque type de données, avec des considérations spécifiques pour les clés et les colonnes régulières.

Pour utiliser la nouvelle fonctionnalité de hachage pour les colonnes régulières, procédez comme suit :

  1. Naviguez jusqu'à Column Settings dans l'interface de gestion de votre base de données.

  2. Sous l'onglet Generation Method, sélectionner Hashing pour activer la fonctionnalité de hachage pour la colonne sélectionnée.

  3. Choisissez le type de données approprié pour la colonne et assurez-vous que les paramètres s'alignent sur les approches de hachage par défaut spécifiées ci-dessus :

    • Pour Discrete ValuesL'algorithme de chiffrement Hasty Pudding sera utilisé.

    • Pour Categorical ValuesLe cryptage préservant la transmission (FPE) à l'aide de l'algorithme FF3 sera appliqué.

    • Pour Datetime Valuesun décalage aléatoire sera ajouté.

    • Pour UUIDsles valeurs correspondront systématiquement aux nouveaux UUID.

  4. Enregistrez les paramètres et poursuivez le processus de génération ou de transformation des données.

Default Hashing Approaches by Data Type

  1. Discrete Values:

    • Algorithme : Chiffre Hasty Pudding.

    • Comportement : Une correspondance 1 à 1 est créée entre toutes les valeurs discrètes d'une plage. Cela permet de faire correspondre de manière cohérente les valeurs de la source à de nouvelles valeurs hachées.

    • Plage : La plage de valeurs de repli se situe dans la plage autorisée pour un entier de 32 bits, mais la plage réelle dépend du type de données et de la prise en charge de la base de données.

      • Minimum de repli : -2,147,486,647

      • Maximum de repli : -2 147 486 647 2,147,486,647

    • Limitation : Les nombres négatifs seront toujours convertis en nombres négatifs et les nombres positifs en nombres positifs. Une variable interne code le signe des nombres, en utilisant un bit supplémentaire pour le signe, en prenant la valeur absolue et, après le hachage, en multipliant par -1 si le nombre d'origine était négatif. Notez que 0 n'est jamais haché.

  2. Categorical Values:

    • Algorithme : Forward Preserving Encryption (FPE) utilisant l'algorithme FF3.

    • Référence : [Algorithme FF3] (https://pypi.org/project/ff3/)

    • Note : Le nombre minimum de caractères dépend de la taille de l'alphabet utilisé, ce qui donne généralement un minimum de 4 caractères.

  3. Datetime Values:

    • Méthode : Ajouter un décalage aléatoire à la valeur originale.

  4. UUIDs:

    • Méthode : Faire correspondre de manière cohérente un nouvel UUID.

Considerations

  • Les valeurs de hachage dépendent de la valeur globale de la graine, ce qui signifie qu'elles changeront si la graine est modifiée.

  • Le suréchantillonnage n'est pas autorisé pour le hachage et la duplication lorsqu'il est défini sur une colonne de clés. Cette restriction ne s'applique pas aux colonnes ordinaires.

Ordering and Indexing Considerations

Pour garantir un classement précis, il est essentiel que l'application dispose d'un index ou d'une clé primaire dans la table source. En l'absence de ces éléments, l'application effectue par défaut un tri basé sur la première colonne de la table. Toutefois, si la première colonne contient des valeurs dupliquées, l'ordre ne peut être garanti, car il repose sur l'algorithme de tri de la base de données pour traiter les valeurs dupliquées. L'ajout d'un index à la table source résoudra ce problème.

Il est important de noter que l'utilisation du mappage cohérent dans une table sans clés primaires ou index définis peut donner des résultats inattendus. Dans ce cas, l'application utilise la première colonne pour le tri, qui peut ne pas contenir de valeurs uniques, ce qui conduit à des résultats non déterministes.

En exposant le hachage pour les colonnes régulières, les utilisateurs bénéficient d'une plus grande flexibilité dans le traitement des données, garantissant la cohérence et la sécurité des différents types de données tout en respectant les contraintes et les comportements spécifiés.

Last updated