انواع رمزنگاری، تفاوت ها، مزایا و معایب
اگر با تعاریف رمزنگاری آشنا نیستین، پیشنهاد میکنم اول مطلب رمزنگاری چیست، که بود و چه کرد؟ رو بخونین.
اگه بخوایم روش های رمزنگاری رو بر اساس کلید دسته بندی کنیم، به ۳ دسته میرسیم:
- رمزنگاری با کلید متقارن | کلید خصوصی | Symmetric Key
- رمزنگاری با کلید نا متقارن |جفت کلید عمومی و خصوصی | Asymmetric Key
- رمزنگاری یکطرفه | درهمسازی | (بدون کلید یا با کلید خصوصی) | Hash
۱. رمزنگاری با کلید متقارن:
در این روش، فقط یک کلید برای رمزنگاری داریم. روش کارش دقیقا مثل یک قفل هست که چه برای باز کردن قفل و چه برای بستن قفل، فقط از یک کلید استفاده میشه. این روش معمولا سرعت بسیار بالایی داره و بعضی وقت ها در لایه سخت افزار پیاده شده که کاراییش بهتر هم بشه. معمولا توی پیاده سازی این روش، از ترکیب روش های Confusion، diffusion و عملیات XOR استفاده میشه.
مثال ها: AES, 3DES, XOR, Blowfish, IDEA
مزیت: سرعت بالا و بهینه
عیب: عدم امکان ارسال کلید بطور امن برای شخصی که نمیشناسیم!
سوال: توی خیلی از عملیات های رمزنگاری از XOR استفاده میشه اما چرا از XNOR استفاده نمیشه؟!
جواب: دلیلش اینه که پیاده سازی XNOR از XOR در سخت افزار هزینه بر تر هست و مزیتی به XOR نداره.
۲. رمزنگاری با کلید نامتقارن:
توی این روش ۲ عدد کلید داریم. یک کلید برای رمزنگاری(کلید عمومی) استفاده میشه و یک کلید برای رمزگشایی(کلید خصوصی). مثلا فرض کنید خودتون یک جعبه با قفل و یک کلید برای قفلتون طراحی کردین. شما میتونید جعبه و قفل باز (کلید عمومی) رو برای هرشخصی میخواید بفرستید و ازشون بخواید پیامشون رو توی جعبه بزارن و قفل رو ببندن و براتون بفرستن. اینجا هیچکس بدون داشتن کلیدی که دسته شما هست(کلید خصوصی) نمیتونه محتویات جعبه رو ببینه.
مثال ها: RSA, ECC, Elgamal, Rabin
توی بعضی از روش های رمزنگاری کلید نامتقارن(مثل RSA) میتونین قابلیت امضای دیجیتال که برای انکار ناپذیری پیام هم هست رو استفاده کنیم.
مزیت: قابلیت ارسال کلید بطور امن در شبکه ای که شنود در حال انجام هست برای شخصی که نمیشناسیم
عیب: سرعت پایین
سوال: حالا از کدومش استفاده کنیم؟
جواب: بستگی به صورت مسئله داره، ولی توی حالت کلی هردو. معمولا توی سطح تجاری از جفتش استفاده میکنن. به اینصورت که با استفاده از کلید خصوصی، پیام هارو رمز میکنن و با استفاده از کلید عمومی، کلید خصوصی را انتقال میدن که از مزایای دو روش استفاده بشه. این نوع رمز نگاری معمولا به اسم رمزنگاری Hybrid شناخته میشه.
سوال: آیا با استفاده از رمزنگاری Hybrid از حملات در امان هستیم؟
جواب: خیر. این روش جلوی حملات Passive مثل شنود رو میگیره ولی جلوی برخی حملات Active مثل حمله Man in the Middle رو نمیتونه بگیره. راه حل؟ استفاده از CA ها که درصورت استقبال جدا یه مطلب براش میزارم.
۳. درهمسازی یا Hash:
ممکنه بعضی ها هش رو به عنوان روش رمزنگاری قبول نداشته باشن چون یک طرفه هست ولی گفتنش خالی از لطف نیست. هش با استفاده از تبدیل یک داده با طول متغیر به یک داده با طول ثابت بطور برگشت ناپذیر، نوعی رمزنگاری رو انجام میده. کلید میتونه وجود داشته باشه و یا وجود نداشته باشه! مثال ساده اش میشه اینکه شما میتونید یک گاو رو به یک همبرگر تبدیل کنید، ولی برعکسش امکان پذیر نیست .
هش ها چند خاصیت مهم دارن:
- ورودی یکسان همیشه خروجی یکسان داشته باشه.
- از خروجی نشه به ورودی رسید.
- نشه برای دو ورودی متفاوت، خروجی یکسان پیدا کرد.
کاربرد هش ها برای صحت سنجی داده هست. مثلا اگه حتی ۱ بیت توی یک فایل چندگیگی عوض بشه، خروجی هش های ساخته شده برای این فایل قبل و بعد از تغییر حداقل ۵۰٪ تفاوت دارن. به این خاصیت هش ها Avalanche effect میگن.
هش کاربرد های خیلی زیاده داره که عمده کاربردش بحث Integrity داده هست. روی بحث امنیتش هم موثر ترین روش هایی که تونستن براش پیدا کنن بحث Rainbow tables هست که عملا مجموعه ای از متن های هش نشده معادل هش هاشون هست که precompute شدن. یعنی عملا بهترین روش حمله ای که برای رسیدن از هش به ورودی براش پیدا میشه سعی و خطا هست. اگر بتونیم برای یک الگوریتم هش collision پیدا کنیم ( یعنی دو ورودی متفاوت پیدا کنیم که هش یکسانی داشته باشن) الگوریتم منسوخ شده فرض میشه.
توی مطلب بعدی نحوه ی کار الگوریتم RSA رو بررسی میکنیم و بعد از اون میریم سراغ حل کردن حملات به این الگوریتم
پاسخ ها