Aller au contenu
HexaTransfer
Retour au blog
Chiffrement et securite

Guide AES-256 : protection de fichiers de niveau militaire

Comprenez le chiffrement AES-256 et pourquoi c'est le standard de référence. Découvrez comment ce chiffrement protège vos transferts.

AES-256 est un chiffrement par blocs symétrique approuvé par la NSA américaine pour les données TOP SECRET selon la norme CNSSP-15. Il chiffre des blocs de 128 bits avec une clé de 256 bits en effectuant 14 cycles d'opérations de substitution, de permutation et de mixage. La force brute sur une seule clé AES-256 nécessiterait environ 2^255 opérations en moyenne — un nombre si grand que tous les ordinateurs de la Terre fonctionnant pendant toute la durée de l'univers ne suffiraient pas à le craquer. C'est pourquoi chaque service de transfert de fichiers sérieux, de SwissTransfer à Tresorit, utilise AES-256 comme chiffrement principal. Voici comment il fonctionne réellement.

D'où vient le "256"

AES existe en trois tailles de clé : 128, 192 et 256 bits. Le nombre ne désigne que la longueur de la clé, pas la taille des blocs (qui est toujours de 128 bits). La taille de la clé détermine le nombre de cycles effectués : 10 pour AES-128, 12 pour AES-192, 14 pour AES-256.

Plus de cycles signifient plus de diffusion — chaque bit de sortie dépend d'un plus grand nombre de bits d'entrée — et une meilleure résistance aux attaques cryptanalytiques comme l'attaque biclique publiée en 2011, qui réduisait théoriquement la sécurité effective d'AES-256 de 256 à 254,4 bits. C'est encore bien au-delà de toute attaque pratique.

La norme Federal Information Processing Standard FIPS 197 définit AES, et les normes NIST SP 800-38A à 800-38G définissent les modes d'opération.

Modes d'opération : GCM vs CBC vs ECB

AES est un chiffrement par blocs, ce qui signifie qu'il ne sait chiffrer qu'un bloc de 128 bits. Pour chiffrer un fichier de taille arbitraire, vous avez besoin d'un mode d'opération. Le choix est crucial :

  • ECB (Electronic Codebook) : des blocs de texte clair identiques produisent un texte chiffré identique. Ne l'utilisez jamais. Le célèbre "pingouin ECB" montre les contours de Tux visibles à travers des pixels chiffrés avec ECB.
  • CBC (Cipher Block Chaining) : applique un XOR à chaque bloc avec le texte chiffré précédent. Sécurisé si associé à un HMAC pour l'authentification, mais CBC seul est vulnérable aux attaques par oracle de rembourrage (POODLE a touché SSL en 2014).
  • GCM (Galois/Counter Mode) : chiffre avec un compteur et produit un tag d'authentification de 128 bits en un seul passage. La falsification du texte chiffré fait échouer le déchiffrement de façon audible. C'est ce qu'utilisent les services modernes.

AES-256-GCM est le chiffrement par défaut dans TLS 1.3, Signal, WireGuard et tout service de transfert de fichiers crédible. Si un service mentionne "AES-256" sans préciser le mode, supposez GCM et vérifiez.

Le vecteur d'initialisation (nonce) à ne jamais réutiliser

GCM nécessite un vecteur d'initialisation (IV) unique de 96 bits par chiffrement avec une clé donnée. Réutiliser un IV avec la même clé même une seule fois permet à un attaquant de faire un XOR de deux textes chiffrés pour récupérer le texte en clair — une défaillance catastrophique exploitée de façon célèbre contre le Wi-Fi WEP.

Bonne pratique : générez l'IV avec un générateur de nombres aléatoires cryptographiquement sûr (crypto.getRandomValues() dans les navigateurs, /dev/urandom sous Linux) et ajoutez-le en préfixe du texte chiffré. Un IV aléatoire de 96 bits a une probabilité de collision d'environ 2^-48 après le chiffrement de 2^32 fichiers — acceptable pour un service de transfert. Pour la réutilisation de clé sur des milliards de fichiers, utilisez plutôt un compteur déterministe.

Dérivation de clé : transformer des mots de passe en clés

Les utilisateurs veulent des mots de passe comme monchien2024. AES veut 256 bits d'aléatoire uniforme. Le pont est une fonction de dérivation de clé (KDF). Trois sont en usage courant :

  • PBKDF2 avec HMAC-SHA-256 et 600 000 itérations (recommandation OWASP 2023). Largement pris en charge, disponible dans l'API Web Crypto.
  • scrypt ajoute une résistance mémoire, augmentant le coût des attaques par GPU. Utilisé par Bitcoin et LastPass.
  • Argon2id est la meilleure pratique actuelle, vainqueur du Password Hashing Competition 2015. Paramètres : memory=64 Mo, iterations=3, parallelism=4.

