`


پروتکل TLS/SSL

پروتکل TLS/SSL چیست؟

TLS/SSL چیست؟

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


وقتی پیامی به سمت سرور گوگل ارسال میکنید، این پیام از بین تعدادی روتر و سوییچ و مودم میگذرد.

اگر فردی دسترسی و ابزار داشته باشد میتواند این پیام ها را شنود کند و اطلاعات شما را بدست آورد. این اطلاعات میتواند شامل کارت بانکی، پسورد یا اطلاعات ورود به جیمیل و ... باشد. 

سناریو بعدی که ممکن است رخ دهد این است که یک نفر اطلاعات یک vpn را به شما بدهد و از شما بخواهد برای وصل شدن به اینترنت از آن استفاده کنید. اگر فرد یک نرم افزار شنود بر روی سرور vpn خود قرار داده باشد میتواند تمام اطلاعات شما را لاگ کند.

پس نتیجه میگیرم بستر Http باید یک بستر امن باشد. راه حل این مشکل Https است. Https ارتباط ما را به سرور  secure میکند و پیام هایی که ارسال میکنیم را رمز میکند و کمک میکند تا فردی که در وسط قرار میگیرد نتواند به راحتی به اطلاعات ما دسترسی پیدا کند.

TLSیا نسل قبل تر از آن SSL، پروتکلی است که وقتی با Http ترکیبش کنیم به Https میرسیم. 


SSL چگونه کار میکند؟


مفهوم key pair

key pair یک راه حل برای داشتن یک ارتباط امن روی یک بستر ارتباطی است که بخودی خود امن نیست. مثلا روی یک ارتباط وایرلس که وقتی شما یک پیامی را امیکنید همه میتوانند آن پیام را بشنوند . یا به طور مثال اینترنت که وقتی یک پیامی ارسال میشود هر روتر و سوییچی که این وسط پیام از آن رد شود پیام برای آن قابل شنود است.

در key pair ما یک کلید public و یک کلید private داریم. اگر پیامی را با کلید public رمز کنیم آن پیام دیگر قابل باز شدن با آن کلید public نیست و فقط کسی که کلید private را دارد میتواند آن پیام را باز کند


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

Https هم به همین روش کار میکند. قبل از اینکه یک ارتباط بین مرورگر شما با یک سرور مثل گوگل برقرار شود فرآیندی به نام handshake انجام میشود که برای ما قابل مشاهده نیست.


 در handshake در واقع کلیدها بین سرور و مرورگر رد و بدل میشود.


این رد و بدل کردن کلیدها بسیار پیچیده است و مطابق پروتکل و ورژن TLS ای که استفاده میشود ممکن است چندین مراحل طی شود تا  در نهایت هر دو طرف به یک کلید مشترک برای ارتباط برسند و  یک بستر امن برای برقراری ارتباط به ما دهند.


مفهوم certificate

اما یک مشکل وجود دارد. از کجا بدانیم وقتی یک کلید از سمت سرور گوگل ارسال شده است واقعا خود گوگل آن را برای ما ارسال کرده است؟ 


مثلا فرض کنید شما یک vpn گرفتید و کسی که آن vpn را به شما داده است.آن فرد کلیدی که گوگل برای شما ارسال میکند را میگیرد و به جای اینکه کلید گوگل را برای شما ارسال کند کلید خودش را برای شما میفرستد و شما یک ارتباط امن با کسی که این وسط قرار دارد ( به اصطلاح به این فرد man in the middle گفته میشود) برقرا میکنید . این فرد پیام های شما را برای گوگل میفرستد و ارتباط را برقرا میکند اما خودش میتواند پیام ها را شنود کند.


راه حل این مشکل استفاده از certificate است. مکان هایی هستند به نام Certificate Authority که از سایت های مختلف کلیدهای public و اطلاعاتی در مورد سایت مثل دامنه و سازمان و ... را دریافت میکنند و یک certificate تولید میکنند. در واقع امضای خودشان را در انتهای این اطلاعات میزنند و میگویند که google.com این کلید public را استفاده میکند و این هم امضای من که تایید میکند این کلید public استفاده میشود.


در نتیجه وقتی که گوگل میخواهد با شما ارتباط برقرا کند کنار کلید publicاش certificate را هم برای شما میفرستد و از آنجایی که Certificate Authority ها برای مرورگرهای ما شناخته شده هستند مرورگر میتواند تایید کنه که این certificate معتبر است یا نه و اگر معتبر بود به ارتباط ادامه دهد.


پس اگر کسی مانند هکر در مسیر پیام قرار بگیرد چون او نمیتواند certificate ای که توسط ca امضا شده  باشد را خودش بسازد مرورگر ما ارتباط را با او قطع میکند.


منابع

  • https://www.youtube.com/watch?v=L7AePu-ESeQ



پروتکل TLS/SSL
ساناز میرباقری 10 فوریهٔ 2024
Share this post
برچسب‌ها

 

`


Docker Swarm در مقابل Kubernetes
ویژگی های داکر سوارم و Kubernetes