Coffre-fort temporel
Nous allons nous intéresser au problème de la gestion du temps par une puce dite cryptographique.
De nos jours, les solutions cryptographiques sont bien connues et très courantes, il suffit de regarder nos TPM, puce de nos cartes à puce et autres cartes SIM.
Pour rappel, ces puces cryptographiques contiennent une mémoire sécurisée inaccessible de l'extérieur, et des moyens de calcul (processeur) pour chiffrer, déchiffrer, exécuter les opérations basiques du genre vérifier que le mot de passe proposé est le bon.
Ce qui nous intéresse, c'est relâcher un secret à une date fixée.
Commençons par le secret, qui sera numérique. La première idée consiste à placer le secret dans le coffre-fort.
Sauf qu'il peut être très gros, et c'est gênant du point de vue taille mémoire.
S'il s'agit d'un message qui doit être révélé plus tard, comme du texte, une archive zip, des images ─peu importe─, le plus économique est de chiffrer ce message avec des méthodes conventionnelles, puis de cacher la clé de déchiffrement dans le coffre, clé qui sera très petite en place mémoire comparée au message.
L'image chiffrée peut être stockée n'importe où, publiquement.
On notera que cette clé peut se présenter sous la forme d'un mot de passe, puisque l'on sait en dériver une clé de déchiffrement.
Autrement dit, on connait des fonctions où on entre un mot de passe, et il en sort une clé de déchiffrement.
Pour l'instant, pas besoin d'embarquer un algorithme cryptographique dans la puce.
Maintenant il faut ajouter la date.
La date de libération doit être connue de la puce, aussi faut-il l'enregistrer.
à l'abri des modifications. Mais elle n'est pas spécialement secrète.
On notera qu'il faut protéger la date de libération contre toute modification, mais elle n'est pas forcément secrète (on pourrait la consulter).
Maintenant, il faut fournir la date courante.
Comment être sûr que l'on fournit la véritable heure absolue provenant d'une horloge sécurisée ?
Il faudra sécuriser l'horloge dans un endroit sûr, et chiffrer les échanges, ce qui implique l'usage de fonctions de chiffrement dans la puce, et une logistique de gestion des clés de chiffrement.
Ceci dit, on n'est pas à l'abri d'une destruction de l'horloge, ce qui rendrait le système totalement inopérant.
La solution est simple : mettre l'horloge dans le coffre-fort.
Mais en pratique, une horloge requiert une alimentation électrique pour fonctionner.
Si l'horloge n'est pas alimentée, elle ne comptera plus le temps passé. Il serait idéal de mettre également la pile dans le coffre-fort.
Mais la taille des piles requises pour des années de fonctionnement rend cette intégration pratiquement impossible de manière sécurisée, car il ne faut pas qu'un attaquant puisse facilement couper les fils d'alimentation.
Il faut stocker de manière sécurisée le délai ou la date de libération, non que ce soit spécialement un secret, mais il faut être certain de ne plus pouvoir modifier cette donnée à l'avenir.
Le système n'a pas besoin forcément de comparer les dates en permanence. Il suffit de le faire au moment où on en a besoin, ce qui sera plus économe en énergie. On pourra éventuellement fournir de l'extérieur cette énergie pour faire la comparaison, vu que ce n'est pas critique. Mais pas pour l'horloge interne !
Le problème s'est déplacé : comment intégrer une horloge et son alimentation avec une puce cryptographique ?