Category ArchiveNon classé

Présentation du projet ULCDocuments

Logo officiel du projet

Nous vivons dans un monde de plus en plus numérique. Les outils de retouche photos et vidéos, ou encore les convertisseurs de PDF sont de plus en plus accessibles et sophistiqués. La manipulation de documents officiels devient un jeu d’enfant et pose de sérieux problèmes aux entreprises. D’après Le Monde en 2013, jusqu’à un tiers des personnes interrogées déclaraient s’attribuer « souvent ou toujours un faux diplôme » dans leur CV.

Mais ce n’est pas tout. Peut-être certains se rappelleront la fausse circulaire du gouvernement, publiée sur Twitter provoquant de vives réactions. Ainsi, de nombreuses fake-news peuvent venir envenimer la toile à coups de Photoshop.

Comment pouvons nous ainsi prouver, de façon simple, rapide, et sécurisée l’authenticité de milliers de documents provenant de sources officielles ? Comment rendre accessible à tous une signature numérique suffisamment robuste pour ne pas être falsifiable ?

C’est ainsi qu’est né le projet ULCDocuments.

Au départ, un constat

À l’origine, je souhaitais pouvoir signer au nom de Blockchain-Elite des rapports d’audit, des devis, des factures, lettres officielles aux institutions. Mais quand venait le temps de mettre une signature, je me contentais d’une simple photo que j’avais quelque part sur mon disque dur.

On peut alors très légitimement se poser la question de l’intérêt et de la sécurité de cette méthode « d’authentification » . Rien n’est plus facile que de copier mon image et de l’incruster sur tout et n’importe quoi. En réalité, les signatures manuscrites sur des documents numériques n’ont absolument aucune valeur. La difficulté de reproduction propre à une signature au stylo bille sur du vrai papier n’existe pas. J’ai donc cherché du côté des solutions intégrées aux logiciels PDF, pour être capable de les signer numériquement.

Signer un document PDF de manière conventionnelle demande d’obtenir un certificat numérique auprès d’organismes reconnus par les éditeurs de logiciels. On ne peut donc pas créer nous-même un certificat et signer avec nos documents. Il faut ainsi commander auprès de ces entreprises des abonnements à près de 369$/ an pour pouvoir se l’offrir. De plus, la mise en place est compliquée (souvent des clés USB à brancher à l’ordinateur pour pouvoir signer).

On a donc affaire à des solutions chères, peu utilisées, compliquées à mettre en place et plutôt centralisées ! Et puis, il faut que les logiciels puissent signer les documents produits, savoir lire les signatures, c’est pas du tout gagné…

À chaque problème, sa solution

Puisqu’il est si difficile de pouvoir signer facilement ses documents, et que j’avais besoin d’en signer une quantité assez importante, je me suis dit que je n’avais qu’à essayer de mener un projet pour résoudre ce problème !

Les technologies Blockchain, de par leurs propriétés de sécurité et d’intégrité de l’information sont des supports excellents pour pouvoir gérer ce type d’application. C’est donc grâce à Ethereum, qui supporte les Smart Contract (programmes informatiques décentralisés stockés dans la Blockchain) que j’ai décidé de réaliser le projet.

ULCDocuments, l’outil hyper efficace pour signer TOUS les types de documents.

Le fonctionnement vulgarisé

Chaque fichier numérique est une… simple suite binaire stockée sur le disque. Grâce à des algorithmes mathématiques, il existe différentes manières d’obtenir une empreinte unique d’un fichier (en réalité, elle n’est pas unique, mais la probabilité que deux fichiers aient la même empreinte est vraiment proche de zéro).

Les fichiers que nous voulons signer vont donc passer au travers d’un algorithme qui calcule une empreinte et nous allons ensuite tout simplement publier cette empreinte sur la Blockchain ! Lors de la création de la transaction, notre identité sera vérifiée par clés cryptographiques et les données seront à jamais écrites sur la Blockchain, fournissant au passage une preuve irréfutable sur la date de signature, le contenu signé et l’auteur.

Est-ce que cela pose des problèmes de vie privée ? Oui et non. L’algorithme qui calcule l’empreinte ne fonctionne que dans un sens. Cela veut dire que je peux signer mon document, et que personne ne pourra remonter jusqu’à l’original à partir de l’empreinte. Cependant, si je donne mon document à Alice, puis qu’elle décide de publier sur Internet ce dernier, je ne pourrais pas nier l’avoir signé (c’est pareil pour les diplômes, si Bob publie mon diplôme sur internet avec une mention non satisfaisante, je ne pourrai pas le nier).

Pour pouvoir publier les signatures, il me faut un programme informatique qui s’appelle le Kernel. C’est ce programme sur la Blockchain qui permet la gestion des signatures. On peut l’imaginer comme un grand tableau blanc sur lequel je vais aller écrire au feutre indélébile mes empreintes de fichiers. Pour vérifier une signature, il faut que je me rende sur le bon Kernel, sinon elle n’a pas de sens. En effet, libre à n’importe qui de prendre un tableau blanc et d’écrire dessus ! Je dois donc aller regarder au bon endroit.

