Protocole #1

Open
opened 2024-06-18 15:20:01 +02:00 by faraphel · 4 comments
Contributor

Le protocole à implémenter doit avoir été pensé à l'avance afin de satisfaire les propriétés recherchées.

Le protocole à implémenter doit avoir été pensé à l'avance afin de satisfaire les propriétés recherchées.
faraphel added this to the PCA-Project project 2024-06-18 15:20:01 +02:00
Author
Contributor

Nous pouvons nous baser sur les algorithmes suivants :

https://en.wikipedia.org/wiki/Certificate_authority : Autorité de certification permettant de définir une hiérarchie de certificats.
https://en.wikipedia.org/wiki/Blind_signature : Signature permettant à un électeur de voter anonymement tout en étant comptabilisé par le destinataire afin de s'assurer que la personne ne vote qu'une seule fois.

Nous pouvons nous baser sur les algorithmes suivants : https://en.wikipedia.org/wiki/Certificate_authority : Autorité de certification permettant de définir une hiérarchie de certificats. https://en.wikipedia.org/wiki/Blind_signature : Signature permettant à un électeur de voter anonymement tout en étant comptabilisé par le destinataire afin de s'assurer que la personne ne vote qu'une seule fois.
Collaborator

Authentification

Le protocole de l’étape d’authentification permet de :

  • Vérifier que la carte est bonne (lecture clé publique et challenge de la clé privée).
  • Vérifier que la carte appartient à l’électeur (code PIN).
  • Vérifier que la clé publique est dans la liste électorale.
  • Vérifier l’identité de la personne (empreinte digitale).
  • Vérifier que l’empreinte est associée à la personne dans la liste électorale.

L’empreinte digitale permet une authentification par elle-même sans devoir utiliser de carte d’élection avec PIN. Nous l’avons ajouté pour imposer une authentification à deux facteurs.

Notre protocole est inspirée du protocole DDA (Dynamic Data Authentification) qui permet l’authentification d’une carte bancaire sur un terminal de paiement : https://interstices.info/le-protocole-cryptographique-de-paiement-par-carte-bancaire/.

Acteurs

La personne et sa carte (C)

La carte contient :

  • Zone publique :

    • x (Certificat de sa clé privée par l’émetteur de la carte (CA intermédiaire) (préfecture ?).)
    • x (Certificat de l’émetteur de la carte par le CA racine (big boss).)
    • Pas besoin de certificats car l’identité d’une personne avec sa clé publique se trouve dans la liste électorale.
    • Clé publique
  • Zone privée

    • Clé privée
    • Code PIN chiffré

La carte peut communiquer les informations de sa zone publique et chiffrer de la donnée en asymétrique avec sa clé privée.

La machine (M)

La machine possède son propre certificat signé. Il permet de savoir que la machine a été validée pour l’élection.

Étapes de l’authentification sur la machine

Début

Vérifier que la carte est celle qu’elle dit être (elle a la clé privée de la clé publique transmise) :
1.  Machine ---> Personne : « Authentification »
2.  Carte   ---> Machine  : pub_key_carte
3.  Machine ---> Carte    : rand_num
4.  Carte   ---> Machine  : Enc(rand_num, secret_key_carte) # Challenge que la carte a bien la clé secrète

Continuer si Dec(Enc(rand_num, secret_key_carte), pub_key_carte) = rand_num.

Vérifier que la personne est propriétaire de la carte (authentification avec code PIN avec Carte) :
5.  Machine ---> Personne : « Code ? »
6.  Personne --> Machine  : 3456
7.  Machine ---> Carte    : Enc(3456, public_key_carte) # Vérification que la personne connait le code de la carte.
8.  Carte   ---> Machine  : ok

Continuer si pub_key_carte dans BDD_liste_électorale.

Vérifier l’identité de la personne (si authentification avec empreinte digitale) :
9.  Machine ---> Personne : « Empreinte digitale ? »
10. Personne --> Machine  : empreinte

Continuer si le couple (pub_key_carte, Hash(empreinte)) dans BDD_liste_électorale.

Retourner l’identité de la personne qui a été authentifiée : même personne ou  différente si procuration.

Fin

(1) La machine dit à la personne qu’elle doit présenter sa carte pour s’authentifier. (2) La carte transmet la clé publique à la machine.

Vérification clé privée / clé privée : (3) La machine envoie un challenge (nombre aléatoire) à la carte pour vérifier qu’elle a la clé secrète;
(4) La carte renvoie à la machine le challenge chiffré.

