Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫فصل ‪ 5-‬نظرية االعداد والزمر‬


‫‪ 5.5‬مقدمة‬
‫تعتمد مناهج التشفير معلنة المفتاح على وجود مسائل رياضية يفترض ان تكون صعبة‪ .‬هذه المسائل هي مسائل عددية في طبيعتها‪ .‬لذا يحسن‬
‫ان نتعرف على االساس الرياضي لتلك المسائل‪ ،‬ومن ثم نعرض بعض االفتراضات الرياضية الصعبة‪ .‬ختاما سنقدم بعض خوارزميات اثبات اولية‬
‫االعداد‪ ،‬تحليل االعداد لعواملها االولية‪ ،‬وخوارزميات ايجاد اللوغاريتم المتقطع‪.‬‬

‫نظرية االعداد‬ ‫‪5.5‬‬


‫‪ 5.5.5‬االعداد االولية والقسمة‬
‫يشير الرمز ‪ ℤ‬لمجموعة االعداد الصحيحة‪.‬‬ ‫‪‬‬
‫يقسم ‪ b‬ويك تب بالصورة ‪ a|b‬اذا وجد عدد صحيح ‪ c‬بحيث ان ‪ ac = b‬وفي هذه الحالة‬
‫بالنسبة للعددين 𝕫 ∈ ‪ a, b‬فإن ‪ّ a‬‬ ‫‪‬‬
‫"مقسم" ‪ b‬او بكونه احد "عوامل" ‪.b‬‬
‫يعرف ‪ a‬بكونه ّ‬
‫يقسم ‪.b‬‬
‫نستخدم الرمز ‪ a ∤ b‬لالشارة الى ان ‪ a‬ال ّ‬ ‫‪‬‬

‫مثال(‪ :)5.1‬عندما ‪ b = 24‬فإن احد عوامله ‪ a = 4‬وذلك الن ‪.4*8=24‬‬


‫يقسمه سوى ‪ 1‬و‪ p‬نفسه‪.‬‬‫يعرف العدد الصحيح ‪ p > 1‬بانه عدد اولي ‪ prime‬اذا اليوجد اي عدد ّ‬ ‫‪‬‬
‫جميع االعداد الصحيحة التي هي اكبر من ‪ 1‬والتي ليست اعداد اوليه تدعى اعداد مركبة ‪.composite‬‬ ‫‪‬‬

