رمزنگاری کلید عمومی یا رمزنگاری نامتقارن چیست؟ آشنایی با رمزنگاری نامتقارن و کاربرد آن

2 189
۵/۵ - (۷ امتیاز)

فهرست

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

مروری مختصر بر رمزنگاری کلید خصوصی یا رمزنگاری متقارن

قبل از ورود به رمزنگاری کلید عمومی (Public Key Cryptography / Public Key Encryption) مروری ساده بر رمزنگاری کلید خصوصی یا همان رمزنگاری متقارن انجام می دهیم. به تصویر زیر دقت کنید:

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

آلیس پیام x را با کلید k در بلوک رمزنگاری e رمزکرده و نتیجه را به صورت y ارسال می کند. همانطور که می دانیم به x متن فاش یا ساده (Plaintext) و به y متن رمز شده (Ciphertext) می گویند. وقتی باب y را دریافت می کند آن را با همان کلید k وارد بلوک رمزگشایی e می کند و متن فاش x را تحویل می گیرد. نکته ای که در اینجا وجود دارد کلید k بین آلیس و باب مشترک است و به همین دلیل به ای نوع رمزنگاری، رمزنگاری متقارن (Symmetric Cryptography) می گویند. از طرف دیگر الگوریتم رمزنگاری با الگوریتم رمزگشایی شباهت بسیاری دارند.
در دنیای واقعی این نوع رمزنگاری را می توان در مورد گاوصندوق در نظر گرفت. یک گاوصندوق را در نظر بگیرید که دارای یک کلید است که آلیس و باب یک کپی از آن کلید را در اختیار دارند. آلیس نامه ای برای باب نوشته، آن را درون گاوصندوق گذاشته و درب آن را قفل می کند. پس از آن باب با کلید خود درب گاوصندوق را باز کرده و نامه را برمیدارد.
در رمزنگاری متقارن برخلاف رمزنگاری نامتقارن، بین ورودی و خروجی یک توصیف ریاضی فشرده وجود ندارد. حتی اگر در بلوک های مختلف مثل S-Box ها در AES ساختار ریاضی وجود داشته باشد، خروجی یک توصیف ریاضی فشرده از ورودی را ارائه نمی دهد.

محدودیت ها و مشکلات رمزنگاری متقارن

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

توزیع کلید

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

تعدد کلیدها

فرض کنید سه نفر قصد دارند دو به دو با هم به صورت امن مکاتبه کنند. طبیعتا این عمل نیاز به حداقل ۳ کلید دارد به طور کلی برای ارتباط امن بین n نفر نیاز به

    \[    \frac{n(n-1)}{2} \]

زوج کلید وجود دارد و هر یک از افراد باید n-۱ کلید را به صورت امن نگهداری کنند که این خود چالش بزرگی است. حال فرض کنید در یک سازمان ۲۰۰۰ نفر وجود داشته باشند. در این سازمان تقریبا نیاز به ۲ میلیون زوج کلید وجود دارد که باید ایجاد و تحت یک کانال امن ارسال شوند.

انکارپذیری

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

رمزنگاری کلید عمومی یا رمزنگاری نامتقارن

برای فائق آمدن بر این محدودیت ها، دیفی، هلمن و مرکل یک پیشنهادنامه ارائه کردند که انقلابی در امنیت اطلاعات به وجود آورد. آن ها گفتند لازم نیست کلیدی که عملیات رمزنگاری را انجام می دهد خصوصی باشد. در این صورت کلید رمزنگاری یک مولفه می تواند عمومی باشد که هر کس خواست با آن عملیات رمزنگاری را انجام دهد. متناظر با این کلید یک کلید خصوصی وجود دارد که عملیات رمزگشایی را انجام می دهد که به صورت خصوصی نگهداری می شود. پس می توان کلید در رمزنگاری کلید عمومی یا رمزنگاری نامتقارن را یک کلید شامل دو بخش در نظر گرفت. یک بخش که بخش عمومی کلید است (kpub) و بخش دیگر بخش خصوصی کلید(kpr). شمایی از این نوع رمزنگاری را در شکل زیر مشاهده می کنیم:

رمزنگاری کلید عمومی

در این شکل مشاهده می کنیم باب دارای بخش عمومی کلید خود را (کلید عمومی) را برای آلیس ارسال می کند (می تواند در پروفایل خود در شبکه های اجتماعی با دیگران به اشتراک بگذارد). آلیس کلید عمومی باب را دریافت کرده و متن x را رمز می کند. متن رمزشده y را برای باب ارسال می کند و باب با استفاده از بخش خصوصی کلید خود آن را رمزگشایی می کند. طبیعی است که در این رمزنگاری باید محاسبه y از روی x بسیار ساده باشد اما محاسبه x از روی y بدون داشتن kpr به لحاظ محاسباتی غیرممکن باشد (در مورد الگوریتم های کوانتومی بعدا صحبت می کنیم). در ادامه مفاهیمی را معرفی می کنیم که برای یک سیستم رمزنگاری کلید عمومی به آن ها نیاز داریم.

تابع یک طرفه یا One-way Function

تابع f که ورودی x را دریافت کرده و خروجی y را برمیگرداند را در نظر بگیرید:

    \[    f(x)=y \]

این تابع یک تابع یک طرفه است اگر محاسبه y با داشتن x بسیار ساده باشد یعنی:

    \[    f(x)=y \]

عمل ساده ای باشد اما محاسبه x از روی y عملی باشد که به لحاظ محاسباتی با تکنولوژی فعلی غیرممکن باشد یعنی:

    \[    f^{-1}(y)=x \]

برای مثال SHA-512 یا به طور کلی توابع چکیده ساز یا هش (Hash Function) توابعی یک طرفه هستند.

تابع دریچه دار یا Trapdoor Function

تابع g که ورودی x را دریافت کرده و خروجی y را برمیگرداند را در نظر بگیرید:

    \[    g(x)=y \]

این تابع یک تابع یک طرفه است اگر محاسبه y با داشتن x بسیار ساده باشد یعنی:

    \[    g(x)=y \]

عمل ساده ای باشد اما محاسبه x از روی y  بدون داشتن یک دریچه (Trapdoor) عملی باشد که به لحاظ محاسباتی با تکنولوژی فعلی غیرممکن و با داشتن یک دریچه عمل ساده باشد.
توجه شود که توابع رمزنگاری در رمزنگاری کلید عمومی توابع دریچه دار یا Trapdoor Function هستند نه توابع یک طرفه! دریچه این توابع همان بخش خصوصی کلید یا کلید خصوصی می باشد که با داشتن آن عمل رمزگشایی به سادگی انجام پذیر است و در صورت نداشتن آن عملیات رمزگشایی عملیاتی است که به لحاظ محاسباتی با تکنولوژی فعلی غیرممکن است.

سخن پایانی

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

درباره ما

ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
دوره‌های آکادمی ترجنس | courses.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence

2 نظرات
  1. Samaneh_Zemni_M
    Samaneh_Zemni_M می گوید

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

    1. C983RC0113C70R
      C983RC0113C70R می گوید

      ممنون.
      به طور کلی exponent یک گروه متناهی، order گروه رو عاد میکنه. کارمیشل exponent یک گروه ضربی اعداد صحیح به پیمانه n هست و فی order گروه. بنابراین کارمیشل، فی رو عاد میکنه.

ارسال یک پاسخ