امروزه برای جذب بییشتر کاربران به سایت باید اطمینان آنها را از امن بودن سایت فراهم کرد. از جمله اقداماتی که برای افزایش امنیت سایت می توان انجام داد رمزگذاری سایت و نصب گواهینامه ssl است .در این مقاله قصد داریم تکنولوژیای که پشت گواهینامههای SSL قرار دارد را شرح دهیم.
در ادامه معرفی گواهینامه SSL و نحوه کارکرد آن، انواع کلیدها از جمله متقارن و نامتقارن را توضیح خواهیم داد که این کلیدها چگونه با همکاری هم یک ارتباط امن و رمزنگاری شده SSL برقرار خواهند کرد. همچنین درباره الگوریتمهای مختلفی که این کلیدها را می سازند صحبت خواهیم کرد.
گواهینامه SSL چیست؟
اس اس ال تکنولوژی استانداردی میباشد که ارتباطی امن و رمزنگاری شده بین سرور و کاربر ایجاد میکند. این ارتباط امن معمولا بین وبسرور (وبسایت) و مرورگر و یا میلسرور و برنامه ایمیل (مثلا Outlook) ایجاد میشود. چنین ارتباطی، زمینه را بر ردوبدل کردن ایمن اطلاعات مهم مانند شماره کارت بانک و رمز مربوط به آن، کلمات عبور، کد ملی و غیره فراهم میآورد. برای برقراری این ارتباط امن، مرورگر و سرور نیاز به شناسایی گواهینامه SSL معتبر دارند، که به همین دلیل وبمسترها به خرید ssl و نصب آن روی سایت اقدام میکنند. اما چگونه این اتفاق میافتد؟ این دادهها چگونه رمزنگاری میشوند که حتی قویترین کامپیوترهای جهان نیز قادر به شکستن قفل آن نیستند؟
پیشنهاد سیتی سایت: محافظت از اطلاعات با استفاده از SSL
رمزنگاری نامتقارن
رمزنگاری نامتقارن (یا رمزنگاری public-key) از دو کلید مجزا و مختلف برای رمزنگاری و رمزگشایی استفاده میکند.
key Public عمومی است و هر کس میتواند با استفاده از آن هر پیغامی را رمزگذاری کند. اما کلیدهای رمزگشایی یا private keys همیشه محرمانه هستند، به همین دلیل فقط گیرنده مدنظر ما که private key را در اختیار دارد میتواند پیام را رمزگشایی کرده و بخواند.
متداولترین الگوریتم رمزنگاری نامتقارن RSA است که در ادامه به آن خواهیم پرداخت.
کلیدهای نامتقارن معمولا به صورت ۱۰۲۴ و یا ۲۰۴۸ بیت ساخته میشوند اما کلیدهای کوچکتر از ۲۰۴۸ بیت، دیگر به اندازه کافی امن نیستند و استفاده نمیشوند. کلیدهای ۲۰۴۸ بیتی کدهای رمزگذاری منحصر بهفردی دارد که به دلیل تعداد بالای آن امکان ذکرش در اینجا نیست (۶۱۷ حرف).
با اینکه امکان ساخت کلیدهای بزرگتر از ۲۰۴۸ بیت هم وجود دارد، اما به دلیل بار محاسباتی زیادی که دارند به ندرت استفاده میشوند. برای درک بهتر این مطلب میتوان مثال زد که یک کامپیوتر معمولی برای رمزگشایی کلید ۲۰۴۸ بیتی باید ۱۴ میلیارد سال زمان صرف کند.
رمزنگاری متقارن
رمزنگاری متقارن (کلید از پیش اشتراک گذاشته شده یا pre-shared) از یک کلید واحد برای رمزنگاری و رمزگشایی استفاده میکند. فرستنده و گیرنده هر دو برای برقراری ارتباط به این کلید نیاز دارند.
سایز کلیدهای متقارن معمولا به صورت ۱۲۸ یا ۲۵۶ بیتی میباشد. هر چه سایز کلید بزرگتر باشد، قفلگشایی آن سختتر خواهدبود. به عنوان مثال یک کلید ۱۲۸ بیتی امکان ساخت 340,282,366,920,938,463,463,374,607,431,768,211,45 کد رمزنگاری مختلف را دارد.
همانطور که میتوانید حدس بزنید، یک حمله Brute force (که در آن فرد سعی به حدس زدن کد صحیح با تست تک تک احتمالات میکند) زمان بسیار زیادی خواهد برد.
امکان استفاده از کلید ۱۲۸ و ۲۵۶ بیتی بستگی به توانایی سرور و نرمافزار کاربر دارد. به طور کل SSL، شما را مجبور به استفاده نوع خاصی از این دو کلید نمیکند.
کدام یک از کلیدهای نامتقارن و متقارن برای گواهینامه SSL قویتر است؟
از آنجایی که سایز کلیدهای نامتقارن بزرگتر از کلیدهای متقارن است، دسترسی و قفلگشایی دادههایی که به صورت نامتقارن رمزنگاری شدهاند بسیار دشوارتر میباشد. ولی لزوما به این معنا نیست که کلیدهای نامتقارن بهتر هستند. بهجای مقایسه این دو کلید بر اساس سایز آنها خیلی بهتر است که از این دو معیار استفاده شود: بار محاسباتی و سهولت توزیع.
کلیدهای متقارن بسیار کوچکتر از کلیدهای نامتقارن بوده و به همین دلیل بار محاسباتی بسیار پایینتری دارند. با این حال، کلیدهای متقارن یک نقطه ضعف بزرگ دارند: چون یک کلید واحد برای رمزنگاری و رمزگشایی استفاده میشود، و از آنجایی که نیاز است هم فرستنده و هم گیرنده این کلید را در اختیار داشته باشند باعث بهوجود آمدن نقطه ضعف امنیتی میشود. اگر شما بتوانید کلید را به صورت فیزیکی بهدست گیرنده دادهها برسانید، مشکلی وجود نخواهد داشت، ولی معمولا اینطور نیست و مجبور هستید کلید را در بستر اینترنت برای گیرنده ارسال کنید. حال اگر شخصی در بین راه به این کلید دسترسی پیدا کند، امنیت اطلاعات رمزنگاری شده از بین خواهد رفت.
رمزنگاری نامتقارن این مشکل را ندارد. تا زمانی که private key محرمانه نگه داشته شود، هیچ کس قادر به رمزگشایی اطلاعات شما نخواهد بود. شما میتوانید public key را بدون نگرانی توزیع کنید. هر شخصی با کمک public key میتواند اطلاعات را رمزنگاری کند اما تنها فردی که private key را در اختیار دارد توانایی رمزگشایی و خواندن اطلاعات را خواهد داشت.
SSL چگونه از رمزنگاری متقارن و نامتقارن بهره میبرد؟
PKI مجموعهای از سختافزار، نرمافزار و روشهایی است که برای تولید، مدیریت، توزیع، کاربری و نگهداری از گواهینامههای دیجیتال مورد استفاده قرار میگیرد. PKI همچنین وسیلهای است که هویت واقعی افراد را با کمک شرکتهای صادرکننده گواهی(CA) به کلیدهای دیجیتال پیوند میزند.
PKI از سیستم رمزنگاری ترکیبی بهره میبرد و از هر دو نوع رمزنگاری که در قبل تشریح کردیم استفاده میکند. برای برقراری ارتباط از طریق گواهینامه SSL سه عنصر مورد نیاز است: یک کلید نامتقارن شامل public key و private key که روی سرور قرار دارد و Session key که توسط سرور و مرورگر برای برقراری ارتباط SSL ساخته میشود بهصورت متقارن میباشد. نحوه برقراری ارتباط در تصویر زیر شرح داده شده است:
۱- سرور کپیای از public key خود را برای مرورگر ارسال میکند. ۲- مرورگر با استفاده از public key که دریافت کرده است، Session key ساخته شده را کدگذاری کرده و برای سرور ارسال میکند. ۳- سرور با استفاده از private key بسته دریافتی را رمزگشایی کرده و به Session key دست پیدا میکند. ۴- حالا سرور و مرورگر هردو با استفاده از Session key بستههایی که بین یکدیگر رد و بدل میکنند را رمزنگاری و رمزگشایی میکنند. این کار یک تونل امن بین مرورگر و سرور ایجاد میکند زیرا تنها این دو از Session key اطلاع داشته و این کلید فقط برای همین اتصال استفاده میشود. هر زمانی که این اتصال قطع شود این مراحل باید مجددا طی شود.
الگوریتمهای رمزنگاری Public-Key
رمزنگاری Public-key (یا نامتقارن) از الگوریتمهای کدگذاری RSA و ECC برای تولید public و private key استفاده میکند. این الگوریتمها برمبنای عدم قطعیت برخی از مسائل ریاضی پایهگذاری شدهاند.
در رمزنگاری نامتقارن، ساخت کلیدها و رمزنگاری و رمزگشایی بستهها از نظر محاسباتی کار راحتی است. ولی بهدست آوردن private key (که همیشه محرمانه است) با استفاده از public key کار بسیار دشوار و تقریبا غیرممکنی می باشد.
RSA
RSA بر اساس فرض دشوار بودن فاکتور گرفتن از اعداد صحیح بزرگ بنا شده است. پیشبینی میشود رمزگشایی کامل متون RSA غیر عملی باشد زیرا الگوریتم بهینهای برای فاکتورگیری از اعداد صحیح بسیار بزرگ وجود ندارد. کلیدهای RSA از طریق حاصلضرب دو عدد اول بزرگ ساخته میشوند. ضرایب اعداد اول در این پروسه محرمانه نگه داشته شده و همان privatekey را تشکیل میدهند که از آن برای رمزگشایی پیغام استفاده میشود.
نام الگوریتم RSA از حروف اول اسامی سه ریاضیدان سازنده آن (Rivest–Shamir–Adleman) برگرفته شده است.
رمزنگاری منحنی بیضوی (ECC)
رمزنگاری منحنی بیضوی (ECC) نوع دیگری از رمزنگاری است که بر اساس ساختاری جبری از منحنیهای بیضوی بر روی میدانهای متناهی طراحی شدهاست. فرض بر این است که پیدا کردن لگاریتم گسسته از یک عنصر تصادفی منحنی بیضوی با توجه به یک نقطه پایه عمومی شناخته شده غیر عملی میباشد.
مزیت اصلی الگوریتم ECC به نسبت RSA ، کوچکتر بودن سایز کلید است که به داشتن سرعت بیشتر کمک میکند. ولی نقطه ضعف آن هم عدم پشتیبانی بسیاری از نرمافزارها و مرورگرها از گواهینامه SSL بر پایه ECC میباشد.
الگوریتمهای رمزنگاری Pre shared key
رمزنگاری این نوع کلیدها که در رمزنگاری متقارن استفاده میشوند، از الگوریتمهای مختلفی مانند Twofish, AES و Blowfish استفاده میشود که معروفترین آن AES است. (در گذشته از الگوریتم AES برای رمزنگاری کلمات عبور شبکههای WiFi نیز استفاده میشد).
نویسنده: علی فروغی
منبع :
digicert.com