Deux étapes / alternatives qui ont pour but d’authentifier le détenteur de la carte. Avec code PIN :

  • (5) La machine demande le code PIN à la personne qui le rentre (6). Elle le chiffre est l’envoie pour vérification à la carte (7). La carte compare le chiffré avec celui enregistré dans sa zone privée. (8) Elle renvoie s’il est bon ou pas.
  • La machine teste si la clé publique existe dans la base électorale.

On n’a plus besoin de la carte à partir de là. S’il n’y a pas de vérification d’empreinte, c’est fini. Sinon la base de donnée contient une colonne pour les empreintes digitales :

  • (9) La machine demande l’empreinte à la personne qui la donne (10).
  • La machine teste si le couple (clé publique, Hash(empreinte)) est dans la base.

La personne est authentifiée (soit pour elle-même, soit pour une autre personne si procuration). Elle peut passer au vote.

Limites

(-) : Régression par rapport au vote en papier en France.

Code :

- Pourquoi avec un code PIN si l’identité de la personne possédant la carte est vérifiée avec l’empreinte digitale ?

  • On ne peut pas vote si on oublie son code PIN au moment du vote. (-)
  • Si oublie du code PIN avant le vote :
    • Créer une nouvelle carte.
    • Ou renseigner un nouveau code PIN en gendarmerie.

Empreinte :

  • Une personne qui n’a pas d’empreintes digitales ne pourra pas voter. Exclusion de personnes du vote .(-)
  • Problèmes de lecture d’empreinte (doigt blessé) le jour du vote. (-)

Fraudes électorales :

  • Si uniquement code PIN : une personne qui a une carte de quelqu’un d’autre et connait son code peut voter à sa place. Usurpation d’identité (-)

Distribution des cartes :

  • Les cartes de votes sont des documents officielles qui doivent être distribuées individuellement. Le PIN doit être communiqué de manière confidentielle ou choisi en gendarmerie. Nouvelle carte officielle à gérer. (-)

BDD liste électorale :

  • La liste électorale de la machine (avec clés publiques et empreintes) ne doit pas être corrompue et vérifiable par n’importe qui.
    • Impossible à n’importe qui de la vérifier à tout moment car l’accès à la machine est interdite en dehors du vote. (-)

Machine :

  • La machine ne doit pas être piratée de l’extérieur.
