نظرات اخیر

    زیرساخت کلید عمومی (بخش اول): مقدمه ای بر رمزنگاری و امضا

    زیرساخت کلید عمومی یا همان PKI یک مؤلفه امنیتی محسوب می شود. PKI برای مقاصد مختلفی نظیر رمزنگاری، امضا یا تعیین اعتبار، گواهینامه ها را امضا می کند. به دلیل این که PKI مؤلفه ای امنیتی است، راه حل ارائه شده باید پاسخگوی این سه معیار باشد:

    • محرمانگی (Confidentiality): محرمانگی به این معناست که فقط دریافت کننده مورد نظر بتواند اطلاعات را بخواند؛
    • اصالت (Authenticity): اصالت برای این است که تضمین شود اطلاعات وارده از سوی منتشر کننده ای است که مدعی بر ارسال اطلاعات است؛
    • یکپارچگی (Integrity): یکپارچگی مکانیزم های اعتبارسنجی اطلاعات تغییر نیافته است.

    ما در این بخش به نحوه پاسخگویی به این معیارها با مکانیزم های فنی همچون رمزنگاری، امضا یا بررسی یکپارچگی می پردازیم.

     

    محرمانگی

    چرا رمزنگاری انجام می شود؟

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

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

    نمونه رمزنگاری با کد سزار

    کد سزار (Caesar) توسط ژولیوس سزار (Julius Caesar) و برای ارسال دستورات نظامی به لشکریانش ایجاد شد. این الگوریتم بر اساس حروف الفبا به فرمت متن معمولی و یک کلید عددی عمل می کند. برای رمزنگاری پیام، حرف الفبایی با مقدار کلید به راست یا چپ شیفت داده می شود. برای مثال در شکل می توانید شیفت راست سه تایی کلید را مشاهده کنید:

    مقدمه ای بر رمزنگاری و امضا

    شکل 1. کد سزار

    • حروف الفبای ساده: abcdefghijklmnopqrstuvxyz
    • حروف الفبای رمزنگاری شده: defghijklmnopqrstuvxyzabc

    مثال:

    • پیام رمزنگاری شده: Pb phvvdjh lv hqfubsxhg
    • پیام با متن معمولی: My message is encrypted

    مشکل اصلی این الگوریتم رمزنگاری این است که به راحتی شکسته می شود. مثلاً در مثال بالا می توانید از حرفی که اغلب برای شکستن رمز مورد استفاده قرار می گیرد استفاده کنید. علاوه بر این در صورت کوچک بودن کلمه، شکستن رمز بسیار ساده است. هر چه از یک کلید بیشتر استفاده کنید، شکستن آن ساده تر می شود. به این کار «بی اثر شدن کد» می گویند.

     

    تعریف کلید

    الگوریتم رمزنگاری مدرن درست مثل کد سزار از کلید استفاده می کند. کلید یک عدد تصادفی بسیار بلند است که توسط ماشین تولید می شود. این کلیدها برای رمزنگاری مورد استفاده قرار می گیرند. دو نوع کلید با نام های کلید خصوصی (Private Key) و کلید عمومی (Private Key) وجود دارد. هنگامی که از کلید عمومی استفاده می شود (با رمزنگاری نامتقارن مقایسه کنید)، از نظر ریاضی به کلید خصوصی مربوط می شود.

     

    رمزنگاری متقارن

    رمزنگاری متقارن بر اساس به کارگیری یک کلید خصوصی مشترک میان دو یا چند موجودیت عمل می کند:

    مقدمه ای بر رمزنگاری و امضا

    شکل 2. رمزنگاری متقارن

    Kpr کلید میان دو موجودیت به اشتراک گذاشته می شود. بدین طریق، اطلاعات با این کلید قابل رمزنگاری و رمزگشایی می شوند. اما هر چه کلید اختصاصی خود را بیشتر به اشتراک بگذارید، کمتر یک کلید اختصاصی محسوب می شود. به همین دلیل است که رمزنگاری نامتقارن ابداع شد. رمزنگاری متقارن در AES، 3DES، Blowfish، RC4 و … پیاده سازی می شود. معمولاً طول کلید کوتاه است و یک کلید با طول 256 بیت یک کلید قدرتمند محسوب می شود.

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

     

    رمزنگاری نامتقارن

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

    مقدمه ای بر رمزنگاری و امضا

    شکل 3. رمزنگاری نامتقارن

    کلید عمومی (Kpu) به متناظر خود ارسال می شود. این کلید برای رمزنگاری اطلاعات مورد استفاده قرار می گیرد. کلید خصوصی مربوطه (Kpr) برای رمزگشایی اطلاعات استفاده می شود. مورد آخر بسیار مهم است چون امکان رمزگشایی اطلاعات را فراهم می کند. رمزنگاری نامتقارن عموماً در RSA یا DH (دیف هیلمن) پیاده سازی می شود. معمولاً طول کلید بلند است و یک کلید حداقل 4096 بیتی برای کاربردهای امروزی توصیه می شود.

    مزیت اصلی رمزنگاری نامتقارن برخورداری از استحکام بسیار بالاست. اما این راه حل منابع زیادی از سیستم (عمدتاً پردازنده) را اشغال می کند و سرعت رمزنگاری پایین است.

     

    رمزنگاری مدرن

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

    الگوریتم مدرن برای رمزنگاری اطلاعات با رمزنگاری متقارن از کلید نشست (کلید موقتی) استفاده می کند. سپس کلید نشست با کلید عمومی گیرنده رمزنگاری می شود. برای رمزگشایی اطلاعات ابتدا گیرنده کلید نشست را با کلید خصوصی اش رمزگشایی کرده و با کلید نشست اطلاعات را رمزگشایی می کند.

    مقدمه ای بر رمزنگاری و امضا

    شکل 4. الگوریتم رمزنگاری مدرن

    کارهای زیر در سمت فرستنده انجام می شود:

    1. یک کلید موقتی با نام کلید نشست (Ks) تولید می شود؛
    2. اطلاعات با Ks رمزنگاری می شود؛
    3. سپس Ks با کلید عمومی (Kpu) مربوط به کلید خصوصی گیرنده رمزنگاری می شود. به این کلید Kse می گوییم.
    4. Kse به فایل اطلاعات رمزنگاری شده اضافه می شود. این فایل به گیرنده ارسال می شود.

    کارهای زیر در سمت گیرنده انجام می شود:

    1. اطلاعات رمزنگاری شده و Kse تفکیک می شوند؛
    2. کلید Kse با کلید خصوصی (Kpr) گیرنده رمزگشایی و به Ks تبدیل می شود.
    3. سند با Ks رمزگشایی می شود.

     

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

     

    یکپارچگی

    چرا یکپارچگی مورد بررسی قرار می گیرد؟

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

    گاهی اوقات دو اطلاعات متفاوت می تواند به یک ثامب پرینت ختم شود که به آن تصادم (collision) می گوییم. برای مثال MD5 آسیب پذیر است چون می توان هنگام نیاز تصادم ایجاد کرد. بنابراین مهاجم به راحتی می تواند این باور را ایجاد کند که اطلاعات تغییر نکرده است. از جمله مشهورترین الگوریتم ها می توان به SHA-256، SHA-1 یا MD5 اشاره کرد.

     

    ایجاد ثامب پرینت

    برای ایجاد ثامب پرینت، اطلاعات اولیه به ورودی الگوریتم هش ارسال می شود و در نتیجه یک دایجست ایجاد می شود.

    مقدمه ای بر رمزنگاری و امضا

    نمونه ثامب پرینت «I love Security»

    • MD5: f3f57004371b08ee73327ae2e5353958
    • SHA-1: 8c9855b2c81c1e3278a5ce6a771e5c3f74ee09b5
    • SHA-256: 1675cd4ee780f6cc04c6d3b54faa2de90fb5b18cdacc974dacf2d99d35307cce

     

    اصالت

    چرا امضا انجام می شود؟

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

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

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

     

    عملیات امضا

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

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

    مقدمه ای بر رمزنگاری و امضا

    شکل 5. عملیات امضا

     

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

     

    عملیات رمزنگاری و امضا

    حال که از رمزنگاری، الگوریتم هش و امضا اطلاعاتی بدست آوردیم، نگاهی به نحوه تعامل این موارد می اندازیم تا ببینیم چگونه اطلاعات را محرمانه، اصیل و قابل اطمینان می کنند.

    مقدمه ای بر رمزنگاری و امضا

    شکل 6. عملیات رمزنگاری و امضا

     

    هنگامی که امضا و رمزنگاری با هم استفاده می شوند، فرآیند امضا اولویت دارد. پس این مرحله با این ترتیب انجام می شود:

    • از اطلاعات اولیه یک دایجست ایجاد می شود؛
    • این ثامب پرینت با کلید خصوصی (Kprg) رمزنگاری می شود؛
    • ثامب پرینت به اطلاعات اولیه (در همان فایل) اضافه می شود؛
    • یک کلید نشست موقتی (Ks) تولید می شود. این کلید برای رمزنگاری اطلاعات اولیه به کار می رود؛
    • کلید نشست با کلید عمومی گیرنده (Kpub) رمزنگاری می شود (Kse)؛
    • Kse به فایل اطلاعات رمزنگاری شده اضافه می شود. در نتیجه این فایل حاوی اطلاعات رمزنگاری شده، Kse و امضاست.

     

    هنگامی که گیرنده فایل را از فرستنده دریافت می کند، کار را با رمزگشایی فایل آغاز می کند و پس از آن اعتبارسنجی امضا را انجام می دهد:

    • گیرنده Kse فایل دریافتی را استخراج می کند. این کلید با کلید خصوصی (Kprb) رمزگشایی می شود تا کلید نشست (Ks) بدست آید؛
    • برای اطلاعات رمزگشایی شده از Ks استفاده می شود؛
    • سپس گیرنده ثامب پرینت رمزنگاری شده را استخراج می کند؛
    • برای رمزگشایی ثامب پرینت از کلید عمومی (Kpug) استفاده می شود؛
    • در همین حال، گیرنده از اطلاعات رمزگشایی شده قبلی یک دایجست ایجاد می کند؛
    • در پایان گیرنده ثامب پرینت رمزگشایی شده را با دایجست ایجاد شده از اطلاعات رمزگشایی شده مقایسه می کند. اگر با هم منطبق بودند امضا تأیید می شود.

    مطالب مرتبط

    دیدگاهتان را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *