0Pricing
Cryptology Academy · Leçon

libsodium : une bibliothèque cryptographique résistante aux erreurs d’utilisation

Découvrez l’API opinionnée de libsodium, qui rend difficiles les choix de paramètres non sécurisés.

libsodium : une bibliothèque cryptographique résistante aux erreurs d’utilisation est une leçon Cryptology Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cryptology Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cryptology Academy comprend 4 leçons au total.

Philosophie et origine de libsodium

libsodium a été créé par Frank Denis sous la forme d'une version portable et multiplateforme de la bibliothèque NaCl (bibliothèque de réseaux et de cryptographie), développée par Daniel Bernstein, Tanja Lange et Peter Schwabe. Sa philosophie fondamentale consiste à rendre les utilisations correctes de la cryptographie aussi faciles que possible et les utilisations incorrectes aussi difficiles que possible. Des paramètres par défaut sécurisés, des interfaces de programmation simples et des choix d'algorithmes assumés évitent les erreurs courantes qui affectent les bibliothèques de bas niveau.

Chiffrement authentifié à clé secrète

crypto_secretbox fournit un chiffrement authentifié à clé secrète utilisant XSalsa20-Poly1305. L’API accepte un message, un nonce de 24 octets (généré aléatoirement) et une clé de 32 octets. La sortie est un texte chiffré qui est à la fois chiffré et authentifié. crypto_secretbox_open déchiffre et vérifie la balise d’authentification de façon atomique, en renvoyant une erreur si une altération est détectée. Cela empêche le déchiffrement de textes chiffrés corrompus ou modifiés de manière malveillante.

Chiffrement authentifié à clé publique

crypto_box fournit un chiffrement authentifié à clé publique entre deux parties au moyen de X25519-XSalsa20-Poly1305. À partir de la clé privée de l’expéditeur et de la clé publique du destinataire, il chiffre et authentifie le message afin que seul le destinataire prévu puisse le déchiffrer et que celui-ci puisse vérifier l’identité de l’expéditeur. crypto_box_seal est la variante anonyme : l’expéditeur est masqué et seul le chiffrement est fourni, sans authentification de l’expéditeur.

Signatures numériques avec Ed25519

crypto_sign implémente les signatures numériques au moyen d’Ed25519. La génération des clés produit une clé privée de 64 octets (en réalité, une graine concaténée à la clé publique) et une clé publique de 32 octets. La signature produit une signature de 64 octets. La vérification est rapide et s’effectue à temps constant. Les signatures Ed25519 sont déterministes (un même message et une même clé produisent toujours la même signature), ce qui élimine les vulnérabilités liées aux défaillances de l’aléa qui ont affecté ECDSA dans certaines implémentations.

Hachage avec BLAKE2b

crypto_generichash fournit un hachage polyvalent utilisant BLAKE2b. Contrairement à SHA-256, BLAKE2b n’exige pas de construction HMAC distincte pour le hachage avec clé : il accepte directement une clé facultative. La longueur de sortie peut être configurée de 16 à 64 octets. BLAKE2b est plus rapide que SHA-256 et SHA-512 sur les processeurs modernes 64 bits, tout en offrant des propriétés de sécurité équivalentes ou supérieures.

Dérivation de clés avec BLAKE2b

crypto_kdf fournit une dérivation de clés à partir d’une clé maîtresse au moyen de BLAKE2b. À partir d’une clé maîtresse de 32 octets, d’une chaîne de contexte (8 octets identifiant l’objectif) et d’un identifiant de sous-clé (nombre de 64 bits), il dérive une sous-clé indépendante sur le plan cryptographique, de longueur configurable. Cela permet de dériver plusieurs clés indépendantes à partir d’une seule clé maîtresse pour différents objectifs, sans aucune corrélation entre les clés dérivées.

Hachage de mots de passe avec Argon2id

crypto_pwhash fournit un hachage de mots de passe utilisant Argon2id, lauréat du Concours de hachage de mots de passe. Argon2id associe un calcul exigeant en mémoire (résistant aux attaques GPU) à un calcul exigeant en temps (résistant aux attaques ASIC). Ses paramètres comprennent une limite d’opérations (coût temporel) et une limite de mémoire, qui peuvent être ajustées en fonction des exigences de sécurité. crypto_pwhash_str produit une chaîne standard adaptée au stockage, qui contient l’algorithme et ses paramètres.

