تخطَّ إلى المحتوى

كيف يعمل

Safeparts مبني على ثلاث أفكار بسيطة:

  1. تقسيم السر بحيث لا تكشف حصة واحدة عنه.
  2. الاسترداد فقط عندما تتوفر حصص كافية.
  3. كشف الأخطاء مبكراً (حصص خاطئة، أخطاء كتابة، عبارة مرور خاطئة).

المشاركة بالعتبة (k من n)

Section titled “المشاركة بالعتبة (k من n)”

أنت تختار العتبة (k من n):

  • أقل من k حصص: الاسترداد مستحيل.
  • أي k حصص: الاسترداد ينجح.

تحت الغطاء هذا شبيه بـ Shamir secret sharing فوق مجال منتهٍ (GF(256)) بشكل byte-wise.

بشكل مبسط، كل حصة تمثل نقطة واحدة على كثير حدود من الدرجة k-1. عند امتلاك k نقاط يمكنك إعادة تركيب كثير الحدود وبالتالي استعادة السر. وأقل من k نقاط لا يعطي معلومات مفيدة عن السر.

Safeparts يعمل على بايتات. GF(256) يسمح بعمليات رياضية على قيم 8-bit، بحيث ينطبق التقسيم مباشرة على بيانات ثنائية بأي شكل.

المشاركة بالعتبة تعطي سرية حتى تكتمل k حصص، لكنها وحدها لا تكشف أخطاء الإدخال دائماً. Safeparts يضيف وسم سلامة كي يفشل الاسترداد عندما تكون الحصص خاطئة.

  • إذا كانت الحصص تالفة أو من مجموعات مختلفة، تفشل عملية الاسترداد.
  • إذا أخطأت في كتابة حصة، تفشل عملية الاسترداد.

هناك أيضاً فحوصات على مستوى الترميز:

  • Base58Check يحتوي checksum.
  • حصص الكلمات تحتوي CRC16 لكشف كثير من أخطاء الكتابة.

حماية اختيارية بعبارة مرور

Section titled “حماية اختيارية بعبارة مرور”

يمكن لـ Safeparts تشفير السر قبل التقسيم.

بشكل مبسط:

  • اشتقاق مفتاح من عبارة المرور (Argon2id).
  • تشفير السر (ChaCha20-Poly1305).
  • تقسيم البايتات المشفرة إلى حصص.

هذا يعني أن المهاجم يحتاج k حصص وعبارة المرور معاً.

يمكن ترميز الحصص لسيناريوهات مختلفة:

  • مناسبة للأتمتة (نسخ/لصق): base64url, base58check
  • مناسبة للكتابة اليدوية: صيغ الكلمات

راجع الترميزات.

بيانات الحزمة (لماذا يجب أن تتطابق الحصص)

Section titled “بيانات الحزمة (لماذا يجب أن تتطابق الحصص)”

الحصص ليست مجرد “أجزاء”. كل حصة تحمل بيانات تعريف تضمن أنها من نفس المجموعة:

  • العتبة (k) وعدد الحصص (n)
  • هوية المجموعة / إصدار الصيغة
  • بيانات السلامة

ولهذا يجب أن يفشل خلط حصص من عمليات تقسيم مختلفة بشكل واضح.

  • لا يحفظ الحصص بأمان نيابةً عنك. قرارات التخزين هي حد الأمان الحقيقي.
  • لا يمنع من يملك k حصصاً بشكل شرعي من الاسترداد.