Ü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:

bytesfieldcontents
0–7sihirli değerASCII "SBXF0001"
8sürüm0x01
9algoritma0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256
10–13yinelemeuint32, big-endian (600.000)
14–29tuz16 bayt
30–41nonce12 bayt
42–sonşifreli metinyü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.

App Store’dan indir

iPhone ve iPad · iOS 17+ · Ücretsiz