Aller au contenu

Plongée dans la cryptographie

Comment Nudge protège vos messages (et pourquoi c'est important)

Nudge est conçu pour une communication à haut risque : messagerie et appels chiffrés de bout en bout, conçus pour rester sécurisés même lorsque les adversaires et les capacités évoluent. Cette page explique la cryptographie à un niveau technique détaillé — y compris toutes les primitives cryptographiques, les packages Swift et comment ils fonctionnent ensemble.

Chiffrement de bout en bout

Le contenu des messages est chiffré sur votre appareil et uniquement déchiffré par les destinataires prévus. Les serveurs peuvent relayer les données, mais ils ne peuvent pas les lire.

Confidentialité persistante

Si une clé d'appareil est compromise à l'avenir, les messages passés restent protégés car les clés de message évoluent continuellement.

Sécurité post-compromission

Après une compromission, le protocole peut "guérir" à mesure que de nouveaux secrets sont introduits — limitant la durée pendant laquelle un attaquant peut continuer à lire le trafic.

Packages Swift et architecture

La pile cryptographique de Nudge est construite à partir de plusieurs packages Swift open source, chacun ayant un rôle spécifique dans la fourniture de messagerie post-quantique sécurisée.

📦

PostQuantumSolace

github.com/needletails/post-quantum-solace

Le SDK de gestion de session de haut niveau qui orchestre toutes les opérations cryptographiques. PostQuantumSolace fournit l'API PQSSession pour créer des sessions, envoyer des messages, gérer les appareils et gérer la rotation des clés. Il combine l'exécution du protocole Double Ratchet avec l'échange de clés post-quantique pour fournir une messagerie chiffrée de bout en bout avec confidentialité persistante et sécurité post-compromission.

Dépendances : DoubleRatchetKit, NeedleTailLogger, NeedleTailAlgorithms

🧷

DoubleRatchetKit

github.com/needletails/double-ratchet-kit

Implémente l'algorithme Double Ratchet avec l'intégration Post-Quantum X3DH (PQXDH). Ce package fournit le protocole principal pour la confidentialité persistante et la sécurité post-compromission. Il gère l'échange de clés hybride (Curve25519 + MLKEM1024), la dérivation des clés de message, le chiffrement des en-têtes et la gestion d'état pour les sessions de messagerie sécurisées. L'acteur DoubleRatchetStateManager gère l'état du ratchet et fournit des opérations de chiffrement/déchiffrement thread-safe.

Dépendances : NeedleTailCrypto, NeedleTailLogger, BinaryCodable

🔐

NeedleTailCrypto

github.com/needletails/needletail-crypto

Un wrapper cryptographique complet autour de Swift Crypto (swift-crypto) et CryptoKit. NeedleTailCrypto fournit des API de haut niveau pour la génération de clés (Curve25519, P256, P384, P521, MLKEM1024), le chiffrement/déchiffrement symétrique (AES-GCM), l'accord de clés (ECDH), la dérivation de clés (HKDF) et le stockage sécurisé des clés via Keychain et Secure Enclave sur les plateformes Apple. Ce package abstrait les opérations cryptographiques de bas niveau et fournit une interface cohérente et prête pour la production.

Dépendances : swift-crypto (Apple), swift-collections

⚙️

NeedleTailAlgorithms

github.com/needletails/needletail-algorithms

Fournit des implémentations d'algorithmes utilisées dans toute la pile cryptographique, y compris les structures de données et les utilitaires pour les opérations cryptographiques. Ce package contient des composants algorithmiques partagés utilisés par PostQuantumSolace et d'autres packages NeedleTails.

📝

NeedleTailLogger

github.com/needletails/needletail-logger

Un framework de journalisation utilisé dans toute la pile cryptographique pour le débogage, la surveillance et les pistes d'audit. Fournit une journalisation structurée avec des niveaux de journalisation configurables et des opérations de journalisation thread-safe.

🔢

BinaryCodable

github.com/needletails/binary-codable

Fournit un encodage et un décodage binaires efficaces pour les structures de données cryptographiques. Utilisé pour sérialiser les clés, les messages et l'état du protocole dans un format compact et indépendant de la plateforme.

🍎

swift-crypto

github.com/apple/swift-crypto

La bibliothèque cryptographique multiplateforme d'Apple qui fournit les primitives cryptographiques fondamentales. Ce package implémente MLKEM1024 (Kyber), Curve25519, AES-GCM, SHA-256, SHA-512, HKDF, HMAC et d'autres algorithmes standard. C'est le moteur cryptographique de bas niveau qui alimente NeedleTailCrypto et toute la pile.

Primitives cryptographiques

Nudge utilise un ensemble soigneusement sélectionné de primitives cryptographiques, chacune choisie pour des propriétés de sécurité spécifiques, des caractéristiques de performance et une résistance aux attaques classiques et quantiques.

MLKEM-1024 (Kyber-1024)

Ce que c'est: MLKEM-1024 est le mécanisme d'encapsulation de clés post-quantique (KEM) standardisé par le NIST basé sur l'algorithme Kyber. Il est conçu pour résister aux attaques des ordinateurs classiques et quantiques.

Ce que ça fait: MLKEM-1024 permet à deux parties d'établir une clé secrète partagée sur un canal non sécurisé. Une partie génère une paire de clés publique/privée, et l'autre partie utilise la clé publique pour encapsuler un secret partagé. Le détenteur de la clé privée peut ensuite décapsuler le secret. Cela fournit une sécurité même contre les adversaires avec des ordinateurs quantiques.

Pourquoi c'est important: Les algorithmes d'échange de clés classiques (comme RSA, ECC) seront cassés par les ordinateurs quantiques à grande échelle. MLKEM-1024 fournit une protection "récolter maintenant, déchiffrer plus tard" — même si un attaquant enregistre le trafic chiffré aujourd'hui, il ne pourra pas le déchiffrer à l'avenir en utilisant des ordinateurs quantiques.

Implémentation: Fourni par swift-crypto (Apple), utilisé dans le handshake PQXDH

Curve25519

Ce que c'est: Curve25519 est une courbe elliptique haute performance conçue pour l'accord de clés Elliptic Curve Diffie-Hellman (ECDH). Elle fournit 128 bits de sécurité et est largement déployée dans les systèmes cryptographiques modernes.

Ce que ça fait: Permet à deux parties d'établir un secret partagé en échangeant des clés publiques. Chaque partie combine sa clé privée avec la clé publique de l'autre pour dériver le même secret partagé. Curve25519 est utilisé à la fois pour l'accord de clés (ECDH) et les signatures numériques (Ed25519) dans Nudge.

Pourquoi c'est important: Bien que non résistant aux quantiques, Curve25519 fournit une sécurité immédiate contre les attaquants classiques et est extrêmement rapide. Dans la conception PQXDH hybride de Nudge, Curve25519 fournit la sécurité aujourd'hui tandis que MLKEM-1024 fournit la sécurité contre les menaces quantiques futures. Les deux doivent être cassés pour qu'un attaquant compromette la session.

Implémentation: Fourni par swift-crypto (Apple), utilisé dans le handshake PQXDH et la signature des clés d'appareil

HKDF (Fonction de dérivation de clés basée sur HMAC)

Ce que c'est: HKDF est une fonction de dérivation de clés qui dérive de manière sécurisée plusieurs clés à partir d'un seul secret partagé ou d'une entrée à haute entropie. Elle utilise HMAC (Code d'authentification de message basé sur le hachage) comme primitive sous-jacente.

