چطور می توان به پیام رسان ها اعتماد کرد و مطمئن شد که آن ها و یا دیگران پیام های ما را نمی خوانند؟ امنیت من در اینترنت چگونه حفظ می شود؟ فرق HTTPS با HTTP در چیست؟ چگونه با روش هک «مردی در میان یا Men in middle» مقابله می شود؟
امروزه با گسترش اینترنت و فراگیر شدن شبکه های مجازی و ارز های دیجیتال حتما چیز هایی از این قبیل را دیدهاید:
رمزنگاری سرتاسری، رمزنگاری دو سویه یا دو طرفه، E2E، End to End، SSL، public and private key همهی این ها به یک روش رمزنگاری به نام رمز نگاری دو سویه مرتبط هستند. در این مطلب در مورد چگونگی کارکرد این روش رمزنگاری و موارد استفاده از آن خواهیم پرداخت. با ما همراه باشید.
رمزنگاری دو سویه با هدف حفاظت از اطلاعات و در عین حال اشتراک آن بین اشخاص ساخته شده، این روش تضمین می کند دادهای که توسط شما یا سرور دریافت می شود توسط هیچ شخص دیگری خوانده و یا ویرایش نشده است.
برای این کار به یک کلید خصوصی یا private نیاز است این کلید را می توان به راحتی با استفاده از random به وجود آورد. وظیفهی دریافت کننده حفاظت از این کلید (تا سرحد مرگ و شکنجه!) است. با استفاده از کلید private و الگوریتم های یک طرفه مورد نیاز می توان چندین کلید عمومی یا public ساخت و آن ها را به فرستنده های پیام داد. در این روش رمز نگاری کلید ها به نحوی هستند که از هیچ کلید عمومی نمی توان به کلید خصوصی رسید. فرستنده هایی که کلید public دارند تنها می توانند پیام های خود را رمزنگاری کنند ولی نمی توانند رمزگشایی کنند، یعنی رمزی که ساختند و یا رمز های دیگر فرستنده ها را نمی توانند رمزگشایی کنند و برای رمزگشایی به کلید خصوصی یا private نیاز دارند.
تا اینجا شاید برای بار اول درک مطلب کمی سخت باشد یا شاید کنجکاوید تا بدانید روش های یک طرفه چگونه کار میکنند. بگذارید با ارائه یک مثال موضوع را بیشتر باز کنم. برای هر عمل رمزنگاری داده مورد نظر باید به گونهای و طبق فرمول و الگوریتمی به شکلی دگرگون شود که در روند رمزگشایی بتوان به داده اصلی رسید. داده ها اصولا اعداد هستند مثالا هر حروف در رایانه ها با یک کد (عدد) مخصوص مشخص میشود. حالا فرض کنید عدد 10 را می خواهیم رمز گذاری کنیم. برای آن که یک روش یک طرفه بسازیم نیاز به یک کلید خصوصی داریم برای مثال عدد 12 حال که کلید خصوصی داریم با ضرب کلید خصوصی در اعداد مختلف کلید حصوصی را بوجود میاوریم مثل 12*60 = 720 البته این یک مثال است و برای درک بهتر ساده شده ولی به سختی می توان از کلید عمومی به کلید خصوصی رسید، این سختی برای این مثال کافی است. حالا برای تبدیل عدد 10 به رمز کافیست آن را با کلید عمومی جمع کنید 720+10 = 730 در رمزنگاری اصلی رسیدن به داده اصلی مثل 10 با کلید عمومی ممکن نیست. می توانیم کلید عمومی دیگری هم بسازیم مثلا 32*12 = 384 و با آن هم داده ۱۰ را رمز کنیم 384+10 = 394 ولی نکته این است که با کلید عمومی جدید یعنی 384 نمی توان رمز 720 را خواند و به 10 رسید. حال برای رمزگشایی 730 و 394 از کلید خصوصی یعنی 12 استفاده می کنیم به این شکل که باقی مانده تقسیم رمز ها بر کلید اصلی 10 را محاسبه می کنیم. در برخی زبان های برنامه نویسی برای این کار از علامت ٪ استفاده می کنند: 12%730 = 10 و 12%394 = 10. روش های یک طرفه در رمز نگاری مانند همین روشی که در مثال گفتم عمل می کنند.
پروتکل ssl با هدف امنیت در شبکه و با استفاده از همین روش رمزنگاری در نرمافزار های بسیاری استفاده میشود. پروتکل Https یکی از معروف ترین آن ها است. همچنین ssh که جایگزین Telnet شده نیز از همین روش استفاده می کند. در پروتکل Telnet تمامی محتوی ارسالی و در یافتی برای تمام اشخاصی که در شبکه بودند قابل مشاده و ویرایش بود. امروزه پیام رسان ها سعی میکنند با استفاده از این شیوه رمزنگاری امنیت و حریم خصوصی ما را در اینترنت حفظ کنند.