# 📄 Rapport Technique - RĂ©sumĂ© **Rapport Technique DĂ©taillĂ©** : `/rapport/technical_report.pdf` (192 KB) **Source Typst** : `/rapport/technical_report.typ` ## 🎯 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 ```bash docker-compose build docker-compose up -d ``` ### AccĂšs - Frontend : http://localhost:3000 - API : http://localhost:8000/docs - DB : localhost:3306 ### 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