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