La certification de document n’est pas une chose simple comme on pourrait le croire. Il existe plusieurs méthodes qui ont plus ou moins des inconvénients.
La certification par clé asymétrique
Le mot, qui vient quand on parle de certification, est la signature. Il est très “facile” de faire la signature d’un document avec une date de signature comme sur un contrat. On utilise une clé dite “Asymétrique”, c’est une paire de clé l’une secrète et l’autre public. La public peut être donnée à tous le monde tandis que la privée doit être garder secrète. Du coups pour signer un document, on effectue une opération de signature sur le document avec la clé privée.
Pour vérifier, il existe une opération dit de “validation” avec la clé public.
C’est génial, nous avons signés un document, du coups le document est infalsifiable… Et bien non. Car si la personne, qui a signé le document, créé un nouveau document et resigne le nouveau document pour faire un faux est un jeu d’enfants. Bien sûre au moment de la signature, il ne faut pas oublier de changer l’heure du document. Donc cette technique de signature ne sert juste qu’a prouvé l’origine du document sans tenir compte de la date.
La blockchain
La deuxième technique qui plus sérieuse, celle de la blockchain.
Fonctionnement de la certification par blockchain
Comme la blockchain peut nous aider? La blockchain est une succession de bloc daté chaîné les uns autres via de la cryptographie. Je ne rentre pas dans les détails, mais pour modifier les informations du bloc numéro 125, il faudra modifier les blocs 126,127,128, …. jusqu’au dernier. Il est facile de falsifier une blockchain que dans un cas si vous avez une blockchain privée sans connexion vers une blockchain public et si la blockchain n’est pas en consortium.
Le soucis avec les blockchains, c’est la taille des données qu’ils peuvent stocker sur une transaction quelques octets (<1Ko). Comment faire pour qu’un document rentre dans une transaction blockchain ? Il faut utiliser une méthode cryptographique qu’on appel le hash ?
Qu’est ce qu’un hash? C’est une empreinte ( comme une empreinte ADN ) qui a la même taille pour tous les fichiers. Par exemple un fichier qui fait 100Ko aura une empreinte de 64o et un autre fichier aura un hash de 64o.
Il existe plusieurs type de hash: md5, SHA1, SHA2,SHA3,RIPEMD160. Le MD5 et SHA1 sont obsolètes car très facile à hacker. Le dernière née sha3-512 commence a été utilisé partout.
L’idée du coups dans les blockchains, c’est de créer un hash du document, si possible de type sha3-512 et de l’insérer dans la blockchain tous simple.
Comment faire l’insertion dans la blockchain ? Le document va être hashé comme vue précédemment, puis va être mis dans une transaction, ensuite envoyé dans la blockchain afin la blockchain mettre la transaction dans un bloc et la chaîne avec son précédent. Le hash du document restera à vie dans la blockchain, enfin la vie de la blockchain.
Actuellement, c’est la méthode la plus sûre pour savoir si un document n’a pas été modifié.
Quels sont questions à se poser pour élaborer une certification
La durée d’une certification d’un document ?
Qui dit certification numérique d’un document, dit “Durée”. “Comment cela se peut-il en blockchain” ? Car précédemment, j’ai dit que la donnée enregistrée dans la blockchain est à vie. Et bien, le problème viens du hash. Vous allez comprendre très vite où je veux en venir. Le hash permet de réduire un document de plusieurs Mégaoctet en 64octets. Ça voudrait dire que certains fichiers de même taille aurait le même hash. Normal non ? C’est de qu’on appelle les collisions.
Un exemple, avec un peu de math simple niveau 6ème. Un fichier de 4 000 000 octets ( 4Mo ) qui se réduit de 64octets. Ca fait 4 000 000/64=62500, en gros pour un hash on a 62500 possibilités. Pour les matheurs plus poussés, ce n’est pas tous a fait vrais car la répartition n’est pas la même pour un hash donné.
Revenons à nos moutons, créer un autre fichier qui a le même hash avec celui qui se trouve dans la blockchain, c’est possible mais peu probable sur du SHA3. Pour trouver un hash équivalent, il faut énormément de calcul. Mon serveur fait 2400Hash de 2Mo par secondes (avec l’aide des cartes graphiques). Le nombre de signature possible sur sha3-512 (64 octets ) est de 1,8447×10¹⁹ possibilités, donc si je fais 1,8×10¹⁹/2400 soit 2,08×10¹² secondes soit 578694444 heures de calcul. Même si j’ai un datacentre qui ferais les calculs. C’est peu probable.
Le soucis, c’est qu’on n’arrête pas la technologie. Les calculs sont plus rapides à chaque nouvelle génération de carte. Sur les cartes GPUs de nouvelle génération, nous ne passons très rarement qu’on divise les calculs par 100 ( voir même de 10 ) d’une année sur l’autre. On peut estimer qu’au bout de 10ans, cryptographie SHA3 devient obsolète.
Dans le cas ci-dessus, nous voyons que nous pourrons un jour ou l’autre faire de “faux” fichier certifié. Ça suffit pour mettre le doute. Ses “faux” fichiers seront dans un premier temps des fichiers illisibles, dont on verra tous de suite un soucis. La première chose à dire si le fichier est illisible et que le hash est correct, c’est l’informatique qui a mal enregistré le fichier lors de la certification. Le principal soucis est pour les documents images. En dégradant l’image, on pourra créer de FAUX document tous à fait lisible ET CERTIFIER. Pour les fichiers tests ou formater, c’est un peu plus compliqué, car les faux doit s’apparenter à des vrai.
Pour finir, un fichier ne pourra être certifié que pendant 5 ans. Pourquoi 5 ans? Imaginez vous en 2025, on certifie un document pour 10 ans. Hors ca nous amène en 2035. Comme la date butoir est en 2030, le document peut être corrompu. C’est pourquoi, un document est généralement certifié pour 5 ans jusqu en 2025.
Le bouleversement dans les prochaines années
La cryptographie va connaître un bouleversement dans ses prochaines années. Grâce à l’ordinateur Quantique, ça tous le monde le sait. Mais personne ne sais quand ? Déjà qu’est ce qu’un ordinateur quantique ? C’est une grosse machine plongée dans un froid à 0.02K (-273,13°C) afin de rendre les matériaux “supraconducteur” et rendre plusieurs états pour une opération. L’avantage de ce processeur est de manipuler de grand nombre en un minimum de temps avec l’algorithme de Shor ( de son inventeur Peter Shor). Si vous connaissez les mathématique voici la page wikipédia. On sait faire des ordinateurs quantiques depuis une 10aine. Mais ce n’est qu’en 2019 que Google avec un ordinateur 53Qbit a réalisé un calcul que les supers-calculateurs peuvent difficilement résoudre. On est actuellement dans une période charnière dit “supermatie quantique” même si IBM conteste les résultats. Un autre point qui fait que les ordinateurs quantiques subissent un bouleversement, c’est la découvert de nouveaux matériaux supraconducteurs en 2019. Ses matériaux vont permettre de créer de nouveau type d’ordinateur.
Que représentent 53qbit ? C’est 2^53 états (100 000 000 milliard d’état) au lieu de 0 ou 1 en ordinateur classique. Du coups, le nombre de qbit est élevé, plus de nombre de calcul simultanée est élevé ( c’est très schématique ). Mais pas de panic, le processeur de Google ne résoudre pas tous les algorithmes quantiques ( notamment celle de shor), mais juste l’algorithme dit “échantillonnage quantique”. On notera que les meilleurs cartes graphiques en 2019 peuvent simuler de ordinateur quantique de 11qbits.
Dès que ses processeurs seront mis aux points, la hash de notre blockchain seront obsolètes plus vite que prévu. Après on a plus de chance de voir des processeur quantique en 2027 quand 2023. Certains experts parlent de 2025 mais j’y crois pas trop. Donc le risque sur 5 ans est un peu plus élevés que sur le modèle traditionnel. Ce qui nous amené avec une certification sur 3 ans avec une date limite en 2027.
Pour information, les algorithmes actuelles sur CPU traditionnelles ne sont pas compatibles avec les algorithmes quantiques. Il va de soit que les algorithmes les plus intéressants à casser sont:
- AES, qui est utilisé pour crypter des données asymétriques.
- SHA-256 utilisé dans certains certificats
- SHA-512 utilisé dans certains chiffrements des passwords
- ECDSA utilisé dans certaines blockchains pour créer des “wallets” comme le bitcoin et ethereum.
Quelques articles intéressants pour ceux qui veulent aller plus loin dans cette problématique:
- Shuxia Ma, Weidong Jin. A New Parallel Quantum Genetic Algorithm with Probability Gate and Its Probability A New Parallel Quantum Genetic Algorithm with Probability-Gate and Its Probability Analysis. International Conference on Intelligent Systems and Knowledge Engineering ISKE
- Melanie Mitchell, Peter T. Hraber, and James P. Crutchfield, Revisiting the Edge of Chaos: Evolving Cellular Automata to Perform Computations, Complex Systems, 7, 89–130 (1993).
- P.W. Shor, Algorithms for Quantum Computation:Discrete Logarithms and Factoring, Proceedings of the 35th Annual Symposium on the Foundation of Computer Sciences, pp. 20-22, 1994.
- M. Mitchell, P. Hraber, and J. Crutchfield, “Evolving cellular automata to perform computation: Mechanisms and impedients,” Phys. D, vol. 75, pp. 361–391 (1994).
- L.K. Grover, A Fast Quantum Mechanical Algorithm for Database Search, Proceedings, 28th Annual ACM Symposium on the Theory of Computing, ACM Press, pp. 212-221, 1996.
La solution anti-vieillissement
Pour que la certification d’un document ne périme pas. Il n’existe qu’une solution, celle de représenter le document avec les dernières techniques de flashage. Mais cela nécessite d’avoir le document sauvegardé dans le logiciel de certification. Comme sur la blockchain SIAcoin.
L’autre solution est d’enrichir la certification en rajoutant plus d’informations sur le document qui retardera la durée de certification.
Conclusion
En conclusion, la certification d’un document sans sauvegarde du document dans le logiciel de certification est de 3 ans ( voir 5 ans avec risque lié aux nouvelles technologies ). La certification d’un document à vie nécessite obligatoirement une nouvelle certification avec les techniques futurs de hash.
La conception des logiciels de certification
Lors d’un fichier est vérifié par un logiciel, il faut avoir confiance en ce logiciel. Il faut prouver que le programme ne comporte pas de soucis d’intégration et même dans ses dépendances s’il y en a.
Il existe plusieurs languages:
- Le langage C, la validation est assez simple car il y a qu’un programme principal et les libs ne bouge pas.
- Le langage Java, la validation est un peu plus compliqué car il faut validé que toutes les classes n’ont pas été modifiées.
- Le langage Golang, la validation est plus simple car le programme ne dépend d’aucune lib lors de sont exécutions. Il suffit juste de validé le lib de compilation.
- Le langage PHP, la validation est rapide car il ne fait pas encore du web3, donc il ne peut pas faire de certification direct.
- Le langage NodeJS, la validation est très compliquée et très coûteux. Car le langage a une sécurité faible, une dépendance des packages hasardeuses, … Même le créateur Ryan Dahl critique le nodejs.
Il n’y a que 3 langages qui peuvent faire une bonne validation pour le processus de certification: Golang/C/Java.
Mise en place particulière
La conception ne fait pas tous, il y a aussi la mise en place. Dans le schéma 1 nous avons vu plusieurs processus.
- Premier élément a faire attention la transmission du document entre la source et le logiciel de certification. Généralement, on trouve l’https avec un certificat donné par la PKI de la société.
- Deuxièmement élément à faire attention, c’est l’existence de la passphrase pour le compte qui utilise la certification.
- Troisième point validé qu’il reste du gaz dans le compte qui va faire la transaction. Où fait un smart-contrat dit “GSN”, le GSN permet à des utilisateurs qui n’ont pas gaz d’utilisé le service. En gros, c’est comme si que vous fait un appel en PVC ( pour les plus jeunes, ce n’est pas celui qui fait l’appel qui paie mais celui qui reçoit l’appel ).
- Quatrième élément la transmission vers le point d’entrée à la blockchain. Là aussi on retrouve du https.
Conclusion
Pour conclure, un logiciel de certification certifie toujours sur une durée donnée sur le quel l’éditeur doit s’engager. Il va de soit d’un document avec une certification de moins d’un an n’a pas de soucis particulier. Mais par contre si vous entendez une certification à vie, c’est très souvent c’est faux et purement marketing. Et pour finir, l’implémentation correct doit être vérifié par un expert sécurité du type “ISO 27001”, ce qui n’est pas souvent le cas.