التوقيع الرقمي

يتيح لك التوقيع الرقمي التأكّد من عدم تلاعب أي شخص ببياناتك. ويوفر صحة وسلامة البيانات الموقَّعة، ولكن ليس سريتها. إنه غير متماثل، أي أنه يستخدم مفتاحين (المفتاح العام والمفتاح الخاص).

تتضمّن التوقيعات السمات التالية:

  • الأصالة: من المستحيل إنشاء توقيع يتحقّق PublicKeyVerify.Verify(signature, message) من صحة بياناته ما لم يكن لديك المفتاح الخاص.
  • غير متماثل: يستخدم إنشاء التوقيع مفتاحًا مختلفًا عن التحقق منه. يتيح لك ذلك توزيع المفتاح العام للتحقق من التوقيعات على أطراف لا يمكنها إنشاء توقيعات بنفسها.

إذا كنت لا تحتاج إلى عدم التماثل، يمكنك استخدام عنوان MAC الأبسط والأكثر فعالية بدلاً من ذلك.

يتم تمثيل وظيفة التوقيعات الرقمية في Tink كزوج من العناصر الأساسية:

  • PublicKeySign لتوقيع البيانات
  • PublicKeyVerify للتحقّق من التوقيع

اختيار نوع المفتاح

نقترح استخدام ECDSA_P256 لمعظم حالات الاستخدام، ولكن هناك مجموعة متنوعة من الخيارات. وبشكل عام، ينطبق ما يلي:

  • ويعتبر ECDSA_P256 هو الخيار الأكثر استخدامًا والذي يُعدّ تلقائيًا معقولاً. يُرجى العلم بأنّ توقيعات ECDSA غير قابلة للخداع.
  • ينشئ ED25519 توقيعات حتمية ويوفر أداءً أفضل من ECDSA_P256.
  • ينشئ RSA_SSA_PKCS1_3072_SHA256_F4 توقيعات حتمية وتقديم أفضل أداء لإثبات الملكية (ولكن التوقيع أبطأ بكثير من ECDSA_P256 أو ED25519).

الحد الأدنى من ضمانات الأمان

  • يمكن أن يكون طول البيانات المطلوب توقيعها عشوائيًا.
  • مستوى أمان 128 بت ضد الهجمات التكيُّفية للرسائل المختارة للمخططات المستندة إلى المنحنى الإهليلجي
  • مستوى أمان 112 بت ضد هجمات الرسائل التكيُّفية المختارة للمخططات المستندة إلى RSA (يسمح بمفاتيح 2048 بت)

مثال على حالة الاستخدام

يُرجى الاطِّلاع على أريد توقيع البيانات رقميًا.

قابلية الاستخدام

نظام التوقيع مرن، إذا تمكن المهاجم من إنشاء توقيع صالح مختلف لرسالة موقعة بالفعل. لا يمثل ذلك مشكلة في معظم السيناريوهات، إلا أن المبرمجين يفترضون ضمنيًا في بعض الحالات أن التوقيعات الصالحة فريدة من نوعها، ويمكن أن يؤدي ذلك إلى نتائج غير متوقعة.