به احتمال زیاد در اینترنت با اصطلاح رمزنگاری برخورد داشته اید اما آیا با این مفهوم آشنا هستید؟ میتوان گفت که رمزنگاری مهم ترین فناوری دنیای امروز است. اکثر راهکارهای امنیتی از وبگردی امن گرفته تا ایمیل امن به این فناوری وابسته هستند. بدون رمزنگاری حریم خصوصی نخواهیم داشت.
رمزنگاری چیست؟
اگر تا به حال متن مهم، خصوصی یا حساسی نوشته باشید ممکن است درباره اینکه چه اشخاصی آن را خوانده یا مشاهده میکنند دچار نگرانی شده باشید. اگر قرار باشد این پیام را از طریق یک شخص دیگر ارسال کنید، خطر اینکه افراد غیرمجاز پیام شما را بخوانند بیشتر میشود. رمزنگاری ترکیب پیام را طوری تغییر میدهد که تنها افرادی که از روش برگرداندن آن به حالت عادی باخبر هستند بتوانند آن را بخوانند. برای دیگران، متن پیام در هم ریخته و به صورت ترکیبی ناخوانا از کاراکترها و حروف خواهد بود.
Scytale
انسانها از دوران بسیار قدیم از تکنیکهای مختلف برای پیشگیری از خواندن پیامهای خصوصی خودشان توسط دیگران استفاده میکردند. یونانیان باستان، یک تکه پوست را اطراف یک چوب میپیچیدند و به آن scytale میگفتند. سپس پیام را در راستای چوب و روی پارچه مینوشتند.
متن روی این پارچه در حالت باز و پیچ نشده خوانا و قابل درک نبود. یک پیام رسان این پیام را را تحویل میداد و گیرنده که آن را در جایی خلوت میخواند اول باید آن را دور scytale مخصوص پیام میپیچید تا خوانا شود. این تکنیک رمزنگاری از نوع جابجایی حروف بود.
این یک تکنیک بدوی بود اما بعضی از عناصر آن هنوز هم در سیستمهای رمزنگاری مدرن وجود دارد. فرستنده و گیرنده هر دو باید از قبل درباره اینکه چه طرح رمزنگاری استفاده میکنند و اینکه چطور از آن استفاده میکنند به توافق برسند. همچنین هر دو نیاز به مکانیزمهای تطبیق دهی برای انجام این کار دارند.
مربع پولیبیوس
یکی دیگر از روشهای مورد استفاده یونیان باستان، مربع پولیبیوس بود که یک جدول 5 در 5 یا 6 در 6 از حروف مختلف است. مثل بازی جنگ کشتیها، هر حرف بر اساس مختصات پیدا میشود. اولین حرف اولین ردیف کد 11 دارد، چهارمین حرف از دومین ردیف کد 42 دارد و به همین ترتیب.
البته روشهای بسیار متنوعی برای قراردادن حروف در جداول وجود دارد. اگر از طرح کلی حروف باخبر نباشید، رمزگشایی بسیار سخت خواهد بود. با این سیستم میتوانید مدلی با چند مربع و طرحهای متفاوت ایجاد کنید. مثلاً میتوانید هفت مربع بسازید و برای هر روز هفته از یک مربع استفاده کنید. به طرحهایی که در آنها از حروف الفبای مختلف استفاده میشود هم رمز چند الفبایی گفته میشود.
مربع پولیبیوس یک نوع کد است. یک کد کاراکترها را با حروف جابجا میکند که در اینجا به جای حروف رقم داریم.
رمز سزار
نام رمز سزار برگرفته از نام جولیوس سزار است. در این تکنیک از یک آفست – یا چرخش – برای جایگزین کردن هر حرف با یک حرف با فاصلهای مشخص استفاده میشود. اگر قرار باشد از آفست 2 استفاده کنیم، حرف A با C و حرف D با F جابجا میشود. گیرندهای که آفست درست را در اختیار داشته باشد، رمز را با کم کردن آفست از حرفی که برای او ارسال شده به دست میآورد.
رمز سزاری که آفست 13 داشته باشد – که به آن چرخش 13 یا RPT13 هم گفته میشود – کیفیت خاصی دارد. در زبان انگلیسی که 26 حرف دارد، با تقسیم بر 13 حاصل 2 میشود. با این آفست، برای رمزگشایی یک حرف میتوانید آن را دوباره از فرایند رمزنگاری رد کنید. در واقع با دو بار رمزنگاری به متن اصلی خواهید رسید.
متن ساده: ABCDEFGHIJKLMNOPQRSTUVWXYZ
رمز ROT13: NOPQRSTUVWXYZABCDEFGHIJKLM
اگر حروف GEEK را از الفبای بالایی برداشته و طبق ردیف دوم رمزنگاری کنیم، به TRRX میرسیم. اگر دوباره این کار را با TRRX انجام دهیم، باز هم در ردیف پایین به GEEK میرسیم.
در برنامه نویسی این ساده سازی اهمیت زیادی دارد چون فقط باید یک روتین برای رمزنگاری نوشت. نیازی به نوشتن روتین رمزگشایی وجود ندارد. به همین دلیل است که پیاده سازی ROT13 جزء تمرینهای متداول برای کارآموزان برنامه نویسی است. همچنین ROT13 نمونهای از یک رمزنگاری درجه پایین بسیار ضعیف است.
می توانید در این موتور ROT13 آنلاین، این تکنیک رمزنگاری را تجربه کنید.
رمزنگاری چیست؟
همه روشها و مثالهایی که تا اینجا بررسی کردیم به راحتی قابل هک هستند اما وجود یک ویژگی مشترک بین همه آنها و بین همه شکلهای رمزنگاری را نشان میدهند: یک مجموعه قانون برای تبدیل کردن متن اصلی یعنی “متن ساده” به نسخه رمزنگاری شده آن وجود دارد. به این مجموعه قوانین الگوریتم گفته میشود و اینجاست که رمزنگاری وارد عمل میشود.
اساساً رمزنگاری الگوریتمی برای حفاظت از حریم خصوصی است.
رمزنگاری چگونه کار میکند؟
درست مثل انسانهای یونان باستان، در دنیای امروزی هم اشخاصی که به دنبال ارسال یا ذخیره اطلاعات خصوصی هستند با چالشهایی روبرو هستند. برای پیشگیری از دسترسی افراد غیرمجاز به دادههای خودتان چه کارهایی میتوانید انجام دهید و چطور میتوان آنها را امن تر کرد؟
همه سیستمهای قدیمی را میتوان با کمی اطلاعات درباره سیستم رمزنگاری شکست داد. برای خواندن پیام scytale کافیست از چوبی با قطر مناسب استفاده کنید. رمز سزار را میتوان با امتحان کردن آفستهای مختلف شکست داد که برای زبان انگلیسی حداکثر به 25 حالت نیاز دارد.
کار با مربعهای پولیبیوس کمی چالشی تر است چون طرح حروف در مربع قابل پیش بینی نیستند. اما در غیر اینصورت کار شما بسیار راحت خواهد بود. حتی اگر طرح مربع را ندانید ممکن است بتوانید با بررسی متن رمزنگاری شده که به آن تحلیل رمز هم گفته میشود آن را رمزگشایی کنید.
برای یک رمز ساده میتوانید از ابزارهایی مثل جدول بسامد برای تشخیص حروف متناظر با هر حرف رمزی استفاده کنید. طرح رمزنگاری باید ایمن باشد چه دیگران با روش کلی مورد استفاده برای رمزنگاری آشنا باشند و چه نباشند. همچنین این رمز باید در برابر حملات تحلیل رمز مقاومت داشته باشد.
استفاده از بیتها به جای کاراکترها
طرحهای دیجیتال قوی هر بار روی یک حرف و کاراکتر کار نمیکنند بلکه یک پیمانه کامل از متن را در نظر میگیرند که به آن رمز بلاکی هم گفته میشود.
در این طرحها بیتها – صفر و یکها – داخل هر بلاک طبق قوانین پیچیده ریاضی تعبیه شده در الگوریتمهای رمزنگاری دستکاری میشوند. اگر الگوریتمی از سایز بلاک 128 بیت استفاده کند برای دادههایی که در پیمانههای 128 بیتی تقسیم بندی شده اند خوب کار میکند. اگر آخرین پیمانه کوچکتر از 128 بیت باشد، به اندازه لازم به آن بیت اضافه میشود.
در حال حاضر طرحهای رمزنگاری بلاکی مختلفی موجود هستند. استاندارد رمزنگاری پیشرفته (AES) استاندارد رمزنگاری رسمی دولت آمریکاست. برای طرحهای رمزنگاری مختلف از الگوریتمهای مختلف با طول بلاک متفاوت استفاده شده و همچنین در آنها از ترکیبات مختلف تبدیلهای ریاضی استفاده میشود.
اما با توجه به همه این مفاهیم چطور میتوان کاری کرد که افراد غیرمجاز حتی در صورت اطلاع از روش رمزنگاری مورد استفاده امکان تفسیر دادههای رمزنگاری شده ما را نداشته باشند؟
رشته هش
اول از همه به یک حالت خاص میپردازیم. میتوان دادهها را با استفاده از روش تبدیل یک طرفه رمزنگاری کرد. در واقع این تکنیک برعکس ROT13 است چون در آن نمیتوان متن رمزی را به حالت اصلی برگرداند. دقیق تر اینکه نمیتوان در یک بازه زمانی معقول و مناسب آن را به متن ساده تبدیل کرد. این نوع رمزنگاری در توابع هش کاربرد دارد که در آنها یک رشته متن ساده به یک رشته متن رمزی به اسم هش یا رشتهی هش تبدیل میشود. تمامی رشتههای هش طول یکسانی دارند.
اما این تکنیک چه فایدهای دارد؟ این روش باعث میشود که سایتها نیازی به ذخیره کردن پسورد شما به صورت متن ساده نداشته باشند. در واقع پسورد شما هش شده، رشته هش ذخیره میشود و پسورد اصلی هیچ وقت ذخیره نخواهد شد. وقتی لاگین کرده و پسوردتان را وارد میکنید، رمز شما هش شده و بعد این رشته هش شده با رشته هش ذخیره شده در اطلاعات اکانت شما مقایسه میشود. اگر تطبیقی صورت بگیرد میتوانید وارد اکانتتان شوید. اگر پسورد اشتباه را وارد کنید دو رمز با هم تطبیق نداشته و مجاز به ورود نیستید.
به این ترتیب سایت میتواند بدون ذخیره رمز شما به صورت متن ساده شما را احرازهویت کند. اگر سایت هک شود تهدیدی برای پسوردهای شما ایجاد نمیشود. در بعضی تکنیکهای هشینگ یکسری دادههای تصادفی به اسم سالت به پسوردها اضافه شده و بعد هش میشوند. این یعنی حتی اگر دو یا چند کاربر یک پسورد مشابه داشته باشند، هش آنها یکسان نخواهد بود.
رمزنگاری هارددرایو
برای پیشگیری از دسترسیهای غیرمجاز به دادههای کاربران، از یک کلید خاص استفاده میشود که مشخص میکند چه شخصی دادهها را رمزنگاری کرده و چه شخصی قابلیت رمزگشایی آن را دارد. کلید، یک رشته طولانی از بایتهاست که توسط یک الگوریتم پیچیده ساخته میشود. معمولاً اندازه کلید بین 128 تا 2048 بایت یا حتی بیشتر است. وقتی الگوریتم رمزنگاری قصد رمزنگاری متن ساده را داشته باشد، از کلید استفاده میکند. اندازه کلید به اندازه بلاک بستگی دارد.
برای مراقبت از دادههایی که روی سیستم ذخیره میشوند میتوان کل هارددرایو را رمزنگاری کرد. این رمزنگاری با هویت کاربر گره خورده و کلید آن به صورت خودکار ایجاد و اعمال میشود. کاربر هیچ تعامل مستقیمی با کلید نداشته و نیازی نیست که این کلید برای شخص دیگری ارسال شود.
همین گره خوردن کلید با هویت کاربر باعث شده که دیگران حتی در صورت برداشتن هارددرایو از کامپیوتر و متصل کردن آن به یک سیستم دیگر امکان دسترسی به دادهها را نداشته باشند. این نوع رمزنگاری از دادههای ایستا و اصطلاحاً در حال استراحت محافظت میکند.
اگر نیاز به انتقال دادهها داشته باشید، باید از روشهای مخصوص دادههای در حال انتقال استفاده کنید.
سایتهای امن
وقتی به سایتی متصل شده و علامت قفل را در نوار آدرس مشاهده میکنید این یعنی کانکشن بین کامپیوتر شما و آن سایت با استفاده از رمزنگاری SSL/TSL حفاظت شده است.
این قابلیت خوب است اما نشان دهنده ایمن بودن سایر بخشهای سایت نیست. ممکن است این سایت پسوردهای شما را در قالب متن ساده ذخیره کرده و برای دسترسی به دیتابیس از رمز پیش فرض استفاده کند اما در مجموع وقتی علامت قفل را مشاهده میکنید این یعنی ارتباطاتی که با سایت صورت میگیرند رمزنگاری شده هستند.
این رمزنگاری به این دلیل قابل پیاده سازی است که سایت و مرورگر از یک طرح رمزنگاری با کلیدهای مختلف استفاده میکنند. هنگام شروع یک ارتباط جدید، مرورگر شما و سایت “کلیدهای عمومی” را با هم مبادله میکنند. سپس بستههای مبادله شده بین یکدیگر را با استفاده از کلید خصوصی رمزنگاری میکنند. از آنجایی که هر دو طرف ارتباط کلید عمومی هم را دارند، هر طرف میتواند اطلاعات به دست آمده از سمت طرف دیگر را رمزگشایی کند اما کلید خصوصی هیچ وقت نباید افشا شود.
منتشر کردن کلید عمومی بی خطر است چون نمیتوان از کلید عمومی برای رمزنگاری دادهها استفاده کرد. بنابراین با اینکه کلید عمومی یک سایت را دارید نمیتوانید آن سایت را جعل کنید چون کلید خصوصی را ندارید. این قابلیت باعث ایجاد سوالاتی درباره درستی دادهها میشود. چگونه میتوان مطمئن شد که سایت مالک اصلی کلید عمومی و خصوصی نیست و یک سایت جعلی هر دو کلید را از سایت اصلی به سرقت نبرده باشد؟
برای بررسی هویت سایتها از گواهینامههای دیجیتال استفاده میشود. این گواهینامهها توسط مرجع صدور گواهینامه و پس از بررسی هویت درخواست کننده صادر میشوند. وبسایت با شروع یک کانکشن این گواهینامه را ارسال میکند تا مرورگر بتواند آن را اعتبارسنجی کند.
این کار از طریق تماس با مرجع صدور گواهینامه دیجیتال و رمزگشایی بعضی از اطلاعات این گواهینامه صورت میگیرد. برای انجام این کار به کلیدهای بیشتری نیاز است. مرورگر شما کلید عمومی مرجع صدور گواهینامه را دارد و باز هم یکسری کلید بیشتر در این فرایند وجود دارد و همچنین مبادله کلیدهای عمومی. مرورگر شما و سایت هم برای ایمن سازی هر چه بیشتر ارتباطات خودشان کلیدهای سشن منحصربفردی تولید میکنند.
وقتی مرورگر اعتبار سایت و قدرت رمزنگاری را تأیید کرد قفل را در کنار نوار آدرس قرار میدهد.
ایمیل امن
مفهوم کلیدهای عمومی و خصوصی کاربرد بسیار زیادی دارد. یکی از روشهای متداول برای ایمن سازی ایمیلهای در جریان، استفاده از کلیدهای عمومی و خصوصی است. میتوان کلیدهای عمومی را به صورت امن مبادله کرد اما کلیدهای خصوصی به اشتراک گذاشته نمیشوند. پیامها با استفاده از کلید خصوصی ارسال کننده پیام رمزنگاری میشوند. سپس گیرنده از کلید عمومی برای رمزگشایی و خواندن آن استفاده میکند. همچنین میتوانند برای رمزنگاری پاسخ هم کلید خصوصی خودشان را استفاده کنند.
OpenPGP یکی از طرحهای رمزنگاری شناخته شده با پیروی از این مدل و البته با کمی تغییر است.
کلاینت ایمیل ارسال کننده یک کلید تصادفی تولید میکند. از این کلید برای رمزنگاری ایمیلها استفاده میشود. سپس کلید تصادفی با استفاده از کلید عمومی گیرنده پیام رمزنگاری میشود. پیام رمزنگاری شده و کلید تصادفی رمزنگاری شده برای گیرنده ارسال میشوند. نرمافزار ایمیل دریافت کننده از کلید خصوصی برای رمزگشایی کلید تصادفی استفاده میکند که از آن برای رمزگشایی پیام استفاده میشود.
هدف این گام اضافه، فراهم کردن امکان ارسال ایمیل به صورت امن برای چندین گیرنده است. کلاینت ایمیل شما نیازی به رمزنگاری هر ایمیل به صورت مجزا برای هر گیرنده ندارد و این کار فقط برای کلید تصادفی انجام میشود.
البته سیستمهای ایمیل امن با چالش اعتبار و سندیت هم روبرو هستند. باید به کلید عمومی که برای شما ارسال میشود اعتماد داشته باشید. کلیدها هم به آدرس ایمیل وابسته هستند. با داشتن کلید عمومی که از طریق ایمیل برای شما ارسال شده، گام اول را به خوبی و درستی برداشتید. اکثر کلاینتهای ایمیل میتوانند آدرس ایمیل مرتبط با یک کلید عمومی را نشان دهند.
یکی دیگر از روشهای بررسی درستی کلید عمومی به دست آوردن آن از یک مخزن است. کلیدهای عمومی بارگذاری شده به این مخازن قبل از عمومی شدن اعتبارسنجی میشوند.
رمزنگاری پایه و اساس زندگی دیجیتال ما را شامل میشود
رمزنگاری پایه و اساس زندگی دیجیتال ما است، حداقل اگر از آن درست استفاده شود! از به کار بردن اتصالات راه دور ناامن به هر روشی خودداری کنید (چه هنگام دورکاری و چه هنگام خرید آنلاین)، از کلاینتهای ایمیلی استفاده کنید که قابلیت رمزنگاری پیامهای خصوصی را داشته باشند و از اپلیکیشنهای پیام رسان دارای قابلیت رمزنگاری سرتاسری استفاده کنید.