خوارزمية Pohlig -Hellman لحساب اللوغاريتمات المنفصلة
-
24-09-2019 - |
سؤال
أنا أعمل على ترميز خوارزمية Pohlig-Hellman ، لكنني أواجه مشكلة أفهم الخطوات في الخوارزمية بناءً على تعريف الخوارزمية.
الذهاب عن طريق ويكي خوارزمية:
أعلم أن الجزء الأول 1) هو حساب العامل الرئيسي لـ P -1 - وهو أمر جيد.
ومع ذلك ، لست متأكدًا مما أحتاج إلى القيام به في الخطوات 2) حيث تقوم بحساب الآثار المشتركة:
Let x2 = c0 + c1(2).
125(180/2) = 12590 1 mod (181) so c0 = 0.
125(180/4) = 12545 1 mod (181) so c1 = 0.
Thus, x2 = 0 + 0 = 0.
و 3) وضع المعاملات معا وحل في نظرية الباقي الصينية.
هل يمكن لأي شخص أن يساعد في شرح ذلك باللغة الإنجليزية البسيطة (i) - أو رمز كاذب. أرغب في ترميز الحل بنفسي ، لكن لا يمكنني إحراز أي تقدم آخر إلا إذا فهمت الخوارزمية.
ملاحظة: لقد فعلت الكثير من البحث عن هذا وقرأت S. Pohlig و M. Hellman (1978). "خوارزمية محسّنة لحساب اللوغاريتمات على GF (P) وأهميتها التشفير ولكنها لا تزال غير منطقية بالنسبة لي.
شكرا لك مقدما
تحديث: كيف يبقى Q (125) ثابتًا في هذا المثال.
حيث يبدو كما هو الحال في هذا المثال وكأنه يحسب كل من كل الوقت.
لأكون أكثر تحديداً ، لا أفهم كيف يتم حساب ما يلي: الآن قسّم 7531 على A^C0 للحصول على7531(a^-2) = 6735 mod p
.
المحلول
لنبدأ بالفكرة الرئيسية وراء Pohlig-Hellman. افترض أننا تم إعطاؤنا Y و G و P وأننا نريد العثور على X ، من هذا القبيل
y == gx (وزارة الدفاع P).
(أنا أستخدم == للإشارة إلى علاقة معادلة). لتبسيط الأشياء ، أفترض أيضًا أن ترتيب G هو p-1 ، أي أصغر k إيجابي مع 1 == gك (وزارة الدفاع P) هو k = p-1.
طريقة غير فعالة للعثور على X ، ستكون ببساطة تجربة جميع القيم في النطاق 1 .. P-1. أفضل إلى حد ما هو "خطوة عملاقة خطوة الأطفال" الطريقة التي تتطلب o (p0.5) عمليات حسابية. كلتا الطريقتين بطيئة للغاية بالنسبة للكبير. يعد Pohlig-Hellman تحسنًا كبيرًا عندما يكون لـ P-1 العديد من العوامل. أي افترض ذلك
p-1 = nr
ثم ما يقترحه Pohlig و Hellman هو حل المعادلة
ذن == (زن)ض(وزارة الدفاع P).
إذا أخذنا لوغاريتمات على أساس G على كلا الجانبين ، فهذا هو نفسه مثل
سجلز(y) == سجلز(ذن) == NZ (MOD P-1).
يمكن تقسيم n ، العطاء
سجلز(y) == z (mod r).
وبالتالي x == z (mod r).
هذا تحسن ، حيث يتعين علينا فقط البحث في نطاق 0 .. R-1 لحل z. ومرة أخرى ، يمكن استخدام "خطوة العملاقة للأطفال" لتحسين البحث عن z. من الواضح أن القيام بذلك مرة واحدة ليس حلاً كاملاً بعد. أي على المرء أن يكرر الخوارزمية أعلاه لكل عامل رئيسي R من P-1 ثم استخدام نظرية الباقي الصينية للعثور على X من الحلول الجزئية. هذا يعمل بشكل جيد إذا كان P-1 مربعًا مجانيًا.
إذا كان P-1 قابلاً للقسمة بواسطة قوة أولية ، فيمكن استخدام فكرة متماثلة. على سبيل المثال ، لنفترض أن p-1 = mqك. في الخطوة الأولى ، نحسب z بحيث x == z (mod q) كما هو موضح أعلاه. بعد ذلك نريد تمديد هذا إلى حل x == z '(mod q2). على سبيل المثال إذا p-1 = mq2 ثم هذا يعني أنه يتعين علينا العثور على z 'من هذا القبيل
ذم == (زم)z ' (وزارة الدفاع P).
نظرًا لأننا نعلم بالفعل أن z '== z (mod q) ، يجب أن يكون z' في المجموعة {z ، z+q ، z+2q ، ... ، z+(q-1) q}. مرة أخرى ، يمكننا إما إجراء بحث شامل عن Z 'أو تحسين البحث باستخدام "خطوة عملاقة للأطفال". يتم تكرار هذه الخطوة لكل أسس Q ، وهذا هو من معرفة x mod qأنا نحن نشتق بشكل متكرر x mod qأنا+1.
نصائح أخرى
أنا أرفعها بنفسي الآن (جافا). أنا أستخدم Pollard-Rho للعثور على العوامل الأولية الصغيرة لـ P-1. ثم باستخدام Pohlig-Hellman لحل مفتاح DSA الخاص. y = g^x. أواجه نفس المشكلة..
تحديث: "لكي أكون أكثر تحديداً ، لا أفهم كيف يتم حساب ما يلي: الآن قسّم 7531 على A^C0 للحصول على 7531 (A^-2) = 6735 mod p."
إذا وجدت modinverse لـ^c0 ، فسيكون منطقيًا
يعتبر