# Authentification Le protocole de l’étape d’authentification permet de : - Vérifier que la carte est bonne (lecture clé publique et challenge de la clé privée). - Vérifier que la carte appartient à l’électeur (code PIN). - Vérifier que la clé publique est dans la liste électorale. - Vérifier l’identité de la personne (empreinte digitale). - Vérifier que l’empreinte est associée à la personne dans la liste électorale. L’empreinte digitale permet une authentification par elle-même sans devoir utiliser de carte d’élection avec PIN. Nous l’avons ajouté pour imposer une authentification à deux facteurs. Notre protocole est inspirée du protocole DDA (Dynamic Data Authentification) qui permet l’authentification d’une carte bancaire sur un terminal de paiement : [https://interstices.info/le-protocole-cryptographique-de-paiement-par-carte-bancaire/](https://interstices.info/le-protocole-cryptographique-de-paiement-par-carte-bancaire/#3). ## Acteurs ### La personne et sa carte (C) La carte contient : - Zone publique : - x (Certificat de sa clé privée par l’émetteur de la carte (CA intermédiaire) (préfecture ?).) - x (Certificat de l’émetteur de la carte par le CA racine (big boss).) - Pas besoin de certificats car l’identité d’une personne avec sa clé publique se trouve dans la liste électorale. - Clé publique - Zone privée - Clé privée - Code PIN chiffré La carte peut communiquer les informations de sa zone publique et chiffrer de la donnée en asymétrique avec sa clé privée. ### La machine (M) La machine possède son propre certificat signé. Il permet de savoir que la machine a été validée pour l’élection. ## Étapes de l’authentification sur la machine ``` Début Vérifier que la carte est celle qu’elle dit être (elle a la clé privée de la clé publique transmise) : 1. Machine ---> Personne : « Authentification » 2. Carte ---> Machine : pub_key_carte 3. Machine ---> Carte : rand_num 4. Carte ---> Machine : Enc(rand_num, secret_key_carte) # Challenge que la carte a bien la clé secrète Continuer si Dec(Enc(rand_num, secret_key_carte), pub_key_carte) = rand_num. Vérifier que la personne est propriétaire de la carte (authentification avec code PIN avec Carte) : 5. Machine ---> Personne : « Code ? » 6. Personne --> Machine : 3456 7. Machine ---> Carte : Enc(3456, public_key_carte) # Vérification que la personne connait le code de la carte. 8. Carte ---> Machine : ok Continuer si pub_key_carte dans BDD_liste_électorale. Vérifier l’identité de la personne (si authentification avec empreinte digitale) : 9. Machine ---> Personne : « Empreinte digitale ? » 10. Personne --> Machine : empreinte Continuer si le couple (pub_key_carte, Hash(empreinte)) dans BDD_liste_électorale. Retourner l’identité de la personne qui a été authentifiée : même personne ou différente si procuration. Fin ``` (1) La machine dit à la personne qu’elle doit présenter sa carte pour s’authentifier. (2) La carte transmet la clé publique à la machine. Vérification clé privée / clé privée : (3) La machine envoie un challenge (nombre aléatoire) à la carte pour vérifier qu’elle a la clé secrète; (4) La carte renvoie à la machine le challenge chiffré. Deux étapes / alternatives qui ont pour but d’authentifier le détenteur de la carte. Avec code PIN : - (5) La machine demande le code PIN à la personne qui le rentre (6). Elle le chiffre est l’envoie pour vérification à la carte (7). La carte compare le chiffré avec celui enregistré dans sa zone privée. (8) Elle renvoie s’il est bon ou pas. - La machine teste si la clé publique existe dans la base électorale. On n’a **plus besoin** de la carte à partir de là. S’il n’y a pas de vérification d’empreinte, c’est fini. Sinon la base de donnée contient une colonne pour les empreintes digitales : - (9) La machine demande l’empreinte à la personne qui la donne (10). - La machine teste si le couple (clé publique, Hash(empreinte)) est dans la base. La personne est authentifiée (soit pour elle-même, soit pour une autre personne si procuration). Elle peut passer au vote. ## Limites (-) : Régression par rapport au vote en papier en France. Code : - Pourquoi avec un code PIN si l’identité de la personne possédant la carte est vérifiée avec l’empreinte digitale ? - On ne peut pas vote si on oublie son code PIN au moment du vote. (-) - Si oublie du code PIN avant le vote : - Créer une nouvelle carte. - Ou renseigner un nouveau code PIN en gendarmerie. Empreinte : - Une personne qui n’a pas d’empreintes digitales ne pourra pas voter. Exclusion de personnes du vote .(-) - Problèmes de lecture d’empreinte (doigt blessé) le jour du vote. (-) Fraudes électorales : - Si uniquement code PIN : une personne qui a une carte de quelqu’un d’autre et connait son code peut voter à sa place. Usurpation d’identité (-) Distribution des cartes : - Les cartes de votes sont des documents officielles qui doivent être distribuées individuellement. Le PIN doit être communiqué de manière confidentielle ou choisi en gendarmerie. Nouvelle carte officielle à gérer. (-) BDD liste électorale : - La liste électorale de la machine (avec clés publiques et empreintes) ne doit pas être corrompue et vérifiable par n’importe qui. - Impossible à n’importe qui de la vérifier à tout moment car l’accès à la machine est interdite en dehors du vote. (-) Machine : - La machine ne doit pas être piratée de l’extérieur.
Collaborator

Vote

Le protocole suivant décrit le vote après authentification (vote par procuration ou vote personnel). On a déjà vérifié que la personne était inscrite dans la liste électorale de la machine.

Bases de données

  1. Base publique des clés publiques des personnes qui ont l’autorisation de voter à ce bureau de vote.
  2. Base publique des preuves de vote des personnes qui ont voté (signature par la Machine)).
  3. Base privée non ordonnée des votes en claires.

Étapes

Vérification

  1. On vérifie si la clé publique de la personne n’est pas déjà dans la base des ayant votées.
  2. La machine autorise le vote et la personne fait son vote.
  3. Le vote est ajouté (en clair) dans la base secrète des votes de façon aléatoire.
  4. Le serveur créé une preuve de vote avec la date et la clé publique de la personne.
    Elle est ajoutée à la base publique des preuves de votes.
  5. La machine confirme que le vote a été pris en compte.

Fin de l’élection

C’est à ce moment que la machine publie les résultats :

  • S’ils n’étaient pas mélangés, elle mélange les votes de la base.
  • Elle fait une signature de l’ensemble de la base avec la date.
  • Elle publie les votes (la donnée) avec la signature (comment se fait la publication ?).

Limites

La machine ne doit absolument pas être compromise.

La non compromission est assurée par :

  • Tout le monde a accès au code source de la machine.
  • La machine n’est pas vulnérable aux attaques à travers le réseau (network).
  • Le vote a lieu dans un bureau, tout le monde peut vérifier que personne n’accède physiquement à la machine.
  • Une personne n’a le droit de toucher à la machine qu’après la publication les résultats.
