عمومی ۲۴۷۹ بازدید

به احتمال زیاد تا کنون با عبارت رمزنگاری مواجه شده‌اید. احتمالاً در مورد اهمیت زیاد آن و همچنین میزان ضروری بودنش برای حفظ امنیت در عصر شبکه نکاتی خوانده یا شنیده‌اید. اگر از WhatsApp استفاده می‌کنید مسلماً گزینه رمزنگاری را دیده‌اید. اگر از اپلیکیشن‌های بانکداری آنلاین استفاده می‌کنید با رمزنگاری مواجه شده‌اید. حتی هنگامی که رمز وای‌فای یک کافه را از پیشخدمت می‌پرسید، در واقع می‌خواهید به یک شبکه رمزنگاری‌شده وصل شوید که کلید آن رمز عبور وای‌فای است. اما با این که ما از رمزنگاری در زندگی روزمره خود استفاده می‌کنیم؛ همچنان اصطلاح‌های زیادی وجود دارند که برای ما رمزآمیز به نظر می‌رسند. در این نوشته به بررسی 10 اصطلاح‌ رایج رمزنگاری که باید همه افراد آن‌ها را بدانند و درک کنند پرداخته‌ایم.

1. متن ساده (Plaintext)

ابتدایی‌ترین واژه‌ای که باید بیاموزیم کاملاً ساده است؛ اما به اندازه اصطلاح‌های دیگر مهم است: Plaintext یک پیام ساده و قابل خواندن است که هر کسی می‌تواند آن را بخواند.

2. متن رمز شده (Ciphertext)

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

3. رمزنگاری (Encryption)

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

 رمزگشایی (Decryption)

رمزنگاری موجب قفل شدن فایل می‌شود و رمزگشایی فرایند معکوس آن است که یک متن رمز شده را به متن ساده تبدیل می‌کند. رمزگشایی نیازمند دو عنصر است که یکی رمز عبور صحیح و دیگری الگوریتم رمزگشایی متناظر است.

4. کلیدها (Keys)

فرایند رمزنگاری نیازمند یک کلید رمزنگاری است که شیوه تبدیل متن ساده به متن رمز شده را مشخص می‌سازد. اصل کرکهوفس (Auguste Kerckhoffs) بیان می‌کند که «تنها میزان امن بودن کلید است که امنیت را تضمین می‌کند». همچنین اصل ماکسیم که از سوی کلود شانون (Claude Shannon) ارائه شده تکمیل می‌کند که: «دشمن سیستم را می‌شناسد».

این دو گزاره بر نقش رمزنگاری و کلیدهای درون آن تأکید دارند.

مخفی نگه داشتن همه جزییات یک الگوریتم رمزنگاری کار بسیار دشواری است؛ در حالی که امن نگه داشتن یک کلید کوچک بسیار آسان‌تر است. کلید، الگوریتم را قفل کرده و باز می‌کند و امکان اجرای فرایند رمزنگاری و رمزگشایی را فراهم می‌سازد.

آیا کلید یک رمز عبور است؟

کلید می‌تواند رمز عبور باشد یا نباشد؛ اما در اغلب موارد چنین نیست. ایجاد کلید نتیجه استفاده از یک الگوریتم است در حالی که رمز عبور معمولاً انتخاب کاربر است. دلیل این سردرگمی آن است که ما به ندرت با یک کلید رمزنگاری سر و کار پیدا می‌کنیم؛ اما در زندگی روزمره خود به طور مکرر از رمزهای عبور استفاده می‌کنیم.

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

5. هش (Hash)

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

هش کردن زمانی مفید است که بخواهیم هویت کسی را احراز بکنیم؛ اما همزمان اطلاعات وی را ندانیم. در این حالت با هش کردن (درهم‌سازی) رمز عبور امکان حمله‌های brute-force را از مهاجمان می‌گیریم. در این نوع حمله، مهاجم همه ترکیب‌های رمز عبور ممکن را می‌آزماید.

