Бесплатна алатка за приватност
Запечатете датотека
Шифрирајте датотека со нов еднократен клуч и испратете ја преку кој било канал. Оној што го има клучот ја отвора токму тука, на оваа страница. Ништо никогаш не се прикачува, нема лозинска фраза за пробивање и гледате што има внатре пред да се зачува што било.
Работи целосно во ова јазиче. Страницата воопшто не може да комуницира со сервер.
Запечатување…
Запечатено.
Ова е вашата шифрирана датотека. Без клучот, никој не може да ја прочита. Ниту ние, ниту кој било друг.
Клучот — прикажан само сега
Овој клуч постои само на оваа страница, токму сега. Не се чува и не се испраќа никаде. Ако го изгубите, никој не може да ја отвори датотеката, дури ни ние. Зачувајте го пред да заминете.
Или споделете го клучот како врска
Клучот е по знакот # во врската. Прелистувачите никогаш не го испраќаат тој дел на сервер. Врската ја отвора оваа страница со подготвено јазиче „Отвори“ и внесен клуч, а потоа го отстранува клучот од лентата за адреса.
Испратете ги датотеката и клучот одделно.
Секој што ги има и запечатената датотека и клучот може да ја отвори. Испратете ги преку различни канали, на пример датотеката по е-пошта, а врската со клучот во текстуална порака. Така ниту едно сандаче никогаш нема да ги содржи двете.
Клучот е прочитан од вашата врска и отстранет од лентата за адреса, па не останува во историјата.
Проверка…
Во оваа запечатена датотека
Сè уште ништо не е зачувано. Запечатената датотека наведува дека го содржи следново:
- Име
- Големина
- Вид
Внимателно — овој вид датотека може да извршува код на вашиот уред
Дешифрирано.
Датотеката е дешифрирана на вашиот уред и понудена за преземање. Ништо поврзано со неа никогаш не излезе од оваа страница.
Од создавачите на Sealby — шифрираниот сеф за iPhone
Sealby ги чува фотографиите, датотеките и белешките во шифрирани сефови на вашиот iPhone. Без сметка, без сервери, нечитливи за сите освен за вас.
Наведен е секој параметар
- Шифра
- AES-256-GCM (WebCrypto), 128-битна ознака за секој сегмент
- Клуч
- 256 бита од CSPRNG на прелистувачот, нови за секое запечатување, употребени еднаш и генерирани независно, без изведување од друга вредност
- Сегментирање
- шифриран манифест (име, големина и вид на датотеката), а потоа датотеката во сегменти од 1 MiB — секој засебно автентициран
- Nonce
- 32-битна случајна сол за запечатувањето ‖ 64-битен бројач на сегменти — никогаш не се повторува во датотеката, а клучот секако се користи само еднаш
- Автентицирани податоци
- целото заглавје од 16 бајти, индексот на секој сегмент и вкупниот број сегменти — менувањето на редоследот, скратувањето или спојувањето сегменти го оневозможува дешифрирањето
- Низа за клучот
- base64url, 47 знаци: клучот од 32 бајти и контролна сума SHA-256 од 3 бајти, па печатна грешка уредно се открива наместо да создаде бесмислен резултат
Искрени одговори за тоа што го прави алатката
Сè се одвива во вашиот прелистувач.
И запечатувањето и отворањето ја вчитуваат датотеката во меморијата на оваа страница, таму извршуваат AES-256-GCM со вградениот WebCrypto-систем на прелистувачот и го нудат резултатот како преземање. Ништо не се прикачува. Нема сметка ниту обработка на сервер. За разлика од останатиот дел од оваа веб-страница, оваа страница не го вчитува ни бројачот на посети без колачиња. Нема никаква аналитика.
Ова не е само ветување. Страницата се вчитува со Content-Security-Policy што му дозволува на прелистувачот да ги презема само статичните датотеки на оваа веб-страница. Нема начин да ги испрати вашата датотека, клучот или што било друго на кој било сервер, вклучувајќи го и нашиот. Отворете ги алатките за програмери во прелистувачот додека запечатувате и нема да видите ниту едно барање. За најнепосреден доказ, инсталирајте го Toolbox и запечатувајте во авионски режим. Кога мрежата е исклучена, ништо не може да излезе.
Клучот е сè — а ние никогаш го немаме.
Секое запечатување создава нов случаен 256-битен клуч во вашиот прелистувач. Ви се прикажува еднаш и не се чува никаде: ниту во нашите системи (тие воопшто не учествуваат), ниту во складиштето на прелистувачот, ниту во запечатената датотека. Нема лозинска фраза за погодување и ништо за напад со груба сила. Оној што ги има клучот и датотеката може да ја отвори. Оној што ги нема, не може.
Тоа има строга последица: ако го изгубите клучот, датотеката е изгубена. Нема ресетирање, барање до поддршката или враќање. Не станува збор за тоа дека не сакаме да помогнеме. Копија што би можеле да ја вратиме би била копија што некој може да ја украде или да ја побара.
Врската со клучот никогаш не стигнува до сервер.
Врската за споделување го става клучот по знакот # во 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 бајти, CSPRNG, нова за секое запечатување |
| 14–15 | резервирано | мора да биде нула |
| 16–крај | рамки на сегментите | секој: должина на шифрираниот текст како uint32 BE, потоа шифрираниот текст AES-GCM + ознака од 16 бајти |
Сегментот 0 е манифестот: UTF-8 JSON {"name":…,"size":…,"type":…}. Сегментите 1…N−1 ја содржат датотеката во делови од 1 MiB. За секој сегмент i од N: nonce = сол ‖ uint64 BE i; автентицирани податоци = заглавје ‖ uint64 BE i ‖ uint64 BE N. Така измената, скратувањето, промената на редоследот, преместувањето и вкрстеното спојување меѓу датотеки не ја поминуваат автентикацијата. Секој случај е докажан со вклучен негативен тест.
Низа за клучот: base64url (без дополнување) од клучот од 32 бајти, по кој следуваат првите 3 бајти од неговиот SHA-256, вкупно 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+ · Бесплатно