وقتی صحبت از HTTPS و SSL میشه برخی کاربران هستند که این سوال رو میپرسند که HTTPS چیست؟ و چگونه کار میکند؟ در واقع سوالی که برای بیشتر کاربران پیش میاد اینه که در پروتکل امن HTTPS چه اتفاقی رخ میده که گفته میشه این پروتکل باعث افزایش امنیت در سایتها خواهد شد؟ برای اینکه با نحوه کارکرد HTTPS آشنا بشید باید بدونید که این موضوع در زمینه کریپتوگرافی یا رمزنگاری هست که یک مبحث پیچیده در زمینه امنیت به حساب میاد. و برای درک بهتر موضوع میشه با یک مثال ساده که در طول قرنها وجود داشته و بیشتر ما تجربهاش کردیم با مفهوم و نحوه کارکرد HTTPS آشنا شد.
در این مقاله قصد دارم به نحوه کارکرد پروتکل امن HTTPS به روش کبوتر نامهبر بپردازم. همچنین گذری خواهم داشت به معرفی یک فیلم بر اساس داستان زندگی یکی از افراد سرشناس که اگر این فرد مدت بیشتری میتونست زنده بمونه، مطمئنا دنیای تکنولوژی و کامپیوتر چندین سال جلوتر بود.
HTTPS چیست؟ | آشنایی با HTTPS به روش کبوتر نامهبر
کارکرد پروتکل امن HTTPS عینا مشابه اتفاقی است که برای کبوتر نامهبر رخ میده و اگه به صورت کامل روی این موضوع تمرکز کنید میتونید با کارکرد این پروتکل آشنا بشید. اما قبل از اینکه به موضوع کبوتر بپردازم باید بدونید که هر فعالیتی که در سطح اینترنت انجام میدین به صورت یک پیغام ارسالی و دریافتی انجام میگیره. وقتی شما در حال خوندن این مقاله هستید، یا قصد خرید کالا به صورت آنلاین دارید و یا اینکه میخواهید عکسی را با استفاده از برنامههای پیامرسان برای دوستانتون ارسال کنید، همه این کارها بر روی بستر سرور و از طریق ارسال و دریافت پیغام صورت میگیره.
ارسال پیام روی بستر HTTP
اگر سینا قصد ارسال پیغام برای پیمان را داشته باشه نامه را بعد از آماده کردن به پای کبوتر میبنده و بعد از دادن آب و دون کافی به کبوتر، اونو رهسپار پیمان میکنه. در نهایت کبوتر نامهبر بعد از طی مسافتها از سطح خشکی و دریا به حضور پیمان مشرف شده و قضیه ارسال پیغام به خوبی و خوشی تموم میشه و میره. پیمان هم اگر جوابی داشت به همین شکل برای سینا ارسال خواهد کرد.
اما به نظر شما اگه برای کبوتر اتفاقی بیفته و شخصی به نام که کلی اطلاعات در زمینه خواندن رمز داره این کبوتر را بگیره؟ مطمئنا آقای رایان بعد از گرفتن کبوتر میتونه نامه را بخونه و از موضوع مطلع بشه که حتی در سطح گستردهتر قادر هست دستکاری روی پیغام بده و کبوتر را راهی پیمان بکنه. این روش درست همون شیوه کار HTTP هست که هر کسی قادر به شنود و خواندن پیامها در بستر سرور میباشد.
مخفی کاری روی پیغامها
سینا و پیمان با شناختی که از هم دارند اصلا انتظار چنین جوابهای دستکاری شدهای را ندارند. پس اگه کمی زرنگ باشن میدونن که این پیغام دستکاری شده، بنابراین میان و با یک ترفندی سعی میکنند پیامهای ارسالیشون را از طریق ترفندهای مخفی کردن و رمزنگاری ارسال میکنند. به عنوان مثال اونها رمزنگاری کلید متقارن symmetric key cryptography را انتخاب میکنند که در این روش به جای نوشتن حروف اصلی یک پیام، تمام حروف متن را به سه حرف قبلی شیفت داده و ارسال میکنند. به عنوان مثال به جای نوشتن حرف D از حرف A استفاده میکنند.
یا به جای نوشتن حرف E از حرف B استفاده میکنند. پس در این صورت اگر سینا متن secret message را برای پیمان ارسال بکنه باید به شکل pbzobq jbppxdb اونو در متن پیغام نوشته و به پای کبوتر ببنده. این نوع رمزگذاری که برای متن پیام استفاده میشه با نام رمز سزار Caesar cipher شناخته شده است.
پس در این صورت وقتی آقای رایان مجددا موفق به گرفتن کبوتر در طی مسیر بشه پیغام بی معنی pbzobq jbppxdb را میبینه که تا زمانی که نحوه رمزنگاری و مخفی کردن پیامها را نتونه به دست بیاره نمیدونه که سینا و پیمان برای هم چه پیغامی را رد و بدل میکنند. پس تا زمانی که فرستنده و گیرنده با هم ارتباطی نداشته باشند و از نحوه کدگذاری که روی پیغامها انجام میدن با هم مچ نشده باشند، قادر به خوندن پیغام هم نخواهند بود. بنابراین باید سینا و پیمان از قبل با این روش رمزنگاری پیغام هماهنگ شده باشند.
ارسال پیغام به صورت حمل بسته
چون سینا و پیمان از قبل همدیگه رو ملاقات نکردن و با نحوه رمزنگاری همدیگه هماهنگ نیستند بنابراین به فکر چارهای میافتند و راهکاری که به ذهنشون میرسه به شرح زیر خواهد بود.
- سینا یک کبوتر نامهبر برای پیمان میفرسته که حامل هیچ نامه و پیغامی نیست.
- بعد از رسیدن کبوتر، پیمان به جای نامه یک جعبه با قفل باز به پای کبوتر میبنده و اونو راهی میکنه برای سینا در حالی که کلید این قفل فقط دست پیمان هست
- سینا کبوتر را به همراه جعبه با قفل باز دریافت کرده و پیغام خودش را بعد از نوشتن داخل جعبه قرار میده و اونو قفل میکنه
- پیمان کبوتر را به همراه نامه که داخل جعبه قفل شده هست دریافت میکنه و چون کلید این جعبه را فقط خودش داره، بنابراین جعبه را باز کرده و پیغام را مشاهده میکنه
در این مرحله هم آقای رایان ناکام مونده و چون کلید این جعبهها را نداره قادر به باز کردن جعبه و خوندن پیغامها نیست. حالا همین مراحل که از سینا شروع شده و با گرفتن نامه توسط پیمان بعد از طی 4 مرحله به اتمام میرسه به صورت برعکس هم انجام میگیره و هر دو طرف با کلید اختصاصی قفلی که دارند میتونن برای هم پیغام ارسال کنند.
به این روش ارسال پیغام به صورت رمزنگاری شده، رمز نگاری کلید نامتقارن asymmetric key cryptography نامیده میگویند. دلیل اینکه به این روش نامتقارن میگن اینه که اگر شما یک پیام را رمزگذاری کنید(جعبه را قفل کنید) دیگه نمیتونید اونو رمزگشایی کنید(قفل جعبه را باز کنید). که در این حالت به جعبه کلید عمومی public key و کلیدی که آن را باز میکند کلید خصوصی private key گفته میشود.
آیا جعبه قابل اطمینان هست؟
اگر دقت کنید وقتی که پیمان به جای نامه، یک جعبه با قفل باز را به پای کبوتر بست و راهی سینا کرد، سینا باید از کجا متوجه بشه که این جعبه دریافتی از سوی پیمان ارسال شده؟ در این صورت آقای رایان با این ایده میتونه جعبه خودش را به جای جعبه ارسالی پیمان جا زده و با سینا پیغام ارسال و دریافت بکنه که سینا هم از این موضوع کاملا بی اطلاع هست.
پس پیمان تصمیم میگیره که روی جعبه باز ارسال شده امضا خودش را درج بکنه که وقتی سینا جعبه را دریافت کرد اول امضای روی جعبه را بررسی بکنه، اگر امضا با امضای پیمان مطابقت داشت پیغام خودش را داخل جعبه قرار داده و بعد از قفل کردن برای پیمان ارسال بکنه.
اینجاست که باز یک راه تقلب پیش میاد. در این صورت سینا که اصلا با پیمان ملاقاتی نداشته از کجا باید بمونه که امضا درج شده روی جعبه جعل نشده و متعلق به پیمان هست؟ در این صورت برای فرار سینا و پیمان از دست آقای رایان اونها میتونند از یک شخص مورد اعتماد کمک بگیرند که امضای روی جعبهها را تایید بکنه.
اینجاست که آلن تورینگ که مورد اعتماد همه است و تونسته در جنگ جهانی دوم با شکستن نحوه رمزگذاری پیغامهایی که ارتش هیتلر داشتند این جنگ را در کوتاهترین زمانی که میتونسته جور دیگری رقم بزنه و جان میلیونها انسان را نجات بده وارد عمل خواهد شد. پیمان و سینا هم کاملا به آلن اعتماد دارند.
پس از این به بعد ارسال پیغام از طریق جعبه و کبوتر نامهبر به این صورت انجام میگیره که آلن تورینگ که مورد اعتماد همه است، امضا خودشو به همه میده و همه اعتماد دارند که اون فقط جعبهها را برای افراد احراز هویت شده یا مشروع امضا میکند.
پس وقتی پیمان برای سینا نامهای ارسال میکنه به حضور آلن رفته و ازش میخواد که با زدن امضا اونو احراز هویت کرده و این امکان را برای ارسال امضا به اون بده. بنابراین دیگه آقای رایان در این بین نمیتونه جعبه پیمان را که آلن اونو امضا کرده در دست گرفته و خودش رو برای سینا به جای پیمان قالب بکنه. سینا هم میدونه که جعبهها فقط زمانی تایید میشن که آلن اونها را امضا کرده باشه.
در اینجا آلن تورینگ درواقع همون مرجع صدور گواهینامههای امنیتی SSL هست. پس الان که در حال خوندن ای مقاله روی بستر امن HTTPS در پایگاه دانش میزبانفا هستید، باید بدونید که گواهینامه امنیتی ما در واقع میشه گفت توسط آلن امضا شده و مورد تایید هست. پس وقتی برای اولین بار وارد پایگاه دانش میشید، به جعبه امنیتی پایگاه دانش اعتماد میکنید. چرا که این جعبه امنیتی از طرف آلن که مورد اعتماد شماست امضا شده و به صورت کاملا قانونی هست.
حالا پیمان و سینا برای ارسال پیغام از یک سیستم امنیتی قوی و مورد اعتماد استفاده میکنند که میتونن پیغامهاشونو با خیال راحت برای همدیگه ارسال بکنند. اما اونا متوجه میشن کبوتری که پیغامها را همراه با جعبه رد و بدل میکنه، در مقایسه با کبوتر اولی که بدون جعبه پیغامها را رد و بدل میکرد بخاطر سنگینی جعبه خیلی کند عمل میکنه. پس تصمیم میگیرند که از روش جعبه(رمزگذاری نامتقارن) برای انتخاب کردن کلید مخفی و از کلید برای ارسال پیغامهاشون(رمز سزار) استفاده کنند. در این صورت نیازی به ارسال جعبه همراه کبوتر نیست.
امیدوارم که این مقاله هم مورد توجه و پسند شما قرار گرفته باشه و با استفاده از این مقاله تونسته باشید به کمک سینا، پیمان، آلن تورینگ، آقای رایان و کبوتر نامهبر با روش کارکرد HTTPS آشنا بشید. در صورتی که هر سوالی در رابطه با این مقاله و نحوه رمزگذاری HTTPS داشتید در بخش دیدگاهها اعلام کنید تا در کوتاهترین زمان ممکن پاسخگوی شما باشم. همچنین پیشنهاد میکنم حتما فیلم The Imitation که مربوط به زندگی آلن تورینگ هست را هم ببینید و لذت ببرید.