Transcript mod q
رمزنگاری نامتقارن کلید عمومی
• تنها چند الگوریتم کلید عمومی هم امن و هم کاربردی هستند.
الگوریتم زیر برای رمزنگاری و امضای دیجیتال مناسب هستند:
– )RSA (1978
– )ElGamal (1985
– )Schnorr (1990
– )ECC (1985
– ) DSA (1991تنها برای امضای دیجیتال مفید است.
تبادل کلید Diffie–Hellman
–
–
•
:qعددی اول
:αعنصر اولیه ای از q
برای هر عدد صحیح ،Yعدد منحصر بفرد xرا پیدا می کنیم که
:
Y ≡ αX (mod q), 1 <= X <= q − 1
•
بنابراین:
X = log αY over GF(q), 1 <= Y <= q − 1
•
محاسبه Yاز Xنسبتا ً ساده بوده اما محاسبه Xاز Yبسیار مشکل
است
گام های Diffie–Hellman
•
•
•
مقادیر عمومیq, α, Yi, Yj:
مقادیر خصوصیXi, Xj :
کلید محرمانهKij :
.1
.2
.3
کاربر iعدد صحیح تصادفی Xiرا انتخاب می کند.
کاربر jعدد صحیح تصادفی Xjرا انتخاب می کند.
کاربر iمقدار Xiرا محرمانه نگه داشته ،اما مقدار )Yi ≡ αXi (mod qرا برای کاربر j
ارسال می کند.
کاربر jمقدار Xjرا محرمانه نگه داشته ،اما مقدار )Yj ≡ αXi (mod qرا برای کاربر i
ارسال می کند.
هر دو کاربر iو jمقدار را به عنوان کلید مشترک محاسبه می کنند..
.4
.5
– کاربر :i
)(mod q
αXiXj
≡ )(mod q
(αXj )Xi
≡ )(mod q
– کاربر :j
)Kij ≡ YiXj (mod q)≡ (αXi )Xj ≡ αXiXj (mod q
YjXi
≡ Kij
مثال
•
α = 2و q = 11
2λ (1<=λ<=10): 21 22 23 24 25 26 27 28 29 210 .1
2λ (mod 11) : 2 4 8 5 10 9 7 3 6 1 .2
.3کاربر Xi = 5 ،iرا انتخاب می کند.
.4کاربر iمقدار Yi ≡ αXi (mod q)≡ 25 (mod 11) ≡ 10را برای کاربر jارسال می کند.
.5کاربر Xj = 7 ،jرا انتخاب می کند.
.6کاربر jمقدار Yj ≡ αXj (mod q)≡ 27 (mod 11) ≡ 7را برای کاربر iارسال می کند.
.7در نهایت کاربر iو jکلید مشترک را حساب می کنند.
.8کاربر Kij ≡ YjXi (mod q) ≡ 75 (mod 11) ≡ 10 :i
.9کاربر Kji ≡ Yixj (mod q) ≡ 107 (mod 11) ≡ 10:j
الگوریتم رمزنگاری RSA
•
pو qدو عدد اول بزرگ
.1
n = pq
.2
)φ(n) = (p − 1)(q − 1
.3
eبه نحوی که eو ) φ(nنسبت به هم اول باشند
.4کلید رمزگشایی dبه صورت زیر محاسبه می شود
–
))d ≡ e−1 (mod φ(n
–
))or ed ≡ 1 (mod φ(n
کلید عمومی :
(nحاصل ضرب دو عدد اول pو )q
•
(eکلید رمز ،نسبتا ً اول با ))φ(n) = (p − 1)(q − 1
•
کلید خصوصی:
( dکلید رمزگشایی) d ≡ e−1 (mod φ(n)) ،
•
رمزنگاری:
)c ≡ me (mod n
•
رمزگشایی:
)m ≡ cd (mod n
•
–
)cd ≡ (me)d ≡ med ≡ m (mod n
در پیاده سازی سخت افزاری 1000 RSAمرتبه از DESکندتر است.
امنیت RSAبه سختی عمل فاکتور گیری اعداد بزرک بستگی دارد .در حال
حاضر nباید عددی بزرگ تر از 129رقمی باشد.
مثال
–
p = 17و q = 31
.1
n = pq = 17 × 31 = 527
.2
φ(n) = (p − 1)(q − 1) = 16 × 30 = 480
•
اگر e=7انتخاب شود:
.3
d ≡ e−1 (mod φ(n)) ≡ 7−1 (mod 480) ≡ 343ed≡7 × 343 (mod 480) ≡2401
(mod 480) ≡ 1بنابراین d=7
–
.4
c ≡ me (mod n) ≡ 27 (mod 527) ≡ 128
–
.5
کلید عمومی ) (e, nبرای رمزنگاری پیام mالزم است ،اگر m=2باشد:
کلید خصوصی dبرای رمزگشایی الزم است:
m ≡ cd (mod n)≡ 128343 (mod 527) ≡ 2
Example
• پیام‘INFORMATION SECURITY’ :
• پیام بر اساس جدول انکد میشود
)– m = (0914061518130120091514001905032118092025
• p = 47و q = 71انتخاب شده و بنابراین = pq = 47 × 71
3337
– φ(n) = (p − 1)(q − 1) = 46 × 70 = 3220
• پیام اصلی به بلوک های چهار رقمی شکسته می شود
– 0914 0615 1813 0120 0915
– 1400 1905 0321 1809 2025
• بر اساس d ≡ e−1 (mod φ(n)) ≡ 79−1 (mod 3220) ≡ 1019
مقدار e = 79انتخاب میشود.
• رمزنگاری بلوک اول:
– c1 ≡ m1e (mod n)≡ 91479 (mod 3337)≡ 3223
امضای RSA
•
اگر کاربر Aبخواهد پیام را کلید خصوصی خود امضا کند:
ϕ(nA) ≡ lcm (pA − 1, qA − 1) .1
•
.2
) (eA, dAبه نحوی که ))eA•dA ≡ 1 (mod ϕ(nA
•
.3
: dAکلید خصوصی A
پیام امضا شده:
•
•
lcmبه معنای کوچکترین مضرب مشترک است.
)c ≡ mdA (mod nA
nAو eAبه عنوان کلید عمومی منتشر میشود
مثال
• p = 11و q = 17بنابراینn=pq =187 :
• ϕ(n) = lcm (p − 1, q − 1)=lcm (10, 16) = 80
• eA = 27انتخاب می شود به نحوی که :
• eAdA≡1(mod (nA)) 27dA≡1(mod80) dA=3
• فرض کنید پیام اصلی m=55
• امضای پیام:
• c ≡ mdA (mod 187)≡ 553 (mod 187) ≡ 132
• ایجاد مجدد پیام:
• m ≡ ceA (mod n) ≡ 13227 (mod 187) ≡ 55
مثال
•
اگر طول پیام خیلی بزرگ باشد ،برای افزایش کارایی ابتدا خالصه پیام را با کمک RSA
محاسبه کرده و سپس پیام خالصه شده را امضا میکنیم.
.1برای محاسبه خالصه پیام m = 75139
)h ≡ H(m) (mod n
)≡ H(75139) (mod 187
≡ 86a0aab5631e729b0730757b0770947307d9f597
)≡ 768587753333627872847426508024461003561962698135(mod 187
(decimal) ≡ 11
.2کاربر Aمقدار hرا با کلید خصوصی dAامضا می کند:
c ≡ hdA (mod n)≡113 (mod 187) ≡ 22
•
برای بررسی اعتبار امضا داریم:
h ≡ ceA (mod n) ≡ 2227 (mod 187) ≡ 11