أداة خصوصية مجانية
شفّر ملفًا داخل متصفحك
اختر ملفًا، واختر عبارة مرور، ونزّل نسخة مشفرة. 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 | العلامة السحرية | ASCII "SBXF0001" |
| 8 | الإصدار | 0x01 |
| 9 | الخوارزمية | 0x01 = AES-256-GCM + PBKDF2-HMAC-SHA-256 |
| 10–13 | التكرارات | uint32، big-endian (600,000) |
| 14–29 | الملح | 16 بايت |
| 30–41 | النونس | 12 بايت |
| 42–النهاية | النص المشفر | AES-256-GCM للحمولة، AAD = البايتات 0–41؛ وآخر 16 بايت هي وسم GCM |
الحمولة قبل التشفير: [طول الاسم ببايتين، 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+ · مجانًا