Un système distribué est un système informatique dans lequel plusieurs ordinateurs distants coopèrent pour effectuer des tâches. Lorsque ces systèmes manipulent des données sensibles (santé, finance, justice, …), maintenir une trace fiable des accès est une exigence de sécurité majeure. Le défi est double : détecter exhaustivement tous les accès pour qu’aucun utilisateur ne puisse échapper à l’audit, tout en empêchant que ces traces soient espionnées par des utilisateurs curieux.
Les premières définitions formelles (c’est-à-dire avec une rigueur mathématique) d’auditabilité pour les systèmes distribués, introduites récemment, reposent sur une hypothèse forte : une lecture n’est auditée que si elle se termine complètement. Un utilisateur malveillant pourrait exploiter cette lacune en lisant une donnée puis en simulant une panne pour éviter d’être détecté. Par ailleurs, si les traces d’accès sont accessibles à tous, un lecteur curieux peut déduire qui a consulté quelles données, créant ainsi une fuite d’information problématique.
Pour résoudre ce double problème, les chercheurs du CEA-List ont reformulé la notion d’auditabilité en introduisant deux nouvelles définitions formelles qui constituent le socle conceptuel de ce travail. La première caractérise ce qu’est une lecture effective : cette nouvelle définition capture le moment où un lecteur connaît la valeur qu’il consulte, même si la lecture est interrompue brusquement. La seconde formalise la notion d’opération non-compromise, qui garantit qu’on ne peut pas distinguer si une opération sur des données a eu lieu ou non.
Sur le plan algorithmique, l’idée centrale est de fusionner l’accès à une donnée et son enregistrement dans le journal d’audit en une seule opération indivisible. Cette fusion assure qu’une lecture laisse une trace même si elle a été interrompue. Pour empêcher les lecteurs d’espionner les accès des autres, le journal d’audit est protégé par un chiffrement simple mais incassable : chaque lecteur est associé à un bit (0 ou 1) initialisé aléatoirement. Lorsque les lecteurs effectuent une lecture, ils inversent leur bit (0 devient 1, ou inversement). Grâce à cette initialisation aléatoire secrète, les valeurs observées ressemblent à une suite aléatoire de 0 et de 1 : impossible donc de déterminer quels lecteurs ont accédé aux données. Seuls les auditeurs possédant la clé secrète initiale peuvent, en comparant l’état final du journal avec cette clé, identifier précisément qui a effectivement lu quoi.

L’algorithme a été formellement prouvé, garantissant que le système fonctionne de manière fiable dans toutes les situations : les données restent cohérentes malgré les accès multiples (quand on consulte une donnée, on voit bien la dernière valeur qui lui a été attribuée), aucun utilisateur malveillant ne peut bloquer le système, toutes les lectures sont effectivement tracées, et la confidentialité des traces est préservée même face à des lecteurs curieux observant l’audit.

Notre solution permet de tracer chaque accès aux données d’un système distribué tout en protégeant la confidentialité de ces accès.