Құпиялылыққа арналған тегін құрал
Файлды қорғалған күйде жіберу
Файлды жаңадан жасалған бір реттік кілтпен шифрлап, қалаған арнаңызбен жіберіңіз. Кілті бар адам оны осы бетте аша алады. Ештеңе жүктеп жіберілмейді, бұзып табуға болатын құпия сөз тіркесі жоқ және ештеңе сақталмай тұрып файлдың ішін көресіз.
Барлық жұмыс осы қойындыда орындалады. Бұл бет ешбір сервермен байланыса алмайды.
Қорғалып жатыр…
Файл қорғалды.
Бұл — шифрланған файлыңыз. Кілтсіз оны ешкім, соның ішінде біз де, оқи алмаймыз.
Кілт — тек қазір көрсетіледі
Бұл кілт дәл қазір тек осы бетте бар. Ол ешқайда сақталмайды да, жіберілмейді де. Оны жоғалтсаңыз, файлды ешкім, біз де, аша алмаймыз. Беттен шықпай тұрып сақтап алыңыз.
Немесе кілтті сілтеме арқылы бөлісіңіз
Кілт сілтемедегі # таңбасынан кейін орналасады. Браузерлер бұл бөлікті ешбір серверге жібермейді. Сілтеме осы бетті Ашу қойындысымен және енгізілген кілтпен ашады да, кейін кілтті мекенжай жолағынан алып тастайды.
Файл мен кілтті бөлек жіберіңіз.
Шифрланған файл да, кілт те қолында бар кез келген адам файлды аша алады. Оларды әртүрлі арнамен жіберіңіз: мысалы, файлды электрондық поштамен, ал кілт сілтемесін мәтіндік хабарламамен. Сонда екеуі бір пошта жәшігінде қатар болмайды.
Кілт сілтемеңізден оқылып, мекенжай жолағынан алынды, сондықтан браузер тарихында қалмайды.
Тексеріліп жатыр…
Шифрланған файлдың ішіндегісі
Әзірге ештеңе сақталған жоқ. Шифрланған файлда мынадай мазмұн көрсетілген:
- Атауы
- Көлемі
- Түрі
Абайлаңыз: бұл файл түрі құрылғыңызда код іске қоса алады
Шифры ашылды.
Файлдың шифры құрылғыңызда ашылып, жүктеп алуға ұсынылды. Оған қатысты ештеңе бұл беттен сыртқа шыққан жоқ.
Sealby жасаушыларынан — iPhone-ға арналған шифрланған қойма
Sealby фотосуреттерді, файлдар мен жазбаларды iPhone құрылғыңыздағы шифрланған қоймаларда сақтайды. Тіркелгі жоқ, серверлер қолданылмайды; оларды өзіңізден басқа ешкім оқи алмайды.
Барлық параметр ашық көрсетілген
- Шифр
- AES-256-GCM (WebCrypto), әр бөлікке 128-bit тег
- Кілт
- браузердің CSPRNG құралынан алынған 256 bits; әр файлға жаңадан жасалады, бір рет қолданылады, басқа мәннен туындатылмайды
- Бөліктерге бөлу
- шифрланған манифест (файл атауы, көлемі, түрі), содан кейін файл 1 MiB бөліктерге бөлінеді — әр бөлік бөлек аутентификацияланады
- Бірреттік мән
- 32-bit кездейсоқ файл тұзы ‖ 64-bit бөлік санауышы — бір файл ішінде қайталанбайды; кілт те бір рет қана қолданылады
- Аутентификацияланатын деректер
- толық 16-byte тақырып, әр бөліктің индексі және бөліктердің жалпы саны — бөліктердің орнын ауыстыру, қысқарту не біріктіру шифрды ашуға кедергі жасайды
- Кілт жолы
- base64url, 47 таңба: 32-byte кілт және 3-byte SHA-256 тексеру қосындысы; қате таңба түсініксіз нәтиже шығармай, анық қате береді
Құралдың жұмысы туралы ашық жауаптар
Барлық жұмыс браузеріңізде орындалады.
Қорғау да, ашу да файлды осы беттің жадына оқиды, браузеріңіздің кіріктірілген WebCrypto қозғалтқышымен AES-256-GCM алгоритмін іске қосады және нәтижені жүктеп алуға береді. Ештеңе жүктеп жіберілмейді. Тіркелгі де, серверде өңдеу де жоқ. Сайттың басқа беттерінен айырмашылығы, бұл бет браузерде сақталатын шағын дерек файлдарын қолданбайтын кіру санауышын да жүктемейді. Ешқандай талдау құралы жоқ.
Бұл жай уәде емес. Бет браузерге тек осы сайттың статикалық файлдарын алуға рұқсат беретін Content-Security-Policy саясатымен беріледі. Ол файлды, кілтті немесе басқа нәрсені ешбір серверге, соның ішінде біздікіне, жібере алмайды. Файлды қорғау кезінде браузердің әзірлеуші құралдарын ашсаңыз, бірде-бір сұрау жіберілмегенін көресіз. Тікелей тексеру үшін Toolbox құралын орнатып, ұшақ режимінде файлды қорғаңыз. Желі өшірулі болса, ештеңе сыртқа шыға алмайды.
Бәрі кілтке байланысты — ол бізде ешқашан болмайды.
Әр қорғау кезінде браузеріңізде жаңа кездейсоқ 256-bit кілт жасалады. Ол сізге бір рет көрсетіледі және еш жерде сақталмайды: біздің жүйелерде де (олар қатыспайды), браузердің жергілікті сақтау орнында да, шифрланған файлда да жоқ. Табуға тырысатын құпия сөз тіркесі да, жаппай іріктеп бұзатын мән де жоқ. Кілті мен файлы бар адам оны аша алады. Екеуі қатар жоқ адам аша алмайды.
Мұның қатаң салдары бар: кілт жоғалса, файлға қолжетімділік те жоғалады. Қайта орнату да, қолдау қызметі арқылы ашу да, қалпына келтіру де мүмкін емес. Бұл көмектескіміз келмегендіктен емес. Біз қалпына келтіре алатын көшірмені басқа біреу ұрлай немесе талап ете алар еді.
Кілті бар сілтеме серверге жетпейді.
Бөлісу сілтемесі кілтті URL ішіндегі # таңбасынан кейін орналастырады. Фрагмент деп аталатын бұл бөлік браузерде қалады. Браузер оны ешбір серверге, біздікіне де, басқасына да жібермейді. Бет кілті бар сілтемемен ашылғанда, кілтті оқып, Ашу қойындысына өтеді де, оны мекенжай жолағынан дереу алып тастайды. Сондықтан кілт көрінетін URL ішінде де, браузер тарихында да қалмайды.
Дегенмен сілтеме мен шифрланған файлдың екеуі де қолында бар кез келген адам файлды аша алады. Сол себепті бет файл мен кілтті бөлек арналармен жіберуге кеңес береді.
Ештеңе сақталмай тұрып, файлдың ішінде не барын көресіз.
Ашу екі қадамнан тұрады. Алдымен бет тек шағын манифесттің шифрын ашады: бастапқы файл атауы, көлемі және түрі. Соны көрсетіп, код іске қоса алатын файл түрлері (бағдарламалар, сценарийлер, орнатқыштар, макросты құжаттар, HTML) және invoice.pdf.exe сияқты қос кеңейтіммен бүркемеленген атаулар туралы айқын ескертеді. Шифрды ашу түймесін басқанша ештеңе жазылмайды. Бет шифры ашылған мазмұнды өзі ашпайды да, көрсетпейді де. Файлды тек жүктеп алуға ұсынады.
Шифрлау нені дәлелдейтінін және нені дәлелдемейтінін ескеріңіз. Шифрланған файл жолда құпия сақталады. Бірақ шифрлау оны кім жібергенін де, ішіндегісі қауіпсіз екенін де көрсетпейді. Күтпеген шифрланған файлға күтпеген тіркеме сияқты сақтықпен қараңыз.
Сенімнің нақты шегі қайда өтеді.
Сіз осы сайт жіберген кодты іске қосасыз. Егер sealby.app сайтына немесе оған қосылымыңызға зиян келтірілсе, зиянды бет оған енгізген деректеріңізді оқи алады. Бұл вебтегі кез келген шифрлау құралына тән, сондықтан мұны жасырмай айтамыз. Қолданатын шараларымыз: бет статикалық файл түрінде беріледі және онда үшінші тарап коды жоқ. Орнатылған Toolbox бұрын жүктелген нұсқаны пайдалануды жалғастыруға мүмкіндік береді. Пішім төменде сипатталған, сондықтан оған тәуелсіз құралдар жасауға болады.
Өз құрылғыңыз да осы сенім шегінің ішінде. Бетке кіре алатын браузер кеңейтімдері немесе құрылғыдағы зиянды бағдарлама кез келген бет оқи алатын нәрсені оқи алады. Шифрланған файл мазмұнын жасырады, бірақ бәрін емес. Файл кімнің қолында болса, сол оның көлемін (шамамен бастапқы файл көлемін) және Sealby шифрлаған файл екенін көре алады.
Қарапайым тілмен айтылған шектеулер
- Кілт жоғалса = файлға қолжетімділік жоғалады. Бұл — әдейі қойылған қатаң шарт.
- Біз файлдарыңызды да, кілттеріңізді де көре алмаймыз, сондықтан оларды зиянды бағдарламаға тексере де алмаймыз. Файл түрі туралы ескерту тек атауына сүйенеді. Ол қауіпсіздік кепілдігі емес.
- Шифрланған файл мен кілттің екеуі де бар кез келген адам файлды аша алады. Құрал оның кім екенін білмейді де, тексермейді де.
- Шифрланған файлдың көлемі бастапқы файл көлемін шамамен көрсетеді.
- Әр қорғау әрекетінде бір файл, 100 MB дейін. Бірнеше файлды алдымен zip мұрағатына салыңыз.
Пішімнің байт сайын сипаттамасы
Беттің нәтижесін өз бетінше тексеруге немесе .sealed файлын Python тіліндегі отыз жол кодпен ашуға қажет барлық мәлімет:
| bytes | field | contents |
|---|---|---|
| 0–7 | сәйкестендіру белгісі | ASCII "SEALBY-W" |
| 8 | нұсқа | 0x01 — басқа мән «жаңарақ нұсқамен жасалған» деген себеппен қабылданбайды |
| 9 | алгоритм | 0x01 = AES-256-GCM |
| 10–13 | файл тұзы | 4 bytes, CSPRNG, әр файлға жаңадан жасалады |
| 14–15 | резервтелген | нөл болуы тиіс |
| 16–end | бөлік жазбалары | әрқайсысы: uint32 BE шифрмәтін ұзындығы, содан кейін AES-GCM шифрмәтіні + 16-byte тег |
0-бөлік — манифест: UTF-8 JSON {"name":…,"size":…,"type":…}. 1…N−1 бөліктері — 1 MiB бөліктерге бөлінген файл. N бөліктің әр i бөлігі үшін: nonce = salt ‖ uint64 BE i; authenticated data = header ‖ uint64 BE i ‖ uint64 BE N. Сондықтан өзгерту, қысқарту, ретін ауыстыру, орнын өзгерту және басқа файл бөліктерін қосу әрекеттерінің бәрі аутентификациядан өтпейді. Әр жағдай репозиторийде сақталған теріс тестпен дәлелденген.
Кілт жолы: 32-byte кілттің және одан кейінгі SHA-256 мәнінің алғашқы 3 bytes бөлігінің base64url көрінісі (толықтырусыз), барлығы 47 таңба. Қате таңба түсініксіз нәтиже бермей, тексеру қосындысынан өтпейді.
Байттары дәл көрсетілген толық спецификация (FORMAT-WEB-v1) ·Белгілі нәтижелі тест векторлары (JSON)
Ашуға арналған үлгі код (Python, cryptography кітапханасы)
import base64, hashlib, json, struct, sys
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
raw = open(sys.argv[1], "rb").read()
assert raw[:8] == b"SEALBY-W" and raw[8] == 1 and raw[9] == 1
assert raw[14:16] == b"\x00\x00"
header, salt = raw[:16], raw[10:14]
frames, off = [], 16
while off < len(raw):
(n,) = struct.unpack(">I", raw[off:off + 4]); off += 4
frames.append(raw[off:off + n]); off += n
assert off == len(raw)
kb = base64.urlsafe_b64decode(sys.argv[2] + "=") # 47-char key string
key, check = kb[:32], kb[32:35]
assert hashlib.sha256(key).digest()[:3] == check # typo check
N = len(frames)
def chunk(i):
nonce = salt + struct.pack(">Q", i)
aad = header + struct.pack(">QQ", i, N)
return AESGCM(key).decrypt(nonce, frames[i], aad)
manifest = json.loads(chunk(0))
data = b"".join(chunk(i) for i in range(1, N))
assert len(data) == manifest["size"]
open(manifest["name"], "wb").write(data)
print("decrypted ->", manifest["name"])Жіберілетін файлға — бұл құрал, сақталатын файлға — қойма.
Файлды шифрлау оны жіберу кезінде қорғайды. Sealby сақталатын нәрсенің бәрін — фотосуреттерді, файлдар мен жазбаларды — iPhone құрылғыңыздағы шифрланған қоймаларда қорғайды. Тіркелгі жоқ, серверлер қолданылмайды; оларды өзіңізден басқа ешкім оқи алмайды.
iPhone және iPad · iOS 17+ · Тегін