# Vote Le protocole suivant décrit le vote après authentification (vote par procuration ou vote personnel). On a déjà vérifié que la personne était inscrite dans la liste électorale de la machine. ## Bases de données 1. Base **publique** des clés publiques des personnes qui ont l’autorisation de voter à ce bureau de vote. 2. Base **publique** des preuves de vote des personnes qui ont voté (signature par la Machine)). 3. Base **privée** **non ordonnée** des votes en claires. ## Étapes ### Vérification 1. On vérifie si la clé publique de la personne n’est pas déjà dans la base des ayant votées. 2. La machine autorise le vote et la personne fait son vote. 3. Le vote est ajouté (en clair) dans la base secrète des votes de façon aléatoire. 4. Le serveur créé une preuve de vote avec la date et la clé publique de la personne. Elle est ajoutée à la base publique des preuves de votes. 5. La machine confirme que le vote a été pris en compte. ## Fin de l’élection C’est à ce moment que la machine publie les résultats : - S’ils n’étaient pas mélangés, elle mélange les votes de la base. - Elle fait une signature de l’ensemble de la base avec la date. - Elle publie les votes (la donnée) avec la signature (comment se fait la publication ?). ## Limites La machine ne doit **absolument** pas être compromise. La non compromission est assurée par : - Tout le monde a accès au code source de la machine. - La machine n’est pas vulnérable aux attaques à travers le réseau (network). - Le vote a lieu dans un bureau, tout le monde peut vérifier que personne n’accède physiquement à la machine. - Une personne n’a le droit de toucher à la machine qu’**après** la publication les résultats.
Collaborator

Procurations

  • Alice fait sa demande à la mairie pour que bob puisse voter pour elle par procuration.
  • La mairie ajoute à la liste du bureau d'Alice la clé publique et l'empreinte de bob.
  • Le jour de l'élection, Bob vote au bureau d'Alice avec sa carte.
  • Bob s'authentifie avec sa carte (clé publique et empreinte) au nom d'Alice.
  • Après cela, on regarde si Alice n'a pas déjà voté en vérifiant la signature, comportant l'addition des deux clés publiques.

IMG_0002

Format de la base de données publique des personnes autorisées à voter :

Bureau de vote de Saint-Leu

Alice et Zoé sont inscrites dans ce bureau de vote. Bob n’est pas inscrit à ce bureau. Il possède une procuration pour voter à la place d’Alice. Voici l’allure de la base :

Identité Identifier personne Identifier procuration
Alice (pub key Alice, Hash(empreinte Alice)) (pub key Bob, Hash(empreinte Bob))
Zoé (pub key Zoé, Hash(empreinte Zoé)) aucune procuration

Bureau de vote de la Veillère

Bob et Eve sont tous les deux inscrits au bureau de vote de la Veillère :

Identité Identifier personne Identifier procuration
Bob (pub key Bob, Hash(empreinte Bob)) aucune procuration
Eve (pub key Eve, Hash(empreinte Eve)) aucune procuration
# Procurations - Alice fait sa demande à la mairie pour que bob puisse voter pour elle par procuration. - La mairie ajoute à la liste du bureau d'Alice la clé publique et l'empreinte de bob. - Le jour de l'élection, Bob vote au bureau d'Alice avec sa carte. - Bob s'authentifie avec sa carte (clé publique et empreinte) au nom d'Alice. - Après cela, on regarde si Alice n'a pas déjà voté en vérifiant la signature, comportant l'addition des deux clés publiques. ![IMG_0002](/attachments/8a5804f3-a819-45a7-8981-89687a0e12bf) ## Format de la base de données publique des personnes autorisées à voter : ### Bureau de vote de Saint-Leu Alice et Zoé sont inscrites dans ce bureau de vote. Bob n’est pas inscrit à ce bureau. Il possède une procuration pour voter à la place d’Alice. Voici l’allure de la base : | Identité | Identifier personne | Identifier procuration | | --- | --- | --- | | Alice | (pub key Alice, Hash(empreinte Alice)) | (pub key Bob, Hash(empreinte Bob)) | | Zoé | (pub key Zoé, Hash(empreinte Zoé)) | aucune procuration | ### Bureau de vote de la Veillère Bob et Eve sont tous les deux inscrits au bureau de vote de la Veillère : | Identité | Identifier personne | Identifier procuration | | --- | --- | --- | | Bob | (pub key Bob, Hash(empreinte Bob)) | aucune procuration | | Eve | (pub key Eve, Hash(empreinte Eve)) | aucune procuration |
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: study-faraphel/M1-PCA-Project#1
No description provided.