مقدمه

امروزه اينترنت به يکي از ارکان ارتباطي بين افراد و سازمان ها تبديل شده است. بسياري از ما روزانه اطلاعاتي از اين طريق مي گيريم يا مي فرستيم. اين اطلاعات از نظر اهميت با هم تفاوت زيادي دارند. برخي از اين اطلاعات مانند اخبار يک سايت اهميت امنيتي چنداني ندارند، اما در طرف ديگر اسناد شخصي مثل ايميل ها، رمز حساب هاي بانکي و ... قرار دارند که دوست نداريم به دست ديگران بيافتند.

اطلاعاتي که در حالت عادي بين کاربران و دنياي اينترنت رد و بدل مي شوند، به گونه اي هستند که يک هکر يا خراب کار حرفه اي مي تواند آنها را ببيند و براي اهداف خود مورد سواستفاده قرار دهد. مثلا در يک خريد اينترنتي، زماني که قصد داريد براي پرداخت به حساب بانکي خود وارد شويد، سايت از شما رمزعبور مي خواهد.اطلاعات وارد شده شما از گره‌های گوناگونی می‌گذرد که در هر گره می‌توان اطلاعات شخصی شما را مشاهده و ذخیره کرد !در صورتی که سایت بانکی شما امنیت مربوطه را نداشته باشد حساب شما ممکن است تا دقایقی دیگر بدون حتی یک ریال موجودی باشد ! اما بانک‌های اینترنتی یا سرویس‌هایی نظیر آن چکار می‌کنند که کسی سوءاستفاده نکند؟؟!

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

همان طور که می دانیم، اطلاعاتی که به طور معمول در صفحات وب رد و بدل می شوند در بستر پروتکل HTTP که مخفف کلمه   Hyper Text Transfer Protocol انتقال می یابند، این پروتکل استانداردی تعریف شده است که با آن متن ساده یا plain text را منتقل می کنند، از طرفی این داده ها به دلیل رمزنگاری نشدن، برای افراد سوم شخص قابل خواندن هستند، مثلا اگر پسورد خود را در بستر این پروتکل به سروری منتقل کنید، ممکن است از طریق سرویس دهنده اینترنت، قابل روئیت باشد لذا http از لحاظ امنیتی برای کارهایی که به اطلاعات حساس از جمله حسابهای بانکی و رمزهای مشتریان مربوط می شود اصلا مناسب نیست، از این رو بانک ها و فروشگاههای اینترنتی و در کل سایتهایی که امنیت کاربران برایشان اهمیت زیادی دارد، از پروتکلی دیگر به نامHTTPSیا Hyper Text Transfer Protocol Secure بدین منظور استفاده می کنند.

HTTPSپروتکلی است که در بستر آن امکان رمزنگاری (encrypt) اطلاعات فراهم می شود، به لحاظ تخصصی درHTTPپورت 80 مورد استفاده قرار می گیرد، در حالی که درHTTPSاین پورت 443 است؛ از طرفی همانطور که گفتیم درHTTPداده ها به صورت متن ساده یا plain text هستند اما درHTTPSرمزنگاری داده ها به وسیله SSL انجام می شود.اگرچهHTTPSو رمزنگاری ssl امن و قابل اطمینان است، اما به دلیل وجود محدودیتهایی، معمولا سرعت انتقال اطلاعات از این طریق نسبت به شیوه معمول یعنیHTTPپائین تر است، لذا برای افزایش کارایی، بهتر است تنها در صفحاتی از این پروتکل استفاده کنید که اطلاعات حساسی در آنها رد و بدل می شود.

غالب مواردي كه در آنها از پروتكل Https:// استفاده مي شود عبارتند از:

  • بانك ها
  • فروشگاه هاي الكترونيكي
  • پورتال ها
  • Mail Server ها
  • و كليه سايت هايي که با اطلاعات مهم و محرمانه كار مي كنند.

 

چيست؟ SSL

SSLمخفف کلمهLayerSecure Socketبه معنی "لایه انتقال امن" ،راه حلی جهت برقراری ارتباطات ایمن میان یک سرویس دهنده و یک سرویس گیرنده است که توسط شرکت Netscape ارایه شده است.به بيان ديگر شرکتي که صلاحيت صدور و اعطاء گواهي هاي ديجيتال اس اس ال را دارد، براي هر کدام از دو طرفي که قرار است ارتباطات ميان شبکه‌اي امن داشته باشند، گواهي‌هاي مخصوص سرويس دهنده و سرويس گيرنده را صادر مي‌کند و با مکانيزم هاي احراز هويت خاص خود، هويت هر کدام از طرفين را براي طرف مقابل تأييد مي‌کند. البته علاوه بر اين تضمين مي کند، اگر اطلاعات حين انتقال به سرقت رفت، براي رباينده قابل درک و استفاده نباشد که اين کار را به کمک الگوريتم هاي رمزنگاري و کليدهاي رمزنگاري نامتقارن و متقارن انجام مي‌دهد. SSL پروتکلی است که پایین تر از لایه کاربرد (لایه ۴ از مدل TCP/IP) و بالاتر از لایه انتقال (لایه سوم از مدل TCP/IP) قرار می گیرد.مزیت استفاده از این پروتکل، بهره گیری از موارد امنیتی تعبیه شده آن برای امن کردن پروتکل های غیرامن لایه کاربردی نظیر HTTP، LDAP، IMAP و... می باشد که براساس آن الگوریتم های رمزنگاری بر روی داده های خام که قرار است از یک کانال ارتباطی غیرامن مثل اینترنت عبور کنند، اعمال می شود و محرمانه ماندن داده ها را در طول کانال انتقال تضمین می کند.

رمزنگاری چگونه است ؟

