Université Cheikh Anta DIOP de Dakar Faculté des Sciences et Techniques Laboratoire d’Algèbre de Cryptologie de Géométrie Algébrique et Applications Département Mathématiques et Informatique LACGAA Licence Transmission de Données et Sécurité de l’Information Option : (CI) Thème : Solution de vote électronique décentralisée Présenté et soutenu par: M. Wone Mamadou M. Touré Mohamed Encadreur : M. Ndiaye Ousmane Jury : Président : Titre Prénom Nom Membres : Titre Prénom Nom Titre Prénom Nom Titre Prénom Nom Etablissement Etablissement Etablissement Etablissement Année Académique 2020 – 2021 1 Dédicace 2 Remerciements 3 Table des matières Introduction Partie 1: Approche théorique 1- Cryptographie 1.1 Le chiffrement 1.1.1 Chiffrement symétrique 1.1.2 Chiffrement asymétrique 1.2 Hachage 1.3 Signature électronique 1.4 Signature d’anneau 2 Technologies distribuée et décentralisée 2.1 Réseau centralisé 2.2 Réseau décentralisé 2.3 Réseau distribuée 3 Blockchain 4 Vote classic 4.1 Vote électronique centralisé 4.1.1 Avantages vote électronique centralisé 4.1.2 Inconvénients du vote électronique centralisé 4.2 Vote électronique décentralisée 4.2.1 Avantages du vote électronique décentralisée 4.2.2 Inconvénient vote électronique décentralisée 5 Tableau comparatif (votes électroniques centralisé et décentralisé) Partie 2: Approche méthodologique 1 Expression du besoin 2 Modélisation 2.1 Diagramme de cas d’utilisation 2.1 Diagrammes de séquences 3 Architecture générale 4 Partie 3: Réalisation 1 Etudes comparatives 1.1 Bitcoin vs Ethereum 1.1.1 Bitcoin 1.1.2 Ethereum 1.1.3 Principales différences 1.2 Php vs JavaScript 1.2.1 PHP 1.2.2 JavaScript 1.2.3 Tableau comparatif 1.3 React Native vs Flutter 1.3.1 Performances 1.3.2 Capacités de conception et de graphiques de React Native vs. Applications Flutter 1.3.3 Fiabilité et soutient supplémentaire 2 Sécurité 3 Architecture adoptée 4 Implémentation et qualité 4.1 performances et sécurité applicative 4.2 Conformité 4.3 failles 5 Introduction Le vote désigne une méthode permettant à un groupe une prise de décision commune. Les organisations formelles ou informelles ont recours à cette pratique, de toute nature (économiques, politiques, associatives, etc.). La pratique du vote vise à donner une légitimité à la décision en montrant qu'elle ne vient pas d'un individu isolé. L’utilisation à grande échelle des technologies de l'information comme moyen de voter se démocratise de plus en plus. Elle suscite, cependant, énormément de questions sur la fiabilité et la confiance du processus de votation électronique. L’objet de ce mémoire est de tirer un enseignement des méthodes de votes électroniques courantes tel que celui par sms. Nous proposons des recommandations pour encadrer et assurer la confiance dans l’emploi des technologies de l'information pour un système de vote électronique. Un système de vote électronique permet de se prémunir de l’imprécision du « marquage ». Il permet de faire rapidement le décompte des votes. Il permet également de réduire les impacts de la dispersion géographique des points de votation. Allié à une technologie de blockchain décentralisée, cela permettra d’assurer les aspects sécuritaires mais encore et surtout la confiance, afin de garantir le respect du cadre légal et assurer la disponibilité, l’intégrité et la confidentialité d’un système de vote électronique. Nous allons donc survolé différents concepts clés liés à la sécurité tels que le chiffrement, la signature électronique, la signature en anneau, le hachage mais aussi ceux liés à la blockchain et au vote électronique. 6 Partie 1: Approche théorique 1- Cryptographie La cryptographie est une technique d'écriture où un message chiffré est écrit à l'aide de codes secrets ou de clés de chiffrement. La cryptographie est principalement utilisée pour protéger un message considéré comme confidentiel. Cette méthode est utilisée dans un grand nombre de domaines, tels que la défense, les technologies de l'information, la protection de la vie privée, etc. Il existe de nombreux algorithmes cryptographiques qui peuvent être utilisés pour chiffrer (et déchiffrer pour le destinataire) le message. Certains sont considérés comme basiques (par exemple, la lettre de l'alphabet est décalée vers la droite ou la gauche avec un certain nombre de notes), d'autres offrent un niveau de sécurité presque absolu. Durant la Seconde Guerre mondiale, les Allemands ont utilisé la cryptographie avec la machine de Lorenz (Enigma) pour communiquer leurs informations militaires en toute sécurité. Cet épisode de l'histoire a été mis en exergue par Morten Tyldum dans le film Imitation Game. Aujourd’hui, la cryptographie ne se limite plus à assurer la confidentialité des secrets. Elle s’est élargie au fait d’assurer mathématiquement d’autres notions : assurer l’authenticité d’un message (qui a envoyé ce message ?) ou encore assurer son intégrité (est-ce qu’il a été modifié ?) grâce aux signatures numériques et aux fonctions de hachage. 1.1 Le chiffrement Le chiffrement relève de la cryptographie, terme dérivé du grec kryptos, signifiant caché ou secret. L'utilisation du chiffrement est aussi ancienne que l'art de la communication elle-même. Déjà en 1900 av. J.C., un scribe égyptien utilisait des hiéroglyphes non standard pour masquer la signification d'une inscription. A une époque où très peu de gens savaient lire, il suffisait souvent de rédiger un message écrit, mais des systèmes de chiffrement se sont rapidement développés, convertissant les messages en groupes illisibles de chiffres afin d'en protéger la confidentialité pendant leur transport d'un point à un autre. Le contenu d'un 7 message était réorganisé (transposition) ou remplacé (substitution) par d'autres caractères, symboles, chiffres ou images, afin d'en dissimuler le sens. En 700 av. J.C., les Spartiates écrivaient des messages confidentiels sur des lanières de cuir enroulées autour de bâtons. Une fois la bandelette déroulée, la suite de caractères n'avait plus aucun sens, mais en utilisant un bâton du même diamètre, le destinataire pouvait recréer (déchiffrer) le message. Par la suite, les Romains utilisaient ce qu'on a appelé le chiffrement de César, ou chiffrement par décalage, un code mono alphabétique dans lequel chaque lettre est remplacée par une autre, située à une distance fixe dans l'alphabet. Par exemple, si la distance convenue est de trois positions, le message, « Soyez là à six heures » deviendrait « Vrbhc od d vla khxuhv ». Le Moyen-Age a vu l'émergence de la substitution poly-alphabétique, qui utilise plusieurs alphabets de substitution, limitant ainsi l'utilisation de l'analyse de fréquences pour déchiffrer un code. Cette méthode de chiffrement est restée populaire malgré de nombreuses mises en œuvre qui ne masquaient pas correctement le changement de substitution. C'est cependant au milieu des années 1970 que le chiffrement a fait un véritable bond en avant. Jusqu'à cette époque, en effet, tous les systèmes de chiffrement utilisaient le même code secret pour chiffrer et déchiffrer un message : une clé symétrique. En 1976, l'article de B. Whitfield Diffie et Martin Hellman intitulé « New Directions in Cryptography » a résolu l'un des problèmes fondamentaux de la cryptographie, c'est-à-dire comment communiquer de façon sûre la clé de chiffrement à ceux qui en ont besoin. Cette avancée a été peu après suivie par la mise en œuvre d’une cryptographie à clé publique utilisant des algorithmes asymétriques, ce qui a ouvert une nouvelle ère dans le chiffrement. 8 Image 1 : Usages de la cryptographie 1.1.1 Chiffrement symétrique Les cryptogrammes symétriques utilisent la même clé, ou code secret, pour le chiffrement et le déchiffrement d'un message ou fichier. Le chiffrement à clé symétrique est beaucoup plus rapide et plus facile à mettre en place que son homologue asymétrique, mais l'expéditeur doit échanger la clé utilisée pour chiffrer les données avec le destinataire pour que ce dernier puisse les déchiffrer. Le chiffrement symétrique s'appuie grandement sur le fait que les clés doivent être gardées secrètes. Distribuer la clé de manière sécurisée constitue l'une des principales difficultés du chiffrement symétrique, désignée sous le nom de « problème de distributions de clés ». Composant vital du chiffrement symétrique, la clé ne doit en aucun cas être perdue ou égarée. En cas de perte de l'une des clés, le message peut être déchiffré par des personnes malveillantes. Le « problème de gestion des clés » se trouve aussi être un inconvénient majeur du chiffrement symétrique. L'augmentation du nombre d'utilisateurs va de pair avec celle du nombre de clés nécessaires. 9 Image 2: Chiffrement Symétrique 1.1.2 Chiffrement asymétrique L’origine de la cryptographie asymétrique remonte à 1975. La cryptographie asymétrique est donc un champ très jeune de la cryptographie. Le principal avantage de la cryptographie asymétrique est également le principal inconvénient de la cryptographie symétrique : les interlocuteurs n’ont pas à se mettre d’accord sur une clé commune, car chacun dispose d’une clé privée différente. Le problème de la cryptographie à clé secrète (cryptographie symétrique) réside dans l’échange de clés. La clé secrète doit parvenir au destinataire et l’acheminement est complexe, fastidieux et peu sécurisé. De plus, la complexité et les failles de sécurité augmentent en fonction du nombre de personnes partageant cette clé. La cryptographie asymétrique offre donc une alternative pratique, car chaque utilisateur dispose de sa propre paire de clés. La cryptographie asymétrique, ou cryptographie à clé publique est fondée sur l'existence des fonctions à sens unique et à brèche secrète. Les fonctions à sens unique sont des fonctions mathématiques telles qu'une fois appliquées à un message, il est extrêmement difficile de retrouver le message original. L'existence d'une brèche secrète permet cependant à la personne qui a conçu la fonction à sens unique de décoder facilement le message grâce à un élément d'information qu'elle possède, appelé clé privée. La terminologie classiquement retenue est : ● pour la fonction à sens unique : « clé publique » ; ● pour la brèche secrète : « clé privée ». L'un des rôles de la clé publique est de permettre le chiffrement. Elle peut chiffrer les données, mais pas les déchiffrer, le déchiffrement n’est réalisable que par la clé privée du destinataire. La clé publique ne sert pas uniquement au chiffrement, elle permet également de vérifier une signature numérique et 10 de vérifier les interlocuteurs. La transmission de clés se fait lors du premier contact. Dans le même temps, la clé privée crée une signature numérique et peut ainsi être identifiée par les autres interlocuteurs. En d’autres termes, la cryptographie asymétrique permet que chaque participant puisse accéder à la clé publique, mais ne puisse décrypter les messages qu’avec la clé privée. Cela permet un échange de données hautement sécurisé. La connaissance d'une clé ne permet donc pas de déduire l'autre. Cependant, le principal inconvénient de la cryptographie asymétrique est la lenteur du chiffrement. En outre, il demande considérablement plus de puissance de calcul. Image 3: Chiffrement Asymétrique Il est recommandé d’avoir recours à un cryptage hybride afin de bénéficier des avantages des deux systèmes. La cryptographie asymétrique se charge de la transmission de clés. Cela permet de contourner le transfert fastidieux des clés privées d’un crypto-système. Le résultat : un cryptage sûr, rapide et pratique. 1.2 Hachage Une fonction de hachage cryptographique est une primitive cryptographique qui transforme un message de taille arbitraire en un message de taille fixe, appelé un condensé. Les fonctions de hachage cryptographiques sont employées pour l'authentification et les signatures numériques. C'est-à-dire que si l'image d'une donnée par la fonction se calcule très efficacement, le calcul inverse d'une donnée d'entrée ayant pour image une certaine valeur se révèle impossible sur le plan pratique. Pour cette raison, on dit d'une telle fonction qu'elle est à sens unique. Bien entendu, la donnée en question peut 11 avoir plusieurs formes. Ça peut être du texte, une image, … mais dans tous les cas la donnée sera transformée en un texte binaire avant qu’on lui applique la fonction de hachage. Cette fonction est utilisée dans de très nombreux domaines des technologies de l’information tels que : ● La communication cryptée entre le serveur web et le navigateur ainsi que la génération d’identifiants de session pour les applications web et la mise en cache de données (caching) ● La protection des données sensibles comme les mots de passe, les analyses web, les moyens de paiement ● La signature des messages ● La détection d’ensembles de données similaires ou identiques par les fonctionnalités de recherche Des exigences définies sont imposées à une fonction de hachage pour qu’elle présente des caractéristiques données. Ces exigences sont les suivantes : Une valeur de hachage générée ne doit pas permettre de générer à nouveau le contenu des données initiales. Il doit donc être impossible de retrouver le mot de passe « W@one_T0uræ » à partir de la valeur de hachage générée « $P$Hv8rpLanTSYSA/2bP1xN.S6Mdk32.Z3 ». On parle alors de sens unique de la fonction de hachage. L'absence de collision quant à elle consiste à ne pas attribuer, en aucun cas, à des données initiales différentes une valeur de hachage identique. Chaque saisie doit générer une autre valeur de hachage. Lorsque cet objectif est atteint, on parle de fonction de hachage cryptographique. La célérité de la fonction de hachage n’en est pas moins un point à négliger. Si la conversion des données en valeur de hachage prenait trop de temps, ce processus n’aurait pas d’utilité. La fonction de hachage doit donc travailler avec une extrême rapidité. Dans les bases de données, les valeurs de hachage sont stockées dans ce qu'on appelle des tables de hachage pour garantir la rapidité de la fonction. 12 Image 4: Fonction de hachage Les fonctions de hachage permettent donc d’assurer l’intégrité des données. Les signatures numériques, en plus d’assurer l’intégrité, permettent de vérifier l’origine de l’information et son authenticité. 1.3 Signature électronique La signature numérique est un mécanisme permettant de garantir la nonrépudiation d'un document électronique et d'en authentifier l'auteur, par analogie avec la signature manuscrite d'un document papier. La signature d'un document utilise à la fois la cryptographie asymétrique et les fonctions de hachage. C'est en effet par l'association de ces deux techniques que nous pouvons obtenir les 5 caractéristiques d'une signature (authentique, infalsifiable, non réutilisable, inaltérable, irrévocable). Imaginons que Alice souhaite envoyer un document signé à Bob. ● Tout d'abord, elle génère l'empreinte du document au moyen d'une fonction de hachage. ● Puis, elle chiffre cette empreinte avec sa clé privée. ● Elle obtient ainsi la signature de son document. Elle envoie donc ces deux éléments à Bob ● Pour vérifier la validité du document, Bob doit tout d'abord déchiffrer la signature en utilisant la clé publique d'Alice. Si cela ne fonctionne pas, c'est que le document n'a pas été envoyé par Alice. 13 Ensuite, Bob génère l'empreinte du document qu'il a reçu, en utilisant la même fonction de hachage qu'Alice (On supposera qu'ils suivent un protocole établi au préalable). ● Puis, il compare l'empreinte générée et celle issue de la signature. ● Si les deux empreintes sont identiques, la signature est validée. Nous sommes donc sûr que : ● ○ C'est Alice qui a envoyé le document, ○ Le document n'a pas été modifié depuis qu'Alice l'a signé. ● Dans le cas contraire, cela peut signifier que : ○ Le document a été modifié depuis sa signature par Alice, ○ Ce n'est pas ce document qu'Alice a signé Du point de vue théorique, la résistance du dispositif de signature va dépendre de la force du chiffrement asymétrique retenu et de la taille des clés choisies. Les normes en œuvre sont généralement considérées comme mathématiquement sûres. Du point de vue pratique : ● La signature numérique reste soumise au problème de la diffusion/authentification de la clé publique. Ce problème est en général résolu par la mise en place d’une infrastructure à clés publiques, entraînant toutes les vulnérabilités inhérentes à ce type de dispositif ; ● La signature numérique est une authentification faible car elle s'appuie uniquement sur un facteur mémoriel, en l’occurrence la clé privée. Si celle-ci est compromise l'attaquant pourra produire des messages frauduleux théoriquement complètement indiscernables des messages légitimes. Image 5: Signature électronique 14 1.4 Signature d’anneau La signature de cercle, aussi appelée signature d’anneau, est un procédé cryptographique permettant à une personne de signer électroniquement de façon anonyme un message ou un document au nom d’un « cercle ». Les membres de ce cercle sont choisis par l’auteur de la signature et ne sont pas nécessairement informés de leur implication dans la création de la signature électronique. La seule contrainte est qu’ils doivent tous avoir une clé cryptographique publique. Comme l'indique le titre de l'article où elle est décrite pour la première fois, How to Leak a Secret, le but premier de cette signature est de permettre la fuite d'information. Dans cet article est donné l'exemple d'un membre d'un cabinet ministériel voulant donner à un journaliste des informations sur le premier ministre. Il ne désire évidemment pas divulguer son identité, mais souhaite que le journaliste sache que la fuite vient du cabinet et non pas d'un plaisantin. La signature de cercle lui permet ainsi de signer en tant que membre du cabinet ministériel, et non en tant qu'individu, sans que ses collègues soient au courant, ni que quiconque puisse remonter à lui, contrairement à la signature de groupe qui impose une coopération des membres inclus dans la signature et la possibilité pour une personne déterminée à l'initialisation de connaître l'identité du signataire. Une autre utilisation proposée dans cet article est celle permettant de générer une signature qui n'aura de valeur que pour le destinataire. Ainsi la source envoie un document signé à l'aide d'une signature de cercle comprenant sa clef et celle du destinataire. Ce dernier, sachant qu'il ne l'a pas produit, a donc la preuve que le message provient bien de la source. Mais s'il montre le document à un tiers, ce dernier ne peut pas être sûr que le message n'est pas un faux, créé par le destinataire. La technologie Cryptonote utilise des signatures en cercle. Celle-ci est utilisée dans les cryptomonnaies. 15 Image 6: Signature en anneau 2 Technologies distribuée et décentralisée 2.1 Réseau centralisé On dit qu’un réseau est centralisé lorsque son intégrité dépend d’un acteur sans lequel le réseau ne fonctionne pas. Une telle architecture offre de nombreux avantages pour l’intégration verticale des services, notamment en raison du pôle de décision unique et de l’uniformité de la solution technique. Ce modèle combine simplicité d’utilisation, facilité de développement et stabilité du système ; en revanche il impose une position unique du prestataire de service lui permettant d’observer ses utilisateurs et d’analyser leur comportement. Il offre donc peu de protection ou de considération pour le droit à la vie privée de ses utilisateurs. 2.2 Réseau décentralisé 16 Un réseau décentralisé ne dépend pas d’un pôle unique de décision, mais chaque membre du réseau n’est pas nécessairement autonome et peut dépendre de la disponibilité d’un serveur qui le relie au reste du réseau ; la fédération est le modèle typique du réseau décentralisé, tel le courrier électronique ou les réseaux de chat. Ce modèle est parfait pour des organisations qui peuvent maintenir leurs propres infrastructures de communication et préfèrent contrôler leurs communications. Mais il présente la même problématique qu’un réseau centralisé concernant le rôle de l’intermédiaire tout puissant (en termes de sécurité informatique, le man in the middle). 2.3 Réseau distribuée Lorsque chaque nœud du réseau décentralisé est autonome, on parle de réseau distribué : c’est le modèle de pair-à-pair (P2P) comme Bittorrent, GNUne, Tor, I2P, cjdns ou Bitcoin. Ce modèle est le plus robuste face à l’agression d’un pouvoir centralisé (observation, censure, manipulation), car il n’offre pas de prise directe ni de cible particulière - il ne dispose pas de point unique de défaillance, contrairement aux modèles sus-cités. En revanche, sa réalisation est bien plus difficile qu’un service centralisé, notamment en raison de l’hétérogénéité et la complexité de l’environnement. 3 Blockchain La blockchain est un grand livre partagé et inaltérable qui facilite le processus d'enregistrement des transactions et de suivi des actifs dans un réseau commercial. Les blockchains permettent donc de stocker et d’échanger de la valeur sur internet sans intermédiaire centralisé. Elles sont le moteur technologique des crypto-monnaies, du Web Décentralisé et de son corollaire, la finance décentralisée. Une blockchain constitue une base de données qui contient l’historique de tous les échanges effectués entre ses utilisateurs depuis sa création. Cette base de données est sécurisée et distribuée : elle est partagée par ses différents utilisateurs, sans intermédiaire, ce qui permet à chacun de vérifier la 17 validité de la chaîne. Une blockchain peut donc être assimilée à un grand livre comptable public, anonyme et infalsifiable. Comme l’écrit le mathématicien Jean-Paul Delahaye, il faut s’imaginer « un très grand cahier, que tout le monde peut lire librement et gratuitement, sur lequel tout le monde peut écrire, mais qui est impossible à effacer et indestructible. » Image 7: Blockchain La première blockchain est apparue en 2008 avec la monnaie numérique bitcoin, développée par un inconnu se présentant sous le pseudonyme Satoshi Nakamoto. Elle en est l’architecture sous-jacente. Si blockchain et Bitcoin ont été construits ensemble, il existe aujourd’hui de nombreuses blockchains et crypto-monnaies associées. Certaines entreprises envisagent parfois la création de blockchains dites « privées », dont l’accès et l’utilisation sont limités à un certain nombre d’acteurs. Cela permet d’expérimenter en interne mais avec des limites en termes d’innovation (écosystème restreint) et de ROI (coût de l’infrastructure à mettre en place). Toute blockchain publique fonctionne nécessairement avec une monnaie ou un token (jeton) programmable. Bitcoin est un exemple de monnaie programmable. Les transactions effectuées entre les utilisateurs du réseau sont regroupées par blocs. Chaque bloc est validé par les nœuds du réseau appelés les “mineurs”, selon des techniques qui dépendent du type de blockchain. Dans la blockchain Bitcoin cette technique est appelée le “Proof-of-Work”, preuve de travail, et consiste en la résolution de problèmes algorithmiques. Une fois le bloc validé, il est horodaté et ajouté à la chaîne de blocs. La transaction est alors visible pour le récepteur ainsi que l’ensemble du réseau. Ce processus prend un certain temps selon la blockchain considérée (environ une dizaine de minutes pour Bitcoin, 15 secondes pour Ethereum). 18 Le caractère décentralisé des blockchains, couplé avec sa sécurité et sa transparence, promet des applications bien plus larges que le domaine monétaire. On peut classer l’utilisation des blockchains en plusieurs catégories : ● Les applications de nature monétaire : utilisation de monnaies mondiales (Bitcoin, Ether, etc.) qui fournissent un étalon international et un potentiel de valeur refuge pour certaines populations soumises à l’inflation ou non bancaires. ● La tokenisation d’actifs de valeur (immobilier, collectives de jeux vidéo, œuvres d’art, etc.) ● Les applications financières plus complexes (hedge funds, assurance, prêts…), avec par exemple la finance décentralisée ● Les applications de certification utilisant la blockchain comme un notaire décentralisé, afin de garantir l’intégrité de fichiers numériques Les blockchains ouvrent la voie d’un nouveau web, le web décentralisé, et d’une nouvelle économie numérique, la token économie. Aujourd’hui, différentes Blockchain coexistent. Bitcoin Créé par Satoshi Nakamoto en 2008, Bitcoin est la Blockchain originelle dont le consensus repose sur la preuve de travail (PoW : proof of work) des mineurs. Elle sert principalement aujourd’hui de valeur refuge numérique. Bitcoin permet également de stocker une petite quantité d’information dans chaque transaction (80 octets) de manière immuable. Il est aussi possible d’utiliser Bitcoin pour émettre et faire circuler des jetons (colored coin) pouvant être l’émanation sur la chaîne d’un actif sous-jacent (action, titre de propriété, matière première…). Ethereum Créé par Vitalik Buterin en 2014, Ethereum permet, au-delà des fonctions de Bitcoin, de créer des contrats intelligents (smart-contract), c’est-à-dire des comptes pouvant transporter des ethers (crypto monnaie) pilotés par du code informatique. En 2017, les smart-contrats sont principalement utilisés pour l’émission de jetons et les levées de fonds directement sur la Blockchain. Hyperledger 19 Hyperledger est une plateforme open source de développement de Blockchain. Ce projet, initié en décembre 2015 par la fondation Linux, a été rejoint plus tard par IBM. Le développement s’y fait essentiellement en langage Go. Tendermint Tendermint est une plateforme open source de Blockchain permettant l’exécution de smart-contract multi-langages dont l’algorithme de consensus PBFT résiste à la panne, même si 1/3 des acteurs sont malveillants ou déconnectés. Zero Cash Z-Cash est une Blockchain permettant les transactions anonymes grâce à la technologie cryptographique innovante zk-SNARK. Sur le réseau Z-cash, il existe 2 types d’adresse : les transparentes « taddress » et les protégées « z-addresses ». Les transactions entre les premières sont similaires à celle de Bitcoin, celles qui se font sur la seconde en revanche sont inscrites dans le registre de manière chiffrée. Un algorithme dit « de preuve à divulgation nulle de connaissance » (zero-knowledge proof) garantit l’intégrité de ces transactions. Tezos Après la fructueuse levée de fonds du mois de juillet (200 M €), la chaîne publique de Tezos sera lancée fin 2017. Tezos est une Blockchain dont le consensus repose sur la preuve d’enjeu (PoS : Proof of Stake) à gouvernance intégrée . En effet, toute proposition d’évolution du code source soumise à un vote réunissant 80% sur un Quorum de 80% des détenteurs de Tez donnera lieu à une mise à jour. De plus, le langage utilisé pour les smart-contrat est écrit en Ocaml et permet la vérification formelle de la cohérence entre le code compilé et le code source. 4 Vote classic 20 Le vote désigne une méthode permettant à un groupe une prise de décision commune. Les organisations formelles ou informelles ont recours à cette pratique, de toute nature (économiques, politiques, associatives, etc.). La pratique du vote vise à donner une légitimité à la décision en montrant qu'elle ne vient pas d'un individu isolé. Le vote est généralement encadré par un processus électoral aussi dénommé « scrutin » ou « élection ». 4.1 Vote électronique centralisé Le vote électronique est un terme qui couvre plusieurs types différents d'utilisation des moyens électroniques dans les élections pour voter et/ou compter les votes. Il pourrait généralement s'agir d'enregistrement direct de machines à voter électroniques ou d'autres moyens électroniques d'enregistrer les votes au bureau de vote.Le vote en ligne ou le vote par Internet sont des versions du vote électronique où les électeurs ont la possibilité de voter, sans se rendre au bureau de vote, à l'aide d'un ordinateur, d'une tablette ou d'un téléphone intelligent à partir d'un endroit de leur choix. Comme d'autres approches du vote électronique, ces systèmes facilitent également le dépouillement des votes. L'utilisation des TIC en élection ne concerne pas seulement l'acte de vote, mais concerne toutes les étapes des processus électoraux : la création du registre électoral, l'identification des électeurs (dans les bureaux de vote et en ligne), le traitement des résultats et la présentation des résultats. Bien qu'aucun pays n'ait choisi d'utiliser uniquement le vote en ligne lors d'élections et/ou de référendums, certains pays, comme l'Estonie, la Suisse et le Canada, ont donné aux électeurs le choix de voter par Internet. En Mongolie, le vote par SMS a été rendu possible lors d'un référendum en 2015. 4.1.1 Avantages vote électronique centralisé Les partisans du vote électronique, surtout le vote par Internet, invoquent en sa faveur des arguments liés à la technologie, aux problématiques sociales et à l'administration des élections. Premièrement, cette nouvelle façon de voter pourrait simplifier le processus électoral et le rendre plus accessible aux 21 électeurs. Cela est particulièrement vrai pour le vote à distance par Internet ou par téléphone, grâce auquel on peut exercer son droit de vote à partir de n'importe quel ordinateur branché sur Internet ou de n'importe quel téléphone fonctionnel. Pour de nombreux électeurs, ces méthodes diminuent considérablement les coûts associés au vote, car elles créent de nombreux points d'accès supplémentaires pour voter. Elles ont le potentiel d'éliminer les longues files d'attente dans les bureaux de vote et de pallier plus efficacement les problèmes d'accessibilité des personnes handicapées ou malades, des militaires, des personnes vivant à l'étranger, des voyageurs ou des retraités migrateurs, ainsi que d'autres groupes de la population tels que les chefs de famille monoparentale pour qui aller voter de manière traditionnelle peut s'avérer compliqué. De plus, le vote à distance par Internet, et dans certains cas par borne Internet, offre aux électeurs la possibilité de voter à toute heure, ce qui facilite encore l'exercice du droit de vote. En ce qui a trait à des groupes particuliers d'électeurs, le vote par Internet (à distance surtout) et par téléphone pourrait aussi favoriser la participation des électeurs considérés comme les plus difficiles à atteindre, particulièrement les jeunes de 18 à 30 ans. Ces derniers sont les plus familiers avec la technologie, ils en sont les plus fréquents utilisateurs et sont sans doute ceux qui profiteraient le plus de l'expansion du vote à distance. Internet et le téléphone semblent être des moyens particulièrement pratiques d'encourager la participation des jeunes qui, pour leurs études post-secondaires, vivent dans une circonscription autre que la leur. Deuxièmement, le vote par Internet ou par téléphone assurerait une plus grande confidentialité aux personnes handicapées (y compris les personnes ayant une déficience visuelle ou auditive). En votant électroniquement, donc sans l'aide d'autrui, ces électeurs disposent d'un anonymat accru, ce qui favorise l'égalité du vote. Troisièmement, l'amélioration de l'accessibilité et la création de possibilités de vote supplémentaires pourraient bien avoir une incidence positive sur le taux de participation. En général, les écrits universitaires traitant du vote électronique et de la baisse du taux de participation présentent des résultats non concluants quant à l'impact du vote en ligne. Dans la plupart des cas où les lieux de scrutin étaient équipés de bornes Internet, le taux de participation n'a pas augmenté. Cependant, là où des services de vote à distance avaient été mis en place, les résultats étaient variables. Bien qu'il n'y ait pas eu de hausses systématiques de participation dans certains endroits, comme au Royaume-Uni, on signale certains cas d'augmentation du taux de participation ailleurs, comme en Estonie, à Genève et dans des municipalités canadiennes. La période d'accessibilité du vote à distance par Internet semble avoir un effet 22 sur la fréquence d'utilisation de cette méthode ainsi que sur le taux de participation. Quatrièmement, le vote par Internet et le vote par téléphone produisent des résultats électoraux plus rapides et plus fiables. Ces méthodes de vote accéléreraient le processus de dépouillement officiel et seraient plus fiables que les machines de dépouillement (utilisant des cartes à perforer, par exemple), auxquelles on reproche parfois des erreurs. Cinquièmement, à long terme, tous les systèmes de vote par Internet sont potentiellement moins coûteux à exploiter que la méthode traditionnelle avec bulletins de vote, qui requiert l'installation de bureaux de vote avec du personnel. Par contre, les coûts initiaux liés aux appareils et aux bornes peuvent être très élevés. Enfin, tous les systèmes de vote par Internet ou téléphone ont le potentiel d'améliorer la qualité générale des bulletins de vote en réduisant ou en éliminant le nombre d'erreurs sur les bulletins et en faisant en sorte que les électeurs soient mieux informés. En effet, il ne peut y avoir d'erreurs sur les bulletins ni, selon les systèmes, de bulletins annulés, car l'ordinateur ne le permet pas. Si toutefois on désire offrir aux électeurs l'option d'annuler leur vote ou de déposer un vote de protestation, un bouton peut être ajouté dans certains logiciels de manière à ce qu'ils acceptent ces types de vote (ou les refus de voter). De plus, selon l'architecture des systèmes, il est possible d'afficher des renseignements supplémentaires sur les candidats et leurs positions en vue du vote. Ainsi, les électeurs peuvent avoir sous les yeux de l'information générale sur les candidats et les programmes des partis, et ainsi voter de façon plus éclairée. 4.1.2 Inconvénients du vote électronique centralisé Ceux qui s'opposent au vote électronique, ou qui s'en méfient, évoquent plusieurs inconvénients et risques perçus liés aux différentes méthodes de vote par Internet ou téléphone. Le principal risque cité concerne la sécurité. Ce sont les menaces de virus informatiques et d'attaques de systèmes orchestrées par des pirates qui inquiètent le plus parmi les problèmes pouvant compromettre une élection et la confiance du public à l'égard du vote électronique. Cette inquiétude concerne surtout les ordinateurs personnels. La confidentialité du vote devient source de préoccupations lorsque les ordinateurs utilisés sont non protégés, situés dans des lieux publics ou susceptibles d'être la cible de virus. Parmi les autres problèmes techniques potentiels figurent les pannes d'électricité ou les problèmes de connexion 23 Internet, ainsi que les fermetures ou les pannes de serveur. La fiabilité des méthodes d'enregistrement et de stockage des votes est aussi un important facteur à prendre en considération. Deuxièmement, on soulève les problèmes d'accès. Les écrits sur le vote à distance par Internet parlent du risque d'un « clivage numérique » pouvant se manifester de deux manières. D'une part, il peut se manifester entre ceux qui disposent d'un ordinateur avec connexion Internet à la maison, et ceux qui n'en ont pas. D'autre part, il peut résulter de l'écart entre les vitesses de connexion Internet : ceux qui ont une connexion moins rapide ont un moins bon accès. À l'opposé, les personnes à revenu plus élevé peuvent s'offrir un meilleur accès. De plus, l'accès est souvent moins cher et de meilleure qualité en zone urbaine. Les personnes à faible revenu et celles vivant en zone rurale sont donc désavantagées. Ainsi, l'expansion du vote par Internet pourrait créer des clivages liés à diverses variables socioéconomiques, dont le revenu, l'éducation, le sexe, la géographie, la race et l'origine ethnique. Ces clivages potentiels pourraient poser problème sur le plan de la participation et de la représentation. Troisièmement, on dit que le vote à distance par Internet ou téléphone est plus propice à la fraude et à la coercition (ou achat de votes). Il y a fraude lorsque quelqu'un vote au nom d'une autre personne sans en avoir la permission, tandis que la coercition se produit lorsqu'un électeur subit des pressions d'autres personnes qui le poussent à voter autrement qu'il l'aurait normalement fait. Dans les deux cas, il y a atteinte à l'intégrité du vote, car il importe que chaque vote comptabilisé reflète l'opinion de l'électeur. Il y a aussi possibilité de fraude si l'avis de convocation de l'électeur, qui contient un mot de passe unique permettant de voter, est intercepté. Dans le cas où le vote ne se fait pas en personne, il est plus difficile de vérifier l'identité de l'électeur. À distance, l'authentification de ce dernier peut être problématique. Les signatures et les mots de passe numériques peuvent aider, mais ne sont pas à toute épreuve et pourraient être échangés. Quatrièmement, l'aspect éducation électorale suscite aussi des inquiétudes. Beaucoup de temps et d'argent doivent être investis pour s'assurer que le public est au courant de l'existence du vote électronique et qu'il comprend comment l'utiliser. À défaut d'une bonne stratégie de communication, il sera difficile d'éveiller l'intérêt des électeurs. Cinquièmement, la privatisation est source de préoccupation lorsque les administrateurs électoraux cèdent le contrôle à une firme. L'octroi de contrats à des entreprises privées pour la portion électronique des élections peut être mal perçu par certaines personnes et risque, par conséquent, de miner la confiance du public envers le gouvernement et le processus électoral. 24 Enfin, la plus grande préoccupation sociale est peut-être la menace de désintégration de capital social ou de vie civique. D'après certains, la prolifération de services électroniques pour électeurs pourrait altérer la nature de la participation en encourageant les gens à voter seuls plutôt qu'avec d'autres dans un lieu de vote. Cela présenterait un risque d'érosion pour la vie civique, les réseaux sociaux locaux et les groupes liés aux élections. 4.2 Vote électronique décentralisée L'un des domaines où la blockchain peut avoir un impact significatif est le vote électronique. Le niveau de risque est si élevé que le vote électronique à lui seul n'est pas une option viable. Si un système de vote électronique est piraté, les conséquences seront profondes. Parce qu'un réseau blockchain est entier, centralisé, ouvert et consensuel, la conception d'un réseau basé sur la blockchain garantit que la fraude n'est théoriquement possible qu'après une mise en œuvre adéquate. Par conséquent, les caractéristiques uniques de la blockchain doivent être prises en compte. L'idée d'utiliser la technologie blockchain pour créer un réseau de vote électronique/en ligne inviolable prend de l'ampleur. Les utilisateurs finaux ne remarqueraient pas de différence significative entre un système de vote basé sur la blockchain et un système de vote électronique traditionnel. D'autre part, voter sur la blockchain sera un élément de données chiffré entièrement ouvert et stocké publiquement sur un réseau blockchain distribué plutôt que sur un seul serveur. Un processus de consensus sur un mécanisme blockchain valide chaque vote crypté, et le public enregistre chaque vote sur des copies distribuées du grand livre blockchain. Le système de vote blockchain est décentralisé et complètement ouvert, mais il garantit la protection des électeurs. Cela implique que n'importe qui peut compter les votes avec le vote électronique blockchain, mais personne ne sait qui a voté pour qui. Le vote électronique standard et le vote électronique basé sur la blockchain s'appliquent à des idées organisationnelles catégoriquement distinctes. 4.2.1 Avantages du vote électronique décentralisée Avec le système de vote actuel si défectueux et scruté, la blockchain vise à introduire une nouvelle façon pour les gens de voter et de communiquer. 25 Cependant, il y a certaines failles avec le système de vote actuel que la blockchain peut résoudre. Transparence Le premier avantage que la blockchain peut apporter est la transparence. Nous savons que sans transparence, les gens peuvent se décourager de la légitimité de leurs votes et peuvent soulever des questions sur la falsification et la falsification des résultats. La transparence fait une démocratie digne de confiance qui conduit ensuite à des résultats plus positifs des votes. C'est pourquoi il est important que tous les dossiers soient exacts et conservés en toute sécurité. La blockchain et son grand livre décentralisé peuvent susciter la confiance à chaque étape du processus de vote. En utilisant la blockchain, les votes peuvent être comptabilisés et stockés dans un grand livre public immuable. Cela signifie qu'ils peuvent être suivis et comptés tout en étant visibles par tout le monde. En retour, en permettant aux électeurs de voir en direct le nombre de votes qui arrivent, tout le monde pourra voir la légitimité du vote, ce qui permettra d'obtenir un système de vote transparent et fiable. Sécurité L'un des facteurs les plus importants du vote est la sécurité. Actuellement, les systèmes de vote sont très ouverts aux piratages. Sans mécanismes de sécurité substantiels en place, les acteurs malveillants peuvent entrer dans le système et modifier le résultat. C'est là que la blockchain entre en jeu. La technologie a la capacité d'introduire un système apparemment implacable. Tous les votes pourraient être vérifiés dès que le vote est terminé pour s'assurer qu'ils sont tous comptés correctement. Sans blockchain, cela devrait être fait par un organisme central supervisant le processus. Cela soulève de nombreuses questions sur la confiance de ces organismes centraux. Mais avec la blockchain et son système de grand livre décentralisé, il n'est pas nécessaire d'avoir un organisme central potentiellement faillible ou corruptible. Anonymat Les gens veulent de la vie privée lorsqu'ils votent et ne veulent pas toujours que les autres sachent pour qui ou pour quoi ils ont voté. Blockchain permet l'anonymat lors du vote. Comme pour les transactions sur la blockchain, les électeurs peuvent utiliser leurs clés privées pour rester anonymes. Ils peuvent ensuite voter dans le système sans craindre que les autres sachent comment ils ont voté. Avoir la capacité de garantir l'anonymat pourrait alors encourager plus de gens à participer et à utiliser le système de vote. Les systèmes de vote actuels prennent souvent du temps à rassembler et à traiter les réponses. Souvent, lorsque les bureaux de vote se trouvent dans 26 des zones différentes et que les bureaux ne sont pas tous ensemble, il peut être difficile de recueillir toutes les informations rapidement et efficacement. Cela entraîne ensuite des problèmes de temps et de coût. Mais la blockchain peut transformer tout cela. Au lieu d'avoir à attendre qu'un grand nombre de personnes communiquent manuellement, tous les organisateurs pourront voir le résultat instantanément sur la blockchain. Les résultats peuvent être recueillis et traités rapidement et immédiatement après la fin du vote. 4.2.2 Inconvénient vote électronique décentralisée Il y a plusieurs obstacles à la façon dont la blockchain devient toujours utile pour le vote à grande échelle et juridiquement contraignant. L'un d'eux est que la plupart des gens comprennent peu le fonctionnement des systèmes blockchain. Un autre, tout aussi vital, est que même les experts n’ont pas de moyen d’identifier toutes les irrégularités possibles dans le vote en ligne. Le vote sur papier, en revanche, est bien étudié et facile à vérifier. Un aspect crucial d'un système de vote blockchain est la méthode par laquelle le système informatique vérifie l'identité des électeurs. Lorsqu'un électeur vérifié établit un compte sur le système, ce processus crée une clé numérique qui l'identifie en toute sécurité lors du vote. Une clé plus complexe est plus difficile à pirater, mais nécessite également plus de ressources informatiques à vérifier. Il sera important de trouver un moyen de protéger l'intégrité du processus de vote, sans épuiser les budgets gouvernementaux en achetant une puissance de calcul avancée. La puissance de calcul requise peut rendre les systèmes blockchain inefficaces pour voter à l'échelle nationale - ou même à l'échelle de l'État, dans des États peuplés comme la Californie et le Texas. Le système électoral de Moscou, par exemple, à d’abord attribué des clés qui étaient faciles à pirater. Cela a ouvert la possibilité d'usurpation d'identité des électeurs, ce qui est assez grave. Mais cette faiblesse a également violé le principe du scrutin secret en faisant savoir aux pirates comment chaque personne à voter. Table 1 : E-vote centralisé vs E-vote décentralisé E-Vote centralisé E-Vote décentralisé 27 Table 1 : E-vote centralisé vs E-vote décentralisé Avantages ● simplifier le processus électoral et le rendre plus accessible aux électeurs. ● plus grande confidentialité aux personnes handicapées ● amélioration de l'accessibilité et la création de possibilités de vote ● résultats électoraux plus rapides et plus fiables ● moins coûteux à exploiter ● ● ● ● ● inconvénients ● menaces de virus informatiques et d'attaques de systèmes ● clivage numérique ● propice à la fraude et à la coercition ● éducation électorale coûteuse ● Impossible d’identifier irrégularités possibles ● Ressources informatiques conséquentes ● Gestion des clés Transparence Sécurité Anonymat Auditabilité Délai de traitement 5 Tableau comparatif (votes électroniques centralisé et décentralisé) 28 Partie 2: Approche méthodologique 1 Expression du besoin Nombre de besoins prennent place dans le cadre d’un vote et peuvent varier en fonction du contexte, ils induisent certaines caractéristiques qui ellesmêmes seront liées aux modalités de mise en œuvre. ● Décidabilité Le but premier est généralement de pouvoir décider d'une position, qu'il s'agisse d'une position consistant à prendre une décision, ou d'une position consistant à ne pas prendre de décision; c'est notamment le cas d'un référendum. ● Unicité du vote Généralement on souhaite l'unicité du vote: pour permettre à chacun d'être représenté, il ne faut pas permettre à un électeur de voter plusieurs fois, c'està-dire d'être sur représenté. ● Représentativité Certains systèmes de propriété (propriété au sens légal) conduisent à ce que les voix de chaque électeur soient pondérées par une quote-part de participation. ● Secret et transparence Suivant le scrutin, on peut souhaiter que le vote soit secret, afin de prévenir la corruption du vote, ou bien au contraire public, afin de contraindre à un positionnement assumé. ● Vérifiabilité Afin de lever tous doutes sur la légitimité du scrutin, lorsqu'un enjeu existe, on souhaite que le scrutin soit vérifiable, c'est-à-dire que l'on puisse démontrer aux yeux de tous l'absence de triches. On souhaite alors s'assurer que les personnes et matériels impliqués dans l'organisation ne soient pas détournés aux profits d'intérêts spécifiques. ● Attractivité Certaines organisations commerciales promeuvent des votes dans le but inavoué de susciter la participation à une action qui sans le dire est un acte d'achat. C'est notamment le cas des votes visant à l'achat par « numéros de services à valeur ajoutée » également connus sous l’appellation de communication téléphonique surtaxée. ● Non participation 29 Pour éviter qu'une décision ne soit prise par défaut ou pour pallier certains aléas, il est de coutume de permettre la non participation, par exemple au travers de l'abstention, ou du vote nul ou blanc. ● Quorum et majorité Pour donner une légitimité accrue à la prise de décision, la méthode de vote peut être corrélée à un système de quorum et/ou de majorité qualifiée. ● Rapidité Dans un vote où l'on attend un résultat positif, il est d'usage de demander d'abord qui est contre et ensuite qui s'abstient. Les personnes qui ne se prononcent pas sont alors supposées en faveur de la décision. Ceci présente un double avantage: cela évite de devoir compter les nombreux pour, tout en maximisant leur nombre. 2 Modélisation De même qu’on trace un grand plan avant de réaliser une construction, il faut modéliser un système avant de le réaliser. Le développement d’un logiciel nécessite une grande attention qui garantit sa faisabilité. Pour réaliser une application, il ne suffit pas de coder. Il faut organiser ses idées, les documenter puis organiser la réalisation en définissant les étapes. c'est cette démarche antérieure à l'écriture du code que l’on appelle la modélisation. Parmi les nombreux outils de modélisations existant notre choix s'est porté sur UML. C’est un langage standardisé de modélisation. Elle s’effectue sur deux principaux aspects : la modélisation statique et la modélisation dynamique. 2.1 Diagramme de cas d’utilisation Parmi les sept diagrammes dynamiques, nous utiliserons les diagrammes de cas d’utilisation pour la description des fonctionnalités du système, les diagrammes de séquences pour voir de façon claire, comment les messages sont échangés entre les différents objets en activités. Parmi ces sept diagrammes, nous utilisons les diagrammes de cas d'utilisation pour la description des fonctionnalités du système, les diagrammes de séquence pour voir de façon claire, comment les messages sont échangés entre les différents objets et activités. Les grandes fonctionnalités du système ainsi que les utilisateurs sont déterminés grâce au diagramme de cas d'utilisation. Ce diagramme nous permet d'écrire le système de telle façon qu'un utilisateur le voit de l'extérieur. 30 Il fragmente les fonctionnalités du système en unités cohérentes: les cas d'utilisateurs représentant les fonctionnalités du système. Ainsi, les cas d'utilisations permettent d'extérioriser les besoins des utilisateurs de notre système. Ce diagramme serait donc constitué d'un ensemble d'utilisateurs qui agit sur des cas d'utilisation. UML n'emploie pas le terme d'utilisateurs mais d'acteurs. Les acteurs d'un système sont des entités externes à ce système qui interagissent avec lui. Liste des acteurs ● Un EA qui est responsable d’ajouter un candidat, enregistrer un ou plusieurs élections. Il a le pouvoir de paramétrer le système, modifier des candidats et des électeurs. Cependant il a la possibilité d'effectuer toutes les opérations qu'un électeur pourrait effectuer. ● Un électeur est celui qui a le droit de s'inscrire à une élection, effectuer un vote, voir la liste des candidats, voir les postes des candidats. ● Un candidat est a les mêmes droits qu’un électeur tout en sachant qu’un compte électeur lui est automatiquement créé au moment où l’EA l’ajoute à la liste des candidats. Le diagramme des cas d'utilisation est un modèle qui représente les différents acteurs, ainsi que les interactions de ces derniers avec le système par ailleurs, elle représente aussi les relations qui existent entre les acteurs, d'une part et les cas d'utilisation d'autre part. La figure ci-dessous présente de façon globale les différentes fonctionnalités qu'offre le système à l'utilisateur. 31 Image 8: Diagramme de cas d’utilisation 2.2 Diagrammes de séquences Parmi les diagrammes qui décrivent la dynamique du système, UML propose les diagrammes d'interactions dont le diagramme de séquence en fait partie. Les diagrammes de séquences représentés ci-dessous présentent les interactions entre les différents objets de notre système afin de réaliser un cas d’utilisation. Pour le réaliser, on représente la ligne de chaque objet par un trait pointillé vertical. Cette ligne de vie sert de point de départ ou d'arrivée à des messages représentés eux-mêmes par des lignes horizontales. Par convention, le temps s'écoule de haut en bas. Il indique ainsi visuellement la séquence relative des réceptions de messages, d'où la dénomination diagramme de séquence. 32 Image 9: Inscription électeur Cette figure ci-dessus présente les différents messages échangés entre l’utilisateur, l’application et le serveur de base de données. L’utilisateur grâce à son interface remplit le formulaire d’inscription qui est ensuite soumis au serveur de base de données qui le stocke et génère un mot de passe qu’il va non seulement sauvegarder mais aussi l’envoyer à l'utilisateur afin qu’il puisse le rentrer, activer son compte et se connecter. 33 Image 10: Connexion électeur Cette figure ci-dessus présente les différents aspects de la connexion d’un utilisateur. Les messages sont échangés entre l’utilisateur, l’application et le serveur. La connexion est à quelques éléments près semblable au processus d’inscription. L'utilisateur remplit le formulaire de connexion. Celui-ci est soumis au serveur de base de données qui va vérifier si les informations soumises sont présentes. Un code est alors généré et lui est envoyé. On a là un système d’authentification multi-facteurs. Image 11: Vote 34 Cette figure ci-dessus présente le processus de vote de l'électeur. Il lui est demandé de se connecter via la plateforme pour pouvoir effectuer un vote. Une fois ceci fait, pour voter il lui faudra générer une paire de clés. L’utilisateur pourra ensuite choisir un candidat parmi ceux disponibles et voter pour lui. Image 12: Inscription et Connexion du EA Cette figure ci-dessus présente les différents aspects d’authentification de l’EA, l'inscription et la connexion. Ces processus sont similaires à ceux de l’utilisateur. 35 Image 13: Création élection Ces deux figures présentes l’aptitude du EA à créer une élection. Une fois inscrit et connecté, le EA devra avant tout comme l’utilisateur avoir une paire de clé. Il fera une demande de gaz pour pouvoir écrire sur la blockchain et enfin créer le smart-contract liée à l'élection. Image 14: Création candidat Cette figure ci-dessus présente le processus de création de candidat par le EA. Il remplit le formulaire, fait appelle au smart contrat et écrit le tout sur la blockchain sous forme de transaction. 36 3 Architecture générale La conception de l’architecture est une phase particulièrement importante du développement d’un logiciel. Elle conditionne sa stabilité, son efficacité et sa pérennité. Au contraire, certaines applications peuvent connaître des faiblesses dues à une architecture mal pensée, pas ou plus adaptée au contexte. Architecture que nous vous présentons ci-dessous. 37 Partie 3: Réalisation 1 Etudes comparatives 1.1 Bitcoin vs Ethereum L'éther (ETH), la crypto-monnaie du réseau Ethereum, est le deuxième jeton numérique le plus populaire après Bitcoin (BTC). En tant que deuxième crypto-monnaie en importance par capitalisation boursière, les comparaisons entre Éther et BTC ne sont que naturelles. L'éther et le bitcoin sont similaires à bien des égards : chacun est une monnaie numérique négociée via des échanges en ligne et stockée dans divers types de portefeuilles de cryptomonnaie. Ces deux jetons sont décentralisés, ce qui signifie qu'ils ne sont pas émis ou réglementés par une banque centrale ou une autre autorité. Les deux utilisent la technologie du grand livre distribué connue sous le nom de blockchain. Cependant, il existe également de nombreuses distinctions cruciales entre les deux cryptomonnaies les plus populaires par capitalisation boursière. 1.1.1 Bitcoin Bitcoin a été lancé en janvier 2009. Il a introduit une idée nouvelle énoncée dans un livre blanc du mystérieux Satoshi Nakamoto - bitcoin offre la promesse d'une monnaie en ligne sécurisée sans aucune autorité centrale, contrairement aux devises émises par le gouvernement. Il n'y a pas de bitcoins physiques, seulement des soldes associés à un grand livre public sécurisé cryptographiquement. Bien que Bitcoin n'ait pas été la première tentative d'une monnaie en ligne de ce type, il a été le plus réussi dans ses premiers efforts, et il est devenu connu comme un prédécesseur d'une certaine manière à pratiquement toutes les cryptomonnaies qui ont été développées au cours de la dernière décennie. Au fil des ans, le concept d'une monnaie virtuelle et décentralisée a été accepté par les organismes de réglementation et les organismes gouvernementaux. Bien qu'il ne s'agisse pas d'un moyen de paiement ou d'une réserve de valeur officiellement reconnue, la crypto-monnaie a réussi à se tailler un créneau et continue de coexister avec le système financier malgré son examen et un débat réguliers. 38 1.1.2 Ethereum La technologie Blockchain est utilisée pour créer des applications qui vont audelà de la simple activation d'une monnaie numérique. Lancé en juillet 2015, Ethereum est la plate-forme logicielle décentralisée ouverte la plus grande et la plus bien établie. Ethereum permet de construire et d'exécuter des contrats intelligents et des applications décentralisées sans temps d'arrêt, fraude, contrôle ou interférence d'un tiers. Ethereum est livré avec son propre langage de programmation qui s'exécute sur une blockchain, permettant aux développeurs de créer et d'exécuter des applications distribuées. Les applications potentielles d'Ethereum sont vastes et sont alimentées par son jeton cryptographique natif, l'éther (communément abrégé en ETH). En 2014, Ethereum a lancé une prévente d'éther, qui a reçu une réponse écrasante. L'éther est comme le carburant pour exécuter des commandes sur la plate-forme Ethereum et est utilisé par les développeurs pour créer et exécuter des applications sur la plate-forme. L'éther est principalement utilisé à deux fins - il est négocié comme une monnaie numérique sur les bourses de la même manière que les autres cryptomonnaies, et il est utilisé sur le réseau Ethereum pour exécuter des applications. Selon Ethereum, "les gens du monde entier utilisent l'ETH pour effectuer des paiements, comme réserve de valeur ou comme garantie". 1.1.3 Principales différences Alors que les réseaux Bitcoin et Ethereum sont alimentés par le principe des grands livres distribués et de la cryptographie, les deux diffèrent techniquement à bien des égards. Par exemple, les transactions sur le réseau Ethereum peuvent contenir du code exécutable, tandis que les données apposées sur les transactions du réseau Bitcoin ne servent généralement qu'à tenir des notes. D'autres différences comprennent le temps de bloc (une transaction éther est confirmée en secondes par rapport aux minutes pour Bitcoin) et les algorithmes sur lesquels ils s'exécutent, SHA-256 pour Bitcoin et Ethash pour Ethereum. Bitcoin et Ethereum utilisent actuellement un protocole consensuel appelé Proof of Work (PoW), qui permet aux nœuds des réseaux respectifs de s'entendre sur l'état de toutes les informations enregistrées sur leurs blockchains et d'empêcher certains types d'attaques économiques sur les réseaux. En 2022, Ethereum passera à un autre système appelé Proof of Stake (PoS) dans le cadre de sa mise à niveau Eth2, un ensemble de mises à niveau interconnectées qui rendront Ethereum plus évolutif, sécurisé et durable. Une critique majeure de Proof of Work est qu'elle est très énergivore 39 en raison de la puissance de calcul requise. Proof of Stake remplace la puissance de calcul par le jalonnement - ce qui le rend moins énergivore - et remplace les mineurs par des validateurs, qui jalonnent leurs avoirs en crypto monnaie pour activer la capacité de créer de nouveaux blocs. Plus important encore, cependant, les réseaux Bitcoin et Ethereum sont différents en ce qui concerne leurs objectifs généraux. Alors que Bitcoin a été créé comme alternative aux monnaies nationales et aspire ainsi à être un moyen d'échange et une réserve de valeur, Ethereum était conçu comme une plate-forme pour faciliter les contrats et les applications programmables immuables via sa propre monnaie. Le BTC et l'ETH sont tous deux des monnaies numériques, mais l'objectif principal de l'éther n'est pas de s'imposer comme un système monétaire alternatif, mais plutôt de faciliter et de monétiser le fonctionnement de la plateforme de contrat intelligent et d'application décentralisée. Ethereum est un autre cas d'utilisation pour une blockchain qui prend en charge le réseau Bitcoin et ne devrait théoriquement pas vraiment concurrencer Bitcoin. Cependant, la popularité de l'éther l'a poussé en concurrence avec toutes les crypto-monnaies, en particulier du point de vue des traders. Pendant la majeure partie de son histoire depuis le lancement de la mi-2015, l'éther a été proche derrière Bitcoin sur le classement des meilleures cryptomonnaies par capitalisation boursière. L’écocystémique d'Ethereum se développe à pas de géant, grâce à la popularité croissante de ses applications dans des domaines tels que la finance (finance décentralisée ou applications DéFi), les arts et les objets de collection (jetons non fongibles, ou TVN), les jeux et la technologie. Cela a permis à l'ETH d'augmenter de 510 % en 2021 (au 29 novembre 2021), contre un gain de 93 % pour BTC. Par conséquent, alors que la capitalisation boursière d'ETH n'était que d'environ un dixième de celle de BTC en janvier 2020, en novembre 2021, la capitalisation boursière d'ETH de 528 milliards de dollars était d'environ la moitié de celle des 1,08 billions de dollars de BTC. 1.2 Php vs JavaScript Le PHP est un langage open source créé en 2004 par Rasmus Lerdorf. Le nom vient de Personal Home Page Tools – un ensemble de scripts utilisés par Rasmus pour suivre les visites sur son site. Avec le lancement de PHP 3.0, le langage a obtenu un acronyme inversé : PHP : Préprocesseur Hypertexte. De nos jours, il est simplement connu sous le nom de PHP. 40 JavaScript a été créé en 1995 par Brendan Eich de Netscape pour apporter de l’interactivité au Web. Initialement connu sous le nom de Mocha, le nom a été changé en LiveScript, puis en JavaScript pour profiter de la popularité du langage Java. Aujourd’hui, JavaScript est officiellement connu sous le nom d’ECMAScript, mais la plupart des gens l’appellent encore JavaScript. Les deux langages existent donc depuis un certain temps. 1.2.1 PHP PHP signifie "Hypertext Preprocessor", est un langage de programmation intégré dans HTML qui fait toutes sortes de choses comme créer du contenu Web personnalisé, envoyer et recevoir des cookies, évaluer les données de formulaire envoyées par un navigateur, etc. Il est intégré à un certain nombre de bases de données populaires comme Postgresql, Oracle, Sybase, SQL et MySQL. PHP prend également en charge les principaux protocoles tels que IMAP, POP3 et LDAP. PHP peut gérer les formulaires, enregistrer des données dans un fichier, renvoyer des données à l'utilisateur, collecter des données à partir de fichiers, etc. 1.2.2 JavaScript Alors que JavaScript est conçu pour créer des applications centrées sur le réseau. Avec JavaScript, les pages Web ne seront plus statiques et permettront au programme qui interagit avec l'utilisateur, de contrôler le navigateur et de créer dynamiquement le contenu HTML. L'avantage de JavaScript est qu'il a moins d'interaction avec le serveur, il s'exécute côté client, ce qui signifie moins de charge sur votre serveur et moins de trafic serveur. JavaScript permet un retour immédiat aux visiteurs. 41 1.2.3 Tableau comparatif Table 2 : Java Script VS PHP Caractéristiques Java-Script PHP Développé par Brendan Eich (1995) Rasmus Lerdorf (1994) Orienté objet Oui Oui Code existant facile à utiliser Oui Oui Langage de script côté serveur Non Oui Langage de script côté client Oui Non Accepte les variables booléennes majuscules et minuscules Non Oui Sensible au cas des variables Oui Oui Fonction sensible à la casse Oui Non Objets et tableaux interchangeables Oui Non Nécessite HTTP pour exécuter Oui Oui Met à jour les fichiers sur le serveur Non Oui 42 Table 2 : Java Script VS PHP Exécuter avec la fenêtre du navigateur Oui Non Cadre de soutien Oui Oui Indépendant de la plateforme Oui Oui Open Source Oui Oui Base de données de soutien Non Oui Gestion de la mémoire (collecte des ordures) Oui Oui Bibliothèque Oui Oui Manipulation exceptionnelle Oui Oui Performance Rapide Lent Prise en charge des fonctionnalités Moins Plus 1.3 React Native vs Flutter React Native et Flutter sont les technologies les plus populaires pour le développement de logiciels multi plateformes d'applications mobiles pendant deux années consécutives, selon Statista. Leur taux d'adoption continue de croître et de dépasser la concurrence. 43 Contrairement à une approche native de développement mobile, Flutter et React Native permettent la création d'une base de code unique qui fonctionne à la fois pour les appareils iOS et Android. Comme il y a moins de codage requis, les applications peuvent être publiées plus rapidement et avec un budget plus petit. Ainsi, ces deux boîtes à outils de développement mobile sont devenues extrêmement populaires. 1.3.1 Performances Les journalistes de The Startup sur Médium ont partagé une étude de performance décente des approches natives et multiplateformes dans le développement d'applications mobiles. Ils ont effectué plusieurs tests sur de vrais smartphones Android et iOS et ont comparé le temps d'exécution des calculs Pi-digits implémentés avec les langages de programmation Flutter, React Native et Native (Swift/Obj-C pour Apple, Java/Kotlin pour Android). Consultez les résultats inattendus dans le tableau ci-dessous. Table 3 : Performances React Native vs Flutter Type de tâche de programmation pour le benchmark iOS (ms) Android (ms) React natif Flutter Origin React aire natif Flutter Originai re Test intensif en CPU avec la tâche algorithmique de Borwein 582 180 26 822 285 144 Test intensif en mémoire avec tâche algorithme de GaussLegendre 2'992 189 173 3'289 273 223 Il ne fait aucun doute que les performances les plus élevées dans toutes les tâches de programmation sont l'avantage distinctif du développement mobile natif. Cependant, avec les cadres multiplateformes, tout n'est pas très simple. Flutter n'a montré que de 9 à 22 % de performances inférieures dans les tests gourmands en mémoire par rapport à Native. Bien que dans les tâches 44 intensives en calcul, il soit 2 à 6 fois plus lent que Native. React Native a montré les pires performances dans tous les tests. Il est 2 à 15 fois plus lent que Flutter et 5-21 fois plus lent que Native. 1.3.2 Capacités de conception et de graphiques de React Native vs. Applications Flutter React Native et Flutter ont tous deux d'excellentes fonctionnalités graphiques, bien qu'ils utilisent des approches complètement différentes pour dessiner des interfaces utilisateur. Les graphismes parfaits au pixel près et les animations complètes pourraient être réalisés avec chacune de ces technologies. React Native hérite d'éléments visuels et d'apparence natifs : boutons, navigation, menus, etc. Ces éléments semblent natifs de l'utilisateur et offrent une expérience personnalisée transparente. Dans le cas des mises à jour du système d'exploitation, les éléments de l'application seront mis à jour respectivement et maintiendront la sensation de nativité et de similitude avec d'autres applications natives. Bien que vous devez garder à l'esprit que l'application aura toujours l'air légèrement différente sur les appareils iOS et Android, ainsi que sur différentes versions du firmware. Avec Flutter, l'application se ressemblera malgré la version du système d'exploitation ou le modèle d'appareil. La navigation et les éléments resteront inchangés à moins d'être intentionnellement mis à niveau par l'ingénieur logiciel. Lorsqu'ils sont développés à la hâte ou sans inattention, les utilisateurs d'Android pourraient attraper des menus étranges de style iOS ou les utilisateurs d'Apple pourraient lutter contre des éléments de style Android. L'apparence générale de l'application rappelle davantage les cadres hybrides (Xamarin, Ionic, Cordova) que les cadres natifs. Avec des efforts supplémentaires, vous pouvez obtenir une sensation native personnalisée et rechercher les deux plates-formes individuellement, ce qui est d'ailleurs disponible sur le marché avec React Native. Cependant, il est beaucoup plus facile d'implémenter un style neutre commun pour tous les appareils et d'économiser sur la portée du projet. 1.3.3 Fiabilité et soutient supplémentaire Les deux frameworks sont open-source et distribués conformément à des licences sans autorisation, même s'ils ont été créés par les plus grandes entreprises technologiques du monde : React Native a été développé par Facebook et Flutter par Google. Ces deux géants de l'informatique ont créé certaines de leurs propres applications à l'aide de ces SDK, par exemple, 45 l'application Facebook, Instagram, Google Ads et l'application Google Pay. Ils sont donc clairement préoccupés par la fiabilité, le soutien et la poursuite de l'élaboration des cadres. Flutter est plus simple et résistant aux modifications apportées par les mises à jour des systèmes d'exploitation. React Native dépend des éléments natifs de l'appareil qui nécessitent des efforts d'adaptation supplémentaires séparément pour les applications iOS et Android en cas de mises à jour du système. 2 Sécurité La sécurité informatique protège l'intégrité des technologies de l'information. Cette sécurité passe par le respect de la confidentialité, de l'intégrité mais aussi de la disponibilité des données, ici du vote. Dans ce sens, nous allons vous présenter ci-dessous, des formes complexifiées de nos différents diagrammes de séquences traitées plus haut. Ceux concernées seront le diagramme de vote et de création d'élection. 46 Image 15: Vote Sécurité Ce diagramme ci-dessus vous présente le processus de vote de l’utilisateur. Nous supposons ici que l'électeur est déjà connecté, qu’il a la liste des candidats devant lui et s'apprête à procéder au vote. Pour effectuer un vote, l’utilisateur se doit d'être muni d’une paire de clés (publique et privée). Celle-ci n'est pas générée par défaut et se doit de l'être par l'électeur en appuyant sur le bouton lui étant dédié, sur la plateforme. Ces paires de clés sont générées avec l’algorithme ECDSA qui se base sur les courbes elliptiques. La clé privée est ensuite chiffrée avec un algorithme de chiffrement par mot de passe. Elle finit sauvegardé couplé de la clé publique dans la base de données. L'électeur peut alors choisir son candidat. Un mot de passe lui sera demandé faisant référence au mot de passe ayant permis de chiffrer la clé privée, 47 permettant à son tour de la déchiffrer et de l’utiliser pour procéder au vote. Vote qui sera inscrite sur la blockchain Ethereum sous forme de transaction. Image 16: Création élection Sécurité Ce diagramme ci-dessus vous présente le processus de création d'élection du EA. Nous supposons ici que le EA est déjà connecté, qu’il a la liste des élections (déjà créées) devant lui et s'apprête à en créer un autre. Pour créer l'élection, l'EA doit remplir le formulaire de l'élection qui répertorie les différentes informations de celle-ci. Il doit aussi récupérer sa clé privée qu’il aura préalablement générée de la même en suivant les mêmes étapes que l'électeur. Il se doit ensuite d'être muni d’une paire de clés (publique et privée). Celle-ci n'est pas générée par défaut et se doit de l'être par l'électeur en appuyant sur le bouton lui étant dédié, sur la plateforme. Ces paires de clés sont générées avec l’algorithme ECDSA qui se base sur les courbes elliptiques. La clé privée est ensuite chiffrée avec un algorithme de chiffrement par mot de passe. Elle finit sauvegardé couplé à la clé publique dans la base de données. Un mot de passe lui est peut après demandé faisant référence au mot de passe ayant permis de chiffrer la clé privée, permettant à son tour de la déchiffrer et de l’utiliser pour créer l'élection. Cette élection s'écrit sur la 48 blockchain et demande donc un certain nombre de gas, qui ici, n’est pas donnée au EA par défaut. Il va donc faire cette demande, qui une fois attribuée, permettra de créer le smart contract liée à l'élection. 3 Architecture adoptée 4 Implémentation et qualité 4.1 performances et sécurité applicative 4.2 Conformité 4.3 failles 49 Conclusion 50 Bibliographie et Webographie 51