PrivateSphare
PrivateSphare est une plateforme sécurisée, anonyme et zero-knowledge de stockage et de partage de fichiers. Elle permet aux utilisateurs de téléverser des fichiers et de recevoir une phrase de passe lisible de 24 mots pour la récupération. Pas de comptes, pas de suivi, et aucune donnée non chiffrée ne touche jamais le stockage persistant du serveur.
🛡️ Fonctionnalités clés
- Sécurité post-quantique : Les fichiers sont chiffrés à l'aide d'un schéma Hybride résistant aux quantiques (Kyber1024 + AES-256-GCM) qui protège contre les futures menaces des ordinateurs quantiques.
- Chiffrement zero-knowledge : Les fichiers sont chiffrés dans le contexte du navigateur (intention côté client) à l'aide d'une clé dérivée d'une phrase de passe BIP-39 de 24 mots.
- Confidentialité des métadonnées : Les noms de fichiers et les types MIME sont chiffrés avant d'être stockés dans la base de données.
- Stockage opaque : Les fichiers sont stockés dans S3/MinIO sous des clés UUID aléatoires. Même un administrateur ne peut pas identifier quels fichiers sont stockés.
- Auto-destruction :
- Expiration automatique : Les fichiers sont automatiquement supprimés 24 heures après le téléversement via les politiques de cycle de vie S3.
- Nettoyage après récupération : Les fichiers et les métadonnées sont immédiatement détruits dès qu'ils sont récupérés avec succès.
- Limites doubles : Limite de téléversement standard de 100 Mo, déblocable à 1 Go via un code Premium.
- Interface moderne : Design entièrement responsive avec prise en charge automatique du mode sombre et un flux de sécurité « Terminé » pour protéger les phrases de passe dans l'historique du navigateur.
🛠️ Pile technologique
- Backend : Rust (Axum, Tokio, Tower-HTTP)
- Database : SurrealDB (v2.1.4)
- Storage : MinIO (S3-Compatible)
- Frontend : Handlebars templates, Tailwind CSS
- Security : Argon2id KDF, Kyber1024 (PQC), AES-256-GCM Encryption, SHA-256 Hashing, JWT (for Premium sessions)
🚀 Pour commencer
Prérequis
- Docker & Docker Compose (ou Podman & Podman Compose)
1. Configuration
Copiez le fichier d'environnement exemple et mettez à jour vos secrets :
Modifiez .env pour définir vos SURREAL_PASS, S3_SECRET_KEY, PRIVATE_SPHARE_PREMIUM_CODE, et PRIVATE_SPHARE_JWT_SECRET.
2. Déploiement
Exécutez la pile complète :
docker-compose up -d --build
(Ou podman-compose up -d --build)
L'application sera disponible à l'adresse http://localhost:3000.
🔒 Architecture de sécurité
- Dérivation de clé : La phrase de passe de 24 mots est hachée en SHA-256 puis passée dans Argon2id avec un sel unique de 16 octets pour dériver une graine de 64 octets.
- Couche post-quantique : La graine est utilisée pour générer de manière déterministe une paire de clés Kyber1024. Un secret partagé est encapsulé à l'aide de la clé publique, produisant un texte chiffré Kyber.
- Chiffrement symétrique : Le secret partagé est utilisé pour chiffrer les données avec AES-256-GCM.
- Disposition de stockage : Le blob final contient le sel, le nonce, le texte chiffré Kyber et le texte chiffré AES. Cette approche hybride garantit que même si le AES classique est compromis, la couche PQC reste sécurisée.
📜 Licence
Créé par Daniel Shamany. Conçu pour la confidentialité.