Bepul maxfiylik vositasi

Faylni muhrlang

Faylni yangi bir martalik kalit bilan shifrlang va istalgan kanal orqali yuboring. Kalit kimda bo‘lsa, faylni shu sahifaning o‘zida ochadi. Hech narsa serverga yuklanmaydi, buzib topiladigan parol iborasi yo‘q va biror narsa saqlanishidan oldin ichida nima borligini ko‘rasiz.

To‘liq shu varaqda ishlaydi. Bu sahifa hech qanday server bilan aloqa qila olmaydi.

Barcha parametrlar ochiq ko‘rsatilgan

Shifrlash algoritmi
AES-256-GCM (WebCrypto), har bir bo‘lak uchun 128 bitli teg
Kalit
brauzer CSPRNG vositasidan 256 bit; har muhrlashda yangidan yaratiladi, bir marta ishlatiladi, hech narsadan hosil qilinmaydi
Bo‘laklarga ajratish
shifrlangan manifest (fayl nomi, hajmi, turi), so‘ng 1 MiB bo‘laklarga ajratilgan fayl — har birining autentifikatsiyasi alohida tekshiriladi
Nonce
32 bitli tasodifiy seal salt ‖ 64 bitli bo‘lak hisoblagichi — bitta fayl ichida hech qachon takrorlanmaydi, kalitning o‘zi ham bir martalik
Autentifikatsiyalangan ma‘lumotlar
to‘liq 16 baytli sarlavha, har bir bo‘lak indeksi va jami bo‘laklar soni — bo‘laklarni qayta tartiblash, kesish yoki boshqa bo‘lak ulash shifrni ochishni imkonsiz qiladi
Kalit satri
base64url, 47 ta belgi: 32 baytli kalit va 3 baytli SHA-256 nazorat yig‘indisi; yozuv xatosi ma‘nosiz natija berish o‘rniga tekshiruvda aniqlanadi

Bu vosita nima qilishi haqida ochiq javoblar

Hammasi brauzeringizda bajariladi.

Muhrlash ham, ochish ham faylni shu sahifa xotirasiga o‘qiydi, brauzeringizning ichki WebCrypto mexanizmi bilan shu yerda AES-256-GCM amalini bajaradi va natijani yuklab olish uchun beradi. Hech narsa serverga yuklanmaydi. Hisob ham, serverda qayta ishlash ham yo‘q. Saytning boshqa sahifalaridan farqli ravishda, bu sahifa hatto cookie ishlatmaydigan tashrif hisoblagichini ham yuklamaydi. Hech qanday tahliliy kuzatuv yo‘q.

Bu shunchaki va‘da emas. Sahifa brauzerga faqat shu saytning o‘z statik fayllarini olishga ruxsat beradigan Content-Security-Policy bilan taqdim etiladi. U faylingiz, kalitingiz yoki boshqa biror narsani hech bir serverga, jumladan biznikiga ham yubora olmaydi. Muhrlash paytida brauzeringizning dasturchi vositalarini ochsangiz, birorta ham so‘rov bo‘lmaganini ko‘rasiz. Eng aniq isbot uchun Toolbox o‘rnating va samolyot rejimida muhrlang. Tarmoq o‘chiq bo‘lsa, hech narsa tashqariga chiqmaydi.

Hammasi kalitga bog‘liq — u bizda hech qachon bo‘lmaydi.

Har bir muhrlash brauzeringizda yangi tasodifiy 256 bitli kalit yaratadi. U sizga bir marta ko‘rsatiladi va hech qayerda saqlanmaydi: tizimlarimizda ham (ular bu jarayonda qatnashmaydi), brauzer omborida ham, muhrlangan faylda ham. Taxmin bilan topiladigan parol iborasi ham, brute-force qilinadigan narsa ham yo‘q. Kalit va fayl kimda bo‘lsa, o‘sha ocha oladi. Ular bo‘lmasa, ochib bo‘lmaydi.

Buning qat‘iy oqibati bor: kalit yo‘qolsa, fayl ham yo‘qoladi. Qayta o‘rnatish, yordam xizmatiga murojaat qilish yoki tiklash bilan ochib bo‘lmaydi. Bu yordam berishni istamasligimizdan emas. Biz tiklay oladigan nusxa bo‘lsa, uni kimdir o‘g‘irlashi yoki talab qilib olishi ham mumkin bo‘lardi.

Kalit havolasi serverga hech qachon yetib bormaydi.

Ulashish havolasida kalit URL ichidagi # belgisidan keyin joylashadi. Fragment deb ataladigan bu qism brauzerda qoladi. U brauzer biror serverga — biznikiga yoki boshqasinikiga — yuboradigan ma‘lumotlarga hech qachon kiritilmaydi. Sahifa kalitli havola bilan yuklanganda, kalitni o‘qiydi, Ochish varag‘iga o‘tadi va kalitni darhol manzil satridan olib tashlaydi. Shu sabab u ko‘rinib turgan URL yoki brauzer tarixida qolib ketmaydi.

Shunga qaramay, havola ham, muhrlangan fayl ham qo‘lida bo‘lgan har kim uni ocha oladi. Shuning uchun bu sahifa fayl va kalitni turli kanallar orqali yuborishni aytadi.

Biror narsa saqlanishidan oldin ichida nima borligini ko‘rasiz.

