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

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

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

گواهینامه دیجیتالی

گواهینامه دیجیتالی حاوی پاره ای از اطلاعات در خصوص کاربر ، تاریخ صدور و انقضاء و از همه مهمتر کلید عمومی کاربر است.سازمان صادر کننده گواهی دیجیتالی را  CA:certificate Authority  می نامند که پس ازصدور گواهینامه و استخراج چکیده محتویات گواهینامه ، آن را با کلید خصوصی خود امضاء (رمز) می کند.سپس گواهینامه را به هر روش دلخواه (مثل ذخیره روی کارتهای هوشمند ، دیسک فشرده  یا فلاپی) به کاربر تسلیم می نماید. مهمترین بخش قضیه آن است که افراد با مراجعه حضوری یا روشی مطمئن ، پس از تسلیم مدارک مورد نیاز، هویت خود را اثبات  و با پرداخت هزینه اندک، گواهینامه خود را دریافت می کنند. فرض بر آن است که مرکز گواهی امضاء (CA) همان لحظه ای که گواهینامه فرد را به او تسلیم میکند کلید عمومی خود را نیز به کاربر می دهد تا کاربر کلید عمومی این مرکز را از طریق محیطهای نا امن مثل وب سایتها یا e-mail در یافت نکند.

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

اما یکی از چالشهای پیش روی گواهینامه های دیجیتالی آن است که محتوای این گواهینامه ها (بغیر از وجود کلید عمومی که جزء لاینفک آن است) بسته به نوع کاربرد متفاوت است. بعنوان مثال گواهینامه برای مشتری یک بانک با گواهینامه برای دانشجوی یک دانشگاه یا حتی گواهینامه برای یک شیء که می تواند حتی یک فایل باشد ، با یکدیگر متفاوتند زیرااطلاعات مورد نیاز برای این گواهینامه از هم متفاوتند. برای مثال یکی شماره حساب و رمز عبور کارت اعتباری را داراست و دیگری شماره دانشجویی و اطلاعاتی از این قبیل را در خود دارد.

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

استاندارد  X.509  برای گواهینامه های دیجیتالی

این استاندارد در سال ١٩٨٨ توسط ITU-T  بمنظور ایجاد یک شکل متحد و یکنواخت جهانی برای گواهینامه های دیجیتالی تصویب و معرفی شد. این استاندارد که امروزه کاربرد بسیار گسترده ای یافته است تا به امروز سه بار بهبود یافته و اکنون نسخه سوم آن با ویژگیهای فراوان و انعطاف پذیری چشمگیر در دسترس عموم است. در این استاندارد مرکز صدور گواهینامه باید برای یک شخص حقیقی یا حقوقی  یا برای یک آدرس پست الکتونیکی ، آدرس DNS یا اشیاء گواهینامه  X.509 با ساختار استاندارد، تولید و آن را امضاء کند.در حقیقت X.509 روشی برای تعریف و تبیین گواهینامه های دیجیتالی است.فیلدهای یک گواهینامه  X.509 به ترتیب عبارتند از:

    • 6.1.Algorithm Identifier

      6.2.Public Key Value

1.Version Number

2.Certificate Serial Number

2.Signature Algorithm ID

3.Issuer X.500 Name

4.Validity Period

5.Subject X.500 Name

6.Subject Public Key Information

7.Issuer Unique Identifier

8.Extentions

9.Certification Authority’s Digital Signature

استاندارد X.500

x.500  مجمو عه ای از استاندارد ها ی ارائه شده توسط ITU-T  است که Directory Service  را به دقت توصیف می کند .سازمان جهانی ISO نیز در تدوین این مجموعه استاندارد سهیم بود تا آن را به عنوان بخشی از مدل هفت لایه ای OSI برای شبکه های کامپیوتری بکار گیرد ، لذا این استاندارد به نام  ISO/IEC 9594 نیز شناخته می شود. X.500 یک استاندارد نام گذاری صرف نیست بلکه به دلیل نیاز به نامگذاری دقیق اشیاء در سیستم دایرکتوری ،یک قرارداد نامگذاری در بطن آن پیش بینی شده که بعدا در دیگر استانداردها مورد استفاده قرار گرفت. توجه شود که X.509  به عنوان استانداردی برای احراز هویت در مجموعه سیستم دایرکتوری تعریف شده در حالی اکنون خارج از سیستم دایرکتوری ، موفقترین استاندارد برای صدور گواهینامه  های دیجیتالی به شمار می رود.در X.500 اسامی بصورت سلسله مراتبی و کامل توصیف می شوند. بعنوان مثال  /C=US/O=Sun/OU=People/CN=Rose Lee  یک نام سلسله مراتبی بر اساس X.500 است که سلسله مراتب آن با / از هم جدا شده اند.

PKI : زیرساخت کلید عمومی

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

بهترین رویکرد برای صدور گواهینامه های دیجیتالی روشی است که به زیرساخت کلید عمومی یا PKI (Publik Key Infrastructure)  شهرت یافته و یک الگوی سلسله مراتبی  (درختی) به شمار می رود.

الگوی سلسله مراتبی PKI در صدور گواهینامه

در شکل فوق فرض را بر این بگذارید که یک مرکز جهانی و مورد وثوق همگان وجود دارد که  در عالیترین سطح برای سطح دوم گواهینامه صادر می کند. این مرکز جهانی (که می تواند بیش از یکی باشد) ریشه (Root)نام دارد که بر اساس ضوابط و توافقات بین المللی اداره می گردد. این مرکز برای شعبات خود در کشورهای مختلف گواهینامه دیجیتالی صادر کرده و درون این گواهینامه ، کلید عمومی آنها را تایید می کند. تمام این مراکز میانی ، زوج کلید عمومی و خصوصی خود را به دلخواه انتخاب کرده و کلید عمومی خود را به کمک یک گواهینامه X.509 که توسط ریشه امضاء شده در اختیار همه قرار می دهند. این مراکز را شعبات مجاز صدور گواهی (Subordinate Certificate Authority) ، در کشورهای مختلف تلقی کنید. این شعبات نیز خودشان در ایالات و استانها و شهرهای بزرگ شعبه خواهند داشت. بدین ترتیب در سطح سوم مراکز مجاز منطقه ای (Regional Certificate Authority) بوجود می آیند. مراکز منطقه ای خود از مراکز استانی ، گواهینامه در یافت کرده و کلیدهای عمومی خود را درون آنها تایید می کنند. این مراکز می توانند مستقیما برای کاربران گواهینامه صادر کنند و یا می توانند خود در شهرهای کوچک و مناطق مختلف، شعباتی تاسیس و گواهینامه های این شعبات را امضاء کنند. به هر حال در آخرین سطح، کاربران معمولی با مراجعه به یکی از این مراکز مجاز و طی تشریفات پیش بینی شده در قانون، گواهینامه ای دریافت و کلید عمومی خود رادرون آن درج و گواهی می کنند.

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

الف) نرم افزار بررسی کننده اعتبار گواهینامه ،کارش را با دریافت گواهینامه X.509 متعلق به یک کاربر فرضی آغاز می کند. گواهینامه باب گذشته از مشخصات کلی او ، کلید عمومی او را نیز شامل شده و همچنین هویت مرکزی که این گواهینامه را صادر کرده درون آن مشخص است. در اولین گام باید کلید عمومی مرکز صادر کننده گواهینامه بدست آید تا ضمن رمزگشایی امضای گواهینامه و مقایسه آن با چکیده محتوای آن ، جعلی نبودن گواهینامه احراز شود. بدین ترتیب نرم افزار بررسی کننده اعتبار، کار را نیمه تمام باقی گذارده تا قبل از هر چیز ، گواهینامه مرکز صدور این گواهی را بدست آورد و کلید عمومی آن مرکز را مشخص کند.

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

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