الگوریتم رمزنگاری rsa یک رمزنگاری نامتقارن است که در این پست قبلا به رمزنگاری های نامتقارن اشاره داشتیم. رمزنگاری rsa محبوب ترین الگوریتم رمزنگاری نامتقارن است.در ادامه به الگوریتم این رمزنگاری میپردازیم.
ما برای رمزنگاری دیتا نیاز به کلید عمومی(public key) و برای رمزگشایی دیتا نیاز به کلید خصوصی ( private key) نیاز داریم برای ساخت این کلید ما دو عدد رندم اول(هرچه بزرگ تر امنیت بیشتر) انتخاب میکنیم ما برای درک بهتر از اعداد کوچیک استفاده میکنیم:
درهم ضربشون میکنیم p*q=n که جواب میشه 200701 و تابع فی شون رو حساب میکنیم :
جواب میشه 200701 حالا یک عدد بین n و j انتخاب میکنیم با دو شرط زیر:
پس e = 98447 قرار میدیم.حالا عددی رو باید با این شرط انتخاب کنیم که ضربش در e باقی موندش با j برابر با یک باشه با این شرط عدد d = 154007 قرار میدیم حالا ما چی داریم
ما e کیلید مشترک در نظر میگیریم
ما کلید خصوصی و عمومی رو تولید کردیم و میریم برای رمزنگاری دیتا.
برای رمزنگاری دیتا ما اول میام اونو به توان e و بعد باقی موندشو با n حساب میکنیم فکر کنید ما 10 میخوایم رمزنگاری کنیم باید به شکل زیر عمل کنیم:
متن رمز شده ما شد 43044 حالا میخوایم رمزگشای کنیم.
برای رمزگشایی دیتای رمز شده باید به این شکل عمل کنیم.CP به توان e برسونیم و باقی موندشو با d حساب کنیم:
و ما دیتا رمزنگاری شده رو رمزگشایی کردیم.
واقعیت اینه که همه الگوریتم های رمزنگاری قابل شکستن هستن مهم مدت زمان شکستن و امکانات است در مورد الگورتیم rsa از روش های زیر برای شکستن کلید میتوان استفاده کرد:
درباره همه این روش ها در پست های بعد توضیح میدم.
مدت زمان کرک کلید های کوتاه:
128Bit = 0.48s
192Bit = 3s
256Bit = 103s
300Bit = 117s
اعداد اول ساخته شده توسط توابع RNG برای ساخت اعداد اول کاملا رندم نیستند و محدود هستن.
نیاز به پردازش زیادی به نسبت رمزنگاری های متقارن دارند و کند تر عمل میکند.
طول دیتا باید کمتر از کلید باشد.
در پست های بعد به حملاتی که روی rsa انجام میشود صحبت میکنیم.
به امید دیدار.