Ochish ikki bosqichda bajariladi. Avval sahifa faqat kichik manifestning shifrini ochadi: asl fayl nomi, hajmi va turi. Bu ma‘lumotni ko‘rsatadi; kod ishga tushirishi mumkin bo‘lgan fayl turlari (dasturlar, skriptlar, o‘rnatuvchilar, makrosli hujjatlar, HTML) va invoice.pdf.exe kabi qo‘sh kengaytma bilan niqoblangan nomlar uchun yaqqol ogohlantirish chiqaradi. Shifrni ochish tugmasini bosmaguningizcha hech narsa yozilmaydi. Sahifaning o‘zi shifri ochilgan mazmunni hech qachon ochmaydi yoki ekranga chiqarmaydi. U faqat faylni yuklab olishni taklif qiladi.

Shifrlash nimani isbotlashi va nimani isbotlamasligini aniq biling. Muhrlangan fayl uzatishda maxfiy qoladi. Muhrlash uni kim yuborgani yoki ichidagi mazmun xavfsizligi haqida hech narsa bildirmaydi. Kutilmagan muhrlangan faylga xabarga kutilmaganda biriktirilgan faylga qaragandek shubha bilan qarang.

Ishonchning haqiqiy chegarasi qayerda.

Siz bu sayt taqdim etgan kodni ishga tushiryapsiz. Agar sealby.app yoki unga ulanishingiz buzib kirish bilan zararlansa, zararli sahifa unga kiritganlaringizni o‘qishi mumkin. Bu internetdagi barcha shifrlash vositalariga tegishli, biz esa buni yashirmay aytamiz. Ko‘rayotgan choralarimiz: sahifa statik fayldan iborat va unda uchinchi tomon kodi yo‘q. O‘rnatilgan Toolbox avval yuklangan versiyadan foydalanishda davom etish imkonini beradi. Format esa quyida hujjatlashtirilgan, shuning uchun unga mos mustaqil vositalar yaratish mumkin.

O‘z qurilmangiz ham shu ishonch doirasiga kiradi. Sahifaga kirish ruxsati bor brauzer kengaytmalari yoki qurilmadagi zararli dasturlar sahifa o‘qiy oladigan hamma narsani o‘qishi mumkin. Muhrlangan fayl mazmunini yashiradi, ammo hamma narsani emas. Uni qo‘lga olgan odam hajmini (asl faylnikiga yaqin) va Sealby bilan muhrlangan fayl ekanini ko‘ra oladi.

Oddiy tildagi cheklovlar

  • Kalit yo‘qolsa, fayl ham yo‘qoladi. Bu ataylab shunday qurilgan, istisnosi yo‘q.
  • Fayllaringiz yoki kalitlaringizni ko‘ra olmaymiz, shu sabab ularni zararli dasturlarga ham tekshira olmaymiz. Fayl turi haqidagi ogohlantirish faqat fayl nomiga asoslanadi. Bu xavfsizlik kafolati emas.
  • Muhrlangan fayl va kalit qo‘lida bo‘lgan har kim uni ocha oladi. Vosita ularning kimligini bilmaydi va tekshirmaydi.
  • Muhrlangan fayl hajmidan asl fayl hajmini taxminan bilish mumkin.
  • Har muhrlashda 100 MBgacha bitta fayl. Bir nechta faylni avval zip arxiviga joylang.

Format baytma-bayt

Texnik bilimli o‘quvchi sahifa natijasini mustaqil tekshirishi yoki o‘ttiz qator Python kodi bilan .sealed faylini ochishi uchun kerakli barcha ma‘lumotlar:

bytesfieldcontents
0–7magicASCII "SEALBY-W"
8version0x01 — boshqa har qanday qiymat “yangiroq versiyada yaratilgan” deb rad etiladi
9algorithm0x01 = AES-256-GCM
10–13seal salt4 bayt, CSPRNG, har muhrlash uchun yangidan
14–15reservednol bo‘lishi kerak
16–endchunk frameshar biri: uint32 BE shifrmatn uzunligi, so‘ng AES-GCM shifrmatni + 16 baytli teg

0-bo‘lak — manifest: UTF-8 JSON {"name":…,"size":…,"type":…}. 1…N−1-bo‘laklar — faylning 1 MiB qismlari. Jami N bo‘lakning har bir i-bo‘lagi uchun: nonce = salt ‖ uint64 BE i; authenticated data = header ‖ uint64 BE i ‖ uint64 BE N. Shu sabab o‘zgartirish, kesish, qayta tartiblash, boshqa joyga ko‘chirish va turli fayllardan bo‘laklarni ulash autentifikatsiyadan o‘tmaydi. Har bir holat repozitoriyga kiritilgan salbiy test bilan tasdiqlangan.

Kalit satri: 32 baytli kalit va undan keyin uning SHA-256 qiymatining dastlabki 3 bayti base64url (to‘ldirishsiz) ko‘rinishida, jami 47 ta belgi. Yozuv xatosi ma‘nosiz natija berish o‘rniga nazorat yig‘indisi tekshiruvidan o‘tmaydi.

Namunaviy ochish dasturi (Python, cryptography kutubxonasi)
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"])

Bu vosita uzatilayotgan fayllar uchun. Seyf esa saqlanadigan fayllar uchun.

Muhrlash faylni biror joyga yuborishda himoyalaydi. Sealby esa qurilmada qoladigan hamma narsani himoyalaydi: iPhone qurilmangizdagi shifrlangan seyflarda foto, fayl va qaydlarni. Hisob ham, serverlar ham yo‘q, faqat siz o‘qiy olasiz.

App Store orqali yuklab oling

iPhone va iPad · iOS 17+ · Bepul