رمزنگاری متقارن (Symmetric) در مقابل رمزنگاری نامتقارن (Asymmetric)
رمزنگاری متقارن از یک کلید مشترک برای رمزگذاری و رمزگشایی استفاده میکند و بسیار سریع است اما توزیع امن کلید بین طرفین چالشبرانگیز است، در حالی که رمزنگاری نامتقارن از یک جفت کلید عمومی/خصوصی استفاده میکند که مشکل توزیع کلید را حل میکند اما بهمراتب کندتر است.
| ویژگی | رمزنگاری متقارن (Symmetric) | رمزنگاری نامتقارن (Asymmetric) |
|---|---|---|
| تعداد کلید | یک کلید مشترک | جفت کلید عمومی/خصوصی |
| سرعت | بسیار سریع | کندتر |
| چالش اصلی | توزیع امن کلید | کارایی و مقیاس |
| مثال الگوریتم | AES، ChaCha20 | RSA، ECC |
کِی از رمزنگاری متقارن (Symmetric) استفاده کنیم؟
وقتی حجم زیادی داده باید رمزگذاری شود و طرفین از قبل به یک کانال امن برای اشتراک کلید دسترسی دارند، مثل رمزگذاری فایل یا داده در پایگاهداده.
کِی از رمزنگاری نامتقارن (Asymmetric) استفاده کنیم؟
وقتی طرفین قبلاً کلید مشترکی ندارند، نیاز به امضای دیجیتال دارید یا میخواهید یک کلید متقارن را بهصورت امن روی یک کانال ناامن مبادله کنید (مثل ابتدای Handshake در TLS).
مثال رمزنگاری متقارن (Symmetric)
// AES-256 (متقارن): همان کلید برای
// رمزگذاری و رمزگشایی بهکار میرود
Encrypt(data, sharedKey) -> ciphertext
Decrypt(ciphertext, sharedKey) -> data
مثال رمزنگاری نامتقارن (Asymmetric)
// RSA (نامتقارن): با کلید عمومی رمز و
// فقط با کلید خصوصی باز میشود
Encrypt(data, publicKey) -> ciphertext
Decrypt(ciphertext, privateKey) -> data
اشتباه رایج
اشتباه رایج استفاده مستقیم از رمزنگاری نامتقارن برای رمزگذاری حجم زیاد داده است؛ چون بسیار کندتر از متقارن است، در عمل پروتکلهایی مثل TLS از نامتقارن فقط برای مبادله امن یک کلید متقارن استفاده میکنند و بقیه داده با همان کلید متقارن رمزگذاری میشود.
جمعبندی
برای حجم زیاد داده از رمزنگاری متقارن و برای مبادله امن کلید یا امضای دیجیتال بدون کانال امن از پیش، از رمزنگاری نامتقارن استفاده کنید؛ سیستمهای واقعی معمولاً هر دو را ترکیب میکنند.
