Outil de confidentialité gratuit
Chiffrer un fichier dans votre navigateur
Choisissez un fichier, choisissez une phrase de passe, puis téléchargez une copie chiffrée. AES-256-GCM, avec la clé dérivée dans votre navigateur. Rien n’est téléversé, et ça fonctionne hors ligne une fois la page chargée. Le format est documenté octet par octet ci-dessous, pour que vous n’ayez à nous croire sur parole sur rien.
Fonctionne entièrement dans cet onglet. Rien n’est téléversé, et ça fonctionne hors ligne une fois chargé.
N’importe quel fichier. Les gros fichiers demandent de la mémoire. Voyez les limites franches ci-dessous.
Il n’y a aucune récupération. Une phrase de passe oubliée, c’est un fichier que personne, nous compris, ne pourra jamais ouvrir.
Chaque paramètre, énoncé
- Chiffre
- AES-256-GCM (WebCrypto), étiquette de 128 bits
- Dérivation de clé
- PBKDF2-HMAC-SHA-256, 600 000 itérations
- Sel du KDF
- 16 octets, CSPRNG, neuf par fichier
- Nonce GCM
- 12 octets, CSPRNG, neuf par fichier
- Données authentifiées
- l’en-tête complet de 42 octets, alors trafiquer un seul paramètre annoncé casse le déchiffrement
- Encodage de la phrase de passe
- UTF-8, normalisé NFC (pour que la même phrase tapée sur n’importe quel appareil dérive la même clé)
Limites, franchement
Ceci n’est pas le format de coffre de l’app Sealby. L’app dérive les clés avec Argon2id calibré par appareil, les enveloppe dans la Secure Enclave et range le contenu dans des conteneurs découpés à déni plausible. Rien de tout cela n’est possible pour une page Web. Cette page est un utilitaire autonome bâti sur ce que les navigateurs offrent nativement.
PBKDF2 n’est pas à coût mémoire élevé. C’est la seule fonction de dérivation de clé que les navigateurs offrent nativement, et 600 000 itérations rendent chaque supposition lente, mais une machine à GPU l’attaque encore bien plus vite qu’Argon2id. La protection vit donc dans votre phrase de passe : quatre mots aléatoires ou plus, pas un mot de passe.
WebCrypto chiffre en une seule passe. Il n’y a pas de flux, alors le fichier entier occupe la mémoire deux à trois fois pendant le traitement. Des centaines de mégaoctets, c’est correct sur la plupart des appareils. Pour des archives de plusieurs gigaoctets, utilisez un outil de bureau. La sortie chiffrée révèle aussi la taille approximative du fichier. Le nom est chiffré à l’intérieur, mais la taille n’est pas cachée.
Le format, octet par octet
Tout ce qu’il faut à un lecteur technique pour vérifier la sortie de cette page de façon indépendante, ou la déchiffrer en vingt lignes de Python :
| bytes | field | contents |
|---|---|---|
| 0–7 | magie | ASCII "SBXF0001" |
| 8 | version | 0x01 |
| 9 | algorithme | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | itérations | uint32, gros-boutiste (600 000) |
| 14–29 | sel | 16 octets |
| 30–41 | nonce | 12 octets |
| 42–fin | texte chiffré | AES-256-GCM de la charge utile, AAD = octets 0–41; les 16 derniers octets sont l’étiquette GCM |
Charge utile avant chiffrement : [longueur du nom sur 2 octets, gros-boutiste][nom de fichier, UTF-8][octets du fichier]. Le nom de fichier d’origine voyage chiffré; au déchiffrement, il est rétabli.
Déchiffreur de référence (Python, bibliothèque cryptography)
import sys, hashlib, struct, unicodedata
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
raw = open(sys.argv[1], "rb").read()
assert raw[:8] == b"SBXF0001" and raw[8] == 1 and raw[9] == 1
iters = struct.unpack(">I", raw[10:14])[0] # 600000
salt, nonce, ct = raw[14:30], raw[30:42], raw[42:]
phrase = unicodedata.normalize("NFC", sys.argv[2]).encode()
key = hashlib.pbkdf2_hmac("sha256", phrase, salt, iters, 32)
plain = AESGCM(key).decrypt(nonce, ct, raw[:42]) # AAD = header
name_len = struct.unpack(">H", plain[:2])[0]
name = plain[2 : 2 + name_len].decode()
open(name, "wb").write(plain[2 + name_len :])
print("decrypted ->", name)Ceci est la démo. Le coffre, c’est le produit.
Un fichier, une phrase de passe, une page. Voilà ce qu’un navigateur peut faire. Sealby le fait comme il faut : Argon2id calibré pour votre appareil, clés dans la Secure Enclave, et des coffres cachés sans liste ni décompte enregistré.
iPhone et iPad · iOS 17+ · Gratuit