Ücretsiz gizlilik aracı
Tarayıcında bir dosya şifrele
Bir dosya seç, bir parola belirle ve şifreli bir kopya indir. AES-256-GCM, anahtar tarayıcında türetilir. Hiçbir şey yüklenmez ve bir kez yüklendikten sonra çevrimdışı çalışır. Biçim aşağıda bayt bayt belgelenmiştir; yani hiçbir konuda sözümüze güvenmek zorunda değilsin.
Tamamen bu sekmede çalışır. Hiçbir şey yüklenmez ve bir kez yüklendikten sonra çevrimdışı çalışır.
Her tür dosya. Büyük dosyalar bellek ister. Aşağıdaki dürüst sınırlara bak.
Kurtarma diye bir şey yok. Unutulan bir parola, biz dahil hiç kimsenin bir daha açamayacağı bir dosya demektir.
Her parametre, açıkça
- Şifreleme
- AES-256-GCM (WebCrypto), 128 bitlik etiket
- Anahtar türetme
- PBKDF2-HMAC-SHA-256, 600.000 yineleme
- KDF tuzu
- 16 bayt, CSPRNG, dosya başına taze
- GCM nonce
- 12 bayt, CSPRNG, dosya başına taze
- Kimliği doğrulanan veri
- 42 baytlık başlığın tamamı, yani bildirilen herhangi bir parametreyle oynamak çözmeyi bozar
- Parola kodlaması
- UTF-8, NFC ile normalleştirilmiş (böylece aynı ifade hangi cihazda yazılırsa yazılsın aynı anahtarı türetir)
Dürüst sınırlar
Bu, Sealby uygulamasının kasa biçimi değildir. Uygulama anahtarları cihaz başına kalibre edilmiş Argon2id ile türetir, onları Secure Enclave’de sarmalar ve içeriği inkâr edilebilir, parçalı kapsayıcılarda saklar. Bunların hiçbirini bir web sayfası yapamaz. Bu sayfa, tarayıcıların yerel olarak sunduğu üzerine kurulmuş bağımsız bir yardımcı araçtır.
PBKDF2 bellek-yoğun değildir. Tarayıcıların yerel olarak sunduğu tek anahtar türetme işlevidir ve 600.000 yineleme her tahmini yavaşlatır, ama bir GPU düzeneği ona yine de Argon2id’ye kıyasla çok daha hızlı saldırır. Dolayısıyla koruma parolanda yaşar: bir şifre değil, dört ya da daha fazla rastgele kelime.
WebCrypto tek seferde şifreler. Akış yoktur, yani işlem sırasında dosyanın tamamı bellekte iki ila üç kez durur. Yüzlerce megabayt çoğu cihazda sorunsuzdur. Gigabaytlarca arşivler için bir masaüstü aracı kullan. Şifreli çıktı ayrıca dosyanın yaklaşık boyutunu ele verir. Ad içeride şifrelidir, ama boyut gizlenmez.
Biçim, bayt bayt
Teknik bir okurun bu sayfanın çıktısını bağımsız olarak doğrulaması ya da yirmi satır Python ile çözmesi için gereken her şey:
| bytes | field | contents |
|---|---|---|
| 0–7 | sihirli değer | ASCII "SBXF0001" |
| 8 | sürüm | 0x01 |
| 9 | algoritma | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | yineleme | uint32, big-endian (600.000) |
| 14–29 | tuz | 16 bayt |
| 30–41 | nonce | 12 bayt |
| 42–son | şifreli metin | yükün AES-256-GCM hâli, AAD = 0–41 baytları; son 16 bayt GCM etiketidir |
Şifrelemeden önceki yük: [2 baytlık ad uzunluğu, big-endian][dosya adı, UTF-8][dosya baytları]. Orijinal dosya adı şifreli olarak yolculuk eder; çözerken geri getirilir.
Referans çözücü (Python, cryptography kütüphanesi)
import sys, hashlib, struct, unicodedata
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
raw = open(sys.argv[1], "rb").read()
assert raw[:8] == b"SBXF0001" and raw[8] == 1 and raw[9] == 1
iters = struct.unpack(">I", raw[10:14])[0] # 600000
salt, nonce, ct = raw[14:30], raw[30:42], raw[42:]
phrase = unicodedata.normalize("NFC", sys.argv[2]).encode()
key = hashlib.pbkdf2_hmac("sha256", phrase, salt, iters, 32)
plain = AESGCM(key).decrypt(nonce, ct, raw[:42]) # AAD = header
name_len = struct.unpack(">H", plain[:2])[0]
name = plain[2 : 2 + name_len].decode()
open(name, "wb").write(plain[2 + name_len :])
print("decrypted ->", name)Bu bir gösterim. Ürün olan, kasa.
Tek dosya, tek parola, tek sayfa. Bir tarayıcının yapabileceği bu kadar. Sealby bunu gerektiği gibi yapıyor: cihazına göre kalibre edilmiş Argon2id, Secure Enclave’de anahtarlar ve saklanan bir listesi ya da sayısı olmayan gizli kasalar.
iPhone ve iPad · iOS 17+ · Ücretsiz