متین لطیفی
متین لطیفی
خواندن ۴ دقیقه·۴ سال پیش

آشنایی با الگوریتم RSA به زبان ساده

<MT programming/> سلام دوستان ? <MT programming>


همونطور که باهم توی ویدئوی آشنایی با رمزنگاری (Cryptography) در 5 دقیقه دیدیم...

ندیدین ؟! ?

https://vrgl.ir/stESA

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

الگوریتم RSA هم از اولین و پرکاربردترین الگوریتم ها برای این روشه

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

اما اگر دوست دارین دلیل تک تک مراحل رو بدونید میتونید ویدئوی این آموزش رو هم توی آپارات و یوتوب ببینید که اونجا به توضیحات و بررسی خیلی خیلی بیشتری میپردازیم و مثال های بیشتری رو با هم میبینیم


اما الگوریتم RSA چطوری کار میکنه ؟!

  • 1. اول از همه دوتا عدد اول نامساوی خیلی بزرگ انتخاب میکنیم ( اینکه این اعداد اولمون خیلی بزرگ باشن خیــــــــــلی مهمه و هرچی بزرگتر === امنیت بیشتر)

اما بیایم بخاطر اینکه آسونتر باشه و محاسباتمون راحت تر بشه اعداد خیلی کوچیک انتخاب کنیم !

بطور مثال :

p= 2 ,q = 7
  • 2. حاصل ضربشون رو بدست میاریم
n = 2 × 7 = 14


  • 3. محاسبه تابع فی حاصل ضرب
ϕ ( n ) = (p-1)(q-1) = 1 × 6 = 6


  • 4. یک عدد با 2 شرط زیر را انتخاب میکنیم :

1: عدد بین 1 وϕ ( n ) باشد

2: عدد انتخابی نسبت به n و ϕ ( n ) اول باشد ( هیچ مقسوم علیه مشترکی جز یک نداشته باشند)

پس e (همون عددی که قراره انتخاب کنیم )باید بین 1 تا 6 باشه و بخاطر شرط دوم اعداد زوجمون و3 چون عامل مشترک با n و ϕ ( n ) دارن حذف میشن و در نتیجه فقط 5 میمونه پس :
e = 5
  • 5. حالا در مرحله آخر یک عدد با شرط زیر را انتخاب میکنیم :

حاصل باقیمانده تقسیم ، ضرب اون عدد در e نسبت بهϕ ( n ) برابر یک باشه !

اما این یعنی چی ؟؟! یعنی باید بیایم عدد d رو جوری پیدا کنیم که توی این شرط صدق کنه :

d × e ( mod ϕ ( n )) = 1

پس برای d هم میتونیم 11 رو داشته باشیم چرا ؟ چون :

11 × 5 = 55
55 mod(6) = 1

حالا در نهایت چی داریم ؟

n = 14 ,
e = 5 ,
d = 11

طبق الگوریتم RSA از e و n بعنوان کلید عمومی و از e و d بعنوان کلید خصوصی استفاده میکنیم

کلید عمومی = (14 و 5 )

کلید خصوصی = (14 و 11)


مثال :

فرض کنید پیامی که میخوایم برای دوستمون بفرستیم عدد 2 هست


حالا با استفاده از کلید عمومی دوستمون که قبلا برامون فرستاده(کلید عمومی = (14 و 5 )) میایم : 2 رو به توان 5 میرسونیم و باقیماندشو نسبت به 14 حساب میکنیم :
2^5 = 32
32 mod (14 ) = 4

پس پیام رمز گذاری شدمون میشه 4 .

اما حالا دوستمون با استفاده از کلید خصوصی ای (کلید خصوصی = (14 و 11) )که فقط و فقط خودش داره میاد اون رو رمز گشایی میکنه :

پس 4 رو به توان 11 میرسونه و و باقیماندشو نسبت به 14 حساب میکنه :
4^11 = 4,194,304
4,194,304 mod (14 ) = 2

و اینطوری متوجه میشه که پیام ما عدد 2 بوده ...




ویدئو این آموزش رو از دست ندین : ( آپارات و یوتوب )

https://youtu.be/pxdXY1GM9r0


<MT programming/> ?حال دلتون خوب <MT programming>

رمزنگاریرمزنگاری نامتقارنrsaامنیت
std::cout<<"computer engineer "/n print("AR && Web Developer ,... ") <interest>"information security "&& "network security" </interest>
شاید از این پست‌ها خوشتان بیاید