Ce que ça fait: Prend un secret partagé (de l'échange de clés) et dérive des clés spécifiques à un usage pour le chiffrement, l'authentification et d'autres utilisations. HKDF utilise un sel (pour la séparation de domaine) et des informations de contexte optionnelles pour garantir que différentes clés sont dérivées pour différents usages. Nudge utilise HKDF avec SHA-512 pour dériver les clés de session à partir des secrets partagés PQXDH.

Pourquoi c'est important: La dérivation de clés empêche la réutilisation de clés dans différents contextes, ce qui est critique pour la sécurité. Chaque clé dérivée est cryptographiquement indépendante, donc compromettre une clé n'affecte pas les autres. HKDF est également utilisé dans le protocole Double Ratchet pour dériver les clés de message à partir des clés de chaîne.

Implémentation: HKDF<SHA512> et HKDF<SHA256> de swift-crypto, utilisé dans tout le protocole

AES-GCM (Advanced Encryption Standard - Mode Galois/Compteur)

Ce que c'est: AES-GCM est un algorithme de chiffrement authentifié qui fournit à la fois la confidentialité (chiffrement) et l'intégrité (authentification) dans une seule opération. Il utilise le chiffrement par blocs AES en mode Galois/Compteur.

Ce que ça fait: Chiffre le contenu des messages et génère une étiquette d'authentification qui prouve que le message n'a pas été altéré. AES-GCM est utilisé pour chiffrer toutes les charges utiles de messages dans Nudge, garantissant que les messages ne peuvent pas être lus ou modifiés par les attaquants.

Pourquoi c'est important: Le chiffrement authentifié empêche à la fois l'écoute clandestine et la falsification. Si un attaquant modifie un message chiffré, l'étiquette d'authentification sera invalide et le déchiffrement échouera. Nudge utilise AES-256-GCM, fournissant 256 bits de sécurité.

Implémentation: Fourni par swift-crypto (Apple), utilisé pour tout le chiffrement de messages via NeedleTailCrypto

SHA-256 et SHA-512 (Algorithmes de hachage sécurisés)

Ce que c'est: SHA-256 et SHA-512 sont des fonctions de hachage cryptographiques qui produisent des sorties de taille fixe (256 et 512 bits respectivement) à partir d'entrées arbitraires. Ce sont des fonctions à sens unique — faciles à calculer mais computationnellement impossibles à inverser.

Ce que ça fait: Utilisés dans toute la pile cryptographique à diverses fins : SHA-256 est utilisé dans HMAC pour la dérivation des clés de chaîne dans le Double Ratchet, SHA-512 est utilisé dans HKDF pour la dérivation des clés de session à partir des secrets partagés PQXDH, et les deux sont utilisés pour la vérification d'intégrité et la dérivation de clés.

Pourquoi c'est important: Les fonctions de hachage sont des éléments fondamentaux. Elles garantissent que les clés sont dérivées de manière déterministe, que l'intégrité des données peut être vérifiée et que les opérations cryptographiques produisent des résultats cohérents. SHA-512 fournit une marge de sécurité supplémentaire pour les opérations de dérivation de clés.

Implémentation: Fourni par swift-crypto (Apple), utilisé dans HKDF, HMAC et la dérivation de clés

HMAC (Code d'authentification de message basé sur le hachage)

Ce que c'est: HMAC est un code d'authentification de message qui utilise une fonction de hachage cryptographique (comme SHA-256) combinée avec une clé secrète pour produire une étiquette qui vérifie à la fois l'authenticité et l'intégrité d'un message.

Ce que ça fait: Dans Nudge, HMAC-SHA256 est utilisé dans le protocole Double Ratchet pour dériver les clés de chaîne et les clés de message. Chaque étape du ratchet utilise HMAC pour faire avancer la chaîne de clés, garantissant que les clés évoluent de manière déterministe et sécurisée.

Pourquoi c'est important: HMAC garantit que la dérivation de clés est sécurisée et déterministe. Il est utilisé extensivement dans le Double Ratchet pour fournir la confidentialité persistante — chaque message utilise une clé unique dérivée de la clé précédente, donc compromettre une clé ne révèle pas les clés passées ou futures.

Implémentation: HMAC<SHA256> de swift-crypto, utilisé dans la dérivation de clés Double Ratchet

Comment tout fonctionne ensemble

1) Poignée de main post-quantique (PQXDH)

Lorsque deux utilisateurs commencent une conversation, Nudge effectue un échange de clés hybride :

  1. Curve25519 ECDH : Les deux parties échangent des clés publiques Curve25519 et dérivent un secret partagé en utilisant Diffie-Hellman à courbe elliptique
  2. Encapsulation MLKEM-1024 : Une partie utilise la clé publique MLKEM-1024 de l'autre pour encapsuler un secret partagé
  3. Combinaison de secrets : Le secret partagé Curve25519 et le secret partagé MLKEM-1024 sont concaténés
  4. Dérivation HKDF : HKDF-SHA512 dérive la clé racine et les clés de chaîne initiales à partir des secrets combinés

Cette approche hybride garantit la sécurité contre les attaquants classiques (Curve25519) et quantiques (MLKEM-1024). Les deux doivent être cassés pour compromettre la session.

2) Évolution continue des clés (Double Ratchet)