رمزنگاری (Cryptography) علم به رمز در آوردن (encryption) اطلاعات است. امروزه روش‌های بسیار پیچیده‌ای برای رمزنگاری استفاده می‌شود. در زیر به یکی از ساده‌ترین روش‌های رمزنگاری می‌پردازیم: می‌دانیم که هر حرف در الفبا جایگاهی دارد. مثلا حرف «الف قبل از ب» و «حرف م قبل از ن» قرار دارد. حال، اگر بخواهید یک جمله را به رمز در آورید. در ساده‌ترین شکل ممکن، هر حرف را با حرف بعدی خود در الفبا جایگزین می‌کنید.یعنی به جای «الف» حرف «ب»، به جای «ب» حرف «پ»، ... ، به جای «ه» حرف «ی» و به جای حرف «ی» حرف «الف» را می‌گذارید.
با این کار می‌توان جمله «بابا آب داد» را به جمله بی معنی «پبپب بپ ذبذ» تبدیل کرد که اگر فردی کلید رمز را نداشته باشد، به هیچ وجه از آن سر در نمی‌آورد.

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

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

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

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

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

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

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

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

1-- SSL Rocord Protocol که نوع قالب بندی داده های ارسالی را تعیین می کند.

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

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

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

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

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

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

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

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

در استاندارد SSL، از اغلب الگوریتم های عمومی رمزنگاری و مبادلات کلید (Key Exchcenge Algorithm) نظیرRSA, RC۴, RC۲,MD۵, KEA, DSA, DES وSkipjack ،و DES۳پشتیبانی می شود و بسته به این که نرم افزارهای سمت سرویس دهنده و سرویس دهنده نیز از موارد مذکور پشتیبانی نمایند، ارتباطات SSL می تواند براساس هر کدام از این الگوریتم ها صورت پذیرد. البته بسته به طول کلید مورد استفاده در الگوریتم و قدرت ذاتی الگوریتم می توان آن ها را در رده های مختلفی قرار داد که توصیه می شود با توجه به سناریوهای موردنظر، از الگوریتم های قوی تر نظیر DES۳با طول کلید ۱۶۸ بیت برای رمزنگاری داده ها و همچنین الگوریتم SHA-۱برای مکانیزم های تایید پیغام MD۵استفاده شود و یا این که اگر امنیت در این حد مورد نیاز نبود، می توان در مواردی خاص از الگوریتم رمزنگاری RC۴ با طول کلید ۴۰ بیت و الگوریتم تایید پیغام MD۵استفاده نمود.

 

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

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

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

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

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

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

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

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

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

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

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

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

 

ssl چگونه کار مي کند؟
sslدر واقع پروتکلي است که در آن ارتباطات بوسيله يک کليد، رمزگذاري(Encryption) مي شوند. زماني که قرار است يکسري اطلاعات را به صورت اس اس ال به يک سايت که سرور (server) اش گواهي نامه ssl را دارد ارسال شود، ابتدا بايد از يک کليد به عنوان قالبي براي به رمز در آوردن اطلاعات بين خدمات گيرنده (کاربر) و خدمات دهنده (سرور) استفاده شود. براي ساخت اين کليد نياز به چند مرحله هماهنگي به شرح زير است:
1. وقتي سروري بخواهد پروتکل اس اس ال را فعال کند. ابتدا يک کليد عمومي (Public Key) مي سازد.

2. سپس کليد عمومي را همراه با يک درخواست گواهي نامه اس اس ال به يکي از صادرکنندگان اين گواهي نامه ها مثل وريساين (Verisign) مي فرستد.

3. وريساين نيز ابتدا مشخصات و ميزان قابل اعتماد بودن و امنيت سرور را ارزيابي کرده و کليد عمومي را دوباره رمزگذاري مي کند و براي سرور مي فرستد تا در انتقال اطلاعات خود از آن استفاده کند. به کليد جديد کليد امنيتي (private key) مي گويند.

4. حال هر زمان که کاربر بخواهد از طريق پروتکل اس اس ال به اين سايت دست يابد، ابتدا کامپيوتر کاربر يک کليد عمومي براي سرور مي فرستد (هر کامپيوتري کليد مخصوص به خود را دارد).
5. سرور نيز اين کليد عمومي را با کليد امنيتي خود مخلوط کرده و از آن کليد جديدي مي سازد. سپس آن را به کامپيوتر کاربر مي فرستد.

6. از اين به بعد تمامي اطلاعاتي که بين کاربر و سرور جابجا مي شوند با اين کليد جديد رمز گذاري مي شوند.

چگونه مي توان مطمئن شد، يک سايت از اس اس ال استفاده مي کند؟

اين بخش بسيار ساده اما مهم و حياتي است. براي اين کار ابتدا وارد آن سايت شويد. زماني که صفحه به طور کامل بارگذاري (load) شد، به ابتداي آدرس آن نگاه کنيد. مي بايست به جاي http حروف https نوشته شده باشد (منظور از حرف s در پايان http عبارت secure است). البته در اين حالت يک علامت قفل هم در مرورگر ديده مي شود. جاي اين قفل در مرورگرهاي مختلف متفاوت است. در فايرفاکس و اينترنت اکسپلورر در پايين و سمت راست صفحه، در نوار وضعيت (status bar) و در مرورگرهاي سافاري، کروم و اپرا در سمت راست آدرس ديده مي شود.با دو بار کليک کردن بر روي این قفل کوچک، مي‌توانيد مشخصات کامل گواهي ssl سايت مورد نظر را ببينيد. مهم‌ترين نکته در خصوص اين اطلاعات تاريخ خريد و انقضاي اين گواهينامه است که بايد به آن توجه داشته باشيد.

منابع

کتاب شبکه کامپیوتری تنن بام