📖 آموزش · Zero-Knowledge

معماری Zero-Knowledge
چگونه کار می‌کند؟

درک عمیق از فناوری که تضمین می‌کند حتی سازنده اپ هم به داده‌های شما دسترسی ندارد.

Zero-Knowledge چیست؟

یک معماری امنیتی که در آن سرویس‌دهنده — یا هر شخص ثالثی — هیچ‌گاه به اطلاعات خام کاربر دسترسی ندارد.

تشبیه ساده

تصور کنید نامه‌ای را در یک صندوق قفل‌دار می‌گذارید و صندوق را به پست می‌دهید. پست‌چی صندوق را حمل می‌کند، اما هرگز کلید ندارد — پس هرگز محتوا را نمی‌بیند. در معماری Zero-Knowledge، سرور همان «پست‌چی» است.

🔑

کلیدها پیش شماست

کلیدهای رمزنگاری روی دستگاه شما تولید و نگه‌داری می‌شوند. هرگز به سرور ارسال نمی‌شوند.

🚫

سرور کور است

حتی اگر سرور هک شود، مهاجم فقط به داده‌های رمزشده دسترسی دارد — بی‌معنی و غیرقابل خواندن.

🏛️

اعتماد ریاضی

حریم خصوصی به نیت شرکت یا قراردادها وابسته نیست — بلکه به معادلات ریاضی تکیه دارد که شکستنشان غیرممکن است.

چه کسی چه می‌داند؟

در معماری ZK، دانش اطلاعات بین ذی‌نفعان به این شکل توزیع می‌شود:

👤
شما (کاربر)
محتوای پیام
کلید خصوصی
کلید عمومی
رمز عبور
🏢
سرور / شرکت
محتوای پیام
کلید خصوصی
کلید عمومی
رمز عبور
🦹
مهاجم / هکر
محتوای پیام
کلید خصوصی
کلید عمومی
داده رمزشده

جریان کلی چگونه است؟

در یک سیستم Zero-Knowledge، داده قبل از خروج از دستگاه رمزنگاری می‌شود. سرور فقط با «رمز» سروکار دارد، نه محتوا.

📝
متن اصلی
Plaintext
کلید عمومی
⚙️
رمزنگاری
AES-256-GCM
روی دستگاه
🔒
متن رمزشده
Ciphertext
انتقال/ذخیره
☁️
سرور / کانال
فقط رمز می‌بیند
کلید خصوصی
🔓
رمزگشایی
فقط گیرنده
نتیجه
متن اصلی
قابل خواندن
💡

در تمام این مسیر، سرور فقط مرحله ۴ (متن رمزشده) را می‌بیند — و بدون کلید خصوصی که هرگز دستگاه شما را ترک نمی‌کند، آن را نمی‌تواند بخواند.

رمزنگاری چگونه انجام می‌شود؟

وقتی در ZKOK یک پیام رمز می‌کنید، زنجیره‌ای از عملیات رمزنگاری به ترتیب اجرا می‌شود.

01
تولید کلید جلسه با X25519

فرستنده و گیرنده هر کدام یک جفت کلید Elliptic Curve دارند. الگوریتم X25519 با ترکیب کلید خصوصی فرستنده و کلید عمومی گیرنده، یک «راز مشترک» تولید می‌کند — بدون اینکه این راز از شبکه عبور کند.

02
مشتق‌سازی کلید رمزنگاری با HKDF

راز مشترک مستقیماً برای رمزنگاری استفاده نمی‌شود. HKDF آن را به یک کلید AES-256 بیتی قوی تبدیل می‌کند، همراه با اطلاعات context برای جلوگیری از بازاستفاده.

03
رمزنگاری با AES-256-GCM

متن با کلید مشتق‌شده و یک Nonce تصادفی رمز می‌شود. GCM یک تگ احراز هویت نیز تولید می‌کند که هرگونه دستکاری داده را آشکار می‌سازد.

04
بسته‌بندی نهایی

خروجی شامل: Ciphertext + Nonce + Auth Tag است. این بسته را می‌توان آزادانه منتقل کرد — بدون کلید خصوصی گیرنده، کاملاً بی‌معنی است.

⚠️

کلید خصوصی شما هرگز در این فرآیند از دستگاه خارج نمی‌شود. فقط کلید عمومی گیرنده لازم است که ذاتاً عمومی و قابل اشتراک است.

رمزگشایی چگونه امن می‌ماند؟

