Mà J 11/06/2014 : le registre de lien a été changé : Anonymisation de lien – correction du registre
Dans la version 1.2 de nebule, le nouveau lien de type c
a pour rôle d’anonymiser les actions des entités. Cette anonymisation doit permettre de cacher la relation entre l’entité d’un côté et ses actions sur des objets de l’autre. Il faut donc cacher non seulement le type de lien mais aussi que le lien relie ces objets. C’est la suite des articles liaison secrète et suite de fin 2012.
Il faut malgré tout permettre la libre diffusion des liens générés pour que ceux-ci soient transmis sur un réseau public et ouvert notamment via des entités relais. Cette transmission est assurée par le fait que l’entité signataire apparaît en clair puisqu’il faut être capable de vérifier la signature du lien.
L’anonymisation consiste en l’offuscation du vrai lien dans un lien caractéristique, le lien de type c
. Le vrai lien, celui qui a un intérêt, est chiffré et intégré au lien de type c
. Pour que la vérification des liens soit la plus simple possible, elle ne doit pas gérer le lien offusqué différemment. Le registre du lien doit donc être identique aux autres liens à l’exception de l’action et ce registre doit passer les mêmes tests de validation.
Si le lien offusqué mentionne l’entité signataire, il doit peut-être pouvoir être lisible par une autre entité. C’est le cas si l’on souhaite partage un lien de la même façon que l’on pourrait souhaiter partager un objet. Il faut donc que le lien offusqué fasse aussi référence à l’entité destinataire. L’entité destinataire, ou entité cible, qui peut être la même que l’entité signataire, sera positionnée dans le registre en 5ème position. Cette place est habituellement occupée par l’objet source.
Il faut prévoir une clé de session (un mot de passe) pour chiffrer le lien (chiffrement symétrique) parce que celui-ci n’a pas forcément une taille adéquate pour le chiffrement asymétrique. La clé de session chiffrée doit être encodé en hexadécimal. La clé de session chiffrée sera positionnée dans le registre en 6ème position. Cette place est habituellement occupée par l’objet destinataire.
Enfin, le lien offusqué, chiffré, doit être encodé en hexadécimal. Le lien offusqué sera positionné dans le registre en 7ème position.
Voici donc le registre de lien de type c
:
Signature_Signataire_TimeStamp_c_EntitéCible_CléSession_LienChiffré
Le lien à offusquer est chiffré (symétrique) avec la clé de session et ajouté en position 7. La clé de session est chiffrée (asymétrique) avec la clé publique de l’entité cible et ajoutée en position 6. L’entité cible est ajoutée en position 5.
On ne peut dans ce cas pas offusquer la relation entre l’entité signataire et l’entité cible. La présence de la première entité est indispensable pour vérifier la signature du lien. La présence de la seconde entité est nécessaire pour que le lien puisse lui parvenir et lui indiquer que le lien la concerne. Le reste du lien est complètement offusqué.
Lors du traitement des liens d’un objet, Il faut à la fois consulter les liens de l’objet mais aussi consulter les liens offusqués attachés à l’entité courante. Ensuite seulement peut se faire le nettoyage des liens marqués supprimés.
On remarquera que cette façon de procéder permet bien sûr de ne pas révéler certains liens, mais aussi de marquer secrètement comme supprimés des liens alors qu’ils sont encore publiquement reconnus comme valides. Dans le même ordre d’idé, on peut camoufler un objet sous un type mime assez banal mais offusquer un lien dévoilant sa vraie nature. Un vrai terrain de jeux de cache cache en perspective !
Il reste un autre aspect de l’anonymat. Il peut être nécessaire de permettre des échanges entre deux entités sans qu’il n’y ai de lien entre elles, même de liens offusqués. Ce problème peut être résolu avec la génération d’entités esclaves le temps de quelques échanges. Il n’est pas possible dans ce cas de rattache directement ces entités esclaves à notre entité principale ni d’héberger cette entité sur son serveur personnel sous peine de dévoiler immédiatement la relation entre les deux. Il faut aussi prévoir un mécanisme pour que des entités puissent attendre des liens d’entités inconnues tout en étant capable de vérifier ces liens. Une fois le contact établit, il devient aisé, via l’offuscation de liens, de prouver sa véritable identité, c’est à dire de faire un lien entre entité esclave et entité maître. Il y a encore de la recherche à faire à ce niveau…