‫تنص نظرية االعداد االساسية على ان اي عدد صحيح ‪ N > 1‬يمكن ان يك تب بصورة فريدة بالشكل ‪ ،N = ∏i pi ei‬بحيث } ‪{pi‬هي‬
‫اعداد اولية منفردة و‪ei ≥ 1‬‬
‫لجميع قيم ‪.i‬‬

‫‪ 5.5.5‬باقي القسمة‬
‫عندما يكون لدينا العدد صحيح ‪ a‬والعدد الصحيح الموجب ‪ ،b‬فانه يوجد اعداد صحيحة فريدة ‪ q‬و ‪ r‬بحيث ‪a = qb + r‬‬
‫و‪ .0 ≤ r < b‬يعرف العدد ‪ r‬بكونه باقي القسمة‪ ،‬والعدد ‪q‬يعرف بكونه ناتج القسمة‪.‬‬
‫مثال(‪ :)5.2‬عندما ‪ b = 15‬و‪ a = 4‬فان ‪q = 3‬و ‪.r = 3‬‬
‫تستخدم عملية ‪ mod‬لحساب باقي القسمة ويمكن صياغتها بالشكل‪:‬‬
‫‪.r = b mod a‬‬
‫مثال(‪ :)5.3‬لحساب ‪ ،101 mod 7‬نك تب ‪ ،101 = 7 × 14 + 3‬وبالتالي‪.101 mod 7 = 3 :‬‬
‫اما لحساب ‪ ،−101 mod 7‬فنك تب ‪ ،−101 = 7 × (−15) + 4‬وبالتالي ‪.−101 mod 7 = 4‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫‪ 5.5.5‬القاسم المشترك االعظم‬


‫‪ ‬عندما يكون لدينا عددين صحيحين غير سالبين ‪ a‬و ‪ b‬فإن القاسم المشترك االعظم لهما والذي يعرف ب )‪ gcd(a, b‬هو اكبرعدد‬
‫صحيح ‪ c‬بحيث ‪ c|a‬و ‪. c|b‬‬
‫‪ ‬عند احتساب )‪ gcd(a, b‬فاننا نفترض عادة ان ‪ .a, b ≥ 0‬الحظ‪ ،‬ان ‪ .gcd(a, 0) = gcd(0, a) = a‬عندما‬
‫يكون ‪ gcd(a, b) = 1‬فاننا نقول ان ‪ a‬و ‪ b‬هما ّ‬
‫"اوليان نسبيا" ‪.relative prime‬‬
‫خوارزمية اقليدس‪.‬تستخدم خوارزمية اقليدس ‪ Euclidean algorithm‬لحساب القاسم المشترك االعظم بين عددين موجبين ‪ a‬و ‪ .b‬تعتمد هذه‬
‫الخوارزمية على مبدا )‪ّ .gcd(a, b) = gcd(b, a mod b‬‬
‫توضح خوارزمية (‪ )5.1‬طريقة عمل هذه الخوارزمية‪.‬‬
‫ليس من الصعب مالحظة ان‬
‫‪،gcd(r0 , r1 ) = gcd(r1 , r2 ) = ⋯ = gcd(rm−1 , rm ) = rm‬‬

‫‪Algorithm (5.1): Euclidean algorithm‬‬


‫‪Input: a ≥ b > 1‬‬
‫)‪Output: gcd(a,b‬‬
‫‪r0 = a‬‬
‫‪r1 = b‬‬
‫‪m=1‬‬
‫‪while rm ≠ 0‬‬
‫‪-‬‬ ‫⌋ ‪qm = ⌊rm−1 ⁄rm‬‬
‫‪-‬‬ ‫‪rm+1 = rm−1 − qrm‬‬
‫‪-‬‬ ‫‪m=m+1‬‬
‫‪m=m−1‬‬
‫‪return rm‬‬

‫وبذلك فإن ‪.gcd(r0 , r1 ) = rm‬‬


‫مثال (‪ :)5.4‬لحساب القاسم المشترك االعظم بين العددين ‪ 1160718171‬و‪ّ . 316258250‬‬
‫نقسم العددين لحين الحصول على باقي قسمة صفر‪،‬‬

‫عندها يكون باقي القسم قبل االخير هو الحل‪.1078 :‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫خوارزمية اقليدس الموسعة‪.‬ليكن لدينا عددين صحيحين موجبين ‪ a‬و ‪ b‬فانه يوجد عددين صحيحن ‪ X‬و ‪ Y‬بحيث يكون = ‪Xa + Yb‬‬
‫)‪ .gcd(a, b‬للحصول على قيم ‪ X‬و ‪ Y‬باالضافة الى )‪ gcd(a, b‬نستخدم خوارزمية اقليدس ّ‬
‫الموسعة ‪extended Euclidean‬‬
‫‪ .algorithm‬خوارزمية (‪ّ )5.2‬‬
‫توضح كيفية عمل هذه الخوارزمية‪.‬‬
‫مثال(‪ :)5.5‬عند حساب )‪ ،Xa + Yb = gcd(1759,550‬فاننا ّ‬
‫نقسم العددين لحين الحصول على باقي قسمة صفر‪ ،‬عندها‬
‫نتوقف ونسترجع القيم قبل االخيرة( ‪.)gcd(a, b) = r = 1 ،Y = 355 ،X = −111‬‬

‫‪Algorithm (5.2): Extended Euclidean algorithm eGCD‬‬


‫‪Input: Integers a, b with a ≥ b > 0‬‬
‫‪Output: (𝑑, 𝑋, 𝑌 ) with d = gcd(a, b) and Xa + Yb = d‬‬
‫)‪if (b|a‬‬
‫)‪return (b, 0, 1‬‬
‫‪else‬‬
‫‪r = a mod b‬‬
‫)‪(d, X, Y) = eGCD(b, r‬‬
‫)‪𝐫𝐞𝐭𝐮𝐫𝐧 (d, Y, X − Yq‬‬

‫‪ 5.5.5‬العمليات الرياضية ‪Modular‬‬


‫‪ ‬ذكرنا ان التعبير ‪ a mod N‬يعني باقي قسمة ‪ a‬على ‪.N‬‬
‫‪ ‬يكون العددان ‪ a‬و ‪ b‬متطابقان ‪ congruent‬بداللة ‪ N‬ويك تبان بالصيغة ‪ ،a = b mod N‬اذا كان = ‪a mod N‬‬
‫‪ b mod N‬بمعنى ان باقي قسمة ‪ a‬عند تقسيمه على ‪ N‬هو نفسه عند تقسيم ‪ b‬على ‪.N‬‬
‫‪ ‬تدعى قيمة ‪ N‬بال ‪.modulus‬‬
‫مثال(‪ ،36 = 21 mod 15 :)5.6‬وذلك الن باقي قسمة ‪ 36‬على ‪ 15‬هو نفسه باقي قسمة ‪ 21‬على ‪ 15‬وهو ‪.6‬‬
‫‪ ‬يفيد مفهوم التطابق هذا في اختزال العمليات الرياضية‪ .‬على سبيل المثال اليجاد ]‪[1093028.19301 mod 100‬‬
‫نقوم اوال باختزال ‪ ، [1093028 mod 100] = 28‬واختزال ‪ [190301 mod 100] = 1‬ومن ثم‬
‫حساب ‪.[28.1 mod 100] = 28‬‬
‫‪ ‬من المثال اعاله يتضح كيفية استخدام العملية ‪ mod‬الختزال وتبسيط عملية الجمع ويمكن تطبيق نفس الفكرة على اختزال عمليات‬
‫الطرح والضرب كما موضح في القوانين ادناه‪:‬‬
‫‪[a + b] mod N = [a mod N] + [b mod N]mod N .1‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫‪[a − b] mod N = [a mod N] − [b mod N]mod N .2‬‬


‫‪[a. b] mod N = [a mod N]. [b mod N]mod N .3‬‬
‫‪ 5.5.5‬المعكوس الضربي‬
‫التخضع عملية القسمة لطريقة االختزال التي ذكرناه اعاله‪ ،‬بمعنى ادق‬

‫‪[a/b] mod N ≠ [a mod N]/[b mod N]mod N‬‬


‫يمكن ان نجد تعريف مناسب لعملية القسمة يتالئم مع رياضيات ‪ . modular‬اذا كان للعدد الصحيح ‪ b‬عدد صحيح ‪ b−1‬بحيث يكون‬
‫نعرف ‪ b−1‬بكونه المعكوس الضربي ‪ multiplicative inverse‬للعدد ‪ ،b mod N‬ويعرف ‪ b‬بانه قابل‬ ‫‪ bb−1 = 1 mod N‬فاننا ّ‬
‫للعكس ‪ .mod N‬في ضوء ذلك‪ّ ،‬‬
‫نعرف عملية القسمة بالشكل‪:‬‬
‫‪،a/b = ab−1 mod N‬‬
‫وتكون ممكنة فقط عندما يكون ‪ b‬قابال للعكس في حالة ‪.mod N‬‬
‫قد يسال البعض ما هي االعداد الصحيحة القابلة للعكس في حالة ‪mod N‬؟ والجواب يظهر من الفرضية التالية‪.‬‬
‫فرضية (‪ .)5.1‬ليكن لدينا عددين صحيحين ‪a‬و ‪ ،N‬حيث ‪ .N > 1‬يكون ‪ a‬قابال للعكس‪ mod N‬فقط واذا فقط اذا كان‬
‫‪.gcd(a, N) = 1‬‬
‫ويمكن برهنة هذه الفرضية بافتراض ان ‪ a‬هو عدد موجب‪ .‬بما ان ‪ ab = 1 mod N‬هذا يعني ان ‪ ab − 1 = cN‬لقيمة‬
‫‪ ،c ∈ ℤ‬وهذا يعني ان ‪( gcd(a, N) = 1‬حسب خوارزمية اقليدس الموسعة)‪.‬‬
‫مثال(‪ :)5.7‬ليكن ‪ a = 11‬و‪ .N = 17‬فإن ‪ ،(−3). 11 + 2.17 = 1‬وبذلك يكون ]‪ 14 = [−3 mod 17‬هي‬
‫معكوس ‪ ،11‬يمكن اثبات ذلك ‪.14.11 = 1 mod 17‬‬
‫خوارزمية حساب المعكوس الضربي‪.‬‬
‫ليكن لدينا ‪ N‬و }‪ a ∈ {0, … N − 1‬عندما يكون ‪ gcd(a, N) = 1‬فإن خوارزمية اقليدس الموسعة ترجع لنا‬ ‫‪‬‬
‫‪ .Xa + Yb = 1‬يكون ]‪ [X mod N‬هو المعكوس الضربي للعدد ‪.a‬‬

‫‪Algorithm (5.3): Multiplicative inverse algorithm‬‬


‫‪Input: N, a‬‬
‫‪Output: a−1‬‬
‫)‪(d, X, Y) = eGCD(a, N‬‬
‫”‪if d ≠ 1 return “there is no inverse‬‬
‫]‪else return [X mod N‬‬
‫ّ‬
‫توضح خوارزمية (‪ )5.3‬كيفية عمل حساب المعكوس‪.‬‬ ‫‪‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫نظرية الزمر‬ ‫‪5.5‬‬


‫يمثل تجمع العناصر بالعملية الثنائية ∘ مايعرف بالزمرة 𝔾 ‪ group‬بحيث يتحقق‪:‬‬

‫‪( -‬زمرة مغلقة) لكل 𝔾 ∈ ‪g°h ∈ 𝔾, h°g‬‬


‫‪( -‬وجود العنصر المحايد) يوجد عنصر 𝔾 ∈‪ e‬بحيث‬
‫لجميع ‪.g ∈ 𝔾, e°g = g = g°e‬‬
‫‪( -‬وجود المعكوس) لكل 𝔾 ∈ ‪ g‬يوجد عنصر 𝔾 ∈ ‪ h‬بحيث‬
‫‪ .g°h = e = h°g‬يعرف العنصر‪ h‬بمعكوس ‪.g‬‬
‫‪( -‬خاصية التشارك)‬
‫لكل 𝔾 ∈ ‪.(g1 °g 2 )°g 3 = g1 (°g 2 °g 3 ) ، g1 , g 2 , g 3‬‬
‫‪ ‬عندما تكون 𝔾 منتهية العناصر‪ ،‬فانها تسمى الزمرة المنتهية ويمثل الرمز |𝔾| رتبة ‪ order‬الزمرة وهو يمثل عدد عناصر الزمرة‪.‬‬
‫تعرف الزمرة 𝔾 بكونها زمرة تبادلية ‪ abelian‬اذا تحقق الشرط‪ :‬لكل 𝔾 ∈ ‪ h, g‬يكون ‪.g°h = h°g‬‬ ‫ّ‬ ‫‪‬‬

‫مثال(‪ :)5.9‬االعداد الصحيحة ‪ ℤ‬هي زمرة تبادلية بالنسبة لعملية الجمع وليست زمرة بالنسبة لعملية الضرب الن الرقم الصحيح ‪ ،2‬على سبيل‬
‫المثال‪ ،‬اليوجد له معكوس ضربي في مجموعة االعداد الصحيحة‪.‬‬
‫مثال(‪ :)5.10‬عندما ‪ .N ≥ 2‬فإن الزمرة }‪ {0, … , N − 1‬هي زمرة تبادلية بالنسبة لعملية الجمع ‪ mod N‬ورتبة تلك الزمرة هو ‪.N‬‬
‫الحظ‪ ،‬ان معكوس كل عنصر هو ]‪ .[(N − a)mod N‬تعرف هذه الزمرة ب ‪ ℤN‬وتشمل العناصر }‪.{0, … , N − 1‬‬

‫‪ 5.5.5‬الرفع لالس في الزمر‬


‫عند تطبيق عملية الضرب على عنصر من عناصر الزمرة ‪ m‬من ّ‬
‫المرات فانه يرمز لهذه العملية بالرمز‪:‬‬

‫⏟‪g m = g‬‬
‫‪…g‬‬
‫‪m times‬‬
‫من ابرز قواعد عملية الرفع لالس هي‪:‬‬
‫‪.g1 = g ،(g m )m′ = g mm′ ، g m . g m′ = g m+m′‬‬

‫خوارزمية ك فوءة لعملية الرفع لالس‪ .‬تعتبر عملية الرفع لالس ‪ ،ab mod N‬عندما ‪ ،a ∈ ℤN‬و ‪ b > 0‬عملية معقدة‪ .‬نستطيع ان‬
‫نعالج هذه العملية وذلك باختزال عمليات الرفع لالس بصورة متكررة‪ ،‬مما يسمح بان تكون النتائج الوسطية صغيرة خالل عملية االحتساب‪.‬‬

‫‪Algorithm (5.4): A standard approach for modular‬‬


‫‪exponentiation‬‬
‫‪Input: N, a ∈ {0, … N − 1}, b > 0‬‬
‫‪Output: ab mod N‬‬
‫‪x=1‬‬
‫‪for i = 1 to b:‬‬
‫‪x = x. a mod N‬‬
‫‪return x‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫لالسف‪ ،‬حتى مع هذا االسلوب‪ ،‬فانه الزالت عملية الرفع لالس عملية غير ك فوءة‪ .‬خورزمية (‪ )5.4‬توضح كيفية اجراء عملية الرفع لالس بصورة‬
‫مختزلة‪.‬‬
‫بما ان الخوارزمية (‪ )5.4‬تستخدم ‪ b‬من الدورات فانها تحتاج الى وقت تنفيذ خطيا مع ‖‪ .‖b‬الحظ‪ ،‬ان الخوارزمية (‪ )5.4‬تتبع التكرار التالي‪:‬‬

‫⋯ = ‪ab modN = a. ab−1 mod N = a. a. ab−2 mod N‬‬


‫يمكن ان ّ‬
‫نحسن االداء بصورة افضل عند اتباع التكرار التالي‪:‬‬
‫‪2‬‬
‫‪ -‬عندما يكون ‪ b‬زوجي‪ab mod N = (ab⁄2 ) mod N :‬‬
‫‪2‬‬
‫‪ -‬عندما يكون ‪ b‬فردي‪ab mod N = a. (a(b−1)⁄2 ) mod N :‬‬

‫تم صياغة هذا التكرار بشكل خوارزمية تعرف ب )‪ (square-and-multiply‬لحساب عملية الرفع لالس التي تتطلب فقط )‪ ،𝒪(logb‬والتي‬

‫‪Algorithm (5.5): Square-and-multiply for efficient‬‬


‫‪modular exponentiation‬‬
‫‪Input: N, a ∈ {0, … N − 1}, b > 0‬‬
‫‪Output: ab mod N‬‬
‫‪𝑡=1‬‬
‫‖𝑏‖ = ‪ℓ‬‬
‫‪for 𝑖 = ℓ − 1 downto 0:‬‬
‫𝑁 𝑑𝑜𝑚 ‪𝑡 = 𝑡 2‬‬
‫‪if 𝑏𝑖 = 1‬‬
‫𝑁 𝑑𝑜𝑚)𝑎 × 𝑡( = 𝑡‬
‫𝑡 ‪return‬‬

‫توضحها خوارزمية (‪.)5.5‬‬


‫مثال(‪ :)5.11‬لحساب ‪ 97263533 mod 11413‬بخوارزمية ‪ square-and-multiply‬نحصل على ‪.5761‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫‪ 5.5.5‬حقائق مهمة عن الزمر‬


‫نظرية (‪ .)5.1‬عندما تكون 𝔾 زمرة منتهية العناصر بحيث |𝔾| = ‪ ، m‬فإن لكل عنصر𝔾 ∈ ‪ g‬يكون ‪.g m = 1‬‬

‫ويمكن برهنة هذه النظرية بافتراض ان لدينا ‪ g1 , … , g m‬في الزمرة 𝔾‪ .‬االن ّندعي ان‬

‫) ‪g1 . g 2 … . g m = (gg1 ). (gg 2 ) … . (gg m‬‬


‫وذلك لكون 𝔾 ∈ ‪ gg i‬باعتبار ان 𝔾 هي زمرة مغلقة‪ .‬وبالتالي يكون لدينا‬

‫) ‪g1 . g 2 … . g m = g m (g1 . g 2 … . g m‬‬


‫مما يستدعي ان ‪.g m = 1‬‬

‫متالزمة (‪ .)5.1‬عندما تكون 𝔾 زمرة منتهية العناصر بحيث ‪ ، m = |𝔾| > 1‬فإن لكل عنصر𝔾 ∈ ‪ g‬والي عدد صحيح ‪ i‬يكون‬
‫‪.g i = g i mod m‬‬
‫ويمكن برهنة هذه المتالزمة بالشكل التالي‪ :‬ليكن ‪ ،i = qm + r‬بحيث ‪ .r = i mod m‬عندها يكون‬

‫‪g i = g qm+r = g qm . g r = (g m )q . g r = 1. g r = g r‬‬


‫متالزمة (‪ .)5.2‬لتكن 𝔾 زمرة منتهية العناصر بحيث ‪ .m = |𝔾| > 1‬ليكن ‪ e > 0‬هو عدد صحيح‪ ،‬ولتكن𝔾 → 𝔾 ‪fe :‬‬
‫بالصورة ‪ .fe (g) = g e‬اذا كان ‪ gcd(e, m) = 1‬فإن ‪ fe‬هي بعثرة ‪ .permutation‬عالوة على ذلك‪ ،‬اذا كان = ‪d‬‬
‫]‪ ،[e−1 mod m‬فإن ‪ fd‬هي معكوس ‪.fe‬‬
‫يمكن برهنة هذه المتالزمة اعتمادا على فرضية (‪ )5.1‬التي تنص على وجود معكوس ضربي للعددين اذا كانا ّاوليان نسبيا‪ ،‬اما كون ‪ fd‬معكوسا‬
‫للدالة ‪ fe‬فيظهر من‪:‬‬

‫‪fd (fe (x)) = fd (x e ) = (x e )d = (x)ed = (x)[ed mod N] = (x)1 = x‬‬


‫∗‬ ‫∗‬
‫زمرة 𝐍‪ .ℤ‬تعرف زمرة ‪ ℤN‬بانها مجموعة جميع االعداد الصحيحة في المجموعة }‪ {1, … , N − 1‬التي تكون اولية نسيا مع ‪ .N‬وتعرف‬
‫بالشكل‪:‬‬
‫∗‬
‫}‪ℤN = {a ∈ {1, … N − 1}| gcd(a, N) = 1‬‬
‫∗‬
‫تمثل ‪ ℤN‬زمرة تبادلية فيما يخص عملية الضرب ‪.mod N‬‬
‫∗‬ ‫∗‬
‫دالة ‪ .Euler phi‬يرمز لعدد عناصر ‪ ℤN‬بالرمز | ‪ ∅(N) = |ℤN‬وتعرف بدالة ‪.Euler phi‬‬
‫∗‬
‫عندما تكون ‪ N = p‬هي عدد اولي‪ .‬عندها يكون ‪∅(p) = |ℤp | = p − 1‬‬ ‫‪-‬‬
‫‪ -‬عندما تكون ‪ N = p. q‬هي حاصل ضرب عددين اوليين مختلفين‪ .‬عندها يكون )‪ .∅(N) = (p − 1)(q − 1‬وهي‬
‫العناصر التي التقبل القسمة على ‪ p‬او ‪ q‬وبالتي هو عدد العناصر االولية نسبيا مع ‪.N‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫∗‬ ‫∗‬
‫مثال(‪ :)5.12‬لتكن ‪ ،N = 15 = 5.3‬فإن}‪|ℤ15 | = 8 = 4.2 = ، ℤ15 = {1,2,4,7,8,11,13,14‬‬
‫)‪.∅(15‬‬
‫∗‬
‫متالزمة (‪ .)5.3‬ليكن ‪ ،N > 1‬وليكن ‪ ،a ∈ ℤN‬فإن ‪.a∅(N) = 1 mod N‬‬
‫نظرية ‪ .)5.2( Fermat‬عندما يكون ‪ N = p‬عددا اوليا‪ ،‬و }‪ a ∈ {1, … , p − 1‬فإن‪،ap−1 = 1 mod p :‬‬
‫هناك صيغة اخرى هي ‪ap = a mod p‬‬ ‫‪‬‬

‫مثال(‪ :)5.13‬عندما ‪ ،a = 7, p = 19‬فإن ‪ap−1 = 716 = 1 mod 17‬‬


‫∗‬ ‫∗‬
‫→ ‪ fe : ℤN‬بالصورة ‪ .fe (x) = x e‬اذا كان‬ ‫متالزمة (‪ .)5.4‬ليكن ‪ e > 0‬هو عدد صحيح‪ ، N > 1،‬ولتكن ‪ℤN‬‬
‫‪ gcd (e, ∅(N)) = 1‬فإن ‪ fe‬هي بعثرة ‪ .permutation‬عالوة على ذلك‪ ،‬اذا كان ])‪ ،d = [e−1 mod ∅(N‬فإن ‪ fd‬هي‬
‫معكوس ‪.fe‬‬

‫‪ 5.5‬االفتراضات الصعبة‬
‫ذكرنا فيما سبق ان امنية مناهج التشفير الحديثة تعتمد على وجود مسائل يفترض ان تكون صعبة‪ ،‬بحيث اذا تم حل هذه المسائل فانه يشكل‬
‫تهديد المنية تلك المناهج‪ .‬في هذا الجزء نذكر بعض تلك المسائل‪.‬‬

‫‪ 5.5.5‬افتراض تحليل العوامل‬


‫تعتبر مسال ايجاد عوامل العدد من مسائل نظرية االعداد الصعبة‪ .‬عند توفر العدد ّ‬
‫المركب الصحيح ‪ ،N‬تعمل مسالة تحليل العوامل على ايجاد‬
‫العددين الصحيحين الموجبين ‪ p‬و‪ q‬بحيث ‪ .N = pq‬يمكن صياغة هذه المسالة شكليا كما يلي‪ :‬ليكن ‪ GenModulus‬خوارزمية‬
‫تعمل عند ادخال معامل االمنية ‪ n‬على اخراج )‪ (N, p, q‬بحيث ‪ N = pq‬و‪ p‬و‪ q‬اعداد اولية بطول ‪ .n‬افترض التجربة التالية‬
‫للخصم 𝒜 ولمعامل االمنية ‪.n‬‬
‫تجربة تحليل العوامل )𝐧( 𝐬𝐮𝐥𝐮𝐝𝐨𝐌𝐧𝐞𝐆‪𝐅𝐚𝐜𝐭𝐨𝐫𝓐,‬‬
‫‪ .1‬تنفيذ )‪ GenModulus(n‬للحصول على )‪.(N, p, q‬‬
‫‪ .2‬يعطى 𝒜 العدد ‪ ،N‬ويقوم باخراج ‪.p′ , q′ > 1‬‬
‫‪ .3‬يكون اخراج التجربة ‪ 1‬اذا كان ‪ ،p′ . q′ = N‬و‪ 0‬ماعدا ذلك‪.‬‬

‫نقول ان ‪ Factoring‬هي مسالة صعبة نسبة الى ‪ GenModulus‬اذا كان لجميع الخصوم 𝒜 توجد دالة ضئيلة جدا ‪ negl‬بحيث‪:‬‬

‫)‪Pr[Factor𝒜,GenModulus (n) = 1] ≤ negl(n‬‬


‫‪ 5.5.5‬افتراض ‪RSA‬‬
‫ّ‬
‫على الرغم من صعوبة مسالة تحليل العوامل السابقة اال انها ال تقدم شيائ مفيدا في تصميم مناهج التشفير‪ .‬لذا تم البحث عن مسائل اخرى‬
‫مرتبطة بمسالة تحليل العوامل‪ .‬افضل مسالة هي تلك التي قدمها كل من ‪ ،Shamir ،Rivest‬و ‪ Adleman‬والمعروفة بمسالة ‪.RSA‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫∗‬
‫كما ذكرنا فإن رتبة الزمرة ‪ ℤN‬هي )‪.∅(N) = (p − 1)(q − 1‬‬ ‫‪‬‬

‫عندما يكون ‪ N‬قابال للتحليل فانه من السهل حساب )‪ .∅(N‬اما عندما يكون تحليل عوامل ‪ N‬غير معلوم فانه من الصعب حساب‬ ‫‪‬‬

‫)‪.∅(N‬‬
‫استثمرت مسالة ‪ RSA‬هذه الميزة‪ ،‬بحيث تكون مسالة ‪ RSA‬سهلة عندما يكون )‪ ∅(N‬معلوما وتكون صعبة بدون معرفة )‪.∅(N‬‬ ‫‪‬‬

‫تتلخص مسالة ‪ RSA‬بما يلي‪ :‬ليكن لدينا العدد الصحيح المركب ‪ N‬وليكن ‪ e > 0‬عدد اولي نسبيا مع )‪ ،∅(N‬ليكن العدد‬ ‫‪‬‬
‫∗‬
‫‪ ، y ∈ ℤN‬احسب ‪ ،y 1⁄e mod N‬بحيث عند اعطاء )‪ (N, e, y‬المطلوب ايجاد قيمة ‪ x‬بحيث ‪.x e = y mod N‬‬
‫يمكن صياغة المسالة شكليا كما يلي‪ :‬ليكن ‪ GenRSA‬خوارزمية تعمل عند ادخال معامل االمنية ‪ n‬على اخراج‬
‫))‪ .(N, e > 0 | gcd(e, ∅(N) = 1, d|ed = 1 mod ∅(N‬افترض التجربة التالية للخصم 𝒜 ولمعامل‬
‫االمنية ‪.n‬‬
‫تجربة ‪𝐑𝐒𝐀 − 𝐢𝐧𝐯𝓐,𝐆𝐞𝐧𝐑𝐒𝐀 (𝐧) RSA‬‬
‫‪ .1‬تنفيذ )‪ GenRSA(n‬للحصول على )‪.(N, p, q‬‬
‫∗‬
‫‪ .2‬اختر ‪.y ← ℤN‬‬
‫∗‬
‫‪ .3‬يعطى 𝒜 )‪ ،(N, e, y‬ويقوم باخراج ‪.x ∈ ℤN‬‬
‫‪ .4‬يكون اخراج التجربة ‪ 1‬اذا كان ‪ ،x e = y mod N‬و‪ 0‬ماعدا ذلك‪.‬‬

‫نقول ان ‪ RSA‬هي مسالة صعبة نسبة الى ‪ GenRSA‬اذا كان لجميع الخصوم 𝒜 توجد دالة ضئيلة جدا ‪ negl‬بحيث‪:‬‬

‫)‪Pr[RSA − inv𝒜,GenRSA (n) = 1] ≤ negl(n‬‬

‫‪Algorithm (5.6): GenRSA‬‬


‫‪Input: security parameter, n‬‬
‫)‪Output: (N, e, d‬‬
‫)‪(N, p, q) = GenModulus(n‬‬
‫)‪∅(N) = (p − 1)(q − 1‬‬
‫‪find e such that gcd(e, ∅(N) = 1‬‬
‫])‪compute: d = [e−1 mod ∅(N‬‬
‫)‪return (N, e, d‬‬

‫يمكن تصميم خوارزمية ‪ GenRSA‬اعتمادا على خوارزمية ‪ GenModulus‬التي تخرج قيمة ‪ N‬مع عواملها‪ .‬ويمكن صياغة‬ ‫‪‬‬
‫‪ GenRSA‬في خوارزمية (‪.)5.6‬‬

‫الحظ عندما يكون تحليل ‪ N‬معلوما‪ ،‬تكون مسالة ‪ RSA‬سهلة الحل‪ :‬نقوم اوال بحساب )‪ ،∅(N‬بعدها نحسب‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫])‪ ،d = [e−1 mod ∅(N‬في النهاية نحسب الحل ]‪ .[y d mod N‬وبالتالي‪ ،‬لكي تكون مسالة ‪ RSA‬صعبة الحل‪ ،‬يجب ان‬
‫يكون من المتعذر تحليل قيمة ‪ .N‬بمعنى ان مسالة ‪ RSA‬ال يمكن ان تكون اك ثر صعوبة من التحليل‪ .‬ولكن ماذا عن العكس؟ هل من الممكن‬
‫تحليل عددين بسهولة اذا امكن حل مسالة ‪ .RSA‬الجواب هو كال‪ ،‬اذ ال يمكن استنتاج ان ‪ RSA‬هي صعبة بصعوبة التحليل‪.‬‬

‫‪ 5.5‬افتراضات الزمر‬
‫المجاميع الجزئية‪.‬ليكن لدينا الزمرة المنتهية ‪ G‬والتي رتبتها ‪ .m‬لكل عنصر ‪ّ g ∈ G‬‬
‫نعرف‪:‬‬

‫} ‪〈g〉 = {g 0 , g1 , … , g i−1‬‬
‫بحيث ‪ ،i ≤ m‬و ‪ i‬هو اصغر عدد صحيح موجب يحقق ‪ .g i = 1‬تدعى 〉‪ 〈g‬زمرة جزئية متولدة من قبل ‪.g‬‬

‫تعريف (‪ :)5.2‬ليكن لدينا الزمرة المنتهية 𝔾 و 𝔾 ∈ ‪ .g‬تعرف "رتبة العنصر" )‪ ord(g‬بكونها اصغر عدد صحيح موجب ‪ i‬بحيث‬
‫‪.g i = 1‬‬

‫تعريف(‪ :)5.3‬ليكن ‪m‬هو رتبة الزمرة 𝔾 (|𝔾| = ‪ ،)m‬اذا وجد 𝔾 ∈ ‪ g‬بحيث ‪ ،ord(g) = m‬فإن هذا يعني ان ‪.〈g〉 = G‬‬
‫ّ‬
‫في هذه الحالة تسمى 𝔾 زمرة دورية ‪ cyclic group‬ويعرف ‪ g‬بكونه "مولد" ‪ generator‬للزمرة 𝔾‪ ،‬او يعرف بال "عنصر البدائي" ‪primitive‬‬
‫‪.element‬‬
‫ّ‬
‫الحظ‪ ،‬ان العنصر ‪ g‬يسمى مولد ‪ mod p‬اذا وفقط اذا‬

‫‪{g i : 0 ≤ i ≤ p − 2} = ℤ∗p‬‬
‫ّ‬
‫بمعنى انه يولد جميع عناصر الزمرة عند رفعه لجميع االسس‪.‬‬
‫ّ‬ ‫∗‬ ‫ّ‬
‫‪ ،ℤ13‬بحيث يولد جميع عناصرها عند رفعه للقيم ‪.0…11‬‬ ‫مثال(‪ :)5.16‬ليكن ‪ ،p = 13‬نرى ان العدد ‪ g = 2‬هو مولد للزمرة‬

‫‪Algorithm (5.7): Generator testing‬‬


‫;‪Input: Group order q; prime factors {pi }ki=1 of q‬‬
‫‪element g ∈ G to be tested‬‬
‫‪Output: Decision whether g is generator or not‬‬
‫‪for i = 1 to k:‬‬
‫‪if g q/pi = 1 return false‬‬
‫‪return true‬‬ ‫ّ‬
‫تعتبر خوارزمية (‪ )5.7‬طريقة ك فوءة لفحص فيما اذا كان العنصر ‪ g‬هو مولد للزمرة ام ال‪.‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫متالزمة (‪ :)5.4‬عندما تكون 𝔾 زمرة ذات رتبة اولية ‪ ،p‬فإن 𝔾 تكون زمرة دورية‪ .‬كذلك‪ ،‬جميع عناصرها باستثناء العنصر المحايد هي ّ‬
‫مولدات‬
‫للزمرة 𝔾‪.‬‬

‫‪ 5.5.5‬افتراض ‪DDH‬‬
‫‪{g 0‬‬ ‫‪1‬‬ ‫} ‪m−1‬‬ ‫ّ‬
‫‪ . , g , … , g‬بصورة اخرى‪ ،‬يمكن القول‬ ‫‪ ‬ليكن 𝔾 زمرة دورية رتبتها ‪ ،m‬فانه يوجد مولد 𝔾 ∈ ‪ g‬بحيث 𝔾 =‬
‫انه لكل 𝔾 ∈ ‪ h‬يوجد عنصر وحيد ‪ x ∈ ℤq‬بحيث ‪.g x = h‬‬
‫‪ ‬يدعى ‪ x‬اللوغاريتم المتقطع ل ‪ h‬بالنسبة الى ‪.g‬‬
‫‪ ‬تتمحور مسالة اللوغاريتم المتقطع ‪ discrete logarithm problem‬بحساب قيمة ‪ x‬عند اعطاء ‪ g‬و‪.h‬‬
‫‪ ‬هناك مسائل اخرى مرتبطة بمسالة اللوغاريتم المتقطع‪ ،‬مثل مسالة )‪ Decisional Diffie-Hellman (DDH‬ومسالة‬
‫ّ‬
‫)‪ .Computational Diffie-Hellman (CDH‬تتلخص مسالة ‪ CDH‬كاالتي‪ :‬ليكن 𝔾 زمرة دورية وليكن 𝔾 ∈ ‪ g‬مولد تلك الزمرة‪.‬‬
‫عند اعطاء عنصرين من الزمرة ‪h1 = g x1‬و ‪ .h2 = g x2‬فانه من الصعب جدا حساب القيمة‪:‬‬

‫‪DHg (h1 , h2 ) = g x1.x2 = h1 x2 = h2 x1‬‬


‫يميز) ‪ DHg (h1 , h2‬عن قيمة عشوائية من الزمرة 𝔾‪.‬‬
‫اما مسالة ‪ DDH‬فتنص على انه من الصعب على اي خصم ان ّ‬ ‫‪‬‬

‫اختبار االولية‬ ‫‪5.5‬‬


‫تعمل العديد من طرق التشفير معلنة المفتاح على اختيار اعداد اولية‪ ،‬مما يتطلب توليد اعداد صحيحة كبيرة ومن ثم فحص اولية تلك‬ ‫‪‬‬
‫االعداد‪.‬‬
‫ّ‬
‫قام الباحثون بتطوير خوارزميات محددة ‪ deterministic‬تعمل على فحص اولية االعداد‪ ,‬وتعطي نتائج صحيحة دائما‪ ،‬مما يعد تطورا‬ ‫‪‬‬
‫كبيرا في هذا المجال‪.‬‬
‫من الناحية العملية‪ ،‬الزال استخدام الخوارزميات االحتمالية ‪ probabilistic‬مفضال في فحص اولية االعداد‪.‬‬ ‫‪‬‬
‫تمتاز الخوارزميات االحتمالية بكونها سريعة وتعتمد على مبدا العشوائية‪ ،‬حيث تفحص العدد الصحيح الذي عدد ثنائياته ‪ n‬بوقت‬ ‫‪‬‬
‫‪،log 2 n‬‬
‫ّ‬ ‫ز‬
‫ولكن هناك احتمالية للفحص الخاطئ‪ .‬ونقصد بذلك تحديدا‪ ،‬ان تلك الخوار ميات اذا اعلنت ان العدد المدخل "مركب" فهو فعال‬ ‫‪‬‬
‫مركب‪ ،‬واذا اعلنت انه "عدد اولي" فهناك احتمالية ضئيلة جدا انه ّ‬
‫مركب‪.‬‬
‫يمكن التاكد من صحة الفحص وذلك بتكرار عمل الخوارزمية عدد من المرات لحين تقليل احتمالية الخطا اقل من عتبة معينة‪.‬‬ ‫‪‬‬

‫استخدام نظرية ‪ .Fermat‬قد ّ‬


‫يفكر البعض باستخدام نظرية (‪ Fermat )5.2‬لفحص اولية العدد وذلك باختبار ‪ ،aN mod N = a‬حيث‬
‫‪ N‬هو العدد المطلوب اختبار اوليته‪.‬‬
‫لكن هذا التفكير خاطئ الن نظرية ‪ Fermat‬تعمل باتجاه واحد فقط‪ ،‬بمعنى انه اذا كان العدد اولي فإن النظرية تكون متحققة‪ ،‬وان‬ ‫‪‬‬
‫كانت النظرية متحققة فال يعني تحققها بان العدد اولي‪ .‬وللتوضيح نالحظ ان العدد ‪ 341‬يحقق صحة النظرية‬
‫‪ 2341 mod 341 = 2‬مع العلم ان هذ العدد ّ‬
‫مركب ‪.341=11.31‬‬
‫على الرغم من ذلك فانه يمكن استخدام نظرية ‪ Fermat‬للتحقق من اولية العدد بشكل "غير مؤكد"‪ :‬نقوم باختيار عدد من االعداد‬ ‫‪‬‬
‫الصحيحة ‪ a1 , a2 , a3 , ….‬واختبار ‪ ai N mod N = ai‬لجميع قيم ‪ .i‬اذا تحقق االختبار لجميع قيم ‪ ،ai‬فإن هذا يعطي‬
‫"احتمال كبير وليس مؤكد" بان ‪ N‬هو عدد اولي‪ ،‬وان لم يتحقق هذا االختبار لحالة واحدة ‪ ai‬على االقل فعندها يكون العدد ‪ N‬هو‬
‫مركب‪.‬‬‫عدد ّ‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫خوارزمية (‪ )5.8‬توضح كيفية استخدام نظرية ‪ Fermat‬الختبار اولية االعداد‪.‬‬ ‫‪‬‬

‫تعرف االعداد ‪ ai‬التي اليتحقق بها االختبار ‪ ai N mod N = ai‬بكونها شواهد على التركيب ‪.witness of composite‬‬
‫‪ ‬هناك اعداد شاذة عن هذه الطريقة التكرارية‪ ،‬والتي تعرف باعداد ‪ ،Carmichael numbers‬حيث هي اعداد ّ‬
‫مركبة واليوجد شاهد على‬
‫تركيبها‪.‬‬

‫‪Algorithm (5.8): Fermat primality test‬‬


‫‪Input: N: number to be tested, t: test parameter‬‬
‫‪Output: Decision: N is prime or composite‬‬
‫‪for 𝑖 = 1 to t:‬‬
‫}‪a ← {2, … , N − 2‬‬
‫"‪if 𝑎𝑁−1 mod N ≠ 1 then 𝐫𝐞𝐭𝐮𝐫𝐧 "Composite‬‬
‫"‪return "may be Prime‬‬

‫مثال على ذلك العدد ‪ 561=3.11.17‬يحقق االختبار ‪ a561 mod 561 = a‬لجميع قيم ‪.a‬‬ ‫‪‬‬
‫وقد ثبت ان هذه االعداد الشاذة هي غير متناهية‪ .‬لذا نحتاج الى طريقة اقوى من نظرية ‪ Fermat‬لفحص اولية العدد (بصورة احتمالية‬ ‫‪‬‬
‫ايضا)‪.‬‬
‫خوارزمية ‪ .Miller-Rabin‬في هذا الفصل سوف نستعرض خوارزمية ‪ Miller-Rabin‬التي تعد احد اشهر خوارزميات فحص االولية االحتمالية‪.‬‬
‫تعتمد خوارزمية ‪ Miller-Rabin‬على مبدا التعبير عن اي عدد فردي موجب ‪ N ≥ 3‬بالشكل ‪ N − 1 = 2k q‬حيث ‪ q‬عدد‬ ‫‪‬‬
‫فردي و ‪ .k > 0‬باعتبار ان ‪ N − 1‬هو عدد زوجي وان تقسيم هذا العدد ‪ k‬من المرات سوف يوصلنا الى عدد فردي‪.‬‬
‫على سبيل المثال‪ ،‬عند تقسيم ‪ 24‬ثالث مرات نصل للعدد الفردي ‪ .3‬تعمل هذه الصيغة لخوارزمية ‪ Mille-Rabin‬على ضمان الحصول‬ ‫‪‬‬
‫على شواهد عديدة على كون العدد ّ‬
‫مركب‪.‬‬
‫لالعداد االولية خواص مميزة‪ ،‬منها‪:‬‬
‫‪ -‬عندما يكون ‪ p‬عدد اولي و‪ a‬عدد موجب صحيح اصغر من ‪ p‬فاذا كان ‪ a2 mod p = 1‬فإن ‪ (a mod p)2 = 1‬يكون‬
‫صحيحا‪ ،‬فقط في حالتي ‪ a mod p = 1‬او ‪.a mod p = −1‬‬
‫‪ -‬الخاصية االخرى اي عدد اولي ‪ p ≥ 3‬يك تب بالشكل ‪ p − 1 = 2k q‬حيث ‪ q‬عدد فردي و ‪ .k > 0‬عندما يكون لدينا العدد‬
‫الصحيح }‪ a ∈ {1, … , p − 1‬فانه يتحقق احد الشرطين التاليين‪:‬‬
‫‪.aq = 1 mod p .1‬‬
‫‪ .2‬احد اعداد السلسلة‬
‫‪k−1‬‬
‫‪ aq , a2q , a4q , … , a2 q‬يساوي ‪.−1 mod p‬‬
‫وهذا يعني وجود عدد ‪1 ≥ j ≥ k‬بحيث ان ‪ ،a2 q = −1 mod p‬ويمكن برهنة هذه الحقيقة استنادا الى نظرية ‪Fermat‬‬
‫‪j−1‬‬

‫‪k‬‬
‫التي تنص ان ‪ .ap−1 mod p = a2 q mod p = 1‬مما يعني ان اخر عنصر في‬
‫‪k‬‬
‫السلسلة ‪ aq mod p, a2q , a4q , … , a2 q‬له القيمة ‪.1‬‬
‫الحظ ان كل عدد في السلسلة هو تربيع العدد السابق‪ ،‬مما يعني ان احد الحالتين التالية تكون صحيحة‪:‬‬ ‫‪‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫‪ -1‬العدد االول في السلسلة له قيمة ‪.1‬‬


‫مربعه يساوي ‪ .1‬وهذه الحالة تكون صحيحة عندما يكون احد عناصر السلسلة يساوي ‪.−1‬‬ ‫‪ -2‬احد اعداد السلسلة ليس له قيمة ‪ 1‬ولكن ّ‬
‫‪ ‬نستنتج مما سبق‪ ،‬ان العدد ‪ N‬اذا كان اوليا‪،‬‬
‫‪ o‬فاما ان اول عنصر في السلسلة يساوي ‪1‬‬
‫‪ o‬او ان احد العناصر االخرى في السلسلة يساوي ‪.−1‬‬
‫‪ ‬الحظ ان هذا الشرط اليتحقق دائما‪ ،‬حيث ان احتمالية خطا الخوارزمية اليتجاوز ‪( 1⁄4‬االثبات يتعدى نطاق الدرس)‪ ،‬لذا عند تكرار‬
‫‪t‬‬
‫تنفيذ الخوارزمية ‪t‬من المرات ولقيم ‪a‬مختلفة فإن احتمالية الخطا تكون اقل من )‪.(1⁄4‬‬
‫توضح الخوارزمية (‪ )5.9‬طريقة عمل طريقة ‪ Miller-Rabin‬لفحص االعداد االولية‪.‬‬‫ّ‬ ‫‪‬‬

‫‪Algorithm (5.9): Miller-Rabin primality test‬‬


‫‪Input: N: number to be tested, t: test parameter‬‬
‫‪Output: Decision: N is prime or composite‬‬
‫‪Let N − 1 = 2k q, q is odd‬‬
‫‪for j = 1 to t:‬‬
‫}‪a ← {1, … , N − 1‬‬
‫‪a = aq mod N‬‬
‫"‪if a = 1 mod N then 𝐫𝐞𝐭𝐮𝐫𝐧 "prime‬‬
‫‪for i = 0 to k − 1:‬‬
‫"‪if a = −1 mod N then 𝐫𝐞𝐭𝐮𝐫𝐧 "prime‬‬
‫‪else a = a2 mod N‬‬
‫‪end‬‬
‫‪end‬‬
‫"‪return "composite‬‬

‫مثال(‪ :)5.17‬الختبار كون العدد ‪ 561‬اولي ام ال (وهو عدد شاذ كما ذكرنا) باستخدام خوارزمية ‪ .Miller-Rabin‬نستخدم عدد المحاوالت ‪،t = 1‬‬
‫وليكن ‪ a = 2‬نك تب ‪ .(n − 1) = 560 = 24 (35) = 2k q‬نحسب االن‬

‫‪235 mod 561 = 263‬‬


‫‪22.35 = 2632 mod 561 = 166‬‬
‫‪24.35 = 1662 mod 561 = 67‬‬
‫‪28.35 = 672 mod 561 = 1‬‬
‫العدد االول ‪ 235 mod 561‬هو ليس ‪ 1‬وال ‪ ،-1‬وبقية االعداد في القائمة هي ليست ‪ ،-1‬لذا فإن ‪ 2‬هو شاهد في خوارزمية ‪Miller-Rabin‬‬
‫على ان ‪ 561‬هو عدد ّ‬
‫مركب‪.‬‬
‫مثال(‪ :)5.18‬لناخذ مثال اخر‪ ،‬لتكن ‪ N = 172947529‬و‬

‫‪N − 1 = 172947528 = 23 . 21618441‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫نطبق ‪ Miller-Rabin‬بقيمة ‪ a = 17‬ونجد ان‬

‫‪1721618441 mod 172947529 = 1‬‬


‫لذا اليعد ‪ 17‬شاهد على التركيب‪ .‬لنجرب االن ‪ ،a = 3‬لالسف‬

‫‪321618441 mod 172947529 = −1‬‬


‫وبذلك فشل ‪ 3‬ايضا بكونه شاهد‪ .‬عندها نشك ان العدد ‪ N‬قد يكون اولي‪ ،‬ولكن عند تجربة قيمة اخرى‪ ،‬لتكن ‪ ،a = 23‬سوف نجد ان‬

‫‪2321618441 mod 172947529 = 40063806‬‬


‫‪232.21618441 mod 172947529 = 2257065‬‬
‫‪234.21618441 mod 172947529 = 1‬‬
‫وبذلك فإن ‪ 23‬هو شاهد بكون ‪ N‬هو عدد مركب‪ .‬في الحقيقة فإن ‪ N‬هو عدد ‪ ،Carmichael‬ولكن ليس من السهل تحليله يدويا‪.‬‬

‫خوارزميات تحليل العدد‬ ‫‪5.5‬‬


‫تم تطوير العديد من الخوارزميات لتحليل العدد الى عوامله‪.‬‬ ‫‪‬‬
‫من اشهر واك فا الخوارزميات التي تحلل اعداد كبيرة هي خوارزميات ‪،Number field sieve ،Quadratic sieve‬و ‪Elliptic curve‬‬ ‫‪‬‬
‫‪ .factoring‬هناك خوارزميات مشهورة اخرى مثل خوارزمية ‪ ،Pollard’s rho‬خوارزمية ‪ ،Pollard p − 1‬وبالتاكيد خوارزمية ‪trial‬‬
‫‪.division‬‬
‫سوف نفترض ان الصحيح ‪ N‬المطلوب تحليله هو عدد فردي‪.‬‬ ‫‪‬‬

‫مركب فإن احد عوامله هو ⌋‪.p ≤ ⌊√N‬‬ ‫وعندها فإن كان هذا العدد هو عدد ّ‬ ‫‪‬‬

‫وبالتالي فانه يك في لخوارزمية ‪ trial division‬ان ّتجرب جميع االعداد الفردية التي هي اقل من ‪ √N‬اليجاد احد عوامله‪.‬‬ ‫‪‬‬
‫عندما تكون ‪ N < 1012‬فإن هذه الخوارزمية تعد طريقة معقولة لتحليل العدد‪ ،‬ولكن عندما يكون العدد كبير فاننا نستخدم‬ ‫‪‬‬
‫خوارزميات اعقد‪.‬‬
‫عند تحليل العدد‪ ،‬فاما ان نجد جميع العوامل االولية له او نجد له عاملين فقط بالشكل ‪ N = n1 . n2‬بحيث < ‪1‬‬ ‫‪‬‬
‫‪ .n1 , n2 < N‬في هذا الفصل سوف ّنركز على النوع الثاني‪.‬‬

‫‪ 5.5.5‬خوارزمية 𝟏 ‪Pollard 𝐩 −‬‬


‫‪ ‬تعتبر من ابسط الخوارزميات التي تطبق على اعداد كبيرة‪.‬‬
‫‪ ‬مدخالت هذه الخوارزمية هي العدد الفردي الصحيح ‪ N‬المطلوب تحليله وعدد صحيح اخر ‪ B‬يدعى ‪.Bound‬‬
‫‪ ‬تعمل هذه الخوارزمية على ايجاد العامل االول ‪ ،p‬حيث ‪ ،p|n‬بشرط ان تكون عوامل ‪ p − 1‬اعداد "صغيرة"‪.‬‬
‫‪ ‬يحتسب العامل الثاني ‪ q‬بسهولة عن طريق ‪.q = N/p‬‬
‫‪ ‬تعتمد هذه الخوارزمية على نظرية ‪ )5.2( Fermat‬التي تنص على ان‪:‬‬

‫‪ap−1 mod p = 1‬‬


‫وبالتالي فإن ‪2p−1 mod p = 1‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫بما ان ‪ p − 1‬هو عدد زوجي‪ ،‬اذن !‪.(p − 1)|B‬‬ ‫‪‬‬


‫تعمل الخوارزمية على التطابق ‪،a 𝑚𝑜𝑑 𝑁 = 2B! mod N‬‬ ‫‪‬‬
‫وبما ان ‪ p|N‬فإن هذا يؤدي الى ‪.a = 2B! mod p‬‬ ‫‪‬‬
‫بما ان !‪ (p − 1)|B‬فإن ‪2B! mod p = (2p−1 )t mod p = 1 mod p‬‬ ‫‪‬‬
‫اذن ‪.p|a − 1‬‬ ‫‪‬‬
‫وبما ان ‪ p|N‬هذا يؤدي الى ان ‪ ،p|d‬بحيث‬ ‫‪‬‬

‫)‪d = gcd(a − 1, N‬‬


‫بحيث ‪ d‬هو العامل االول‪.‬‬

‫‪Algorithm (5.10): Pollard 𝐩 − 𝟏 Factoring‬‬


‫‪Input: N: number to be factored, B: bound‬‬
‫‪Output: factor d‬‬
‫‪a=2‬‬
‫‪for j = 2 to B:‬‬
‫‪a = aj mod N‬‬
‫)‪d = gcd(a − 1, N‬‬
‫‪if 1 < d < N:‬‬
‫‪return d‬‬
‫"‪return "failure‬‬

‫ّ‬
‫توضح الخوارزمية (‪ )5.11‬عمل خوارزمية ‪ Pollard p − 1‬لتحليل عدد صحيح‪.‬‬ ‫‪‬‬
‫‪return‬‬
‫نقدم االن مثال بسيط‪.‬‬
‫مثال(‪ :)5.19‬نستخدم خوارزمية ‪ Pollard p-1‬لتحليل العدد ‪ .N = 13927189‬نبدا من )‪ gcd(29! − 1, N‬و نحسب االس لقيم‬
‫اكبر للمفكوك‪ ،‬نجد ان‪:‬‬

‫‪29! − 1 mod 13927189 = 13867883, gcd(29! − 1,13927189) = 1‬‬


‫‪210! − 1 mod 13927189 = 5129508, gcd(210! − 1,13927189) = 1‬‬
‫‪211! − 1 mod 13927189 = 4405233, gcd(211! − 1,13927189) = 1‬‬
‫‪212! − 1 mod 13927189 = 6680550, gcd(212! − 1,13927189) = 1‬‬
‫‪213! − 1 mod 13927189 = 6161077, gcd(213! − 1,13927189) = 1‬‬
‫)‪214! − 1 mod 13927189 = 879290, gcd(214! − 1,13927189‬‬
‫‪= 3823‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫السطر االخير يعطي المعامل االول ‪ p = 3823‬للعدد ‪.N‬‬


‫هذا العامل هو عدد اولي‪،‬‬ ‫‪‬‬
‫والعامل االخر هو ‪ q = N/p = 13927189/3823 = 3643‬هو ايضا عدد اولي‪.‬‬ ‫‪‬‬
‫السبب الذي جعل !‪ 14‬تعمل في هذا المثال هو ان ‪p − 1‬يحلل الى عوامل صغيرة = ‪p − 1 = 3822‬‬ ‫‪‬‬
‫‪.2.3. 72 . 13.‬‬
‫نقدم مثال اخر باعداد اكبر‪.‬‬
‫مثال(‪ :)5.20‬ليكن ‪ .N = 168441398857‬عندها‬

‫‪252! − 1 mod N = 67210629098, gcd(214! − 1, N) = 1‬‬


‫‪253! − 1 mod N = 8182353513, gcd(253! − 1, N) = 350437‬‬
‫اذن عند استخدام ‪ 253! − 1‬نحصل على العامل االولي ‪ p = 350437‬للعدد ‪ ،N‬والعامل االخر هو ‪ .480661‬الحظ ان‬

‫‪p − 1 = 350436 = 22 . 3.19.29.53‬‬


‫يجب ان نذكر انه لتجنب خطر تحليل العدد ‪ N‬بواسطة خوارزمية ‪ PollardP-1‬فان االعداد االولية ‪ ،p‬و ‪ q‬يجب ان يتم احتيارها‬ ‫‪‬‬
‫بحيث ان كل من ‪ p − 1‬و ‪ q − 1‬التحلل الى عوامل اولية‪.‬‬
‫عندما تكون قيمة ‪ B‬قريبة من ‪ √N‬فانها التكون اسرع من خوارزمية ‪.trial division‬‬ ‫‪‬‬

‫‪ 5.5‬خوارزميات اللوغاريتم المتقطع‬


‫ّ‬
‫ّيعبر عن مسالة ايجاد اللوغاريتم المتقطع بالشكل التالي‪ :‬ليكن لدينا الزمرة ‪ ،G‬وليكن لدينا المولد ‪ g ∈ G‬و〉‪ ،y ∈ 〈g‬رتبة (عدد‬
‫عناصر) 〉‪ 〈g‬هو ‪ ،q‬اوجد ‪ x‬بحيث ‪.g x = y mod q‬‬
‫يمكن استعمال مهاجمة ‪ brute-force‬لمعرفة قيمة ‪ x‬وذلك بحساب جميع القيم ‪ .... ،g 3 ،g 2 ،g1‬لحين الحصول على‬ ‫‪‬‬
‫‪.y = g x‬‬
‫‪ o‬من الواضح ان هذه الطريقة تحتاج الى )‪𝒪(q‬وقت و )‪ 𝒪(1‬خزن‪.‬‬
‫هناك اسلوب اخر وهو توليد جميع القيم ‪ g i‬ابتداءا وتشكيل قائمة مرتبة من االزواج ) ‪ (i, g‬اعتماد على القيمة الثانية‪.‬‬
‫‪i‬‬
‫‪‬‬
‫عند تقديم ‪ y‬يتم البحث بهذه القائمة لغرض ايجاد تطابق ‪ y = g x‬واسترجاع قيمة ‪.x‬‬ ‫‪‬‬

‫‪ o‬يتطلب هذا االسلوب)‪ 𝒪(q‬خزن‪ .‬لذا نحتاج الى تصميم خوارزميات تجد قيمة ‪ x‬بوقت و وخزن اقل‪.‬‬

‫‪ 5.5.5‬خوارزمية ‪Shanks‬‬
‫طورت هذه الخوارزمية من قبل ‪ Shanks‬وتدعى احيانا بخوارزمية ‪.Baby-step/Giant-step‬‬ ‫ّ‬ ‫‪‬‬
‫ز‬
‫‪ ‬تعتمد هذه الخوار ميه على مبدا مهاجمة "االلتقاء في المنتصف" لحساب اللوغاريتم المتقطع‪.‬‬
‫‪ ‬في هذه الخوارزمية يتم اعادة ك تابة ‪ x‬بالشكل‪:‬‬
‫‪ ،x = im + j ‬بحيث ⌉‪ ،0 ≤ i, j < m ،m = ⌈√q‬وبذلك فإن ‪ g x = y‬يصبح بالشكل ‪ ،g im+j = y‬مما يعني‬
‫‪.gim = y(g−1)j‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬
‫امنية البيانات‬ ‫نظرية االعداد والزمر‬

‫تعمل الخوارزمية على حساب ‪ g im‬لتشكل القائمة ) ‪ L1 = (i, g im‬لجميع قيم ‪ .i‬ثم ترفع العدد ‪g −1 y‬لجميع قيم ‪ j‬للحصول على‬
‫القائمة ) ‪ ،L2 = (j, yg −j‬ومن ثم تقوم الخوارزمية بالبحث عن العنصر المشترك ‪ (i, z) ∈ L1 ،z‬و ‪ (j, z) ∈ L2‬لتخرج الناتج‬
‫بالشكل ‪.im + j‬تعمل الخوارزمية بوقت )‪ 𝒪(m‬وبخزن )‪.𝒪(m‬‬
‫توضح الخوارزمية (‪ )5.11‬طريقة عمل خوارزمية ‪ Shanks‬اليجاد اللوغاريتم المتقطع‪.‬‬

‫‪Algorithm (5.11): Shanks algorithm‬‬


‫‪Input: Group G, generater g, group order q, integer y‬‬
‫‪Output: x: g x = y mod q‬‬
‫⌉‪m = ⌈√q‬‬
‫‪for i = 0 to m − 1:‬‬
‫‪compute g i and store (i, g mi ) in L1‬‬
‫‪Sort L1 according to the second coordinate‬‬
‫‪for j = 0 to m − 1:‬‬
‫‪compute g −j and store (j, yg −j ) in L2‬‬
‫‪Sort L2 according to the second coordinate.‬‬
‫‪Find (i, z) ∈ L1 and (j, z) ∈ L2‬‬
‫‪return im + j mod q‬‬

‫∗‬
‫مثال(‪ :)5.22‬افترض اننا نرغب بحساب ‪ log 3 525‬في الزمرة ‪.ℤ809‬‬

‫الحظ‪ ،‬ان ‪ 809‬هو عدد اولي وبذلك فإن ‪ ،y = 525،g = 3 ،q = 808‬و ‪.m = ⌈√808⌉ = 29‬‬ ‫‪‬‬
‫عندها ‪.g 29 mod 809 = 99‬‬ ‫‪‬‬
‫نحسب اوال القائمة المرتبة )‪ (i, 99i : i = 0 … 28‬لنحصل على القائمة ‪.L1‬‬ ‫‪‬‬
‫‪−1‬‬
‫ثم نحسب القائمة المرتبة ‪ (j, 525 × (3j ) mod 809) : j = 0 … ,28‬للحصول على القائمة ‪.L2‬‬ ‫‪‬‬
‫من القائمتين نجد العنصر المشترك )‪ (10,644‬في ‪ L1‬و )‪ (19,644‬في ‪،L2‬‬ ‫‪‬‬
‫هنا‪ ،‬يكون االخراج هو ‪.(im + j) = (10 × 29 + 19 mod 808 = 309‬‬ ‫‪‬‬
‫يمكن التاكد من صحة الحل بفحص ‪.3209 mod 808 = 525‬‬ ‫‪‬‬

‫جامعة البصرة‪-‬كلية التربية للعلوم الصرفة‪-‬قسم علوم الحاسوب‬ ‫‪2021-2020‬‬ ‫د‪ .‬اياد ابراهيم عبد السادة‬

You might also like