0Pricing
Cryptology Academy · درس

مشاركة Shamir للسر: رياضيات كثيرات الحدود

أنشئ كثيرات حدود على حقول منتهية لتقسيم الأسرار واستعادتها

مشاركة Shamir للسر: رياضيات كثيرات الحدود درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.

الفكرة الأساسية

تشفّر مشاركة الأسرار لشامير (1979) السر على أنه المقطع الصادي (f(0)) لكثيرة حدود عشوائية من الدرجة (k-1) فوق حقل منتهٍ. تحدد أي k نقاط كثيرة الحدود تحديدًا وحيدًا (باستخدام استيفاء لاغرانج)، بينما لا تكشف أقل من k نقاط شيئًا.

إنشاء كثيرة الحدود

لمشاركة السر S بعتبة k بين n من الأطراف: اختر عددًا أوليًا p > S وn. اختر معاملات عشوائية a_1, ..., a_{k-1}. عرّف f(x) = S + a_1*x + a_2*x^2 + ... + a_{k-1}*x^{k-1} (mod p). يتلقى الطرف i الحصة (i, f(i)).

مثال: مخطط 2 من 3

السر S=7، وp=17، وk=2 (كثيرة حدود خطية). اختر a_1=3. ‏f(x)=7+3x mod 17. الحصص: (1,10)، (2,13)، (3,16). تحدد أي نقطتين المستقيم. ‏f(0)=7. نقطة واحدة بمفردها: عدد لا نهائي من المستقيمات المحتملة، ولا تكشف أي معلومات عن S.

استيفاء لاغرانج

بالنظر إلى k نقاط (x_1,y_1),...,(x_k,y_k)، أعد بناء f(0) باستخدام لاغرانج: S = sum_i y_i * prod_{j≠i} (0-x_j)/(x_i-x_j) mod p. تُجرى جميع العمليات الحسابية بترديد p. لا تستخدم الفاصلة العائمة — إعادة بناء دقيقة فوق الحقل المنتهي.

تنفيذ Python

from functools import reduce def lagrange(shares, p): xs = [s[0] for s in shares] ys = [s[1] for s in shares] result = 0 for i, (xi, yi) in enumerate(shares): num = reduce(lambda a,b: a*b%p, [(-xj)%p for j,xj in enumerate(xs) if j!=i], 1) den = reduce(lambda a,b: a*b%p, [(xi-xj)%p for j,xj in enumerate(xs) if j!=i], 1) result = (result + yi * num * pow(den, p-2, p)) % p return result

مخطط برهان الأمان التام

بالنسبة إلى k-1 حصة، يوجد كثير حدود واحد فقط من الدرجة k-1 يمر عبر تلك النقاط k-1 لكل قيمة سر ممكنة S. لذلك، عند معرفة k-1 حصة، تكون كل قيمة لـ S ضمن [0, p-1] متساوية الاحتمال — ولا تُكشف أي معلومات.

اختيار العدد الأولي

يجب أن يكون p أكبر من السر ومن n. ومن الخيارات الشائعة: p = 2^127-1 (عدد أولي من نوع Mersenne) للأسرار ذات 128 بت. يضمن ذلك أن تتسع جميع الحصص في 128 بت وأن تكون العمليات الحسابية فعّالة. ويمكن بدلاً من ذلك استخدام p = 2^521-1 للأسرار ذات 512 بت.

التحقق من الحصص

لا توفر SSS الأساسية أي سلامة للحصص؛ إذ يمكن لمساهم خبيث تقديم حصة زائفة، مما يؤدي إلى إعادة بناء سر خاطئ. تنشر Feldman VSS (Verifiable Secret Sharing) التزامات على الصورة g^{a_i} mod p، مما يتيح التحقق من الحصص من دون كشف كثير الحدود.

المشاركة الاستباقية للأسرار

يمكن تحديث الحصص دورياً: يُولَّد كثير حدود جديد بالسر نفسه S، ثم تُوزَّع حصص جديدة، وتصبح الحصص القديمة غير صالحة. فإذا اخترق مهاجم أحد المساهمين بعد التحديث، فلن تفيده الحصة القديمة. ويُستخدم ذلك في أنظمة إدارة المفاتيح طويلة الأمد.

التطبيقات

ssss (سطر أوامر Linux)، وpython-secret-sharing، ويستخدم hashicorp/vault تقنية SSS لآلية الختم الخاصة به، كما تستخدم محفظة Trezor للأجهزة تقنية SSS لنسخ احتياطي من بذرة المحفظة (SLIP-39). وتعمل جميعها على حقول أولية كبيرة.

القيود

تتطلب SSS موزّعاً موثوقاً لتوليد الحصص وتوزيعها، إذ يعرف الموزّع السر. أما السيناريو الذي لا يتوفر فيه موزّع فيتطلب DKG (Distributed Key Generation). تكشف إعادة البناء السر لمن يملك k حصص — ويمكن تجنب ذلك باستخدام MPC أو التوقيعات ذات العتبة.

اختبار سريع

في مشاركة أسرار Shamir من النوع (3,5)، ما الحد الأدنى لعدد الحصص اللازمة لإعادة بناء السر؟

مراجعة

ترمّز SSS الخاصة بـ Shamir الأسرار على هيئة مقاطع تقاطع كثير الحدود مع محور y. وتستعيد استيفاءات Lagrange السر من k حصص. وتوفر أمناً مثالياً قائماً على نظرية المعلومات عند امتلاك أقل من k حصة. التالي: المشاركة المرئية والمشاركة الإضافية.

الأسئلة الشائعة

هل درس «مشاركة Shamir للسر: رياضيات كثيرات الحدود» مجاني؟

نعم — نص درس «مشاركة Shamir للسر: رياضيات كثيرات الحدود» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.

ماذا ستتعلم في «مشاركة Shamir للسر: رياضيات كثيرات الحدود»؟

أنشئ كثيرات حدود على حقول منتهية لتقسيم الأسرار واستعادتها تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟

لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «مشاركة Shamir للسر: رياضيات كثيرات الحدود»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟

نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مشكلة مشاركة الأسرار
  2. مشاركة Shamir للسر: رياضيات كثيرات الحدود
  3. مشاركة الأسرار المرئية والمخططات الجمعيّة
  4. توقيعات العتبة وحالات الاستخدام الواقعية
← العودة إلى Cryptology Academy