ssl

ssl



پروتکل امن HTTPS و کدگذاری SSL چیست؟

همان طور که می دانیم، اطلاعاتی که به طور معمول در صفحات وب رد و بدل می شوند در بستر پروتکل HTTP (مخفف Hyper Text Transfer Protocol) انتقال می یابند، این پروتکل استانداردی تعریف شده است که با آن متن ساده (Plain Text) را منتقل می کنند که این داده ها به دلیل خام بودن و رمزنگاری نشدن، برای افراد سوم شخص قابل خواندن هستند، به طور مثال اگر کلمه عبور خود را در بستر این پروتکل به سروری منتقل کنید، ممکن است از طریق سرویس دهنده اینترنت یا اشخاص دیگر قابل روئیت باشد (به فرض با استفاده از برنامه هایی تحت عنوان Sniffer)، لذا استفاده از پروتکل HTTP از لحاظ امنیتی برای انجام کارهایی که با اطلاعات حساس از جمله حسابهای بانکی و رمزهای مشتریان سر و کار دارند به هیچ وجه شیوه مناسبی نیست، از این رو بانک ها، فروشگاههای اینترنتی و در کل سایتهایی که امنیت کاربران برایشان اهمیت زیادی دارد، از پروتکل دیگری به نام HTTPS (مخفف Hyper Text Transfer Protocol Secure) جهت انتقال داده های رمزنگاری شده به شیوه SSL (مخفف Secure Sockets Layer) استفاده می کنند.

پروتکل HTTPS چیست و چه فرقی با HTTP دارد؟

HTTPS

پروتکلی است که در بستر آن امکان رمزنگاری (Encrypt) و انتقال اطلاعات رمزنگاری شده فراهم می شود، به لحاظ تخصصی در HTTP در حالت پیش فرض پورت 80 مورد استفاده قرار می گیرد، در حالی که در HTTPS این پورت 443 است، از طرفی همانطور که گفتیم در HTTP داده ها به صورت متن ساده یا Plain Text هستند اما در HTTPS رمزنگاری داده ها به وسیله SSL انجام می شود.

چگونه از استفاده کردن یک سایت از پروتکل امن اطمینان حاصل کنیم؟

چند فاکتور در تعیین معتبر بودن گواهی یک سایت نقش دارند، اول از همه کلید کوچکی است که در مرورگرهای مختلف با کمی اختلاف در مکان و شکل، نشان داده می شود، برخی از مرورگرها در نسخه های جدید خود پس از برقراری یک اتصال امن، نوار آدرس را به رنگ سبز نیز نشان می دهند، فاکتور دیگر وجود عبارت HTTPS در ابتدای آدرس آن سایت است، باید دقت کنید که برای برخی از سایت ها (بخصوص داخلی) ممکن است ابتدا نیاز به ثبت دستی گواهی آنها در بانک مرورگر باشد، متاسفانه اینگونه مشکلات گاهی به دلیل مسائل تحریم و گاهی به دلیل شخصی بودن ارائه کننده گواهی به وجود می آید.

چرا در برخی از سایت ها، مرورگر تقاضای تایید اعتبار می کند؟

بعضا ممکن است با صفحاتی روبرو شده باشید که مرورگر نسبت به منقضی شدن اعتبار گواهی ارتباط امن آن، به شما هشدار دهد، این اتفاق به چند دلیل ممکن است رخ دهد، یکی اینکه گواهی آن سایت واقعا به پایان رسیده و تمدید نشده باشد، دوم اینکه تاریخ سیستم شما از زمان حقیقی، عقب تر یا حتی جلوتر باشد، دلیل سوم هم می تواند به مسائل فنی صفحه و ترکیب اشتباه داده های عادی با داده های رمزنگاری شده مربوط باشد که این عامل به مسائل فنی سایت ارتباط دارد.

-

SSL به چه معناست؟

SSL

مخففی است از سرواژه های Secure Sockets Layer و در اصطلاح به استاندارد رمزنگاری و انتقال داده ها در وب اطلاق می شود، SSL را ابتدا شرکت Netscape به منظور نقل و انتقال امن و رمزی اطلاعات ایجاد نمود و اکنون تقریبا تمام مرورگرهای استاندارد از جمله فایر فاکس، اینترنت اکسپلورر، اپرا، گوگل کروم و سافاری از آن پشتیبانی می کنند، همچنین در این رابطه شرکتهایی وجود دارند که گواهی SSL ارائه می کنند.

