زیرساخت کلید عمومی یا همان PKI، از طریق مدیریت انتشار گواهیهای دیجیتالی، مسئولیت حفاظت از دادههای مهم و حساس و ارائه شناسههای دیجیتال یکتا برای کاربران، دستگاهها و برنامههای کاربردی و نیز امنسازی ارتباطات بدون واسطه (همتا به همتا) را بر عهده دارد. یزدان عباسی، مدیر آکادمی ققنوس، در این نوشتار از نشریه شماره شش ققنوس سعی کرده است تا جای ممکن با زبانی ساده و غیرتخصصی، چیستی زیرساخت کلید عمومی، نحوه کارکرد این زیرساخت و کاربردهای رایج آن را بررسی کند.
امروزه، سازمانها برای مدیریت امنیت از طریق رمزنگاری، خصوصاً رایجترین نوع رمزنگاری با استفاده از کلید عمومی، به زیرساخت کلید عمومی یا همان PKI وابسته هستند. به کمک این زیرساخت همگان (شامل افراد، تجهیزات و برنامههای کاربردی) میتوانند پیامها را رمزنگاری کنند و به کمک کلید خصوصی (یا همان کلید رمزگونه) خود پیامهای خود را رمزگشایی کنند.
زیرساخت کلید عمومی اولین بار در دهه 90 میلادی و با هدف یاریرسانی برای کنترل کلیدهای رمزنگاری از طریق انتشار و مدیریت گواهیهای دیجیتال، ظهور پیدا کرد. گواهیهای PKI در حقیقت مالک یک کلید خصوصی و اعتبار روابط بین اجزا را با هدف ایجاد امنیت، تایید میکند. به عبارت سادهتر، گواهیها همانند گواهینامه رانندگی یا پاسپورت در دنیای دیجیتالی است.
امروزه گواهیهای SSL موجود در وبسایتها، مثالهای رایجی از زیرساخت PKI هستند. به کمک گواهی SSL، بازدیدکنندگان وبسایت مطمئن میشوند اطلاعات ارسالی یا دریافتی، از همان سایت یا به همان سایت مورد نظر دریافت یا ارسال میشود.
برای درک شیوه کاری زیرساخت کلید عمومی، نیاز است به مفاهیم بنیادین رمزنگاری رجوع کنیم. با این پیش فرض، بایستی مروری بر الگوریتمهای رمزنگاری و گواهیهای دیجیتالی داشته باشیم.
الگوریتمهای رمزنگاری بدین گونه تعریف میشود: فرمولهای بسیار پیچیده ریاضی برای رمزگذاری و رمزگشایی یک پیام. الگوریتمهای رمزنگاری سنگ بنای زیرساخت کلید عمومی هستند. این الگوریتمها بسته به میزان پیچیدگی و شکل کارکرد خود به انواع مختلفی دستهبندی میشوند.
با توجه به استانداردهای امروزی، روش رمزنگاری متقارن یک الگوریتم ساده رمزنگاری است. البته این روش در زمان خود یکی از بهترین و پیچیدهترین روشهای رمزنگاری بود. در حقیقت، ارتش آلمان از این روش برای ارسال پیام در جریان جنگ جهانی دوم استفاده میکرد.
به کمک رمزنگاری متقارن، پیامی که قرار است ارسال شود، پیش از ارسال از طریق جایگشتهای ریاضی، رمزنگاری میشود. این پیام رمزنگاری شده به سادگی قابل شکسته شدن نیست. چرا که حروف کلمات پیام، در حالت رمزنگاری شده همیشه به یک شکل ثابت نمایش داده نمیشود. برای مثال اگر کلمه "HHH" را به کمک الگوریتم رمزنگاری متقارن، رمزنگاری کنیم، حتماً به سه حرف تکراری نمیرسیم.
از آنجایی که هم برای رمزگذاری و رمزگشایی یک پیام، یه یک کلید یکسان نیاز است، به این روش رمزنگاری متقارن میگویند. با اینکه رمزگشایی از پیامها بدون داشتن کلید مربوطه بسیار دشوار است؛ اما استفاده از یک کلید هم برای رمزگذاری و هم رمزگشایی، یک مخاطره بزرگ به همراه دارد و آن این است که در صورت لو رفتن کانال ارتباطی که توسط آن کلید ردوبدل میشود، کل پیامهای مبادله شده در سامانه بر ملا و افشا خواهد شد.
رمزنگاری غیرمتقارن با هدف رفع مخاطره موجود در رمزنگاری متقارن ایجاد شد. در این روش به جای یک کلید یکسان، از دو کلید متفاوت برای رمزنگاری و رمزگشایی استفاده میشود، کلید عمومی و کلید خصوصی.
در رمزنگاری غیرمتقارن نیز، یک پیام از طریق یکسری محاسبات ریاضی پیچیده رمزنگاری میشود. اما برای رمزگشایی آن به کلید دیگری به نام کلید خصوصی نیاز است. در این روش پیام توسط یک کلید خصوصی (که تنها در اختیار فرستنده پیام است) رمزگذاری میشود. برای رمزگشایی آن به کلید دیگری به نام کلید عمومی (که میتوان آن را در اختیار همگان قرار داد) نیاز است.
در ادامه به صورت عملی بررسی میکنیم که این روش رمزنگاری چگونه عمل میکند:
به کمک رمزنگاری غیرمتقارن سایر اموری همانند امضای دیجیتال که توسط رمزنگاری متقارن بسیار دشوار اجرایی میشد میتواند به سادگی انجام و مدیریت شود. برای توضیح بیشتر به مثال زیر توجه کنید:
در هر دوی این مثالها، آلیس کلیدی برای خود تولید نکرد. تنها به کمک کلید عمومی باب، آلیس پیامهای رمزنگاری شده برای باب ارسال و پیامهای و مستندات دریافتی از سوی باب را رمزگشایی کرد. این نوع ارتباط تنها یک طرفه بود. برای ارسال پیامهای رمزنگاری شده از سوی باب برای آلیس، این بار آلیس بایستی برای خود زوج کلید خصوصی و عمومی تولید کند. و با انتشار کلید عمومی خود برای باب، پیامهای باب را با کلید خصوصی خود رمزگشایی کند.
امروزه سه روش محاسباتی معروف برای تولید کلید عمومی و خصوصی با نام RSA، ECC و Diffie-Hellman وجود دارد. هر یک از این روشها از الگوریتمهای مختلفی برای تولید کلیدهای رمزنگاری استفاده میکنند؛ اما از نظر رابطه میان کلید عمومی و خصوصی، همه آنها از اصولی پایهای مشترکی استفاده میکنند.
برای درک بهتر موضوع، بیایید نگاهی به الگوریتم 2048 بیتی RSA داشته باشیم. این الگوریتم به صورت تصادفی دو عدد اول 1024 بیتی تولید سپس این دو عدد را در هم ضرب میکند. حاصل این ضرب، کلید عمومی را تولید میکند. دو عدد اول تصادفی تولیدی، کلید خصوصی هستند.
این روش با اینکه ساده به نظر میرسد؛ اما بدست آوردن کلید خصوصی از طریق کلید عمومی (معکوس تابع) بسیار دشوار است و نیاز به محاسبات ریاضی بسیار زیادی دارد. با اینکه در این روش تولید کلید عمومی به سادگی یک ضرب ریاضی انجام میشود، رسیدن از کلید عمومی به کلید خصوصی (جهت رمزگشایی داده توسط افراد غیرمجاز) به دلیل استفاده از رشته طولانی از اعداد (2048 بیت) تقریباً با تجهیزات محاسباتی موجود نشدنی است.
امروزه بسته به نوع کاربرد، هم از روشهای رمزنگاری متقارن و هم غیر متقارن استفاده میشود. رمزنگاری غیرمتقارن نسبت به رمزنگاری متقارن از سرعت کمتری برخوردار است، به همین دلیل عموماً این دو روش به صورت قطاری پشت سر هم استفاده میشوند. برای نمونه، ممکن است فردی پیامی را با استفاده از رمزنگاری متقارن، رمزگذاری کند. سپس کلید لازم برای بازگشایی پیام را با استفاده از الگوریتم رمزنگاری غیرمتقارن، رمز نموده و ارسال کند. از آنجایی که اندازه کلید نسبت به پیام غالباً کوتاهتر است، از الگوریتم کندتر یا همان غیرمتقارن برای رمزگذاری محتوای کوچکتر یا همان کلید استفاده میشود. برای رمزگذاری اصل پیام از روش رمزنگاری متقارن استفاده میکنند.
امروزه، الگوریتمهای رمزنگاری غیرمتقارن، در موارد زیر به کار گرفته میشوند:
و از همه مهمتر، رمزنگاری غیرمتمرکز، زیرساخت کلید عمومی را ایجاد میکند.
هر دوی روشهای رمزنگاری متقارن و غیرمتقارن از یک چالش مشترک رنج میبرند. چگونه میتوان مطمئن شد کلید عمومی که دریافت کردید، به مخاطبی شما انتظار دارید تعلق دارد؟
حتی در رمزنگاری غیرمتقارن نیز، مخاطره "مرد میانی" وجود دارد. برای مثال، فرض کنید فردی کلید عمومی باب را رد بزند. سپس یک کلید خصوصی برای خود ایجاد کند و در ادامه یک کلید عمومی جدید برای آلیس تولید کند. در این شرایط، آلیس پیامی را رمزگذاری و برای باب ارسال میکند. مرد میانی میتواند این پیام را رمزگشایی کند، تغییر دهد و مجدد رمزگذاری کرده و برای باب ارسال کند. بدین ترتیب نه آلیس و نه باب از هیچ چیزی باخبر نمیشوند.
زیرساخت کلید عمومی برای حل چالش ایجاد شده است. PKI، با انتشار و کنترل گواهیهای دیجیتالی، هویت افراد، دستگاهها و برنامههای کاربردی که مالک کلیدهای خصوصی و کلیدهای عمومی متناسب با آن هستند را تایید میکند. به صورت خلاصه، زیرساخت کلید عمومی، هویتها را به کلیدها تخصیص میدهد تا طرفین یک پیام بتوانند مالک پیام را به خوبی شناسایی کنند. این گواهی تضمین میکند که اگر کاربری پیامی رمزگذاری شده را به فرد (یا دستگاه) دیگری ارسال کند، گیرنده مورد نظر، تنها فردی است که حتی با وجود مرد میانی، میتواند پیام را دریافت و رمزگشایی کند.
زیرساخت کلید عمومی با انتشار و مدیریت گواهیهای دیجیتالی، کلیدهای رمزگذاری را کنترل میکند. گواهیهای دیجیتالی، گواهیهای x.509 و گواهیهای زیرساخت کلید عمومی نیز نامیده میشوند و دارای ویژگیهای زیر هستند:
سادهترین روش برای درک نحوه کنترل گواهیهای دیجیتالی توسط زیرساخت کلید عمومی برای تایید هویتها، تجسم یک اداره صدور گواهینامه دیجیتالی است. شبیه این اداره، زیرساخت کلید عمومی نیز یک نهاد واسط معتمد را برای تصمیمگیری در مورد تخصیص شناسه هویتی به گواهی دیجیتالی معرفی میکند. شبیه گواهینامه رانندگی، دستکاری و تقلب در این گواهیهای دیجیتالی نیز بسیار دشوار است. آنها حاوی اطلاعاتی هستند که از طریق آن میتوان مالک را شناسایی کرد و دارای تاریخ انقضا نیز است.
مرجع صدور گواهی دیجیتال (CA)، مسئولیت ایجاد گواهیهای دیجیتالی را بر عهده داشته و سیاستها، ابزارها و رویههای لازم برای بررسی گیرندگان پیام و انتشار گواهیها را در اختیار دارد.
به صورت مشخص، مالکین و اپراتورهای یک مرجع صدور گواهی دیجیتال یا CA موارد زیر را تعیین میکند:
زمانیکه مرجع صدور گواهی دیجیتال این مولفهها را تعیین کرد، بایستی به صورت رسمی این موارد در قالب سیاستنامه مستند کنند. از آن به بعد، به مصرفکننده گواهیها بستگی دارد که چه میزان به گواهیهای منتشر شده از سوی یک CA اعتماد کند.
فرآیند ایجاد گواهی به شدن به روش رمزنگاری غیرمتقارن وابسته است و به شکل زیر کار میکند:
هر فردی میتواند با استفاده از بخش عمومی گواهی صادر شده و بررسی هویت مالک کلید خصوصی امضاکننده گواهی، تایید کند که آن گواهی توسط CA صادر شده است یا خیر. با فرض آنکه مرجع صدور گواهی دیجیتالی نهادی قابل اعتماد باشد، افراد میتوانند تایید کنند که هرآنچه ارسال به دارنده گواهی میکنند حتما به گیرنده اصلی پیام خواهد رسید. و هر آنچه با کلید خصوصی دارنده گواهی امضا شد، حتما توسط همان فرد یا دستگاه امضا شده است.
زیرساخت کلید عمومی، دنیای دیجیتالی ما را از طریق حفاظت از دادهها و ارتباطات حساس و احراز هویت دیجیتالی به جایی امن تبدیل کرده است. همزمان با رشد انفجاری تعداد تجهیزات و برنامههای متصل، اهمیت این بستر امنیتساز نیز در حال رشد است.