rohola zandie
rohola zandie
خواندن ۴ دقیقه·۴ سال پیش

رمزنگاری: رمزنگاری نامتقارن (قسمت ۲)


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

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


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

روش های زیادی برای رمز نگاری نامتقارن وجود دارد که در اینجا مهمترین آن را بررسی می کنیم. این الگوریتم به اسم RSA شناخته می شود و در قلب مهمترین سیستم های رمزنگاری امروزی است.


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

تمام شد! کلید عمومی اینجا n و e است. و کلید خصوصی d


حالا چطور پیام ها را رمز کنیم و باز کنیم؟

برای رمز کردن پیام ابتدا فرهاد بعد از دیدن کلید عمومی شیرین که n و e است. پیام خود M را تبدیل به یک عدد مثل m می کند(مثلا کد ASCII که در کامپیوتر ها هم استفاده می شود) و سپس c را محاسبه می کند:

و سپس c که پیام رمزشده و ناخوانا برای غیر است را می تواند با خیال راحت از یک کانال نا امن (مثل فریاد زدن آن!!) به شیرین برساند.

شیرین پس از دریافت c با ذوق و شوق تمام می تواند از کلید خصوصی خودش یعنی d استفاده کرده تا پیام فرهاد را باز بیابد.

قدرت RSA بر این اساس است که شما نمی توانید صرفا با داشتن کلید عمومی کلید خصوصی را بدست بیاورید.

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

کد متلب پیاده سازی RSA


شاید از این پست‌ها خوشتان بیاید