POST-QUANTIQUE

Safecom

Chat sécurisé en ligne de commande, protégé par une cryptographie hybride résistante aux ordinateurs quantiques.

C++17 liboqs libsodium TCP CLI

Développé par Benoît Ferrandini

Interface du terminal Safecom

Présentation

Safecom est une application de messagerie en temps réel qui protège vos communications grâce à une cryptographie hybride combinant des algorithmes post-quantiques (ML-DSA, ML-KEM) et un chiffrement symétrique de pointe (XChaCha20-Poly1305). Conçu comme un outil en ligne de commande, il offre un niveau de sécurité de qualité professionnelle dans une interface épurée.


Technologies Cryptographiques

Fonction Algorithme Bibliothèque
Signature (identité) ML-DSA-65 (Dilithium3) liboqs
Échange de clés ML-KEM-768 (Kyber768) liboqs
Chiffrement symétrique XChaCha20-Poly1305 libsodium
Entropie randombytes_buf() (CSPRNG) libsodium

Garanties de Sécurité

Perfect Forward Secrecy

Clés éphémères par session. Même si une clé future est compromise, les sessions passées restent protégées.

Effacement Mémoire

Toute clé sensible est nettoyée de la RAM via sodium_memzero, empêchant toute extraction post-mortem.

Authenticité & Intégrité

Chaque message est signé avec ML-DSA et chiffré (AEAD). Aucune usurpation d'identité ou altération possible.

Anti Man-in-the-Middle

Empreinte de session commune à vérifier manuellement entre les participants pour garantir l'authenticité.


Protocole

1

Connexion TCP

Établissement du canal réseau entre client et serveur.

2

Handshake

Échange des clés publiques ML-DSA + ML-KEM.

3

Vérification

Validation manuelle de l'empreinte de session (anti-MITM).

4

Chat Chiffré

ML-KEM encaps → XChaCha20 → ML-DSA sign.


Structure du Projet

Safecom/
├── safecom.cpp Application principale (chat CLI)
├── CryptoEngine.hpp/cpp Moteur cryptographique hybride
├── Network.hpp/cpp Couche réseau TCP
├── main_test.cpp Tests end-to-end
├── compiler Commandes de compilation
└── liboqs/ Bibliothèque post-quantique

Utilisation

Compilation
# Application principale
$ g++ -std=c++17 -O2 safecom.cpp CryptoEngine.cpp Network.cpp -o safecom -lsodium -loqs -lcrypto

# Tests
$ g++ -std=c++17 -O2 main_test.cpp CryptoEngine.cpp -o test -lsodium -loqs -lcrypto
Exécution
# Mode interactif (menu)
$ ./safecom

# Mode serveur
$ ./safecom --listen 4444

# Mode client
$ ./safecom --connect 127.0.0.1 4444

Tests

Round-trip complet (chiffrement → sérialisation → désérialisation → déchiffrement)

Rejet de signature invalide (usurpation d'identité)

Détection d'altération (bit-flip sur le ciphertext)

Effacement de la clé KEM après décapsulation (PFS)

Consultez le code source complet sur GitHub.

Voir sur GitHub