Condensat

L'INE est un identifiant aléatoire qui possède 9 chiffres décimaux et 2 lettres (la première pouvant être un chiffre). Il y a donc 10⁹ × 36 × 26 = 936 milliards d'INE possibles. Il faut 5 octets au minimum pour représenter un INE.

Plutôt que d'échanger et de stocker des données contenant des INE, nous associons dès que possible à chaque INE un condensat. Concrètement un script Python exécute la requête d'extraction des données en se connectant à la base de données de scolarité et retourne un fichier où l'INE est remplacé par son condensat.

Le sel secret est une suite alétoire (arbitrairement longue) de caractères que nous rajoutons à la fin de l'INE formant ainsi un concaténé des deux, avant de lui appliquer une fonction cryptographique de hachage, c'est-à-dire une fonction mathématique dont le calcul par ordinateur est rapide mais pour laquelle le calcul de la réciproque d'une valeur (trouver x tel que f(x) = v) est réputé infaisable. La valeur associée à une entrée x par une telle fonction parait totalement aléatoire, mais elle est bien entendu identique si on la recalcule sur la même entrée x.

flowchart LR
    A[INE] --> C[concaténé]
    B[sel secret]--> C
    C -->|sha224| D(condensat)

Nous utilisons actuellement pour le hachage une fonction de la suite SHA-2, la plus simple, qui retourne un condensat de 224 bits (sha224), soit 28 octets. Cela signifie que nous remplaçon chaque INE par une suite de 28 octets.

Le sel secret doit être partagé entre toutes les sources de données devant être croisées pour produire les données ouvertes. Par contre il peut être changé à intervalle régulier, d'un commun accord. Les jeux de données produits par le traitement ne publient acun condensat.

Il est envisagé de remplacer les condensats initiaux, bâtis à partir de l'INE et du sel partagé, par des condensats dérivés de ceux-ci et d'un sel secret non partagé, pour le temps où les données seront stockées en attente des données d'autres établissements, avec lesquelles elles seront alors croisées. Ce nouveau sel secret et non partagé ne devra pas être présent en mémoire de l'application et de son infrastructure.

Il est possible de retrouver l'INE à partir de son condensat

Il est possible de retrouver l'INE à partir de son condensat, mais c'est difficile voir très difficile.

Excès de confiance en l'état de l'art mathématique. Il est toujours possible qu'une évolution des connaissances cryptographiques conduise à devenir capable d'inverser une fonction de hachage. C'est la raison pour laquelle il ne faut pas publier de condensats en s'en remettant à l'état de l'art mathématique sur le sujet pour assurer l'impossibilité de les inverser. L'état de l'art évolue.

Compromission du secret du sel partagé et table d'inversion. Et si jamais le sel secret partagé tombait entre de mauvaises mains ? En connaissant le sel partagé, il est possible de créer une table de correspondance entre INE + sel et condensat, qui servira à l'inversion. Cette table peut être recalculée à chaque fois ou stockée en mémoire. Elle permettrait de retrouver un INE à partir de son condensat. Il n'est pas nécessaire d'avoir une connaissance préalable des INE réellement utilisés, il s'agit ici de prendre en compte tous les INE possible en suivant leur format. Une telle table prendrait de l'ordre de quelques heures à calculer et, si elle était stockée, elle occuperait au minimum (28 + 5) tera-octets. Une petite entreprise ou un particulier peuvent accéder à de telles moyens de calcul ou de stockage. Il faut donc d'une part conserver tant que possible le secret du sel partagé et d'autre part éviter au maximum d'exposer des données avec condensat. Enfin il faut se garder de manipuler des données sensibles avec ces méthodes. C'est également une bonne raison d'utiliser des condensats dérivés dès lors que les données avec condensats doivent être stockées.

Enfin il faut s'intéresser à la situation où des données avec condensat tombent entre de mauvaises mains. Si une réidentification d'un INE est possible on peut imaginer une variante de l'attaque précédente qui permette de retrouver le sel à partir du couple condensat, INE. Le choix d'un sel complexe, suivant les mêmes recommandations qu'un mot de passe, aide grandement à rendre inefficiente cette méthode.

En résumé en prenant trois mesures simples : choix d'un bon sel, sel conservé secret et surtout des publications n'exposant pas de condensat on ne risque pas grand-chose.