تتيح لك الأداة الأساسية "التوقيع الرقمي" التحقّق من أنّه لم يتم التلاعب ببياناتك. ويضمن ذلك صحة وسلامة البيانات الموقَّعة، ولكن ليس سريتها. وهو غير متماثل، أي أنّه يستخدم مفتاحَين (المفتاح العام والمفتاح الخاص).
تتضمّن العنصر الأساسي "التوقيع الرقمي" السمات التالية:
- الأصالة: من المستحيل إنشاء توقيع يُجري
PublicKeyVerify.Verify(signature, message)
عملية التحقّق منه، ما لم يكن لديك المفتاح الخاص. - غير المتماثل: يستخدم إنشاء التوقيع مفتاحًا مختلفًا عن مفتاح التحقّق منه. يتيح لك ذلك توزيع المفتاح العام لإثبات صحة التوقيعات على الأطراف التي لا يمكنها إنشاء التوقيعات بنفسها.
إذا لم تكن بحاجة إلى عدم التناظر، ننصحك باستخدام العنصر الأساسي MAC الأسهل والأكثر فعالية بدلاً من ذلك.
يتم تمثيل وظيفة التوقيعات الرقمية في Tink كزوج من العناصر الأساسية:
- PublicKeySign لتوقيع البيانات
- PublicKeyVerify للتحقّق من التوقيع
اختيار نوع المفتاح
ننصحك باستخدام ECDSA_P256 لمعظم حالات الاستخدام، ولكن هناك مجموعة متنوعة من options. بشكل عام، تنطبق القواعد التالية:
- ECDSA_P256 هو الخيار الأكثر استخدامًا والإعداد التلقائي المقبول. يُرجى العلم أنّ توقيعات ECDSA قابلة للتلاعب.
- ينشئ ED25519 توقيعات حتمية ويقدّم أداءً أفضل مقارنةً بـ ECDSA_P256.
- ينشئ RSA_SSA_PKCS1_3072_SHA256_F4 توقيعات محدّدة ويقدّم أفضل أداء للتحقّق (ولكنّ التوقيع أبطأ بكثير من ECDSA_P256 أو ED25519).
الحد الأدنى من ضمانات الأمان
- يمكن أن تكون البيانات التي سيتم التوقيع عليها بأي طول عشوائي.
- مستوى أمان 128 بت ضد هجمات الرسائل المختارة التكيُّفية للأنظمة المستندة إلى منحنى الإقليدي
- مستوى أمان 112 بت ضد هجمات الرسائل المُختارة التكيُّفية للخطط المستندة إلى RSA (يسمح بمفاتيح 2048 بت)
قابلية التغيير
يكون مخطّط التوقيع قابلاً للتلاعب إذا كان بإمكان المهاجم إنشاء توقيع مختلف صالح لرسالة تم توقيعها من قبل. على الرغم من أنّ هذا ليس مشكلة في معظم السيناريوهات، يفترض المبرمجون في بعض الحالات ضمنيًا أنّ التوقيعات الصالحة فريدة، ويمكن أن يؤدي ذلك إلى نتائج غير متوقّعة.