CIA/e-voting-system/RAPPORT_RESUME.md
E-Voting Developer 3efdabdbbd fix: Implement vote check endpoint in frontend API proxy
- Created `/frontend/app/api/votes/check/route.ts` to handle GET requests for checking if a user has voted in a specific election.
- Added error handling for unauthorized access and missing election ID.
- Forwarded requests to the backend API and returned appropriate responses.
- Updated `/frontend/app/api/votes/history/route.ts` to fetch user's voting history with error handling.
- Ensured both endpoints utilize the authorization token for secure access.
2025-11-10 02:56:47 +01:00

6.4 KiB
Raw Permalink Blame History

📄 Rapport Technique - Résumé

Rapport Complet : /rapport/main.pdf (19 pages, 257 KB)

🎯 Vue d'ensemble

Système de vote électronique sécurisé avec cryptographie post-quantique hybride (NIST FIPS 203/204/205).

Livrables

  • Code source complet : Backend (FastAPI) + Frontend (Next.js) + Blockchain
  • Rapport technique : 19 pages en PDF
  • Déploiement Docker : Autonome et reproductible

🏗️ Architecture

Frontend (Next.js 15)  →  Backend (FastAPI)  →  MariaDB
                              ↓
                          Blockchain (PoA)
                              ↓
                         Validators (3x)

Stack Technologique

  • Backend : Python 3.12 + FastAPI + SQLAlchemy
  • Frontend : Next.js 15 + React 18 + TypeScript
  • DB : MariaDB (ACID transactions)
  • Déploiement : Docker Compose (7 services)
  • Crypto : liboqs + cryptography (PyCA)

🔐 Cryptographie Hybride

Signatures Hybrides

  • RSA-PSS 2048 (classique) + ML-DSA-65/Dilithium (NIST FIPS 204)
  • Les DEUX doivent être valides pour accepter le vote
  • Defense-in-depth : même si l'un est cassé, l'autre reste sûr

Chiffrement Hybride

  • ElGamal (classique) + ML-KEM-768/Kyber (NIST FIPS 203)
  • Clé finale : SHA-256(kyber_secret || elgamal_secret)
  • Chiffrement symétrique : AES-256-GCM du bulletin

Propriété Clé : Addition Homomorphe

E(m₁) × E(m₂) = E(m₁ + m₂)

Permet le dépouillement sans déchiffrement intermédiaire.


🗳️ Flux du Vote (6 phases)

Phase 1 : Inscription

  • Génération clés hybrides (RSA + Dilithium + ElGamal + Kyber)
  • Hachage password bcrypt
  • Enregistrement BD

Phase 2 : Authentification

  • Email + mot de passe
  • Token JWT (30 min expiration)

Phase 3 : Affichage Élection

  • Liste des candidats
  • Vérification JWT

Phase 4 : Vote et Soumission

  • Sélection candidat
  • Chiffrement ElGamal + Kyber
  • Signature RSA + Dilithium
  • Enregistrement blockchain

Phase 5 : Dépouillement

  • Addition homomorphe des votes chiffrés
  • Déchiffrement une seule fois
  • Publication résultats anonymes

Phase 6 : Vérification

  • Audit de l'intégrité chaîne
  • Vérification signatures Dilithium
  • Détection de tampering

🛡️ Propriétés de Sécurité

Confidentialité

  • Vote chiffré ElGamal + Kyber
  • Sans clé privée : impossible de déchiffrer

Intégrité

  • Blockchain chaîne SHA-256
  • Si un bloc modifié → toute chaîne invalide

Non-Répudiation

  • Signatures hybrides RSA + Dilithium
  • Électeur ne peut nier avoir voté

Authenticité

  • JWT sécurisé
  • bcrypt pour mots de passe
  • Signatures sur chaque vote

Anti-Coercion (Partiel)

  • Votes anonymes
  • Preuves ZK non-transférables
  • Nécessite isolement physique pour garantie complète

🚨 Menaces Adressées

Menace Mitigation
Fraude électorale Blockchain SHA-256 + signatures
Double-vote Constraint unique BD + flag has_voted
Usurpation identité JWT + bcrypt + CNI unique
Intimidation Votes chiffrés, anonymes
Compromise admin Least privilege + audit logs
Attaque quantique Crypto hybride defense-in-depth

📊 Endpoints API

Endpoint Méthode Description
/api/auth/register POST Inscription + génération clés
/api/auth/login POST Authentification JWT
/api/elections/active GET Élection courante
/api/votes/submit POST Soumission vote
/api/elections/{id}/results GET Résultats
/api/blockchain/votes GET Blockchain complète
/api/blockchain/verify POST Vérifier intégrité

🚀 Déploiement

Docker

docker-compose build
docker-compose up -d

Accès

Services

  • mariadb (port 3306)
  • backend (port 8000)
  • bootnode (port 8546)
  • validators (ports 8001-8003)
  • frontend (port 3000)

📋 Contenu du Rapport

  1. Résumé Exécutif (1 page)
  2. Introduction (2 pages)
  3. Architecture (3 pages)
  4. Cryptographie Post-Quantique (4 pages)
  5. Flux du Vote (3 pages)
  6. Propriétés de Sécurité (2 pages)
  7. Analyse des Menaces (2 pages)
  8. Implémentation Technique (2 pages)
  9. Tests et Validation (1 page)
  10. Déploiement (1 page)
  11. Limitations & Améliorations (1 page)
  12. Conclusion (1 page)

Conformité

Code source complet et fonctionnel Cryptographie post-quantique hybride (NIST FIPS 203/204) Déploiement Docker autonome Rapport technique détaillé (19 pages) Architecture défend menaces (fraude, intimidation, anonymat) Flux utilisateur complet (inscription → vote → résultats) Tests unitaires et d'intégration Documentation complète


🔍 Points Clés pour la Soutenance

Questions Probables

  1. Pourquoi chiffrement hybride ? → Defense-in-depth : même si RSA cassé, Dilithium reste sûr

  2. Comment garantir anonymat ? → Séparation identité-vote, votes chiffrés, transaction ID anonyme

  3. Comment dépouiller sans révéler votes ? → Addition homomorphe : E(m₁) × E(m₂) = E(m₁ + m₂)

  4. Comment prouver intégrité blockchain ? → Chaîne de hachage SHA-256, signature Dilithium chaque bloc

  5. Comment empêcher double-vote ? → Constraint unique BD (voter_id, election_id) + flag has_voted

Démonstration

  • Inscription d'électeur (génération clés)
  • Vote (chiffrement + signature)
  • Consultation résultats
  • Vérification blockchain

📁 Fichiers Clés

/rapport/main.pdf           → Rapport complet (19 pages)
/rapport/main.typ           → Source Typst

/backend/main.py            → App FastAPI
/backend/crypto/            → Modules crypto
/backend/blockchain.py      → Blockchain locale
/backend/routes/            → Endpoints API

/frontend/app/              → App Next.js
/docker-compose.yml         → Orchestration

🎓 Apprentissages

  • ✓ Cryptographie post-quantique NIST (Dilithium, Kyber)
  • ✓ Chiffrement ElGamal avec addition homomorphe
  • ✓ Blockchain pour immuabilité et audit
  • ✓ Signatures hybrides pour quantum-resistance
  • ✓ Propriétés formelles de sécurité
  • ✓ Architecture microservices + Docker

📞 Contact

Rapport généré : Novembre 2025 Système : E-Voting Post-Quantum v0.1 CIA Team