رمزنگاری کاری بسیار سخت است. اما آگاه بودن از جنبههای کلیدی رمزنگاری شما را یک قدم جلوتر قرار خواهد داد.
در اینجا پنج مورد مطرح میشود که با درک آن شما متوجه شوید که در این مقوله از چه مسائلی صحبت میشود:
گواهینامههای دیجیتال
معمولترین بخشی که در زمینه گواهینامه دیجیتال به آن برخورد میکنید در وبگاههای اینترنتی است که با HTTPS ایمن شدهاند (نسخهی امنِ پروتکل HTTP). در واقع امنیت یک وبگاه شامل دو جنبه است:
• احراز هویت: فرایندی است که در طی آن شما خواهید فهمید که صاحب وبگاه همانی است که ادعا میکند.
• رمزنگاری: رمزنگاری، ارتباطات میان مرورگر شما و وبگاه را امن میکند، به نحوی که هیچکس نتواند میان شما و او قرار گیرد و آنچه که میان شما و این وبگاه میگذرد را ردیابی و رمزگشایی کند.
احراز هویت از طریق یک گواهینامه دیجیتال صورت میگیرد. و آن یک سند الکترونیکی است که به وسیله مرجع صدور گواهینامه «CA» به صاحب وبگاه داده میشود. برای بهدست آوردن یک گواهینامه از CA شما باید آنها را از اینکه مالک وبگاه یا کسبوکار مرتبط با وبگاه هستید، متقاعد کنید (بنابراین اگر شما یک شرکت هستید باید شواهدی در مورد دفاتر ثبت شده شرکت و سایر مواردی این چنینی ارائه کنید).
گواهینامههای دیجیتال برای اعتماد سازی ایجاد شدهاند: در اساس CA برای تضمین هویت وبگاهها کار میکند. بنابراین شما به این دلیل به نشانی www.facebook.com اعتماد میکنید که شما مرجع صدور CA (DigitCert) آن را برای شما تضمین میکند (توجه کنید که مرورگر شما به بررسی صدور گواهینامه از سوی CA میپردازد تا مطمئن شود که گواهینامهها هنوز معتبر هستند و به هر دلیلی لغو نشدهاند).
اگر شما روی قفل موجود بر روی نوار نشانی کلیک کنید و آن به شما بگوید که این گواهینامه از هیچکدام از خدمات صدور گواهینامه صادر نشده است، احتمالاً شما کمتر به آن وبگاه اعتماد خواهید کرد.
اما چگونه رایانهی شما خواهد فهمید که به چه کسی اعتماد کند؟ آسان است: سازندگان سامانه عامل و مرورگر شما،آنها را با فهرستی از مراجع قابل اعتماد مجهز کردهاند که به طور منظم به روزرسانی میشوند.
الصاق گواهینامه یا Certificate pinning
برخی از سازندگان یک قدم جلوتر رفتهاند و میخواهند که تنها برخی CAهای خاص در گواهینامههای آنها پذیرفته شده باشند. شرکت گوگل یکی از مهمترین شرکتهایی است که روال الصاق گواهینامه را به خوبی انجام داده است.
مرورگر کروم این شرکت انتظار دارد مرجع گواهینامه یا يک CA مشخص برای گواهینامه روی google.com، gmail.com و دیگر وبگاههای مختلفی خدمات اینترنتی این شرکت را دارد، را ببینید. اگر یک گواهینامه از یک منبع متفاوت ببیند احتمال مشکلی در این بین میدهد. تعیین یک CA برای گواهینامه به عنوان «الصاق» شناخته میشود.
هَشینگ یا درهمسازی چیست؟
یک تابع هش یا تابع درهمساز در مفهوم رمزنگاری، بخشی از داده را میگیرد و برای اهداف مختلف و متفاوت، به قالبی ناشناس از داده تبدیل میکند، که نمیتوان آن را دوباره به شکل اصلی بازگرداند.
چرا به این کار نیاز است؟ ساده است؛ آیا شما میخواهید که گذرواژههای خود را در پایگاه دادههای کارگزار، به شکل یک متن ساده ذخیره کنید و یا به شکل نسخهای که قابل خواندن برای دیگران نباشد؟
این مفهوم به اندازه کافی ساده است. سامانهعامل رایانه شما، گذرواژهها را به شکل هَش ذخیره میکند. هنگامی که یک کاربر تلاش میکند تا وارد سامانه شود، به جای رمزگشایی نسخه ذخیره شده و مقایسه آن با نسخه متنی، گذواژهای که نوشته میشود، دریافت میشود، با هشینگ تبدیل شده و با نسخه ذخیره شده مقایسه میشود. توجه داشته باشید که بدون توجه به متن اصلی، اندازه هش همان است، بنابراین برای مثال SHA۲-۵۱۲ یک هش ۵۱۲ بیتی یا ۳۲ بایتی ایجاد میکند.
هشها در ارتباطات امن مورد استفاده قرار میگیرند.
اگر شما مشغول تنظیم امنیت در یک سامانه هستید و از شما پرسیده میشود که چه تابع هشی را شما مورد استفاده قرار خواهید داد، از یک Message Digest ۵ (“MD۵”) استفاده نکنید. چرا؟ زیرا ثابت شده است که MD۵ مستعد «شکسته شدن» است، و در آن ممکن است ۲ متن متفاوت عبارت هش یکسانی به دست آورند. حملاتی که به رمزهای MD۵ صورت میگیرد امروزه با هزینه خیلی خیلی کمی (کمتر از یک دلار!) انجام میشود.
بنابراین همیشه به سراغ یک الگوریتم امن هش (SHA) بروید که مستعد به حمله تشخیص داده نشده باشد. SHA-۲ الگوریتم خوبی است، اما از زمانی که SHA-۳ رسماً معرفی شده است، به عنوان استانداردی در سال ۲۰۱۵ پذیرفته شده است (این الگوریتم زمینه در سال ۲۰۱۲ برگزیده شده است) در صورتیکه شما بتوانید این الگوریتم را پیاده کنید، باید آن را انتخاب کنید. آیا این کار به خاطر اینست که امنیت آن از SHA-۲ بیشتر است؟ خیر؛ بیشتر به این خاطر که این الگوریتم زمان کوتاهی است که معرفی شده و نسبت به SHA-۲ خود که در سال ۲۰۰۱ معرفی شده است، فرصت کمی برای شکستن آن موجود بوده است.
رمزنگاری متقارن و نامتقارن
اغلب رویکردهای رمزنگاری که ما در فناوری به آنها برخورد میکنیم از مفهوم کلید استفاده میکنند؛ فرستنده دادههای اصلی را میگیرد و آنها را بر اساس کلید به شکلی رمزگذاری میکنند، سپس گیرنده با استفاده از یک کلید آنچه را که دریافت میکند، رمزگشایی میکند. در رمزنگاری متقارن شما از همان کلیدی که برای رمزنگاری استفاده میکنید، برای رمزگشایی نیز استفاده خواهید کرد. در رمزگشایی نامتقارن شما دو کلید دارید که از نظر ریاضی با یکدیگر مربوط هستند، از یکی برای رمزنگاری و از دیگری برای رمزگشایی استفاده میکنید.
مثالهای الگوریتم رمزگشایی کلید متقارن شامل Rivest Cipher ۴ (RC۴) و استاندارد رمزگشایی پیشرفته Advanced Encryption Standard (AES) و الگوریتم رمزنگاری داده سه تایی Triple Data Encryption Algorithm (۳DES) میشوند؛ دو مورد از الگوریتمهای شایع رمزنگاری نامتقارن عبارتند از Rivest-Shamir-Adleman (RSA) و Elliptic Curve Cryptography (ECC).
رمزنگاری متقارن بسیار سریع است، اما مشکلی که شما ممکن است داشته باشید به اشتراک گذاری کلید در وهله اول است. رویکرد نامتقارن نیاز به اشتراک گذاری کلید را از بین برده است اما به شدت کند است. (شاید ده هزار برابر کندتر از رمزنگاری متقارن است).
راه حل مشکل؛ از رمزنگاری نامتقارن برای به اشتراک گذاری کلید در شروع مرحله انتقال استفاده کنید، و سپس از این کلید به اشتراک گذاشته شده برای رمزنگاری متقارن در انتقال دادههای خود استفاده کنید.
و این دقیقاً چیزی است که اتفاق میافتد؛ با کلیک کردن بر روی قفل موجود بر روی در نوار ابزار نشانی مرورگر کروم رمزنگاری اطلاعات را به این شکل نوشته است: «این اتصال با الگوریتم AES_۱۲۸_GCM رمزگذاری شده و با استفاده ECDHE_RSA در فرآیند اولیه تبادل کلید تصدیق میشود». (ECDHE یک رمزنگاری بیضوی نامتقارن است).
کلید عمومی و خصوصی
درست است، آیا شما با دقت شنیدهاید؟ من میخواهم رمزنگاری کلید عمومی را در ۲۵۰ کلمه و یا کمتر از آن برای شما توضیح دهم.
رمزنگاری کلید عمومی یک رویکرد نامتقارن است؛ مطالب با استفاده از یک کلید رمزنگاری شده و با کلیدی دیگر رمزگشایی میشود. هر کدام از طرفین دو کلید ایجاد میکنند (یک کلید عمومی و یک کلید خصوصی)، که نوع خصوصی را خصوصی نگه داشته و نوع عمومی را منتشر میکند. همچنانکه قبلاً نیز توضیح دادیم، هر کدام از دو کلیدهای مربوط به دو طرف از نظر ریاضی به یکدیگر مرتبط هستند.
اگر طرف الف بخواهد به طرف ب پیامی ارسال کند، طرف الف کلید عمومی طرف ب را میگیرد و از آن برای رمزگذاری پیام استفاده میکند. هنگامی که طرف ب آن را دریافت میکند، از کلید خصوصی خود برای رمزگشایی این پیام استفاده میکند. و سپس کار انجام خواهد شد.
استثنایی در میان نیست- برای اینکه کسی نمیتواند بگوید که پیامی به طرف ب از کسی که ادعا میکند که طرف الف است ارسال میشود. چرا که در اینجا یک مرحله اضافی نیز وجود دارد؛ طرف الف نیاز دارد تا پیام را امضاء کند و طرف ب باید این «امضاء» را بررسی کند.
برای انجام این کار، طرف الف پیام را برای یک نتیجه مناسب و جمع و جوری هش میکند. سپس طرف الف از کلید خصوصی برای رمزگذاری هش استفاده کرده و آن را به طرف ب میفرستد. طرف ب از کلید عمومی طرف الف استفاده کرده و هش را رمزگشایی میکند.
همه آنچه که اکنون طرف ب باید انجام دهد اینست که پیام اصلی را که طرف الف فرستاده است با هشی که اکنون دریافت کرده است رمزگشایی کند؛ اگر آنها یکی باشند، طرف ب میتواند مطمئن باشد که پیام واقعاً از سمت طرف الف ارسال شده است، زیرا تنها طرف الف است که میتواند آن را با کلید خصوصی خود رمزگذاری کند.
به همین دلیل است که اگر کلید خصوصی شما افشاء شود، شما باید فوراً آن را الغاءکنید و یک جفت کلید جدید بسازید، در غیر این صورت کسی دیگر میتواند خود را به جای شما جا بزند.
گواهینامههای دیجیتال خود امضاء
من گفتم که پنج چیز هستند که شما باید به یاد داشته باشید، اکنون میخواهم تقلب کنم و مورد شماره یک را بازبینی کنم. شاید شما تا به حال اصطلاح گواهینامه خود امضاء را شنیده باشید؛ این همان گواهینامهای است که خود شما تولید کردهاید ولی از سوی CA اعمال نشده است. اما این کار به چه معنی است،با توجه به اینکه همه هدف از گواهینامه این است که اعتمادی برای ارتباط با طرف مقابل از طریق تأیید هویت آن ایجاد شود، که اگر قرار باشد خود شما آن را امضاء کنید به وضوح این هدف محقق نخواهد شد؟
بسیار ساده: این گواهینامه کاری بیشتر از شناسایی شما انجام میدهد – این گواهینامه علاوه بر کارهای دیگر، وسیلهای است که به وسیله آن شما میتوانید کلید عمومی خود را منتشر کنید. بنابراین برای مثال، من میتوانم به راحتی گواهینامه را در وبگاه Globalsign بررسی کنم، و این وبگاه به من خواهد گفت که این گواهینامه دارای یک کلید عمومی ۲۵۶ بایتی است و محتوای آن را برای من فهرست خواهد کرد.
جمعبندی
رمزنگاری پر از مسائل عجیب و غریب ریاضی است. گاهی انسان احساس میکند که شبیه جادوگری است (حداقل زمانی که شما از دیدن اینکه چگونه ریاضیدانان ابزاری را خلق میکنند که با استفاده از آن پیامی را با یک کلید رمزگذاری کرده و سپس با کلیدی دیگر آن را رمزگشایی کنند، شگفت زده میشود).
اما برای اینکه از آن آگاهی پیدا کنید، لازم نیست که تمام جزییات آن را فهم کنید، تنها کافی است که مفاهیم و نحوه عملکرد آن را بدانید.
ثبت نظر