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) ≡ 343ed≡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‬‬