Après la poignée de main, le protocole Double Ratchet fournit la confidentialité persistante :

  1. Ratchet symétrique : Chaque message fait avancer une clé de chaîne en utilisant HMAC-SHA256, dérivant une clé de message unique
  2. Chiffrement de message : La clé de message est utilisée avec AES-256-GCM pour chiffrer la charge utile du message
  3. Ratchet DH : Périodiquement, de nouveaux échanges de clés Diffie-Hellman mettent à jour la clé racine et créent de nouvelles clés de chaîne
  4. Rotation des clés : Les anciennes clés sont supprimées, garantissant la confidentialité persistante — compromettre les clés actuelles ne révèle pas les messages passés

Le Double Ratchet garantit que chaque message utilise une clé de chiffrement unique et que les clés évoluent continuellement pour fournir une sécurité post-compromission.

Ce qui est chiffré (et ce qui ne l'est pas)

Une cryptographie forte protège le contenu des messages. Comme tous les systèmes de messagerie, certaines métadonnées au niveau réseau (par exemple, le routage IP) peuvent encore exister. La pile de Nudge prend également en charge les techniques de protection des métadonnées telles que le chiffrement des en-têtes pour réduire les signaux d'analyse du trafic.

  • Chiffré : contenu des messages, secrets de session, métadonnées sensibles (lorsque pris en charge)
  • Exposition réduite : compteurs/identifiants de clés via le chiffrement des en-têtes (le cas échéant)
  • Toujours possible : observations au niveau transport (timing, points de terminaison) selon les conditions du réseau

Propriétés de sécurité

La conception cryptographique de Nudge fournit plusieurs couches de sécurité :

  • Sécurité post-quantique : MLKEM-1024 protège contre les attaques quantiques futures
  • Confidentialité persistante : Les messages passés restent sécurisés même si les clés actuelles sont compromises
  • Sécurité post-compromission : Les sessions peuvent récupérer d'une compromission de clé
  • Chiffrement authentifié : AES-GCM empêche à la fois l'écoute clandestine et la falsification
  • Protection des métadonnées : Le chiffrement des en-têtes réduit l'analyse du trafic

Vous voulez une communauté Nudge privée ?

NeedleTails propose des services payants d'implémentation de serveurs pour les organisations qui ont besoin d'un déploiement privé, de contrôles de gouvernance et de responsabilité opérationnelle.

Faire un don