Telechargé par muhammadtoure0

PFA - Vote Electronique Decentralisé

publicité
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
Téléchargement