hashing algorithm

احتمالاً تاکنون نام برخی از الگوریتم‌های رایج هش کردن مانند MD5، SHA, SHA-1 و SHA-2 را شنیده‌اید. برخی از آن‌ها از بقیه قوی‌تر هستند و برخی دیگر مانند MD5 در حال حاضر آسیب‌پذیر محسوب می‌شوند. برای نمونه اگر به سایت MD5 Online (+) روید متوجه می‌شوید که 123,255,542,234 کلمه در پایگاه داده هش MD5 خود دارند. بدین ترتیب کارهای زیر را انجام دهید.

  • گزینه MD5 Encrypt را از منوی فوقانی انتخاب کنید.
  • رمز عبوری وارد کنید و با زدن دکمه Encrypt هش MD5 خود را ببینید.
  • هش را انتخاب کرده و با زدن دکمه Ctrl+C آن را کپی کنید. سپس گزینه MD5 Decrypt را از منوی فوقانی انتخاب کنید.
  • کادر ورودی را انتخاب کرده و با زدن دکمه‌های Ctrl+V هش را چسبانده و پس از تکمیل کردن کپچا دکمه Decrypt را بزنید.

همان طور که می‌بینید رمز عبور هش شده فاش می‌شود. از این رو هش کردن برای ایجاد امنیت به هیچ وجه مطمئن نیست. البته این وضعیت به رمز عبور انتخابی نیز وابسته است. اما تابع‌های رمزنگاری دیگری نیز هستند که به ارتقای امنیت کمک می‌کنند.

6. Salt

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

فرض کنید دو کاربر با رمزهای عبور یکسان به صورت hunter2 وجود دارند. ما hunter2 را وارد یک پردازش تولید هش SHA256 می‌کنیم و مقدار زیر را به دست می‌آوریم:

f52fbd32b2b3b86ff88ef6c490628285f482af15ddcb29541f94bcf526a3f6c7

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

  • برای نمونه به رمز عبور hunter2 برای کاربر اول یک salt به صورت sausage اضافه می‌کنیم:
3436d420e833d662c480ff64fce63c7d27ddabfb1b6a423f2ea45caa169fb157
  • به رمز عبور hunter2 برای کاربر دوم یک salt به صورت bacon اضافه می‌کنیم:
728963c70b8a570e2501fa618c975509215bd0ff5cddaf405abf06234b20602c

همان طور که می‌بینید افزودن این salt موجب می‌شود که مقدار هش تا حدود زیادی تصادفی شود و بدین ترتیب رمز عبور در موارد افشا شدن تا حدود زیادی امنیت بیشتری پیدا می‌کند. نکته جالب این است که این رمز عبور همچنان به حساب کاربری مرتبط است و از این رو هنگام ورود به سایت هیچ مشکلی پیش نمی‌آید.

7. الگوریتم‌های متقارن و نامتقارن

در عصر محاسبات مدرن دو نوع الگوریتم رمزنگاری ابتدایی به صورت متقارن و نامتقارن وجود دارند. هر دو این الگوریتم‌ها داده‌ها را رمزنگاری می‌کنند؛ اما کارکرد هر یک متفاوت است.

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

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

اکثریت قریب به اتفاق سرویس‌های آنلاینی که امروزه استفاده می‌کنیم نوعی از رمزنگاری کلید عمومی را پیاده‌سازی می‌کنند.

8. کلیدهای عمومی و خصوصی

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

یک الگوریتم متقارن از دو نوع کلید به نام‌های کلید عمومی و کلید خصوصی استفاده می‌کند. کلید عمومی را می‌توان به همه افراد ارسال کرد در حالی که کلید خصوصی تنها در اختیار مالک آن است. منظور از این طراحی چیست؟

