Ücretsiz gizlilik aracı
Bir dosya mühürle
Bir dosyayı taze, tek kullanımlık bir anahtarla şifrele ve istediğin kanaldan gönder. Anahtarı elinde tutan kişi onu tam burada, bu sayfada açar. Hiçbir şey yüklenmez, kırılacak bir parola yoktur ve hiçbir şey kaydedilmeden önce içindekileri görürsün.
Tamamen bu sekmede çalışır. Bu sayfa herhangi bir sunucuyla hiç konuşamaz.
Mühürleniyor…
Mühürlendi.
Bu senin şifreli dosyan. Anahtar olmadan kimse okuyamaz. Ne biz, ne bir başkası.
Anahtar — yalnızca şimdi gösteriliyor
Bu anahtar yalnızca bu sayfada, şu anda var. Hiçbir yerde saklanmıyor ya da gönderilmiyor. Kaybedersen biz dahil hiç kimse dosyayı açamaz. Ayrılmadan önce kaydet.
Ya da anahtarı bağlantı olarak paylaş
Anahtar, bağlantıdaki # işaretinden sonra gelir. Tarayıcılar o kısmı hiçbir sunucuya göndermez. Bağlantı bu sayfayı Aç sekmesi hazır ve anahtar doldurulmuş olarak açar, sonra anahtarı adres çubuğundan siler.
Dosyayı ve anahtarı ayrı ayrı gönder.
Hem mühürlü dosyaya hem anahtara sahip olan herkes onu açabilir. Onları farklı kanallardan gönder; örneğin dosyayı e-postayla, anahtar bağlantısını mesajla. Böylece tek bir gelen kutusu ikisini birden tutmaz.
Anahtar bağlantından okundu ve geçmişinde kalmaması için adres çubuğundan silindi.
Denetleniyor…
Bu mühürlü dosyanın içinde
Henüz hiçbir şey kaydedilmedi. Mühürlü dosya içeriğinin şu olduğunu söylüyor:
- Ad
- Boyut
- Tür
Dikkat — bu dosya türü cihazında kod çalıştırabilir
Çözüldü.
Dosya cihazında çözüldü ve indirme olarak sunuldu. Onunla ilgili hiçbir şey bu sayfadan çıkmadı.
Sealby’yi yapanlardan — iPhone için şifreli kasa
Sealby fotoğrafları, dosyaları ve notları iPhone’unda şifreli kasalarda tutar. Hesap yok, sunucu yok, senden başka kimse okuyamaz.
Her parametre, açıkça
- Şifreleme
- AES-256-GCM (WebCrypto), parça başına 128 bitlik etiket
- Anahtar
- tarayıcı CSPRNG’sinden 256 bit, her mühürde taze üretilir, bir kez kullanılır, hiçbir şeyden türetilmez
- Parçalama
- şifreli bir bildirim (dosya adı, boyut, tür), ardından dosya 1 MiB’lik parçalar hâlinde — her biri ayrı ayrı kimlik doğrulamalı
- Nonce
- 32 bitlik rastgele mühür tuzu ‖ 64 bitlik parça sayacı — bir dosya içinde asla tekrarlanmaz ve anahtar zaten tek kullanımlıktır
- Kimliği doğrulanan veri
- 16 baytlık başlığın tamamı, artı her parçanın sırası ve toplam parça sayısı — parçaları yeniden sıralamak, kırpmak ya da araya eklemek çözmeyi bozar
- Anahtar dizesi
- base64url, 47 karakter: 32 baytlık anahtar artı 3 baytlık SHA-256 sağlama toplamı; böylece bir yazım hatası çöp üretmek yerine temiz biçimde başarısız olur
Bunun ne yaptığına dair dürüst yanıtlar
Her şey tarayıcında olur.
Mühürleme de açma da dosyayı bu sayfanın belleğine okur, orada tarayıcının yerleşik WebCrypto motoruyla AES-256-GCM çalıştırır ve sonucu bir indirme olarak geri verir. Hiçbir şey yüklenmez. Hesap yok, sunucu tarafında işlem yok. Bu sitenin geri kalanından farklı olarak, bu sayfa çerezsiz ziyaret sayacını bile yüklemez. Hiçbir türde analitik yok.
Bu yalnızca bir söz değil. Sayfa, tarayıcının yalnızca bu sitenin kendi statik dosyalarını getirmesine izin veren bir Content-Security-Policy ile sunuluyor. Dosyanı, anahtarını ya da başka bir şeyi bizimki dahil hiçbir sunucuya gönderme imkânı yok. Mühürlerken tarayıcının geliştirici araçlarını aç, sıfır istek göreceksin. En açık kanıt için Araç Kutusu’nu kur ve uçak modunda mühürle. Ağ kapalıyken hiçbir şey dışarı çıkamaz.
Her şey anahtardır — ve o hiçbir zaman bizde olmaz.
Her mühürleme, tarayıcında taze ve rastgele 256 bitlik bir anahtar üretir. Sana bir kez gösterilir ve hiçbir yerde tutulmaz: sistemlerimizde değil (zaten hiçbiri işin içinde değil), tarayıcının deposunda değil, mühürlü dosyanın içinde değil. Tahmin edilecek bir parola ve kaba kuvvetle kırılacak bir şey yok. Anahtar ve dosya kimdeyse onu açar. Kimde yoksa açamaz.
Bunun sert bir sonucu var: anahtar kaybolursa dosya gitmiştir. Sıfırlama yok, destek talebi yok, kurtarma yok. Bu, yardımsever olmadığımızdan değil. Kurtarabileceğimiz bir kopya, birinin çalabileceği ya da talep edebileceği bir kopya olurdu.
Anahtar bağlantısı hiçbir sunucuya ulaşmaz.
Paylaşım bağlantısı anahtarı URL’deki # işaretinden sonraya koyar. O kısım, yani parça (fragment), tarayıcıda kalır. Tarayıcının hiçbir sunucuya, ne bizimkine ne başkasınınkine, gönderdiği şeyin parçası olmaz. Bu sayfa bağlantıda bir anahtarla yüklendiğinde anahtarı okur, Aç sekmesine geçer ve anahtarı adres çubuğundan hemen siler. Böylece görünen URL’de ya da tarayıcı geçmişinde asılı kalmaz.
Yine de, hem bağlantıya hem mühürlü dosyaya sahip olan herkes onu açabilir. Bu sayfanın sana dosyayı ve anahtarı farklı kanallardan göndermeni söylemesinin nedeni bu.
Hiçbir şey kaydedilmeden önce içeride ne olduğunu görürsün.
Açmak iki adımda olur. Önce sayfa yalnızca küçük bir bildirimi çözer: orijinal dosya adı, boyutu ve türü. Bunu sana gösterir; kod çalıştırabilen dosya türleri (programlar, betikler, kurulum dosyaları, makrolu belgeler, HTML) ve invoice.pdf.exe gibi çift uzantıyla gizlenmiş adlar için göze çarpan bir uyarıyla. Sen çözmeye tıklayana kadar hiçbir şey yazılmaz. Sayfa çözülmüş içeriği kendisi asla açmaz ya da göstermez. Dosyayı yalnızca indirmek üzere sunar.
Şifrelemenin neyi kanıtlayıp neyi kanıtlamadığı konusunda net ol. Mühürlü bir dosya yolda gizlidir. Mühürlemek, kimin gönderdiği ya da içeriğinin güvenli olup olmadığı hakkında hiçbir şey söylemez. Beklemediğin bir mühürlü dosyaya, beklemediğin bir eke davrandığın kadar şüpheci yaklaş.
Güven sınırı gerçekte nerede.
Bu web sitesinin sana sunduğu kodu çalıştırıyorsun. sealby.app ya da ona olan bağlantın ele geçirilmiş olsaydı, kötü niyetli bir sayfa içine koyduklarını okuyabilirdi. Bu, web tabanlı her şifreleme aracı için geçerlidir ve bunu, aksini iddia etmektense söylemeyi tercih ederiz. Bu konuda yaptıklarımız: sayfa statik bir dosyadır ve onu üçüncü taraf koddan uzak tutuyoruz. Kurulu Araç Kutusu, zaten yüklemiş olduğun bir sürümü kullanmayı sürdürmeni sağlar. Biçim de aşağıda belgelidir; böylece ona karşı bağımsız araçlar yazılabilir.
Kendi cihazın da sınırın içindedir. Sayfa erişimi olan tarayıcı eklentileri ya da makinedeki kötü amaçlı yazılım, herhangi bir sayfanın okuyabildiği her şeyi okuyabilir. Mühürlü dosya içeriğini gizler, ama her şeyi değil. Onu elinde tutan herkes boyutunu (kabaca orijinalinki) ve bunun Sealby ile mühürlenmiş bir dosya olduğunu görebilir.
Sade dille sınırlar
- Kayıp anahtar = kayıp dosya. İstisnasız, tasarım gereği.
- Dosyalarını ya da anahtarlarını göremeyiz, bu yüzden onları kötü amaçlı yazılıma karşı da tarayamayız. Dosya türü uyarısı yalnızca dosya adına dayanır. Bir güvenlik garantisi değildir.
- Hem mühürlü dosyaya hem anahtara sahip olan herkes onu açabilir. Araç, kim olduklarını bilmez ya da denetlemez.
- Mühürlü dosyanın boyutu, orijinal dosyanın boyutunu kabaca ele verir.
- Mühür başına tek dosya, en fazla 100 MB. Birden çok dosyayı önce sıkıştır.
Biçim, bayt bayt
Teknik bir okurun bu sayfanın çıktısını bağımsız olarak doğrulaması ya da bir .sealed dosyasını otuz satır Python ile açması için gereken her şey:
| bytes | field | contents |
|---|---|---|
| 0–7 | sihirli değer | ASCII "SEALBY-W" |
| 8 | sürüm | 0x01 — başka her şey “daha yeni bir sürümle yapılmış” diye reddedilir |
| 9 | algoritma | 0x01 = AES-256-GCM |
| 10–13 | mühür tuzu | 4 bayt, CSPRNG, mühür başına taze |
| 14–15 | ayrılmış | sıfır olmalı |
| 16–son | parça çerçeveleri | her biri: uint32 BE şifreli metin uzunluğu, ardından AES-GCM şifreli metin + 16 baytlık etiket |
0 numaralı parça bildirimdir: UTF-8 JSON {"name":…,"size":…,"type":…}. 1…N−1 parçaları dosyanın 1 MiB’lik dilimleridir. N parçadan i’si için: nonce = tuz ‖ uint64 BE i; kimliği doğrulanan veri = başlık ‖ uint64 BE i ‖ uint64 BE N. Böylece kurcalama, kırpma, yeniden sıralama, yer değiştirme ve dosyalar arası ekleme kimlik doğrulamasında başarısız olur. Her durum, depoya işlenmiş bir negatif testle kanıtlanmıştır.
Anahtar dizesi: 32 baytlık anahtarın ardından SHA-256’sının ilk 3 baytının base64url (dolgusuz) hâli, toplam 47 karakter. Bir yazım hatası çöp üretmek yerine sağlama toplamında başarısız olur.
Bayt düzeyinde tam belirtim (FORMAT-WEB-v1) ·Bilinen yanıt test vektörleri (JSON)
Referans açıcı (Python, cryptography kütüphanesi)
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, yoldaki dosyalar için. Kasa ise duran dosyalar için.
Mühürlemek bir dosyayı bir yere giderken korur. Sealby ise kalan her şeyi korur: iPhone’undaki şifreli kasalarda fotoğraflar, dosyalar ve notlar. Hesap yok, sunucu yok, senden başka kimse okuyamaz.
iPhone ve iPad · iOS 17+ · Ücretsiz