Безплатен инструмент за поверителност
Запечатайте файл
Шифровайте файл с нов еднократен ключ и го изпратете по избран от вас канал. Който държи ключа, го отваря тук, на тази страница. Нищо не се качва, няма парола за разбиване и виждате съдържанието, преди да се запише каквото и да било.
Работи изцяло в този раздел. Страницата изобщо не може да се свързва със сървър.
Запечатване…
Запечатано.
Това е шифрованият ви файл. Без ключа никой не може да го прочете. Нито ние, нито който и да е.
Ключът — показва се само сега
Този ключ съществува единствено на тази страница точно сега. Не се съхранява и не се изпраща никъде. Ако го изгубите, никой — включително ние — не може да отвори файла. Запазете го, преди да напуснете.
Или споделете ключа като връзка
Ключът стои след # във връзката. Браузърите никога не изпращат тази част към сървър. Връзката отваря страницата с готов раздел „Отваряне“ и попълнен ключ, след което премахва ключа от адресната лента.
Изпратете файла и ключа отделно.
Всеки, който има и запечатания файл, и ключа, може да го отвори. Изпратете ги по различни канали — например файла по имейл, а връзката с ключа чрез текстово съобщение. Така никоя входяща кутия няма да съдържа и двете.
Ключът е прочетен от връзката и премахнат от адресната лента, за да не остава в историята ви.
Проверяване…
В този запечатан файл
Още нищо не е запазено. Запечатаният файл твърди, че съдържа:
- Име
- Размер
- Тип
Внимание — този тип файл може да изпълнява код на устройството ви
Дешифрирано.
Файлът беше дешифриран на устройството ви и предложен за изтегляне. Нищо свързано с него не напусна страницата.
От създателите на Sealby — шифрования трезор за iPhone
Sealby пази снимки, файлове и бележки в шифровани трезори на вашия iPhone. Без акаунт, без сървъри, четими единствено от вас.
Всички параметри, без премълчаване
- Шифър
- AES-256-GCM (WebCrypto), 128-битов таг за всяка част
- Ключ
- 256 бита от CSPRNG на браузъра, генерирани наново при всяко запечатване, използвани веднъж, без извличане от друга стойност
- Разделяне
- шифрован манифест (име, размер, тип), после файлът на части от 1 MiB — всяка удостоверена отделно
- Nonce
- 32-битова случайна сол за запечатването ‖ 64-битов брояч на частите — никога не се повтаря във файла, а ключът така или иначе е еднократен
- Удостоверени данни
- пълната 16-байтова заглавка плюс индексът на всяка част и общият им брой — пренареждане, съкращаване или съединяване на части проваля дешифрирането
- Низ на ключа
- base64url, 47 знака: 32-байтовият ключ плюс 3-байтова SHA-256 контролна сума, така че печатна грешка да се открие чисто, вместо да създаде безсмислен резултат
Откровени отговори за действието на инструмента
Всичко се извършва в браузъра ви.
И запечатването, и отварянето прочитат файла в паметта на страницата, изпълняват там 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 | magic | 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+ · Безплатно