La blockchain, et par extension le concept de crypto-monnaies en général, est définitivement la technologie la plus en vogue du moment. Après le Cloud, tous les regards des éditorialistes de la Tech sont tournés sur ce qui promet être le Next Big Thing.

 

 

Pour rappel, une blockchain base de données décentralisée distribuée, vérifiable et donc infalsifiable. Ce sont ces propriétés qui permettent l’existence même des crypto-monnaies.

 

Les crypto-monnaies ont ensuite évoluées pour devenir plus que de simples monnaies virtuelles, comme a pu l’être le Bitcoin, avec l’avènement de l’Ethereum et des Smarts Contracts personnalisés.

 

Qu’est-ce qu’un Smart Contract ?

Selon Wikipedia, les contrats intelligents (en anglais Smart Contracts) sont des protocoles informatiques qui facilitent, vérifient et exécutent la négociation ou l’exécution d’un contrat, ou qui rendent une clause contractuelle inutile (car rattaché au contrat intelligent). Les contrats intelligents ont généralement une interface utilisateur et émulent la logique des clauses contractuelles.

 

Du point de vue technique, un Smart Contract (SC) est un ensemble de fonctions et de données, compilé en un bytecode spécifique et stocké sur la blockchain à une adresse spécifique. Si un nœud du réseau Ethereum désire exécuter une des fonctions d’un SC, il doit :

  • Ajouter une transaction à la blockchain afin de transférer de l’ether (la « monnaie » d’Ethereum) vers l’adresse du SC, en précisant la fonction souhaitée et les paramètres nécessaires.
  • Attendre que les mineurs du réseau exécutent la fonction et parviennent à un consensus.
  • Une fois le consensus obtenu, la transaction est validée et le résultat final est transmis au nœud.

 

Pour rappel, qu’est-ce que les mineurs ? En simplifiant, ce sont d’autres nœud du réseau Ethereum qui valident les transactions de la blockchain à en vérifiant la validité. Dans le cas d’un SC, la fonction appelée est jouée avec les paramètres fourni. Si le mineur trouve le même résultat, ce dernier est ajouté à la transaction, désormais validée.

Après cette introduction, on en arrive au cœur du sujet, que l’on peut résumer ainsi : est-ce que la technologie Blockchain permet des avancées concrètes dans le domaine de la sécurité informatique ? Face à la montée des problématiques de sécurité liés à l’IOT, l’IAM voire même la sécurité personnelle, la blockchain est-elle la solution miracle ?

 

A World of Devices

L’IOT est probablement une des avancées technologiques les plus disruptives de ces dernières années, en tant qu’évolution d’Internet à un stade quasi-organique. En effet, ce dernier, jusqu’alors confiné à des terminaux dédiés, va désormais pénétrer le moindre objet de nos vies courantes. Les objets connectés seront bientôt partout mais, problématique centrale, seront aussi largement autonomes et interconnectés.

Quelle serait une plateforme IOT optimale dans un futur proche ? Un mesh d’objets connectés communicants directement entre eux, sans centralisation d’aucune sorte.

Une problématique bien connu des entreprises va donc émerger avec de nouveaux enjeu, celle du contrôle des accès. En effet, en l’absence d’une autorité de contrôle centralisé des accès, impossible de se reposer sur les modèles classique tel que le RBAC.  Une question émerge donc : Comment pouvons-nous obtenir un système de contrôle d’accès fiable et décentralisé pour un réseau d’IOT ? Avec une blockchain !

 

Blockchain saves the World

Une première tentative de blockchain based access control model (BBAC) consistait à simplement stocker les politiques de sécurité pour chaque objet sur la blockchain. Certes, ces regles étaient de fait décentralisées et fiables mais, en utilisant la blockchain uniquement comme un support de stockage, on gaspille largement les capacités de calculs offert par les SC. Les objets connectés n’étant pas très doté de ce côté, cela n’est pas négligeable

Comment les exploiter ? En stockant sur la blockchain non pas seulement les politiques de sécurité mais aussi les algorithmes de vérification ! Un SC sera donc l’ensemble unique à chaque pair objet-sujet de leur règles mutuelles, additionné du code vérifiant les politiques et renvoyant allow ou deny.

Comment cela pourrait fonctionner ? Disons qu’un serveur (le sujet A) souhaite accéder à une ressource détenue par un objet connecté (l’objet B).

  • A ajoute une transaction Ethereum consistant à l’envoi d’Ether vers l’adresse du Smart Contract le liant à B (on suppose ici que cette adresse est connu). Les paramètres sont :
    1. La ressource possédée par B souhaitée
    2. L’action souhaitée (lecture, écriture…)
  • Le code de vérification est exécuté par les mineurs avec les paramètres fournis. La transaction est définitivement validée par la blockchain avec ajout du résultat obtenu par consensus par les mineurs.
  • Le résultat est transmis à A et

 

Ainsi, A n’a pas la possibilité de falsifier le résultat de la transaction car cette dernière a été validé par consensus par le réseau de mineur.

A noter que, dans le cas ou A tente d’accéder directement à une ressource de B sans passer par la blockchain, le fonctionnement sera exactement le même, à la différence que la transaction serait initiée par B.

Pour finir, on peut citer quelques aspects moins reluisants, le plus important étant les performances. En effet, pour que la demande d’accès soit validée, il faut que la transaction soit validée par le réseau Ethereum. Or, cela peut prendre quelques secondes. Impossible d’obtenir des performances élevées sans une évolution de la technologie blockchain, une baisse de la sécurité ou l’ajout de systèmes annexes.

 

Malgré tout, cette technologie reste incroyablement prometteuse et pourrait pénétrer durablement le monde de l’informatique.