چگونه کار می‌کند

هیچ اختراعی در کار نیست - فقط سازه‌های به‌خوبی مطالعه‌شده: BIP-39، X25519، HKDF-SHA256، XChaCha20-Poly1305. این هم تمام مسیر، به زبان ساده.

۱۲ کلمه، تمامِ هویت

نمایه از یک عبارت بازیابی BIP-39 آغاز می‌شود - ۱۲ کلمهٔ انگلیسی که ۱۲۸ بیت آنتروپی در خود دارند. کلمه‌ها به یک بذر گسترش می‌یابند و HKDF جفت‌کلید رمزگذاری را از آن مشتق می‌کند. همان کلمه‌ها روی هر دستگاهی همان کلیدها را بازمی‌گردانند: «حسابی» برای بازیابی وجود ندارد، فقط خودِ عبارت.

نشانی همان کلید عمومی است

کلید عمومی X25519 شما، کدشده با bech32 و پیشوند sk، همان نشانی شماست - حدود ۶۰ نویسه که با sk1 آغاز می‌شود. آن را به‌صورت متن یا کد QR بدهید. نه دفترچه‌ای هست که در آن ثبت‌نام کنید و نه سروری که نام‌ها را به افراد نگاشت کند.

sk1qsva3e52awafjvedj5ethvc5hs9j4t0ml26m83kn6kycsh9m46rejzha

پیام به پاکت تبدیل می‌شود

متن یک بار با یک کلید پیام تصادفی و با XChaCha20-Poly1305 رمزگذاری می‌شود. سپس آن کلید برای هر گیرنده در یک جایگاه پیچیده می‌شود - و همیشه در یک جایگاه اضافی برای خودتان. برای همین پیام‌های ارسالی خودتان خوانا می‌مانند: رمزگشایی تاریخچه همان عملیاتی است که با آن پیام‌های دریافتی را می‌خوانید.

جایگاه‌ها بی‌نام و درهم‌ریخته‌اند: پاکت هیچ نشانی‌ای با خود ندارد و بینندهٔ بیرونی فقط اندازه‌ها را می‌بیند. کلید هر جایگاه با دو دست‌دهی X25519 توافق می‌شود - یکی با کلید زودگذری که برای همین پاکت تولید شده (forward secrecy) و دیگری با کلید دائمی فرستنده (احراز هویت فرستنده).

نسخه ۱ بایت کلید فرستنده ۳۲ بایت کلید زودگذر ۳۲ بایت جایگاه‌ها هر کدام ۴۸ بایت nonce ۲۴ بایت متن رمزشده + تگ بار داده
ساختار پاکت (نسخهٔ ۲)

پاکت به شکل متن ساده سفر می‌کند

پاکت دودویی با base64 در یک بلوک زره‌دار پیچیده می‌شود. خودکفاست: آن را در پیام‌رسان، ایمیل، پست انجمن یا یک فایل بچسبانید - هر کانالی که متن را برساند، پیام‌های Secret Keeper را هم می‌رساند.

-----BEGIN SECRET MESSAGE V1-----
AlXhZ0Qq7bfPj…base64…M42kLBi6p4Jro
-----END SECRET MESSAGE V1-----

فایل‌ها: کانتینر .skf

فایل‌ها همان طرح جایگاه‌ها را دارند، اما بدنه تکه‌تکه رمزگذاری می‌شود تا ویدیویی چندگیگابایتی بدون بارشدن در حافظه به‌صورت جریانی عبور کند. nonce هر تکه از ساختار STREAM پیروی می‌کند (مانند age و Tink): یک شمارنده جابه‌جایی و تکرار را می‌گیرد و بایت پایانی، بریده‌شدن را. حتی نام فایل هم درون سرآیند رمزگذاری‌شده است.

نسخه‌های پشتیبان

نسخهٔ پشتیبان یک فایل .skb است: تنظیمات، مخاطبان و تاریخچه در یک ظرف واحد، رمزگذاری‌شده برای خودتان - همان طرح فایل‌های رمزگذاری‌شده؛ از بیرون هیچ‌چیز خواندنی نیست، حتی نشانی مخاطبان. عبارت بازیابی هرگز در نسخهٔ پشتیبان نیست - نمایه با ۱۲ کلمه بازیابی می‌شود و نسخهٔ پشتیبان همه‌چیزِ پیرامون آن را برمی‌گرداند.

این چه چیزی به شما می‌دهد

Forward secrecy
یک کلید زودگذر تازه برای هر پاکت
فرستنده می‌خواند
جایگاهی از آنِ شما در هر پاکتی که می‌فرستید
بدون حالت
نه نشست‌های دوطرفه، نه چیزی ذخیره‌شده روی سرورها
بدون شناسهٔ کاربری
نشانی همان خودِ کلید عمومی است
دو پیاده‌سازی
Dart در برنامه، @noble در افزونه - با بردارهای آزمون مشترک با هم مقایسه می‌شوند

می‌خواهید راستی‌آزمایی کنید؟

مشخصات کامل در سطح بایت عمومی است - همان سندی که برنامه و افزونه با آن آزموده می‌شوند:

خواندن مشخصات پروتکل