Alat privasi gratis
Enkripsi sebuah file di peramban Anda
Pilih file, pilih frasa sandi, dan unduh salinan terenkripsi. AES-256-GCM, dengan kunci yang diturunkan di peramban Anda. Tidak ada unggahan, dan ia bekerja luring setelah dimuat. Formatnya didokumentasikan byte per byte di bawah, supaya Anda tak perlu percaya begitu saja pada ucapan kami.
Berjalan sepenuhnya di tab ini. Tidak ada yang diunggah, dan ia bekerja luring setelah dimuat.
File apa pun. File besar butuh memori. Lihat batasan jujurnya di bawah.
Tidak ada pemulihan. Frasa sandi yang terlupakan berarti file yang tak seorang pun, termasuk kami, bisa membukanya, selamanya.
Setiap parameter, dinyatakan
- Cipher
- AES-256-GCM (WebCrypto), tag 128-bit
- Derivasi kunci
- PBKDF2-HMAC-SHA-256, 600.000 iterasi
- Salt KDF
- 16 byte, CSPRNG, baru untuk tiap file
- Nonce GCM
- 12 byte, CSPRNG, baru untuk tiap file
- Data terautentikasi
- seluruh header 42 byte, jadi merusak parameter mana pun yang dinyatakan akan menggagalkan dekripsi
- Pengodean frasa sandi
- UTF-8, dinormalkan NFC (sehingga frasa yang sama diketik di perangkat mana pun menurunkan kunci yang sama)
Batasan yang jujur
Ini bukan format brankas aplikasi Sealby. Aplikasinya menurunkan kunci dengan Argon2id yang dikalibrasi per perangkat, membungkusnya di Secure Enclave, dan menyimpan konten dalam wadah berbasis blok yang bisa disangkal. Halaman web tak bisa melakukan satu pun dari itu. Halaman ini adalah utilitas mandiri yang dibangun di atas apa yang ditawarkan peramban secara bawaan.
PBKDF2 tidak berat memori. Ia satu-satunya fungsi derivasi kunci yang dibawa peramban secara bawaan, dan 600.000 iterasi membuat tiap tebakan lambat, tetapi perangkat GPU tetap menyerangnya jauh lebih cepat daripada Argon2id. Jadi perlindungannya ada pada frasa sandi Anda: empat kata acak atau lebih, bukan sebuah kata sandi.
WebCrypto mengenkripsi sekali jalan. Tidak ada streaming, jadi seluruh file berada di memori dua sampai tiga kali lipat selama diproses. Ratusan megabyte aman di kebanyakan perangkat. Untuk arsip bergigabyte, gunakan alat desktop. Keluaran terenkripsinya juga mengungkap perkiraan ukuran file. Namanya terenkripsi di dalam, tetapi ukurannya tidak disembunyikan.
Formatnya, byte per byte
Semua yang dibutuhkan pembaca teknis untuk memverifikasi keluaran halaman ini secara mandiri, atau mendekripsinya dalam dua puluh baris Python:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SBXF0001" |
| 8 | versi | 0x01 |
| 9 | algoritma | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | iterasi | uint32, big-endian (600.000) |
| 14–29 | salt | 16 byte |
| 30–41 | nonce | 12 byte |
| 42–akhir | cipherteks | AES-256-GCM atas muatan, AAD = byte 0–41; 16 byte terakhir adalah tag GCM |
Muatan sebelum enkripsi: [panjang nama 2 byte, big-endian][nama file, UTF-8][byte file]. Nama file asli ikut terenkripsi di dalamnya; saat dekripsi ia dipulihkan.
Dekriptor rujukan (Python, pustaka cryptography)
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)Ini demonya. Brankasnya adalah produknya.
Satu file, satu frasa sandi, satu halaman. Itulah yang bisa dilakukan peramban. Sealby melakukannya dengan benar: Argon2id yang dikalibrasi untuk perangkat Anda, kunci di Secure Enclave, dan brankas tersembunyi tanpa daftar atau hitungan yang tersimpan.
iPhone & iPad · iOS 17+ · Gratis