شیوه رمزنگاری اطلاعات در SSL به چه صورت است؟

در یک بیان ساده، پس از ارائه درخواست از طرف مرورگر برای برقراری اتصال امن، SSL اطلاعات را به وسیله دو کلید رمزنگاری می کند، کلید عمومی برای ارسال کننده داده (مرورگر) و اشخاص سوم شخص قابل خواندن است اما کلید خصوصی تنها توسط دریافت کننده داده (سرور) قابل استفاده است، هنگامی که مرورگر درخواست مربوط به یک صفحه وب را به سرور ارسال می کند، سرور اطلاعات مربوط به اعتبارسنجی گواهی SSL خود را به همراه کلید عمومی به مرورگر می فرستد، مرورگر صحت اطلاعات را با بانکی که برایش تعریف شده یا با ارتباط با سرور خود می سنجد، در صورت مورد تایید بودن گواهی، پاسخ پذیرش را به سرور سایت ارسال می کند، در این هنگام سرور، نشست SSL Encrypte را شروع کرده و مرورگر با کلید عمومی که در اختیار دارد تحت استاندارد خاصی اطلاعات ارسالی را کدگذاری می کند و در گام آخر اطلاعات کد شده با کلید اختصاصی که در اختیار سرور است تبدیل به اطلاعات قابل خواندن می شود.

چگونه برای سایت خود گواهی SSL تهیه کنیم؟

برای داشتن یک ارتباط امن در بستر HTTPS برای سایت خود، نیاز به گواهی معتبر SSL دارید، معمولا این گواهی از طریق نمایندگی ها و سرویس دهندگان هاست قابل خریداری است که با یک جستجوی ساده در وب با لیست بلندبالایی از این شرکت ها روبرو خواهید شد، گواهی SSL در انواع مختلف ارائه می شود که از صرف رمزنگاری داده ها تا تائید کامل اعتبار سایت و شرکت متغیر هستند که این موضوع در مدت زمان و مدارک مورد نیاز جهت فعال سازی گواهی و هزینه نهایی آن موثر خواهد بود، اگر صرفا نیاز به رمزنگاری داده ها و حفظ امنیت اطلاعات دارید، معمولا روند تهیه گواهی SSL به صورت آنی، بدون نیاز به ارائه مدارکی خاص و با هزینه کمتر انجام می گیرد، اما برای سایر انواع گواهی ها بسته به اعتباری که به شما می بخشند، ممکن است نیاز به مدت زمانی خاص، ارائه مدارک معتبر هویتی یا حتی ثبت شرکت (شخص حقوقی) باشد، علاوه بر این موارد به لحاظ فنی به سروری با قابلیت پشتیانی از SSL و یک IP اختصاصی احتیاج خواهید داشت، البته نگران نباشید، اغلب شرکت های میزبان سایت چنین قابلیتی را فراهم می کنند، همچنن مشکل تهیه IP اختصاصی با فعال بودن امکانی تحت عنوان SNI (مخفف Server Name Indication) قابل حل است، در صورت فعال بودن SNI در سرور می توان با استفاده از یک IP به سایت های مختلفی امکان استفاده از گواهی SSL را داد، بنابراین جهت جلوگیری از هزینه های اضافی بهتر است قبل از خرید گواهی SSL، در این زمینه به دقت تحقیق، بررسی و با پشتیبانی سرور سایت خود مذاکره داشته باشید.

############

SSL یا Secure Socket Layer

راه حلی جهت برقراری ارتباطات ایمن میان یک سرویس دهنده و یک سرویس گیرنده است که توسط شرکت Netscape ارایه شده است. در واقع SSL پروتکلی است که پایین تر از لایه کاربرد (لایه ۴ از مدل TCP/IP) و بالاتر از لایه انتقال (لایه سوم از مدل TCP/IP) قرار می گیرد. مزیت استفاده از این پروتکل، بهره گیری از موارد امنیتی تعبیه شده آن برای امن کردن پروتکل های غیرامن لایه کاربردی نظیر HTTP، LDAP، IMAP و… می باشد که براساس آن الگوریتم های رمزنگاری بر روی داده های خام (plain text) که قرار است از یک کانال ارتباطی غیرامن مثل اینترنت عبور کنند، اعمال می شود و محرمانه ماندن داده ها را در طول کانال انتقال تضمین می کند.

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

ملزومات یک ارتباط مبتنی بر پروتکل امنیتی SSL عبارتند از :

