Alat privasi percuma

Sulitkan fail dalam pelayar anda

Pilih fail, pilih frasa laluan, dan muat turun salinan yang disulitkan. AES-256-GCM, dengan kunci diterbitkan dalam pelayar anda. Tiada muat naik, dan ia berfungsi luar talian setelah dimuatkan. Formatnya didokumenkan bait demi bait di bawah, supaya anda tidak perlu berpegang pada kata-kata kami untuk apa-apa pun.

Berjalan sepenuhnya dalam tab ini. Tiada apa-apa dimuat naik, dan ia berfungsi luar talian setelah dimuatkan.

Sebarang fail. Fail besar memerlukan memori. Lihat had yang jujur di bawah.

Tiada pemulihan. Frasa laluan yang dilupakan bermakna fail yang tiada sesiapa, termasuk kami, akan dapat membukanya.

Setiap parameter, dinyatakan

Sifer
AES-256-GCM (WebCrypto), tag 128-bit
Penerbitan kunci
PBKDF2-HMAC-SHA-256, 600,000 lelaran
Garam KDF
16 bait, CSPRNG, baharu bagi setiap fail
Nonce GCM
12 bait, CSPRNG, baharu bagi setiap fail
Data disahkan
keseluruhan pengepala 42 bait, jadi mengusik mana-mana parameter yang dinyatakan akan merosakkan nyahsulitan
Pengekodan frasa laluan
UTF-8, dinormalkan NFC (supaya frasa yang sama ditaip pada mana-mana peranti menerbitkan kunci yang sama)

Had yang jujur

Ini bukan format peti besi apl Sealby. Apl itu menerbitkan kunci dengan Argon2id yang ditentukur bagi setiap peranti, membalutnya dalam Secure Enclave, dan menyimpan kandungan dalam bekas berkeping yang boleh dinafikan. Halaman web tidak boleh melakukan satu pun daripadanya. Halaman ini ialah utiliti berdiri sendiri yang dibina atas apa yang ditawarkan pelayar secara natif.

PBKDF2 bukan berat memori. Ia satu-satunya fungsi penerbitan kunci yang dihantar pelayar secara natif, dan 600,000 lelaran menjadikan setiap tekaan perlahan, tetapi mesin GPU masih menyerangnya jauh lebih pantas daripada Argon2id. Oleh itu perlindungan berada dalam frasa laluan anda: empat perkataan rawak atau lebih, bukan kata laluan.

WebCrypto menyulitkan sekali-jalan. Tiada penstriman, jadi keseluruhan fail berada dalam memori dua hingga tiga kali ganda semasa pemprosesan. Ratusan megabait baik pada kebanyakan peranti. Untuk arkib berbilang gigabait, gunakan alat desktop. Output yang disulitkan juga mendedahkan anggaran saiz fail. Namanya disulitkan di dalam, tetapi saiznya tidak disembunyikan.

Format itu, bait demi bait

Semua yang diperlukan pembaca teknikal untuk mengesahkan output halaman ini secara bebas, atau menyahsulitnya dalam dua puluh baris Python:

bytesfieldcontents
0–7magicASCII "SBXF0001"
8versi0x01
9algoritma0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256
10–13lelaranuint32, big-endian (600,000)
14–29garam16 bait
30–41nonce12 bait
42–akhirteks siferAES-256-GCM bagi muatan, AAD = bait 0–41; 16 bait terakhir ialah tag GCM

Muatan sebelum penyulitan: [panjang nama 2 bait, big-endian][nama fail, UTF-8][bait fail]. Nama fail asal mengembara dalam keadaan disulitkan; semasa nyahsulitan ia dipulihkan.

Penyahsulit 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 demonstrasinya. Peti besi itulah produknya.

Satu fail, satu frasa laluan, satu halaman. Itulah yang mampu dilakukan pelayar. Sealby melakukannya dengan betul: Argon2id ditentukur untuk peranti anda, kunci dalam Secure Enclave, dan peti besi tersembunyi tanpa senarai atau kiraan yang disimpan.

Muat turun di App Store

iPhone & iPad · iOS 17+ · Percuma