mehraboOon
10-02-2011, 05:41 PM
SSL چیست؟
امروزه اینترنت به یکی از ارکان ارتباطی بین افراد و سازمان ها تبدیل شده است. بسیاری از ما روزانه اطلاعاتی از این طریق می گیریم یا می فرستیم. این اطلاعات از نظر اهمیت با هم تفاوت زیادی دارند. ابته برخی از این اطلاعات مانند اخبار یک سایت ، اهمیت امنیتی چندانی ندارد ، اما در طرف دیگر اطلاعات مربوط به اسناد شخصی مثل ایمیل ها ، رمز حساب های بانکی و … وجود دارند که قطعا مایل نیستیم در اختیار دیگران قرار بگیرد.
http://www.gooyait.com/uploads/SSL.png
در حقیقت اطلاعاتی که در حالت عادی بین کاربران و دنیای اینترنت رد و بدل می شوند ، به گونه ای است که یک هکر یا خرابکار حرفه ای می تواند آن ها را ببیند و برای اهداف خود از آن ها سواستفاده کند. برای مثال هنگامی که قصد دارید برای خرید الکترونیکی پول محصول را بپردازید اگر سایت سایت بانک شما از شما رمز بخواهد و فاقد پرتکول امنیتی باشد ممکن است اطلاعات شما در طول راه ، بدون این که متوجه شوید دزدیده شود و اگر بدشانس باشید چند روز بعد که به حسابتان سر می زنید ، آن را خالی می یابید.
اما احتمال این اتفاق بسیار کم است ، زیرا اکثر حساب های بانکی یا سایت هایی که اطلاعات خصوصی کاربران را نگه داری می کنند معمولا از روش هایی برای رمز گذاری یا Encrypt اطلاعات استفاده می کنند. در این حالت اگر این اطلاعات در طول راه دزدیده شوند دیگر جای نگرانی نیست. زیرا شکستن رمز آن ها تقریبا غیر ممکن است.
اطلاعات معمولا کی و کجا دزدیده می شوند؟
زمانی که آدرس یک وب سایت را در مرورگر وارد می کنیم ، اطلاعات بین کامپیوتر ما (Client) و کامپیوتری که سایت روی آن قرار دارد (Server) در حال رد و بدل هستند. پس اگر بتوانیم ارتباط بین Client و Server را امن کنیم ، اطلاعات دزدیده نخواهند شد.
اطلاعات در اینترنت چگونه جابه جا می شوند؟
اطلاعات در اینترنت (درست مثل ارسال یک نامه) به صورت فایل های متنی جا به جا می شوند. به عبارتی همان طور که یک نامه از زمانی که در صندوق پست گذاشته می شود تا زمانی که به صاحبش برسد در دست افراد مختلفی قرار می گیرد تا به مقصد برسد. اگر نامه به صورت معمولی فرستاده شود هر یک از سیستم های در طول راه می توانند نامه شما را بخوانند. پس برای جلوگیری از سرقت احتمالی باید نامه را رمز گذاری کنیم. با یک مثال مسئله را روشن می کنیم. فرض کنید می خواهید برای دوست خود نامه ای بفرستید ولی به دلایلی دوست ندارید محتوای نامه را افراد خانواده ببینند! در این رابطه یکی از این کار ها این است که نامه را به صورت رمزی بنویسید که فقط دوستتان از آن سر در بیاورد! در دنیای اینترنت هم برای این که هکر ها نتوانند از ماهیت و جزئیات نامه باخبر شوند و از آن سر در بیاورند ، آن ها را رمز گذاری می کنند. یکی از روش های متداول رمز گذاری اینترنتی استفاده از پرتکول SSL (Secure Socket Layer) است.
SSL چیست؟
از این پرتکول برای امن کردن پرتکول های غیرامن مانند HTTP ، LDAP ، IMAP و … استفاده می شود. در حقیقت SSL بر این اساس یکسری الگوریتم های رمزنگاری بر روی داده های خام قرار می دهد که قرار است یک کانال ارتباطی غیرامن بگذرد تا محرمانه ماندن داده ها تضمین شود. به بیان دیگر شرکتی که صلاحیت صدور و اعطاء گوهینامه دیجیتال SSL را دارد برای هر کدام از دو طرفی که قرار است ارتباطات بین شبکه ای را امن کنند. این مدارک باید احراز هویت کاربران را تایید کنند و از هر طرف گواهینامه تایید شود. اگر اطلاعات حین انتقال به سرقت رفت برای رباینده قابل درک نیست که این کار به صورت الگوریتم های رمزنگاری و کلیدهای رمزنگاری نامتقاران و متقاران انجام می دهد.
ملزومات ارتباط بر پایه SSL
برای داشتن ارتباطات امن مبتنی بر SSL ، عموما به دو نوع گواهی دیجیتال SSL ، یکی برای سرویس دهنده و دیگری برای سرویس گیرنده و هم چنین یک مرکز صدور و اعطای گواهینامه دیجیتال (Certificate authorities) که به اختصار CA نامیده می شود، نیاز است. وظیفه CA این است که هویت طرفین ارتباط نشانی ها، حساب های بانکی و تاریخ انقضای گواهینامه را بداند و بر اساس آن ها هویت ها را تعیین نماید.
رمزنگاری
رمزنگاری (Cryptography) ، علم به رمز در آوردن (Encryption) اطلاعات است. البته بدیهی است که توضیح روش های پیچیده ای که امروزه برای رمزنگاری استفاده می شود از حوصله و این مطلب خارج است. برای مثال زدن در ادامه به یکی از ساده ترین روش های رمزنگاری می پردازیم:
می دانیم هر حرف الفبا جایگاهی دارد مثلا حرف «B قبل از A» و حرف «M بعد از N» قرار دارد. حالا برای مثال یک جمله مثل My Site را می خواهیم رمز نگاری کنیم. حالا هر حرف را به حرف قبلی برمیگردانیم. جمله ما می شود: Nx Rhsd به نظر شما معنی دارد؟ این جمله طوری کد گذاری شده که شما می دانید! اما هکر های حرفه ای باهوش تر از این حرف ها هستند! به راحتی می توانند الگوریتم ساده ی شما را شناسایی و هک کنند!
SSL چگونه کار می کند؟
SSL در واقع پروتکلی است که در آن ارتباطات به وسیله یک کلید ، رمز گذاری (Encryption) می شوند. لازم به ذکر است زمانی که قرار است یکسری اطلاعات به صورت SSL به یک سایت که سرور آن گواهینامه SSL را دارد (ابتدای آدرس سایت https باشد) ازسال شود ، ابتدا باید از یک کلید به عنوان قالبی برای به رمز درآوردن اطلاعات بین خدمات گیرنده (Client) و خدمات دهنده (Server) استفاده شود. برای ساخت این کلید نیاز به چند مرحله هماهنگی به شرح زیر است.
وقتی سرور بخواهد پروتکل SSL را فعال کند ابتدا یک کلید عمومی (Public Key) می سازد.
سپس کلید عمومی را همراه با یک درخواست گواهینامه SSL به یکی از صادرکنندگان این گواهینامه مثل وریساین (Verisign) ارسال می کند.
وریساین نیز ابتدا مشخصات و میزان قابل اعتماد بودن و امنیت سرور را ارزیابی کرده و کلید عمومی را دوباره رمزگذاری می کند و برای سرور می فرستد تا در انتقال اطلاعات خود از آن استفاده کند. به این کلید جدید کلید خصوصی یا امنیتی (Private Key) می گویند.
حال هر زمان که کاربر بخواهد از طریق پرتکول SSL به این سایت دست یابد ، ابتدا کامپیوتر کاربر یک کلید عمومی برای سرور می فرستد (هر کامپیوتر کلید مخصوص به خود را دارد).
سرور نیز این کلید عمومی را با کلید امنیتی خود مخلوط کرده و از آن کلید جدیدی می سازد سپس آن را به کامپیوتر کاربر می فرستد.
از این به بعد تمامی اطلاعاتی که رد و بدل می شوند با این کلید جدید رمزنگاری می شوند.
البته واضح است که نیازی به دانستن تمام این جزییات نیست و ما جهت رفع کنجکاوی آن ها را توضیح دادیم. فقط این را بدانید که با استفاده از این سرویس اطلاعات کاملا رمزنگاری شده و بازکردن آن ها تقریبا غیرممکن است. ضمن این که تنها وظیفه شما این است که از این امکانات استفاده کنید و پرتکول SSL را در مرورگر برای ایمیل و دیگر حساب های خود که سرور به شما این امکان را می دهد فعال کنید. اگر شما هم مدیر یک سرور هستید سعی کنید گواهینامه پرتکول SSL را از صادرکنندگان آن مثل Verisign و Thawte خریداری و در اختیار کاربران و خدمت گیرندگان خود بگذارید.
چه طور می توانیم مطمئن شویم یک سایت از SSL استفاده می کند؟
این بخش خیلی ساده در عین حال حیاتی و مهم است. برای این کار به وب سایت موردنظر وارد شوید سپس زمانی که سایت کاملا بارگذاری شد به ابتدای آدرس آن نگاه کنید اکنون می بایست به جای http عبارت https را ببینید (منظور از حرف s در پایان http، عبارت Secure است).
امروزه اینترنت به یکی از ارکان ارتباطی بین افراد و سازمان ها تبدیل شده است. بسیاری از ما روزانه اطلاعاتی از این طریق می گیریم یا می فرستیم. این اطلاعات از نظر اهمیت با هم تفاوت زیادی دارند. ابته برخی از این اطلاعات مانند اخبار یک سایت ، اهمیت امنیتی چندانی ندارد ، اما در طرف دیگر اطلاعات مربوط به اسناد شخصی مثل ایمیل ها ، رمز حساب های بانکی و … وجود دارند که قطعا مایل نیستیم در اختیار دیگران قرار بگیرد.
http://www.gooyait.com/uploads/SSL.png
در حقیقت اطلاعاتی که در حالت عادی بین کاربران و دنیای اینترنت رد و بدل می شوند ، به گونه ای است که یک هکر یا خرابکار حرفه ای می تواند آن ها را ببیند و برای اهداف خود از آن ها سواستفاده کند. برای مثال هنگامی که قصد دارید برای خرید الکترونیکی پول محصول را بپردازید اگر سایت سایت بانک شما از شما رمز بخواهد و فاقد پرتکول امنیتی باشد ممکن است اطلاعات شما در طول راه ، بدون این که متوجه شوید دزدیده شود و اگر بدشانس باشید چند روز بعد که به حسابتان سر می زنید ، آن را خالی می یابید.
اما احتمال این اتفاق بسیار کم است ، زیرا اکثر حساب های بانکی یا سایت هایی که اطلاعات خصوصی کاربران را نگه داری می کنند معمولا از روش هایی برای رمز گذاری یا Encrypt اطلاعات استفاده می کنند. در این حالت اگر این اطلاعات در طول راه دزدیده شوند دیگر جای نگرانی نیست. زیرا شکستن رمز آن ها تقریبا غیر ممکن است.
اطلاعات معمولا کی و کجا دزدیده می شوند؟
زمانی که آدرس یک وب سایت را در مرورگر وارد می کنیم ، اطلاعات بین کامپیوتر ما (Client) و کامپیوتری که سایت روی آن قرار دارد (Server) در حال رد و بدل هستند. پس اگر بتوانیم ارتباط بین Client و Server را امن کنیم ، اطلاعات دزدیده نخواهند شد.
اطلاعات در اینترنت چگونه جابه جا می شوند؟
اطلاعات در اینترنت (درست مثل ارسال یک نامه) به صورت فایل های متنی جا به جا می شوند. به عبارتی همان طور که یک نامه از زمانی که در صندوق پست گذاشته می شود تا زمانی که به صاحبش برسد در دست افراد مختلفی قرار می گیرد تا به مقصد برسد. اگر نامه به صورت معمولی فرستاده شود هر یک از سیستم های در طول راه می توانند نامه شما را بخوانند. پس برای جلوگیری از سرقت احتمالی باید نامه را رمز گذاری کنیم. با یک مثال مسئله را روشن می کنیم. فرض کنید می خواهید برای دوست خود نامه ای بفرستید ولی به دلایلی دوست ندارید محتوای نامه را افراد خانواده ببینند! در این رابطه یکی از این کار ها این است که نامه را به صورت رمزی بنویسید که فقط دوستتان از آن سر در بیاورد! در دنیای اینترنت هم برای این که هکر ها نتوانند از ماهیت و جزئیات نامه باخبر شوند و از آن سر در بیاورند ، آن ها را رمز گذاری می کنند. یکی از روش های متداول رمز گذاری اینترنتی استفاده از پرتکول SSL (Secure Socket Layer) است.
SSL چیست؟
از این پرتکول برای امن کردن پرتکول های غیرامن مانند HTTP ، LDAP ، IMAP و … استفاده می شود. در حقیقت SSL بر این اساس یکسری الگوریتم های رمزنگاری بر روی داده های خام قرار می دهد که قرار است یک کانال ارتباطی غیرامن بگذرد تا محرمانه ماندن داده ها تضمین شود. به بیان دیگر شرکتی که صلاحیت صدور و اعطاء گوهینامه دیجیتال SSL را دارد برای هر کدام از دو طرفی که قرار است ارتباطات بین شبکه ای را امن کنند. این مدارک باید احراز هویت کاربران را تایید کنند و از هر طرف گواهینامه تایید شود. اگر اطلاعات حین انتقال به سرقت رفت برای رباینده قابل درک نیست که این کار به صورت الگوریتم های رمزنگاری و کلیدهای رمزنگاری نامتقاران و متقاران انجام می دهد.
ملزومات ارتباط بر پایه SSL
برای داشتن ارتباطات امن مبتنی بر SSL ، عموما به دو نوع گواهی دیجیتال SSL ، یکی برای سرویس دهنده و دیگری برای سرویس گیرنده و هم چنین یک مرکز صدور و اعطای گواهینامه دیجیتال (Certificate authorities) که به اختصار CA نامیده می شود، نیاز است. وظیفه CA این است که هویت طرفین ارتباط نشانی ها، حساب های بانکی و تاریخ انقضای گواهینامه را بداند و بر اساس آن ها هویت ها را تعیین نماید.
رمزنگاری
رمزنگاری (Cryptography) ، علم به رمز در آوردن (Encryption) اطلاعات است. البته بدیهی است که توضیح روش های پیچیده ای که امروزه برای رمزنگاری استفاده می شود از حوصله و این مطلب خارج است. برای مثال زدن در ادامه به یکی از ساده ترین روش های رمزنگاری می پردازیم:
می دانیم هر حرف الفبا جایگاهی دارد مثلا حرف «B قبل از A» و حرف «M بعد از N» قرار دارد. حالا برای مثال یک جمله مثل My Site را می خواهیم رمز نگاری کنیم. حالا هر حرف را به حرف قبلی برمیگردانیم. جمله ما می شود: Nx Rhsd به نظر شما معنی دارد؟ این جمله طوری کد گذاری شده که شما می دانید! اما هکر های حرفه ای باهوش تر از این حرف ها هستند! به راحتی می توانند الگوریتم ساده ی شما را شناسایی و هک کنند!
SSL چگونه کار می کند؟
SSL در واقع پروتکلی است که در آن ارتباطات به وسیله یک کلید ، رمز گذاری (Encryption) می شوند. لازم به ذکر است زمانی که قرار است یکسری اطلاعات به صورت SSL به یک سایت که سرور آن گواهینامه SSL را دارد (ابتدای آدرس سایت https باشد) ازسال شود ، ابتدا باید از یک کلید به عنوان قالبی برای به رمز درآوردن اطلاعات بین خدمات گیرنده (Client) و خدمات دهنده (Server) استفاده شود. برای ساخت این کلید نیاز به چند مرحله هماهنگی به شرح زیر است.
وقتی سرور بخواهد پروتکل SSL را فعال کند ابتدا یک کلید عمومی (Public Key) می سازد.
سپس کلید عمومی را همراه با یک درخواست گواهینامه SSL به یکی از صادرکنندگان این گواهینامه مثل وریساین (Verisign) ارسال می کند.
وریساین نیز ابتدا مشخصات و میزان قابل اعتماد بودن و امنیت سرور را ارزیابی کرده و کلید عمومی را دوباره رمزگذاری می کند و برای سرور می فرستد تا در انتقال اطلاعات خود از آن استفاده کند. به این کلید جدید کلید خصوصی یا امنیتی (Private Key) می گویند.
حال هر زمان که کاربر بخواهد از طریق پرتکول SSL به این سایت دست یابد ، ابتدا کامپیوتر کاربر یک کلید عمومی برای سرور می فرستد (هر کامپیوتر کلید مخصوص به خود را دارد).
سرور نیز این کلید عمومی را با کلید امنیتی خود مخلوط کرده و از آن کلید جدیدی می سازد سپس آن را به کامپیوتر کاربر می فرستد.
از این به بعد تمامی اطلاعاتی که رد و بدل می شوند با این کلید جدید رمزنگاری می شوند.
البته واضح است که نیازی به دانستن تمام این جزییات نیست و ما جهت رفع کنجکاوی آن ها را توضیح دادیم. فقط این را بدانید که با استفاده از این سرویس اطلاعات کاملا رمزنگاری شده و بازکردن آن ها تقریبا غیرممکن است. ضمن این که تنها وظیفه شما این است که از این امکانات استفاده کنید و پرتکول SSL را در مرورگر برای ایمیل و دیگر حساب های خود که سرور به شما این امکان را می دهد فعال کنید. اگر شما هم مدیر یک سرور هستید سعی کنید گواهینامه پرتکول SSL را از صادرکنندگان آن مثل Verisign و Thawte خریداری و در اختیار کاربران و خدمت گیرندگان خود بگذارید.
چه طور می توانیم مطمئن شویم یک سایت از SSL استفاده می کند؟
این بخش خیلی ساده در عین حال حیاتی و مهم است. برای این کار به وب سایت موردنظر وارد شوید سپس زمانی که سایت کاملا بارگذاری شد به ابتدای آدرس آن نگاه کنید اکنون می بایست به جای http عبارت https را ببینید (منظور از حرف s در پایان http، عبارت Secure است).