C’est là que le rôle du Modérateur est important. Il s’agit d’un endroit sur la Blockchain où sont stockées les identités vérifiées des Kernels. En français, c’est un grand annuaire où est marqué l’adresse des tableaux blancs avec l’identité des personnes ou entreprises responsables de ce qui y est écrit dessus.

Blockchain-Elite possède un modérateur sur la Blockchain et se propose de certifier l’identité des Kernels pour des prix qui seront raisonnables (pas encore fixés). Il faut savoir que c’est facultatif : un Kernel n’a pas besoin d’un modérateur pour fonctionner. Cependant, le logiciel ne pourra pas donner d’identité sur le possesseur du Kernel.

Je n’irai pas plus loin ici, mais pour les curieux, il y a la documentation disponible sur GitHub

Faisons un test pratique !

Imaginez… vous êtes responsable RH d’une grande entreprise française et vous avez ouvert une campagne de recrutement de graphistes. Parmi les meilleurs profils retenus, trois attirent votre attention : ils viennent d’une école de graphisme très réputé !

A l’heure du numérique et des e-mails, tous les candidats ont mis en pièce jointe leurs fichiers ‘image’ et ‘JSON’ (texte formaté d’une certaine manière) de leur diplôme.

Diplôme de Sophie
Tous ces diplômes sont tirés de freepick

De très beaux diplômes que voici (oui, je sais merci…) ! Mais vous aviez lu l’article sur le Monde parlant des faux diplômes dans les CV et… et si l’un d’entre eux avait falsifié le sien ? Après tout, ils sont graphistes, impossible de voir la différence à l’œil !

Essayons donc d’aller vérifier la signature de ces diplômes. Commencez par télécharger les fichiers images des diplômes de cet article en faisant ‘clic droit -> enregistrer l’image sous’. Choisissez un endroit accessible facilement comme le Bureau.

Ensuite, il faut aller chercher sur le Kernel de la fameuse école « TestNet Company ». Le voici :https://ulcdocuments.blockchain-elite.fr/ulcdoc_interactor.html#mode:check&kernel:0xF243bb9aD12055FE16De84A7aAF5459f79C5DC75

Connectez vous sur le site en 1 clic, et vous êtes déjà prêts à vérifier les signatures !

Un message préventif, car l’outil est encore en bêta et fonctionne sur des réseaux de test.

Une fois connecté, le modérateur doit reconnaître le Kernel configuré depuis l’URL comme étant celle de « The Testnet Company ». Vous êtes connecté au bon tableau blanc. On y est presque !

Le Kernel est bien reconnu, on a la barre verte et le nom qui s’affiche !

Faites un glisser/déposer ou cliquez dans la zone blanche en bas à gauche pour importer les fichiers images dans l’application

Dernière étape, on clique sur le bouton « Check » qui va aller calculer les empreintes et regarder si elles sont marquées dans le tableau blanc…

Je vous laisse la surprise de découvrir qui a falsifié son diplôme !

Et pour les développeurs

Pour les développeurs, on peut imaginer un standard pour publier un diplôme. On pourrait comme cela obtenir en plus des images « visuelles » des contenus JSON standardisée, que l’on peut générer, copier, imprimer facilement.

{
  "type": "dimploma",
  "student": "Sophie Barrette",
  "date": "18/03/2019",
  "general_manager": "Mark Spencer"
}
{
  "type": "dimploma",
  "student": "Antoine Fortier",
  "date": "18/03/2019",
  "general_manager": "Mark Spencer"
}
{
  "type": "dimploma",
  "student": "Guillaume Rivière",
  "date": "18/03/2019",
  "general_manager": "Mark Spencer"
}

Il suffit de se rendre dans l’onglet texte sur l’application Web, et de coller dans une carte différente chaque texte. On remarquera aussi rapidement quelle personne a triché ! Bien sur, dans le futur il existera des API pour aller interroger les Kernels sans passer par cette appli.

Pour régler le problème de l’attaque bruteforce, il suffit de rajouter un champ « sel » avec données aléatoires, et on est tranquille :

{
  "type": "dimploma",
  "student": "Nicolas Chanvres",
  "date": "18/03/2019",
  "general_manager": "Mark Spencer"
  "salt":jo@a923ajioa#kajne_
}

Participation à la bêta

Ce projet, que je trouve très prometteur, est encore au stade de bêta. Pour le moment il s’agit d’une bêta fermée : le code source des applications Blockchain n’est pas public et il faut par conséquent demander à Blockchain-Elite de publier pour nous le programme informatique (en simplifié on va aller lui demander un tableau blanc à notre nom).

Une bêta ouverte sera disponible avec code open source complet un peu plus tard, puis viendra les versions stables utilisables sur la vraie Blockchain Ethereum (Wow!).

Bien que l’équipe soit française, pour des soucis de compréhension par le plus grand nombre, l’application est pour le moment qu’en anglais et les démarches de demande de participation à la bêta fermée aussi.

Le formulaire est disponible ici : https://www.blockchain-elite.fr/labs/ulcdocuments-beta-register/

Les prioritaires seront les entreprises ou organisations (écoles notamment). Quelques places sont aussi ouvertes pour les personnes qui ne représentent pas des organisations.

Merci à vous d’avoir lu !