فقط گیرنده — که کلید خصوصی متناظر با کلید عمومی مورد استفاده را دارد — می‌تواند پیام را رمزگشایی کند. حتی فرستنده اصلی هم نمی‌تواند.

⬆ مراحل رمزگشایی (گیرنده)
STEP 1
دریافت بسته رمزشده
base64 → bytes
بسته را از هر کانالی دریافت کنید: متن، QR، کلیپ‌بورد
STEP 2
استخراج Nonce + AuthTag
parse payload
بسته به سه بخش جدا می‌شود: nonce، ciphertext، auth tag
STEP 3
بازسازی راز مشترک
X25519
با کلید خصوصی گیرنده + کلید عمومی فرستنده، همان راز مشترک بازسازی می‌شود
STEP 4
مشتق کلید AES
HKDF
همان کلید AES که در رمزنگاری استفاده شد، مجدداً مشتق می‌شود
STEP 5
رمزگشایی + تأیید
AES-256-GCM
GCM ابتدا Auth Tag را بررسی می‌کند. اگر دستکاری شده باشد، رمزگشایی شکست می‌خورد
چرا فقط گیرنده می‌تواند رمزگشایی کند؟

ریاضیات X25519 این خاصیت را دارد: X25519(privateA, publicB) = X25519(privateB, publicA). یعنی فقط کسی که کلید خصوصی B را دارد، می‌تواند همان راز مشترک را بازسازی کند. حتی اگر همه چیز دیگر را بداند.

🛡️

Authenticated Encryption: تگ احراز هویت GCM تضمین می‌کند که حتی یک بیت از پیام رمزشده تغییر نکرده. دستکاری = شکست کامل رمزگشایی.

🔐

کلید خصوصی در Keystore: در اندروید، کلید خصوصی درون Hardware Security Module نگه‌داری می‌شود. حتی اپ نمی‌تواند مقدار آن را بخواند — فقط از آن عملیات رمزنگاری می‌گیرد.

ZKOK Encrypt این اصول را چطور اجرا می‌کند؟

هر لایه از ZKOK برای محافظت از حریم خصوصی طراحی شده، از تولید کلید تا نگه‌داری و استفاده.

📱

Android Keystore

کلید خصوصی در Hardware Security Module دستگاه قفل می‌شود. خروج از دستگاه فیزیکاً غیرممکن است — حتی با root.

👆

Biometric Prompt

هر عملیات رمزگشایی نیازمند تأیید اثر انگشت یا چهره است. بدون بیومتریک، Keystore کلید را آزاد نمی‌کند.

📴

آفلاین کامل

ZKOK هیچ‌گاه به شبکه متصل نمی‌شود. تمام عملیات روی دستگاه است. هیچ سرور مرکزی‌ای وجود ندارد.

🔄

Argon2id بدون Keystore

در دستگاه‌هایی بدون HSM، رمز عبور با Argon2id تبدیل به کلید می‌شود — مقاوم در برابر حملات brute-force و dictionary.

📋

Clipboard Monitor

اگر متن رمزشده‌ای در کلیپ‌بورد تشخیص داده شود، ZKOK پیشنهاد رمزگشایی می‌دهد — بدون نیاز به جای‌گذاری دستی.

💾

بکاپ رمزنگاری‌شده

فایل پشتیبان نیز کاملاً رمزنگاری شده است. بدون رمز عبور اصلی، بازیابی از بکاپ غیرممکن است.

Zero-Knowledge در مقابل روش‌های دیگر

تفاوت معماری‌های مختلف امنیتی را در یک نگاه ببینید.

ویژگی Zero-Knowledge (ZKOK) E2E معمولی Cloud رمزنگاری‌شده بدون رمزنگاری
سرور محتوا را می‌بیند؟ ✗ هرگز ✗ هرگز ✓ بله ✓ بله
کلید پیش کاربر است؟ ✓ همیشه ~ گاهی ✗ خیر ✗ خیر
هک سرور = داده‌های شما؟ ✗ خیر ✗ خیر ✓ بله ✓ بله
حکومت می‌تواند اجبار کند؟ ✗ خیر (ریاضی) ~ شاید ✓ بله ✓ بله
نیاز به اینترنت؟ ✗ خیر ✓ بله ✓ بله ✓ بله
تأیید دستکاری نشدن؟ ✓ GCM Tag ~ بسته به پروتکل ~ گاهی ✗ خیر

سوالات رایج

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