[b][font="]بروتوكول النقل الغاقل:[/font][/b][b] [/b][b] [/b][b][i]Oblivious Transfer[/i][/b][b][/b]
إن
هذا البروتوكول سيستخدم لاحقاً في بروتوكولات أكثر تعقيدا.ً إن القضية تستخدم
إرسال كلا الرسالتين حيث أن لا المرسل و المستقبل سوف يعلمون أي رسالة أرسلت حتى
وقت لاحق, و كمثال على هذه المشكلة نقف قطعة نقدية لمسافة معينة حيث ينقف المرسل
القطعة النقدية و يسجل النتيجة (طرة أو نقش) و يكتب الآخر (المستقبل) احتمال
استقرار القطعة النقدية, يتلاقى الشخصان فيما بعد و يتبادلان قطع الورق، في هذه
الحالة إذا كانت الكلمات على الأوراق متطابقة سيربح المستقبل و عدا ذلك سيربح
المرسل.
لنفترض أن
الشخصان لا يستطيعان الالتقاء لتبادل قطع الورق, ليكن المثال التالي Pو N اتفقا على الخروج مساءاً حيث اقترح Pعلى
التلفون أن ينقف قطعة نقدية فإذا كانت (طرة) سوف يدفع العشاء و إن كانت (نقش) سوف
يدفع(N), إن(P) يعلم أنه إذا نقف (N) القطعة فإنه بالتأكيد سيقول (طرة) بغض
النظر عن النتيجة, لأنه لو كان في مكانه سيفعل نفس الشئ و بالرغم من ذلك يجب
عليهما أن يقررا على التلفون لكي يذهب أحدهما و يحضر المال من البنك.
هذه
المشكلة تدعى " النقل الغافل" : يريد (P) أن يرسل رسالة إلى (N) مع احتمال
(0.5) بأن
الرسالة سوف تصل، و رسالة (P) هي بأنه سوف يدفع .إذا وصلت هذه الرسالة إلى (N) سيكون (P) مجبر على الدفع, أما إذا حدث خطأ في
الإرسال فإن (N)
سيكون مجبر على الدفع. إذا كان احتمال استقبال رسالة (P) هو(0.5) فهو مساو لعملية نقف قطعة نقدية
بعدل.
[b][i]خطوات بروتوكول "النقل الغافل"
:[/i][/b]
1- يختار (P) زوجين من مفاتيح التشفير العامة ( التي
هي في الأصل أربعة), و سوف نشير أحياناً إلى هذه المفاتيح كتوابع: D[sub]J[/sub]
, E[sub]J[/sub] , D[sub]I[/sub] , E[sub]I[/sub] :
حيث أن E[sub]I[/sub] تمثل النقل العام مع المفتاح (i )، D[sub]I[/sub] تمثل
النقل الخاص
[u]هذا يعني[/u] : D[sub]I[/sub]
(E[sub]I[/sub] (M)) =M
من أجل أي رسالة (M)
و كذلك الأمر بالنسبة للـ(D[sub]J[/sub]
, E[sub]J[/sub]).
2-
يختار(N) مفتاح تشفير تقليدي K[sub]n[/sub].
3-
يرسل (P) المفاتيح العامة (i , j) إلى Nو
يحتفظ بالمفاتيح الخاصة.
4-
يختار (N) واحد بشكل عشوائي يدعوه (K) و يرسل E[sub]k[/sub](K[sub]n[/sub]) إلى (P) هذا يعني بأن (N) يشفر مفتاحه التقليدي (K[sub]n[/sub])
مع واحد من المفاتيح العامة (E[sub]k[/sub]).
5-
يختار (P) إما (j)
أو(i), و لنفترض بأنه اختار (j) يحسب P=D[sub]J[/sub](E[sub]k[/sub](K[sub]n[/sub])) .
و
هذه عبارة عن سلسلة من الثنائية لـ (P) لذلك لا يستطيع أن يعلم فيما إذا كان (j) هو الـ (k) الذي اختاره (N). إذا كان (k=j) عندها تكون العلاقة (P) هي مفتاح (N) الذي هو (K[sub]n[/sub]). عدا ذلك إن العلاقة (P) هي سلسلة من الأرقام الثنائية بلا
معنى.
6-
يحسب (P) التابع (E) للرسالة (سوف أدفع) أي E( M ,
P) حيث M هي الرسالة و P هي العلامة و يرسلها إلى (N) مع القيمة (j).
7-
يفك (N) تشفير رسالة (P) مع (K[sub]n[/sub]) حيث يختار (n) و يختار (P)الـ (j) إذا كان (k=j) سوف يربح (N ) لأنه استطاع فك رسالة (P), أما إذا كان (k<>j) سوف يخسر (N) و سوف يحصل N على سلسلة من الثبات غير المفهومة.
8-
بعد معرفة الرابح سيعطي P
المفاتيح الخاصة (i , j )
إلى (N) حيث من هذه المفاتيح يستطيع (N) التحقق في إذا كان (K) يساوي (i) أو (j).
[b][u] [/u][/b]
[b][i]تحليل البروتوكول :[/i][/b]
في
البداية يختار (N)
أحد مفاتيح (P),
التي تغلف (N)
بواستطها المفتاح (k[sub]n[/sub])
و تعيدها إلى (P),
إن (P) لا يستطيع أن يعلم اختيار (N) لأنه لا يستطيع فك التشفير للوصول إلى
(k[sub]n[/sub]), لذلك عندما يختار (P)الـ(j) سيكون احتمال تطابق خياره مع خيار (N) هو (0.5).
يشفر (P) الرسالة التي يجب على (N) إعادة توليدها لكي يقنع (P) بأنه اختار نفس مفتاح (N).
إذا اختارا نفس
المفتاح فإن (k[sub]n[/sub])
يفك تشفير الرسالة إذا لم يفكها فإن (k[sub]n[/sub])يولد سلسلة ليس لها معنى و عندما يلتقيان لاحقاً يستطيعان أن
يتبادلا المفاتيح و يتحقق من أن كل طرف قد طبق قواعد البرتوكول.
إن نقف قطعة
نقدية عبر الهاتف ليس بالمسألة الهامة و لكن هذا البروتوكول سيكون أساساً
للبروتوكولات القادمة.
[b][font="]بروتوكول توقيع العقد :[/font][/b][b] [/b][b] [/b][b][i]Contract Signing
Protocol[/i][/b][b][/b]
لنفترض
بأن (C) و (D) اتفقا على توقيع عقد لتثبيت اتفاقيتهم
و كل منهما يود إنجاز شئ معين من خلال العقد.
فمثلاً يقوم (C) ببيع سيارته لـ (D) إذا وافق (D) على منحه جزءاً هاماً من حصته في
المطعم, حيث (C)
في كاليفورنيا و(D)
في نيويورك, إن (C)
لن يوقع العقد في البداية و يرسله إلى (D) لأن ذلك سيجعله تحت رحمة (D), إذا جلب (C) السيارة يستطيع (D) تمزيق العقد تاركاً ( C) مع السيارة أو يوقع (D) العقد جابراً (C) على جلب السيارة.
لقد أصبح (C) مسؤولاً عن العقد حال توقيعه دون أن
يعلم إن كان (D)
سيوقعه أما لا.
و الوضع مماثل
في حالة توقيع (D)
على العقد حيث أنه سيكون مسؤولاً عنه و لكن ليس (C).
من الناحية
العملية, فإن هذه المسألة تقع على عاتق الموقعين.
نريد هنا أن ننشأ بروتوكول من أجل توقيع عقود بواسطة الحاسوب,
إن الناحية المادية و كتابة التواقيع هي ما نريد تجنبه في حلنا هذا.
و كحل
آخر يمكن اللجوء إلى طرف ثالث موثوق : حيث يوقع كل من (C) و (D) نسخة من العقد و يمنحانها إلى الطرف
الثالث الذي أصبح معه نسختان مع التوقيع, إن هذا يجعل هناك شاهد أدخلاه بإرادتهم
على العقد.
عندما يعلن
الطرف الثالث استلامه لرسالة موقعة من كلا الطرفين, يوقع (C) نسخة أخرى و يبعثها إلى (D) و يوقع (D) نسخة أخرى و يبعثها إلى (C) , يعلم (C) و (D) الطرف الثالث أن العقد أصبح قيد
التنفيذ و يدمر الطرف الثالث كل العقود التي تحمل توقيع واحد منهما.
نريد تجنب
اللجوء إلى طرف ثالث إذا كان ذلك ممكناً:
هذا البروتوكول
يتطلب شيئان:
[i]التعهد[/i][i](Commitment)[/i]:
بعد
مرحلة معينة يصبح كلا الطرفين مقيد بالعقد الموقع و لكن قبل ذلك لا أحد يكون
مقيداً.
[i]عدم قابلية
التزوير[/i][i](Unforgeability)[/i][i]:[/i] يجب على
التوقيعات الموجودة على العقد أن تكون
قابلة للتدمير بشكل موثوق هذا يعني أنه
يجب أن يكون بإمكان كلا الطرفين أن يثبت بأن التوقيع الآخر هو توقيع موثوق.
على البرتوكول
أن يكون قادراً على تنفيذ هذين الشيئين بشكل غير مباشر, و هذا البروتوكول قابل
للاستخدام في تطبيق حاسوبي.
[b][u] [/u][/b]
[b][i]بروتوكول
التوقيع العقد غير المباشر[/i][/b][b][i]:[/i][/b]
[right][b][i] [/i][/b][b][i]Indirect
contract-Signing Protocol[/i][/b][/right]
هذا
البروتوكول مصمم من قبل (even ), (goldreish)
و (lempel) خطواته:
1-
يختار (C) بشكل عشوائي (2n) مفتاح من
أجل نظام تشفير مفتاح تقليدي مثل (DES) و لتكن هذه المفاتيح هي c[sub]1[/sub] , c[sub]2[/sub] ,
-------, c[sub]2n[/sub]
, تعالج المفاتيح كأزواج (c[sub]1[/sub] , c[sub]n+1[/sub]) ,
(c[sub]2[/sub] c[sub]n+2[/sub]) و هكذا.
2-
من أجل كل مفتاح
يحسب (C) العلاقة (S) E[sub]CiI[/sub]
= C[sub]i[/sub] من أجل رسالة (S) التي تكون
محتوياتها غير مناسبة, يرسل (C)الـ (c[sub]1[/sub]) حتى c[sub]2n[/sub] إلى (D) هذا يعني بأن (D) يملك نسخة الرسالة (S) المشفرة باستخدام المفاتيح المختلفة.
3-
يوافق (C) على أنه قد تعهد بالعقد إذا استطاع (D) التعرف على كلا المفتاحين (c[sub]i[/sub]) و
(c[sub]n+i[/sub]) أياُ كان (i) .
[i]ملاحظة:[/i]
ندعو ci
ﺑ "S-puzzle “
و المفتاح c[sub]n+i[/sub]
ﺒ "Solution
“.
4-
يكرر (D) هذه الخطوات الثلاثة بشكل مماثل,
باستخدام المفاتيح d[sub]i[/sub] و الرسالة المشفرة Di.
5-
يرسل (C) كلا الزوجين ci و c[sub]n+i[/sub] حيث أن 1<= i <= n إلى D عبر النقل الغافل, هذا يعني : ان C يرسل كل من ci أو c[sub]n+i[/sub] إلى D و لكن لا هو و لا هي متأكدان أيهما قد
استلم و كذلك يفعل D مع d[sub]i[/sub] و d[sub]n+i[/sub] حيث 1<= i<= n عند ذلك يمتلك كل من(C) و (D) نصف أسرار الآخر .
6-
ليكن P هو طول كل من ci و di :
[b]For 1<= j <= p [/b]
[b]Begin[/b]
[center][center]C يبعث البت رقم (j) من المفتاح ci حيث 1<=i<=n إلى D.
D يبعث البت رقم (j) من المفتاح di حيث 1<=i<=n إلى C .[/center][/center]
[b]End[/b]
7-
لنفترض بأن لا
أحداً قد توقف باكراً, في النهاية كل منهما يحصل على P(bits) من
كل أسرار الآخر و هكذا يكون العقد قد وقع.
حالما تبدأ الخطوة السادسة فإن كل من (D) و (C) يحصل على نصف أسرار الآخر, من غير
المحتمل تحديد المفتاح c[sub]n+i[/sub]
من الرسالة المشفرة C[sub]n+i[/sub]
على افتراض أن D
[font="]استلمت[/font][font="] ci. عند هذه الخطوة من المعالجة تكون (D) قد استلمت بت
واحد من المفتاح c[sub]n+i[/sub] و بعد ذلك
البت التالي و من ثم البت التالي .......[/font][font="]الخ .[/font]
مع نحياتي Dr.Houssam