Boîtes scellées pour le chiffrement anonyme

crypto_box_seal chiffre un message à destination d’un destinataire sans révéler l’expéditeur. Il génère une paire de clés éphémères temporaire, effectue un échange de clés avec la clé publique du destinataire, puis supprime la clé privée éphémère. Le destinataire peut déchiffrer le message avec sa clé privée, mais ne peut pas identifier l’expéditeur. Cette méthode convient aux systèmes de soumission anonyme et aux canaux chiffrés à sens unique.

Liaisons de libsodium pour les langages

libsodium possède des liaisons pour presque tous les principaux langages de programmation. PyNaCl fournit des liaisons Python idiomatiques, avec des exceptions propres à Python et des objets d’octets. libsodium-wrappers fournit des liaisons JavaScript/Node.js (WASM pour les navigateurs). libsodium.js est un portage entièrement en JavaScript. La qualité des liaisons varie : privilégiez les liaisons officielles ou largement maintenues qui encapsulent la bibliothèque C plutôt que de réimplémenter les algorithmes.

Comparaison avec l’API de bas niveau d’OpenSSL

L’API de bas niveau d’OpenSSL exige des choix explicites concernant les algorithmes, les tailles de clés, les modes, le remplissage et la gestion des vecteurs d’initialisation. Les combinaisons incorrectes sont acceptées silencieusement. libsodium fournit une seule implémentation correcte par cas d’utilisation, sans configuration nécessaire. Par exemple, chiffrer avec OpenSSL exige de choisir l’algorithme de chiffrement, le mode, la dérivation de clé, la génération du vecteur d’initialisation et le remplissage ; avec crypto_secretbox de libsodium, vous fournissez une clé, un nonce et un message, et tout le reste est géré correctement.

Choisir libsodium pour les nouveaux projets

libsodium est le point de départ recommandé pour tout projet nécessitant des opérations cryptographiques dans les langages pris en charge. Sa petite surface d’API réduit les risques de mauvaise utilisation, ses algorithmes sont modernes et ont fait l’objet d’analyses approfondies, et son implémentation C multiplateforme est rigoureusement testée. Il ne devrait être nécessaire de passer à une bibliothèque de plus bas niveau comme OpenSSL que si vous avez besoin d’algorithmes précis qui ne sont pas disponibles dans libsodium ou si vous exigez une validation FIPS 140-2.

Opérations de libsodium

Quelle fonction de libsodium devez-vous utiliser pour hacher un mot de passe avant de le stocker dans une base de données ?

Récapitulatif de libsodium

Récapitulatif de libsodium : valeurs par défaut sécurisées et API difficile à utiliser incorrectement, fondée sur les primitives de NaCl de Bernstein et coll., crypto_secretbox pour le chiffrement à clé secrète (XSalsa20-Poly1305), crypto_box pour le chiffrement à clé publique (X25519), crypto_sign pour les signatures Ed25519, crypto_generichash pour le hachage BLAKE2b, crypto_pwhash pour le hachage de mots de passe avec Argon2id, boîtes scellées pour le chiffrement anonyme et liaisons de langage pour la plupart des principales plateformes.

Questions Fréquemment Posées

La leçon « libsodium : une bibliothèque cryptographique résistante aux erreurs d’utilisation » est-elle gratuite ?

Oui — le texte complet de « libsodium : une bibliothèque cryptographique résistante aux erreurs d’utilisation » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cryptology Academy, passe à CoddyKit PRO. Le cours Cryptology Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « libsodium : une bibliothèque cryptographique résistante aux erreurs d’utilisation » ?

Découvrez l’API opinionnée de libsodium, qui rend difficiles les choix de paramètres non sécurisés. Tu pratiques Cryptology Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Cryptology Academy ?

Aucune expérience préalable n'est requise. Cryptology Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « libsodium : une bibliothèque cryptographique résistante aux erreurs d’utilisation » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Cryptology Academy ?

Oui. Chaque leçon Cryptology Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. libsodium : une bibliothèque cryptographique résistante aux erreurs d’utilisation
  2. API OpenSSL : structures fondamentales et pièges
  3. Google Tink : cryptographie sûre de haut niveau
  4. Auditer et sélectionner les dépendances cryptographiques
← Retour à Cryptology Academy