WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Sécurisation d'un réseau bancaire avec la technologie blockchain


par Kawter BOUDGHENE STAMBOULI
Université Abou Bekr Belkaid de Tlemcem - Master 2 réseaux et télécommunications 2020
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

    Année Universitaire 2019-2020

    ÉÜíÜÈÜÚ ÜÔÜáÇ ÉÜíÜØÇÑÜÞÜíãÏáÇ ÉÜíÑÜÆÇÒ ÜáÌ Ç ÉÜíÑæÜåÜãÜáÌÇ

    REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE

    íÜãÜáÜÚáÇ ËÍ ÜÈáÇæ áíÇ ÜÚáÇ ãÜíáÜÚÜÊáÇ ÉÑÇÒæ

    Ministère de l'Enseignement Supérieur et de la Recherche Scientifique

    - äÇÜÓãáÜÊ - ÏÜíÇ ÜÞÜáÜÈ ÑÜßÜÈ Èít ÉÚãÇÜÌ

    Université Aboubakr Belkaïd- Tlemcen -
    Faculté de TECHNOLOGIE

    MEMOIRE

    Présenté pour l'obtention du diplôme de MASTER

    En : Télécommunications

    Spécialité : Réseaux et Télécommunications

    Par : BOUDGHENE STAMBOULI Kawter BOUDJEMAA Chaïmaa

    Thème

    Sécurisation d'un réseau bancaire avec la technologie

    Blockchain

    Soutenu publiquement, le 26 / 08 / 2020, devant le jury composé de :

    Mr. MERZOUGUI Rachid

    PR

    Univ. Tlemcen

    Président

    Mr. HADJILA Mourad

    MCA

    Univ. Tlemcen

    Directeur de mémoire

    Mr. BENMOUSSAT

    MCB

    Univ. Temouchent

    Co-Directeur de mémoire

    Chemseddine

     
     
     

    Mr. IRID Sidi Mouhamed

    MCA

    Univ. Tlemcen

    Examinateur

    Dédicaces

    Je dédie ce travail

    A ma famille, elle qui m'a doté d'une éducation digne, son amour a fait de moi ce que je suis
    aujourd'hui. Je suis très fière d'être votre fille et de pouvoir enfin réaliser, ce que vous avez
    tant espéré et attendu de moi.

    Mon adorable mère Soufi Merzougue Faiza Quoi que je fasse ou que je dise, je ne saurai
    point te remercier comme il se doit. Ton affection me couvre, ta bienveillance me guide et ta
    présence à mes côtés a toujours été ma source de force pour affronter les différents obstacles.

    A mes très chers frères Younes et Lokmane Rezk Ellah. Puisse Dieu vous donne santé,
    bonheur, courage et surtout réussite. J'espère que nous resterons toujours aussi unis.

    A mon adorable petite soeur Marwa Firdawse qui sait toujours comment procurer la joie et le bonheur pour toute la famille.

    A ma chère tante Kara Ali Amina cela n'a pas cessé de me conseiller encourager et soutenir tout au long de mes études. Que Dieu la protège et leur offre la chance et le bonheur.

    A mon cher grand-père, Qui je le souhaite une bonne santé. Ainsi, à ma grand-mère que dieu

    vous grade.

    A ma défunte grand-mère qui disait souhaité voir de là où elle est réussie mes études,
    qu'ALAHE l'accueille dans son vaste paradis. Si Dieu a mis le paradis sous les pieds des
    mères, ce n'est pas pour rien. Tu représentes la source de tendresse et l'exemple du
    dévouement qui n'a pas cessé de m'encourager et de prier pour moi. Ta prière et ta
    bénédiction m'ont été d'un grand secours pour mener à bien mes études. Je t'aime
    énormément.

    A ma confidente : Mlle Chaima Oualichaouche Conserve-moi ta profonde amitié et ton
    immense amour et sois convaincue qu'il en est de même pour moi.

    A Mlle Nadjet Bouchenafa et Mlle Riham Boudghene Stambouli vous êtes la plus belle
    rencontre scientifique et amicale. Vos conseils et encouragements m'ont donné du tonus pour
    aller de l'avant. Je sais que tu es là, jamais je ne t'oublierai puisque je te dois beaucoup
    d'affection et amour !

    Sans oublier mon binôme Chaimaa pour son soutien moral, sa patience et sa compréhension tout au long de ce projet.

    [I]

    Mlle. Boudghene Stambouli Kawter

    Dédicaces

    Je dédie ce travail

    Avec l'expression de ma reconnaissance, je dédie ce modeste travail à ceux qui, quels que
    soient les termes embrassés, je n'arriverais jamais à leur exprimer mon amour sincère.

    A mon cher père Mouhamed, Permettez-moi de vous exprimer mon grand amour mon
    attachement et ma plus haute considération pour Votre personne. Cher père, veillez trouver,
    dans ce modeste travail, le fruit de vos sacrifices ainsi que l'expression de ma profonde
    affection et ma vive reconnaissance Que Dieu vous protège et vous garde.

    Ma Chère Maman, Si Dieu a mis le paradis sous les pieds des mères, ce n'est pas pour rien.
    Affable, honorable, aimable : Tu représentes pour moi le symbole de la bonté par excellence.
    Aucune dédicace ne saurait être assez éloquente pour exprimer ce que tu mérites pour tous les
    sacrifices que tu n'as cessé de me donner depuis ma naissance, durant mon enfance et même à
    l'âge adulte. Tu as fait plus qu'une mère puisse faire pour que ses enfants suivent le bon
    chemin dans leur vie et leurs études. Je prie Dieu, le tout-puissant, de l'accueillir en son
    vaste paradis. Amen.

    A ma chère soeur Karima et son marie Mouhamed, et son petit adorable Ayoub. Je vous
    souhaite la réussite dans votre vie, avec tout le bonheur qu'il faut pour vous combler. J'ai de
    la chance de t'avoir. Que Dieu vous garde.

    A ma petite soeur Wafaa, Je te dédie pour tous les moments de joie et de taquineries qu'on a
    passé ensemble. Je prie dieu, le tout puissant de t'accorder santé, bonheur et
    succès...adorable SOEUR !

    Mon cher frère Nassreddin, Ambitieux comme tu es, je te souhaite beaucoup de succès et de
    bonheur pour couronner ton courage et tes sacrifices Puisse Dieu t'accorder la bonne chance
    et la réussite dans tes études. J'espère que nous resterons toujours aussi unis.

    Au Dr.Ghomari Meriem l'épouse de mon père qui ma aidé et supporté dans les moments

    difficiles.

    A celui que j'aime beaucoup et qui m'a soutenue tout au long de ce projet, ma chère amie
    Fatima Medjahdi, et bien sur mes tantes Amel Khebichat et Soumia Boussaidi sans oublier
    mon oncle Fouzi Boudjemaa.

    A toute la famille Boudjemaa, et à ma cher binôme Kawter pour son soutien moral, sa
    patience et sa compréhension tout au long de ce projet.

    [II]

    Mlle. Boudjemaa Chaimaa

    [III]

    Remerciement

    Tout d'abord nous adressons nos plus sincères sentiments de reconnaissance et de remerciement envers ALLAH, le clément et le miséricordieux, lequel nous a accordé la force et le courage de mener bien ce modeste travail.

    Notre gratitude s'adresse à Monsieur Hadjila Mourad Professeur à l'université
    de Tlemcen pour son encadrement, son orientation, ses conseils et la disponibilité
    qu'il nous a témoignée pour nous permettre de mener à bien ce travail. Ses
    conseils et son support moral nos énormément aidé à mener à terme ce travail.

    Nos vifs remerciements à notre Co-encadreur, Monsieur Benmoussat
    ChemsEddin
    , Professeur à l'université de Ain-Temouchent, pour nous avoir
    codirigé, soutenu, encouragé et orienté tout au long de ce projet.

    Nos vifs remerciements aux membres du jury d'avoir accepté d'examiner et
    d'évaluer notre travail. Un grand merci à tous les professeurs de
    Télécommunications qui ont participé à notre progrès pendant ces 5 ans.

    Enfin, nos remerciements à tous nos amis, nos collègues qui nous ont soutenu et encouragé pour la réalisation de cet humble mémoire.

    [IV]

    Résumé

    Notre monde change et évolue de plus en plus au rythme des innovations et des nouvelles technologies. La blockchain a été rendue populaire à la suite d'un article que le magazine The Economist lui a consacré fin 2015. Nous entendons de plus en plus parler dans la presse du bitcoin, une monnaie virtuelle basée sur la technologie blockchain. Ce projet de fin d'études vise à vulgariser et démystifier, de manière pédagogique, le fonctionnement de la blockchain. Nous en expliquerons les grandes lignes sans avoir besoin d'être un expert en informatique pour comprendre. Cette technologie a le potentiel de changer les règles du jeu pour de nombreux secteurs, y compris le secteur financier, à commencer par le système bancaire. Ce nouveau modèle de confiance basé sur un système décentralisé et partagé veut remplacer l'intermédiaire de confiance existant. Un nouveau monde émerge. Dans ce travail, nous nous intéressons à l'utilisation de la Blockchain pour la gestion des opérations sur les transactions bancaires. La proposition donne solution aux différents problèmes liés au domaine du vol et fraude de la monnaie en se basant sur des transactions similaires à la transaction du bitcoin.

    Mots clés : Blockchain, cryptocurrency, bitcoin, ethereum, litcoin, transaction, sécurité informatique, réseau bancaire, réseau personnel, réseau local, les réseaux métropolitains, cryptographie, adressage IP.

    [V]

    Abstract

    Our world is changing and evolving more and more at the pace of innovations and new technologies. The blockchain was made popular following an article that The Economist magazine devoted to it at the end of 2015. We hear more and more in the press about bitcoin, a virtual currency based on blockchain technology. This end of studies project aims to popularize and demystify, in an educational way, the functioning of the blockchain. We will explain the main lines without having to be a computer expert to understand. This technology has the potential to change the rules of the game for many sectors, including the financial sector, starting with the banking system. This new trust model based on a decentralized and shared system wants to replace the existing trust intermediary. A new world is emerging. In this work we were interested in the use of Blockchain for the management of operations on bank transactions. The proposal provides a solution to the various problems related to the theft and fraud of money based on transactions similar to the bitcoin transaction.

    Keyword: Blockchain, cryptocurrency, bitcoin, ethereum, litcoin, transaction, computer security, banking network, personal network, local network, metropolitan networks, cryptography, IP addressing.

    ÕÎáã

    áÇÞã ÏÚÈ blockchainÉíäÞÊ ÑÔä ãÊ .ÉÏíÏÌáÇ ÊÇíÌæáæäßÊáÇæ ÊÇÑÇßÊÈáÇÇ ÉÑíÊæÈ ÑËß ÑËß ÑæØÊíæ ÑíÛÊí ÇäãáÇÚ äÅ ÉáãÚ íå æ bitcoináæÍ ÊáÇÌãáÇ í ÏíÒãáÇæ ÏíÒãáÇ ÚãÓä .2015 ãÇÚ ÉíÇåä í The Economist ÉáÌã åÊÕÕÎ

    íÆÇåäáÇ

    ÚæÑÔãáÇ

    ÇÐå Ïåí .2009

    ãÇÚ í blockchain

    ÉíäÞÊá ÞíÈØÊ áæ ÊäÇß

    íÊáÇ

    æ .ÉíäÞÊáÇ åÐå ìáÚ ÏãÊÚÊ ÉíÖÇÑÊÇ

    ÉÌÇÍáÇ äæÏ ÉíÓíÆÑáÇ ØÇÞäáÇ ÍÑÔäÓ .ÉíãíáÚÊ ÉÞíÑØÈ ÇåíáÚ ÖæãÛáÇ ÉáÇÒÅæ blockchain áãÚ ÉÞíÑØ ãíãÚÊ ìáÅ ÉÓÇÑÏáá

    Çåí ÇãÈ ÊÇÚÇØÞáÇ äã ÏíÏÚáá ÉÈÚááÇ ÏÚÇæÞ ÑííÛÊ ìáÚ ÉÑÏÞáÇ ÇåíÏá íÊáÇ ÇíÌæáæäßÊáÇ åÐå ãåá ÑÊæíÈãß ÁÇÑÈÎ äæßä ä ìáÅ

    . íÒßÑãáÇáÇ

    ãÇÙäáÇ Úã

    ÏäÊÓãáÇ íáÇÍáÇ

    ÉÞËáÇ

    ØíÓæ

    áÇÏÈÊÓÇ

    ÚÇØÞáÇ ÇÐå

    ÏíÑí

    . íÑÕãáÇ

    ãÇÙäáÇ äã

    ÇÁÏÈ íáÇãáÇ

    ÚÇØÞá Ç

    åÐå áÍá ÇÍÇÑÊÞÇ

    ãÏÞä

    ËíÍ

    ÉíÑÕãáÇ

    ÊáÇãÇÚãáÇ ìáÚ ÊÇíáãÚáÇ ÉÑÇÏáÅ

    Blockchain

    ãÇÏÎÊÓÇÈ

    äíãÊåã

    Çäß áãÚáÇ ÇÐå í

    [VI]

    bitcoin

     

    ÉáãÇÚãá ÉåÈÇÔãáÇ ÊáÇãÇÚãáÇ

    ìáÚ ÊíäÈ íÊáÇ áÇíÊÍáÇÇ

    æ ÉÞÑÓáÇ áÇÌãÈ

    ÉÞáÚÊãáÇ

    ÉáßÔãáÇ

    [VII]

    Table des matières

    Dédicaces I

    Remerciement III

    Résumé IV

    Abstract V

    ÕÎáã VI

    Liste des tables XIV

    Liste des équations XIV

    Liste des figures XIV

    Liste des abréviations XX

    Introduction générale 1

    Chapitre I Généralités et présentation de l'ouvrage

    I.1 Historique 3

    I.2 Définition 4

    I.3 Architecture technique de la blockchain 4

    I.3.1 Infrastructure 5

    I.3.2 Les composantes de base 5

    I.3.3 Grand livre 6

    I.3.4 Consensus 7

    I.3.5 Contrat intelligent 9

    I.3.6 Gestion de système 10

    I.3.7 Interface 10

    I.3.8 Application 10

    I.3.9 Fonctionnement et maintenance 11

    I.4 Domaine d'application de la Blockchain 11

    I.5 Pourquoi utiliser la technologie Blockchain 12

    I.5.1 QU'EST-CE QUE LA BLOCKCHAIN ? UN GRAND LIVRE DISTRIBUÉ 12

    I.5.2 Comment fonctionne la Blockchain 13

    I.5.3 Blockchain vs Base de données normales 15

    I.5.3.1 Centralisation vs Décentralisation système 15

    I.6 BLOCKCHAINS AUTORISÉS VS BLOCKCHAINS PUBLIQUES 19

    I.6.1 Blockchain publique 19

    [VIII]

    I.6.2 Blockchains privées 19

    I.7 Mécanismes de sécurité dans les réseaux 20

    I.7.1 Introduction 20

    I.7.2 Qu'est-ce qu'un VPN (Virtual Private Network) 20

    I.7.3 Les protocoles du VPN 20

    I.7.3.1 OpenVPN 20

    I.7.3.2 IKEv2 (Internet Key Exchange v2) 20

    I.7.3.3 L2TP (protocole de tunneling de couche 2) 21

    I.7.3.4 SSTP (Secure Socket Tunneling Protocol) 21

    I.7.3.5 PPTP (protocole de tunneling point à point) 21

    I.7.3.6 Comparaison entre les protocoles [29] 22

    I.8 Conclusion 23

    Chapitre II Fonctionnement de la blockchain

    Partie 1 : Les crypto-monnaies 24

    II.1 Introduction 24

    II.2 Quelles différences entre Bitcoin (BTC), Litecoin (LTC) et Ethereum (ETH) ? 24

    II.2.1 Les différences entre le Bitcoin et le Litecoin 25

    II.2.2 Les différences entre le bitcoin et l'Ethereum 26

    II.2.3 Les différences entre le Litecoin et l'Ethereum 26

    II.2.5 Comment acheter des crypto-monnaies ? 26

    II.3 Qu'est-ce qu'une Crypto-monnaie : 27

    II.3.1 La double innovation des cryptomonnaies ? 27

    II.3.1.1 L'innovation technologique : 28

    II.3.1.2 L'innovation monétaire 29

    II.3.2 La diversité et l'évolution de la crypto-monnaie 30

    II.3.2.1 Les types des forks 31

    Partie 2 : La cryptographie 31

    II.4 Définition 31

    II.5 Les différents types de la cryptographie 33

    II.5.1 Cryptographie à clé symétrique 33

    II.5.1.1 Introduction 33

    II.5.1.2 Les algorithmes de chiffrement 35

    II.5.1.2.3 Comparaison entre DES et AES 38

    [IX]

    II.5.2 Cryptographie à clé asymétrique 40

    II.5.2.1 Introduction 40

    II.5.2.2 Principe de fonctionnement 40

    II.5.2.3 Illustration 41

    II.5.2.4 Les types d'algorithmes de chiffrement et déchiffrement 42

    II.6 Comparaison entre cryptographie symétrique et asymétrique 48

    II.7 Fonction de hachage 48

    II.7.1 MD5 49

    II.7.2 SHA-1 49

    II.7.3 Comparaison entre MD5 et SHA 49

    II.8 La longueur de la clé 50

    II.9 Limite de la cryptographie [78] [79] 50

    II.9.1 Limitation de la cryptographie a clé publique (asymétrique) 50

    II.1 Limitation de la cryptographie a clé secrètes (symétrique) 51

    Partie 3 : Fonctionnement de la blockchain 51

    II.10 Introduction 51

    II.11 La phase d'enrôlement dans la blockchain 51

    II.12 La phase de transaction 52

    II.13 Qu'est-ce qu'une transaction ? 54

    II.14 Qu'est-ce qu'un bloc ? 58

    II.14.1 La structure d'un bloc 59

    II.14.2 Les mineurs 60

    II.14.2.1 Qu'est-ce qu'un mineur ? 60

    II.14.2.2 Que fait l'exploitation minière par les mineurs ? 61

    II.14.2.3 Comment fonctionne l'exploitation minière ? 62

    II.14.2.4 Méthode d'exploitation 62

    II.15 Conclusion 63

    Chapitre III Les réseaux informatique

    III.1 Introduction 64

    III.2 Généralité sur les réseaux 64

    III.2.1 Définition d'un réseau 64

    III.2.2 Classification des réseaux 64

    III.2.2.1 Réseau personnel PAN (Personnel Area Network) 64

    [X]

    III.2.2.2 Les réseaux locaux LAN (Local Area Network) 64

    III.2.2.3 Les réseaux métropolitains MAN (Métropolitain Area Network) 66

    III.2.2.4 Les réseaux étendus WAN (Wide Area Network) 67

    III.3 Les types des réseaux 68

    III.3.1 Internet 68

    III.3.2 Intranet 68

    III.3.3 Extranet : 68

    III.4 Les Topologies des réseaux 69

    III.4.1 Introduction 69

    III.4.2 Topologie en bus 69

    III.4.3 Topologie en étoile 69

    III.4.4 Topologie en anneau 70

    III.4.5 Topologie maillée complète 70

    III.5 Equipements d'interconnexion 71

    III.5.1 Répéteur 71

    III.5.2 Pont 71

    III.5.3 Routeur 71

    III.5.4 Passerelle 72

    III.5.5 Concentrateur 72

    III.5.6 Commutateur 72

    III.5.7 Adaptateur 72

    III.6 Le modèle de référence OSI 72

    III.6.1 Présentation du modèle OSI 72

    III.6.2 Les couches du modèle OSI 72

    III.7 Le modèle TCP/IP 73

    III.7.1 Présentation du modèle TCP/IP 73

    III.7.2 La différence entre le modèle de référence OSI et le modèle de couche TCP / IP 74

    III.8 L'adressage IP 74

    III.8.1 Qu'est-ce qu'une adresse IP ? 74

    III.8.2 Format des adresses IP 74

    III.8.2.1 Adresse d'hôte et adresse de réseau 75

    III.8.2.2 Structure d'une adresse 75

    III.8.2.3 Le masque 76

    [XI]

    III.8.2.4 Calcul d'adresse réseau 77

    III.8.2.4 Calcul de l'adresse de diffusion 78

    III.8.2.5 Calcul de la plage adressable 78

    III.8.2.6 Nombre d'hôtes possibles dans un réseau 79

    III.8.2.7 La notation CIDR du masque 79

    III.9 Les protocoles de routage 80

    III.9.1 Introduction 80

    III.9.2 Protocoles de routage qui composent Internet 81

    III.9.3 Protocoles de routage clés et leurs combinaisons 81

    III.9.3.1 RIP (Routing Information Protocol) 81

    III.9.3.2 OSPF (protocol Open Shortest Path First) 81

    III.10 Conclusion 82

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    IV.1 Introduction 83

    IV.2 Présentation de projet 83

    IV.2.1 La problématique 83

    IV.2.2 Objectif 83

    Partie 1 : Construction du réseau 84

    IV.3 Introduction 84

    IV.4 Présentation globale du réseau intranet 84

    IV.4.1 Description détaillée du réseau 84

    IV.4.2 Création de la topologie du réseau 85

    IV.4.2.1 Configuration des interfaces des routeurs 86

    IV.4.2.2 Configuration du protocole RIPv2 87

    IV.4.2.3 Configuration des serveurs 91

    IV.4.2.4 Configuration PC Client 96

    IV.4.3 Configuration d'un FAI DHCP sur un routeur Cisco 97

    IV.5 Implémentation du VPN 101

    IV.5.1 Mise en place d'un VPN site à site 101

    IV.5.2 Configuration du VPN 102

    IV.5.2.1 Configuration ISAKMP 102

    IV.5.2.2 Protocole de gestion et l'échange des clés IPsec 102

    [XII]

    IV.3.2.3 Fonctionnement d'IPec 102

    IV.5.2.4 Test de Protocol IPsec 103

    IV.6 Implémentation d'in GRE tunnel 108

    IV.6.2 Introduction 108

    IV.6.2 Configurons un tunnel GRE : 109

    IV.6.3 Test de tunnel 110

    Partie 2 : Construire une blockchain 110

    IV.7 Introduction 110

    IV.8 Configuration du projet 111

    IV.9 Programmation de la blockchain 112

    IV.9.1 Introduction 112

    IV.9.2 Création de la blockchain 113

    IV.9.2.1 La création d'ajoute un nouveau bloc 114

    IV.9.2.2 Créations des nouvelles transactions 116

    IV.9.2.3 Mining d'un bloc 117

    IV.9.3 Hachage des données 120

    IV.9.3.1 Création de la méthode hashBlock 120

    IV.9.4 Proof of Work 122

    IV.9.4.1 Définition 122

    IV.9.4.1 Création de la méthode Proof of Work 123

    IV.9.4 Création du bloc genesis : 124

    IV.8.6 Création d'une API Express 125

    IV.8.6.1 Configuration du serveur 125

    IV.8.6.2 Construire les fondations d'API 127

    IV.8.6.2.1 Installation de Postman et de l'analyseur de corps 127

    IV.8.6.2.2 L'utilisation de Postman 129

    IV.8.6.2.3 Construire le /blockchain endpoint 131

    IV.8.6.2.4 Construire la /transaction endpoint 132

    IV.8.6.2.5 Construire /mine endpoint 134

    IV.8.6.3 Création d'un réseau décentralisé 138

    IV.8.6.3.1 Création de plusieurs noeuds et l'ajout du currentNodeUrl 138

    IV.8.6.3.2 Exécution de multiples noeuds d'api.js 139

    IV.9.6.3.3 Test des multiples noeuds 140

    [XIII]

    IV.8.6.3.4 L'ajoute d'un currentNodeUrl 142

    IV.8.6.3.5 Aperçu des nouveaux endpoints 142

    IV.9 Conclusion 148

    Conclusion générale 149

    Bibliographie 151

    Annexe 155

    Annexe 1 Installation d'Apache 155

    Annexe 2 Installation du Sublime 159

    Annexe 3 Installation du Postman API 161

    Annexe 4 Node.js 166

    Annexe 5 Cisco packet Tracer 169

    [XIV]

    Liste des tables

    Tableau I- 1: Comparaison des mécanismes de consensus de la blockchain 8

    Tableau I- 2: Comparaison entre les protocoles du VPN 22

    Tableau II- 1: La comparaison entre Bitcoin & Litecoin 25

    Tableau II- 2: Comparaison entre DES et AES 40

    Tableau II- 3: Comparaison entre MD5 et SHA 50

    Tableau II- 4: Propriété d'une transaction 56

    Tableau II- 5: Structure de données Transaction Input 57

    Tableau II- 6: Structure de données Transaction Input Outpoint 57

    Tableau II- 7: Structure de données Transaction Output 57

    Tableau III- 1: Comparaison entre Architecture Client / Serveur et Peer to Peer 66

    Tableau III- 2: Type de topologie 69

    Tableau III- 3: Résumé l'adressage de masque des classes 77

    Tableau III- 4: Table de vérité 77

    Tableau III- 5: Tableau illustratif pour l'adressage IP 80

    Tableau III- 6: Fonctionnalités de RIP et OSPF 82

    Liste des équations

    Equation II- 1: Produit de n et p 43

    Equation II- 2: Calcule de la fonction d'Euler 43

    Equation II- 3: Calcule d'élément inverse d. 44

    Equation II- 4: Equation linéaire binaire 44

    Liste des figures

    Figure I- 1: Architecture technique de la technologie blockchain 5

    Figure I- 2: Fonctionnement de contrat intelligent 10

    Figure I- 3: Base de données de la blockchain 14

    Figure I- 4: Fonctionnement de la Blockchain 15

    Figure I- 5: Système distribué avec contrôle centralisé 16

    [XV]

    Figure I- 6: Système centralisé 17

    Figure I- 7: Système décentralisé 18

    Figure I- 8: Système décentralisé avec p2p architecture 18

    Figure II- 1: Innovation technologique de la technologie blockchain 29

    Figure II- 2: Comparaison de la valeur marchande des crypto-monnaies en 2013 et 2019 30

    Figure II- 3: Comment fonctionne la cryptographie en général 33

    Figure II- 4: Opérateur XOR et sa table de vérité 35

    Figure II- 5: Structure DES 36

    Figure II- 6: Structure AES 37

    Figure II- 7: Processus du premier tour AES 38

    Figure II- 8: Cryptographie asymétrique pour la confidentialité 41

    Figure II- 9: Cryptographie asymétrique pour l'authentification 42

    Figure II- 10: Étapes pour la génération de clés 43

    Figure II- 11: Schéma représente comment la signature fonctionne 46

    Figure II- 12: Code QR 52

    Figure II- 13: Blockchain distributée 53

    Figure II- 14: Fonctionnements de la blockchain 53

    Figure II- 15: New transaction 54

    Figure II- 16: Signature de notre transaction avec notre clé privée 55

    Figure II- 17: Blockchain vérifie que cette transaction a bien été envoyée par le propriétaire

    de la clé privée 55

    Figure II- 18: Exemple de transaction 56

    Figure II- 19: Chaine de bloc 58

    Figure II- 20: Genesis Block 58

    Figure II- 21: Qu'est-ce qu'un bloc et que contient-il En général ? 59

    Figure II- 22: Contenus des blocs de la blockchain et arbre de Merkle 60

    Figure II- 23: Validation d'un bloc de transactions par les mineurs 62

    Figure III- 1: Exemple d'un Lan (Local Area Network) 65

    Figure III- 2: Architecture Peer to Peer 65

    Figure III- 3: Architecture Client / Serveur 66

    Figure III- 4: Exemple d'utilisation d'un WAN 66

    Figure III- 5: Exemple d'utilisation d'un réseau WAN 67

    Figure III- 6: Comparaison entre le réseau selon la distance 67

    [XVI]

    Figure III- 7: Image illustrative sur les différents types de réseau 68

    Figure III- 8: Topologie en bus 69

    Figure III- 9: Topologie en étoile 70

    Figure III- 10: Topologie en anneau 70

    Figure III- 11: Topologie maillé 71

    Figure III- 12: Modèle OSI 73

    Figure III- 13: Déférence entre OSI et TCP/IP 74

    Figure IV- 1: Topologie physique du réseau 84

    Figure IV- 2: Architecture du réseau 85

    Figure IV- 3: Configuration des interfaces de router R2 86

    Figure IV- 4: Vérification des interfaces 86

    Figure IV- 5: Configuration du router rip 87

    Figure IV- 6: Communication entre les routeurs 88

    Figure IV- 7: Ping R4 vers R1 88

    Figure IV- 8: Vérification de la communication entre R4 et R1 89

    Figure IV- 9: Ping de serveur Amazon vers Serveur Client 89

    Figure IV- 10: Topologie d'essaie 90

    Figure IV- 11: Configuration du PC 1 (Amazon) 90

    Figure IV- 12: Vérification de la communication entre les PCs 91

    Figure IV- 13: Configuration de Serveur Amazon 92

    Figure IV- 14: Modification de la page Web d'Amazon 92

    Figure IV- 15: Insertion de la Modification de la page Web d'Amazon 93

    Figure IV- 16: Vérification de la Modification de la page Web d'Amazon 93

    Figure IV- 17: Affectation des adresses IP au serveur BANK 94

    Figure IV- 18: Affectation des adresses IP au serveur Client 94

    Figure IV- 19: Configuration du DHCP 95

    Figure IV- 20: Test entre les serveurs 95

    Figure IV- 21: Configuration d'un DNS serveur-client 95

    Figure IV- 22: Test d'un DNS serveur-client 96

    Figure IV- 23: Configuration du PC Client 97

    Figure IV- 24: Communication entre tous les machines 97

    Figure IV- 25: Insertion d'un fournisseur d'accès à Internet 98

    [XVII]

    Figure IV- 26: Configuration d'un fournisseur d'accès à Internet 98

    Figure IV- 27: Vérification des interfaces du FAI 99

    Figure IV- 28: Activation du DHCP sur R2 et R1 99

    Figure IV- 29: Ping du R0 vers tous les hôtes 100

    Figure IV- 30: Mise en place de tunnel 101

    Figure IV- 31: Configurer la politique de sécurité ISAKMP 102

    Figure IV- 32: Architecture d'un VPN site à site 102

    Figure IV- 33: Configurations d'IPsec 102

    Figure IV- 34: Configuration de la crypto map 103

    Figure IV- 35: Application de la crypto map 103

    Figure IV- 36: Vérification des opérations d'ISAKMP 104

    Figure IV- 37: Encapsulation des données 104

    Figure IV- 38: Vérification de la crypto map 104

    Figure IV- 39: Vérification de la liste d'accès 105

    Figure IV- 40: Vérification d'IPsec sa 105

    Figure IV- 41: Information du PDU sur R0(FAI) 106

    Figure IV- 42: Information du PDU non crypté 106

    Figure IV- 43: Teste de la topologie 107

    Figure IV- 44: Test de la topologie manuellement 107

    Figure IV- 45: Confirmation de cryptage et décryptage de données 107

    Figure IV- 46: Fonctionnement du Tunnel GRE 108

    Figure IV- 47: Insertion du Tunnel GRE 108

    Figure IV- 48: Création d'interfaces de Tunnel 109

    Figure IV- 49: Vérification si le Tunnel est bien créé 110

    Figure IV- 50: Chemin du traffic 110

    Figure IV- 51: Créations de notre projet 111

    Figure IV- 52: Créations des fichiers avec les extensions "js" 111

    Figure IV- 53: Création d'un fichier package.json 112

    Figure IV- 54: Création de projet est prête 112

    Figure IV- 55: Programmations d'ajoute d'un nouveau bloc 114

    Figure IV- 56: Exportations de la fonction constructrice 114

    Figure IV- 57: Configuration de projet bitcoin 114

    Figure IV- 58: Création de projet bitcoin 115

    Figure IV- 59: Test d'ajoute un nouveau bloc 115

    [XVIII]

    Figure IV- 60: Test de la méthode creatNewBlock 116

    Figure IV- 61: Exécution de la méthode creatNewBlock 116

    Figure IV- 62: Programmations des nouvelles transactions 116

    Figure IV- 63: Test d'ajoute des nouvelles transactions 117

    Figure IV- 64: Test d'ajoute des nouvelles transactions 117

    Figure IV- 65: Test de miner un bloc 118

    Figure IV- 66: Exécution de minerde deux blocs 118

    Figure IV- 67: Modifications sur les transactions 119

    Figure IV- 68: Ajout des transactions successives 119

    Figure IV- 69: Transactions restantes en attente 119

    Figure IV- 70: Minage réussi 120

    Figure IV- 71: Construction de la méthode hashBlock 120

    Figure IV- 72: Test de la méthode hashBlock 121

    Figure IV- 73: Exécution de la méthode hashbBock 121

    Figure IV- 74: Enregistrement de la bibliothèque sha256 121

    Figure IV- 75: Résultat de hachage 122

    Figure IV- 76: Configuration de la preuve de travail 123

    Figure IV- 77: Obtention du nonce 123

    Figure IV- 78: Exécution de PoW 124

    Figure IV- 79: Vérification du hash après l'obtention du nonce 124

    Figure IV- 80: Créations du bloc genesis 125

    Figure IV- 81: Création de fichier serveur.js 125

    Figure IV- 82: Démarrage du serveur express 126

    Figure IV- 83: Exécution du serveur 126

    Figure IV- 84: Interface d'applications Blockchain 127

    Figure IV- 85: Automatisation de ce processus 128

    Figure IV- 86: Exécution de nodemon 128

    Figure IV- 87: Tester le point de terminaison / transaction 129

    Figure IV- 88: Envoi des données de transaction à partir du postman 130

    Figure IV- 89: Configuration de req.body 130

    Figure IV- 90: Installation de body-parser 130

    Figure IV- 91: Importation de fichier body-parser 131

    Figure IV- 92: Envoi de la demande 131

    Figure IV- 93: Réception de la chaine envoyée 131

    [XIX]

    Figure IV- 94: Importation de fichier blockchain.js 131

    Figure IV- 95: Renvoie de la blockchain 132

    Figure IV- 96: Récupération de la chaine blockchain 132

    Figure IV- 97: Créer un nouvel objet de ressource s'appelle transaction 132

    Figure IV- 98: Création des données 133

    Figure IV- 99: Test du point de terminaison /transaction 133

    Figure IV- 100: Réception de la chaine dans le navigateur 133

    Figure IV- 101: Construire /mine endpoint 134

    Figure IV- 102: Importation de la bibliothèque UUID 134

    Figure IV- 103: Test de /mine endpoint 135

    Figure IV- 104: Test de /blockchain endpoint 135

    Figure IV- 105: Miner plusieurs blocs 136

    Figure IV- 106: Test de /transaction endpoint 136

    Figure IV- 107: Exécution du Test de /transaction endpoint 137

    Figure IV- 108: Minage réussi 137

    Figure IV- 109: Fin de minage 137

    Figure IV- 110: Exécution de npm start 139

    Figure IV- 111: Exécution de multiples noeuds d'api.js 140

    Figure IV- 112: Modifications dans le fichier package.json 140

    Figure IV- 113: Configuration des données de la transaction 141

    Figure IV- 114: Récupération de la chaine de bloc 141

    Figure IV- 115: Création d'une transaction en attente 141

    Figure IV- 116: Configuration du register node 143

    Figure IV- 117: Importation de la bibliothèque request-promise 143

    Figure IV- 118: Construit le / register-and -broadcast-node 144

    Figure IV- 119: Installation de la bibliothèque request 144

    Figure IV- 120: Test de register-node 144

    Figure IV- 121: Ajout de node url 145

    Figure IV- 122: Obtention de la réponse Nouveau noeud enregistré avec succès 145

    Figure IV- 123: Construire le / register-nodes-bulk endpoint 146

    Figure IV- 124: Test des / register-nodes-bulk 147

    Figure IV- 125: Recevoir une réponse qui indique l'enregistrement en bulk réussi 147

    Figure IV- 126: Ajout réussie de trois url 148

    [XX]

    Liste des abréviations

    A

    AES Advanced Encryption Standard

    B

    BCH Bitcoin Cash

    BGP Border Gateway Protocol

    BPFT Pratical Byzantine Fault Tolerant

    BTC BitCoin

    BC BlockChain

    C

    CIDR Classless Inter-Domain Routing CPU Central Processing Unit

    D

    DES Data Encryption Standard

    DHCP Dynamic Host Configuration Protocol

    DNS Domain Name Service

    DSA Digital Signature Algorithm

    DSS Digital Signature Standard

    DLT Distributed Ledger Technologies

    E

    ECDSA Elliptic Curve Digital Signature Algorithm EGP Exterior Gateway Protocol

    EIGRP Enhanced Interior Gateway Routing Protocol ETH Ethereum

    F

    FIPS Federal Information Processing Standards FTP File Transfer Protocol

    G

    GPU Graphics Processing Unit

    H

    HUB Housing Union Building

    [XXI]

    HTTP Hypertext Transfer Protocol

    I

    IBM International Business Machines

    ICMP Internet Control Message Protocol

    IGRP Interior Gateway Routing Protocol

    IGP Interior Gateway Protocol

    IP Internet Protocol

    IPv4 Internet Protocol version 4

    IPv6 Internet Protocol version 6

    IPsec Internet Protocol Security

    IS-IS Intermediate System to Intermediate System

    ISP Internet Service Provider

    ISO International Organization for Standardization

    IKEv2 Internet Key Exchang Version 2

    ID Identificateur

    J

    K

    L

    LAN Local Area Network

    LLC Logical Link Control

    L2TP Layer 2 Tunneling Protocol

    LTC LiteCoin

    M

    MAN Metropolitan Area Network MAC Message Authentication Code MD5 Message Digest 5

    MySQL : est une combinaison de "My", le nom de la fille du co-fondateur Michael

    Widenius, et "SQL", l'abréviation de StructuredQueryLanguage.

    N

    NFC Near Field Communication

    NIST National Institute of standards and Technology

    NSA National Security Agency

    NEO Non-Equity Option

    [XXII]

    NIC Network Interface Card

    O

    OSIOpen Systems Interconnection OSPF Open Shortest Path First

    P

    PAN Personal Area Network

    PBFT Practical Byzantine Fault Tolerance

    PoW Proof of Work

    PPP Point-to-Point

    P2P Peer-to-Peer

    POS Proof of Stacke

    POA Proof of Authority

    OSPF Open Shortest Path First

    Q

    R

    RC4 Rivest Cipher 4

    RIP Routing Information Protocol RSA Rivest-Shamir-Adleman REP Repons

    S

    SHA Secure Hash Algorithm

    SSH Secure Socket Shell

    SSTPSecure Socket Tunneling Protocol

    T

    TCP/IP Transmission Control Protocol/Internet Protocol TDES Triple Data Encryption Standard

    U

    UDP User Datagram Protocol

    V

    VPN Virtual Private Network

    W

    WAN Wide Area Network

    [XXIII]

    WEB world wide web

    X

    XOR exclusive O

    Y

    Z

    [1]

    Introduction générale

    Introduction générale

    La blockchain est un terme dans le domaine des technologies de l'information. Il s'agit essentiellement d'une base de données partagée et les données ou informations qui y sont stockées ont les caractéristiques "infalsifiable", "trace laissée", "traçable", "ouverte et transparente" et "maintenance collective". Sur la base de ces caractéristiques, la technologie blockchain a jeté des bases solides de « confiance », créant un mécanisme de coopération fiable et ayant de larges perspectives d'application.

    Le 10 janvier 2019, le National Internet Information Office a publié le « Règlement sur la gestion des services d'information sur la blockchain ». Le 24 octobre 2019, lors de la dix-huitième étude collective du Bureau politique du Comité central, le secrétaire général Xi Jinping a souligné que "prendre la blockchain comme une percée importante dans l'innovation indépendante des technologies de base" "accélérer le développement de la technologie blockchain et l'innovation industrielle". La « blockchain » est entrée dans le champ de vision du public est devenue le centre d'intérêt de la société.

    La blockchain provient du Bitcoin de Satoshi Nakamoto. En tant que technologie, la blockchain est une solution technique qui ne repose pas sur des tiers et utilise ses propres noeuds décentralisés pour stocker, vérifier, transférer et communiquer les données du réseau. Par conséquent, c'était sous un angle de comptabilité financière, la technique blockchain est considérée comme un grand centre de facturation de réseau distribué. Tout le monde peut utiliser en même temps les normes techniques, ajoute leurs propres informations, étend La blockchain et continue de répondre aux besoins de saisie de données induites par divers besoins. Cette technologie, qui fait l'objet de notre travail, a été adaptée avec succès sur l'étude et la conception d'un réseau bancaire sécurisée.

    Le manuscrit est divisé en quatre chapitres :

    Le premier chapitre est consacré tout d'abord à la présentation générale de l'ouvrage dont nous avons couvert l'évolution de la blockchain, son histoire et sa définition. Ensuite, nous présenterons les avantages de la conception et le fonctionnement de cette technologie passant par la présentation de l'importance de la blockchain suivie par certains cas d'utilisation. Nous définirons également les types de la blockchain, et nous conclurons par les mécanismes de sécurité dans les réseaux.

    Le deuxième chapitre présente l'étude théorique de la technologie blockchain pour l'étude et la conception d'un réseau bancaire sécurisé avec la blockchain. Dans cette étude, nous allons détailler le concept de crypto-monnaies qui permettent les paiements sécurisés en se basant sur plusieurs méthodes de chiffrements. Nous définirons également, les divers algorithmes de cryptage et techniques cryptographiques qui protègent les informations, tels que le cryptage à courbe elliptique, les paires de clés public-privée et les fonctions de hachage. Ensuite et dans le but de valider la compréhension de la blockchain, nous avons étudié le procédé technique sur lequel repose cette technologie.

    Dans le troisième chapitre, nous allons développer les réseaux informatiques qui consistent de créer un réseau bancaire. Nous couvrirons les types des réseaux tels que PAN, MAN, WAN, ect. Pour cela, nous allons étudier de façon approfondie l'adressage IP. Par la suite,

    [2]

    Introduction générale

    nous donnerons une vue globale sur le modèle OSI et TCP/IP, ainsi les notions de protocole et routage.

    Dans le quatrième chapitre, nous exposerons une nouvelle technique qui est basée sur la combinaison entre la technologie blockchain et le réseau bancaire. Cette technique nous permettra de construire un réseau bancaire avec un routage amélioré, sécurisé et rendant le trafic plus efficace. Pour répondre à ce besoin de communication sécurisé, nous avons utilisé un réseau privé virtuel (VPN) avec ses différentes topologies. Dans ce cadre, nous allons présenter la fonction constructrice, puis nous sommes passés à la création de méthodes étonnantes telles que creatNewBlock, creat NewTransaction, getLastBlock, etc. Nous proposerons, par la suite, la méthode de hachage, le hachage SHA256, et nous créerons une méthode pour générer un hachage pour nos données de bloc. Nous avons également appris ce qu'est une preuve de travail et comment cela fonctionne. De même, nous configurerons Express.js dans notre projet, et verrons comment utilisez-le pour construire notre API / serveur. Nous conclurons par la création d'un réseau décentralisé.

    Chapitre I Généralités et présentation de l'ouvrage

    [3]

    I.1 Historique

    Au début des années 1990, deux crypto-logues Américains Stuart Haber et W. Scott Stornetta imaginent un système informatique que tout le monde peut écrire mais qui est impossible à effacer et indestructible. Puis dans les années 1991, les chercheurs ont trouvé une solution qui utilise des techniques de sécurité cryptographique pour garantir que tous les fichiers soient sécurisés par la Blockchain. Plus tard en 1992, la technologie de MarkleTree également été intégrée du système, permettant de stocker simultanément plusieurs documents dans le même bloc. Il est dommage que cette technologie ait ensuite été ignorée et lentement abandonnée. Malheureusement, ce brevet a été annulé en 2004 parce qu'il n'avait pas été mis à jour, quatre ans seulement avant le boom des Bitcoins. En 2004, l'informaticien et activiste en cryptographie Hal Finney (Harold Thomas Finney II) a présenté un système de preuve de travail réutilisable appelé PoW (proof of work). Le système reçoit des jetons de travail hashcash2 irremplaçables, qui créent en retour des pièces pouvant être transférées entre utilisateurs et signées par RSA.1

    PoW peut être considéré comme un premier prototype de la blockchain, constituant une première étape importante dans le cryptage de l'historique des devises.

    La fin de l'année 2008 a vu la publication d'un livre blanc sur un système de paiement électronique décentralisé poste à poste appelé Bitcoin sur une liste de diffusion cryptée par des individus ou des groupes sous le pseudonyme Satoshi Nakamoto. Bitcoin est basé sur le calcul de la preuve de travail Hascash2. Par rapport à l'opération très fiable POW, Bitcoin utilise un protocole décentralisé de point à point pour vérifier et suivre les transactions afin d'éviter une double consommation. En bref, Bitcoin "exploite" en utilisant le mécanisme de contrôle du travail de chaque mineur, puis vérifié par des noeuds décentralisés du réseau (2J.

    Le 3 janvier 2009, Satoshi Nakamoto a extrait et exploité le premier bloc de Bitcoins. Il a également reçu un bonus de 50 Bitcoins. Le 12 janvier 2009, le premier destinataire de Bitcoin était Hal Finney, qui avait reçu 10 Bitcoins de Satoshi Nakamoto. Il s'agissait de la première transaction confirmée par Bitcoin au monde (1J.

    En 2013, le programmeur et co-fondateur de Magazine Bitcoin, VitalikButerin, a déclaré que Bitcoin devait écrire un langage de script pour créer des applications décentralisées. Ne parvenant pas à obtenir un accord au sein de la communauté, Vitalik a commencé à développer une nouvelle plate-forme d'informatique répartie basée sur une chaîne de blocs, Ethereum, dotée de fonctions de script, également appelées contrats intelligents (3J.

    1 RSA : est l'un des premiers crypto systèmes à clé publique et est largement utilisé pour la transmission sécurisée de données

    2 Hashcash : est un algorithme de preuve de travail, qui a été utilisé comme technique de contre-mesure de déni de service dans un certain nombre de systèmes.

    Chapitre I Généralités et présentation de l'ouvrage

    [4]

    I.2 Définition

    Le monde change continuellement, entraine par les innovations technologiques qui affectent notre façon de vivre et de faire des affaires. Cependant, si les technologies de l'information et de la communication ont profondément affecté l'organisation de la production, elles ne sont pas encore réussies à numériser les transactions3 commerciales. Malgré les efforts déployés récemment pour mettre en place des processus électroniques destinés à traiter certains aspects des procédures commerciales, les transactions commerciales restent encore fortement dépendantes du papier. Les problèmes de sécurité surgissent sur les flux de données à travers les frontières. Une nouvelle technologie, Blockchain, est considérée comme un changeur de jeu possible avec son mécanisme unique de renforcement de la confiance, est devenue une direction importante pour l'intégration en profondeur des finances et de la technologie. Mais qu'est-ce que la Blockchain et quel est le potentiel de cette technologie pour le commerce international ? (4]

    La Blockchain est partout en ce moment. Mais tout le monde n'a pas encore bien compris de quoi on parlait, la phase d'évangélisation n'est pas encore finie, voici une explication assez courte qui peut vous aidez à comprendre de quoi il s'agit et aussi à l'expliquer aux autres :

    Imaginez un grand livre ou un enregistrement numérique de transaction que tous peuvent lire gratuitement et librement, ce livre est décentralisé, aucune entité ne contrôle le réseau et c'est un registre distribué. Les enregistrements (les utilisateurs) sont partagés avec tous les participants, sans qu'il y'ait besoin d'une autorité centrale et dans lesquels les transactions sont stockées de manière hautement sécurisée vérifiable et permanente, à l'aide de diverses techniques cryptographiques (5].

    I.3 Architecture technique de la blockchain

    Cette partie se concentre sur l'analyse du cadre technique de la technologie Blockchain.

    Après une mise en perspective et une justification de son intérêt pour l'émergence de nouveaux cas d'usage, cette partie décrit les éléments constitutifs de la technologie.

    Nous allons présenter les produits à différentes étapes de la blockchain avant de conclure par un panorama de technologies et outils.

    Dans la figure I-1, la division de base est faite pour 9 dimensions. Ensuite, nous analysons en détail le contenu spécifique de chaque module (8].

    3 Transaction : est tout type d'action impliquée dans la conduite des affaires ou une interaction entre des personnes. Un accord commercial important peut être appelé une transaction, en particulier l'achat ou la vente de marchandises, mais vous pouvez appeler une transaction tout échange avec une autre personne.

    Chapitre I Généralités et présentation de l'ouvrage

    Application supérieure

    Gestion d'opération

    Gestion du système

    Contrat intelligent

    Consensus

    Grand livre

    Composants de base

    Interface

    [5]

    Infrastructure

    Figure I- 1: Architecture technique de la technologie blockchain I.3.1 Infrastructure

    La couche d'infrastructure fournit le système d'exploitation et les installations matérielles y compris les serveurs physiques, les hôtes cloud, etc. pour le fonctionnement

    normal du système blockchain.
    Elle peut être décomposée en trois domaines :

    § Ressources informatiques (CPU, GPU, ASIC, etc.).

    § Ressources de stockage (disque dur).

    § Cette partie des ressources du réseau (bande passante) n'est pas très différente des autres systèmes. Elle n'est rien de plus qu'orientée vers le calcul, certaines orientées vers le stockage et d'autres fortement dépendantes du réseau [9].

    I.3.2 Les composantes de base

    La couche de composants de base implémente l'enregistrement, la vérification et la diffusion d'informations dans le système de blockchain. La blockchain est un système distribué, c'est-à-dire que l'ensemble des blocs signés est répliqué sur tous les noeuds du réseau. Comme tout le monde, vous pouvez, si vous le souhaitez, utiliser votre ordinateur pour en faire un noeud. Pour cela, vous devez télécharger l'ensemble des blocs signés jusqu'à présent. Pour le bitcoin, cela représente déjà plus de 180 giga-octets.

    Quand un noeud arrive à signer un nouveau bloc en premier, ce dernier est ajouté à la blockchain de tous les autres noeuds du réseau de manière à toujours avoir une blockchain à jour partout sur le réseau. Il y a énormément de noeuds dans le monde et ils ont tous une copie complète de la blockchain.

    §

    Chapitre I Généralités et présentation de l'ouvrage

    [6]

    Découverte du réseau Le système de blockchain est composé de nombreux noeuds connectés via le réseau, en particulier dans le système de chaîne commun, le nombre de noeuds est souvent important. Chaque noeud doit découvrir les noeuds voisins via le protocole de découverte du réseau et établir une liaison avec les noeuds voisins.

    § Une fois que le noeud émetteur-récepteur de données est connecté au noeud voisin via le protocole de communication réseau, le module émetteur-récepteur de données termine l'échange de données avec d'autres noeuds. La diffusion des transactions, le consensus des messages et la synchronisation des données sont tous effectués par ce module.

    § Les algorithmes cryptographiques sont utilisés pour garantir l'intégrité de la blockchain, l'identité du participant, l'authenticité des transactions et parfois la confidentialité du contenu, y compris divers algorithmes de codages, des algorithmes de hachage, des algorithmes de signature, des algorithmes de protection de la confidentialité, etc.

    § Stockage de données Les données du système de blockchain utilisent différents modes de stockage de données.

    Les modèles de stockage incluent des bases de données relationnelles telles que MySQL3et des bases de données non relationnelles telles que LevelDB4.

    Généralement, les données à sauvegarder comprennent des données publiques (par exemple : données de transaction, données d'état, etc.) et des données privées locales.

    § Notification de message : Le module de notification de message fournit des services de notification de message entre différents composants de la blockchain et entre différents noeuds.

    Une fois la transaction réussie, le client doit généralement suivre les enregistrements pendant l'exécution de la transaction et obtenir les résultats de l'exécution de la transaction. Le module de notification des messages peut compléter la génération, la distribution, le stockage et d'autres fonctions des messages pour répondre aux besoins du système de blockchain.

    I.3.3 Grand livre

    La couche du grand livre est responsable du stockage. Tous les participants au réseau ont accès au grand livre distribué et à son enregistrement immuable des transactions. Avec ce grand livre partagé, les transactions ne sont enregistrées qu'une seule fois.

    La couche de registre incorpore la signature de hachage du bloc précédent dans le bloc suivant pour former une structure de données de chaine de blocs.

    La couche du grand livre a deux méthodes d'enregistrement des données basée sur les actifs et basée sur les comptes. Dans un modèle basé sur l'actif, l'actif est modélisé en premier, puis la propriété de l'actif est enregistrée, c'est-à-dire que la propriété est un

    3 MySQL : est un système de gestion de base de données relationnelle open source. SQL fait référence au Structured Query Language, le langage de requête utilisé

    4 LevelDB : est une bibliothèque de stockage de valeurs-clés rapide écrite par Google qui fournit un mappage ordonné des clés de chaîne aux valeurs de chaîne.

    Chapitre I Généralités et présentation de l'ouvrage

    [7]

    champ de l'actif. Dans le modèle basé sur un compte, un compte est établi en tant qu'objet d'actifs et de transactions, et les actifs sont un champ sous le compte.

    Le grand livre possède les avantages suivants :

    § Modèle de données basé sur le compte : Il est facile à enregistrer et à interroger les informations liées.

    § Modèle de données basé sur les actifs : Ce modèle possède une haute simultanéité afin d'obtenir des performances de traitement simultanées élevées et d'interroger les informations liées au compte dans le temps. Plusieurs plateformes de blockchain migrent vers deux modèles de données ce qui conduit au développement d'un modèle mixte.

    I.3.4 Consensus

    La couche consensus est chargée de coordonner et d'assurer la cohérence des enregistrements de données de chaque noeud dans l'ensemble du réseau c'est-à-dire tous les noeuds sont en compétition pour ajouter le prochain bloc à la blockchain mais un seul d'entre eux sera sélectionné pour le faire (et lui seul sera rémunéré). Cette sélection étant aléatoire pour chaque nouveau bloc. Ce caractère aléatoire est très important pour la sécurité de la blockchain ; puisque personne ne sait quel mineur sera choisi. Il existe différentes façons de réaliser cette sélection aléatoire de mineurs : ce sont les mécanismes de consensus.

    Le premier type de mécanisme de consensus est la preuve de travail (POW) utilisée habituellement dans les blockchains publiques de sort que plus la puissance de calcul d'un mineur est élevée, plus la probabilité sélectionnée est grande. Comme la puissance de calcul est coûteuse, le coût d'acquisition de 51% de la puissance totale de calcul du réseau est élevé ; c'est une façon de sécuriser le réseau en rendant le coût d'une attaque disproportionnée par rapport au bénéfice.

    Le deuxième type de mécanisme de consensus est utilisé dans les blockchains privées dans lesquelles les noeuds appartiennent à une même entité, ou dans les blockchains semi-privées dans lesquelles les noeuds appartiennent à un consortium de différents utilisateurs autorisés. Ce deuxième type n'a pas besoin d'un mécanisme de consensus aussi coûteux que le POW, car les participants sont connus et de confiance dans une certaine mesure. Dans ce cas, le mécanisme de consensus utilisé est beaucoup plus simple comme l'algorithme de PBFT5 (9J.

    Ci-dessous, nous listons la comparaison de quelques algorithmes de consensus (10J.

    5 PBFT : est un excellent algorithme de consensus pour les consortiums d'entreprises où les membres sont partiellement fiables.

    Chapitre I Généralités et présentation de l'ouvrage

    [8]

    Mécanisme du consensus

    Description

    Avantages

    Inconvénients

    POW

    Dans une blockchain publique, les ordinateurs des mineurs sont mis à disposition pour résoudre un problème mathématique compliqué. Le 1erqui trouve une solution gagne la récompense du prochain bloc de la chaine.

    Simple à mettre en oeuvre.

    Sécurisé. Faible.

    Consommation des ressources réseau.

    Consomme trop de ressources informatiques.

    La probabilité de bifurcation est élevée.

    Le consensus prend plus de temps.

    POS

    Preuve d'enjeu. Les

    validateurs de transactions doivent mettre en gage la possession de crypto monnaie pour recevoir une récompense. Si un noeud est malveillant, il peut perdre sa mise en gage au profit des validateurs honnêtes

    Moins de

    consommation de ressources.

    La mise en oeuvre est plus compliquée.

    Faille de sécurité.

    Pression de trafic réseau élevée.

    BPFT

    Consensus dont la liste des validateurs est connue au départ et peut tolérer jusqu'à 1/3 de noeuds compromis (déconnectés ou malveillants).

    Consensus de groupe rapide et performant.

    Pas de fork ou de réorganisation de chaine.

    Chaine privée uniquement.

    POA

    Preuve d'autorité. Consensus dont la liste des validateurs est connue au départ et qui valide à tour de rôle un bloc. Ce type de consensus peut tolérer jusqu'à 49% de noeuds malveillants ou déconnectés.

    Consensus de groupe rapide.

    Chaine privée uniquement.

    Fork ou réorganisation de la chaine possible.

     

    Tableau I- 1: Comparaison des mécanismes de consensus de la blockchain

    [9]

    Chapitre I Généralités et présentation de l'ouvrage

    I.3.5 Contrat intelligent

    La couche de contrat intelligent est chargée d'implémenter, de compiler et de déployer la logique métier du système blockchain sous forme de code, de terminer le déclenchement des conditions et l'exécution automatique des règles établies et de minimiser l'intervention manuelle.

    Les objets opérationnels des contrats intelligents sont principalement des actifs numériques. Les caractéristiques des conditions difficiles à modifier et fortes de déclenchement après la détermination des données déterminent que l'application des contrats intelligents a une valeur élevée et un risque élevé. Comment éviter les risques et exercer une valeur est une difficulté dans l'application à grande échelle actuelle des contrats intelligents.

    À l'heure actuelle, l'application des contrats intelligents en est encore à un stade relativement précoce, et les contrats intelligents sont devenus la "zone la plus touchée" pour la sécurité de la blockchain. Du point de vue du temps de sécurité provoqué par les précédentes vulnérabilités des contrats intelligents, il existe de nombreuses failles de sécurité dans le contrat portable, ce qui pose un énorme défi à sa sécurité [11].

    À l'heure actuelle, il existe plusieurs idées pour améliorer la sécurité des contrats intelligents :

    § La première est la vérification formelle, qui utilise une preuve mathématique stricte pour s'assurer que la logique exprimée par le code du contrat répond à l'intention. Cette loi est stricte en logique, mais difficile, et requiert généralement une agence professionnelle tierce pour effectuer des audits.

    § Le second est le chiffrement intelligent des contrats. Les contrats intelligents ne peuvent pas être lus par des tiers en texte brut, ce qui réduit les attaques de contrats intelligents en raison de failles de sécurité logiques. Cette méthode est moins coûteuse, mais elle ne peut pas être open source.

    § La troisième consiste à réglementer strictement le format grammatical de la langue du contrat. Résumez l'excellent modèle de contrats intelligents, développez des modèles de contrats intelligents standards et standardisez la préparation des contrats intelligents avec une certaine norme pour améliorer la qualité des contrats intelligents et améliorer la sécurité des contrats.

    Chapitre I Généralités et présentation de l'ouvrage

    [10]

    Figure I- 2: Fonctionnement de contrat intelligent I.3.6 Gestion de système

    La couche de gestion du système est chargée de gérer d'autres parties de l'architecture de la blockchain, comprenant principalement deux types de fonctions : la gestion des autorisations et la gestion des noeuds.

    La gestion des droits est un élément clé de la technologie de la chaîne de blocs, en particulier pour les chaînes d'autorisation qui ont plus d'exigences d'accès aux données.

    I.3.7 Interface

    La couche d'interface est principalement utilisée pour compléter l'encapsulation des modules fonctionnels et fournir une méthode d'appel simple pour la couche d'application.

    I.3.8 Application

    La couche application est la partie qui est finalement présentée à l'utilisateur. Son rôle principal est d'appeler l'interface de la couche contrat intelligent pour s'adapter aux différents scénarios d'application de la blockchain et fournir aux utilisateurs différents services et applications.

    Chapitre I Généralités et présentation de l'ouvrage

    [11]

    Chapitre I Généralités et présentation de l'ouvrage

    I.3.9 Fonctionnement et maintenance

    L'équipe de gestion de l'exploitation et de la maintenance est principalement responsable de l'exploitation et de la maintenance quotidienne du système blockchain, y compris la journalisation, la surveillance, la gestion et l'expansion.

    Sous l'architecture unifiée, les plates-formes traditionnelles ont différents modules de stockage, modèles de données, structures de données, langages de programmation, environnements sandbox6, etc., en fonction de leurs propres besoins et de leur positionnement.

    I.4 Domaine d'application de la Blockchain

    La technologie Blockchain, qui réduit les frictions dans les activités commerciales et augmente l'efficacité, révolutionne de nombreuses industries. Et les réformes sont, en même temps, mises en oeuvre à grande échelle, impliquant des participants collaborateurs. Dans divers domaines, tels que la finance, les soins de santé et le gouvernement, la blockchain contribue déjà aux réformes de l'industrie. Voici quelques-unes des possibilités infinies de la blockchain.

    § Internet des objets :

    o Fret : Transportez du fret avec plusieurs compagnies maritimes tout en garantissant la transparence et une livraison rapide.

    o Suivi et conformité des composants : Stockez les enregistrements sources des pièces d'origine et de rechange dans l'entretien du véhicule.

    o Consigner les données d'exploitation et de maintenance : stocker les enregistrements d'exploitation et de maintenance pour les partager avec des partenaires commerciaux ou à des fins réglementaires.

    § Gestion des identifiants :

    o Établir une identification numérique de confiance.

    § Chaîne d'approvisionnement :

    o Améliorez la traçabilité, la transparence et l'efficacité au sein des réseaux de sécurité alimentaire.

    § Services financiers :

    o Comprendre vos clients : Accédez à des informations fiables et à jour sur vos clients pour aider les institutions financières à fournir un service client plus précis.

    o Compensation et règlement : Accélérez le règlement en transférant des fonds entre les institutions financières directement en temps réel.

    o Autres exemples : Lettres de crédit, dette et obligations de sociétés, plateformes de négociation, envois de fonds, accords de mise en pension, devises.

    6 Sandbox : est un environnement de test isolé qui permet aux utilisateurs d'exécuter des programmes ou d'exécuter des fichiers sans affecter l'application, le système ou la plateforme sur lesquels ils s'exécutent.

    §

    [12]

    Soins de santé :

    o Dossiers médicaux électroniques.

    o Banque de virus.

    o Contrat de service et d'assurance REP médecin / vendeur.

    o Blockchain Health Research Commons.

    o Notaire de santé Blockchain.

    § Assurances :

    o Traitement des réclamations.

    o Assurance P2P.

    o Propriété.

    o Ventes et souscription.

    § Agence gouvernementale :

    o Procédure d'appel d'offres du gouvernement.

    o Votez.

    o Taxe.

    § Jeux

    § La musique :

    o Streaming plus juste et plus transparent où les musiciens pourraient être payés directement par ceux qui écoutent leur musique.

    § Les contrats intelligents

    o L'exécution automatisée d'un contrat ou d'une transaction selon des règles définies

    I.5 Pourquoi utiliser la technologie Blockchain

    La deuxième question que les gens posent habituellement lorsqu'ils entendent parler de la blockchain est : pourquoi utiliser la blockchain ? Pourquoi utiliser un grand livre distribué ? Pourquoi ne pas utiliser une base de données régulière ou un système hérité comme système d'enregistrement dans ce monde déjà numérique ?

    Dans cette partie, nous examinons ce qu'est réellement une blockchain, ce qu'elle peut faire et, surtout, pourquoi utiliser la blockchain ?

    I.5.1 QU'EST-CE QUE LA BLOCKCHAIN ? UN GRAND LIVRE DISTRIBUÉ

    Juste au cas où vous auriez besoin d'un petit rattrapage, les gens parlent souvent de « blockchain » au singulier, comme s'il n'en était qu'un. En réalité, ils devraient parler de la technologie de la chaîne de blocs également connue sous le nom de technologie de registre distribué ou DLT ou des chaînes de blocs au pluriel, car il en existe de nombreuses différentes, y compris les chaînes de blocs publiques (sans autorisation) et privées (avec autorisation).

    La blockchain Bitcoin, la blockchain Ethereum, la blockchain NEO7 et bien d'autres sont des exemples de blockchains publiques et de technologie de blockchain distribuée. Les

    7 NEO : est une plate- forme d'application décentralisée blockchain open source fondée en 2014 par Da HongFei et Erik Zhang. Depuis son changement de nom à NEO d'Antshares en 2017, la vision du projet est de

    Chapitre I Généralités et présentation de l'ouvrage

    [13]

    chaînes de blocs autorisées sont adaptées à une utilisation d'entreprise ou organisationnelle, avec un tel exemple étant la chaîne de blocs Hyperledger8 d'IBM9. Mais nous y reviendrons dans un instant.

    La blockchain est un moyen simple mais ingénieux de transmettre des informations de A à B de manière entièrement automatisée et sûre. Une partie à une transaction lance le processus en créant un bloc. Ce bloc est vérifié par des milliers, voire des millions d'ordinateurs répartis sur le Net. Chaque bloc de la chaîne est chronologiquement connecté aux blocs précédents et synchronisé avec les noeuds du réseau, créant non seulement un enregistrement unique, mais la falsification d'un seul block signifierait la falsification de la chaîne de block entière ce qui rend très difficile la falsification (13J.

    I.5.2 Comment fonctionne la Blockchain

    Les tâches que nous effectuons sur les appareils numériques peuvent être divisées en deux catégories : transactionnelles et non transactionnelles. Écrire des e-mails, regarder des vidéos et naviguer sur Internet sont principalement des activités non transactionnelles, ce qui signifie que nous n'avons rien acheté ou vendu, ni signé aucun accord contractuel.

    Cependant, nous effectuons de plus en plus de transactions en ligne, telles que la signature des contrats, l'achat d'article.

    Les transactions numériques sont plus rapides et plus pratiques, mais peuvent ne pas être sécurisées, permettant aux cybercriminels de se connecter à notre compte ou d'obtenir nos numéros de sécurité sociale et d'autres informations sensibles. La blockchain est conçue pour agir comme un compte public virtuel qui peut être consulté par tout le monde et écrit à l'encre persistante. Chaque bloc est un fichier et un nouveau bloc est créé toutes les 10 minutes, qui contient un enregistrement de toutes les transactions précédentes, répertoriées dans l'ordre et se terminant par une nouvelle transaction (14J.

    En terme technique, la blockchain est une base de données distribuée basée sur des Merkle-Trees chiffrés, c'est-à-dire que la base de données n'est ni créée, ni développée, ni stockée dans une unité centrale de traitement. Au lieu de cela, il existe une copie de chaque ordinateur ou "noeud" utilisé pour traiter et vérifier les transactions. Lorsqu'une nouvelle transaction est ajoutée, toutes les copies sont modifiées en même temps. Si une transaction qui ne respecte pas les règles de protocole est détectée par les noeuds du réseau, elle est immédiatement expulsée (15J.

    réaliser une « économie intelligente » en utilisant la technologie de la blockchain et des contrats intelligents pour émettre et gérer des actifs numérisés.

    8 Hyperledger d'IBM : Hyperledger Fabric est le cadre de la plate-forme IBM Blockchain. Pour permettre une innovation rapide et une adoption plus rapide dans tous les secteurs, la plate-forme IBM Blockchain est basée sur un protocole de chaîne de blocs open source.

    9 IBM International Business Machines : une société multinationale d'informatique et de technologie de l'information

    Chapitre I Généralités et présentation de l'ouvrage

    [14]

    Figure I- 3: Base de données de la blockchain

    La blockchain la plus connue est celle du réseau Bitcoin. Lorsqu'une transaction est générée via un certain noeud, la transaction doit être transmise à d'autres noeuds pour la vérification et puis confirmée par des mineurs. L'action ne peut être annulée. Ce procédé consiste à chiffrer les données de transaction via des signatures numériques et à obtenir une série de valeurs de hachage uniques représentant la transaction via la fonction de hachage, puis à diffuser cette valeur de hachage à d'autres noeuds participants dans le réseau de blockchain Bitcoin pour la vérification (voir figure ci-dessous). Chaque noeud effectue le calcul de preuve de travail (POW) pour déterminer qui peut vérifier la transaction. Le noeud qui a obtenu le droit de vérification diffuse le bloc à tous les noeuds qui terminent le POW dès que possible et diffuse son propre bloc aux autres noeuds. A ce stade, d'autres noeuds confirmeront si les transactions contenues dans ce bloc sont valides. Après avoir confirmé qu'elles n'ont pas été dépensées à plusieurs reprises et ont des signatures numériques valides, elles acceptent le bloc. En ce moment, le bloc est officiellement connecté à la chaîne de blocs [16].

    Chapitre I Généralités et présentation de l'ouvrage

    [15]

    Figure I- 4: Fonctionnement de la Blockchain

    I.5.3 Blockchain vs Base de données normales

    On dit que la blockchain est une sorte de base de données, donc « Quelle est la différence entre la blockchain et la base de données traditionnelle ? »

    I.5.3.1 Centralisation vs Décentralisation système

    La raison même pour laquelle nous examinons le débat entre centralisation et décentralisation est que la blockchain est conçue pour être décentralisée. Cependant, les termes décentralisée et centralisée ne sont pas toujours clairs. Donc, la plupart des concepts et exemples de cette section sont inspirés des notes de M. Vilatik Buterin, le fondateur de la blockchain Ethereum.

    Qu'est-ce qu'un système distribué alors ? Un système distribué centralisé est un système dans lequel il y a, par exemple, un noeud maître chargé de décomposer les tâches ou les données et de répartir la charge entre les noeuds. D'autre part, un système distribué décentralisé est un système où il n'y a pas de "maître" [16J. Donc, la blockchain en est un exemple, et nous en examinerons de nombreuses représentations schématiques plus loin dans ce chapitre.

    Chapitre I Généralités et présentation de l'ouvrage

    [16]

    La figure suivante représente un schéma d'un système distribué centralisé.

    Figure I- 5: Système distribué avec contrôle centralisé

    Cette représentation est similaire à la mise en oeuvre de Hadoop10, à titre d'exemple. Si le calcul est plus rapide dans de telles conceptions en raison de l'informatique distribuée, il souffre également de limitations dues à la centralisation.

    Il est extrêmement important de noter qu`un système centralisé / décentralisé ne se limite pas à l'architecture technique.

    Ce que nous entendons dire, c'est qu'un système peut être décentralisé techniquement, mais ne peut-être pas aussi logiquement ou politiquement. Jetons un oeil à ces différentes perspectives pour pouvoir concevoir correctement un système en fonction de l'exigence :

    Architecture Technique : un système peut être centralisé ou décentralisé à partir d'une architecture technique c'est-à-dire combien nous considérons le nombre de noeuds (ordinateurs) utilisés pour concevoir un système.

    Perspective politique : elle indique le contrôle qu'un individu ou un groupe de personnes ou bien une organisation dans son ensemble sur un système. Si les noeuds du système sont contrôlés par eux, donc le système est centralisé.

    10 Hadoop : est un cadre logiciel open source pour le stockage de données et l'exécution d'applications sur des clusters de matériel de base. Il offre un stockage massif pour tout type de données.

    Chapitre I Généralités et présentation de l'ouvrage

    [17]

    Perspective logique : un système peut être logiquement centralisé ou décentralisé en fonction de son apparence, qu'il soit centralisé ou décentralisé techniquement ou politiquement.

    § Le réseau de distribution de contenu, d'autre part, est décentralisé sur le plan architectural, également décentralisé sur le plan logique, mais est un système politiquement centralisé car il appartient à des entreprises. On cite à titre d'exemple Amazon et CloudFront11.

    § Examinons maintenant la blockchain. Les objectifs de la blockchain étaient de permettre la décentralisation. Ainsi, il est décentralisé architecturalement par conception. Il est également décentralisé d'un point de vue politique, car personne ne le contrôle.

    Une petite mise au point technique, parce qu'on voit qu'il y a beaucoup de confusion sur les termes « centralisé », « décentralisé », « distribué », « pair à pair », pour pouvoir comprendre pourquoi la blockchain est décentralisée par conception (17J.

    Commençons par décrire le système centralisé.

    I.5.3.1.1 Système centralisé

    Figure I- 6: Système centralisé

    C'est un système avec un contrôle centralisé avec tous les autorités administratives, un serveur a priori dans le cas informatique (18J. Un système centralisé typique peut apparaître comme le montre la figure ci-dessous.

    Comme le montre la figure tous les noeuds de l'application sont hébergés sur une seule machine et les utilisateurs peuvent directement se connecter à la machine centrale.

    Le principal problème du système centralisé est qu'il n'est pas facilement évolutif. Il y a une limite au nombre de CPU dans un système et finalement le système entier doit être mis

    à niveau ou remplacé.

    11 CloudFront : est un réseau de diffusion de contenu proposé par Amazon Web Services. Les réseaux de distribution de contenu fournissent un réseau mondialement distribué de serveurs proxy qui mettent en cache le contenu, comme les vidéos Web ou d'autres médias volumineux, plus localement pour les consommateurs, améliorant ainsi la vitesse d'accès pour télécharger le contenu

    Chapitre I Généralités et présentation de l'ouvrage

    I.5.3.1.2 Système décentralisé

    Comme l'indique son nom, ce système n'a pas de centre. L'idée pour un système de communication, c'est que tous les noeuds puissent être une partie d'un réseau qui n'a pas d'autorité principale, et que ces autorités puissent parler entre elles [19J.

    Un système décentralisé typique peut apparaître comme le montre la figure suivante :

    Figure I- 7: Système décentralisé

    On note qu'un système distribué peut également être décentralisé. Par exemple, la blockchain ! Cependant, contrairement aux systèmes distribués communs, la tâche n'est pas subdivisée aux noeuds, car aucun maître ne le ferait dans la blockchain. Pour le réseau P2P ou « pair à pair », l'idée de cette architecture est de permettre au réseau de fonctionner même si on lui coupe l'accès à une partie de lui-même. Un système peer-to-peer est illustré par la figure I-8.

    Figure I- 8: Système décentralisé avec p2p architecture

    [18]

    Chapitre I Généralités et présentation de l'ouvrage

    [19]

    Ce qui fait principalement la différence entre un système « décentralisé » et « entièrement P2P » c'est la place des serveurs. Pour transformer votre système décentralisé avec serveurs en un système entièrement P2P, vous mettez un seul client sur votre serveur, et vous mettez le serveur et le client sur la même machine (20].

    I.6 BLOCKCHAINS AUTORISÉS VS BLOCKCHAINS PUBLIQUES

    Vous ne pouvez pas être un crypto investisseur ou entrepreneur sans avoir une vraie compréhension des différences entre les types de blockchains ainsi que leurs implications. Donc, Quelle sont les différences entre blockchain privée et blockchain publique ? et Comment faire le choix d'une ou de l'autre de ces options ?

    Une blockchain est dite publique c'est à dire « ouverte » lorsque n'importe qui peut devenir membre du réseau. La chaîne d'alliance est ouverte à des organisations spécifiques. De nos jours, l'industrie estime généralement que la chaîne d'alliance se situe entre les chaînes publiques et privées et appartient essentiellement à la catégorie des chaînes privées.

    Nous nous concentrerons sur les chaînes publiques et privées, car les chaînes d'alliance peuvent être classées comme chaînes privées (21].

    I.6.1 Blockchain publique

    La chaîne publique est une chaîne de blocs qui peut être lue par n'importe qui dans le monde, n'importe quelle personne peut envoyer des transactions et les transactions peuvent être effectivement confirmées, et n'importe qui peut participer au processus de consensus. Le processus de consensus détermine quels blocs peuvent être ajoutés à la blockchain (22]. En effet, les transactions qui sont stockées dans ces « Ledgers » sont non modifiables, non supprimables, accessibles en lecture par tout le monde, et ultra sécurisées à base de la cryptographie.

    I.6.1.1 Les caractéristiques de la blockchain publique

    § Protéger les utilisateurs des développeurs.

    § Faible barrière à l'accès.

    § Toutes les données sont publiques par défaut.

    I.6.2 Blockchains privées

    Les blockchains privées regroupent toutes les solutions que les entreprises peuvent installer dans leur contexte interne et qu'elles vont décider d'utiliser de manière partiellement décentralisée, c'est-à-dire elle fait référence à une blockchain dont les autorisations d'écriture sont entre les mains d'une seule organisation (23].

    I.6.2.1 Les caractéristiques de la blockchain privée

    § La vitesse de transaction est très rapide.

    § Meilleure protection de la vie privée.

    § Les coûts de transaction sont considérablement réduits voire nuls.

    § Aide à protéger ses produits de base contre les dommages.

    Chapitre I Généralités et présentation de l'ouvrage

    [20]

    I.7 Mécanismes de sécurité dans les réseaux

    I.7.1 Introduction

    De nos jours, toutes les informations sont numérisées et il est possible de s'y référer en utilisant un ordinateur personnel à portée de main. L'utilisation généralisée d'Internet a permis d'obtenir les informations nécessaires à tout moment et en tout lieu. Mais en même temps, les problèmes de sécurité augmentent. À l'heure actuelle, un réseau privé virtuel (VPN), qui peut accéder en toute sécurité à un réseau interne de l'extérieur de l'entreprise ou construire un réseau virtuel et sécurisé entre les succursales, s'est généralisé. Cependant, il existe de nombreuses méthodes VPN, chacune avec des caractéristiques différentes.

    I.7.2 Qu'est-ce qu'un VPN (Virtual Private Network)

    Le VPN est une technologie permettant de construire virtuellement un réseau privé en utilisant la technologie d'authentification, la technologie de cryptage, la technologie de tunneling, etc. sur un réseau public partagé par de nombreuses personnes comme la ligne Internet [24J.

    I.7.3 Les protocoles du VPN

    I.7.3.1 OpenVPN

    Il s'agit d'un protocole open source relativement nouveau, fiable et exemplaire.

    Très populaire parmi les services tiers, il n'y a pas de support natif pour la plateforme.

    Il prend en charge une variété d'algorithmes, garantissant le plus haut niveau de sécurité.

    C'est l'un des protocoles les plus rapides. La vitesse de communication dépend du niveau de cryptage, mais dans la plupart des cas, l'effet n'est pas ressenti en utilisation normale.

    Bien qu'il puisse sembler difficile à configurer, de nombreux excellents services VPN sont conçus pour nécessiter peu ou pas d'intervention de l'utilisateur [25J.

    I.7.3.2 IKEv2 (Internet Key Exchange v2)

    IKEv2 est un protocole de tunneling basé sur IPsec développé par Microsoft et Cisco. Il est stable et sécurisé car il prend en charge la capacité de reconnexion et divers algorithmes.

    Il possède une très bonne vitesse de communication relativement plus rapide que L2TP, SSTP, PPTP.

    Il n'est pas souvent disponible sur d'autres plates-formes, à l'exception des terminaux BlackBerry. Parce qu'il s'agit d'une technologie propriétaire, certaines personnes peuvent vouloir l'utiliser en fonction de leur connaissance de Microsoft. Mais la même version open source existe [26J.

    Chapitre I Généralités et présentation de l'ouvrage

    [21]

    I.7.3.3 L2TP (protocole de tunneling de couche 2)

    Il vient du Cisco L2F et du PPTP de Microsoft. Puisqu'il n'y a aucune fonction de sécurité, elle est généralement fournie avec IPsec.

    Les terminaux et les systèmes d'exploitation qui prennent en charge les VPN récents sont toujours intégrés. Dans l'ensemble, c'est un bon protocole, mais il a été souligné que la NSA (National Security Agency) pourrait interférer avec une fuite récente. Il n'y a pas beaucoup d'avantages par rapport à OpenVPN (27].

    I.7.3.4 SSTP (Secure Socket Tunneling Protocol)

    SSTP est introduit pour la première fois par Microsoft sur Windows Vista. Il est intégré à Windows et peut ne pas être disponible sur d'autres plateformes. La plupart des pares-feux peuvent être facilement traversés. En raison de la technologie Microsoft, vous ne pouvez pas dire où vos données sont envoyées (28].

    La vitesse de communication est rapide et relativement sécurisée, mais les vulnérabilités qui la sous-tendent la rendent inférieure au meilleur protocole.

    I.7.3.5 PPTP (protocole de tunneling point à point)

    Il s'agit du premier protocole VPN pris en charge par Windows. Il peut être utilisé sur tous les appareils pouvant utiliser un VPN.

    La vitesse de communication est très élevée en raison des faibles normes de cryptage.

    PPTP offre une très faible sécurité. On sait qu'il est facilement gêné par la NSA depuis de nombreuses années. Microsoft a amélioré PPTP, mais recommande d'utiliser d'autres protocoles, tels que SSTP et L2TP / IPSec.

    [22]

    Chapitre I Généralités et présentation de l'ouvrage

    I.7.3.6 Comparaison entre les protocoles [29]

    Protocol

    La

    vitesse

    Cryptage &

    Navigation sécurisée

    La

    stabilité

    Streaming multimédia

    Partage de fichiers P2P

    Compatible avec

    Avantages

    Inconvénien ts

    PPTP

    Vite

    Faible

    Moyen

    Bien

    Bien

    La plupart
    des OS et
    appareils.

    Haute vitesse.

    Ancien protocole.

    Faible sécurité.

    L2TP/IPSec

    Vite

    Moyen

    Bien

    Bien

    Bien

    La plupart
    des OS et
    appareils.

    La sécurité est forte.

    Vitesse lente.

    Peut être bloqué par un pare-feu

    IKEv2/IPSec

    Vite

    Bien

    Bien

    Bien

    Bien

    La plupart
    des OS et
    appareils.

    La sécurité est forte.

    Haute vitesse.

    Suivez

    automatiquement la communication

    Moins d'appareils pris en charge.

    OpenVPN

    Vite

    Bien

    Moyen

    Bien

    Bien

    La plupart
    des OS et
    appareils

    La sécurité est forte.

    Haute vitesse Open source.

    Peut passer à travers le pare-feu

    Peut nécessiter une application tierce.

    SSTP

    Moyen

    Bien

    Moyen

    Moyen

    Bien

    Windows

    La sécurité est bien.

    Non bloqué par le pare-feu.

    Est opaque

    Pour Windows

     

    Tableau I- 2: Comparaison entre les protocoles du VPN

    Chapitre I Généralités et présentation de l'ouvrage

    [23]

    I.8 Conclusion

    Dans ce chapitre, nous avons couvert l'évolution de la blockchain, son histoire et sa définition, quels sont les avantages de la conception et son fonctionnement, pourquoi est-il si important avec certains cas d'utilisation pertinents et cette dernière est divisé en deux partie privée et publique et nous conclurons par les mécanismes de sécuritéì dans les réseaux.

    Dans le chapitre II, nous approfondirons dans les fondamentaux de la blockchain.

    Chapitre II Fonctionnement de la blockchain

    [24]

    Partie 1 : Les crypto-monnaies

    II.1 Introduction

    Avant de commencer, on fait une petite définition sur laquelle on parle de la crypto currency, ou bien le chiffrement de l'argent [30J (en français : crypto-monnaie, également traduit en monnaie de cryptographie, monnaie de mot de passe) qui utilise des principes de la cryptographie pour assurer la sécurité des transactions et des unités de contrôle des transactions pour créer un moyen d'échange [31J.

    Tout comme les billets de banque généralement utilisés dans la conception anti-contrefaçon, l'anti-contrefaçon de la crypto-monnaie est un nouveau type de jeton qui utilise la crypto-monnaie et le hachage numérique à l'aide de la monnaie numérique et de la monnaie virtuelle et est lié à des contrats intelligents. En 2009, Bitcoin est devenu la première monnaie de cryptage décentralisée, multidevises.

    Après, ce terme fait référence à chiffrer ces conceptions [32J.Depuis lors, plusieurs crypto-monnaies similaires ont été créées, souvent appelées altcoins12 [33J[34J[35J.Les crypto-monnaies sont basées sur un mécanisme de consensus décentralisé [36J[37J, contrairement aux systèmes financiers bancaires qui reposent sur un système de réglementation centralisé. Vous pariez avant tout sur un projet, une promesse, voire un modèle de société. Pour vous aider à y voir plus clair, nous avons décidé de vous expliquer les différences qui existent entre les diverses familles de crypto-monnaies en fonction de leur utilisation la plus logique

    [38J.

    II.2 Quelles différences entre Bitcoin (BTC), Litecoin (LTC) et Ethereum (ETH) ?

    Le Bitcoin13, le Litecoin14 et l'Ethereum15 sont les trois principales monnaies cryptographiques. Cependant, si elles ont de nombreux points communs, elles disposent

    12 Le terme « altcoins » fait référence à toutes les crypto-monnaies autres que Bitcoin.

    13 Le Bitcoin (?, BTC) (de l'anglais bit : unité d'information binaire et coin « pièce de monnaie ») est une cryptomonnaie autrement appelée monnaie cryptographique.

    15 Litecoin (symbole monétaire : £ ; sigle : LTC) est une monnaie électronique distribuée, Chaque Litecoin est divisé en cent millions d'unités plus petites, définies par huit décimales.

    16 Ethereum : est un protocole d'échanges décentralisés permettant la création par les utilisateurs de contrats intelligents grâce à un langage Turing-complet.

    Chapitre II Fonctionnement de la blockchain

    chacune de leurs propres particularités. Nous allons donc voir quelles sont les différences entre ces trois crypto-monnaies [39].

    II.2.1 Les différences entre le Bitcoin et le Litecoin

    Ce sont les deux monnaies qui se ressemblent le plus. Rien d'étonnant à cela, Litecoin était l'une des premières fourchettes Bitcoin. Il a été développé par Charlie Lee et a été initialement lancé en tant que code open source sur GitHub16 le 7 octobre 2011. Le jeton est conçu comme une alternative plus rapide et évolutive au Bitcoin. Ce jeton est très similaire au jeton précédent, mais il existe de nombreuses différences importantes. Étant donné que le jeton a été conçu comme une alternative "plus légère" au Bitcoin, il a été modifié pour améliorer sa vitesse et sa disponibilité [40].

    Certaines différences entre Litecoin et Bitcoin sont :

    § Temps de génération de blocs réduit (de 10 minutes pour Bitcoin à 2,5 minutes pour Litecoin)

    § Augmentation de l'offre totale de jetons

    § Différents algorithmes de hachage (Scrypt au lieu du Sha-256 de Bitcoin)

    § Interface utilisateur graphique améliorée

    § Le litecoin est souvent appelé la crypto-monnaie "argentée" pour correspondre au statut "or" de Bitcoin.

    Le tableau II-1 montre les principales différences entre Bitcoin et Litecoin [40].

    [25]

    Bitcoin

    Litecoin

    Restrictions de jeton

    21 Millions

    84 Millions

    Algorithme

    SHA-256

    Scrypt

    Concept

    Digital money (Gold)

    Digital money (Silver)

    Temps de sortie moyen

    10 min

    2.5 min

    Explorateur de blocs

    Blockchain.info

    Block-explorer.com

    Qui a réussi

    Satoshi Nakamoto

    Charlie Lee

    Date de création

    3 janvier 2009

    7 octobre 2009

     

    Tableau II- 1: La comparaison entre Bitcoin & Litecoin

    16 GitHub : est une société mondiale basée aux États-Unis qui propose un hébergement pour le contrôle des versions de développement logiciel à l'aide de Git.

    [26]

    Chapitre II Fonctionnement de la blockchain

    II.2.2 Les différences entre le bitcoin et l'Ethereum

    L'Ethereum et le Bitcoin sont deux crypto-monnaies avec plusieurs points communs mais surtout de grosses différences. Voici donc les principales d'entre elles (41]:

    § Entre le Bitcoin et l'Ethereum, la principale différence est la durée que prend la génération d'un bloc. Alors que le Bitcoin prend 10 minutes pour le faire, l'Ethereum est bien plus rapide puisqu'il lui faut seulement 12 secondes.

    § L'algorithme utilisé par les deux crypto-monnaies est différent. De plus, l'Ethereum est beaucoup plus souple et laisse un plus grand nombre d'options à ses utilisateurs. En résumé, en utilisant l'Ethereum, on peut faire tout ce qu'on peut faire avec le Bitcoin, mais on peut également faire d'autres choses.

    § Enfin, l'Ethereum est beaucoup plus orienté vers sa technologie, dont l'Ether n'est qu'une composante alors que le Bitcoin a surtout créé une monnaie stable qui est avant tout destinée à faire de l'échange.

    II.2.3 Les différences entre le Litecoin et l'Ethereum

    En ce qui concerne le Litecoin et l'Ethereum, on peut noter que les différences sont similaires à celles entre l'Ethereum et le Bitcoin. Cependant, on pourra remarquer quelques différences importantes entre les deux (42] :

    § Entre le Litecoin et l'Ethereum, la principale différence est la durée que prend la génération d'un bloc. Il faut moins de temps pour générer un bloc avec l'Ethereum qu'avec le Litecoin.

    § Si le Litecoin était auparavant l'une des crypto-monnaies les plus rentables pour les mineurs, elle est actuellement dépassée par l'Ethereum.

    En somme, on peut dire que :

    § Chacune de ces trois crypto-monnaies dispose de ses propres avantages et particularités.

    § Cependant, le Bitcoin est de loin la crypto-monnaie la plus prisée, malgré la polyvalence de l'Ethereum et l'attractivité du Litecoin. Il le doit particulièrement à sa très grande stabilité.

    § Parmi les différentes crypto-monnaies, Bitcoin sert de référence et les autres lui sont comparées.

    § Vous trouverez différents types de crypto-monnaies, qui peuvent vous permettre de payer de manière anonyme, de miner, de trouver une bonne alternative à Bitcoin ou qui proposent leur propre écosystème.

    II.2.5 Comment acheter des crypto-monnaies ?

    Lorsqu'on veut commencer à utiliser des crypto-monnaies, il peut parfois être difficile de savoir comment s'y prendre pour effectuer son premier achat. Nous allons donc vous guider pas à pas et vous expliquer comment y parvenir (43].

    Donc, La « crypto » dans les crypto-monnaies fait référence à une cryptographie compliquée qui permet la création et le traitement des monnaies numériques et de leurs transactions à travers des systèmes décentralisés. Parallèlement à cette importante caractéristique, la cryptographie sert à déterminer la capacité à sécuriser les transactions sur

    Chapitre II Fonctionnement de la blockchain

    [27]

    internet. Il est désormais possible d'opérer, dans un système ouvert, un réseau totalement sécurisé et totalement décentralisé de transactions anonymes entre un très grand nombre de participants qui ne se connaissent pas et ne se font pas mutuellement confiance. Ces progrès ouvrent des perspectives nombreuses pour le stockage et la transmission confidentielle de données sur internet. Il est assez naturel que des entrepreneurs innovants

    s'appuient sur ces technologies pour développer des expériences monétaires et financières

    [44].

    A l'heure actuelle ou tous les pays s'interrogent aujourd'hui sur la meilleure manière de répondre aux défis posés par les crypto-monnaies [44], l'Algérie se doit tracer une voie originale, préservant les bénéficies de l'innovation technologique et protégeant l'intégrité des marchés. Pour y parvenir, il faut répondre aux trois questions soulevées par la crypto-monnaies : Que sont-elles ? Par la cryptographie et comment la blockchain fonctionne ?

    II.3 Qu'est-ce qu'une Crypto-monnaie :

    La crypto-monnaie est un terme général pour les devises qui utilisent la cryptographie comme mesure de sécurité, synonyme de monnaie virtuelle [45].

    Elle se caractérise par l'utilisation de technologies telles que le cryptage à clé publique, le hachage ou les signatures numériques incorporant les deux en tant que technologies pour améliorer la confidentialité des communications [46].

    Une monnaie virtuelle peut être utilisée comme prix pour des biens ou des services entre un nombre indéterminé de personnes et d'entreprises sur Internet. Dans la loi sur le règlement des fonds, les crypto-monnaies sont juridiquement définies comme suit [47] :

    § Lors de l'achat ou de l'emprunt de biens ou de la réception de services, les biens peuvent être utilisés par des personnes non spécifiées pour payer ces frais, et les personnes non spécifiées sont achetées en tant qu'autre partie. Et la valeur de la propriété qui peut être vendue.

    § Valeur du bien qui peut être échangée avec une personne non spécifiée en tant qu'autre partie avec celles énumérées au point précédent et qui peut être transférée à l'aide d'une organisation de traitement électronique de l'information.

    « De nombreuses crypto-monnaies sont des systèmes décentralisés basés sur la technologie blockchain, distribués par un réseau d'ordinateurs disparates. Elle n'est émise par aucune autorité centrale, ce qui le rend théoriquement à l'abri de l'ingérence ou de la manipulation du gouvernement. La première crypto-monnaie basée sur une chaîne de blocs était le Bitcoin, qui reste la crypto-monnaie la plus populaire et la plus précieuse [48]. »

    II.3.1 La double innovation des cryptomonnaies ?

    Hormis les pièces et billets de banque17, si vous avez suivi des activités bancaires, d'investissement ou de crypto-monnaie au cours des dix dernières années, vous connaissez peut-être la « blockchain », la technologie de tenue de registres derrière le réseau Bitcoin. Et il y a de fortes chances que cela ait autant de sens [49]. En essayant d'en savoir plus sur la

    17 Qui représentent généralement moins de 10% de la masse monétaire totale (10% dans la zone euro)

    Chapitre II Fonctionnement de la blockchain

    [28]

    blockchain, vblockchain, vous avez probablement rencontré une définition comme celle-ci : "la blockchain est un grand livre public distribué et décentralisé".

    La révolution est ailleurs plus profonde, à la fois technologique et monétaire. Ces deux éléments sont présents dans la plupart des cryptomonnaies.

    II.3.1.1 L'innovation technologique :

    Plusieurs technologies de base sont utilisées par les crypto-monnaies. La technologie blockchain est une technologie qui permet de structurer les données, d'identifier et de suivre les transactions, de partager ses informations sur un réseau distribué d'ordinateurs, créant ainsi un « réseau de confiance distribué » [50]. Le fondement des crypto-monnaies comme le Bitcoin, la Blockchain fournit un moyen transparent et sécurisé pour suivre la propriété et le transfert des actifs.

    § La technologie des registres distribués (DLT) : Groupes de personnes et d'entreprises qui partagent les mêmes valeurs, s'associent pour créer une plateforme centrée sur la communauté. En fonction des contributions, chaque membre est récompensé [50].

    § La blockchain est une forme de technologie de registre distribué, dans laquelle les données sont regroupées en chaines de blocs successifs. Lorsque nous prononçons les mots « bloc » et « chaîne » dans ce contexte, nous parlons en fait d'informations numériques (le « bloc ») stockées dans une base de données publique (la « chaîne »). L'ensemble des blocs vise à cristalliser le contenue des transactions. Le bloc est positionné dans la blockchain de manière à rendre impossible18 toute modification accidentable. Cette cristallisation repose sur un lien cryptographique, et établie entre chaque bloc et le suivant. Cette architecture venant à souder tous ces éléments entre eux [51].

    § Les procédures de consensus : elles permettent de définir la manière dont les noeuds doivent interagir, la façon de transmettre les données entre ces derniers et les exigences pour une validation de bloc réussie.

    Ces trois innovations technologiques ne sont pas liées dans tous les crypto-monnaies. On le retrouve intégralement dans le Bitcoin et Ether, mais pas dans d'autres crypto-monnaies. Par Exemple Ripple19.

    Le schéma suivant permet de situer la technologie blockchain dans le cadre existant :

    18 La fonction de Hachage

    19 Ripple est une altcoin et un protocole de paiement utilisant la technologie blockchain pour faciliter les transactions financières des banques.

    Chapitre II Fonctionnement de la blockchain

    [29]

    Figure II- 1: Innovation technologique de la technologie blockchain

    La digitalisation de la valeur ; est une deuxième innovation que les crypto-monnaies contribuent à promouvoir. Elle permet de transférer en toute sécurité entre individus sans aucun intermédiaire à l'aide de la digitalisation « billet de banque ». Cette représentation digitale appelée des « jetons » ou bien par leur nom anglais, des « Tokens » [52].

    II.3.1.2 L'innovation monétaire

    Pour mieux comprendre, il faut décrire les caractéristiques d'un système monétaire actuel et de mesurer en quoi les crypto-monnaies se distinguent.

    La banque et la monnaie ; Cette monnaie dite « billet de banque » à plusieurs caractéristiques notables :

    Pour utiliser la monnaie, vous devez disposer d'un compte bancaire, nécessaire à l'incorporation financière au sein d'une entreprise ;

    § Toutes les transactions monétaires suivent un mouvement bancaire. Donc, elles peuvent être surveillées et règlementées ;

    § L'argent est une créance pour une personne morale spécifique identifiable, dans ce cas, la banque.

    § La monnaie de la banque est une monnaie « privée ». Donc, elle est vulnérable à une perte de confiance.

    § Elle bénéficie par le biais de mécanisme d'assurance ou d'un accès au refinancement de la banque centrale ;

    § Par ailleurs, la banque centrale émet la monnaie servant de « base »au système.

    Avec le développement d'internet, et après l'envolée des paiements en ligne, on voit arriver de nouvelles solutions de paiement très modernes [53].

    La monnaie électronique est un substitut à l'argent liquide (pièces et billets), stocké dans un dispositif électronique, magnétique ou sur un serveur distant.

    La monnaie électronique peut également être stockée (et utilisée) sur les téléphones portables. Les informations de paiement sont alors stockées sur la carte SIM du Smartphone et font l'objet d'un cryptage de sécurité et utilisent la technologie NFC (Near Field

    Chapitre II Fonctionnement de la blockchain

    [30]

    Communication) pour autoriser des paiements, ou encore sur un compte de paiement en ligne.

    Les crypto-monnaies ; est une monnaie virtuelle qui n'existe que numériquement et s'appuie sur la cryptographie pour sa sécurité. Difficile à contrefaire grâce à cette caractéristique, son principal attrait est sa nature organique. Elle utilise un système décentralisé pour enregistrer les transactions et gérer l'émission de nouvelles unités. Une crypto-monnaie n'est émise par aucune autorité centrale, ce qui la rend théoriquement non vulnérable à l'ingérence ou à la manipulation du gouvernement [53].

    Les créateurs des crypto-monnaies ont accordé beaucoup d'importance et d'attention à leur régime d'émission. Ces régimes, assez divers combinent un mélange de rigueur20, d'ambiguïté21 et d'innovation.

    II.3.2 La diversité et l'évolution de la crypto-monnaie

    Il y a 11 ans, la première transaction Bitcoin était née. En une courte période de 11 ans, l'industrie des crypto-monnaies s'est développée rapidement et, en même temps, de nouveaux actifs cryptographiques sont apparus et ont également gagné un grand nombre de supporters.

    L'industrie a radicalement changé depuis 6 ans, et le Bitcoin n'est plus la seule crypto-monnaie. L'émergence d'un grand nombre de crypto-monnaies nous a également conduits à classer la valeur de marché des crypto-monnaies.

    La société d'analyse de données DataLight22 a réalisé une telle vidéo, retraçant les changements dans la capitalisation boursière de diverses crypto-monnaies depuis 2013.

    Figure II- 2: Comparaison de la valeur marchande des crypto-monnaies en 2013 et 2019

    20 La rigueur provient d'un encadrement de la quantité de monnaie émise.

    21 L'ambiguïté vient des conditions dans lesquelles certains fondateurs se « réservent », à l'émission c'est une fraction de stock de crypto-monnaie.

    22 DataLight fournit des données uniques sur les crypto- monnaies. Il donne toutes les informations pour prendre des décisions commerciales ultra précises

    Chapitre II Fonctionnement de la blockchain

    [31]

    Les crypto-monnaies sont évolutives et peuvent se transformer ou se multiplier à partir d'une même souche selon le processus des « forks23 ». La fourche des crypto-monnaies est une branche de la blockchain.

    II.3.2.1 Les types des forks

    Il existe deux types de fourches : les fourches dures et les fourches souples. Au niveau le plus élémentaire, ces fourches se produisent en raison des méthodes de travail incohérentes des participants sur le protocole spécifique de la blockchain. Cela est généralement dû à un groupe de développeurs souhaitant modifier les règles que la blockchain utilise pour vérifier la validité des transactions. Ce groupe de développeurs peut choisir de changer une partie du protocole, puis la blockchain sera divisée en deux voies possibles.

    II.3.2.1.1 Fourche dure (hard fork)

    Un hard fork24 se produit lorsqu'une nouvelle règle est introduite dans le protocole et il doit être définitivement séparé de la version actuelle de la blockchain. Par conséquent, il nécessite que tous les noeuds soient mis à niveau vers la dernière version. En bifurquant de cette manière, un chemin suivra la nouvelle blockchain mise à niveau. L'autre façon continue comme avant. Bitcoin Cash (BCH) est un exemple de la première fourche dure de la blockchain Bitcoin.

    II.3.2.1.2 Fourche souple (soft fork)

    Les fourches souples, en revanche, sont rétro compatibles avec tous les blocs précédents de la blockchain. Cela signifie que les noeuds existants sur le réseau n'ont pas besoin de mettre à niveau ou d'accepter de nouveaux protocoles, et les nouvelles transactions sont valides. Bien que les fourches souples puissent également diviser la chaîne de blocs, la probabilité que cela se produise est beaucoup plus faible. Pour cette raison, il est souvent utilisé pour implémenter des mises à niveau logicielles plus petites.

    Partie 2 : La cryptographie

    II.4 Définition

    La cryptographie est le composant le plus important de la blockchain. C'est un domaine de l'utilisation des mathématiques pour crypter et décrypter des données [54]. La

    23 Ce terme « Forks » désigne la scission d'une blockchain donnant naissance à deux nouvelles chaines partageant le même historique.

    24 Un « Hard Fork » permet de rompre définitivement avec la précédente version de la blockchain, en déviante la chaîne de blocs initiale sur la base d'un nouveau protocole créé à cet effet.

    Le « soft fork » s'apparente pour sa part à une simple modification du protocole existant, mais sans création de monnaie nouvelle, le protocole antérieur pouvant être encore utilisé.

    Chapitre II Fonctionnement de la blockchain

    [32]

    cryptographie vous permet de stocker des informations sensibles ou de les transmettre sur des réseaux non sécurisés comme Internet afin qu'elles ne puissent être lues par personne, à l'exception du destinataire prévu [55]. Nous essaierons de développer une solide compréhension de certains des concepts cryptographiques de cette section, car différents problèmes peuvent nécessiter des solutions cryptographiques différentes ; c'est le composant le plus important pour assurer la sécurité du système. De nombreux piratages ont été signalés sur les portefeuilles et les échanges en raison d'une conception plus faible ou de mauvaises implémentations cryptographiques.

    La cryptographie existe depuis plus de deux mille ans. Maintenant, c'est la science de garder les choses confidentielles en utilisant des techniques de cryptage. Cependant, la confidentialité n'est pas le seul objectif. En matière de cyber sécurité, il y a un certain nombre de choses qui nous préoccupent en ce qui concerne les données. Ceux-ci incluent la confidentialité, l'intégrité, la disponibilité et la non-répudiation, comme mentionné dans la liste suivante, que nous explorerons plus loin :

    § La confidentialité signifie que nos données ne peuvent pas être consultées / lues par des utilisateurs non autorisés.

    § L'intégrité signifie que nos données nous parviennent à 100% intactes et n'ont pas été modifiées, que ce soit par un acteur malveillant, une perte de données ou autre.

    § La disponibilité (authentification) signifie que nos données sont accessibles en cas de besoin.

    § La non-répudiation : l'expéditeur, après avoir envoyé un message, ne peut pas nier ultérieurement qu'il a envoyé le message. Cela signifie qu'une entité (une personne ou un système) ne peut pas refuser la propriété d'un engagement ou d'une action antérieure.

    Toute information sous forme de message texte peut être appelée texte en clair. L'idée est de chiffrer le texte en clair à l'aide d'un algorithme de chiffrement et d'une clé qui produit le texte chiffré. Le texte chiffré peut ensuite être transmis au destinataire prévu, qui le déchiffre en utilisant l'algorithme de déchiffrement et la clé pour obtenir le texte en clair

    [56].

    Prenons un exemple, Kawter veut envoyer un message (m) à Chaima, si elle envoie simplement le message tel quel, tout adversaire, disons, peut facilement intercepter le message et la confidentialité est compromise. Donc, Kawter veut crypter le message en utilisant un algorithme de cryptage (E) avec une clé secrète (k) pour produire le message chiffré appelé "texte chiffré". L'ennemie doit connaître l'algorithme (E) et la clé (k) pour intercepter le message. Plus l'algorithme et la clé sont forts, plus l'ennemie a de la difficulté à attaquer. Notez qu'il serait toujours souhaitable de concevoir des systèmes de blockchain leurs systèmes de sécurité s'adapteront également afin de répondre aux besoins des différentes utilisations.

    L'ensemble d'étapes commun à cette approche peut être représenté comme illustré à la figure suivante :

    Chapitre II Fonctionnement de la blockchain

    [33]

    Chapitre II Fonctionnement de la blockchain

    Figure II- 3: Comment fonctionne la cryptographie en général

    II.5 Les différents types de la cryptographie

    Nous examinerons les différentes formes de cryptographie numérique et com ment elles peuvent nous aider à atteindre les trois autres objectifs énumérés ci-dessus. Lorsque nous parlons de cryptographie numérique, nous nous référons généralement à l'un des éléments suivants :

    § Cryptage symétrique.

    § Cryptage asymétrique.

    § Fonctions de hachage.

    § Signatures numériques.

    Nous avons développé chacun de ces points ci-dessous. Gardez également à l'esprit que ces exemples sont destinés à illustrer les concepts et non à fournir les meilleures pratiques en matière de sécurité des données.

    II.5.1 Cryptographie à clé symétrique

    II.5.1.1 Introduction

    En cryptage, des clés symétriques (également appelée cryptographie à clé commune, cryptographie à clé secrète ou cryptographie classique) sont utilisées pour crypter et décrypter des informations. En d'autres termes, pour déchiffrer les informations, vous avez besoin de la clé utilisée pour le chiffrement [57]. Une "clé" ici est en fait un secret partagé entre plusieurs parties, ce qui permet de maintenir un lien vers des informations confidentielles. Cette exigence selon laquelle les deux parties ont accès à la clé privée est

    [34]

    l'un des principaux inconvénients du cryptage à clé symétrique par rapport au cryptage à clé publique [57].

    Bien que la vitesse de traitement de la cryptographie à clé symétrique soit élevée, à mesure que le nombre de personnes qui échangent des données augmente, le nombre de clés à gérer augmente.

    Il existe deux principaux types de cryptage symétrique dans les temps modernes : le cryptage des flux de données et le cryptage des blocs de données. Le cryptage du flux de données consiste à générer un flux de code aléatoire avec l'algorithme et la clé, puis à générer le flux de données crypté avec le flux de données XOR. La partie de déchiffrement n'a besoin que de générer le même flux de code aléatoire. Le chiffrement des blocs de données divise les données d'origine en blocs de données de taille fixe (tels que 64 bits), et le chiffreur utilise la clé pour traiter les blocs de données. Le chiffrement des flux de données est généralement plus rapide, mais le chiffrement par bloc est plus sécurisé. Dans les méthodes de cryptage courantes, DES et 3DES sont les méthodes de cryptage par blocs les plus utilisées, AES est une méthode de cryptage par blocs plus récente, RC4 est le cryptage des flux de données, etc [58].

    Le schéma de chiffrement le plus courant utilisant la cryptographie symétrique comprend cinq composants :

    § Texte brut : informations originales.

    § Algorithme de chiffrement : prenez la clé comme paramètre, effectuez diverses règles et étapes de substitution et de conversion sur le texte en clair et transformez le résultat en texte chiffré.

    § Clé : Les paramètres des algorithmes de chiffrement et de déchiffrement, qui affectent directement le résultat de la transformation du texte en clair.

    § Ciphertext : résultat de la transformation du texte en clair.

    § Algorithme de déchiffrement : la transformation inverse de l'algorithme de chiffrement, avec le texte chiffré comme entrée et la clé comme paramètres, et le résultat de la conversion est en texte clair.

    Il existe plusieurs opérations mathématiques couramment utilisées en cryptographie symétrique. Le but commun de ces opérations est de brouiller les chiffres en clair du texte en clair aussi profondément que possible, augmentant ainsi la difficulté de déchiffrement. Parmi ces opérateurs, on a XOR connu sous le nom de "exclusive or", il s'agit d'une opération d'algèbre booléenne binaire. On peut également comprendre simplement que si les deux chiffres participant à l'opération OU exclusif sont égaux, le résultat est 0 et s'ils ne sont pas égaux, le résultat est 1. Le symbole mathématique de XOR est ? [59].

    Chapitre II Fonctionnement de la blockchain

    Figure II- 4: Opérateur XOR et sa table de vérité

    II.5.1.2 Les algorithmes de chiffrement

    Les algorithmes de chiffrement célèbres incluent "DES", "RC4" et "AES". Dans ce qui suit, on va parler seulement des algorithmes "DES" et "AES".

    II.5.1.2.1 Data Encryption Standard « DES »

    DES est un chiffrement par blocs typique - un algorithme qui convertit un texte en clair de longueur fixe en un texte chiffré de la même longueur à travers une série d'opérations complexes. Pour DES, la longueur de bloc est de 64 bits. Dans le même temps, DES utilise des clés pour personnaliser le processus de transformation, de sorte que l'algorithme estime que seuls les utilisateurs qui détiennent la clé utilisée pour le chiffrement peuvent déchiffrer le texte chiffré. La clé est de 64 bits en surface, cependant, seuls 56 d'entre eux sont réellement utilisés pour l'algorithme, et les 8 bits restants peuvent être utilisés pour la parité et rejetés dans l'algorithme. Par conséquent, la longueur de clé effective de DES n'est que de 56 bits [60J.

    Deux principes de conception de chiffrement par blocs sont utilisés dans la conception du DES : la confusion et la diffusion, dont le but est de résister à l'analyse statistique du crypto système par l'adversaire. Le rôle de la diffusion est d'appliquer l'influence de chaque texte en clair à plus de bits de texte chiffré en sortie le plus rapidement possible, afin d'éliminer la structure statistique du texte en clair dans un grand nombre de textes chiffrés et de rendre l'influence de chaque clé aussi rapide que possible. Il y a plus de bits de texte chiffré pour éviter que la clé ne soit décodée pièce par pièce.

    [35]

    Le cadre algorithmique du chiffrement DES est le suivant :

    Chapitre II Fonctionnement de la blockchain

    [36]

    Figure II- 5: Structure DES

    La vitesse des recherches exhaustives de clés contre DES après 1990 a commencé à gêner les utilisateurs de DES. Cependant, les utilisateurs ne voulaient pas remplacer DES car il faut énormément de temps et d'argent pour changer les algorithmes de chiffrement qui sont largement adoptés et intégrés dans de grandes architectures de sécurité. L'approche pragmatique n'était pas d'abandonner complètement le DES, mais de changer la manière dont le DES est utilisé. Cela a conduit aux schémas modifiés de Triple DES.

    TDES (ou 3DES) est un algorithme qui améliore DES. Il utilise trois clés de 64bits pour chiffrer trois fois les données, et sa sécurité est améliorée par rapport à l'algorithme DES. Cependant, les performances de l'algorithme TDES sont bien inférieures à celles de l'algorithme AES, et son efficacité d'implémentation logicielle et matérielle n'est pas aussi bonne que l'algorithme AES. En 1999, le National Institute of Standards and Technologie (NIST) a désigné TDES comme algorithme cryptographique pour la période de transition. A l'heure actuelle, l'utilisation des algorithmes TDES diminue, et on prévoit qu'ils seront éventuellement remplacés par des algorithmes AES.

    II.5.1.2.2 Advanced Encryption Standard « AES »

    L'Institut national des normes et de la technologie (NIST) a travaillé à l'élaboration d'une nouvelle norme de chiffrement pour sécuriser les informations gouvernementales. L'organisation en est aux dernières étapes d'un processus ouvert de sélection d'un ou

    Chapitre II Fonctionnement de la blockchain

    [37]

    plusieurs algorithmes ou formules de brouillage des données pour la nouvelle norme de chiffrement avancé (AES) et prévoit de prendre des décisions.

    AES est destiné à être un successeur plus fort et plus efficace de la norme de chiffrement des données triple (3DES), qui a remplacé le DES vieillissant, qui a été fissuré en moins de trois jours en juillet 1998.

    AES est une nouvelle génération de normes de chiffrement NIST / FIPS25. Au cours des 30 prochaines années, il remplacera DES en tant que norme de cryptage de mot de passe commune pour les entreprises publiques et privées. Le texte chiffré crypté peut protéger 100 ans de sécurité.

    Il est utilisé pour protéger les données sensibles. Le bloc de données est de 128 bits, et la longueur de la clé peut être sélectionnée parmi 128/192/256 bits.

    Figure II- 6: Structure AES

    Le processus de cryptage AES fonctionne sur une matrice 4 × 4 octets. Cette matrice est également appelée « état » et sa valeur initiale est un bloc de texte en clair. La taille d'un élément de la matrice est l'un des blocs de texte en clair. La méthode de chiffrement Rijndael prend en charge des blocs plus grands et le "numéro de ligne" de sa matrice peut

    25 FIPS (Federal Information Processing Standards) sont des normes annoncées publiquement développées par le National Institute of Standards and Technology pour être utilisées dans les systèmes informatiques par des agences gouvernementales américaines non militaires et des entrepreneurs gouvernementaux.

    Chapitre II Fonctionnement de la blockchain

    [38]

    être augmenté selon les besoins. Lors du chiffrement, chaque tour de boucle de chiffrement AES (sauf le dernier tour) comprend 4 étapes (61] :

    § AddRoundKey : chaque octet de la matrice est associé à un sous-octet retour alliage de clé fait (clé année) de l'opérateur OU EXCLUSIF, chaque sous-clé générée par le système de génération de clé.

    § SubBytes : Grâce à une fonction de remplacement non linéaire, chaque octet est remplacé par un octet correspondant par une table de recherche.

    § ShiftRows : tournez chaque ligne de la matrice.

    § MixColumns : opérations pour mélanger complètement les lignes individuelles dans la matrice. Cette étape utilise une transformation linéaire pour mélanger les quatre octets de chaque ligne. L'étape MixColumns est omise dans la dernière boucle de chiffrement et remplacée par une autre AddRoundKey.

    Figure II- 7: Processus du premier tour AES II.5.1.2.3 Comparaison entre DES et AES

    Depuis que l'algorithme DES a été rendu public, la communauté universitaire a mené des recherches et lancé des débats acharnés sur sa sécurité et d'autres aspects. Techniquement, la critique du DES s'est concentrée sur les domaines suivants (62] :

    § En tant que chiffrement par blocs, l'unité de chiffrement de DES n'est que binaire 64 bits, ce qui est trop petit pour la transmission de données, car chaque bloc ne contient que 8 caractères, et certains de ces bits sont également utilisés pour la parité ou d'autres communications.

    § Le nombre de clés DES est trop court, seulement 56 bits, et les clés utilisées à chaque itération sont générées récursivement, cette corrélation réduit inévitablement la sécurité du système cryptographique. La méthode pour trouver la clé est devenue possible.

    § Le DES ne peut pas lutter contre la cryptanalyse différentielle et linéaire.

    §

    Chapitre II Fonctionnement de la blockchain

    [39]

    La longueur de clé réelle utilisée par les utilisateurs DES est de 56 bits et la force de cryptage maximale théorique est de 256. Pour augmenter la force de chiffrement (telle que l'augmentation de la longueur de clé) de l'algorithme DES, la surcharge du système augmente de façon exponentielle. À l'exception de l'amélioration des fonctions matérielles et de l'augmentation des fonctions de traitement parallèle, la force de cryptage de l'algorithme DES ne peut pas être améliorée à partir de l'algorithme lui-même et de la technologie logicielle.

    Par rapport à l'algorithme DES, l'algorithme AES résout sans aucun doute les problèmes ci-dessus.

    L'algorithme AES se manifeste principalement sous les aspects suivants :

    § Vitesse de calcul rapide.

    § Les besoins en mémoire sont très faibles et adaptés aux environnements contraints.

    § C'est un chiffrement itératif par blocs, avec des conceptions de bloc et de longueur de clé flexibles.

    § La norme AES prend en charge une longueur de paquet variable. La longueur du paquet peut être définie sur n'importe quel multiple de 32 bits. La valeur minimale est de 128 bits et la valeur maximale est de 256 bits.

    § La longueur de clé d'AES est supérieure à celle de DES.

    Ci-dessous, nous avons résumé la différence entre DES et AES [62] :

    Chapitre II Fonctionnement de la blockchain

    [40]

     

    DES

    AES

    Date

    1996

    1999

    Taille de bloc

    64

    128

    La longueur de la clé

    56

    128, 192, 256

    Nombre de tours

    16

    9, 11, 13

    Encryptions primitives

    Substitution, permutation

    Substitution, shifts, bit, mixing

    Primitives cryptographiques

    Confusion, diffusion

    Confusion, diffusion

    Conception

    Ouvert

    Ouvert

    Justification de la conception

    Fermé

    Ouvert

    Processus de sélection

    Secret

    Secretmais accepter les commentaires publics ouverts

    Vitesse de calcul

    Plus rapide

    Rapide

    La sécurité

    Faible

    Élevé

    Source

    IBM amélioré par NSA

    Cryptographes indépendants

     

    Tableau II- 2: Comparaison entre DES et AES

    II.5.2 Cryptographie à clé asymétrique

    II.5.2.1 Introduction

    La cryptographie asymétrique trouve son origine dans les travaux de recherche de Whitfield Diffie et Martin Hellma. Le papier qu'ils ont publié en 1976 a complètement révolutionné la cryptographie. L'algorithme qu'ils ont conçu évite aux communicants de s'entendre sur une clé partagée au préalable et a ainsi résolu le problème dit de distribution de clé rencontré avec la cryptographie symétrique (63]. Voyons un scénario pratique pour comprendre comment un tel système fonctionnerait. Supposons que Kawter souhaite envoyer un message à Chaima de manière confidentielle afin que personne d'autre que Chaima ne puisse comprendre le message, alors cela nécessiterait les étapes suivantes :

    II.5.2.2 Principe de fonctionnement

    Prenons l'exemple suivant (64]

    Chapitre II Fonctionnement de la blockchain

    [41]

    Kawter l'expéditrice :

    § Crypter le message en clair m en utilisant l'algorithme de cryptage E et la clé publique de Chaima pour préparer le texte chiffré C.

    § Envoyer le texte chiffré C à Chaima

    Chaima la réceptrice :

    § Déchiffrer le texte chiffré C en utilisant l'algorithme de déchiffrement D et sa clé

    privée pour obtenir le texte en clair d'origine m.

    II.5.2.3 Illustration

    Figure II- 8: Cryptographie asymétrique pour la confidentialité

    Notez que la clé publique doit être conservée dans un référentiel public accessible à tous et la clé privée doit être gardée comme un secret bien gardé. La cryptographie à clé publique fournit également un moyen d'authentification.

    Le réceptrice, Chaima, peut vérifier l'authenticité de l'origine du message m de la même manière.

    Chapitre II Fonctionnement de la blockchain

    Figure II- 9: Cryptographie asymétrique pour l'authentification

    Dans l'exemple de la figure II-17, le message a été préparé à l'aide de la clé privée de Kawter, afin de garantir qu'elle provienne uniquement de Kawter. Le message entier a servi de signature numérique. De sorte que la confidentialité et l'authentification sont souhaitables.

    Le message doit d'abord être crypté avec la clé privée de l'expéditeur pour fournir une signature numérique. Ensuite, il doit être crypté avec la clé publique de réceptrice pour assurer la confidentialité. Il peut être représenté comme suit :

     
     
     

    [42]

    Comme vous pouvez le voir, le déchiffrement se produit dans son ordre inverse uniquement. Notez que la cryptographie à clé publique est utilisée quatre fois ici : deux fois pour le chiffrement et deux fois pour le déchiffrement. Il est également possible que l'expéditeur puisse signer le message en appliquant la clé privée à un petit bloc de données dérivé du message à envoyer, et non au message entier.

    Nous avons examiné les utilisations des deux clés en cryptographie asymétrique, qui peuvent être résumées comme suit :

    § Une clé publique, qui crypte les données, ou pour vérifier les signatures ;

    § Et une clé privée ou secrète correspondante pour le décryptage ou pour créer des signatures ;

    II.5.2.4 Les types d'algorithmes de chiffrement et déchiffrement

    II.5.2.4.1 L'algorithme de chiffrement RSA

    RSA est un algorithme de chiffrement mathématiquement significatif et important. Sa difficulté à craquer est basée sur la difficulté de décomposer un nombre composite en deux grands nombres premiers [65]. Parce que la factorisation du produit de deux grands nombres

    Chapitre II Fonctionnement de la blockchain

    [43]

    premiers est assez difficile (la preuve est un peu compliquée et nécessite des concepts tels que la factorisation en nombres premiers, les nombres premiers et la congruence).

    Le chiffrement dit asymétrique signifie que différentes clés peuvent être utilisées pour le chiffrement et le déchiffrement. De cette façon, la clé publique peut être envoyée à l'expéditeur et la clé privée est conservée sur lui-même et déchiffrée par la clé privée. Cela garantit que vous seul pouvez déchiffrer le message [66].

    Le 12 décembre 2009, le RSA-768 (768 bits, 232 chiffres) a également été décomposé avec succès. À l'heure actuelle, la longueur de clé la plus sûre est RSA-1024 ou RSA-2048.Il s'agit actuellement de l'algorithme de cryptage le plus important de la planète [66].

    II.5.2.4.1.1 Étapes pour la génération de clés

    Nous utilisons un exemple pour comprendre l'algorithme RSA. Supposons que Kawter va avoir une communication cryptée avec Chaima. Comment peut-elle générer des clés publiques et privées ?

    Figure II- 10: Étapes pour la génération de clés

    Dans la première étape, deux nombres premiers inégaux p et q sont choisis au hasard. Chaima a choisi 61 et 53. En pratique, plus ces deux nombres premiers sont grands, plus il est difficile de se fissurer.

    Dans la deuxième étape, le produit n de p et q est calculé. Chaima a multiplié 61 et 53.

    n = 61 × 53 = 3233

    Equation II- 1: Produit de n et p.

    La troisième étape, consiste à calculer la fonction d'Euler ö (n) de n. Selon la formule

    D (n) = (p-1) (q-1)

    Equation II- 2: Calcule de la fonction d'Euler

    Chaima a calculé que ö (3233) est égal à 60 x 52, ce qui correspond à 3120.

    La quatrième étape, consiste à choisir au hasard un entier e, à condition que 1 <e <ö (n), et e et ö (n) soient des nombres premiers.

    Chapitre II Fonctionnement de la blockchain

    [44]

    Chaima avait choisi entre 1 et 3120 et a été choisie au hasard 17. En pratique, 65537 est souvent sélectionné.

    Dans la cinquième étape, calculez l'élément inverse d de e pour ö (n).

    Le soi-disant "élément inverse modulaire" signifie qu'il existe un entier d, de sorte que le reste de ed divisé par ö (n) est 1.

    ed = 1 (mod ö (n))

    Equation II- 3: Calcule d'élément inverse d.

    Par conséquent, trouver l'élément inverse d revient essentiellement à résoudre l'équation linéaire binaire suivante :

    e.x + ö (n).y = 1

    Equation II- 4: Equation linéaire binaire Étant donné e = 17, ö (n) = 3120,

    17x + 3120y = 1

    Cette équation peut être résolue en utilisant « l'algorithme euclidien étendu », et le processus spécifique est omis ici. En bref, Chaima a calculé un ensemble de solutions entières comme (x,y) = (2753, -15), c'est-à-dire d = 2753.

    Jusqu'à présent, tous les calculs sont terminés.

    Dans la sixième étape, n et e sont encapsulés dans une clé publique, et n et d sont encapsulés dans une clé privée.

    Dans l'exemple de Chaima, n = 3233, e = 17 et d = 2753, la clé publique est donc (3233,17) et la clé privée est (3233, 2753).

    II.5.2.4.1.2 Chiffrement et déchiffrement

    Avec les clés publiques et secrètes, le chiffrement et le déchiffrement sont possibles. (1) La clé publique (n, e) est utilisée pour le chiffrement :

    Supposons que Kawter veuille envoyer des informations chiffrées m à Chaima, elle chiffrera m avec la clé publique de Chaima (n, e). Notez ici que m doit être un entier (la chaîne peut prendre des valeurs ascii ou Unicode), et m doit être inférieur à n.

    Le soi-disant "cryptage" consiste à calculer c :

    La clé publique de Chaima est (3233, 17), et le m de Kawter est supposé être 65, alors l'équation suivante peut être calculée :

    Donc, c'est égal à 2790, et Kawter envoie 2790 à Chaima.

    Chapitre II Fonctionnement de la blockchain

    [45]

    (2) La clé privée (n, d) est utilisée pour le déchiffrement :

    Après que Chaima a obtenu 2790 de Kawter, elle a utilisé sa clé privée (3233, 2753) pour la décrypter. Il peut être prouvé que l'équation suivante doit être vérifiée :

    Autrement dit, le reste de la puissance de c divisé par n est m. Maintenant, c'est égal à 2790 et la clé privée est (3233, 2753), puis Chaima calcule :

    À ce stade, le processus complet de « chiffrement-déchiffrement » est terminé.

    Nous pouvons voir que si nous ne connaissons pas d, il n'y a aucun moyen de trouver m à partir de c. Comme mentionné précédemment, savoir que d doit être décomposé en n, ce qui est extrêmement difficile à réaliser, donc l'algorithme RSA garantit la sécurité de la communication.

    Vous pourriez demander que la clé publique (n, e) ne puisse chiffrer que des entiers m inférieurs à n, alors que faire si vous voulez chiffrer des entiers supérieurs à n ?

    Il existe deux solutions : l'une consiste à diviser le message long en plusieurs messages courts, chacun étant chiffré séparément, l'autre à choisir d'abord un "algorithme de chiffrement symétrique" (tel que DES) et à utiliser la clé de cet algorithme, chiffrez les informations, puis chiffrez la clé DES avec la clé publique RSA.

    La méthode de chiffrement à clé publique RSA offre également une authentification à l'aide d'une signature numérique. Notez ici qu'un algorithme différent appelé algorithme de signature numérique (DSA) peut également être utilisé dans de telles situations que nous verrons dans la section suivante. RSA est largement utilisé avec HTTPS sur les navigateurs Web, les e-mails, les VPNS et la télévision par satellite. En outre, de nombreuses applications commerciales ou les applications dans les magasins d'applications sont également signées numériquement à l'aide de RSA. SSH utilise également la cryptographie à clé publique ; lorsque vous vous connectez à un serveur SSH, il diffuse une clé publique qui peut être utilisée pour crypter les données à envoyer à ce serveur. Le serveur peut ensuite décrypter les données à l'aide de sa clé privée. L'algorithme de signature numérique DSA a été conçu par la NSA26 dans le cadre de la norme de signature numérique DSS et normalisé par le NIST. Notez que son objectif principal est de signer les messages numériquement, et non le cryptage. Juste pour paraphraser, RSA est à la fois dédié pour la gestion des clés et l'authentification tandis que DSA est dédié uniquement pour l'authentification [67].

    II.5.2.4.2 La signature numérique

    Lorsqu'une personne envoie des données via un document, il devient important d'identifier son authenticité pour des raisons de sécurité et de sûreté. Des signatures numériques sont utilisées pour cette identification. L'authentification des documents signifie savoir qui les a créés et qu'ils n'ont pas interféré lors de leur transmission. Ces signatures sont créées à l'aide de certains algorithmes. L'algorithme de signature numérique (DSA) en

    26 NSA : National Security Agency est une agence de renseignement de niveau national du Département de la défense des États-Unis, placée sous l'autorité du directeur du renseignement national.

    Chapitre II Fonctionnement de la blockchain

    [46]

    fait partie. DSA est un type d'algorithme de chiffrement à clé publique et il est utilisé pour générer une signature électronique (68].

    II.5.2.4.2.1 Introduction

    Les signatures numériques sont idéales pour l'intégrité et la non-répudiation. Une signature numérique est une combinaison de hachage et de chiffrement asymétrique. Autrement dit, un message est d'abord haché, et ce hachage est chiffré avec la clé privée de l'expéditeur. Cela constitue la signature, qui est envoyée avec le message.

    II.5.2.4.2.2 Fonctionnement d'algorithme de la signature numérique

    Il s'agit d'un algorithme de chiffrement à clé publique conçu pour créer une signature électronique. Une signature est créée « en privé » mais peut être vérifiée « en public ». En d'autres termes, il n'y a qu'un seul sujet qui peut créer une signature ajoutée à un message, mais n'importe qui est en mesure de vérifier si la signature est correcte ou non.

    II.5.2.4.2.3 Schéma fonctionnel de la signature numérique

    Figure II- 11: Schéma représente comment la signature fonctionne II.5.2.4.2.4 Explication du schéma fonctionnel

    Premièrement, chaque personne adoptant ce schéma possède une paire de clés publique-privée en cryptographie (69].

    Les paires de clés utilisées pour le chiffrement ou le déchiffrement et la signature ou la vérification sont différentes pour chaque signature. Ici, la clé privée utilisée pour la signature est appelée clé de signature et la clé publique comme clé de vérification dans cet algorithme.

    Ensuite, les gens prennent le signataire qui alimente les données à la fonction de hachage et génère un hachage des données de ce message.

    Maintenant, la valeur de hachage et la clé de signature sont ensuite transmises à l'algorithme de signature qui produit la signature numérique sur un hachage donné de ce message. Cette signature est ajoutée aux données, puis les deux sont envoyées au vérificateur pour sécuriser ce message.

    Ensuite, le vérificateur alimente la signature numérique et la clé de vérification dans l'algorithme de vérification de ce DSA. Ainsi, l'algorithme de vérification donne une certaine valeur en sortie sous forme de texte chiffré.

    Chapitre II Fonctionnement de la blockchain

    [47]

    Ainsi, le vérificateur exécute également la même fonction de hachage sur les données reçues pour générer une valeur de hachage dans cet algorithme.

    Maintenant, pour la vérification, la signature, la valeur de hachage et la sortie de l'algorithme de vérification sont comparées avec chaque variable. Sur la base du résultat de la comparaison, le vérificateur décide si la signature numérique est valide pour cela ou non.

    Par conséquent, la signature numérique est générée par la clé privée du signataire et personne d'autre ne peut avoir cette clé pour sécuriser les données. Le signataire ne peut pas répudier la signature des données à l'avenir pour sécuriser ces données par la cryptographie.

    II.5.2.4.2.5 Importance de la signature numérique

    Par conséquent, toute analyse cryptographique de la signature numérique utilisant la cryptographie à clé publique est considérée comme un outil très important ou principal et utile pour assurer la sécurité des informations en cryptographie en cryptanalyse [67].

    Ainsi, outre la possibilité de fournir la non-répudiation du message, la signature numérique fournit également l'authentification du message et l'intégrité des données en cryptographie.

    Ceci est réalisé par la signature numérique qui réalise :

    o Authentification des messages : Par conséquent, lorsque le vérificateur valide la signature numérique à l'aide de la clé publique d'un expéditeur, il est assuré que la signature n'a été créée que par un expéditeur qui possède la clé privée secrète correspondante et que personne d'autre ne le fait par cet algorithme.

    o Intégrité des données : en fait, dans ce cas, un attaquant a accès aux données et les modifie, la vérification de la signature numérique à l'extrémité du récepteur échoue dans cet algorithme. Ainsi, le hachage des données modifiées et la sortie fournie par l'algorithme de vérification ne correspondent pas à la signature de cet algorithme. Maintenant, le récepteur peut refuser le message en toute sécurité en supposant que l'intégrité des données a été violée pour cet algorithme.

    o Non-répudiation : Par conséquent, c'est juste un nombre que seul le signataire connaît la clé de signature, il ne peut que créer une signature unique sur une donnée de ce message pour changer de cryptographie. Ainsi, le destinataire peut présenter les données et la signature numérique à un tiers comme preuve si un différend survient à l'avenir pour sécuriser les données.

    II.5.2.4.3 EllipticCurve Digital Signature Algorithm

    ECDSA c'est in algorithme de chiffrement à courbe elliptique pour apprendre la signature numérique d'un algorithme [70].

    Chapitre II Fonctionnement de la blockchain

    [48]

    II.6 Comparaison entre cryptographie symétrique et asymétrique

    Le chiffrement asymétrique utilise deux types de clés, tandis que le chiffrement symétrique utilise un seul type de clé. Par conséquent, le traitement est plus simple dans ce dernier cas, et les deux parties échangeant des données utilisent la même clé secrète pour coder et décoder les données reçues (71].

    Le chiffrement symétrique est depuis longtemps la norme en cryptographie, mais il existe plusieurs failles dans la sécurité des communications qui ont créé une cryptographie asymétrique. Cependant, le cryptage symétrique est encore principalement utilisé pour transmettre de grandes quantités de données.

    La cryptographie à clé symétrique est largement utilisée pour crypter des données telles que des messages et des fichiers car le cryptage et le décryptage peuvent être effectués à grande vitesse. La cryptographie à clé publique présente l'inconvénient que le cryptage / décryptage est plus lent que la cryptographie à clé symétrique. Lors de l'échange de messages par e-mail, etc., la vitesse élevée de la méthode de cryptage à clé commune et la commodité de la méthode de cryptage à clé publique sont combinées, le message est crypté avec le cryptage à clé commune et la clé de cryptage est cryptée avec le cryptage à clé publique.

    II.7 Fonction de hachage

    Le « hachage » est un concept qui se confond facilement avec le chiffrement. Le hachage est une technologie qui convertit les données d'origine en données de longueur fixe en effectuant un traitement à l'aide d'une fonction de hachage. Il peut être converti, mais ne peut pas être annulé. En d'autres termes, il n'y a pas d'équivalent au "décryptage" dans le hachage (72].

    Le hachage a pour but de gérer les mots de passe et de vérifier les fichiers. Le hachage et le stockage des mots de passe éliminent la nécessité de gérer les mots de passe bruts. Pour vous authentifier, il vous suffit de comparer la version hachée du mot de passe entré avec le mot de passe haché stocké. En outre, lorsque vous téléchargez un fichier volumineux sur Internet, le hachage est utilisé pour comparer le fichier sur le serveur avec le fichier téléchargé. Il est difficile de comparer des fichiers volumineux tels qu'ils sont, nous les hachons donc et les comparons (73].

    Les fonctions de hachage incluent "MD5", "SHA-1" et "SHA-256". Cependant, MD5 a longtemps été souligné comme étant vulnérable. Nous avons mentionné précédemment qu'il n'y a pas d'équivalent au « déchiffrement » dans le hachage, mais MD5 à une vulnérabilité où les données d'origine avec une valeur de hachage spécifique sont calculées. Une attaque qui exploite une telle vulnérabilité est appelée attaque par collision. Par conséquent, l'utilisation de MD5 n'est pas recommandée à l'heure actuelle. L'utilisation d'une fonction de hachage permet de s'assurer de l'intégrité des données et indirectement de les authentifier. Il existe bien sûr de nombreuses autres applications pour les fonctions de hachage, comme les MACs, certificats, etc (73].

    [49]

    Chapitre II Fonctionnement de la blockchain

    II.7.1 MD5

    MD5 est une fonction de hachage largement utilisée dans le domaine de la sécurité informatique pour assurer la protection de l'intégrité des messages.

    MD5 est largement utilisé pour l'authentification par mot de passe et l'identification des clés de divers logiciels. MD5 utilise une fonction de hachage, et son application typique est de générer un résumé de message pour une information pour éviter toute falsification. Une application typique deMD5est de générer des empreintes digitales sur un message pour éviter qu'il ne soit "falsifié". S'il existe un organisme de certification tiers, MD5 peut également empêcher l '"autorité" de l'auteur du document, qui est la soi-disant application de signature numérique. MD5 est également largement utilisé pour l'authentification de connexion des systèmes d'exploitation, tels qu'UNIX (74].

    II.7.2 SHA-1

    SHA1 est un algorithme de résumé de message aussi populaire que MD5. Pour les messages de moins de 64bits, SHA1 génère un résumé de message de160bits. Lorsqu'un message est reçu, ce résumé de message peut être utilisé pour vérifier l'intégrité des données. SHA1 ne peut pas récupérer les informations du résumé de message, et deux messages différents ne généreront pas le même résumé de message. De cette façon, SHA1 peut vérifier l'intégrité des données, alors on dit que SHA1est une technologie pour assurer l'intégrité des fichiers (75].

    SHA1 est un algorithme plus sécurisé que MD5. En théorie, tous les algorithmes de vérification numérique qui utilisent la méthode "message digest" ont des "collisions", c'est-à-dire que les résumés de messages calculés par deux choses différentes sont les mêmes et interopérables. La carte de triche est juste cela. Cependant, il est très difficile pour un algorithme de haute sécurité de trouver la "collision" des données spécifiées, et il est encore plus difficile de calculer la "collision" à l'aide d'une formule. Jusqu'à présent, seul MD5 a été craqué dans les algorithmes de sécurité généraux.

    II.7.3 Comparaison entre MD5 et SHA

    La comparaison est conclue dans le tableau suivant (76] :

    Chapitre II Fonctionnement de la blockchain

    [50]

    SHA

    MD5

    SHA représente l'algorithme de hachage sécurisé

    MD5 signifie Message Digest

    SHA est une famille de fonctions de hachage cryptographiques développées par le NIST27

    Il s'agit d'une fonction de hachage cryptographique largement utilisée qui produit une valeur de hachage de 128 bits

    Des versions plus sécurisées de SHA-1 sont disponibles telles que SHA-256, SHA-384 et SHA-512

    On pense que MD5 est

    cryptographiquement cassé et peut avoir des collisions

    La version optimisée de SHA-1 est plus rapide que MD5

    MD5 est relativement plus rapide que SHA

    Il n'y a eu aucune attaque sérieuse contre SHA-1

    D'autres attaques ont été signalées sur MD5

    Tableau II- 3: Comparaison entre MD5 et SHA

    II.8 La longueur de la clé

    Le nombre de bits utilisés pour le chiffrement ou le déchiffrement est appelé longueur de clé. Des clés plus longues augmentent la sécurité, mais présentent l'inconvénient d'un chiffrement et d'un déchiffrement plus lents [77].

    De plus, la longueur de la clé varie en fonction de la méthode de cryptage. La longueur de clé utilisée dans la cryptographie à clé symétrique est d'environ 40 à 128 bits. Dans la cryptographie à clé publique, des clés de différentes longueurs d'environ 100 bits à 2048 bits sont utilisés.

    II.9 Limite de la cryptographie [78] [79]

    II.9.1 Limitation de la cryptographie a clé publique (asymétrique)

    Dans le chiffrement asymétrique, l'utilisateur utilise la même clé pour chiffrer et déchiffrer, La raison principale que la cryptographie à clé publique a une limitation réside sur la performance et la lenteur à laquelle se font les opérations de chiffrement et de déchiffrement. En effet cette méthode de cryptage nécessite un nombre très important de calculs c'est-à-dire le temps de calcul devient long parce que la lenteur d'exécution nécessité de faire beaucoup de calculs.

    27 NIST : National Institute of Standards and Technology est un laboratoire de sciences physiques et une agence non réglementaire du Département du commerce des États-Unis. Sa mission est de promouvoir l'innovation et la compétitivité industrielle.

    Chapitre II Fonctionnement de la blockchain

    [51]

    De plus, la cryptographie à clé publique présente un autre problème, à savoir que la taille des données cryptées est limitée. Par exemple, RSA ne peut pas crypter des données supérieures à 4096 bits. Cette taille est liée à la longueur de sa clé c'est-à-dire Cette méthode du chiffrement ne peut donc pas être utilisée pour des grands fichiers à transférer.

    II.1 Limitation de la cryptographie a clé secrètes (symétrique)

    Dans le chiffrement symétrique, c'est une même clé secrète qui permet à la fois d'effectuer le chiffrement et le déchiffrement. Lorsque la personne qui devra déchiffrer les données n'est pas la même que celle qui les a chiffrées, plusieurs problèmes se posent : Tout d'abord, il faut une nouvelle clé secrète pour chaque couple émetteur/récepteur. De plus, expéditeur et destinataire doivent se mettre d'accord sur une clé secrète et de l'échanger de façon confidentielle, c'est-à-dire le grand problème principal c'est la contribution des clés. En effet, la clé de chiffrement est identique à la clé de déchiffrement. Ainsi, c'est la même clé qui va nous permettre à la fois de crypter le message et aux destinataires de le décrypter. Donc, le problème majeur est l'échange de clé entre les deux individus. Or, cela est difficile à réaliser, puisque, tant que la clé n'est pas transmise, il n'existe pas de moyen sûr d'échange d'information, à part une rencontre physique.

    Partie 3 : Fonctionnement de la blockchain

    II.10 Introduction

    Le but de cette étude est d'analyser la sécurisation de la blockchain. Pour la première fois, la technologie blockchain a été utilisée dans le secteur financier, où elle a servi de base à la création de la devise critique Bitcoin. Récemment, de plus en plus d'applications sont apparues qui étendent la fonction clé de cette technologie - le stockage décentralisé des données de transaction. Les transactions de ce type supposent que chaque membre du réseau peut effectuer une transaction directement avec tout autre membre du réseau sans impliquer un intermédiaire tiers. Les transactions ne sont plus stockées dans une base de données centralisée, mais transmises aux ordinateurs (appelés aussi les ressources informatiques) de tous les participants au réseau qui stockent les données localement suite à une phase d'enrôlement. Ces ressources sont couramment appelées des noeuds du fait qu'elles sont mises en réseau au travers d'internet.

    Il existe deux types de noeuds [80] :

    § Les noeuds réguliers : la plupart de ces noeuds fournit une capacité informatique ordinaires, à partir de laquelle les personnes peuvent émettre des demandes de transactions ;

    § Les noeuds « miners » ou mineurs : Ce noeud est doté de grosse capacité de traitement, ces transactions sont regroupées dans un bloc qui va être validé par les mineurs du réseau en résolvant un problème mathématique complexe.

    II.11 La phase d'enrôlement dans la blockchain

    Pour participer aux blockchain une personne doit enrôler un de ses équipements informatiques comme un noeud de la blockchain. Au cours de cette opération, il faut investir

    Chapitre II Fonctionnement de la blockchain

    [52]

    dans du matériel et des programmes de minage spécialisés. Ces programmes de minage (logiciels) ne sont pas directement liés à Blockchain Core et sont exécutés en parallèle pour essayer de miner des blocs. Ce logiciel est personnalisé avec un numéro de compte blockchain. Il est impératif que le noeud à une propriété de conserver le logiciel téléchargée et le mot de passe qui lui permettre de déverrouiller la clé privée, sinon il perd l'accès à son compte blockchain et ne pourra plus faire des transactions sur ce compte [80][81].

    II.12 La phase de transaction

    Dans le chapitre précédent, nous avions une introduction rapide à la technologie blockchain. Dans cette partie du chapitre, nous allons voir ce qui se passe derrière une transaction bitcoin.

    Remarque : C'est une idée fausse courante que la blockchain et les bitcoins sont une seule et même chose. Cependant, les bitcoins ne sont qu'une implémentation de la technologie blockchain. Il en va de même pour les autres monnaies numériques.

    Prenons un Exemple simple : Kawter et ses amies sont allées au restaurant où les paiements en bitcoins sont acceptés. Après toute la soirée à manger, rigoler et à s'amuser, il est temps de payer la facture !

    Le serveur sort un smartphone et montre le code QR à Kawter pour le paiement de la facture. Kawter sort également son smartphone, ouvre son application bitcoin, scanne le code QR, vérifie si les détails du paiement sont corrects et appuie sur le bouton PAYER.

    Le QR code est une sorte de code barre mais plus complexe, il contient plusieurs types d'informations, comme :

    § Le portefeuille électronique du récepteur (dans notre cas restaurant)

    § Montant du bitcoin à transférer

    § Informations générales (comme le nom du destinataire)

    Figure II- 12: Code QR

    Lorsque Kawter appuie sur le bouton PAYER ;

    § Elle crée une nouvelle transaction qui contient les détails du portefeuille électronique de l'expéditrice (Kawter) et du portefeuille électronique du destinataire (le restaurant).

    Ce qui se passe derrière la scène ?

    En bref, la blockchain est comme un grand livre numérique qui est distribué sur de nombreux ordinateurs et ajoute continuellement des enregistrements comme dans une file

    Chapitre II Fonctionnement de la blockchain

    [53]

    d'attente. Son réseau est similaire à BitTorrent (P2P), dans lequel le transfert se fait entre les utilisateurs plutôt qu'un serveur central puissant [82].

    Figure II- 13: Blockchain distributée

    La figure suivante illustre le fonctionnement de la blockchain lorsqu'on a effectué une transaction :

    Figure II- 14: Fonctionnements de la blockchain La transaction se propage dans le réseau bitcoin comme suite :

    La phase 1 du schéma II-14 ; le serveur de restaurant peut voir le paiement de Kawter sur son téléphone presque instantanément, le statut n'est cependant PAS CONFIRMÉ.

    § Qui décide si une transaction est valide ou non ?

    Chapitre II Fonctionnement de la blockchain

    [54]

    La transaction est considérée comme valide lorsque des noeuds spéciaux du réseau (appelés Miner) ajouteront cette transaction dans un bloc de la blockchain.

    Ce processus est appelé Mining (phase 2 du graphique) et il a les objectifs suivants :

    o Pour valider la transaction (en se référant au protocole de consensus) ou pour rejeter une transaction invalide.

    o Pour créer de nouveaux bitcoins.

    Les mineurs qui agglomérant sous forma d'un bloc les transactions valides est tentent de valider le bloc par la résolution d'un problème mathématique complexe appelé Proof of Work (PoW). Ce travail de résolution de problème s'appelle « minage ». Le mineur qui a terminé le minage en premier diffuse sa solution à tous les noeuds qui vérifient la preuve PoW associée. En cas de validité, chaque noeud ajoute le bloc dans la blockchain et les mineurs commencent à miner le bloc suivant (phase 3 de la figure II-14).

    Le fait d'inscrire massivement un bloc dans la blockchain signifie qu'un consensus a été atteint parmi les noeuds [82].

    Enfin, le serveur de restaurant voit dans son portefeuille électronique que le paiement a été confirmé. Tout ce processus dure environ 10 minutes.

    II.13 Qu'est-ce qu'une transaction ?

    Maintenant, au lieu d'utiliser une simple chaîne de caractères dans la data, nous allons-y insérer une transaction ! Nous avons des portefeuilles, il est temps de créer le processus pour envoyer de l'argent d'un portefeuille à un autre. Ce processus est appelé une transaction. Dans un premier temps, pour effectuer une transaction, nous aurions besoin de

    o Adresse du portefeuille de l'expéditeur.

    o Adresse du portefeuille du récepteur.

    o Montant à envoyer.

    [83][84].

    Prenons un aperçu d'un ajout d'une nouvelle transaction dans la chaîne de blocs Bitcoin

    Figure II- 15: New transaction

    La transaction aura notre clé publique en tant qu'émetteur, et la clé publique du destinataire, et nous signons cela avec notre clé privée. Voir figure ci-dessous :

    Chapitre II Fonctionnement de la blockchain

    [55]

    Figure II- 16: Signature de notre transaction avec notre clé privée

    La blockchain est maintenant capable d'utiliser notre clé publique pour vérifier que nous sommes bien à l'origine de cette transaction (fig. ci-dessous), que nous sommes bien l'expéditeur et que la transaction n'a pas été altérée par un tiers.

    Figure II- 17: Blockchain vérifie que cette transaction a bien été envoyée par le propriétaire de la clé

    privée

    Donc une transaction doit nécessairement contenir :

    o TxID : un identifiant unique de transaction avec une fonction de crypto sha256 utilisées pour identifier d'une façon exclusive une transaction.

    o Input : l'adresse de puis laquelle la transaction est émise.

    o Output : les adresses réceptrices des quantités échangées.

    Dans la transaction ci-dessus, nous pouvons remarquer les propriétés suivantes (83](84]:

    [56]

    Chapitre II Fonctionnement de la blockchain

    Hacher

    Cela fonctionne comme la clé unique de cette transaction. C'est une combinaison de données incluses dans la transaction qui crée cette clé.

    Apparait dans

    Dans quel bloc se trouve cette transaction.

    Nombres d'entrées

    Le nombre d'entrées. Les entrées sont des références à des transactions dont le portefeuille, qui souhaite envoyer de l'argent, a reçu de l'argent.

    Total BTC en

    Le nombre total de Bitcoins reçus par le portefeuille.

    Nombre de sorties

    Le nombre d'expéditeurs.

    Total BTC out

    Le nombre total de Bitcoins envoyés par le portefeuille. Il doit être égal au « Total BTC in ». Si vous souhaitez envoyer seulement une partie du montant de votre portefeuille, vous pouvez envoyer la partie à la destination et le reste à vous-même.

    Taille

    Taille des données en octets

    Frais

    Si vous souhaitez donner une petite récompense au bon ami qui a pris votre transaction, l'ajoutez dans un bloc et trouvez un nonce pour ce bloc afin qu'il puisse être ajouté dans la chaîne de blocs.

     

    Tableau II- 4: Propriété d'une transaction

    L'illustration suivante montre un exemple de transaction qui prend 4 entrées et génère deux sorties (à l'exclusion de la sortie de commission) :

    Figure II- 18: Exemple de transaction

    o Entrée de transaction : Les entrées de transaction font référence à une sortie de transaction utilisable (UTXO) capturée dans la structure de données de point d'entrée de transaction. De plus, un script doit être ajouté avec une signature valide permettant à la partie qui crée la transaction de réclamer l'UTXO référencé [83][84].

    Chapitre II Fonctionnement de la blockchain

    [57]

    Taille

    Nom

    Type

    Commentaire

    44

    PreviousOutput

    TransactionInputOutpoint

    Référence à UTXO

    4

    Séquence

    uint 32

    L'index de l'entrée spécifique dans la transaction

    var.

    Scénario

    [] octet

    Signature pour vérifier la propriété de la clé publique de l'UTXO référencé

     

    Tableau II- 5: Structure de données Transaction Input

    o Point d'entrée de transaction : Les points d'entrée de transaction sont des références aux sorties de transaction précédentes. La référence est capturée avec un hachage de transaction, un index de l'UTXO à réclamer et la valeur contenue dans l'UTXO

    (831(841.

    Taille

    Nom

    Type

    Commentaire

    32

    Hacher

    [32] octet

    Le hachage de la transaction référencée

    4

    Indice

    Uint 32

    L'index de la sortie spécifique dans la transaction

    8

    Valeur

    uint64

    Valeur UTXO

     

    Tableau II- 6: Structure de données Transaction Input Outpoint

    o Sortie de transaction (831(841

    Taille

    Nom

    Type

    Commentaire

    4

    Indice

    Uint 32

    Paramètre de commande

    8

    Valeur

    Uint 64

    Valeur de sortie de transaction

    var.

    Scénario

    [] octet

    Script définissant les conditions pour revendiquer cette sortie

    32

    NodeID

    [32] octet

    Clé publique du noeud qui souhaite participer au PoS

    Tableau II- 7: Structure de données Transaction Output

    Chapitre II Fonctionnement de la blockchain

    II.14 Qu'est-ce qu'un bloc ?

    Comme indiqué précédemment, une blockchain est une chaîne de blocs contenant chacun plusieurs transactions, et qui vont être inscrits au fur et à mesure dans la blockchain par des noeuds du réseau.

    Figure II- 19: Chaine de bloc

    Tout d'abord, la première compréhension de la blockchain est qu'il s'agit qu'un bloc regroupe un ensemble de transaction et vise à cristalliser le contenue des transactions et du bloc, et la position du bloc dans la blockchain. Cette cristallisation repose sur deux procédés essentiels. La première, les fonctions de hachage et la deuxième l'arbre de Merkle permettent de rigidifier la structure de transaction et de blocs en venant souder tous ces éléments entre eux [80].

    Le premier bloc d'une blockchain est appelé "Genesis Block" et est le seul qui ne contient pas les données des blocs précédents, car il n'y en a aucun avant lui. Comme le montre la figure suivante :

    [58]

    Figure II- 20: Genesis Block

    Chapitre II Fonctionnement de la blockchain

    [59]

    L'implémentation peut différer d'une blockchain à l'autre, mais les principaux éléments d'un bloc sont les suivants

    Un bloc contient trois éléments comme le représente l'illustration ci-dessous :

    Figure II- 21: Qu'est-ce qu'un bloc et que contient-il En général ?

    § Un « hash » : l'empreinte digitale du bloc. C'est une suite de caractères unique (comprenant chiffres et lettres) qui permet d'identifier avec précision un bloc.

    § Des données : par exemple les données d'une transaction en Bitcoin, incluant l'adresse du porte-monnaie virtuel du payeur, celle du receveur, ainsi que le montant de l'opération.

    § Le hash du bloc précédent : l'empreinte digitale du bloc précédent. C'est ce qui permet de situer le bloc dans la chaine.

    II.14.1 La structure d'un bloc

    Un bloc est composé d'un en-tête et d'un certain nombre de transactions [85].

    L'en-tête du bloc contient un hash - résultat d'une fonction de hachage - de l'en-tête du bloc qui le précède c'est la référence que nous évoquions précédemment et qui assure un lien immuable entre les blocs.

    a) L'entête de bloc (block header) : L'entête contient ce qu'on appelle les métadonnées à propos du block concerné. On peut répertorier principalement 3 ensembles de métadonnées :

    o Le hash du block précédent : dans une blockchain, chaque bloc est l'héritier du bloc précédent. Cela est dû au fait qu'il utilise le hash du block d'avant pour créer son propre hash.

    o Les informations relatives au minage : on peut y retrouver la date exacte où le bloc a été créé, la difficulté de minage actuel, les personnes qui ont été récompensées pour avoir validé le bloc, etc.

    o La racine de l'arbre de Merkle : il s'agit d'un arbre structurant les données présentes dans le bloc.

    b)

    Chapitre II Fonctionnement de la blockchain

    [60]

    L'identificateur de bloc (block indentifiers) : Afin d'identifier un bloc, celui-ci possède une signature digitale, appelée hash cryptographique. Il est possible d'identifier un block en connaissant sa position dans la blockchain. Par exemple, le block 452.525 signifie qu'il y eu avant lui 452.524 blocs.

    L'arbre de Merkle (Merkletree) : Toutes les transactions sont agencées dans une structure que l'on appelle arbre de Merkle. Prenons l'exemple d'un block contenant 16 transactions et utilisons des lettres pour les identifier. Soient de A à P. L'algorithme de hachage donnera tout d'abord un hash pour chacune de ces transactions.

    c) Ensuite, on combinera le hash de A et B pour avoir le hash de AB. Après, on combinera le hash de AB et CD pour obtenir le hash d'ABCD et ainsi de suite jusqu'à obtenir un hash pour ABCDEFGHIJKLMNOP. Ce dernier hash est appelé racine de Merkle.

    Un bloc contient les transactions qui ont été traitées par les mineurs et fait partie intégrante de la blockchain une fois que celui-ci a été validé par l'ensemble du réseau. A partir de ce moment-là, les informations incluses dans ce dernier deviennent inaltérables. Chaque bloc possède un entête, un identificateur et un arbre de Merkle qui agence les transactions à l'intérieur de celui-ci.

    La figure ci-dessous illustre les différents éléments d'un bloc.

    Figure II- 22: Contenus des blocs de la blockchain et arbre de Merkle

    II.14.2 Les mineurs

    L'exploration de crypto-monnaie est un processus de calcul pour enregistrer les données envoyées ou reçues par la crypto-monnaie sur la blockchain. Les gens qui font cette exploitation sont appelés "mineurs".

    II.14.2.1 Qu'est-ce qu'un mineur ?

    Les mineurs sont des acteurs importants dans les crypto-monnaies. Vous serez positionné en tant que technicien pour former des blocs tels que la preuve de travail (POW), et si vous réussissez dans l'exploitation minière, vous serez récompensé [86].

    Chapitre II Fonctionnement de la blockchain

    [61]

    Les mineurs ont une grande puissance de hachage et effectuent des travaux de calcul. Sans eux, la technologie de la chaîne de blocs ne serait pas possible. Le minage effectué par le mineur garantit la crédibilité de la crypto-monnaie.

    Les mineurs s'investissent dans l'équipement minier et approuvent les transactions, et si l'exploitation réussit, ils pourront gagner des récompenses minières.

    Le minage calcule les données de transaction et, une fois approuvé, il crée une nouvelle blockchain. La blockchain garde une trace de toutes les transactions depuis la création de la monnaie virtuelle.

    Les mineurs peuvent obtenir gratuitement la monnaie virtuelle calculée, au lieu de calculer les données de transaction effectuées par des tiers. Tous les mineurs ne peuvent pas obtenir de crypto-monnaies, et les récompenses sont soumises à certaines conditions.

    Ceci est similaire à l'extraction du minerai d'une mine. C'est pourquoi on l'appelait "minage" ou "mineur".

    II.14.2.2 Que fait l'exploitation minière par les mineurs ?

    L'exploitation minière est basée sur la vision du monde selon laquelle le commerce est effectué sans organisation centrale dans le monde de la monnaie virtuelle. Personne ne garantit la crédibilité des transactions qui auraient lieu en l'absence d'une autorité centrale. Nous effectuons de l'exploitation minière pour garantir sa crédibilité. L'exploitation minière fait référence à la tâche d'approuver et de confirmer les transactions.

    Nous vérifions en fait les transactions en monnaie virtuelle et écrivons les informations sur les remises dans un registre des transactions (blockchain). Les informations de remise vérifient si la personne qui a réellement envoyé la crypto-monnaie est le titulaire de la crypto-monnaie et s'il existe des transactions en double. Pour ce faire, vous devez résoudre un grand nombre de problèmes de calcul. La difficulté de ce problème de calcul est si élevée que vous avez besoin d'un ordinateur de haute qualité. Bien sûr, il n'y a pas qu'un seul mineur, donc plusieurs personnes résolvent le problème de calcul à la fois. Par conséquent, la première personne qui souhaite réussir dans le secteur minier sera rémunérée.

    Chapitre II Fonctionnement de la blockchain

    [62]

    Figure II- 23: Validation d'un bloc de transactions par les mineurs

    II.14.2.3 Comment fonctionne l'exploitation minière ?

    Nous avons mentionné plus tôt que l'exploitation minière est une tâche de calcul, mais ce n'est pas seulement une tâche de calcul. En raison de la structure de la blockchain, il est nécessaire de connecter les blocs, mais ce qui relie ces blocs est appelé « valeur de hachage

    » (87].

    Cette valeur de hachage est une valeur numérique créée à l'aide d'une formule de 0 à f. Cette valeur de hachage à la propriété que la valeur de sortie ne peut être prédite par aucun moyen et ne peut donc pas être altérée.

    En multipliant cette valeur de hachage par une fonction de hachage, une chaîne de caractères appelée nonce sort par calcul. Si ce nonce est correct, l'extraction réussira. Le secteur minier recherche simplement ce nonce. Les mineurs qui trouvent le nonce en premier seront payés pour l'exploitation minière.

    II.14.2.4 Méthode d'exploitation

    Il existe plusieurs méthodes pour l'extraction, y compris « l'extraction en solo », « l'extraction en pool » et « l'extraction en nuage ». Si vous voulez faire du minage seul, vous pouvez utiliser le "minage en solo". Cependant, votre niveau PC personnel est beaucoup moins puissant et le taux de réussite du minage est faible (88].

    D'un autre côté, le "minage en pool", qui est effectué par un groupe de plusieurs personnes, signifie que chacun d'entre eux effectue le calcul de la valeur de hachage en partageant chaque plage (88].

    Chapitre II Fonctionnement de la blockchain

    [63]

    Le "minage en nuage" est simplement une méthode pour investir dans des organisations minières et gagner des récompenses minières.

    II.15 Conclusion

    Dans ce chapitre, nous avons présenté dans un premier temps une introduction aux crypto-monnaies qui permettent les paiements sécurisés en se basant sur plusieurs méthodes de chiffrements. Pour cela, nous avons fait référence aux divers algorithmes de cryptage et techniques cryptographiques qui protègent ces entrées, tels que le cryptage à courbe elliptique, les paires de clés public-privé et les fonctions de hachage. Ensuite, dans un second temps, nous avons abordé le concept de cryptographie. Le but traditionnel de la cryptographie est d'élaborer des méthodes permettant d'échanger des données de manière sécurisée.

    C'est pour ça la cryptographie moderne s'attaque en fait plus généralement aux problèmes de sécurité des communications. Puis dans un troisième temps, nous avons étudié le procédé technique sur lequel repose la Blockchain. Cette innovation informatique permet ainsi d'organiser les échanges de données sur un réseau distribué, assurant une sécurisation des données par chiffrement, et faisant participer les noeuds du réseau pour la création de nouveaux blocs de la chaîne. Le principe de base d'une chaîne de blocs repose sur la notion de preuve de travail, et a recours aux techniques de la cryptographie pour vérifier les détenteurs distincts d'un système d'enregistrement collectif.

    Dans le chapitre suivant, nous allons présenter les réseaux informatiques.

    ChatfreI::

     

    illiffformatipes

    Chapitre III Les réseaux informatiques

    [64]

    III.1 Introduction

    La sécurité des informations sur les réseaux informatiques reçoit de plus en plus d'attention dans la vie nationale, car de nombreuses informations importantes sont stockées sur le réseau (89J. Une fois ces informations divulguées, elles entraîneront des pertes incommensurables. La raison pour laquelle les informations du réseau sont divulguées est que, d'une part, de nombreux intrus font tout leur possible pour "voir" certaines données ou informations d'intérêt ; d'autre part, le réseau lui-même présente des risques de sécurité pour assurer le succès de l'intrus (90J. Compte tenu de ces problèmes, ce chapitre présente les connaissances de base, les méthodes techniques et les principaux développements actuels de la sécurité des réseaux liés à la sécurité des réseaux informatiques, et enseigne systématiquement l'état actuel de la sécurité des réseaux, la théorie et la technologie de la cryptographie, la communication sécurisée, les protocoles de sécurité des réseaux, les infractions et la défense de sécurité des réseaux, etc.

    III.2 Généralité sur les réseaux

    III.2.1 Définition d'un réseau

    C'est une combinaison de plusieurs ordinateurs ou bien, c'est un ensemble d'équipements interconnectés par des lignes de communication, qui permet l'échange de données entre les appareils informatiques (ordinateurs, serveurs et des routeurs ...) (91J.

    III.2.2 Classification des réseaux

    Les réseaux sont divisés par caractéristique territoriale, par répartition territoriale, les réseaux peuvent être locaux, mondiaux et régionaux. Les réseaux locaux sont des réseaux situés dans un ou plusieurs bâtiments. Les réseaux régionaux sont ceux situés sur le territoire d'une ville ou d'une région. Les réseaux mondiaux sont des réseaux situés sur le territoire d'un État ou d'un groupe d'États, par exemple Internet.

    Dans la classification des réseaux, il existe quatre termes principaux : réseau personnel (PAN), réseau local (LAN), réseau métropolitain (MAN), et réseau géographiquement distribué (WAN) (92J.

    III.2.2.1 Réseau personnel PAN (Personnel Area Network)

    C'est un réseau informatique organisé autour d'une personne individuelle tel que les terminaux GSM, portables, etc. interconnectés sur quelques mètres.

    III.2.2.2 Les réseaux locaux LAN (Local Area Network)

    « La section locale zone du réseau » relie les ordinateurs et les imprimantes qui sont généralement situés dans le même bâtiment sur de courte distance (quelques kilomètres au maximum). Chaque ordinateur connecté au réseau local est appelé poste de travail ou noeud de réseau. Ce réseau est illustré dans la figure III-1.

    Chapitre III Les réseaux informatiques

    [65]

    Figure III- 1: Exemple d'un Lan (Local Area Network) On distingue les deux principaux types de LAN :

    § Architecture peer to peer:

    Cette architecture définit un modèle de réseau informatique d'égal à égal entre ordinateurs, qui distribuent et reçoivent des données ou des fichiers avec le même appareil qui agit en tant que client et en tant que serveur dans cet arrangement.

    Figure III- 2: Architecture Peer to Peer

    § Architecture Client/serveur :

    Des machines clientes contactent un serveur qui leur fournit des services comme montre la figure suivante :

    Chapitre III Les réseaux informatiques

    [66]

    Figure III- 3: Architecture Client / Serveur

    Comparaison entre architecture client/serveur et Peer to Peer architecture [92]

    Architectures

    Avantages

    Inconvénients

    Client / Serveur

    Plus grande sécurité Rapidité

    Sauvegarde centralisée

    Matériel puissant et coûteux

    Réseau en pane en cas

    d'arrêt du serveur

    Difficulté d'installation

    Peer to Peer

    Moins coûteux

    Pas de panne générale Facile à installer

    Moins sécurisé

    Nombre de stations limité

    Ne s'adapte pas au réseau étendu

     

    Tableau III- 1: Comparaison entre Architecture Client / Serveur et Peer to Peer

    III.2.2.3 Les réseaux métropolitains MAN (Métropolitain Area Network)

    C'est un « réseau d'une grande ville » interconnectant plusieurs réseaux LAN géographiquement proches. Ce réseau est plus petit que le réseau étendu et plus grand que le réseau local. Par exemple, une banque possédant plusieurs agences peut utiliser ce type de réseau.

    Figure III- 4: Exemple d'utilisation d'un WAN

    [67]

    Chapitre III Les réseaux informatiques

    III.2.2.4 Les réseaux étendus WAN (Wide Area Network)

    C'est un réseau qui couvre une grande surface et comprend un grand nombre de noeuds. Il peut être situé dans différentes villes et pays.

    Figure III- 5: Exemple d'utilisation d'un réseau WAN

    Les différentes catégories des réseaux informatiques cités auparavant sont regroupées et résumées dans les figures III-6 et III-7 :

    Figure III- 6: Comparaison entre le réseau selon la distance Voilà une image qui résume tout :

    Chapitre III Les réseaux informatiques

    [68]

    Figure III- 7: Image illustrative sur les différents types de réseau

    III.3 Les types des réseaux

    III.3.1 Internet

    Internet est le système mondial de réseaux informatiques interconnectés qui utilise les protocoles Internet (TCP / IP) pour relier des appareils dans le monde entier. Il a été largement utilisé dans le monde depuis 1990 et son utilisation a été remarquable ces dernières années. Ce réseau est interconnecté par "ISP (Internet Service Provider)", un fournisseur de services qui donne accès à Internet (93].

    III.3.2 Intranet

    Un intranet est un réseau au sein d'une organisation qui utilise la technologie Internet. Ce système est conçu pour être utilisé pour le partage d'informations et le soutien aux entreprises. Intranet se base sur les mêmes technologies qu'Internet (protocole TCP/IP)

    (94]

    .

    III.3.3 Extranet :

    Un extranet est un réseau sécurisé qui comprend un ensemble limité de ressources partagées. L'extranet se réfère principalement à un système de réseau qui assure la communication d'informations entre différentes entreprises telles que le commerce électronique et l'échange de données électroniques (95].

    Les intranets et les extranets sont des réseaux conformes et utilisent Internet, mais ce sont toujours des réseaux fermés. Par conséquent, comme il est possible de se connecter facilement à Internet, des mesures de sécurité avancées telles que le VPN sont nécessaires pour maintenir la confidentialité.

    Chapitre III Les réseaux informatiques

    [69]

    III.4 Les Topologies des réseaux

    III.4.1 Introduction

    La topologie du réseau est la forme de connexion du réseau informatique. Elle indique comment les périphériques (noeuds) tels que les PC, les serveurs et les commutateurs sont connectés dans un réseau [96].

    Type de topologie

    Le contenue

    Topologie physique

    Configuration physique qui montre comment les câbles LAN et les PC sont réellement connectés.

    Topologie logique

    Une configuration logique qui représente le flux des données. Les topologies de réseau typiques incluent le type de bus, le type d'étoile, le type d'anneau et le type de maillage complet.

     

    Tableau III- 2: Type de topologie

    III.4.2 Topologie en bus

    La topologie de bus connecte plusieurs noeuds à un même câble (câble coaxial). Elle fixe des résistances appelées terminateurs aux deux extrémités d'un câble coaxial pour

    empêcher la réflexion du signal et la perturbation à l'extrémité.

    Dans une topologie de bus, si le câble coaxial central tombe en panne, tous les noeuds connectés ne pourront pas communiquer [96].

    Figure III- 8: Topologie en bus

    III.4.3 Topologie en étoile

    Une topologie en étoile relie plusieurs noeuds à un concentrateur (concentrateur ou commutateur). Contrairement à une topologie de bus, une défaillance d'un câble n'affecte pas la communication des autres noeuds, mais une défaillance du concentrateur affecte tous les noeuds. Aujourd'hui, ce type de LAN est la topologie dominante [96].

    Chapitre III Les réseaux informatiques

    Figure III- 9: Topologie en étoile III.4.4 Topologie en anneau

    Dans une topologie en anneau, les noeuds sont logiquement connectés dans un anneau et les données appelées jetons circulent à grande vitesse autour de l'anneau. Le noeud qui obtient ce jeton envoie les données. Dans une topologie à anneau unique, en cas de défaillance unique, l'ensemble du réseau ne pourra pas communiquer. Une topologie à anneau unique avec une tolérance aux pannes améliorée devient une topologie à anneau double.

    Dans cette topologie, en fournissant un autre anneau de rechange, la communication peut être poursuivie même en cas de défaillance de l'anneau principal [96].

    Topologie en anneau unique Topologie à double anneau

    [70]

    Figure III- 10: Topologie en anneau

    III.4.5 Topologie maillée complète

    Dans le cas du type à maillage complet, chaque noeud est interconnecté avec tous les routeurs, et même si une liaison avec un routeur spécifique échoue, la communication peut être poursuivie via la liaison avec un autre routeur.

    Bien qu'une configuration à maillage complet soit hautement tolérante aux pannes, l'utilisation d'un maillage complet dans une topologie physique augmente les coûts. Par conséquent, l'utilisation d'un maillage partiel, dans lequel seul le routeur central et

    Chapitre III Les réseaux informatiques

    [71]

    certains des routeurs sont maillés, peut réduire les coûts et maintenir une certaine redondance et tolérance aux pannes [96].

    Figure III- 11: Topologie maillé

    III.5 Equipements d'interconnexion

    III.5.1 Répéteur

    Un répéteur est un périphérique qui connecte des réseaux au niveau de la couche physique, qui est la première couche du modèle de référence de base OSI. Les répéteurs peuvent étendre la distance de transmission en amplifiant le signal [97].

    III.5.2 Pont

    Un pont (bridge) est un périphérique qui effectue une connexion réseau dans la couche liaison de données, qui est la deuxième couche du modèle de référence de base OSI. Il détermine l'adresse MAC, qui est une valeur unique attribuée à une carte d'interface réseau (NIC28), et les données de relais [97]. Il permettant de relier des réseaux de même nature.

    III.5.3 Routeur

    Le routeur est un périphérique de connexion qui connecte le réseau local et le réseau étendu. Il s'agit du périphérique central du réseau. Lorsque des données sont transmises d'un sous-réseau à un autre, cela se fait via un routeur. Le routeur choisit le meilleur chemin en fonction du coût de transmission, du délai de transit, de l'encombrement du réseau ou de la distance entre la source et la destination [97].

    28 NIC : Une carte réseau est un composant qui fournit des capacités de mise en réseau pour un ordinateur. Il peut permettre une connexion filaire (telle qu'Ethernet) ou une connexion sans fil (telle que Wi-Fi) à un réseau local.

    Chapitre III Les réseaux informatiques

    [72]

    III.5.4 Passerelle

    La passerelle est un appareil qui connecte deux réseaux informatiques avec différents protocoles réseau et différentes architectures. Il existe deux types de passerelles : l'une est une passerelle orientée connexion et l'autre est une passerelle sans connexion (97].

    III.5.5 Concentrateur

    Un concentrateur (Hub) est un répéteur régénérateur de signaux qui peut distribuer des signaux sur plusieurs lignes. Une extrémité du concentrateur a une interface avec le serveur et l'autre extrémité à plusieurs interfaces avec la station de travail réseau. Le nombre d'interfaces de concentrateur détermine le nombre d'ordinateurs connectés au réseau (97].

    III.5.6 Commutateur

    Un commutateur (Switch) est un dispositif permettant de relier divers éléments tout en segmentant le réseau (97].

    III.5.7 Adaptateur

    Un adaptateur (adapter) est un dispositif permettant de connecter deux systèmes qui n'avaient pas été conçus pour cela à l'origine (97].

    III.6 Le modèle de référence OSI

    III.6.1 Présentation du modèle OSI

    Le but initial du réseau était de connecter des ordinateurs et des appareils, mais comme chaque entreprise a développé son propre réseau, il est devenu impossible de se connecter facilement au réseau, de sorte qu'un modèle unifié du réseau a été créé pour la communauté. Ce modèle est appelé modèle OSI.

    Le protocole OSI est une norme établie par l'organisation internationale de normalisation (ISO). Il s'agit d'un modèle simplifié qui divise les fonctions requises pour la communication en sept couches. C'est ce qu'on appelle le "modèle de référence OSI". Il sert également d'indicateur de la conception actuelle du réseau et est utilisé pour représenter l'équipement réseau (98].

    III.6.2 Les couches du modèle OSI

    Couche Physique : Elle définit le contenu physique requis pour transmettre un signal. Plus précisément, elle définit les niveaux de tension, les synchronisations de commutation, les taux de transmission, les distances de transmission, les formes des connecteurs, etc (98].

    Couche de liaison de données : La couche liaison de données définit les protocoles requis pour relier les couches physique et réseau (L'adresse physique, la vérification de la trame de données, la gestion du flux de transmission / réception, la topologie prise en charge, etc.). Elle est divisée en deux sous-couches (98] :

    § La couche MAC qui structure les bits de données en trames.

    § La couche LLC qui assure le transport des trames.

    Chapitre III Les réseaux informatiques

    [73]

    Chapitre III Les réseaux informatiques

    Couche réseau : La couche 2 permet la communication entre les terminaux connectés au même commutateur ou concentrateur. La portée de ce réseau est un LAN (réseau local). La couche 3 fournit des connexions LAN à LAN. En d'autres termes, "l'interfonctionnement" qui interconnecte les réseaux.

    Couche de transport : Cette couche est utilisée pour corriger les erreurs et absorber les différences de taille des blocs de données (telles que la division de grandes données en paquets plus petits).

    Couche de session : Elle spécifie la procédure de connexion entre des programmes tels que le client et le serveur. Cette couche fournit un canal de communication logique pour l'échange de données entre les deux programmes.

    Couche de présentation : Elle Gère les formats de représentation des données, tels que les types de codes de caractères et le chiffrement. Des traitements tels que la conversion lorsque les codes de caractères sont différents entre les deux appareils et le chiffrement et le déchiffrement des communications sont effectués dans cette couche.

    Couche d'application : Elle est définie comme une interface utilisateur. Elle gère des fonctions telles que l'identification des destinations de communication et la synchronisation des communications.

    Figure III- 12: Modèle OSI

    III.7 Le modèle TCP/IP

    III.7.1 Présentation du modèle TCP/IP

    TCP / IP est l'abréviation de « Transmission Control Protocol / Internet Protocol ». C'est la norme la plus utilisée au monde et est devenue la norme de facto. Les fonctions requises

    [74]

    pour la communication sont divisées en quatre couches et l'architecture du réseau est plus simple que le modèle de référence OSI. La fonctionnalité de chaque couche peut être appliquée au modèle de référence OSI. Tous les appareils et logiciels utilisés sur Internet sont conformes à TCP/IP [99].

    III.7.2 La différence entre le modèle de référence OSI et le modèle de couche

    TCP / IP

    Figure III- 13: Déférence entre OSI et TCP/IP

    III.8 L'adressage IP

    III.8.1 Qu'est-ce qu'une adresse IP ?

    L'adresse IP (Internet Protocol Address) est le numéro de l'appareil connecté à Internet. Lors de l'échange de données, elle est utilisée pour vous assurer de ne pas confondre le partenaire de communication sur le réseau. Il existe des types et des règles pour les adresses IP [100].

    III.8.2 Format des adresses IP

    Chaque adresse IP comporte deux parties : un ID de réseau, et un ID d'hôte.

    Tous les hôtes d'un même réseau doivent avoir le même ID réseau, unique dans l'inter-réseau. L'ID d'hôte identifie une station de travail, un serveur, un routeur ou tout autre hôte TCP/IP du réseau. L'ID d'hôte doit être unique pour chaque ID de réseau.

    Deux formats permettent de faire référence à une adresse IP : le format binaire et la notation décimale pointée. Chaque adresse IP a une longueur de 32 bits et est composée de quatre champs de 8 bits, qualifiés d'octets. Les octets sont séparés par des points et représentent un nombre décimal compris entre 0 et 255. Les 32 bits de l'adresse IP sont alloués à l'ID de réseau et à l'ID d'hôte [101].

    Chapitre III Les réseaux informatiques

    III.8.2.1 Adresse d'hôte et adresse de réseau

    Une adresse IPv4 est une suite de 32 bits (4 octets) exprimée en décimale à point, en séparant chacun des octets par un point.

    Prenons l'exemple ci-dessous :

    Représentation binaire : 1100000000. 10101000. 0s0000101. 00000000

    [75]

    Bits de poids fort Bits de poids faible

    Représentation décimale pointée : 192. 168. 5. 0

    Dans ce chapitre, on vous a présenté l'adressage IP de base. Vous connaissez tous les 3 classes principales d'adresses et des adresses spécifiques IP. Mais, il vous manque encore deux notions impératives dans l'adressage IP.

    Il est essentiel de comprendre comment définir un plan d'adressage et quels sont les pièges !

    Comment définir un plan d'adressage satisfaisant ?

    III.8.2.2 Structure d'une adresse
    Les premiers hôtes du réseau :

    11000000 .10101000

     

    .00000101

     

    .00000001

    192

    .168

    .5

     

    .1

     

    Réseau

     
     

    Hôte

     
     
     

    11000000

    .10101000

    .00000101

     

    .00000010

    192

    .168

    .5

     

    .2

     

    Réseau

     
     
     

    Hôte

     
     
     

    Chapitre III Les réseaux informatiques

    [76]

    11000000

    .10101000

    .00000101

     

    .00000011

    192

    .168

    .5

     

    .3

     

    Réseau

     
     
     
     

    Hôte

     
     
     

    Le dernier hôte du réseau :

     
     
     

    11000000

    .10101000

    .00000101

     

    .11111110

    192

    .168

    .5

     

    .254

     

    Réseau

     
     
     

    Hôte

     
     
     

    Sur la base de ce qui précède, nous entrerons dans le sujet principal. L'adresse IP contient les informations "Quel réseau, quel ordinateur ?"

    La partie « De quel réseau s'agit-il ?» Est appelée « partie réseau ».

    La partie "De quel ordinateur s'agit-il ?" Est la " partie hôte ". Ainsi, d'où à où dans l'adresse IP est "quel est le réseau ? " Information, et d'où à où est "quel ordinateur est-il ? "

    Ceci est indiqué par le « masque net ».

    III.8.2.3 Le masque

    Chaque hôte d'un réseau nécessite un masque de sous-réseau avec une adresse 32 bits utilisée pour bloquer une partie de l'adresse IP afin de distinguer l'ID de réseau à partir de l'ID d'hôte. Donc, c'est une série continue de 1 (partie gauche) et la partie qui correspond aux hôtes est une série continue de 0 (partie droite). Le masque est aussi exprimé en notation décimale pointée.

    En comparant le masque de réseau et l'adresse IP, vous pouvez voir où se trouve la partie réseau et où se trouve l'hôte.

    Par exemple, supposons que l'adresse IP soit « 192.168.5.2 » et le masque de réseau « 255.255.255.0»

    Adresse IP : 192. 168. 5. 2

    Masque : 255. 255. 255.0

    Le masque est aussi exprimé en notation binaire est la suivante :

    11111111 .11111111 .11111111 .0

    Chapitre III Les réseaux informatiques

    [77]

    Mettons ces deux côtes à côte c'est-à-dire l'adresse IP et le masque. On fait Une addition logique entre l'adresse IP d'un poste et son masque permet de déterminer l'adresse du réseau à laquelle appartient le poste.

    III.8.3.1 MASQUES DE SOUS-RÉSEAUX PAR DÉFAUT

    Nous savons tous que l'IP est composé de quatre segments de nombres. Ici, nous examinons d'abord les trois types de classe, comme illustre le tableau suivant [101]:

    Classe

    Bits de départ

    Début

    Fin

    Masque de sous-réseau par

     

    Classe A

    0

    0.0.0.0

    128.255.255.255

    255.0.0.0

    Classe B

    10

    128.0.0.0

    191.255.255.255

    255.255.0.0

    Classe C

    110

    192.0.0.0

    223.255.255.255

    255.255.255.0

     

    Tableau III- 3: Résumé l'adressage de masque des classes

    III.8.2.4 Calcul d'adresse réseau

    Elle est calculée par application en binaire du masque sur l'adresse IP en utilisant la fonction ET (AND logique).

    Entrer

     

    Sortie

     

    A

     

    B

    A ET B

    1

     

    0

     

    0

    0

     

    1

     

    0

    0

     

    0

     

    0

    1

     

    1

     

    1

     

    Tableau III- 4: Table de vérité

    Exemple de Classe C : @IP 192.168.5.3 avec le masque 255.255.255.0, Calculer l'adresse du réseau ?

    Chapitre III

     
     

    Les réseaux informatiques

    @ip hôte 11000000

    .10101000

    .00000101

    .00000011

     

    ET

     
     

    @masque 11111111

    .11111111

    .11111111

    .00000000

     

    @ip de réseau 11000000 .10101000 .00000101 .0000000

    III.8.2.4 Calcul de l'adresse de diffusion

    Chaque réseau possède une adresse particulière dite de diffusion. Tous les paquets avec cette adresse de destination sont traités par tous les hôtes du réseau local. L'adresse de diffusion du réseau est la dernière adresse du réseau.

    24 bits pour le réseau

    8 bits à 1 pour la partie hôte

    11000000 .10101000 .00000101 .11111111

    Elle est donc constituée en
    positionnant tous les bits
    de l'hôte à 1.

    [78]

    III.8.2.5 Calcul de la plage adressable

    La plage adressable est l'ensemble des adresses que peut prendre un hôte sur le réseau.

    192

    .168

    .5

     

    .1

    La première adresse de

    11000000

    .10101000

    .00000101

     

    .00000001

    la plage

     
     
     
     
     

    La dernière adresse de

    192

    .168

    .5

     
     

    .10101000

    .00000101

     

    .11111110

    la plage

     

    [79]

    Chapitre III Les réseaux informatiques

    III.8.2.6 Nombre d'hôtes possibles dans un réseau

    192

    .168

    .5

     

    .0

    1100000000.

    10101000.

    00000101

     

    .00000000

     

    Le nombre de bits contenus dans la partie hôte détermine le nombre d'hôtes possible

    sur un réseau ==> 8 bits pour les hôtes ==> hôtes possibles.

    Pourquoi 2 ?

    Parce que deux adresses sont réservées et ne peuvent être affectées à un hôte :

    § La première adresse (192.168.5.0) représente l'adresse du réseau.

    § La dernière adresse (192.168.5.255) représente l'adresse de diffusion du réseau.

    III.8.2.7 La notation CIDR du masque

    Le CIDR est principalement une norme basée sur le préfixe au niveau du bit pour l'interprétation des adresses IP. Elle le fait en une combinaison d'une pluralité de blocs d'adresse à une table d'acheminement. Ces blocs d'adresses sont appelés blocs d'adresses CIDR.

    Le masque est constitué d'une suite contiguë de 1 suivie d'une suite de 0 ; l'information utile est le nombre de 1 dans le masque.

    Une autre notation (la plus utilisée actuellement) consiste à faire suivre une adresse donnée par le nombre de bits égaux à 1 dans le masque.

    Par exemple : 192.168.5.0 avec le masque 255.255.255.0 correspond à 192.168.5.0/24 Le tableau III-5 illustre l'adressage IP [101].

    [80]

    Chapitre III Les réseaux informatiques

    Classe

    Bits de

    départ

    Début

    Fin

    Notation CIDR par

    Masque de sous-réseau par

     

    défaut

     
     

    0

    0.0.0.0

    128.255.255.255

    /8

    255.0.0.0

    Classe B

    10

    128.0.0.0

    191.255.255.255

    /16

    255.255.0.0

    Classe C

    110

    192.0.0.0

    223.255.255.255

    /24

    255.255.255.0

    Classe D (multicast)

    1110

    224.0.0.0

    239.255.255.255

     

    255.255.255.255

     
     

    1111

    240.0.0.0

    255.255.255.255

     

    Non défini

     

    Tableau III- 5: Tableau illustratif pour l'adressage IP

    III.9 Les protocoles de routage

    III.9.1 Introduction

    Dans le monde des réseaux IP, le rôle de "routage" qui relie les paquets est très

    important. Si vous allez maîtriser le domaine des réseaux IP, il est essentiel de comprendre le fonctionnement du routage.

    Il existe le « routage statique » et le « routage dynamique » comme méthodes de gestion des informations de routage dans les réseaux IP. Le routage statique est une méthode de définition manuelle des informations de routage dans chaque routeur. Ces informations de routage ne disparaissent pas fondamentalement de la table de routage.

    Comparons brièvement les forces et les faiblesses de ces deux approches.

    L'avantage du routage statique est qu'il peut fournir une accessibilité stable au réseau car les informations de route gérée ne sont pas fondamentalement supprimées de la table de routage. De plus, comme les informations de routage sont définies manuellement, aucun traitement CPU ni trafic n'est requis pour l'échange d'informations. Cependant, même lorsque le réseau de destination n'existe plus, le trafic est transféré sur la base de ces informations.

    L'avantage du routage dynamique est que les informations de routage sont apprises dynamiquement par le protocole de routage, éliminant ainsi le besoin de gestion. De plus, comme les mises à jour du réseau peuvent être reflétées dynamiquement, il est possible de rejeter rapidement le trafic destiné aux routes non disponibles ou de sélectionner un circuit approprié. Cependant, si des informations de route incorrectes sont annoncées en raison d'une erreur de configuration ou d'une panne de périphérique, ces informations sont également transmises à l'ensemble du réseau, ce qui entraîne un large éventail d'échecs de communication. Dans le pire des cas, une boucle de routage peut se produire, entraînant

    Chapitre III Les réseaux informatiques

    [81]

    une augmentation rapide de la charge du processeur et du trafic, et le réseau lui-même peut tomber en panne.

    Lorsque vous décidez de la méthode à utiliser lors de la création d'un réseau, vous devez tenir compte des forces et des faiblesses des deux méthodes. En pratique, cependant, il est rare de construire un réseau sans aucun routage dynamique. Avec la propagation d'Internet et la taille des réseaux IP de plus en plus importants, il est pratiquement impossible de gérer les informations de routage uniquement manuellement dans un réseau aussi vaste. De plus, comme diverses applications s'exécutent sur IP, il y aura naturellement des demandes de redondance réseau et de contrôle du trafic. Pour répondre à ces demandes, le routage dynamique reste indispensable (102].

    III.9.2 Protocoles de routage qui composent Internet

    Les protocoles de routage peuvent être largement classés en deux types : IGP (Interior Gateway Protocol) et EGP (Exterior Gateway Protocol). Les protocoles utilisés comme IGP incluent "RIP", "OSPF", "IS-IS" et "IGRP / EIGRP (protocole propriétaire de Cisco Systems)". RIP et IGRP conviennent aux petits réseaux. OSPF, IS-IS, EIGRP, etc. conviennent mieux aux réseaux moyens et plus importants. Plus précisément, les réseaux d'entreprise utilisent souvent RIP, OSPF, EIGRP, etc., et les réseaux tels que les opérateurs et les fournisseurs de services utilisent souvent OSPF ou IS-IS. EGP a été utilisé lorsque l'Internet a commencé à émerger, mais ce protocole de routage est désormais rarement utilisé. Cela est dû au fait que malgré l'utilisation répandue d'EGP, il y avait plusieurs problèmes, tels que le traitement des boucles de routage et les restrictions de topologie (102].

    III.9.3 Protocoles de routage clés et leurs combinaisons

    Ici, nous nous concentrerons sur deux protocoles de routage principaux RIP et OSPF, en présentant leurs fonctionnalités (103].

    III.9.3.1 RIP (Routing Information Protocol)

    Le RIP n'est pas adapté à une utilisation dans de grands réseaux complexes, mais en raison de sa simplicité, il est utilisé par de nombreuses entreprises.

    § Les routeurs voisins échangent des messages de mise à jour toutes les 30 secondes et mettent à jour la table de routage.

    § S'il existe plusieurs itinéraires, l'itinéraire qui minimise le nombre de routeurs qui passent est sélectionné.

    § Si le nombre de routeurs dépasse 15, il est considéré comme inaccessible.

    § Si aucun message de mise à jour n'est reçu d'un routeur pendant 180 secondes, il est supposé qu'une défaillance s'est produite dans le routeur ou le réseau connecté, et l'itinéraire correspondant est invalidé.

    § Si un itinéraire invalidé passe encore 120 secondes, il sera supprimé de la table de routage.

    III.9.3.2 OSPF (protocol Open Shortest Path First)

    Compte tenu de la vitesse de communication du réseau passant, qui n'est pas prise en compte dans le RIP, une sélection de route plus efficace peut être effectuée. Dans OSPF, les

    [82]

    Chapitre III Les réseaux informatiques

    informations sont collectées auprès de tous les routeurs et, sur la base des informations, la configuration du réseau telle que la contiguïté du routeur est saisie et une table de routage est créée. OSPF présente les caractéristiques suivantes par rapport à RIP et convient aux réseaux à grande échelle (104]:

    § Moins susceptible de provoquer une boucle de routage (indiquer où les boucles de routes sélectionnées)

    § Convergence rapide (tous les routeurs finissent de mettre à jour la table de routage).

    § Les itinéraires sont sélectionnés en fonction de la bande passante et non du nombre de routeurs.

    Voici un tableau comparant les fonctionnalités de RIP et OSPF (105]:

     

    Transmission d'informations sur l'itinéraire

    Vitesse de convergen ce

    Itinéraire optimal

    Équilibrage de charge

    VLSM

    Authentifi cation

    Difficulté de

    montage

    RIP1

    Régulier

    (tous les
    itinéraires)

    Lent

    Nombre de sauts

    Aucun

    Non pris

    en charge

    Non pris

    en charge

    Faible

    RIP2

    Régulier

    (tous les
    itinéraires)

    Lent

    Nombre de sauts

    Aucun

    Correspo ndance

    Correspon dance

    Faible

    OSPF

    Lors du

    changement (seule

    différence)

    Rapide

    Valeur du coût

    Oui

    Correspo ndance

    Correspon dance

    Élevé

     

    Tableau III- 6: Fonctionnalités de RIP et OSPF

    III.10 Conclusion

    Dans ce chapitre, on a défini les notions fondamentales dans les réseaux informatiques et présenté les différents modèles des réseaux, ainsi vous verrez pourquoi l'adressage IP est à la base des réseaux informatiques. Nous avons abordé aussi l'adressage IPv4, le découpage d'adresse IP en masque de sous réseau ainsi que les différents types d'adresse. Nous avons aussi présenté une vue globale sur le modèle OSI et TCP/IP, ainsi les notions de protocole et routage.

    C

    Configurato

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [83]

    IV.1 Introduction

    Comme nous l'avons vu dans les chapitres précédents, la technologie blockchain consiste une évolution informatique dans le domaine de la sécurité et la disputation des données. Cette technologie donne un support robuste et sécurisé pour partager la base de données qui enregistre toutes les transactions ou événements numériques qui ont été exécutés et partagés entre les parties participantes. Chaque transaction est vérifiée par la majorité des participants du système. Il contient chaque enregistrement unique de chaque transaction.

    Actuellement, la crypto-monnaie constitue l'application la plus connue qui a efficacement exploité la manière dont une blockchain garantit l'authentification, la non-répudiation et la confidentialité des données sans avoir recours à des tiers de confiance tels que les banques ou bien les états. Cependant, la blockchain enregistre la transaction dans un grand livre numérique distribué sur le réseau, ce qui la rend incorruptible. Tout élément de valeur comme les actifs fonciers, les voitures, etc. peut être enregistré sur Blockchain en tant que transaction.

    Dans ce chapitre, on va proposer l'exploitation de la blockchain pour faire des transactions sur un réseau bancaire.

    IV.2 Présentation de projet

    IV.2.1 La problématique

    Chaque année, les banques perdent entre 15 et 25 milliards de dollars américains, engloutis dans des fraudes à l'identité. Malgré tout, les banques algériennes doivent intégrer cette technologie pour lutter contre le blanchiment.

    « Pour l'intégration ou l'ouverture de compte, cette technologie permet aux clients d'utiliser une empreinte numérique qui, à l'instar d'une empreinte réelle, peut être utilisée comme identifiant unique ».

    Notre objectif sera donc de mettre fin à ces fraudes par le bais d'une blockchain. Donc, le problème qui se pose c'est « comment peut-on sécuriser notre réseau bancaire avec la blockchain ? »

    IV.2.2 Objectif

    L'objectif dans ce projet est de créer un système de gestion et de transfert de monnaie à base de la technologie Blockchain, qui est sans doute le moyen le plus efficace, sécurisé et le plus transparent, pour gérer le transfert de la monnaie.

    La blockchain pourrait offrir des nouvelles solutions pour lutter contre la corruption, puisqu'elle permet de créer et de stocker des enregistrements chiffrés qui peuvent être vérifiés, mais ne peuvent pas être modifiés ou supprimés.

    Pour ces raisons, on propose de déployer une blockchain pour gérer toutes les transactions de la monnaie au niveau national.

    Pour crée un réseau bancaire, il faut diviser notre travail en trois parties. La première consiste de créer un réseau bancaire à l'aide d'un logiciel qui s'appelle Cisco Packet Tracer, la

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [84]

    deuxième partie programme la blockchain et la troisième partie consiste à intégrer le programme exécutable sur notre réseau bancaire.

    Partie 1 : Construction du réseau

    IV.3 Introduction

    Dans ce chapitre, nous commencerons par une présentation globale du réseau, nous expliquerons comment se fait le routage et la commutation entre les zones et les différents blocs de chaque zone, ensuite nous essayerons de voir les points faibles du réseau et donnerons des suggestions afin d'améliorer la sécurité et de rendre le trafic plus efficace. Enfin, nous présenterons l'architecture améliorée du réseau.

    IV.4 Présentation globale du réseau intranet

    Le réseau informatique d'un réseau bancaire est constitué de quatre zones. La figure IV.1 représente sa topologie physique.

    Figure IV- 1: Topologie physique du réseau

    IV.4.1 Description détaillée du réseau

    Nous allons réaliser, sur Packet Tracer, le schéma ci-dessous ayant cinq (5) routeurs Cisco interconnectés en port série (serial) et Ethernets.

    Ce type de liaisons série nécessite une horloge de référence (clock rate) pour synchroniser la transmission des données. Aujourd'hui, ce type de liaison est obsolète mais il est toujours présent dans des anciennes topologies réseau. Il est remplacé par des liaisons Ethernet.

    Nous avons constaté le choix des réseaux en adéquation avec les routeurs nous permettant de bien nous situer dans le travail. Par exemple, Nous avons choisi le réseau

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [85]

    10.0.0.0/8 pour interconnecter le serveur Bank et le routeur R3. Pour le réseau d'amazone, nous avons préféré d'utiliser l'adresse d' amazone.fr 45.0.0.0/8

    IV.4.2 Création de la topologie du réseau

    Cette étape consiste à faire communiquer les différents postes des réseaux et tester le routage appliqué entre différents réseaux qui est le routage dynamique et faire l'analyse de fonctionnement de ce protocole.

    Figure IV- 2: Architecture du réseau

    Nous allons maintenant configurer les 5 routeurs selon le schéma. Nous commençons par configurer les adresses ip des interfaces, ensuite configurer le routage rip.

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    IV.4.2.1 Configuration des interfaces des routeurs

    Router R2 :

    Figure IV- 3: Configuration des interfaces de router R2 On fait les mêmes étapes pour tous les routeurs restants.

    Après cette étape, toutes les interfaces doivent passer à l'état up. L'exécution de la commande « sh ip int brief » permet d'afficher l'adresse IP d'interfaces de router R2 et est-ce que le port est activé ou non !

    Figure IV- 4: Vérification des interfaces

    [86]

    [87]

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    IV.4.2.2 Configuration du protocole RIPv2

    La configuration de ce protocole se fait en tapant les 3 commandes ci-dessous :

    § Activation du protocole RIP dans les routeurs avec la commande suivante en mode configuration.

    R1(config)#router rip
    R1(config-router)#v 2

    § Définition de tous les réseaux directement connectés à ce routeur avec la commande

    R1(config-router)#network @réseau

    On va configurer à présent les cinq routeurs.

    Router R1 : les réseaux qui sont directement connectés au routeur R1 sont

    192.168.3.0/24, 192.168.4.0/24 et 192.168.2.0/24

    Figure IV- 5: Configuration du router rip

    C'est tout concernant la configuration du protocole RIPV2. Nous ferons le test pour s'assurer que le routage est opérationnel.

    § A présent, nous essayons de faire communiquer les routeurs entre eux : à partir du R4 vers R3, R4 vers R0, R3 vers R0.

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [88]

    Figure IV- 6: Communication entre les routeurs Ping de R4 vers l'interface de sortie des paquets R1 (192.168.5.1).

    Figure IV- 7: Ping R4 vers R1

    Problème 1: ping failed

    Puisque le ping de R4 vers R0 est réalisé avec succès, donc il y a un problème sur le R1. La solution consiste à vérifier la configuration d'interfaces ou bien configuration de la définition du réseau c'est-à-dire network.

    Solution01 : Vérification de la configuration de définition de réseau On a oublié de définir le réseau 192.168.5.0

    R2(config)#router rip R2(config-router)#v 2 R2(config-router)#network 192.168.5.0 R2(config-router)#exit R2(config)#exit

     

    On refait le ping. %SYS5-CON

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [89]

    Figure IV- 8: Vérification de la communication entre R4 et R1

    A l'instant présent, essayons de faire communiquer mutuellement les serveurs à partir du serveur Amazon. On lance un ping vers le serveur client.

    Ping faille

    Figure IV- 9: Ping de serveur Amazon vers Serveur Client Problème02 : ping échoué

    Notre solution consiste à vérifier 2 trucs. La configuration sur le routeur R1 et la 2ème est la configuration du serveur client.

    Solution01 : remplacez tous les serveurs avec des PC et on refait le test pour assurer la bonne configuration des routeurs.

    Voici la nouvelle mise à jour de la topologie :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    PC1

    [90]

    Figure IV- 10: Topologie d'essaie On commence par configurer les PC.

    Figure IV- 11: Configuration du PC 1 (Amazon)

    On fait la même chose pour les autre PC.

    Essayons avec un autre Ping de PC1 vers PC 3, de PC1 vers P et PC1 vers PC CLIENT

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [91]

    Figure IV- 12: Vérification de la communication entre les PCs

    Après le ping, on a conclu qu'il y avait une mal configuration sur les serveurs et non pas sur le routage.

    IV.4.2.3 Configuration des serveurs

    Comme nous l'avons vu dans les étapes précédentes, l'adresse IP permet d'identifier une machine sur un réseau. Dans le cas d'un réseau IP (la majorité que vous rencontrerez et ceux qui nous intéressent), cette adresse est indispensable pour pouvoir communiquer avec les autres machines du réseau.

    Nous allons nous intéresser ici à la manière dont cette adresse peut être obtenue. On distinguera deux méthodes, une manuelle, pour laquelle vous choisissez vous-mêmes l'adresse IP de votre machine et une dynamique où c'est un serveur qui vous fournit cette adresse. Ce serveur s'appelle un serveur DHCP et nous verrons qu'il a d'autres utilités que la simple distribution d'adresses IP.

    Il existe donc deux méthodes pour obtenir une adresse IP. Cette dernière est configurée manuellement par l'utilisateur, ou dynamiquement par le serveur.

    La méthode manuelle pose quelques problèmes de prime abord. En effet, vous avez vu que pour qu'une machine puisse communiquer avec ses voisines, son adresse IP devait se trouver dans le même réseau que les autres machines. Pour sortir du réseau local, il faut que notre machine connaisse l'adresse de la passerelle. Cela fait déjà quelques informations dont il faut avoir connaissance quand vous branchez votre ordinateur à un réseau local.

    Serveur AMAZON :

    § Affectation d'une adresse IP statique au serveur AMAZON

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [92]

    Figure IV- 13: Configuration de Serveur Amazon

    § On va changer le contenu de la page web index.htp du serveur web et on doit vérifier ce changement à partir de la machine PC0.

    Sélectionner le serveur WEB ==> Cliquer sur HTTP ==> sélection index.htp ==> cliquer sur edit

    Figure IV- 14: Modification de la page Web d'Amazon Ajouter un messager dans cette page dans code HTML

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [93]

    Figure IV- 15: Insertion de la Modification de la page Web d'Amazon Vérification du changement à partir du Serveur CLIENT

    Figure IV- 16: Vérification de la Modification de la page Web d'Amazon Serveur BANK :

    § Affectation d'une adresse IP statique au serveur BANK

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    Figure IV- 17: Affectation des adresses IP au serveur BANK Serveur Client :

    ? Autre problème, même si vous avez ces informations, comment vous assurez-vous que l'adresse IP que vous choisissez n'est pas déjà utilisée par une autre machine sur le réseau ?

    On se rend donc bien compte qu'il serait bien d'avoir un mécanisme rapide et fiable pour adresser les machines d'un réseau. C'est là qu'entre en jeu le protocole DHCP.

    Un protocole pour distribuer des adresses IP : La première fonction d'un serveur DHCP (Dynamic Host Configuration Protocol) est de fournir des adresses IP (associées à un

    masque, bien évidemment ) aux machines en faisant la demande.

    Figure IV- 18: Affectation des adresses IP au serveur Client

    §

    [94]

    Activation du protocole DHCP

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    Figure IV- 19: Configuration du DHCP On refait le test entre les serveurs s'ils fonctionnent ou non !

    Figure IV- 20: Test entre les serveurs

    Donc, maintenant le problème est résolu

    Un serveur DNS permet de faire l'association entre un nom de machine et une adresse IP, comme www.AMAZON.com est 45.0.0.2. Et www.Bank.com est 10.0.0.2

    Configuration du DNS :

    Figure IV- 21: Configuration d'un DNS serveur-client

    [95]

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [96]

    Test du DNS :

    Sélectionner le serveur WEB ==> Cliquer sur desktop ==> cliquer sur Web Browser ==> entrer le lien de la page souhaité

    Figure IV- 22: Test d'un DNS serveur-client

    IV.4.2.4 Configuration PC Client

    Problème 3 : Comment allons-nous pouvoir joindre le serveur DHCP ?

    ? Tout ceci devrait nous rappeler quelque chose, non ? Le problème est le même

    que pour le protocole ARP.

    Nous allons utiliser l'adresse de broadcast !

    La trame permettant de trouver un serveur DHCP est une trame "DHCPDISCOVER", comme c'est un broadcast, elle est envoyée à l'adresse MAC ff:ff:ff:ff:ff:ff.

    Comme la trame est envoyée en broadcast, le serveur DHCP doit obligatoirement se trouver dans le même réseau que la machine. Comme vous le savez, les routeurs (qui délimitent les réseaux) séparent les domaines de broadcast et ne relaient pas. Néanmoins, certains routeurs disposent de méthodes pour relayer ces trames DHCPDISCOVER. Mais, cela ne nous intéresse pas ici.

    Une fois que notre serveur DHCP reçoit le DHCPDISCOVER, il va renvoyer une proposition, c'est un DHCPOFFER. Il va proposer une adresse IP, un masque ainsi qu'une passerelle par défaut.

    Cette situation est illustrée par la figure ci-dessous :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [97]

    Figure IV- 23: Configuration du PC Client

    En ce moment, on a terminé avec la création de la topologie de notre réseau, on va le tester !

    Figure IV- 24: Communication entre tous les machines

    Tous marchent bien. On passe à la configuration du routeur R0 comme un FAI (Fournisseur d'Accès à Internet)

    IV.4.3 Configuration d'un FAI DHCP sur un routeur Cisco

    Dans cette topologie, on va configurer un DHCP sur le routeur R0 qui se situe sur internet beaucoup plus le comparer avec un FAI et on va configurer les routeurs R2 et R1 afin qu'ils reçoivent leurs adresses IP en provenance du FAI, donc du routeur R0.

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [98]

    Figure IV- 25: Insertion d'un fournisseur d'accès à Internet

    On va donc se connecter sur R0, la 1ère étape c'est donné un nom pour le pool du DHCP. L'un s'est pool Gestion et L'autre c'est la pool Client ; on lui assigne le réseau 192.168.2.0/24 pour pool Gestion avec une route par défaut qui sera l'interface vers le réseau privée 192.168.2.1 et le réseau 192.168.1.0/24 pour pool Client avec une route par défaut 192.168.1.1. En mode configuration globale, on va exclure les 100 premiers IP pour qu'on voit bien la modification car actuellement le routeur R2 a l'IP 192.168.2.2 et le routeur R1 a l'IP 192.168.1.2

    Figure IV- 26: Configuration d'un fournisseur d'accès à Internet

    Ensuite, on va se connecter sur le routeur R2 ici sur l'interface FA0/0 avec la commande « sh ip intbrief ». On voit bien que le R2 avec l'interface Fa0/0 a une adresse 192.168.2.2 et le R1 a une adresse 192.168.1.1

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [99]

    En tapant « sh ip route », on voit aucune route configurée par défaut.

    On va maintenant configurer les interfaces des deux routeurs en mode DHCP. Pour cela, il faut se connecter sur les interfaces « fa0/0 du R1 » et « fa0/0 du R2 ». Une fois connecté, il faut entrer la commande « ip address DHCP », puis on valide. En configurant les deux interfaces en mode DHCP, on peut voir un message qui va s'afficher sur la console indiquant que le DHCP est lui qui a fourni une adresse 192.168.1.101 sur le R1 et l'adresse 192.168.2.101 sur R2. En faisant un « sh ip int brief », nous confirmons l'affectation de la nouvelle IP.

    Figure IV- 27: Vérification des interfaces du FAI

    Un « sh ip route » nous montre que le DHCP a bien envoyé sa paserelle par défaut.

    Figure IV- 28: Activation du DHCP sur R2 et R1

    Si on essaye de faire un ping du serveur à l'autre bout, on constate que ça foctionne normalement et correctement ! on voit « percent 5/5 »

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [100]

    Figure IV- 29: Ping du R0 vers tous les hôtes

    Le réseau fonctionne comme prévu. La source de trafic du R2 vers les destinations Internet est traduite tandis que le trafic provenant du R2 vers le R1 n'est pas traduit. Cependant, ce trafic doit être protégé lors de la traversée d'Internet public.

    Problème 4 : La sécurité est un ensemble de stratégies, conçues et mises en place pour détecter, prévenir et lutter contre une attaque. Actuellement, il existe beaucoup de mécanisme de sécurité.

    Solution :

    La solution d'interconnexion que fournit Internet pour répondre à ce

    besoin de communication sécurisé, consiste à utiliser les réseaux privés virtuels (VPN), qui sont idéals pour pouvoir exploiter au mieux les capacités du réseau Internet et de relier des sites à l'échelle de la planète en toutes sécurité. Au cours de ce chapitre nous présenterons les principales caractéristiques des VPN, à travers certaines définitions et principes de fonctionnement, les différentes typologies ainsi que les détails sur le protocole IPsec.

    Un VPN (Réseau Privé Virtuel) nous permet de créer une connexion privée et sécurisée vers un autre réseau, généralement dans un autre pays. Cela donne l'apparence que nous sommes en train de naviguer depuis ce pays, en nous permettant d'accéder au contenu habituellement bloqué par la censure ou les autorités.

    Votre connexion est protégée par un tunnel chiffré. Vos données ne peuvent donc pas être interceptées par des intrus, des pirates et des tiers. C'est la protection ultime dans la

    jungle numérique d'internet.

    Alors que les VPN étaient initialement utilisés comme un moyen pour les employés d'accéder à distance et en toute sécurité à leur réseau de bureau.

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    IV.5 Implémentation du VPN

    Cette partie montre comment configurer deux routeurs Cisco pour créer un tunnel VPN permanent de site à site sécurisé sur Internet, en utilisant le protocole IP Security (IPSec).

    Les tunnels VPN IPSec peuvent également être configurés à l'aide de tunnels GRE (GenericRouting Encapsulation) avec IPsec. Les tunnels GRE simplifient considérablement la configuration et l'administration des tunnels VPN.

    ISAKMP (Internet Security Association et Key Management Protocol) et IPSec sont essentiels à la construction et au chiffrement du tunnel VPN. ISAKMP, également appelé IKE (Internet Key Exchange), est le protocole de négociation qui permet à deux hôtes de s'accorder sur la manière de construire une association de sécurité IPsec. La négociation ISAKMP se compose de deux phases.

    La phase 1 crée le premier tunnel qui protège les messages de négociation ISAKMP ultérieurs.

    La phase 2 crée le tunnel qui protège les données.

    IPsec entre alors en jeu pour crypter les données en utilisant des algorithmes de cryptage et fournit des services d'authentification, de cryptage et d'anti-répétition.

    IV.5.1 Mise en place d'un VPN site à site

    La nouvelle architecture proposée dispose de deux sites, notre topologie illustre leurs interconnexions via un tunnel VPN. Pour cela, il faudrait définir une clef partagée, une association de sécurité, une fonction de hachage . . . Ainsi, cette solution permettra aux sites RTARGA et RABOUDAOU d'échanger des données en passant par Internet d'une façon sécurisée en utilisant le tunnel VPN. Nous choisirons pour les deux sites les mêmes clefs de chiffrement, le type de hachage, la taille de police, la longueur des clés, la durée de vie de clé avant renégociation, la méthode de cryptage des données, la durée de vie de la clé de cryptage, une ACL permettant d'identifier le trafic à traiter par le tunnel et enfin la création d'une cryptomap.

    Figure IV- 30: Mise en place de tunnel

    [101]

    [102]

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    IV.5.2 Configuration du VPN

    IV.5.2.1 Configuration ISAKMP

    IKE n'existe que pour établir une SA pour IPSec. Il doit d'abord négocier cette SA (une SA ISAKMP) : les relations avec les routeurs des sites distants. Maintenant, nous allons commencer à travailler sur le site de la BANK(R2).

    Figure IV- 31: Configurer la politique de sécurité ISAKMP

    IV.5.2.2 Protocole de gestion et l'échange des clés IPsec

    La deuxième étape consiste à configurer la clef à l'aide de la commande suivante :

    Figure IV- 32: Architecture d'un VPN site à site

    A chaque fois que la bank tentera d'établir un tunnel VPN avec le client, cette clé partagée (vpnkey) sera utilisée.

    IV.3.2.3 Fonctionnement d'IPec

    Pour configurer le protocole IPSec on a besoin de configurer les éléments suivants :

    · Créer l'IPSec Transform.

    · Créer une ACL étendue.

    · Créer le crypto map.

    · Appliquer crypto map à l'interface publique

    Cette étape consiste à créer la transformation définie utilisée pour protéger les données

    (IPSec) nommé `'vpntrans».

    Figure IV- 33: Configurations d'IPsec

    L'ACL étendu que l'on crée permettra de définir le trafic qui passera à travers le tunnel VPN. Dans notre projet, le trafic s'achemine du réseau 10.0.0.0/24 à 192.168.5.0/24.

    [103]

    R2(config)#access-list 100 permit ip 192.168.4.0 0.0.0.255 192.168.5.0 0.0.0.255

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    La crypto map est la dernière étape d'installation et d'établissement du lien entre ISAKMP définie précédemment et la configuration IPSEC :

    Figure IV- 34: Configuration de la crypto map

    Maintenant il suffit d'appliquer la crypto map sur l'interface de sortie de routeur :

    Figure IV- 35: Application de la crypto map

    Dès que nous appliquons crypto map sur l'interface, nous recevons un message de Router qui confirme ISAKMP : ISAKMP is ON.

    Les paramètres pour le routeur R1 sont identiques, la seule différence étant les adresses IP attribuées et les listes d'accès.

    IV.5.2.4 Test de Protocol IPsec

    À ce stade, nous avons terminé notre configuration et le tunnel VPN est prêt à être mis en place. Pour lancer le tunnel VPN, nous devons forcer un paquet à traverser le VPN et cela peut être réalisé en envoyant un ping d'un routeur à un autre.

    Pour tester le VPN, on fait un ping entre les deux hôtes distants. Puis sur le routeur rattaché à la machine qui a effectué le ping, tapez la commande (show crypto isakmp sa) et on aura des informations sur la source et la distance.

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [104]

    Figure IV- 36: Vérification des opérations d'ISAKMP

    Et pour confirmer, on va voir les paquets encapsulés et autres en tapant (show crypto ipsec sa).

    Figure IV- 37: Encapsulation des données

    Cela prouve que le tunnel à bien été mis en place mais la communication entre les deux sites n'est pas sécurisée.

    Problème 5 : pourquoi la communication n'est pas sécurisée malgré que le tunnel soit bien placé ?

    Solution 01 : vérification si le crypto sur les interfaces du sortir de paquets est bien appliqué !

    Figure IV- 38: Vérification de la crypto map

    § Les paramètres de cryptages sont bien appliqués

    o Notez que vous ne pouvez affecter qu'un seul crypto map à une interface.

    Solution 02 : vérifier la liste d'accès ACL

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [105]

    Figure IV- 39: Vérification de la liste d'accès

    Il y a un problème sur la création de la liste d'accès pour sécuriser le réseau 192.168.4.0 du routeur et non pas le réseau où se trouve le serveur banque 10.0.0.0. Maintenant, on va juste créer une nouvelle liste d'accès permettant de crypter le réseau du serveur.

    R2(config)#access-list 100 permit ip 10.0.0.0 0.255.255.255 192.168.5.0 0.0.0.255

    Maintenant, il devrait être allumé on refait le test.

    Figure IV- 40: Vérification d'IPsec sa

    Maintenant, rappelez vous que le FAI n'a pas une idée sur les deux réseaux pourtant le ping marche bien. Avec le packet tracer, nous rentrons dans le mode de simulation. On laisse que le filtre ICMP, puis on va mettre en place un packet sur le serveur bank et puis un autre sur le serveur client et on capture et on observe le packet qui traverse les routeurs. Quand le packet arrive au FAI, on regarde à l'intérieur du packet.

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [106]

    Figure IV- 41: Information du PDU sur R0(FAI)

    Le FAI préocupe par le fait que le packet vient de la source IP 192.168.2.101 et avec une déstination 192.168.1.101 grace à l'en-tete ESP qui va crypter les données et les envoyer sur le tunnel .

    Voici la réel source :

    Figure IV- 42: Information du PDU non crypté En fin, on a obtenu le meuilleur résultat .

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [107]

    Figure IV- 43: Teste de la topologie Avec un ping manuel maintenant

    Figure IV- 44: Test de la topologie manuellement

    Pour la confirmation, on tape la commande sh crytpo ipsec sa, qui nous retourne le résultat suivant :

    Figure IV- 45: Confirmation de cryptage et décryptage de données

    Le réseau fonctionne comme prévu. La source de trafic du R2 vers les destinations Internet est traduite avec un mécanisme IPsec tandis que le trafic provenant du R4 vers le R3 n'est pas traduit. Cependant, ce trafic doit être protégé lors de l'échange de la monnaie. Donc, notre but est de protéger le trafic qui passe entre bank et amazon.

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    Problème 06 : comment protéger le trafic entre la bank et amazon ?

    Solution 01 dans ce scénario, on propose de créer un tunnel GRE entre R4 et R3

    IV.6 Implémentation d'in GRE tunnel IV.6.2 Introduction

    Tunneling fournit un mécanisme pour le transport de paquets d'un protocole à l'intérieur d'un autre protocole. Le protocole qui est transporté est appelé protocole passager, et le protocole qui est utilisé pour transporter le protocole passager est appelé protocole de transport. Generic Routing Encapsulation (GRE) est un des mécanismes de tunneling qu'utilise IP comme protocole de transport et il peut être utilisé pour transporter différents protocoles. Les tunnels se comportent comme des liens point à point virtuels qui ont deux extrémités identifiées comme tunnel source et tunnel destination.

    Le diagramme suivant montre le processus d'encapsulation d'un paquet GRE quand il croise le routeur et rentre dans le tunnel d'interface :

    Figure IV- 46: Fonctionnement du Tunnel GRE

    Pour notre configuration, on a utilisé bien la topologie en capture d'écran suivante :

    Figure IV- 47: Insertion du Tunnel GRE

    [108]

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [109]

    IV.6.2 Configurons un tunnel GRE :

    Configurer un tunnel GRE revient à configurer un tunnel d'interface, qui est une interface logique. Après, il faut configurer les extrémités pour l'interface de tunnel.

    Pour configurer la source et la destination du tunnel, vous devez configurer les commandes de tunnel source {ip-address | type d'interface} et du tunnel destination {nom-hôte | ip-address} dans le mode de configuration de l'interface du tunnel.

    La configuration suivante explique comment créer un tunnel GRE simple entre deux points et les étapes nécessaires pour vérifier la connexion entre deux réseaux. Les sous-réseaux de R4 et R3 (respectivement 45.0.0.0/8 et 10.0.0.0/8) communiquent entre eux via un tunnel GRE sur Internet. Les deux interfaces du tunnel font parties du réseau 172.16.1.0/24.

    La première étape consiste à créer l'interface de tunnel sur les deux routeurs.

    Figure IV- 48: Création d'interfaces de Tunnel

    Les hôtes des deux réseaux privés ne pourront pas se joindre que si les protocoles de routage ou les routes statiques sont configurés dans les routeurs.

    R4(config)#ip route 10.0.0.0 255.0.0.0 172.16.1.2 R3(config)#ip route 45.0.0.0 255.0.0.0 172.16.1.1

    Maintenant, tous les deux réseaux privés (10.0.0.0/8 et 45.0.0.0/8) peuvent communiquer entre eux à travers du tunnel GRE.

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    IV.6.3 Test de tunnel

    Vérifions ce tunnel GRE avec un ping du serveur BANK vers le serveur AMAZON

     

    Comme vous
    pouvez le voir
    c'est réussi

     

    [110]

    Figure IV- 49: Vérification si le Tunnel est bien créé

    On peut aussi utiliser la commande "tracert" pour qu'on peut voir le chemin du trafic

    Figure IV- 50: Chemin du traffic

    Notre trafic va aller en premier par l'adresse du l'interface 10.0.0.1 puis par l'interface logique 172.16.1.1 du tunnel GRE après par l'adresse de destination 45.0.0.2

    Partie 2 : Construire une blockchain

    IV.7 Introduction

    Dans le chapitre 2, nous avons appris ce qu'est une blockchain et comment elle fonctionne. Dans de plus, nous avons appris dans le chapitre 3 l'architecture d'un réseau. Dans ce chapitre, on va commencer à construire la blockchain et tous ses fonctionnalités. Commençons par crée notre projet ou nous allons taper notre code pour crée la blockchain, puis création de la structure de données blockchain utilisant un constructeur puis nous ajouterons beaucoup de différents types de fonction de notre blockchain par l'ajoute de différentes méthodes à son prototype. Telles que la création des blocs et les transactions,

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [111]

    ainsi que la capacité de hachage des données et des blocs. Nous lui donnerons également la possibilité de faire une preuve de travail et de nombreuses autres fonctionnalités qu'une blockchain devrait être capable de faire. Nous nous assurons ensuite que la blockchain et entièrement fonctionnel en testant les fonctionnalités ajoutées au fur à mesure de notre progression. Donc en construisant blockchain étape par étape, pour nous gagne une meilleure compréhension de la façon de la blockchain fonctionne.

    IV.8 Configuration du projet

    Commençons par construire notre blockchain projet. La première chose que nous allons faire est ouvrir notre terminal et créer notre blockchain en tapant des commandes dans le répertoire terminal.

    Etape 01 : commençons par crée un dossier appelé blokchchain2020, dans ce dossier créons un répertoire appelé programmation_BC. Ce répertoire est actuellement vide. À l'intérieur de ce répertoire programmation_BC se trouve ou nous allons faire tout notre programmation. Nous allons construire toute notre blockchain à l'intérieur de ce répertoire. Comme illustre la figure suivante :

    Figure IV- 51: Créations de notre projet

    Maintenant, notre répertoire programmation_BC est prêt, et la première chose que nous devons faire est d'ajouter un dossier et fichiers en elle. Le premier dossier nous voulons mettre sera appelée dev. En tapant les commandes suivantes :

    Dans ce répertoire, nous allons construire nos données blockchain, nous allons créer deux fichiers blockchain.js et test.js. Pour faire cela, entrez les commandes suivantes :

    Figure IV- 52: Créations des fichiers avec les extensions "js"

    La commande « touch » permet d'ouvrir un fichier s'il existe ou de le crée s'il n'existe pas. On peut n'utilise pas cette commande « touch » voici une autre méthode. Dans ce dernier dossier on ouvre l'éditeur de texte en tapant les codes et les enregistres avec les extensions "js" (test.js et blockchain.js).

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [112]

    Le fichier blockchain.js est l'endroit où nous allons taper notre code pour crée la blockchain et le test.js est l'endroit où nous allons écrire notre code pour tester la blockchain.

    Ensuite, revenons à notre répertoire programmation_BC en tapant la commande suivante dans le terminal : cd..

    Dans le répertoire programmation_BC, exécutons la commande suivante pour crée le npm projet :

    Figure IV- 53: Création d'un fichier package.json.

    Après avoir exécuté la commande précédente, on obtiendra quelques options sur notre terminal.

    Figure IV- 54: Création de projet est prête

    Ce fichier. json gardera une trace de notre projet toutes les dépendances dont nous avons besoin, permet nous pour exécuter des Scripts. Nous nous travaillons plus à l'intérieur de ce fichier package.json

    IV.9 Programmation de la blockchain

    IV.9.1 Introduction

    Dans cette section ; nous couvrirons les points suivants :

    § Apprendre a créé une fonction de constructeur de la blockchain

    § Construire et tester les différentes méthodes

    § Comprendre la mise en oeuvre de la PoW

    § Crée et tester un genesis block

    Alors, commençons !

    [113]

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    IV.9.2 Création de la blockchain

    Exigences : J'ai construit cela dans Node.js, mais vous pouvez facilement le construire sur Repl.it si vous préférez. Nous utiliserons également le package sha256 npm pour hacher les blocs.

    Si vous êtes nouveau sur Node.js, tout d'abord, vous devrez créer un nouveau répertoire, créer un index.js fichier, puis à partir de votre terminal, exécuter à npm init -y partir de votre nouveau répertoire. Cela crée un fichier package.json, qui nous permettra d'installer le package sha256. Exécutez npm i sha256 pour installer la bibliothèque sha256. Si vous êtes sur Repl.it, créez un nouveau replNodejs, installez le js-sha256package et exigez-le.

    Commençons par construire notre blockchain Structure de données. Nous allons commencer par ouvrir tous les fichiers que nous avons dans notre blockchain en utilisant l'éditeur Sublime. Si vous êtes à l'aise avec n'importe quel autre éditeur, vous peut aussi l'utiliser. Ouvrez toute notre blockchain répertoire dans l'éditeur que vous préférez.

    Nous allons construire notre structure de données blockchain dans le fichier dev /blockchain.js que nous avons créé dons la section précédente, Configuration du projet. Construisons cette structure de données blockchain en utilisant une fonction constructrice. Alors, commençons :

    § Maintenant que nous sommes configurés, il est temps de créer une nouvelle classe, nous avons donc un modèle que nous utiliserons pour construire chaque bloc. Chaque bloc de notre blockchain simple contiendra 3 éléments de données : l'index du bloc, la valeur de hachage du bloc qui le précède et un hachage de lui-même.

    § Pour créer notre bloc, j'utilise une classe JavaScript, mais une fonction constructeur fonctionnerait tout aussi bien car c'est vraiment tout ce qu'une classe est sous le capot. J'ai défini la fonction constructrice pour prendre toutes nos données à l'exception du hachage comme paramètres. Le bloc examinera alors l'index, l'horodatage, les données et le hachage précédent, et générera son propre hachage ou empreinte digitale.

    § Continuons à construire notre structure de données blockchain. Après avoir défini notre fonction constructeur dans la section précédente, la suivante chose que nous voulons faire avec notre fonction constructeur est de placer une méthode dans notre fonction Blockchain. Cette méthode que nous allons créer s'appellera createNewBlock. Comme son nom l'indique, cette méthode va créer un nouveau bloc pour nous. Suivons les étapes mentionnées ci-dessous pour construire notre blockchain :

    [114]

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    IV.9.2.1 La création d'ajoute un nouveau bloc

    Figure IV- 55: Programmations d'ajoute d'un nouveau bloc

    En ajoutant ces deux dernières lignes de code, notre méthode createNewBlock est prête. Fondamentalement, c'est qu'elle crée un nouveau bloc. À l'intérieur de ce bloc, nous avons nos transactions et les nouvelles transactions qui ont été créées depuis l'extraction de notre dernier bloc. Après avoir créé un nouveau bloc.

    § Test de la méthode constructeur de la blockchain :

    La première chose que nous devons faire est d'exporter notre fonction constructeur Blockchain car nous allons utiliser cette fonction dans notre fichier test.js. Donc, pour exporter la fonction constructrice, nous allons aller au bas du fichier blockchain.js, taper la ligne de code suivante, puis enregistrer le fichier.

    Figure IV- 56: Exportations de la fonction constructrice

    Ensuite, accédez au fichier dev / test.js, car c'est ici que nous testerons notre méthode createNewBlock. Maintenant, la première chose que nous voulons faire dans notre fichier dev / test.js est d'importer notre fonction constructeur Blockchain, alors tapez ce qui suit :

    Figure IV- 57: Configuration de projet bitcoin

    Allez maintenant dans notre fenêtre de terminal. Ici, nous sommes actuellement dans le répertoire blockchain, et notre fichier test.js est dans notre dossier dev, alors tapez la commande suivante dans le terminal:node test.js

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [115]

    Nous observerons la Blockchain dans la fenêtre du terminal, comme le montre la capture d'écran suivante :

    Figure IV- 58: Création de projet bitcoin

    Nous pouvons observer que Blockchain a une chaîne vide et un tableau de transactions vide. C'est exactement ce que nous attendions de la sortie.

    § Test d'ajoute des nouveaux blocs :

    Nous ajouterons la ligne de code suivante : bitcoin.createNewBlock();

    Ensuite, nous allons créer un hachage pour notre précédent BlockHash, suivi par un autre hachage pour notre paramètre de hachage, comme suit :

    bitcoin.createNewBlock(1998,'KAWTER','BO14UD05GH19en98');

    Donc, maintenant on a créé notre bitcoin. Enregistrez ce fichier et exécutez notre fichier test.js à nouveau dans le terminal. Nous aurons ensuite à observer la sortie suivante :

    Figure IV- 59: Test d'ajoute un nouveau bloc

    Dans la capture d'écran précédente, nous avons observé toute la structure de données de la chaîne de blocs dans la chaîne. Ce bloc a également le hachage, nonce et previous Block Hash paramètres que nous avions saisis. Il n'a aucune transaction parce que nous n'en avons pas créé transactions encore. Par conséquent, nous pouvons conclure que la méthode createNewBlockfonctionne très bien.

    Maintenant, testons encore plus notre méthode en créant quelques blocs de plus dans notre chaîne. Comme elle montre la figure suivante :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [116]

    Figure IV- 60: Test de la méthode creatNewBlock

    Maintenant, quand nous exécutez notre fichier test.js, nous devrions avoir trois blocs dans notre chaîne, comme le montre la capture d'écran suivante :

    Figure IV- 61: Exécution de la méthode creatNewBlock

    IV.9.2.2 Créations des nouvelles transactions

    La prochaine méthode que nous allons ajouter notre fonction constructrice de blockchain est appelée createNewTransaction.

    Cette méthode créera une nouvelle transaction pour nous. Suivons ce qui suit étapes mentionnées pour créer la méthode :

    Figure IV- 62: Programmations des nouvelles transactions

    § Tester d'ajoute des nouvelles transactions :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [117]

    Nous allons tester notre méthode createNewTransaction dans notre fichier test.js. Jetez un oeil à la capture d'écran suivante pour un test rapide :

    Figure IV- 63: Test d'ajoute des nouvelles transactions

    Nous pouvons observer la blockchain bitcoin sur la fenêtre du terminal, comme le montre la capture d'écran suivante :

    Figure IV- 64: Test d'ajoute des nouvelles transactions

    IV.9.2.3 Mining d'un bloc

    On va créer un bloc, créé une transaction, puis miné le nouveau bloc. Maintenant, la transaction nous avons créé devrait apparaître dans notre deuxième bloc, car nous avons miné un bloc après avoir créé une transaction comme le montre la figure suivante :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [118]

    Figure IV- 65: Test de miner un bloc

    § Test de Mining un bloc :

    Voyons ce que nous donne :

    Figure IV- 66: Exécution de minerde deux blocs

    Nous avons à nouveau toute notre blockchain, qui contient deux blocs parce que nous avons miné deux blocs. Notre premier bloc (index : 1), qui n'a aucune transaction et à notre deuxième bloc (index : 2), dans lequel, si vous regardez nos transactions, il est dit qu'il y a un tableau qui contient des éléments par rapport à un tableau de transactions d'un premier bloc, qui ne contient aucun élément. Nous devons nous attendre à voir la transaction que nous avions créée précédemment.

    En faisons la modification suivante à notre test:console.log(bitcoin.chain[1]);

    Dans la sortie, vous pouvez voir que, pour les transactions, il contient un tableau avec un objet. Découvrons la capture d'écran suivante :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [119]

    Figure IV- 67: Modifications sur les transactions

    Ce que nous avons fait ici était simplement de créer une transaction, puis de miner en créant un nouveau bloc ou en extrayant un nouveau bloc, qui contient maintenant notre transaction. Maintenant, réalisons quelques autres exemples pour aider à clarifier ce qui se passe ici.

    Figure IV- 68: Ajout des transactions successives

    À ce stade, ces trois nouvelles transactions devraient se trouver dans notre tableau en attente de transactions, car nous ne créons pas de nouveau bloc après avoir créé ces trois transactions. Enfin, nous nous déconnectons à nouveau de notre blockchain bitcoin. Notre test devrait maintenant ressembler à ce qui suit :

    Figure IV- 69: Transactions restantes en attente

    Dans la capture d'écran précédente, vous pouvez observer que nous avons notre blockchain. Dans cette chaîne, nous avons deux blocs, comme nous nous y attendions, et dans notre tableau de transactions en attente, nous avons trois transactions, qui sont les trois transactions que nous avons créées dans notre fichier de test. Ce que nous devons faire ensuite, c'est intégrer ces transactions en attente dans notre chaîne. Pour cela, minons un autre bloc. Copiez et collez simplement la méthode creatNewBlock après les trois transactions que nous avons créées et apportons des modifications à ses paramètres comme nous souhaitons. Lorsque nous exécutons le test maintenant, les trois transactions en

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [120]

    attente devraient apparaître dans notre nouveau bloc en faisant une petite modification de la dernière ligne de notre code de test, qui est console.log (bitcoin.chain [2]); la valeur 2 spécifie ici le troisième bloc du chaîne. Enregistrons le fichier et exécutons le test. Vous pourrez observer la sortie suivante :

    Figure IV- 70: Minage réussi

    Vous pouvez voir que nous avons les trois transactions que nous avons créées. C'est ainsi que comment nos méthodes createNewTransactionset createNewBlock fonctionnent ensemble.

    IV.9.3 Hachage des données

    IV.9.3.1 Création de la méthode hashBlock

    Construisons notre méthode hashBlock. À l'intérieur de cette méthode, nous voulons utiliser le hachage SHA256 pour hacher nos données de bloc. Suivez les étapes mentionnées dans la figure ci-dessous :

    Figure IV- 71: Construction de la méthode hashBlock

    Nous créons notre propre fonction hashBlock utilisée pour donner à chaque bloc son propre hachage. Comme vous pouvez le voir avec la fonction, le hachage prend chaque morceau de l'objet bloc, le jette dans une fonction SHA256 et le convertit en chaîne. Dans ce projet, nous convertissons les données, nonce et le bloc hash précédent.

    C'est ainsi que notre méthode hashBlock fonctionnera. Dans la section suivante, nous allons tester la méthode pour voir si cela fonctionne parfaitement.

    Test de la méthode hashblock :

    Testons notre méthode hashBlock dans le fichier test.js. Semblable à ce que nous avons fait dans les sections précédentes, dans notre fichier test.js, nous devrions importer notre structure de données blockchain, créons une nouvelle instance de notre blockchain et la nommons bitcoin. Maintenant, testons notre méthode hashBlock.

    Pour cela, saisissons la ligne de code suivante dans notre fichier test.js :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [121]

    Figure IV- 72: Test de la méthode hashBlock

    Dans ce cas de test, nous appelons notre méthode hashBlock avec tous les paramètres corrects. Lorsque nous exécutons ce fichier, nous devons observer le hachage sur la fenêtre du terminal.

    Maintenant, nous allons enregistrer ce fichier test.js et exécutons-le pour vérifier si nous obtenons ou non la sortie voulue. Nous allons accéder à la fenêtre de notre terminal et saisissons la commande node test.js, et observons les résultats obtenus. Nous pourrons observer le hachage résultant similaire en sortie de notre méthode hashBlock comme suit :

    Figure IV- 73: Exécution de la méthode hashbBock

    Nous avons oublié d'enregistrer la bibliothèque sha256. Nous devrons taper la commande suivante dans notre terminal : npm i sha256 --save

    Nous verrons alors la sortie suivante :

    Figure IV- 74: Enregistrement de la bibliothèque sha256

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [122]

    Ne vous inquiétez pas de l'avertissement pour l'instant car cela ne nous affectera pas dans le cadre de ce projet. L'erreur existe car le dossier que nous avons créé est extrêmement dépouillé et ne contient pas de fichiers supplémentaires.

    On va accédez à notre fenêtre de terminal et tapons la commande node test.js, et observons les résultats que nous obtenons. Normalement, maintenant, on pourra observer le hachage résultant en sortie :

    Figure IV- 75: Résultat de hachage Il semble que notre méthode hashBlock fonctionne bien.

    IV.9.4 Proof of Work

    IV.9.4.1 Définition

    La prochaine méthode que nous allons ajouter à notre structure de données blockchain est la méthode de preuve de travail. Cette méthode est très importante et essentielle à la technologie blockchain.

    La méthode ProofOfWork prendra les deux paramètres : currentBlockData et previousBlockHash. À partir de ces données que nous fournissons, la méthode proofOfWork tentera de générer un hachage spécifique. Ce hachage spécifique dans notre exemple va être un hachage qui commence par quatre zéros.

    Essayons maintenant de comprendre comment nous pouvons le faire. Comme nous l'avons appris dans les sections précédentes, le hachage généré à partir de SHA256 est à peu près aléatoire. Donc, si le hachage résultant est à peu près aléatoire, comment pouvons-nous générer un hachage à partir de notre bloc actuel qui commence par quatre zéros ? La seule façon de le faire est par essais et erreurs, ou en devinant et en vérifiant. Donc, cette fois, nous allons incrémenter notre valeur nonce de 1. Si nous n'obtenons pas à nouveau la valeur de hachage correcte, nous allons incrémenter la valeur nonce et réessayer. Si cela ne fonctionne pas, nous incrémentons à nouveau la valeur nonce et réessayons. Ensuite, nous exécuterons continuellement cette méthode hashBlock jusqu'à ce que nous trouvions un hachage qui commence par quatre zéros. C'est ainsi que notre méthode proofOfWork fonctionnera. Donc, si quelqu'un voulait retourner dans la blockchain et essayer de changer un bloc ou les données de ce bloc - peut-être pour se donner plus de Bitcoin - il faudrait faire une tonne de calculs et utiliser beaucoup d'énergie pour créer le bon hacher. Dans la plupart des cas, il n'est pas possible de revenir en arrière et d'essayer de recréer un bloc déjà existant ou de réexploiter un bloc déjà existant avec vos propres faux donnés. En plus de cela, notre méthode hashBlock prend non seulement le currentBlockData, mais aussi le précédent BlockHash. Cela signifie que tous les blocs de la blockchain sont liés entre eux par leurs données. Cela peut sembler écrasant un peu pour le moment, mais ne vous inquiétez pas - nous allons construire la méthode ProofOfWork ci-dessous, puis nous allons la tester avec de nombreux types de données différents. Cela nous aidera à nous familiariser avec le fonctionnement de la méthode ProofOfWork et la manière dont elle sécurise la blockchain.

    [123]

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    IV.9.4.1 Création de la méthode Proof of Work

    Alors, on commence par définir la méthode ProofOfWork :

    Figure IV- 76: Configuration de la preuve de travail

    C'est ainsi que notre méthode proofOfWork fonctionnera et validera le hachage.

    Dans la section suivante, nous testerons notre méthode proofOfWork dans notre fichier test.jspour nous assurer qu'elle fonctionne correctement. Nous étudierons également pourquoi nous retournons une valeur nonce au lieu de renvoyer le hachage.

    § Teste de la méthode proofOfWork :

    Pour tester notre méthode proofOfWork, nous avons besoin de previousBlockHash et currentBlockData. Donc, dans notre cas de test, supprimons la valeur nonce et ajoutons les lignes de code suivantes à notre fichier :

    console.log(bitcoin.proofOfWork(previousBlockHash, currentBlockData));

    Une fois le test exécuté, nous remarquerons qu'un nombre apparaît en sortie à l'écran :

    Figure IV- 77: Obtention du nonce

    Ce que signifie ce nombre, c'est qu'il a fallu 61989 itérations pour que notre méthode proofOfWork trouve un hachage qui commence par quatre zéros.

    Nous devrons apporter des modifications mineures à notre boucle while, ce qui va se passer, c'est que nous devrions réellement voire plus de 61000 hachages différents affichés dans notre terminal. Aucun de ces hachages ne commencera par quatre zéros, à l'exception du dernier. Seul le dernier hachage affiché commence avec quatre zéros car après notre méthode, cela se terminera et renverra la valeur nonce pour laquelle le hachage valide a été obtenu.

    Nous pouvons maintenant observer sur notre écran que nous avons toute une tonne de hachages différents enregistrés sur terminal :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [124]

    Figure IV- 78: Exécution de PoW

    Nous pouvons également observer que pour chaque hachage qui a été affiché, le début n'est jamais quatre zéros de suite jusqu'à ce que nous obtenions notre valeur finale.

    Essayons maintenant d'utiliser notre méthode hashBlock. Dans notre fichier test.js, supprimons la méthode proofOfWork et ajoutons la ligne de code suivante :

    console.log(bitcoin.hashBlock(previousBlockHash, currentBlockData, 61989));

    En faisant cela, nous devons générer un hachage qui commence par quatre zéros au premier essai. Enregistrons-le et exécutons-le. Une fois le test exécuté, nous pourrons observer le hachage unique qui commence par quatre zéros, comme indiqué dans la capture d'écran suivante :

    Figure IV- 79: Vérification du hash après l'obtention du nonce

    Ainsi, à partir de notre test, nous pouvons conclure que la méthode proofOfWork fonctionne comme prévu.

    IV.9.4 Création du bloc genesis :

    Une autre chose que nous devrions ajouter à notre structure de données blockchain est le bloc genesis. Mais qu'est-ce qu'un bloc de genèse ? Eh bien, un bloc de genèse est simplement le premier bloc d'une chaîne de blocs.

    À l'intérieur de la fonction constructeur blockchain tapons la ligne de code suivante : this.createNewBlock(1405, '0', '0');

    Dans le code précédent, nous avons passé la valeur nonce à 1405, previousBlockHash à 0 et la valeur de hachage à 0. Ce ne sont que des valeurs arbitraires ; vous pouvez ajouter la

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    valeur que vous souhaitez ajouter. Maintenant, enregistrons le fichier et testons le bloc genesis dans le fichier test.js. Comme le montre la capture d'écran suivante :

    Figure IV- 80: Créations du bloc genesis

    Dans la capture d'écran précédente, pour le tableau de chaînes, on peut voir que nous avons un bloc à l'intérieur de la chaîne. Ce bloc est notre bloc de genèse et il a un nonce de 1405, un hachage de 0 et un précédent Blockhash de 0. Dorénavant, toutes nos chaînes de blocs auront un bloc de genèse.

    IV.8.6 Création d'une API Express

    Dans cette section, nous allons créer une API de liste de tâches RESTful (c'est-à-dire des points de terminaison qui créeront une tâche, obtiendront ou liront la liste de toutes les tâches, liront une tâche particulière, supprimeront une tâche et mettront à jour une tâche). À l'aide d'Express et couvrir quelques bonnes pratiques de développement. On découvre comment toutes les pièces fonctionnent ensemble lorsqu'on crée un projet.

    IV.8.6.1 Configuration du serveur

    Installons express et nodmon, express sera utilisé pour créer le serveur tandis que nodmon nous aidera à garder une trace des modifications de notre application en regardant les fichiers modifiés et redémarrer automatiquement le serveur.

    IV.8.6.1.1 Installation d'express

    Nous pouvons maintenant installer Express on exécute cette commande :

    #npm i express

    IV.8.6.1.2 Crée le fichier serveur.js

    Au début du code est importé le express module et créé une app. Après avoir créé un itinéraire basé sur la méthode HTTP. Les objets reset req sont fournis par le noeud, ce qui équivaut à une requête HTTP et à une réponse. Pour terminer, je dis à l'instance créée d'écouter sur le port 3000

    Figure IV- 81: Création de fichier serveur.js

    [125]

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [126]

    IV.8.6.1.3 Démarrer le serveur express

    Si tout s'est bien passé, rendez-vous sur localhost : 3000

    Figure IV- 82: Démarrage du serveur express

    Passons à chrome et allons au port localhost 3000, voici notre `Hello Word '

    Figure IV- 83: Exécution du serveur

    Ce fichier est aussi simple que possible lors de la définition d'une application Express. Nous avons créé un objet d'application et l'avons exporté pour utilisation.

    IV.8.6.1.4 Configuration des itinéraires

    Le routage consiste à déterminer comment une application répond à une demande client pour un point de terminaison spécifique, qui est un URI (ou chemin) et une méthode de demande HTTP spécifique (GET, POST, etc.).

    § L'URI (ou chemin) de la demande que nous voulons capturer.

    § Une fonction de gestionnaire (qui accepte un objet de demande et de réponse comme arguments).

    IV.8.6.1.5 Quelle méthode HTTP devrions-nous utiliser ?

    Lors de la construction d'une API REST, chaque méthode HTTP correspond à une action contre une ressource servie par l'API.

    § GET : récupérer l'objet d'une ressource particulière ou répertorier tous les objets

    § POST : créer un nouvel objet de ressource

    § PATCH : effectuer une mise à jour partielle de l'objet d'une ressource particulière

    § PUT : écrase complètement l'objet d'une ressource particulière

    § DELETE : supprime l'objet d'une ressource particulière

    Nous pouvons commencer à définir notre API en spécifiant les itinéraires pour une seule ressource.

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [127]

    IV.8.6.2 Construire les fondations d'API

    Dans cette section, nous allons continuer à construire notre API blockchain. Puis nous allons commencer par construire les trois points de terminaison suivants dans notre API :

    § Le premier point de terminaison est / blockchain, ce qui nous permet d'aller chercher notre blockchain entière afin que nous puissions regarder les données qui s'y trouvent.

    § Le deuxième point de terminaison est / transaction, qui nous permet de créer une nouvelle transaction.

    § Le troisième critère est / le mine, qui nous permettent d'exploiter un nouveau bloc en utilisant la méthode ProofOfWork que nous avons faite dans la dernière section.

    Dans le fichier api.js, définissons ces points de terminaison comme suit :

    Figure IV- 84: Interface d'applications Blockchain

    Maintenant, une autre chose que nous voulons faire est apportez quelques modifications à la méthode listen :

    app.listen(3000, function(){console.log('listening on port 3000...') ;

     

    À l'intérieur de cette fonction, nous allons simplement imprimer l'écoute sur la chaîne du port 3000. La raison pour laquelle nous faire est juste pour que lorsque notre port est en cours d'exécution, nous verrons ce texte. Allons allez sur notre terminal et on lance notre fichier api.js encore :

    Comme nous pouvons le voir, la capture d'écran précédente nous montre que nous écoutons le port 3000. Chaque fois que nous voyons ce texte, nous savons que, nos serveurs fonctionnent.

    IV.8.6.2.1 Installation de Postman et de l'analyseur de corps

    La première chose qui nous va faire est d'installer un nouveau package appeler nodemon. Dans notre répertoire programmation_BC dans notre terminal, nous écrirons la commande suivante :

    [128]

    #npm i nodemon --save

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    Après cela, nous apportons une modification dans l'un de nos fichiers et l'enregistrons. Cette bibliothèque nodemon redémarrer automatiquement notre serveur pour nous, afin que nous ne devions pas aller et venir du terminal à notre code pour redémarrer le serveur chaque fois que nous faisons un changement.

    Donc, nous allons ouvrir notre fichier package.json. Où il est écrit "scripts", nous allons ajouter un nouveau script :

    Figure IV- 85: Automatisation de ce processus

    Chaque fois que l'un de ces fichiers JS sont modifiés et enregistrés, nous voulons nodemon pour redémarrer notre fichier dev/api.js pour nous. Sauvegarder le fichier package.json. Maintenant, chaque fois que nous faisons un changement à l'intérieur de notre dossier de développement et l'enregistrer, le serveur se redémarrera tous seul. Testons cela.

    Allons à notre terminal. Notre serveur devrait maintenant utiliser nodemon après cette commande

    Figure IV- 86: Exécution de nodemon

    Nous verrons que notre serveur redémarre tous seul, on va faire une petite modification sur le texte Hello world

    app.get('/', function (req, res) {res.send('Hello World!!!'); });

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [129]

    Ceci est juste un outil que nous utilisons pour rendre le développement un peu plus facile pour nous.

    Maintenant, un autre outil que nous voulons utiliser est appelé Postman. L'outil Postman nous permet d'appeler n'importe quels points de terminaison, ainsi que d'envoyer des données à ces points de terminaison avec nos demandes.

    IV.8.6.2.2 L'utilisation de Postman

    Téléchargez l'application. Une fois que nous avons téléchargé l'application, nous pouvons effectuer un petit essai de la façon dont nous pouvons utiliser cette application Postman pour atteindre notre point de terminaison / transaction.

    Pour tester que le point de terminaison / transaction est travailler, renvoyons quelque chose le résultat. Dans notre point de terminaison / transaction, nous avons ajouté la ligne suivante

    app.post('/transaction', function(req,res) {res.send('It works!!!');

     

    Et maintenant, quand nous atteignons ce point, nous devrions obtenir le texte It works!!! Cliquons sur Envoyer et nous obtiendrons la sortie, comme indiqué dans la capture d'écran suivante :

    Figure IV- 87: Tester le point de terminaison / transaction

    Maintenant, la plupart du temps, nous frappons un message dans notre API, nous allons vouloir lui envoyer des données. Par exemple, lorsque nous atteignons le endpoint / transaction, nous souhaitons créer une nouvelle transaction. Par conséquent, nous devons envoyer les données de transaction, telles que le montant de la transaction, l'expéditeur et le destinataire. Nous pouvons le faire en utilisant Postman, et c'est plus simple. Ce que nous allons faire ici, c'est envoyer des informations dans le corps de notre demande de publication. Vous pouvez le faire en cliquant sur l'onglet Corps comme le montre la figure suivante :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [130]

    Figure IV- 88: Envoi des données de transaction à partir du postman

    Nous pouvons également voir que nous avons fait un JSON objet et y mettre des données. On a ajouté le montant comme 10 bitcoins, le l'adresse de l'expéditeur et l'adresse du destinataire.

    Pour tester si nous recevons ou non toutes ces informations à l'intérieur de notre endpoint, nous allons écrire l'ensemble du corps de la demande. Le req.body est simplement l'information que nous avons créée dans l'objet JSON:

    Figure IV- 89: Configuration de req.body

    Maintenant, pour que $ {req.body.amount} fonctionne, nous besoin d'installer une autre bibliothèque afin de accéder à ces informations. Revenons en notre terminal ; nous allons quitter le processus et nous allons installer un package appeler body-parser :

    Figure IV- 90: Installation de body-parser

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [131]

    Maintenant, redémarrons notre serveur avec npm start. Lorsqu'il s'agit d'utiliser l'analyseur de corps, nous voulons simplement l'importer en haut de notre fichier après la ligne où nous application importée.

    Figure IV- 91: Importation de fichier body-parser

    Maintenant que nous utilisons l'analyseur corporel, nous devrait pouvoir accéder au montant. Enregistrons le fichier api.js et essayons d'envoyer la demande.

    Figure IV- 92: Envoi de la demande

    Ça a marché ! Nous avons renvoyé la chaîne, qui indique que le montant de la transaction est 10 bitcoins. Dans notre terminal, nous pouvons voir que l'ensemble informations concernant le montant, l'expéditeur, et le destinataire s'affiche :

    Figure IV- 93: Réception de la chaine envoyée

    IV.8.6.2.3 Construire le /blockchain endpoint

    Dans cette section, nous allons interagir avec notre endpoint / blockchain. Cela signifie que nous devra importer notre blockchain de notre Fichier blockchain.js comme ça :

    Figure IV- 94: Importation de fichier blockchain.js

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [132]

    Tout ce que ce endpoint va faire est de renvoyer toute notre blockchain à celui qui a appelé ce point de terminaison. Pour ce faire, nous allons ajouter une ligne qui enverra la réponse :

    Figure IV- 95: Renvoie de la blockchain

    Croyez-le ou non, c'est tout ce que nous allons faire pour ce endpoint.

    § Test de /blockchain endpoint :

    Maintenant, nous pouvons tester si ce endpoint fonctionne en l'utilisant dans notre navigateur :

    Figure IV- 96: Récupération de la chaine blockchain Comme nous pouvons le voir, nous récupérons notre blockchain.

    IV.8.6.2.4 Construire la /transaction endpoint

    Dans notre / transaction endpoint, nous allons ajouter la ligne suivante :

    Figure IV- 97: Créer un nouvel objet de ressource s'appelle transaction

    Le résultat sera enregistré dans blockIndex, et c'est ce que nous allons renvoyer à celui qui appelle ce point de terminaison. Nous vous le renverrons sous forme de note : Le résultat sera enregistré dans blockIndex, et c'est ce que nous allons renvoyer à celui qui appelle ce point de terminaison. Nous vous le renverrons sous forme de note.

    Comme vous pouvez le voir, la note nous indiquera à quel bloc la transaction sera ajoutée. Nous avons utilisé l'interpolation de chaîne pour passer le valeur blockIndex. Enregistrons ce fichier et testons ce point de terminaison à l'aide de Postman.

    § Test de /transaction endpoint :

    Passons maintenant à Postman et appliquons des paramètres similaires à ceux que nous avons définis précédemment :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [133]

    Figure IV- 98: Création des données Testons ce point de terminaison :

    Figure IV- 99: Test du point de terminaison /transaction

    Comme nous pouvons le voir, lorsque nous avons cliqué sur Envoyer bouton sur Postman, nous avons obtenu la sortie La transaction sera ajoutée dans le bloc 2. La raison pour laquelle nous avons le bloc 2 ici est qu'un bloc avait déjà été créé lorsque nous avons lancé notre blockchain, qui a créé la genèse bloquer. Par conséquent, cette transaction a ajouté au bloc 2.

    Une autre façon que nous pouvons tester pour nous assurer que ce point de terminaison a fonctionné correctement est en appuyant sur notre / blockchain endpoint.

    Figure IV- 100: Réception de la chaine dans le navigateur

    Comme nous pouvons le voir, l'objet entier est notre tout blockchain - la première partie est notre chaîne qui a le bloc de genèse, et la deuxième partie est notre transaction en attente, que nous venons d'établi. Notre / transaction endpoint fonctionne à la perfection.

    [134]

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    IV.8.6.2.5 Construire /mine endpoint

    Construisons le point final pour notre API blockchain : le point final de la mine, cela minez et créez un nouveau bloc :

    Figure IV- 101: Construire /mine endpoint

    Ce qui se passe ici est joli impressionnant. Comme nous pouvons le voir, il y a beaucoup de calculs différents qui entrent dans la création de ce nouveau bloc, et nous sommes en mesure de faire tous ces calculs en utilisant notre structure de données blockchain. Il s'agit d'une structure de données assez puissante, et notre blockchain peut désormais exploiter des nouveaux blocs en utilisant proofOfWork.

    Nous allons également faire de notre récompense 12,5 bitcoins. En tant qu'adresse d'expéditeur, nous avons mis la valeur 00. De cette façon, chaque fois nous examinons les transactions sur notre réseau, nous savons que si une transaction est fabriquée à partir de l'adresse 00, c'est une récompense minière. Maintenant, tout ce dont nous avons besoin est l'adresse d'un destinataire, nodeAddress. Nous devons envoyer 12,5 bitcoins à celui qui a extrait un nouveau bloc - mais comment on trouve ça ? Eh bien, nous allons envoyer cette récompense au noeud actuel que nous sommes sur, qui est tout ce fichier API que nous sommes travaillé sur. Nous pouvons traiter cette API entière comme noeud de réseau dans la blockchain bitcoin.

    Pour créer une adresse pour ce noeud, nous sommes va importer une nouvelle bibliothèque appelée uuid en utilisant notre terminal :

    #npm i uuid

    Importons maintenant notre nouvelle bibliothèque uuid aux sections supérieures de notre fichier api.js :

    Figure IV- 102: Importation de la bibliothèque UUID

    Cette bibliothèque crée une chaîne aléatoire pour nous, et nous allons utiliser cette chaîne comme adresse de ce noeud de réseau. NodeAddress que nous allons obtenir est aléatoire chaîne qui est garantie d'être unique, car nous ne voulons pas avoir deux noeuds avec la même adresse.

    Nous testerons maintenant notre / mine endpoint, ainsi que notre / transaction et / blockchain, pour vous assurer qu'ils tous fonctionnent et interagissent correctement.

    § Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    Test de /mine endpoint :

    Ouvrons un onglet et frappons notre / mine endpoint. Cela devrait exploiter et créer un nouveau bloqué pour nous :

    [135]

    Figure IV- 103: Test de /mine endpoint

    Nous avons obtenu notre note qui dit que le nouveau bloc a été extrait avec succès. Nous avons également récupéré notre nouveau bloc et nous pouvons voir toutes les données qui se trouvent sur notre bloc. Il contient un hachage, et il a également le hachage du bloc précédent, qui est le bloc de genèse, et une transaction en elle. Vous pourriez penser, nous n'avons pas créé une transaction, alors d'où vient cette transaction viens d'où ? Cette transaction est en fait la récompense minière que nous mettons dans notre endpoint, qui a la récompense minière de 12,5 bitcoins transaction. Il ressemble à notre point d'extrémité minier a bien fonctionné.

    § Test de /blockchain endpoint :

    Pour tester et nous assurer que nous avons créé ce nouveau bloc, nous pouvons retourner à notre / blockchain endpoint et actualisons la page :

    Figure IV- 104: Test de /blockchain endpoint

    Ça a marché. Nous avons maintenant deux blocs dans notre chaîne : l'un est le bloc de genèse et l'autre est celui que nous venons de créer. Le deuxième bloc a également la transaction en elle.

    Minons des autres blocs pour tester cela à nouveau. Rendez-vous sur notre endpoint / mine et actualisez la page à nouveau :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [136]

    Figure IV- 105: Miner plusieurs blocs

    Comme nous le voyez, nous avons les trois blocs. Le bloc 3 est celui que nous venons de créer, et il contient notre transaction de récompense minière. Une plus de chose à noter est que notre précédent BlockHash s'aligne réellement avec le hachage de notre bloc 2. C'est aider à sécuriser notre blockchain.

    § Test de /transaction endpoint :

    Créons maintenant quelques transactions avec notre / point de terminaison de transaction. Pour cela, rendez-vous sur Postman, assurez-vous que les paramètres sont les comme précédemment, et procédez comme suit changements :

    Figure IV- 106: Test de /transaction endpoint

    Cette transaction a été ajoutée à bloc 4 parce que nous avons déjà trois blocs dans notre chaîne. Maintenant, allons-y et récupérons notre toute la blockchain à nouveau. Cette fois, nous devrions attendre à obtenir la même blockchain et deux transactions en attente que nous venons d'établi. Rafraîchissons la page et voyons la production :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    Figure IV- 107: Exécution du Test de /transaction endpoint

    On remarque que celui-ci comporte trois blocs et trois transactions en attente. Maintenant, si nous nous dirigeons vers notre point d'extrémité / mine et actualiser le page, ces trois transactions en attente seront ajoutées au bloc 4 :

    Figure IV- 108: Minage réussi

    Maintenant, si nous revenons à notre / endpoint blockchain et le rafraîchir, nous verrons que les deux transactions en attente ont disparu et qu'ils ont été ajoutés au bloc 4 :

    Figure IV- 109: Fin de minage

    [137]

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [138]

    Comme nous pouvons le voir, le bloc 4 a les trois transactions, et on a une seule transaction en attente. Cela a bien fonctionné. Si on mine un autre bloc la transaction en attente disparu et qu'il a été ajouté au bloc 5.

    IV.8.6.3 Création d'un réseau décentralisé

    La façon dont notre blockchain fonctionne en ce moment est que nous avons une blockchain unique, et le seul moyen d'y accéder est via l'API. Ce serveur est très centralisé, ce qui n'est pas avantageux car l'API est en contrôle total de la blockchain et des données qui s'y ajoute. Toute la technologie blockchain est hébergée sur un réseau décentralisé.

    Nous allons construire un réseau de blockchain décentralisé en créant diverses instances de l'API. Chacune de ces instances de l'API va être un noeud de réseau dans notre réseau de blockchain. Tous ces noeuds fonctionneront ensemble pour héberger notre blockchain. Dans cette partie de programmation, nous couvrirons les points suivants :

    § Apprendre à créer et tester plusieurs noeuds.

    § Ajout de currentNodeUrl à notre réseau.

    § Ajout des nouveaux noeuds finaux pour le réseau décentralisé.

    § Construction / node-and-broadcast-node endpoint.

    § Création et test / register-nodeendpoint.

    § Ajout et test du / register-nodes-bulk endpoint.

    Donc, commençons par créer notre réseau décentralisé.

    IV.8.6.3.1 Création de plusieurs noeuds et l'ajout du currentNodeUrl

    La première chose que nous devrons faire pour créer notre réseau décentralisé est d'apporter des modifications à notre fichier api.js.

    Etape01 : Pour configurer le réseau décentralisé, nous devrons exécuter le fichier api.js plusieurs fois. Chaque fois que nous exécutons le fichier, nous voulons qu'il agisse comme un noeud de réseau. Faisons-le en exécutant le fichier sur différents ports chaque fois que nous exécutons. Nous devons faire un port variable. Pour ce faire, nous ajoutons la ligne suivante au début du code dans notre dev / api.js :

    #const port = process.argv[2];

    Etape02 : Accédez au fichier package.json et apportez des modifications à la commande de démarrage. Ce que nous allons faire ici, c'est aller à la fin de notre commande et passer une variable pour le numéro de port sur lequel nous voulons exécuter le noeud de réseau. Dans notre exemple, nous voulons exécuter notre

    #"start": "nodemon --watch dev -e js dev/networkNode.js 3001"

    Noeud de réseau pour qu'il s'exécute sur le port numéro 3001. Par conséquent, passez 3001 comme variable à la fin de la commande de démarrage :

    Quelle est la variable process.argv ? Cette variable fait simplement référence à la commande de démarrage que nous exécutons pour démarrer notre serveur. La première et

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [139]

    le deuxième élément de la commande sont constitués de « nodemon --watch dev -e js dev/networkNode.js », et le troisième élément de la commande est la variable « 3001 ».

    Etape03 : Nous voulons utiliser la variable de port. Par conséquent, dans le fichier dev / api.js, allons en bas, où nous avons mentionné le code d'écoute du port 3000 et faisons la modification suivante :

    #app.listen(port, function() { console.log(`Listening on port ${port}...`); });

     

    Etape04 : Exécutons le fichier api.js. Dans la fenêtre du terminal, saisissez npm start. En tapant cette commande, le serveur doit commencez à écouter le port 3001, comme nous pouvons l'observer dans la capture d'écran suivante :

    Figure IV- 110: Exécution de npm start

    IV.8.6.3.2 Exécution de multiples noeuds d'api.js

    La prochaine chose que nous voudrons faire est d'exécuter plusieurs noeuds de api.js. Pour cela, nous allons ajouter quelques commandes supplémentaires au fichier package.json.

    Etape01 : Pour commencer, dans le fichier package.json, nous devons changer la commande "start" en "node_1". Maintenant, lorsque nous exécutons cette commande, il va démarrer notre premier noeud, qui est sur le port 3001.

    Etape02 : Au lieu de taper npm start, tapez npm run node_1. Avec l'aide de cette commande, exécutez notre node_1 sur le port 3001.

    Etape03 : Dans notre package.json, en tant que troisième paramètre de chacune de nos commandes, nous allons ajouter l'URL du noeud. Par conséquent, notre premier noeud a L'URL http: // localhost: 3001. Il est probable que pour notre deuxième noeud, http: // localhost: 3002. De même, vous pouvez ajouter URL des noeuds restants, comme indiqué dans la capture d'écran suivante :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [140]

    Figure IV- 111: Exécution de multiples noeuds d'api.js

    Etape04 : Pour notre réseau décentralisé, nous voulons exécuter deux ou trois de ces noeuds en même temps. Pour faire ça, dupliquons la commande "node_1" : "nodemon -watch dev -e js dev / api.js 3001 http://localhost:3001" quatre fois et ensuite modifions ces commandes comme montré dans la capture d'écran suivante :

    Figure IV- 112: Modifications dans le fichier package.json

    Nous avons maintenant un noeud de réseau en cours d'exécution sur le port 3001 et l'autre noeud de réseau en cours d'exécution sur le port 3002. Suivez un processus similaire pour exécuter les noeuds de réseau restants sur les ports restants.

    IV.9.6.3.3 Test des multiples noeuds

    Maintenant, nous pourrions avoir tous les cinq noeuds du réseau en cours d'exécution. Ce que nous avons actuellement cinq noeuds de notre API en cours d'exécution, mais elles ne sont pas connectées entre eux. Pour vérifier que ces noeuds de réseau ne sont pas connectés, nous pouvons effectuer quelques tests :

    Etape01 : La première transaction que nous voulons faire va être à notre noeud de réseau, qui est hébergé sur le port 3001. Alors, allons-y dans le corps et tapons les données de transaction, comme indiqué dans la capture d'écran suivante :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [141]

    Figure IV- 113: Configuration des données de la transaction

    Maintenant que nous avons envoyé la transaction donnée aux noeuds du réseau, vérifions-le. Allez dans le navigateur et allez sur localhost : 3001 / blockchain, puis appuyez sur Entrée. On aura à observer un similaire réponse, comme indiqué dans la suite capture d'écran :

    Figure IV- 114: Récupération de la chaine de bloc

    De la capture d'écran précédente, nous pouvons observer que nous avons une seule transaction en attente pour 3001 bitcoins. C'est l'une des transactions que nous venons d'ajoutée.

    Etape02 : Maintenant, dans l'autre onglet, si nous allons à localhost : 3002 / blockchain, nous verrons que aucune transaction en attente, car nous n'avons envoyé aucune transaction à ce noeud de réseau :

    Figure IV- 115: Création d'une transaction en attente

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [142]

    Etape03 : on fait les mêmes démarches de l'etape1 pour la création d'une transaction sur localhost :3003, Ensuite, si nous allons sur localhost: 3003 / blockchain, nous verrons que nous avons une transaction ici pour un montant de 3003 bitcoins

    Si nous devions aller à localhost : 3004 / blockchain et localhost : 3005 / blockchain, il ne devrait pas y avoir les transactions là-bas que nous n'avons envoyé aucune transaction vers ces noeuds de réseau.

    IV.8.6.3.4 L'ajoute d'un currentNodeUrl

    Passons maintenant au fichier blockchain.js, et à la partie où nous définissons le const, nous allons taper ce qui suit :

    #constcurrentNodeUrl = process.argv[3];

    Avec cette commande, nous devrions avoir accès à l'URL du noeud actuel en utilisant la variable currentNodeUrl.

    Maintenant, nous devons assigner le currentNodeUrl à notre structure de données de la blockchain. Nous le faisons en tapant la ligne de code suivante à l'intérieur de notre fonction Blockchain {} :

    #this.networkNodes = [];

    # this.currentNodeUrl = currentNodeUrl;

    Dans les autres sections, nous remplirons ce tableau avec les URL des noeuds de tous les autres noeuds de notre réseau afin que chaque noeud soit au courant de tous les autres noeuds à l'intérieur de notre réseau blockchain.

    IV.8.6.3.5 Aperçu des nouveaux endpoints

    IV.8.6.3.5.1 Création de / register-and broadcast-nodeendpoint

    Le / registre-node sera le prochain point de terminaison que nous ajouterons à notre réseau. Ceci est défini comme suit :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [143]

    Figure IV- 116: Configuration du register node

    Nous allons faire cette demande en important une nouvelle bibliothèque. Allons-y vers le terminal pour importer la bibliothèque. Dans le terminal, tapons la commande suivante :

    Figure IV- 117: Importation de la bibliothèque request-promise

    Jusqu'à présent, nous avons enregistré le nouveau noeud avec le noeud de réseau actuel sur lequel nous sommes et nous avons diffusé le nouveau noeud à tous les autres noeuds de notre réseau. La dernière étape que nous avons effectuée à l'intérieur de ce point de terminaison est de renvoyer une réponse à celui qui l'a appelé.

    o Explication comment le registre et noeud de diffusion fonctions :

    Nous voulons enregistrer un nouveau noeud avec notre réseau, le noeud final d'enregistrement et de diffusion est le premier point que nous voulons atteindre. La première chose qui nous faisons à l'intérieur de ce point de terminaison prend le newNodeUrl et l'enregistre avec le noeud actuel en le poussant dans notre tableau networkNodes.

    La prochaine étape que nous devons faire est de diffuser ce newNodeUrl au reste des noeuds de notre réseau. Nous le faisons à l'intérieur de la boucle forEach. Tout ce qui se passe à l'intérieur de cette boucle est que nous faisons une demande à chacun des autres noeuds de notre réseau. Nous faisons cette demande au point d'extrémité de noeud de registre. Une fois toutes ces demandes terminées sans aucune erreur, nous pouvons supposer que le newNodeUrl a été enregistré avec succès avec tous nos autres noeuds de réseau.

    IV.8.6.3.5.2 Construire et tester le / register-nodeendpoint

    Maintenant que nous avons construit le / register-and -broadcast-node final, il est temps de passer à certaines choses qui sont un peu moins complexes. Dans cette section, commençons la construction du register-nodeendpoint. Ça va être très simple par rapport au point final que nous avons construit dans la partie précédente.

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [144]

    Ce noeud final registre-node est l'endroit où chaque noeud dans le réseau va recevoir la diffusion qui est envoyée par le endpointregister-and-broadcast-node ; ce point registre-node doit faire s'inscrire le nouveau noeud avec le noeud qui reçoit la demande. Pour commencer à créer le endpointregister-node, procédons comme suit :

    Figure IV- 118: Construit le / register-and -broadcast-node

    § Test de register-node

    Testons-le / register-nodeendpoint pour s'assurer qu'il fonctionne correctement et pour mieux comprendre son fonctionnement.

    § Installation de la bibliothèque request

    Maintenant, pour tester le endpoint que nous venons de créer, il est nécessaire d'installer la bibliothèque request selon la version de la bibliothèque de request-promise disponible. Pour installer la bibliothèque de requêtes, allons simplement sur notre terminal, et à l'intérieur nous exécutez la commande suivante :

    Figure IV- 119: Installation de la bibliothèque request

    § Test

    Pour commencer, nous allons taper http: // localhost: 3001 / register-node dans la barre d'adresse, comme illustre la capture d'écran ci-dessous :

    Figure IV- 120: Test de register-node

    Ensuite, à l'intérieur de la zone de texte, créons un objet et ajoutons le code suivant :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [145]

    Figure IV- 121: Ajout de node url

    Pour vérifier cela, allons à Postman et cliquons sur le bouton Envoyer. Nous obtiendrons la réponse Nouveau noeud enregistré avec succès. Maintenant, passons à notre navigateur et tapons localho st: 3001 / blockchain dans la barre d'adresse, puis appuyons nous sur Entrée. Nous verrons une sortie similaire à ce qui est montré dans la capture d'écran suivante :

    Figure IV- 122: Obtention de la réponse Nouveau noeud enregistré avec succès

    Puisque nous venions d'enregistrer notre deuxième noeud avec notre noeud actuel sur localhost: 3001, nous avons l'URL de notre deuxième noeud à l'intérieur de cet tableau.

    IV.8.6.3.5.3 Construire le / register-nodes-bulk endpoint

    Le prochain endpoint que nous allons construire s'appelle register-nodes-bulk. Ces trois points sur lesquels nous avons travaillé pour créer notre réseau de blockchain décentralisé.

    Le register-nodes-bulk accepte des données contenant les URL de chaque noeud déjà présent dans le réseau. Ensuite, nous allons simplement enregistrer tous ces noeuds de réseau avec le nouveau noeud. Le nouveau noeud est le noeud sur lequel le register-nodes-bulk est atteint.

    Pour créer le endpointregister-nodes-bulk, nous devrons faire l'hypothèse que toutes les URL de noeuds qui sont actuellement dans notre réseau sont transmises en tant que données et que nous pouvons les accéder via la propriété req.body.allNetworkNodes. C'est parce que nous envoyons les données allNetworkNodes lorsque nous appelons cela

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [146]

    endpoint dans le bloc Promise.all (regNodesPromise). Ici, nous envoyons allNetworkNodes au endpointregister-nodes-bulk. Cela nous donnera accès aux données allNetworkNodes à l'intérieur du endpoint. Ajoutons la ligne de code suivante à notre endpointregister-nodes-bulk.

    Figure IV- 123: Construire le / register-nodes-bulk endpoint

    Fondamentalement, tout ce que nous déclarons dans la déclaration if est que pendant que nous parcourons chaque noeud de réseau que nous ajoutons, si ce noeud n'est pas déjà présent dans notre réseau de noeuds de réseau et si cela le noeud n'est pas l'URL de notre noeud actuel, alors nous voulons ajouter le networkNodeUrl à notre tableau networkNodes. Une fois que nous avons terminé la boucle forEach, nous aurons enregistré tous les noeuds du réseau qui sont déjà présents à l'intérieur de notre réseau blockchain. Tout ce que nous avons à faire à ce stade est de renvoyer une réponse, comme suit.

    § Test des / register-nodes-bulk :

    Nous allons tester notre register-nodes-bulk endpoint pour nous assurer que cela fonctionne correctement. Cela nous permettra de comprendre comment cela fonctionne :

    Etape01 : Nous allons diriger vers Postman. Ici, nous allons tapper le localhost: 3001 / register-nodes-bulk. Lorsque nous testons ce endpoint, nous nous attendons à recevoir des données, qui est le tableau allNetworkNodes.

    Etape02 : dans l'onglet corps de Postman, avec l'option raw et JSON (application / json) format sélectionné pour le texte, nous ajoutons les lignes de code suivantes au corps :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [147]

    Figure IV- 124: Test des / register-nodes-bulk

    Lorsque nous exécutons cette demande maintenant, nous devrons enregistrer ces trois URL avec notre noeud qui s'exécute localhost: 3001. Voyons voir si ça marche. Cliquons sur le bouton Send et nous recevrons une réponse qui indique l'enregistrement en bulk réussi comme le montre la capture d'écran suivante :

    Figure IV- 125: Recevoir une réponse qui indique l'enregistrement en bulk réussi

    Maintenant, si nous nous dirigeons vers le navigateur, nous pouvons vérifier que cela a fonctionné. Dans la barre d'adresse, tapons localhost: 3001 / blockchain puis appuyons sur Entrée. Nous arriverons à observer les trois URL qui ont été ajoutées à l'intérieur du tableau networkNodes, car ce sont enregistrées en bulk :

    Chapitre IV Sécuriser un réseau bancaire avec la blockchain

    [148]

    Figure IV- 126: Ajout réussie de trois url

    Donc, il ressemble que notre endpointregister-node-bulk fonctionne comme il se doit.

    IV.9 Conclusion

    Dans ce chapitre, nous avons commencé par construire un réseau bancaire avec un routage amélioré, sécurisé et rendant le trafic plus efficace. Pour répondre à ce besoin de communication sécurisé, nous avons utilisé un réseau privé virtuel (VPN) avec ses différentes topologies ainsi que les détails sur le protocole IPsec, sans oublier le GRE tunnel qui est un des mécanismes de tunneling. Le trafic qui traverse ce tunnel doit être protégé lors de l'échange de la monnaie. Également dans ce chapitre, nous avons également appris à construire la fonction constructeur, puis nous sommes passés à la création de méthodes étonnantes telles que createNewBlock, creatNewTransaction, getLastBlock, etc. Nous avons ensuite découvert la méthode de hachage, le hachage SHA256, et créé une méthode pour générer un hachage pour nos données de bloc. Nous avons également appris ce qu'est une preuve de travail et comment cela fonctionne. Dans ce chapitre, nous avons également appris à tester les différentes méthodes que nous avons créées et vérifier si elles fonctionnent comme prévu. Dans la deuxième partie ; nous avons appris à configurer une blockchain. Puis, nous avons appris à configurer une blockchain Express.js dans notre projet, ainsi que comment utilisez-le pour construire notre API / serveur. Ensuite nous installé Postman et compris comment utilisez-le pour tester nos endpoints. Après cela, nous passé à construire divers points d'extrémité de notre serveur et testé ceux pour vérifier si ou non, ils fonctionnaient correctement. Dans la prochaine partie, nous allons créer un réseau de noeuds ou réseau décentralisé pour héberger notre blockchain, tout comme ceux qui sont hébergés dans le monde réel. Jusqu'à présent, vous avez accompli beaucoup de choses dans ce Projet Fin d'étude. Nous avons créé une blockchain décentralisée réseau qui fonctionne actuellement sur cinq noeuds, et nous avons créé la fonctionnalité pour synchroniser l'ensemble du réseau, afin que tous les noeuds ont exactement les mêmes données.

    [149]

    Conclusion générale

    Conclusion générale

    Avec la façon dont la technologie blockchain prend rapidement le contrôle d'un certain nombre de nos secteurs existants en tant que moyen de transaction actif et plus préférable, il n'est pas difficile d'imaginer un avenir lorsque la technologie blockchain régnerait sur tous les autres moyens de contrat. En fait, l'avenir de blockchain est extrêmement brillant non seulement dans le secteur bancaire et financier, mais dans tous les autres secteurs

    imaginables dans la société.

    La technologie de la blockchain est en constante évolution ; chaque fois qu'un nouveau besoin apparaît, ce concept change pour répondre à ce besoin. Ceci est encore un autre signe que blockchain a la capacité de façonner ses idéaux pour répondre aux besoins de

    l'avenir, et a une brillante opportunité de le faire dans
    les prochaines années. La technologie de la blockchain est parfois, et à juste titre, appelée la « seconde venue d'Internet ». Mais pour le profane, la blockchain pourrait ne ressembler qu'à un grand livre géant, qui prend en compte chaque transaction effectuée dans le monde entier. Mais comme vous pouvez le voir maintenant, cela peut être bien plus.

    Dans le secteur bancaire, bien sûr, la technologie blockchain est sur le point d'apporter d'énormes changements très bientôt. Les experts estiment qu'avant longtemps, de nombreuses grandes banques et institutions financières commenceront à adopter la Blockchain au lieu d'utiliser la monnaie traditionnelle. Lorsque cela se produira, les systèmes bancaires mondiaux changeront pour toujours ; les cyber-risques en cas de transferts d'argent internationaux seront réduits, et chaque transaction deviendra plus rapide et sans effort.

    L'étude et la conception d'un réseau bancaire sécurisé par la technologie blockchain a fait l'objet de notre travail de recherche dans le cadre de ce projet de fin d'études. Pour cela, nous nous sommes intéressés, aux fondements même de cette technologie, en analysant les principes essentiels qui la régissent. Ensuite, nous avons fait un zoom sur l'industrie bancaire, pour mieux constater comment cette technologie promettait de remettre en cause le mode de fonctionnement des banques et nous avons vu comment celles-ci se sont unies pour contrecarrer cette menace.

    Cette technologie a permis aux banques de se rapprocher via la formation de consortiums. Les objectifs de ces associations étaient multiples. Il s'agissait en premier lieu de créer des synergies communes afin de faire face à l'arrivée de nouveaux acteurs qui promettaient de mettre à mal le modèle bancaire en supprimant de nombreux intermédiaires. Dans un second temps l'objectif des consortiums était de tirer profit de ces applications en les déployant au sein de leurs structures et nous avons vu que de nombreux établissements ont d'ores et déjà pris de l'avance sur le sujet.

    Aussi, nous avons parlé des formidables opportunités que représente la blockchain pour les banques à savoir : des économies de temps, économies de coût, réductions des risques réglementaires et enfin, une plus grande traçabilité des opérations laissant notamment espérer à terme la mort du blanchiment d'argent.

    [150]

    Conclusion générale

    Ainsi, les perspectives futures sont dans un premier temps l'installation du GNS3 parce que d'habitude si on veut configurer un équipement réseaux on utilise command line Soit putty ou bien secure shell, mais maintenant on peut aussi faire la configuration en utilisant Python Script au lieu de lancer cli on crée notre propre Python script, et dans seconds temps programmer la blockchain avec langage python pour vous pouvez voir réellement l'application.

    [151]

    Bibliographie

    Bibliographie

    [1] https://www.youtube.com/watch?v=ZbHLNinXy9E&feature=youtu.bedate #10/01/2020

    [2] https://www.hbrfrance.fr/chroniques-experts/2018/05/20131-breve-histoire-de-blockchain/# #10/01/2020

    [3] GANNE, Emmanuelle. Can Blockchainrevolutionize international trade?.Geneva : World Trade Organization, 2018.Date 10/01/2020

    [4] https://www.memoireonline.com/10/17/10113/L-impact-des-technologies-de-l-information-et-de-la-communication-sur-l-entreprise.html #10/02/2020

    [5] https://www.pwc.ru/ru/publications/blockchain.html #10/02/2020

    [6] https://blockchainfrance.net/decouvrir-la-blockchain/c-est-quoi-la-blockchain/ #10/02/2020

    [7] Crosby, Micheal; Nachiappan; Pattanayak, Pradhan; Verma, Sanjeev; Kalyanaraman, Vignesh, «Blockchain Technology: Beyond Bitcoin,» Berkeley, CA: SutardjaCenter for Entrepreneurship & Technology, University of California, http://scet.berkeley.edu/wp-content/uploads/BlokchinPaper.pdf , October 16.2015

    [8] http://m.qukuaiwang.com.cn/news/4816.html#12/02/2020

    [9] https://www.blocktempo.com/understand-structure-of-blockchain-bitcoin/#12/02/2020 [10] https://blockgeeks.com/guides/fr/contrats-intelligents #12/02/2020

    [11] https://blog.toright.com/posts/5981/pow-pos-dpos-consensus-intro.html #12/02/2020

    [12] https://www.chainnews.com/articles/604126127022.htm #12/02/2020

    [13] https://moussakayre.digital/quest-ce-que-la-technologie-blockchain-un-guide-pour-debutants/ [14] https://www.journaldunet.com/economie/finance/1195520-blockchain-avril-2019/ [15] http://www.wikiwai.com/2020/02/12/comprehension-et-conception-de-services-avec-la-blockchain-bitcoin-ethereum/ #13/02/2020 [16] http://www.senat.fr/rap/r17-584/r17-584mono.html #13/02/2020

    [17] http://dspace.univ-tlemcen.dz/bitstream/112/9319/1/Partage-de-fichiers-de-pair-a-pair-sur-JXTA.PDF#13/02/2020

    [18] https://www.slideshare.net/AmineHAMOUDA/prsentation-blockchain-v2 #13/02/2020

    [19] https://www.lacircum.com/index.php/fr/la-crypto-monnaie-pour-les-nuls-debutants/6-blockchain-definition-expliquee #13/02/2020

    [20] http://www.planet-libre.org/index.php?post id=19524 #13/02/2020

    [21] https://www.blockchains-expert.com/blockchain-privee-vs-blockchain-publique/ #13/02/2020

    [22] https://cryptoast.fr/blockchain-chaine-de-blocs/ #13/02/2020

    [23] https://solutions.lesechos.fr/tech/c/part-v-blockchain-privee-publique-difference-9229/ #13/02/2020

    [24] https://www.le-vpn.com/fr/cest-quoi-le-vpn-ou-reseau-prive-virtuel/ #13/02/2020

    [25] https://www.cactusvpn.com/fr/beginners-guide-to-vpn/quest-ce-quopenvpn/ #15/02/2020

    [26] https://www.purevpn.fr/quest-ce-quun-vpn/protocoles/ikev2 #15/02/2020

    [27] https://www.cisco.com/c/frca/support/docs/security-vpn/ipsec-negotiation-ike-protocols/14106-how-vpn-works.html #15/02/2020

    [28] https://www.purevpn.fr/quest-ce-quun-vpn/protocoles/sstp #15/02/2020

    [29] https://www.purevpn.fr/quest-ce-quun-vpn/protocoles#15/02/20^ #17/02/2020

    [30] https://www.bbc.com/zhongwen/simp/business-43089926

    [152]

    Bibliographie

    [31] https://www.forbes.com/forbes/2011/0509/technology-psilocybin-bitcoins-gavin-andresen-crypto-currency.html#32af59f0353e

    [32] https://journals.openedition.org/regulation/11489

    [33] https://www.investopedia.com/terms/a/altcoin.asp

    [34] https://fr.cryptonews.com/guides/how-to-get-altcoins.plusieurs%20crypto-

    monnaies%20similaires%20ont%20%C3%A9t%C3%A9%20cr%C3%A9%C3%A9es,%20souvent%20appel%C3%A9 es%20altcoins

    [35] http://finances-et-patrimoine.fr/bourse/la-crypto-monnaie/ [36] http://www.xinhuanet.com//fortune/2017-06/29/c129643337.htm

    [37] https://crypto-monnaie.pro/quest-ce-que-la-crypto-monnaie/

    [38] https://www.capital.fr/entreprises-marches/bitcoin-ethereum-ripple-lavis-de-capital-sur-les-cryptomonnaies-qui-comptent-1278913

    [39] https://coin24.fr/crypto-monnaies/differences-btc-eth/

    [40] https://conseilscrypto.com/cest-quoi-litecoin-ltc/

    [41] https://www.phonandroid.com/bitcoin-vs-ethereum-difference.html

    [42] https://coin24.fr/crypto-monnaies/differences-btc-eth/

    [43] https://coin24.fr/crypto-monnaies/

    [44] LANDAU, J. P. et GENAIS, A. Les crypto-monnaies, rapport au Ministre de l'Économie et des Finances, 4 July. 2018.

    [45] https://www.journaldunet.fr/patrimoine/guide-des-finances-personnelles/1207712-cryptomonnaie/ #18/03/20 13h17

    [46] https://www.futura-sciences.com/tech/definitions/informatique-cryptomonnaie-18278/ #18/03/20 13h23

    [47] https://www.boj.or.jp/announcements/education/oshiete/money/c27.htm/ #18/03/20 14h01

    [48] https://www.supinfo.com/articles/single/10012-cryptomonnaie-fonctionnement-definitions #18/03/20 14h15

    [49] https://www.cafedelabourse.com/archive/article/bitcoins-monnaie-virtuelle-investir-crypto-monnaie

    [50] http://www.synergix.ch/fr/info/news/fintech-lexique-comprendre-univers-blockchain-et-crypto-monnaies

    [51] https://www.investopedia.com/terms/b/blockchain.asp

    [52] https://theinnovationandstrategyblog.com/2018/05/22/levolution-du-contexte-reglementaire-bancaire-amene-les-banques-accelerer-leur-digitalisation-2-2/

    [53] LANDAU, J. P. et GENAIS, A. Les crypto-monnaies, rapport au Ministre de l'Économie et des Finances, 4 July. 2018.

    [54] https://fr.wikipedia.org/wiki/Cryptographie #19/03/2020-19h10

    [55] https://www.clicours.com/cours-cryptographie-les-fondements-de-la-cryptographie/ #19/03/2020-19h40

    [56] https://lipn.univ-paris13.fr/~poinsot/SEC/Chapitre7Printable.pdf #19/03/2020-21h50

    [57] https://www.binance.vision/fr/security/what-is-symmetric-key-cryptography #21/03/20 23h02

    [58] https://waytolearnx.com/2018/07/difference-entre-le-chiffrement-par-bloc-et-le-chiffrement-par-flot.html #21/03/20 23h07

    [59] https://mathworld.wolfram.com/XOR.html #21/03/20 23h41

    [60] https://www.geeksforgeeks.org/data-encryption-standard-des-set-1/ #21/03/20 23h45

    [153]

    Bibliographie

    [61] https://www.comparitech.com/blog/information-security/what-is-aes-encryption/ #21/03/2020-23h56 [62] https://waytolearnx.com/2018/07/difference-entre-des-et-aes.html 22/03/20 00h00 #22/03/2020-00h30

    [63] https://www.frenchweb.fr/petite-histoire-de-la-cryptographie-sur-la-piste-de-la-cryptographie-asymetrique/270507 #22/03/0220-1h20

    [64] https://www.globalsign.fr/fr/centre-information-ssl/cryptographie-cle-publique/#22/03/2020-23h57 [65] https://www.di.ens.fr/~nitulesc/files/crypto3.pdf#22/03/0220-12h10 [66] https://fr.wikipedia.org/wiki/Cryptographieasym%C3%A9trique#22/03/0220-14h15

    [67] Singhal, B., Dhameja, G., & Panda, P. S. (2018). Beginning Blockchain: A Beginner's Guide

    to Building Blockchain Solutions. Apress

    [68] https://www.silicon.fr/hub/malwarebytes-hub/la-signature-electronique-garant-de-lintegrite-de-vos-donnees #22/03/0220-15h20

    [69] https://segmentfault.com/a/1190000012158045 #22/03/0220-15h30

    [70] https://fr.wikipedia.org/wiki/Elliptic curve digital signature algorithm #22/03/0220-17h10

    [71] https://waytolearnx.com/2018/07/difference-entre-le-cryptage-symetrique-et-asymetrique.html #22/03/20 20h27

    [72] https://baike.baidu.com/item/hash/390310 #22/03/20 22h47

    [73] https://fr.wikipedia.org/wiki/Fonctiondehachagecryptographique #22/03/20 22h54

    [74] https://www.md5hashgenerator.com/ #22/03/20 22h57

    [75] https://www.geeksforgeeks.org/sha-1-hash-in-java/ #22/03/20 23h07

    [76] https://www.geeksforgeeks.org/difference-between-md5-and-sha1/ #22/03/20 23h11

    [77] https://fr.wikipedia.org/wiki/Longueur de cl%C3%A9 #22/03/20 23h13

    [78] https://happypeter.github.io/binfo/all-pub #22/03/20 23h23

    [79] https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/246717/ #22/03/20 23h25

    [80] https://hal.archives-ouvertes.fr/hal-01778949/document

    [81] https://www.binance.vision/fr/blockchain/what-are-nodes

    [82] https://www.esds.co.in/blog/everything-need-know-blockchain/#sthash.22bsmU8y.en54I8Ke.dpbs

    [83] https://klmoney.wordpress.com/bitcoin-dissecting-transactions-part-2-building-a-transaction-by-hand/

    [84] https://www.fullstackweekly.com/category/bitcoin/how-does-bitcoin-work-part-3-the-billcoin-transactions

    [85] https://cryptoast.fr/bloc-blockchain-crypto-explication/

    [86] https://fr.wikipedia.org/wiki/Minagedecryptomonnaie

    [87] http://blog.hubwiz.com/2019/01/03/blockchain-7step-miner/ [88] https://siecledigital.fr/2016/10/17/blockchain-mais-qui-sont-les-mineurs/

    [89] https://www.universalis.fr/encyclopedie/reseaux-informatiques/6-securite-dans-les-reseaux/ #16/03/2020-23h23

    [90] http://big5.baike.qianzhan.com/detail/bk 2286e38b.htmll #16/02/2020-23h34

    [91] https://www.pedagogie.ac-aix-marseille.fr/upload/docs/application/pdf/2012-07/formationreseau.pdf #17/03/2020-00h16

    [92] https://www.ionos.fr/digitalguide/serveur/know-how/les-types-de-reseaux-informatiques-a-connaitre/ #17/03/2020-11h57

    [154]

    Bibliographie

    [93] https://fr.qwe.wiki/wiki/Internet #17/03/2020-12h03

    [94] https://fr.wikipedia.org/wiki/Intranet #17/03/2020-12h07

    [95] https://www.journaldunet.fr/web-tech/dictionnaire-du-webmastering/1203385-extranet-definition/ #17/03/2020-12h14

    [96] https://www.supinfo.com/articles/single/7300-differentes-topologies-reseaux#17/03/2020-12h25 [97] http://sadalahsadalah.e-monsite.com/medias/files/chapitre5-telephonie.docx.pdf #17/03/2020-13h55 [98] https://spip.teluq.ca/inf1160/IMG/pdf/inf1160-notionsfondamentales.pdf#17/03/2020- 14h13

    [99] https://www.journaldunet.fr/web-tech/dictionnaire-du-webmastering/1203405-tcp-ip-transmission-control-protocol-internet-protocol-definition-traduction/ #17/03/2020-14h18

    [100] https://www.journaldunet.fr/web-tech/dictionnaire-du-webmastering/1203389-ip-adresse-ip-internet-protocol-definition/ #17/03/2020-14h22

    [101] https://www.ionos.fr/digitalguide/serveur/know-how/quest-ce-que-linternet-protocol-definition-dip/ #17/03/2020-14h26

    [102] https://baike.baidu.com/item/%E8%B7%AF%E7%94%B1%E5%8D%8F%E8%AE%AE #30/08/20-13h20 [103] https://zh.wikipedia.org/wiki/%E8%B7%AF%E7%94%B1%E5%8D%8F%E8%AE%AE #30/08/20-13h31

    [104] https://blog.csdn.net/qq30852577/article/details/79009003 #30/08/20-13h41

    [105] https://www.sohu.com/a/116995737465914 #30/08/20-14h10

    [155]

    Annexe

    Annexe

    Annexe 1 Installation d'Apache

    1. Qu'est-ce qu'Apache :

    Apache est le logiciel de serveur Web le plus populaire. Il permet à un ordinateur d'héberger un ou plusieurs sites Web accessibles sur Internet à l'aide d'un navigateur Web. La popularité d'Apache sur le marché de l'hébergement Web est largement due au fait qu'il est open source et gratuit à utiliser.

    Apache prend également en charge plusieurs plates-formes, y compris les systèmes d'exploitation Linux, Windows et Macintosh.

    Apache peut héberger des sites Web statiques, ainsi que des sites Web dynamiques qui utilisent des langages de script côté serveur, tels que PHP, Python ou Perl. La prise en charge de ces langues et d'autres est implémentée via des modules ou des packages d'installation qui sont ajoutés à l'installation Apache standard. Apache prend également en charge d'autres modules, qui offrent des options de sécurité avancées, des outils de gestion de fichiers et d'autres fonctionnalités. La plupart des installations Apache incluent un module de réécriture d'URL appelé " mod_rewrite", qui est devenu un moyen courant pour les webmasters de créer des URL personnalisées.

    Bien que le logiciel serveur Web Apache soit communément appelé simplement « Apache », il est techniquement appelé « serveur HTTP Apache », car le logiciel sert des pages Web via le protocole HTTP. Quand Apache est en cours d'exécution, son nom de processus est « httpd », qui est l'abréviation de « démon http ».

    Comment installer Apache :

    Tout d'abord, nous devons télécharger Apache à partir du site Web actuel d'Apache « https://www.apachelounge.com/download/ »

    Et nous téléchargeons la dernière version d'apache qui est actuellement 2.4.43, nous pouvons télécharger le 64 bits pour la version ou le 32 bits [pour vérifier quel type desystème nous avons, nous pouvons faire un clic droit sur l'icône Windows et cliquez sur

    [156]

    Annexe

    système dans ce panneau, nous pouvons vérifier si notre type de système est un système d'exploitation en version 64 bits ou 32 bits.]

    Alors maintenant nous téléchargeons le fichier zip d'Apache.

    Après son téléchargement, nous pouvons accéder au dossier de téléchargement, nous pouvons trouver ici le zip, double-cliquez dessus pour l'extraire et à l'intérieur, nous trouverons un dossier apache 24, maintenant nous devons accéder à notre PC et à notre pilote C et copier / coller le dossier apache 24 à la racine de base de notre lecteur C après avoir transféré le dossier entier, nous devons télécharger un autre cadre important pour utiliser apache et ce cadre est Microsoft visuel C ++ téléchargeons la dernière version qui est actuellement 2019 (à partir de ce site https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads)

    Faites défiler ici et nous choisissons la version de notre Windows (32bits (x86) ou 64bits), après téléchargement est en cours automatique.

    [157]

    Annexe

    Après le téléchargement, accédez à nouveau à notre dossier de téléchargement et double-cliquez sur l'application que vous venez de télécharger puis cliquez sur Exécuter et le téléchargement a commencé.

    Visual C++ Redistributable Package est un package Microsoft C++ components qui permet de faire tourner des applications Visual C++.

    Lorsque le Visual C++ Redistributable Package est mal installé ou non présent sur l'ordinateur, vous pouvez rencontrer des messages XXXX.DLL est manquant ou Erreur api-ms-win-crt-runtime-l1-1-0.dll

    En clair donc, ces packages Visual C++ sont très importants pour que les applications puissent fonctionner correctement.

    Puis on installe apache comme une invite de commande d'ouverture de service windows , on fait un clic droit sur l'aplication et exécutez en tant qu'administrateur puis on clique sur yes.

    Et maintenant tappons httpd -k install

    Apres nous allons vérifier le service Apache. Cliquons sur l'icon de windows et tappons services

    [158]

    Annexe

    Maintenant, on ouvre l'application puis on cherche le service nomé Apache24

    Nous pouvons démarrer le serveur Apache, faites un clic droit dessus et cliquer sur démarrer.

    Quand je fais 127.0.0.1 (localhost) s'affiche dans la fentre It works !

    Annexe

    [159]

    Ca veut dire que mon serveur fonctionne bien.

    Annexe 2 Installation du Sublime

    1. Introduction :

    Sublime Text est un éditeur de texte vraiment puissant. Disponible à la fois sur Windows, sur Mac et sur Linux, il est conçu pour prendre en charge plusieurs langages de programmation variés allant du langage de programmation C à l'Action Script en passant par les langages PHP, Objective-C ou encore OCaml voire même du Scripting comme le Shell Scripting ou encore le SQL. C'est un éditeur à tout faire. Ce qui fait réellement sa force est donc cette capacité à prendre en charge de nombreux langages mais aussi d'apporter de nombreuses fonctionnalités pratiques qui faciliteront la création de code pour les développeurs.

    2. Installation :

    Tout d'abord, comment obtenir Sublime Text ? Sublime Text est utilisable gratuitement et il est téléchargeable à l'adresse suivante : « https://www.sublimetext.com/ », Vous y trouverez la version téléchargeable pour les trois systèmes d'exploitation Windows, Mac et Linux et les différents Build disponibles avec ce qu'ils contiennent. Donc on le téléchargera en cliquant sur Download for Windows.

    [160]

    Annexe

    Donc après le téléchargement est terminé, accédez à nouveau à notre dossier de téléchargement et double-cliquez sur le fichier téléchargeable de Sublime Texte et lancer l'installation.

    [161]

    Annexe

    On peut ajouter un Sublime texte au menu contextuel quand on va faire clic droit sur un fichier html on pourra par exemple éditer grâce à Sublime. Puis clic Next>Installe et c'est fini.

    Annexe 3 Installation du Postman API

    1. Introduction :

    Postman est un outil de développement d'API (interface de programmation d'application) qui aide à créer, tester et modifier des API. Presque toutes les fonctionnalités dont tout développeur pourrait avoir besoin sont encapsulées dans cet outil. Il est utilisé par plus de 5 millions de développeurs chaque mois pour rendre leur développement d'API facile et simple. Il a la capacité de faire différents types de requêtes HTTP (GET, POST, PUT, PATCH), d'enregistrer des environnements pour une utilisation ultérieure, de convertir l'API en code pour différents langages (comme JavaScript, Python).

    2. Installation :

    Tout d'abord, nous devons télécharger Postman à partir du site suivant : « https://www.postman.com/», et après en cliquant sur Download the App après

    [162]

    Annexe

    nous choisissons la version de notre Windows (32 ou 64) bits après téléchargement est en cours automatique.

    Après avoir téléchargé, on accède à notre dossier de téléchargement et double-cliquez sur le fichier téléchargeable de Postman et lancer l'installation en cliquons sur Exécuter > Next > Accept > Finish > Install Now

    [163]

    Annexe

    Après avoir téléchargé et installé le Postman, ouvrez le logiciel.

    Postman interface.

    3. Expliquer l'interface :

    · Le champ de saisie central le plus long qui ressemble à une barre de recherche est celui où l'URL que nous voulons GET ou POST ou DELETE, etc. est nourri.

    · Juste à gauche, se trouve un bouton déroulant qui a toutes les différentes méthodes HTTP en option. Si vous souhaitez POSTER vers l'URL que vous avez spécifiée, sélectionnez POST.

    · À droite se trouve le bouton params. Si vous cliquez dessus, une nouvelle interface apparaîtra. Les paramètres sont essentiellement les données que nous voulons envoyer au serveur avec notre demande. Nous utiliserons cette interface params pour POST pour mettre l'application un nouvel utilisateur.

    · À gauche de ce bouton se trouve le bouton Envoyer qui est utilisé dans l'envoi de la demande au serveur ou à l'application dans ce cas.

    [164]

    Annexe

    Alors, commençons à envoyer et à recevoir des demandes via Postman.

    4. Envoi et réception de demandes via Postman

    · Entrez l'URL que vous souhaitez frapper dans la barre d'URL que j'ai décrite ci-dessus. Je mettrai http: localhost: 3000 dans mon cas.

    · Permet de sélectionner notre méthode HTTP pour envoyer la demande en tant que GET dans le bouton gauche. Cliquez maintenant sur le bouton Envoyer.

    Obtenir localhost

    · Vous serez renvoyé HTML de l'URL que vous OBTENEZ. J'ai sélectionné l'aperçu pour avoir un aspect de navigateur.

    · Comme vous pouvez le voir dans la capture d'écran ci-dessous, avec la réponse du serveur ou de l'application, divers en-têtes sont également renvoyés avec la réponse principale.

    Les en-têtes de retour obtiennent

    5. Explication de l'en-tête :

    Le premier en-tête renvoyé est keep-alive. Cela signifie essentiellement que la connexion du serveur avec l'utilisateur ne se tuera pas après un certain temps.

    [165]

    Annexe

    Content-length est la longueur du document html qui est retourné.

    La date est l'heure à laquelle la demande a été faite au serveur pour retourner le fichier. X-Powered-By envoie Express car le serveur d'application est Express.

    Etag est un identifiant pour une version spécifique de la ressource. Cela permet d'économiser du temps et de la bande passante au cas où l'utilisateur demanderait à nouveau la même page sans aucune modification, alors le même fichier pourrait être envoyé.

    6. Publication des données sur le serveur :

    Maintenant, essayons de POSTER des données sur le serveur (serveur local). Pour cela, nous allons d'abord OBTENIR le formulaire d'inscription.

    S'inscrire

    · Modifiez la méthode HTTP de la prochaine requête que nous allons envoyer à POST. Ouvrez l'onglet Params du Postman. Cela nous aidera à envoyer le formulaire avec les valeurs souhaitées.

    Valeur de formulaire remplie sous forme de pair clé-valeur dans l'onglet Paramètres du facteur.

    [166]

    Annexe

    · Après avoir appuyé sur Entrée, il POSTE le formulaire avec nos paires clé-valeur et renvoie la réponse.

    Aperçu look Postman pour utilisateur enregistré

    · Le terminal enregistre également l'utilisateur enregistré.

    La console a enregistré l'utilisateur enregistré

    Annexe 4 Node.js

    1- Qu'est-ce que Node.js ?

    Node.js est une plate-forme côté serveur basée sur le moteur JavaScript de Google Chrome pour créer facilement des applications réseau rapides et évolutives. Node.js utilise un modèle d'E / S non bloquant piloté par les événements qui le rend léger et efficace, parfait pour les applications en temps réel gourmandes en données qui s'exécutent sur des appareils distribués.

    Node.js est un environnement d'exécution multiplateforme open source pour le développement d'applications côté serveur et de mise en réseau. Les applications Node.js sont écrites en JavaScript et peuvent être exécutées dans le runtime Node.js sur OS X, Microsoft Windows et Linux.

    Node.js fournit également une riche bibliothèque de divers modules JavaScript qui simplifie dans une large mesure le développement d'applications Web utilisant Node.js.

    Node.js = Runtime Environment + JavaScript Library

    [167]

    Annexe

    2- Concepts

    Le diagramme suivant décrit certaines parties importantes de Node.js

    Télécharger l'archive Node.js

    Télécharger la dernière version de Node.js sur lesite suivant :

    « https://nodejs.org/en/download/»

    Utilisez le fichier MSI et suivez les invites pour installer Node.js. Par défaut, le programme d'installation utilise la distribution Node.js dans C: \ Program Files \ nodejs.

    [168]

    Annexe

    Vérifier l'installation : exécution d'un fichier

    Créez un fichier js nommé main.js sur votre machine (Windows ou Linux) avec le code suivant.

    [169]

    Annexe

    /* Hello, World! program in node.js */ console.log("Hello, World!")

    Maintenant, exécutez le fichier main.js en utilisant l'interpréteur Node.js pour voir le résultat

    $ node main.js

    Si tout va bien avec votre installation, cela devrait produire le résultat suivant :

    Hello,

     

    World!

     
     

    Annexe 5 Cisco packet Tracer

    1- Qu'est-ce que Cisco Packet Tracer ?

    Cisco Packet Tracer est un outil de simulation qui vous permet d'utiliser des périphériques réseau Cisco avec un logiciel.

    L'installation est gratuite pour tout le monde.

    Il s'agit d'un outil très précieux pour les ingénieurs d'infrastructure qui peuvent acquérir une expérience de fonctionnement même s'ils n'ont aucune expérience de l'équipement réseau réel.

    2- Que pouvez-vous faire ?

    Vous pouvez placer un PC, un routeur, un commutateur L2, un commutateur L3, etc. sur le logiciel et les connecter pour créer un réseau.

    Vous pouvez enregistrer le réseau créé et le distribuer à d'autres.

    Vous pouvez essayer de créer une boucle ou de définir une combinaison qui provoque une erreur, ce qui ne devrait jamais être fait dans un vrai réseau.

    Vous pouvez vérifier le comportement au moment de la panne, comme la façon dont le câble se déplacera lorsque vous le déconnecterez.

    Si vous êtes en mesure de former des juniors, vous pouvez donner une tâche sans préparer une vraie machine.

    Vous pouvez presque maîtriser les éléments de base de la couche 2 (couche liaison de données) et de la couche 3 (couche réseau), qui sont les sujets de base en tant qu'ingénieur réseau.

    3- Que ne pouvez-vous pas faire ?

    Vous ne pouvez pas vous connecter à des routeurs, des commutateurs ou des PC en dehors de Packet Tracer.

    Seul un nombre limité de commandes Cisco peuvent être utilisées (90% peuvent être utilisées au niveau CCNA.)






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"La première panacée d'une nation mal gouvernée est l'inflation monétaire, la seconde, c'est la guerre. Tous deux apportent une prospérité temporaire, tous deux apportent une ruine permanente. Mais tous deux sont le refuge des opportunistes politiques et économiques"   Hemingway