چالش Symmetric RSA¶

صورت سوال¶
با توجه به عنوان سوال پی میبریم که با رمزنگاری RSA سرو کار داریم. حالا میگه رمزنگاری RSA متقارن؟ یعنی چی مگه RSA نامتقارن نبود؟ منظورش چی میتونه باشه؟
یه فایل پایتون بهمون دادن که محتواش اینه:
chall.py | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
جالب اینجاست که یکی از فاکتورهای e, n هست. در ابتدا میاد فلگو رمز میکنه و در خروجی نمایش میده و بعدش ۴ بار اجازه داریم هر متنی که دوست داریم رمز کنیم و هر بار برامون رمز رو چاپ میکنه.
روش حل¶
خب در اولین مرحله خیلی خوبه که بیایم یه یادآوری کنیم از قضیه Fermat's little :
قضیه Fermat's little
در نظریه اعداد این قضیه نشان میدهد که اگر p عددی اول باشد آنگاه برای هر عدد صحیح a عدد a^{p} - a یک عدد صحیح مضربی از p هست. اگر بخواهیم به صورت حساب پیمانه ای نمایش بدهیم داریم:
حالا شما در نظر بگیرید به جای a پیام رو قرار بدیم و از اونطرف p = e (طبق فرض سوال) همچنان داریم:
خب جالب شد ولی دقت کنید که ماژول ما اینجا N هست و نه p. ولی میتونیم به چیزی که میخوایم برسیم با این حساب داریم:
حالا داستان اینه که ما p که همون p=e باشه رو که نداریم! پس باید بریم و p رو بدست بیاریم.
توجه کنید که دیدیم:
حالا همانطور که توی بررسی صورت سوال دیدیم اجازه داریم ۴ بار هر پیامی رو که دوست داشتیم رمز کنیم. دیگه چی از این بهتر؟!
حالا میایمو هر بار یه پیام رو رمز میکنیم و بعدش از پیام رو از رمز کم میکنیم و بعد میایم GCD (بزرگترین مقسوم علیه مشترک) رو میگیریم و با این کار p محاسبه میشه!
حالا میایم GCD میگیریم:
و حالا به راحتی پیام رمز شده اصلی رو با استفاده از (\ref{eq:1}) بدست میاریم:
solve.py | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
روش حل دوم
میدونستید که اگر عدد منفی 1 رو به جای یکی از پیامها ارسال میکردیم و با توجه به اینکه e یک عدد فرد اول هست خروجی برابر بود با:
بنابراین میتونستیم به راحتی N رو محاسبه کنیم و بعد از اینکه p=e رو بدست آوردیم q رو محاسبه کنیم و بعدش کلید خصوصی رو بدست بیاریم و تمام!
FLAG 
LITCTF{ju57_u53_e=65537_00a144ca}
نویسنده