الإفصاح الانتقائي وإثباتات الشروط: ما يُظهره كلّ منهما
الإفصاح الانتقائي يُظهر للمتحقّق الحقول التي يطلبها فقط؛ وفحص الشرط يُظهر الإجابة فقط. بنت Essence كليهما، وهي دقيقة بشأن من يرى القيمة الكامنة وراء كلّ منهما.
لنفترض أن مكانًا يحتاج إلى معرفة أن عميلًا تجاوز 18 عامًا. يحمل العميل بيانات اعتماد من مُصدِر يثق به المكان، تُظهر اسمه وتاريخ ميلاده وعنوانه ورقم وثيقته. يمكن أن يُعطى المكان بيانات الاعتماد كاملة، وعندها سيحتفظ ببيانات لم يحتجها قط. ويمكن أن يُعطى تاريخ الميلاد فقط: أقل، لكنه لا يزال معلومة دقيقة ودائمة. أو يمكن أن يُعطى الإجابة فقط.
الخيار الثاني من هذه الخيارات هو الإفصاح الانتقائي. والثالث هو فحص الشرط. كلاهما يعني مشاركة أقل، لكنهما يُظهران للمتحقّق أشياء مختلفة، وقد بنت Essence كليهما.
إظهار الحقول المطلوبة فقط
تستخدم Essence معيار SD-JWT للإفصاح الانتقائي، وهو الصيغة التي تقوم عليها بيانات الاعتماد القابلة للتحقّق بصيغة SD-JWT. عند إصدار بيانات الاعتماد، تصبح كل مطالبة عنصرًا منفصلًا، ممزوجًا بقيمة عشوائية بحيث لا يمكن تخمينه. ولا يحمل الجزء الموقّع من بيانات الاعتماد إلا بصمة لكل عنصر، ويوقّع المُصدِر المجموعة كاملة مرة واحدة.
عندما يقدّم الحامل بيانات الاعتماد، يختار العناصر التي يكشفها. ويتحقّق المتحقّق من كل عنصر مكشوف مقابل بصمته ويتحقّق من توقيع المُصدِر. فيعرف المطالبات التي عُرضت عليه ولا شيء عن الباقي، ويعرف أن المُصدِر ضمن ما رآه.
في إصدارنا لشهر أغسطس بنينا هذا في Essence من خلال OpenID4VCI وOpenID4VP، وهما معيارا OpenID لإصدار بيانات الاعتماد وتقديمها، مع SD-JWT بوصفها صيغة بيانات الاعتماد التي تقبلها المنصة.
اختبار عبر محاولة الإفراط في المشاركة
كجزء من الإصدار نفسه، أجرينا اختبار تقديم كاملًا. قُدّمت بيانات اعتماد حقيقية موقّعة بصيغة SD-JWT وتمّ التحقّق منها. ثم رُفضت أربع نسخ معدّلة كلّ على حدة: توقيع تم العبث به، وقيمة nonce خاطئة، ومفتاح غير مسجّل، ومُصدِر غير مسجّل.
الجزء الكاشف كان إفراطًا متعمّدًا في المشاركة. كشف الحامل حقلًا لم يطلبه المتحقّق، ولم يمرّره المتحقّق. لم يعد إلا الحقل المطلوب. وهذا ما تحتاجه الجهة المعتمِدة: ما طلبته، من دون أن يصل شيء إضافي إلى أنظمتها عن طريق الخطأ.
إظهار الإجابة فقط
أحيانًا يقول حقل واحد أكثر من اللازم. تاريخ الميلاد يجيب عن سؤال «فوق 18 عامًا» وعن الكثير غيره. أما فحص الشرط فيُرجع الإجابة فقط، وهناك طريقتان للحصول على إجابة في Essence.
الأولى تستخدم الإفصاح الانتقائي. يمكن للمُصدِر أن يضع إجابة جاهزة في بيانات الاعتماد كمطالبة مستقلة، مثل علامة تفيد بأن العمر فوق 18 عامًا، ويكشف الحامل تلك المطالبة وحدها. يرى المتحقّق الإجابة ولا يرى التاريخ أبدًا.
الثانية هي فحص الشرط في خدمة بيانات الاعتماد في المنصة، المعمول به منذ يونيو 2026. تقرأ الخدمة القيمة، وتحسب ما إذا كان الشرط متحقّقًا، وإذا كان كذلك، تُرجع تلك الإجابة مع التزام موقّع بالقيمة. يعرف المتحقّق الإجابة، لا القيمة، ولأن الإجابة تأتي موقّعة، يستطيع التحقّق من أن شيئًا لم يُعدَّل.
ومن المفيد أن نكون دقيقين بشأن من يرى ماذا في هذا الطريق الثاني. المتحقّق لا يرى تاريخ الميلاد أبدًا. أما المنصة فتراه، لأنها هي التي تجري الحساب.
إبقاء عمليات التقديم منفصلة
إخفاء المطالبات نصف المهمة. والنصف الآخر هو منع الربط بين عمليات تقديم منفصلة. توقيع المُصدِر على بيانات اعتماد بصيغة SD-JWT هو نفسه في كل مرة تُعرَض فيها، لذلك يمكن لمتحقّقَين يقارنان ملاحظاتهما أن يعرفا أنهما رأيا بيانات الاعتماد نفسها، حتى لو رأى كلّ منهما حقولًا مختلفة.
تعالج متطلبات OpenID4VC في إصدارنا لشهر أغسطس هذا الأمر بإصدار بيانات الاعتماد على دفعات من نسخ موقّعة كلّ منها على حدة، مع استخدام نسخة جديدة لكل تقديم، بحيث يرى كل متحقّق توقيعًا مختلفًا. وسجلات الدفعات موجودة في شيفرة المنصة منذ ذلك الإصدار.
ماذا يعني هذا لك
إذا كنت تطلب بيانات من الأشخاص، فاطلب أضيق شيء يجيب عن سؤالك. الحقل أفضل من المستند، والإجابة أفضل من الحقل، لأن كل خطوة إلى الأسفل تعني أقل مما يجب الاحتفاظ به وتأمينه وحذفه في النهاية. وعندما تقيّم أي فحص يحافظ على الخصوصية، اسأل سؤالين: من يرى القيمة الأساسية، وما الذي يحتفظ به المتحقّق؟ إذا كنت تجري فحوصًا للعمر، أو فحوصًا للأهلية، أو أي قرار يحتاج إلى معلومة بدلًا من ملف، فيسعدنا أن نُريك كيف تتلاءم هذه معه.
تاريخ النشر 17 سبتمبر 2026
