Architecture de la blockchain
La technologie des blockchain peut sembler complexe, mais elle peut รชtre simplifiรฉe en examinant chaque composant individuellement. ร un niveau รฉlevรฉ, la technologie de blockchain fait appel ร des mรฉcanismes informatiques bien connus et ร des primitives cryptographiques (fonctions de hachage cryptographique, signatures numรฉriques, cryptographie ร clรฉ asymรฉtrique) combinรฉes ร des concepts de tenue de dossiers (comme les grands livres annexรฉs seulement). Cette section discute de chaque composante principale individuelle: les fonctions de hachage cryptographique, les transactions, la cryptographie ร clรฉ asymรฉtrique, les adresses, les grands livres, les blocs, et comment les blocs sont enchaรฎnรฉs ensemble.
Fonctions de Hachage Cryptographiqueย
Un รฉlรฉment important de la technologie blockchain est l’utilisation de fonctions de hachage cryptographique pour de nombreuses opรฉrations. Le hachage est une mรฉthode d’application d’une fonction de hachage cryptographique aux donnรฉes, qui calcule une sortie relativement unique (appelรฉ un message digest, ou simplement digest) pour une entrรฉe de presque n’importe quelle taille (par exemple, un dossier, un texte, ou une image). Il permet aux utilisateurs de prendre indรฉpendamment les donnรฉes d’entrรฉe, de les hacher et d’obtenir le mรชme rรฉsultat, ce qui prouve qu’il n’y a pas eu de changement dans les donnรฉes. Mรชme la plus petite modification apportรฉe ร l’entrรฉe (par exemple, la modification d’un seul bit) entraรฎnera un condensรฉ de sortie complรจtement diffรฉrent .
Mรชme si les fonctions de hachage ont de nombreuses applications dans la cryptographie moderne, elles sont peut-รชtre mieux connues pour le rรดle important qu’elles jouent dans l’utilisation pratique des signatures numรฉriques.
Les fonctions de hachage cryptographique possรจdent ces importantes propriรฉtรฉs de sรฉcuritรฉ:
โ elles sont rรฉsistantes ร la prรฉ-image. Cela signifie qu’ils sont ร sens unique; il est impossible de calculer la valeur d’entrรฉe correcte compte tenu d’une certaine valeur de sortie (par exemple, รฉtant donnรฉ un rรฉsumรฉ, trouver x tel que hash (x) = digest) ;
โ elles sont rรฉsistantes ร la deuxiรจme prรฉ-image, ce qui signifie que l’on ne peut pas trouver une entrรฉe hachรฉe sur une sortie spรฉcifique. Plus spรฉcifiquement, les fonctions de hachage cryptographiques sont conรงues de sorte que, รฉtant donnรฉ une entrรฉe spรฉcifique, il est impossible de trouver une deuxiรจme entrรฉe qui produise la mรชme sortie (par exemple, รฉtant donnรฉ x, trouver y tel que hash (x) = hash (y)). La seule approche disponible consiste ร rechercher de maniรจre exhaustive l’espace d’entrรฉe, mais cela est impossible ร faire sur le plan des calculs avec toute chance de succรจs ;
โ elles sont rรฉsistantes aux collisions. Cela signifie que l’on ne peut pas trouver deux entrรฉes hachรฉes vers la mรชme sortie. Plus prรฉcisรฉment, il est impossible sur le plan informatique de trouver deux entrรฉes qui produisent le mรชme condensรฉ (par exemple, trouver un x et un y avec hash (x) = hash (y)) ;
La fonction de hachage cryptographique spรฉcifique utilisรฉe dans de nombreuses implรฉmentations de blockchain est L’algorithme de hachage sรฉcurisรฉ (SHA) avec une taille de sortie de 256 bits (SHA-256). De nombreux ordinateurs prennent en charge cet algorithme en matรฉriel, ce qui le rend rapide ร calculer. SHA-256 a une sortie de 32 octets (1 octet = 8 bits, 32 octets = 256 bits), gรฉnรฉralement affichรฉe comme une chaรฎne hexadรฉcimale de 64 caractรจres .
Input text SHA-256 Digest Value
1 0x6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
2 0xd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35
Hello,World! 0xdffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f .
Puisqu’il existe un nombre infini de valeurs d’entrรฉe possibles et un nombre fini de valeurs de rรฉsumรฉ de sortie possibles, il est possible, mais trรจs peu probable, d’avoir une collision oรน hash (x) = hash (y) (c’est-ร -dire que le hachage de deux entrรฉes diffรฉrentes produit le mรชme condensรฉ). SHA-256 est censรฉ รชtre rรฉsistant aux collisions, car pour trouver une collision dans SHA-256, il faudrait exรฉcuter l’algorithme, en moyenne, environ 2ยนยฒโธ fois (ce qui reprรฉsente 340 milliards, ou plus prรฉcisรฉment 340 282 366 920 938 463 463 374 607 431 738 211 456; environ 3 402 x10ยณโธ).
Pour mettre cela en perspective, le taux de hachage (hachages par seconde) de l’ensemble du rรฉseau Bitcoin en 2015 รฉtait de 300 quadrillions de hachages par seconde (300 000 000 000 000 000 000 / s) . ร ce rythme, il faudrait ร l’ensemble du rรฉseau Bitcoin environ 35 942 991 748 521 (environ 3,6 x10ยนยณ) ans pour fabriquer une collision (notez que l’univers est estimรฉ ร 1,37 x 10ยนโฐ ans) . Mรชme si une telle entrรฉe x et y produisant le mรชme rรฉsumรฉ, il serait รฉgalement trรจs peu probable que les deux entrรฉes soient valides dans le contexte du rรฉseau de blockchain (c’est-ร -dire que x et y sont tous deux des transactions valides).
Au sein d’un rรฉseau blockchain, les fonctions de hachage cryptographiques sont utilisรฉes pour de nombreuses tรขches, telles que:
โย Dรฉrivation d’adresse que nous allons voir dans la section 1.4 ;
โย Crรฉer des identifiants uniques ;
โ Sรฉcuriser les donnรฉes de bloc – un nลud de publication hachera les donnรฉes de bloc, crรฉant un rรฉsumรฉ qui seront stockรฉs dans l’en-tรชte du bloc ;
โ Sรฉcuriser l’en-tรชte de bloc un nลud de publication hachera l’en-tรชte de bloc. Si le rรฉseau de chaรฎnes de blocs utilise un modรจle de consensus de preuve de travail , le nลud de publication devra hacher l’en-tรชte de bloc avec diffรฉrentes valeurs de nonce ย jusqu’ร ce que les conditions requises soient remplies. Le condensรฉ de hachage de lโen-tรชte du bloc actuel sera inclus dans lโen-tรชte du prochain bloc, oรน il sรฉcurisera les donnรฉes de lโen-tรชte du bloc actuel ;
รtant donnรฉ que l’en-tรชte de bloc comprend une reprรฉsentation hachรฉe des donnรฉes de bloc, les donnรฉes de bloc sont รฉgalement sรฉcurisรฉes lorsque le rรฉsumรฉ de l’en-tรชte de bloc est stockรฉ dans le bloc suivant. Il existe de nombreuses familles de fonctions de hachage cryptographiques utilisรฉes dans la technologie de blockchain (SHA-256 n’est pas le seul), comme Keccak (sรฉlectionnรฉ par le NIST comme le gagnant d’un concours visant ร crรฉer le standard de hachage SHA-3 ).
Cryptographie Nonce
Un nonce cryptographique est un nombre arbitraire utilisรฉ une seule fois. Un nonce cryptographique peut รชtre combinรฉ avec des donnรฉes pour produire diffรฉrents digests de hachage par nonce:
Hash (data + nonce) = digest
Seule la modification de la valeur nonce fournit un mรฉcanisme permettant dโobtenir diffรฉrentes valeurs de rรฉsumรฉ tout en conservant les mรชmes donnรฉes. Cette technique est utilisรฉe dans le modรจle de consensus de preuve de travail .
|
Table des matiรจres
INTRODUCTION GรNรRALE
1รจre partie : Cadre de rรฉfรฉrence et mรฉthodologique
Chapitre 1 : Cadre mรฉthodologique
1.1 Prรฉsentation des assurances Non-Vie
1.2 Dรฉfinition du besoin
1.3 Importance de la question
1.4 Formulation des objectifs
Chapitre 2 : Background
2.1 Architecture de la blockchain
2.1.1 Fonctions de Hachage Cryptographique
2.1.2 Transaction
2.1.3 Cryptographie ร clรฉ asymรฉtrique
2.1.4 Adresses et dรฉrivation d’adresses
2.1.5 Grands livres
2.1.6 Blocs
2.1.7 Chaรฎnage de blocs
2.2 Consensus
2.2.1 Modรจle de consensus sur la preuve de travail
2.2.2 Modรจle de consensus de preuve de participation
2.2.3 Modรจle de consensus Round Robin
2.2.4 Modรจle consensuel de preuve d’autoritรฉ / de preuve d’identitรฉ
2.2.5 Modรจle de consensus sur la preuve du temps รฉcoulรฉ
2.2.6 Conflits et rรฉsolutions du grand livre
2.3 Forking
2.3.1 Soft Forks
2.3.2 Hard Forks
2.3.3 Changements cryptographiques et forks
2.4 Catรฉgorisation de la Blockchain
2.4.1 Permission
2.4.2 Sans permission
2.5 Cryptocurrencies
2.5.1 Bitcoin (BTC)
2.5.2 Ethereum (ETH)
2.5.3 Ripple (XRP)
2.6 Limitations de Blockchain et idรฉes fausses
2.6.1 Immutabilitรฉ
2.6.2 Utilisateurs impliquรฉs dans la gouvernance de Blockchain
2.6.3 Blockchain Death
2.6.4 Au-delร du Digital
2.6.5 Cybersecuritรฉ
2.6.6 Cyberattaques et attaques rรฉseau
2.6.7 Infrastructure ร clรฉ publique et identitรฉ
2รจme partie : Analyse dโun smart contract
Chapitre 3 : Infrastructure des smart contracts
3.1 Smart contacts
3.2 Cycle de vie dโun smart contract
3.2.1 Crรฉation
3.2.2 Gel
3.2.4 Exรฉcution
3.2.5 Finalisation
3.3 Modรฉlisation UML dโun smart contract
Chapitre 4 : Etude des plateformes
4.1 Plateformes dโun smart contract
4.1.1 Ethereum
4.1.2 EOS
4.1.3 AION
4.1.4 NEM
4.1.5 Stellar
4.1.6 Hyperledger Fabric (HLF)
4.1.7 Corda :
4.1.8 NEO
4.2 Framework Ethereum
4.2.1 Langages des smart contracts
4.2.2 Outils de dรฉveloppement
4.2.3 Environnements de dรฉveloppement intรฉgrรฉs (IDE)
4.2.4 API front-end en JavaScript
4.2.5 API de back-end
4.2.6 Outils de sรฉcuritรฉ
4.2.7 Outils de test
4.2.8 Explorateurs de block
4.2.9 Testnets et faucets
4.2.10 Clients (pour faire tourner le nลud)
4.2.11 Patterns et anti-pattern
Chapitre 5 : Modรฉlisation des assurances non-vie
5.1 Etape dโune assurance non-vie
5.2 Analyse des situations en assurance oรน la blockchain peut รชtre un outil indispensable
5.2.1 Plus rapide et moins cher
5.2.2 Souscription amรฉliorรฉe
5.2.3 Moins de douleur avec les rรฉclamations
5.2.4 Lutter contre la fraude
5.2.5 Analyse de dรฉcision spรฉcifique pour lโassurance non-vie
3รจme partie : Implรฉmentation de la solution
Chapitre 6 : Prรฉsentation des applications existantes
6.1 The Blockchain Insurance Industry Initiative (B3i)
6.2 Fizzy
Chapitre 7 : Prรฉsentation de la solution
7.1 Quels problรจmes rรฉsolvons-nous?
7.2 Notre solution au problรจme
Chapitre 8 : Implรฉmentation
8.1 Prรฉrequis
8.1.1 Node Js
8.1.2 Ganache
8.1.3 Truffle Framework
8.1.4 Metamask Ethereum Wallet
8.1.5 Template
8.2 Configuration du projet
8.2.1 Configuration de Ganache
8.2.2 Configuration de Metamask
8.2.3 Configuration
8.3 Smart contract
CONCLUSION