Құпиялылыққа арналған тегін құрал
Файлды браузерде шифрлау
Файлды таңдап, құпия сөз тіркесі орнатыңыз да, шифрланған көшірмені жүктеп алыңыз. AES-256-GCM қолданылады, кілт браузеріңізде жасалады. Ештеңе жүктеп жіберілмейді; бет жүктелген соң интернетсіз де жұмыс істейді. Пішім төменде байт сайын сипатталған, сондықтан айтқанымызды өзіңіз тексере аласыз.
Барлық жұмыс осы қойындыда орындалады. Ештеңе жүктеп жіберілмейді; бет жүктелген соң интернетсіз де жұмыс істейді.
Кез келген файл. Үлкен файлдарға көбірек жад қажет. Төмендегі шектеулерді қараңыз.
Қалпына келтіру мүмкін емес. Құпия сөз тіркесін ұмытсаңыз, файлды ешкім, соның ішінде біз де, ешқашан аша алмаймыз.
Барлық параметр ашық көрсетілген
- Шифр
- AES-256-GCM (WebCrypto), 128-bit тег
- Кілт жасау
- PBKDF2-HMAC-SHA-256, 600,000 қайталау
- KDF тұзы
- 16 bytes, CSPRNG, әр файлға жаңадан жасалады
- GCM бір реттік мәні
- 12 bytes, CSPRNG, әр файлға жаңадан жасалады
- Аутентификацияланатын деректер
- бүкіл 42-byte тақырып; сондықтан көрсетілген кез келген параметрді өзгерту шифрды ашуға кедергі жасайды
- Құпия сөз тіркесінің кодталуы
- UTF-8, NFC бойынша қалыптандырылған (кез келген құрылғыда терілген бірдей фразадан бірдей кілт жасалады)
Нақты шектеулер
Бұл Sealby қолданбасындағы қойма пішімі емес. Қолданба кілттерді әр құрылғыға бейімделген Argon2id арқылы жасап, оларды Secure Enclave арқылы орап қорғайды және мазмұнды барын жасыруға болатын бөліктерге бөлінген контейнерлерде сақтайды. Веб-бет мұның ешқайсысын істей алмайды. Бұл бет — браузерлердің өзінде бар мүмкіндіктерге сүйенетін дербес құрал.
PBKDF2 жадты көп қажет етпейді. Бұл — браузерлерде әдепкіде бар жалғыз кілт жасау функциясы. 600,000 қайталау әр жорамалды баяулатады, бірақ GPU жабдығы оны Argon2id-пен салыстырғанда әлдеқайда жылдам бұзып көре алады. Сондықтан қорғаныс құпия сөз тіркесіңізге байланысты: жай құпиясөз емес, кемінде төрт кездейсоқ сөз қолданыңыз.
WebCrypto файлды бірден шифрлайды. Ағынмен өңдеу жоқ, сондықтан жұмыс кезінде бүкіл файл жадта екі-үш еселік көлемде сақталады. Көп құрылғы жүздеген мегабайтты өңдей алады. Бірнеше гигабайттық мұрағаттарға компьютерлік құралды қолданыңыз. Шифрланған нәтиже файлдың шамамен қандай көлемде екенін де ашады. Атауы ішінде шифрланады, ал көлемі жасырылмайды.
Пішімнің байт сайын сипаттамасы
Беттің нәтижесін өз бетінше тексеруге немесе Python тіліндегі жиырма жол кодпен шифрын ашуға қажет барлық мәлімет:
| bytes | field | contents |
|---|---|---|
| 0–7 | сәйкестендіру белгісі | ASCII "SBXF0001" |
| 8 | нұсқа | 0x01 |
| 9 | алгоритм | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | қайталаулар | uint32, big-endian (600,000) |
| 14–29 | тұз | 16 bytes |
| 30–41 | бір реттік мән | 12 bytes |
| 42–end | шифрмәтін | жүктеменің AES-256-GCM шифрмәтіні, AAD = bytes 0–41; соңғы 16 bytes — GCM тегі |
Шифрлауға дейінгі жүктеме: [2-byte атау ұзындығы, 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 ішіндегі кілттерді және тізімі де, саны да сақталмайтын жасырын қоймаларды қолданады.
iPhone және iPad · iOS 17+ · Тегін