هر کسی که کلید عمومی را در اختیار داشته باشد، می‌تواند یک پیام خصوصی را رمزنگاری کند؛ در حالی که گیرنده تنها در صورتی می‌تواند محتوای پیام را رمزگشایی کرده و بخواند که به کلید خصوصی دسترسی داشته باشد. برای توضیح بیشتر به تصویر زیر توجه کنید:

 Public and Private Keys

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

یک «جفت کلید» از نظر ریاضیاتی به کلیدهای به هم پیوند خورده عمومی و خصوصی گفته می‌شود که به وسیله یک الگوریتم رمزنگاری ایجاد می‌شوند.

9. HTTPS

HTTPS یا «HTTP Secure» یک ارتقای امنیتی است که به طور گسترده‌ای برای پروتکل HTTP پیاده‌سازی شده است و بنیان‌های اینترنت را چنان که امروز می‌شناسیم تشکیل می‌دهد. زمانی که از یک اتصال HTTPS استفاده می‌کنید، داده‌های شما با استفاده از «امنیت لایه انتقال» (Transport Layer Security) یا به اختصار TLS رمزنگاری می‌شود که داده‌های شما را در زمان ارسال شدن محافظت می‌کند.

HTTPS کلیدهای عمومی و خصوصی بلندمدتی ایجاد می‌کند که به نوبه خود برای یک «کلید نشست» (session key) کوتاه‌مدت نیز استفاده می‌شوند. کلید نشست یک کلید متقارن با استفاده منفرد است که وقتی از یک سایت HTTPS خارج می‌شوید تخریب می‌شود. با این وجود زمانی که مجدداً از سایت بازدید کنید یک کلید نشست با استفاده منفرد دیگر دریافت می‌کنید که ارتباط شما را امن می‌سازد.

یک وب‌سایت باید به طور کامل از HTTPS استفاده کند تا کاربران خود را به طور کامل مورد محافظت قرار دهد. در واقع سال 2018 نخستین سالی بود که اغلب وب‌سایت‌های آنلاین به جای اتصال قدیمی HTTP از اتصال‌های HTTPS استفاده می‌کردند.

10. رمزنگاری سر به سر

یکی از اصطلاح‌های پرهیاهوی امروزی، عبارت «رمزنگاری سر به سر» (End-to-End Encryption) است. پلتفرم پیام‌رسانی اجتماعی واتساپ در سال 2016 شروع به ارائه خدمات رمزنگاری سر به سر کرده است تا مطمئن شوید که پیام‌ها در هر زمان امن هستند.

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

واتساپ نخستین اپلیکیشنی نیست که از رمزنگاری سر به سر استفاده کرده است؛ با این حال با ورود آن به این حوزه مفهوم رمزنگاری پیام‌ها وارد گفتمان عمومی شده و ارتقا یافت.

سخن پایانی

متأسفانه دولت‌ها و سازمان‌های زیادی در سراسر دنیا وجود دارند که از رمزنگاری متنفر هستند. دلیل تنفر آن‌ها دقیقاً همان چیزهایی هستند که باعث می‌شوند رمزنگاری برای ما جذاب باشد. رمزنگاری موجب می‌شود که ارتباط‌های ما امن و خصوصی بمانند و همچنین باعث می‌شود که اینترنت بتواند به کارکرد خود تداوم ببخشد.

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

رمزنگاری شاید به ظاهر مفهومی دشوار به نظر برسد؛ اما درک ریاضیاتی رمزنگاری به مراتب دشوارتر است. با این وجود، ما بدون درک مفهوم رمزنگاری نیز می‌توانیم قدردان خدمات آن باشیم.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۳ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

«میثم لطفی» در رشته‌های ریاضیات کاربردی و مهندسی کامپیوتر به تحصیل پرداخته و شیفته فناوری است. وی در حال حاضر علاوه بر پیگیری علاقه‌مندی‌هایش در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار با مجله فرادرس همکاری دارد.

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد.

مشاهده بیشتر