Alexis Bruneteau 55995365be docs: Add proper openspec configuration for MVP
Created comprehensive openspec structure:

openspec/specs/:
- mvp.md: MVP feature overview
- architecture.md: System architecture and data flows

openspec/changes/add-pqc-voting-mvp/:
- proposal.md: Project proposal with scope and rationale
- tasks.md: Detailed implementation tasks (6 phases, 30+ tasks)
- design.md: Complete design document
  - Cryptographic algorithms (Paillier, Kyber, Dilithium, ZKP)
  - Data structures (Block, Blockchain, Ballot)
  - API endpoint specifications
  - Security properties matrix
  - Threat model and mitigations

Follows openspec three-stage workflow:
1. Creating changes (proposal-based)
2. Implementation (tracked via tasks)
3. Completion (with validation)

Ready for implementation phase with clear requirements.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 18:02:33 +01:00

2.7 KiB

Proposal: Add PQC-Based Secure Voting MVP

Summary

Implement Minimum Viable Product for secure electronic voting using Post-Quantum Cryptography (Paillier + Kyber + Dilithium) and Blockchain for vote recording.

Change ID

add-pqc-voting-mvp

Motivation

  • Enable secure electronic voting with vote secrecy and integrity
  • Implement homomorphic encryption for private vote counting
  • Use post-quantum cryptography (Kyber, Dilithium) for quantum resistance
  • Provide blockchain-based immutable vote records
  • Support individual and universal verifiability

Scope

This proposal adds the complete voting system with:

  1. Cryptographic toolkit (Paillier, Kyber, Dilithium, ZKP)
  2. Blockchain module for vote recording
  3. Voting API endpoints for ballot submission
  4. Frontend voting interface with client-side encryption
  5. Blockchain visualization and verification
  6. Vote counting with homomorphic properties
  7. Results display and audit reporting

Affected Capabilities

New Capabilities

  • voting-encryption: Homomorphic vote encryption
  • blockchain-votes: Immutable vote recording
  • pqc-signatures: Post-quantum ballot and block signing
  • vote-submission: Secure ballot submission workflow
  • vote-counting: Homomorphic vote summation
  • blockchain-verification: Chain integrity verification

Modified Capabilities

  • authentication: Extend with voter Dilithium key generation
  • api-structure: Add new voting endpoints

Key Design Decisions

  1. Vote Encryption: Paillier homomorphic encryption allows voting without decrypting individual votes
  2. Post-Quantum: Kyber protects Paillier key, Dilithium signs ballots and blocks
  3. Blockchain: SHA-256 hash chain ensures vote immutability
  4. Anonymity: Transaction IDs instead of voter IDs in blockchain
  5. Verifiability: ZKP proves ballot validity, chain verification proves counting accuracy

Implementation Phases

  1. Phase 1: Cryptographic foundations (crypto_tools.py + blockchain.py)
  2. Phase 2: Backend API endpoints
  3. Phase 3: Frontend voting interface
  4. Phase 4: Blockchain visualization
  5. Phase 5: Results and reporting
  6. Phase 6: Technical report and testing

Success Criteria

  • All cryptographic operations implemented and tested
  • Blockchain structure immutable and verifiable
  • Voting API endpoints functional
  • Frontend enables secure ballot encryption and submission
  • Vote counting produces verifiable results
  • Complete technical & scientific report
  • Docker deployment successful
  • Security properties validated
  • Course project: Cryptographie Industrielle Avancée (CIA)
  • Requirement: Secure e-voting system with PQC and blockchain