Un mot de passe aléatoire de 12 caractères passé par Argon2id prendrait environ un milliard d'années à un GPU moderne pour être cracké par force brute. Un mot de passe faible comme motdepasse123 tombe en millisecondes quel que soit le KDF.

AES dans le navigateur : l'API Web Crypto

Les navigateurs exposent nativement AES-256-GCM via window.crypto.subtle. Un flux typique :

const key = await crypto.subtle.generateKey(
  { name: "AES-GCM", length: 256 },
  true,
  ["encrypt", "decrypt"]
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const ciphertext = await crypto.subtle.encrypt(
  { name: "AES-GCM", iv },
  key,
  fileBytes
);

Les CPU modernes disposent d'instructions AES-NI qui accélèrent cela à environ 3–5 Go/s par cœur. Un fichier de 1 Go se chiffre en moins d'une seconde sur un ordinateur portable de milieu de gamme. Sur mobile, les puces Apple A-series et Qualcomm Snapdragon incluent les extensions cryptographiques ARMv8 pour un débit similaire.

Ce contre quoi AES-256 protège (et ne protège pas)

AES-256 résout un problème précis : la confidentialité des données au repos ou en transit, à condition que la clé soit secrète. Il ne résout pas :

  • La gestion des clés. Si vous envoyez le mot de passe avec le fichier, AES-256 n'apporte rien.
  • La compromission du terminal. Un malware lisant le texte en clair avant le chiffrement contourne entièrement le chiffrement.
  • Les bugs d'implémentation. Les attaques BEAST, CRIME et Lucky13 de 2018 visaient toutes les implémentations TLS, pas AES lui-même.
  • Les attaques par canaux auxiliaires. L'analyse du cache et la mesure de puissance ont permis d'extraire des clés AES d'appareils contraints. AES-NI atténue largement ce problème sur les ordinateurs de bureau.

AES-256 ne prouve pas non plus l'identité de l'expéditeur. Pour cela, associez-le à des signatures numériques utilisant Ed25519 ou ECDSA.

Pourquoi "de niveau militaire" est surtout du marketing

L'expression est répandue parce que la NSA CNSSP-15 a approuvé AES-256 pour les données TOP SECRET en 2003. C'est réel, mais c'est aussi vieux de 23 ans — AES-128 est approuvé pour les données SECRET et conviendrait à la plupart des usages civils de manière identique. Le passage de 128 à 256 bits est une précaution contre les futures avancées en informatique quantique : l'algorithme de Grover divise théoriquement la sécurité des clés symétriques par deux, réduisant la force effective d'AES-256 à 128 bits — ce qui est encore sécurisé.

En pratique, AES-256 coûte environ 40 % de CPU de plus que AES-128 avec AES-NI et est universellement pris en charge, donc il est devenu la valeur par défaut même quand 128 suffirait.

Comment vérifier qu'un service utilise vraiment AES-256-GCM

Trois façons de vérifier :

  1. Lisez le livre blanc de sécurité. Les services crédibles (Tresorit, Proton Drive, SwissTransfer, HexaTransfer) publient le mode exact et le traitement du vecteur d'initialisation.
  2. Inspectez le code client. Ouvrez les DevTools, cherchez dans le bundle JavaScript AES-GCM ou aes-256-gcm. Vous devriez le trouver explicitement.
  3. Vérifiez les audits tiers. Cure53, NCC Group et Trail of Bits publient des audits qui nomment les algorithmes examinés.

Signaux d'alarme : "chiffrement de niveau bancaire" sans mode précisé, "algorithme propriétaire" quel qu'il soit, ou références à AES-128-ECB.

Mise en pratique

Pour envoyer un fichier sensible aujourd'hui : choisissez un service qui indique explicitement AES-256-GCM, utilise un IV aléatoire de 96 bits par fichier, et effectue le chiffrement dans votre navigateur (pas sur son serveur). Associez cela à une phrase de passe de 16 caractères minimum dérivée via Argon2id ou PBKDF2 à 600 000 itérations minimum.

Essayez sur hexatransfer.com — gratuit, sans compte, jusqu'à 10 Go.

Envoyez vos fichiers volumineux en toute sécurité avec le chiffrement de bout en bout

Transférez des fichiers jusqu'à 10 Go gratuitement avec le chiffrement de bout en bout. Aucun compte requis. Vos fichiers sont chiffrés dans votre navigateur avant l'envoi — personne d'autre ne peut les lire.

Envoyer un fichier