Безплатен инструмент за поверителност

Шифровайте файл в браузъра си

Изберете файл и парола с думи, след което изтеглете шифровано копие. AES-256-GCM, с ключ, извлечен в браузъра ви. Нищо не се качва и след зареждане работи офлайн. Форматът е описан байт по байт по-долу, за да не се налага просто да ни вярвате.

Работи изцяло в този раздел. Нищо не се качва и след зареждане работи офлайн.

Избор на файл

Всеки файл. Големите файлове изискват памет. Вижте откровените ограничения по-долу.

Няма възстановяване. Забравената парола означава файл, който никой — включително ние — никога няма да може да отвори.

Всички параметри, без премълчаване

Шифър
AES-256-GCM (WebCrypto), 128-битов таг
Извличане на ключ
PBKDF2-HMAC-SHA-256, 600 000 итерации
Сол за KDF
16 байта, CSPRNG, нова за всеки файл
Nonce за GCM
12 байта, CSPRNG, нов за всеки файл
Удостоверени данни
цялата 42-байтова заглавка, така че промяна на който и да е заявен параметър проваля дешифрирането
Кодиране на паролата
UTF-8, нормализирано с NFC (така една и съща фраза, въведена на всяко устройство, извлича същия ключ)

Откровени ограничения

Това не е форматът на трезорите в приложението Sealby. Приложението извлича ключове с Argon2id, калибриран за всяко устройство, обгръща ги в Secure Enclave и съхранява съдържанието в правдоподобно отричаеми контейнери на части. Уебстраница не може да направи нищо от това. Тази страница е самостоятелен инструмент, изграден върху вградените възможности на браузърите.

PBKDF2 не е функция с високи изисквания към паметта. Тя е единствената функция за извличане на ключ, вградена в браузърите, и 600 000 итерации забавят всеки опит, но система с GPU все пак я атакува много по-бързо от Argon2id. Затова защитата е в паролата ви: четири или повече случайни думи, а не обикновена парола.

WebCrypto шифрова наведнъж. Няма поточно обработване, затова по време на процеса целият файл заема памет два до три пъти. Стотици мегабайти са приемливи за повечето устройства. За архиви от няколко гигабайта използвайте настолен инструмент. Шифрованият резултат разкрива и приблизителния размер на файла. Името е шифровано вътре, но размерът не е скрит.

Форматът, байт по байт

Всичко необходимо на технически читател, за да провери независимо резултата от тази страница или да го дешифрира с двадесет реда Python:

bytesfieldcontents
0–7magicASCII "SBXF0001"
8версия0x01
9алгоритъм0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256
10–13итерацииuint32, big-endian (600 000)
14–29сол16 байта
30–41nonce12 байта
42–крайшифрован текстAES-256-GCM на полезния товар, AAD = байтове 0–41; последните 16 байта са GCM тагът

Полезен товар преди шифроване: [2-байтова дължина на името, big-endian][име на файла, UTF-8][байтове на файла]. Оригиналното име пътува шифровано и се възстановява при дешифриране.

Референтен дешифратор (Python, библиотека 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)

Това е демонстрацията. Трезорът е продуктът.

Един файл, една парола с думи, една страница. Това може да направи браузърът. Sealby го прави както трябва: Argon2id, калибриран за устройството ви, ключове в Secure Enclave и скрити трезори без съхранен списък или брой.

Изтеглете от App Store

iPhone и iPad · iOS 17+ · Безплатно