برای داشتن ارتباطات امن مبتنی بر SSL عموما به دو نوع گواهی دیجیتال SSL یکی برای سرویس دهنده و دیگری برای سرویس گیرنده و یک مرکز صدور و اعطای گواهینامه دیجیتال یا CA نیاز می باشد. وظیفه CA این است که هویت طرفین ارتباط، نشانی ها، حساب های بانکی و تاریخ انقضای گواهینامه را بداند و براساس آن ها هویت ها را تعیین نماید.

مکانیزم های تشکیل دهنده SSL

۱- تایید هویت سرویس دهنده

با استفاده از این ویژگی در SSL، یک کاربر از صحت هویت یک سرویس دهنده مطمئن می شود. نرم افزارهای مبتنی بر SSL سمت سرویس گیرنده، مثلا یک مرورگر وب نظیر Internet Explorer از تکنیک های استاندارد رمزنگاری مبتنی بر کلید عمومی و مقایسه با کلیدهای عمومی یک سرویس دهنده، (مثلا یک برنامه سرویس دهنده وب نظیر IIS می تواند از هویت او مطلع شود و پس از اطمینان کامل، کاربر می تواند نسبت به وارد نمودن اطلاعات خود مانند شماره کارت های اعتباری و یا گذرواژه ها اقدام نماید.

۲- تایید هویت سرویس گیرنده

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

۳- ارتباطات رمز شده

کلیه اطلاعات مبادله شده میان سرویس دهنده و گیرنده می بایست توسط نرم افزارهای موجود در سمت سرویس دهنده و سرویس گیرنده رمزنگاری (Encrypt) شده و در طرف مقابل رمزگشایی (Decrypt) شوند تا حداکثر محرمانگی (Confidentiality) در این گونه سیستم ها لحاظ شود.

اجزای پروتکل SSL

پروتکل SSL دارای دو زیرپروتکل تحت عناوین زیر می باشد:

۱- SSL Rocord Protocol

که نوع قالب بندی داده های ارسالی را تعیین می کند.

۲- SSL Handshake Protocol

که براساس قالب تعیین شده در پروتکل قبلی، مقدمات ارسال داده ها میان سرویس دهنده ها و سرویس گیرنده های مبتنی بر SSL را تهیه می کند.

بخش بندی پروتکل SSL به دو زیرپروتکل دارای مزایای چندی است از جمله:

اول: در ابتدای کار و طی مراحل اولیه ارتباط (Handshake) هویت سرویس دهنده برای سرویس گیرنده مشخص می گردد.

دوم: در همان ابتدای شروع مبادلات، سرویس دهنده و گیرنده بر سر نوع الگوریتم رمزنگاری تبادلی توافق می کنند.

سوم: در صورت لزوم، هویت سرویس گیرنده نیز برای سرویس دهنده احراز می گردد.

چهارم: در صورت استفاده از تکنیک های رمزنگاری مبتنی بر کلید عمومی، می توانند کلیدهای اشتراکی مخفی را ایجاد نمایند.

پنجم: ارتباطات بر مبنای SSL رمزنگاری می شود.

الگوریتم های رمزنگاری پشتیبانی شده در SSL

در استاندارد SSL، از اغلب الگوریتم های عمومی رمزنگاری و مبادلات کلید (Key Exchcenge Algorithm) نظیر

RSA, RC۴, RC۲,MD۵, KEA, DSA, DES و RSA Key Exchauge، SHA-۱،Skipjack و DES۳

پشتیبانی می شود و بسته به این که نرم افزارهای سمت سرویس دهنده و سرویس دهنده نیز از موارد مذکور پشتیبانی نمایند، ارتباطات SSL می تواند براساس هر کدام از این الگوریتم ها صورت پذیرد. البته بسته به طول کلید مورد استفاده در الگوریتم و قدرت ذاتی الگوریتم می توان آن ها را در رده های مختلفی قرار داد که توصیه می شود با توجه به سناریوهای موردنظر، از الگوریتم های قوی تر نظیر DES۳ با طول کلید ۱۶۸ بیت برای رمزنگاری داده ها و همچنین الگوریتم SHA-۱ برای مکانیزم های تایید پیغام MD۵ استفاده شود و یا این که اگر امنیت در این حد مورد نیاز نبود، می توان در مواردی خاص از الگوریتم رمزنگاری RC۴ با طول کلید ۴۰ بیت و الگوریتم تایید پیغام MD۵ استفاده نمود.

نحوه عملکرد داخلی پروتکل SSL

همان طور که می دانید SSL می تواند از ترکیب رمزنگاری متقارن و نامتقارن استفاده کند. رمزنگاری کلید متقارن سریع تر از رمزنگاری کلید عمومی است و از طرف دیگر رمزنگاری کلید عمومی تکنیک های احراز هویت قوی تری را ارایه می کند. یک جلسه SSL (SSL Session) با یک تبادل پیغام ساده تحت عنوان SSL Handshake شروع می شود. این پیغام اولیه به سرویس دهنده این امکان را می دهد تا خودش را به سرویس دهنده دارای کلید عمومی معرفی نماید و سپس به سرویس گیرنده و سرویس دهنده این اجازه را می دهد که یک کلید متقارن را ایجاد نمایند که برای رمزنگاری ها و رمزگشایی سریع تر در جریان ادامه مبادلات مورد استفاده قرار می گیرد. گام هایی که قبل از برگزاری این جلسه انجام می شوند براساس الگوریتم RSA Key Exchange عبارتند از:

۱- سرویس گیرنده، نسخه SSL مورد استفاده خود، تنظیمات اولیه درباره نحوه رمزگذاری و یک داده تصادفی را برای شروع درخواست یک ارتباط امن مبتنی بر SSL به سمت سرویس دهنده ارسال می کند.

۲- سرویس دهنده نیز در پاسخ نسخه SSL مورد استفاده خود، تنظیمات رمزگذاری و داده تصادفی تولید شده توسط خود را به سرویس گیرنده می فرستد و همچنین سرویس دهنده گواهینامه خود را نیز برای سرویس گیرنده ارسال می کند و اگر سرویس گیرنده از سرویس دهنده، درخواستی داشت که نیازمند احراز هویت سرویس گیرنده بود، آن را نیز از سرویس گیرنده درخواست می کند.

۳- سپس سرویس گیرنده با استفاده از اطلاعاتی که از سرویس دهنده مجاز در خود دارد، داده ها را بررسی می کند و اگر سرویس دهنده مذکور تایید هویت شد، وارد مرحله بعدی می شود و در غیر این صورت با پیغام هشداری به کاربر، ادامه عملیات قطع می گردد.

۴- سرویس گیرنده یک مقدار به نام Secret Premaster را برای شروع جلسه ایجاد می کند و آن را با استفاده از کلید عمومی (که اطلاعات آن معمولا در سرویس دهنده موجود است) رمزنگاری می کند و این مقدار رمز شده را به سرویس دهنده ارسال می کند.

۵- اگر سرویس دهنده به گواهینامه سرویس گیرنده نیاز داشت می بایست در این گام برای سرویس دهنده ارسال شود و اگر سرویس گیرنده نتواند هویت خود را به سرویس دهنده اثبات کند، ارتباط در همین جا قطع می شود.

۶- به محض این که هویت سرویس گیرنده برای سرویس دهنده احراز شد، سرویس دهنده با استفاده از کلید اختصاصی خودش مقدار Premaster Secret را رمزگشایی می کند و سپس اقدام به تهیه مقداری به نام Master Secret می نماید.

۷- هم سرویس دهنده و هم سرویس گیرنده با استفاده از مقدار Master Secret کلید جلسه (Session Key) را تولید می کنند که در واقع کلید متقارن مورد استفاده در عمل رمزنگاری و رمزگشایی داده ها حین انتقال اطلاعات است و در این مرحله به نوعی جامعیت داده ها بررسی می شود.

۸- سرویس گیرنده پیغامی را به سرویس دهنده می فرستد تا به او اطلاع دهد، داده بعدی که توسط سرویس گیرنده ارسال می شود به وسیله کلید جلسه رمزنگاری خواهد شد و در ادامه، پیغام رمز شده نیز ارسال می شود تا سرویس دهنده از پایان یافتن Handshake سمت سرویس گیرنده مطلع شود.

۹- سرویس دهنده پیغامی را به سرویس گیرنده ارسال می کند تا او را از پایان Handshake سمت سرویس دهنده آگاه نماید و همچنین این که داده بعدی که ارسال خواهد شد توسط کلید جلسه رمز می شود.

۱۰- در این مرحله SSL Handshake تمام می شود و از این به بعد جلسه SSL شروع می شود و هر دو عضو سرویس دهنده و گیرنده شروع به رمزنگاری و رمزگشایی و ارسال داده ها می کنند.