เครื่องมือความเป็นส่วนตัวฟรี
เข้ารหัสไฟล์ในเบราว์เซอร์
เลือกไฟล์ ตั้งวลีรหัสผ่าน แล้วดาวน์โหลดสำเนาที่เข้ารหัสแล้ว AES-256-GCM โดยกุญแจถูกสร้างขึ้นในเบราว์เซอร์ของคุณ ไม่มีอะไรถูกอัปโหลด และใช้ออฟไลน์ได้เมื่อโหลดแล้ว ฟอร์แมตถูกบันทึกไว้ทีละไบต์ด้านล่าง คุณจึงไม่ต้องเชื่อคำพูดของเราในเรื่องใดเลย
ทำงานทั้งหมดในแท็บนี้ ไม่มีการอัปโหลด และใช้ออฟไลน์ได้เมื่อโหลดแล้ว
ไฟล์อะไรก็ได้ ไฟล์ใหญ่ต้องใช้หน่วยความจำ ดูขีดจำกัดที่ต้องพูดตรง ๆ ด้านล่าง
ไม่มีการกู้คืน วลีรหัสผ่านที่ลืมแปลว่าไฟล์ที่ไม่มีใคร รวมถึงเรา เปิดได้อีกเลย
ทุกพารามิเตอร์ ระบุไว้ชัด
- ไซเฟอร์
- AES-256-GCM (WebCrypto), แท็ก 128 บิต
- การสร้างกุญแจ
- PBKDF2-HMAC-SHA-256, 600,000 รอบ
- ซอลต์ KDF
- 16 ไบต์, CSPRNG, ใหม่ต่อไฟล์
- นอนซ์ GCM
- 12 ไบต์, CSPRNG, ใหม่ต่อไฟล์
- ข้อมูลที่ยืนยันความถูกต้อง
- ส่วนหัว 42 ไบต์ทั้งหมด ดังนั้นการดัดแปลงพารามิเตอร์ที่ระบุไว้ตัวใดก็ทำให้การถอดรหัสล้มเหลว
- การเข้ารหัสวลีรหัสผ่าน
- UTF-8, ปรับรูปแบบ NFC (วลีเดียวกันที่พิมพ์บนอุปกรณ์ใดก็สร้างกุญแจเดียวกัน)
ขีดจำกัดที่ต้องพูดตรง ๆ
นี่ไม่ใช่ฟอร์แมตตู้นิรภัยของแอป Sealby แอปสร้างกุญแจด้วย Argon2id ที่ปรับจูนต่อเครื่อง ห่อพวกมันใน Secure Enclave และเก็บเนื้อหาในคอนเทนเนอร์แบ่งชิ้นแบบปฏิเสธได้ หน้าเว็บทำสิ่งเหล่านี้ไม่ได้เลย หน้านี้เป็นยูทิลิตีเดี่ยว ๆ ที่สร้างบนสิ่งที่เบราว์เซอร์มีให้โดยกำเนิด
PBKDF2 ไม่กินหน่วยความจำ มันเป็นฟังก์ชันสร้างกุญแจเดียวที่เบราว์เซอร์มีมาให้ และ 600,000 รอบทำให้แต่ละการเดาช้าลง แต่ริก GPU ยังโจมตีมันได้เร็วกว่า Argon2id ไกล การปกป้องจึงอยู่ที่วลีรหัสผ่านของคุณ: คำสุ่มสี่คำขึ้นไป ไม่ใช่รหัสผ่านธรรมดา
WebCrypto เข้ารหัสในครั้งเดียว ไม่มีสตรีมมิง ทั้งไฟล์จึงนั่งอยู่ในหน่วยความจำสองถึงสามชุดระหว่างประมวลผล หลายร้อยเมกะไบต์ไหวบนอุปกรณ์ส่วนใหญ่ สำหรับไฟล์หลายกิกะไบต์ ใช้เครื่องมือเดสก์ท็อป ผลลัพธ์ที่เข้ารหัสยังเผยขนาดโดยประมาณของไฟล์ด้วย ชื่อไฟล์ถูกเข้ารหัสไว้ข้างใน แต่ขนาดไม่ได้ถูกซ่อน
ฟอร์แมต ทีละไบต์
ทุกสิ่งที่ผู้อ่านสายเทคนิคต้องใช้ในการตรวจสอบผลลัพธ์ของหน้านี้อย่างอิสระ หรือถอดรหัสมันด้วย Python ยี่สิบบรรทัด:
| bytes | field | contents |
|---|---|---|
| 0–7 | magic | ASCII "SBXF0001" |
| 8 | version | 0x01 |
| 9 | algorithm | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | iterations | uint32 แบบ big-endian (600,000) |
| 14–29 | salt | 16 ไบต์ |
| 30–41 | nonce | 12 ไบต์ |
| 42–จบ | ciphertext | AES-256-GCM ของเพย์โหลด, AAD = ไบต์ 0–41; 16 ไบต์สุดท้ายคือแท็ก GCM |
เพย์โหลดก่อนเข้ารหัส: [ความยาวชื่อ 2 ไบต์ big-endian][ชื่อไฟล์ UTF-8][ไบต์ของไฟล์] ชื่อไฟล์ต้นฉบับเดินทางแบบเข้ารหัส และถูกคืนกลับเมื่อถอดรหัส
ตัวถอดรหัสอ้างอิง (Python, ไลบรารี 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)นี่คือตัวเดโม ตู้นิรภัยคือตัวผลิตภัณฑ์
หนึ่งไฟล์ หนึ่งวลีรหัสผ่าน หนึ่งหน้า นั่นคือสิ่งที่เบราว์เซอร์ทำได้ Sealby ทำอย่างเต็มรูปแบบ: Argon2id ปรับจูนกับเครื่องของคุณ กุญแจใน Secure Enclave และตู้นิรภัยที่ซ่อนไว้ซึ่งไม่มีการเก็บรายการหรือจำนวนไว้
iPhone และ iPad · iOS 17+ · ฟรี