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

التحقّق طويل الأمد

Spec: ETSI EN 319 142-1 Spec: RFC 6960 Spec: ISO 32000-2, §12.8.4 Evidence: Standard-backed

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

الخاصّية الخطِرة في التوقيع الرقمي أنّه قد يفقد قابليته للتحقّق بصمت مع أنّه يبدو كما هو. لا يتغيّر شيء في الملف. قد تتوقّف سلطة الشهادات عن الإجابة عن الأسئلة المرتبطة بشهادة انتهت صلاحيّتها منذ زمن طويل. والمدقّق الذي كان يحتاج إلى تلك الإجابة لم يعد يستطيع الحصول عليها. والعقد الذي كان صالحاً بلا أدنى شكّ يوم توقيعه قد يصبح “تعذّر التحديد” بعد عقد من الزمن. وبعد عقد من الزمن هو بالضبط الوقت الذي يُرجَّح فيه نشوب نزاع وتبلغ فيه المخاطر أعلى مستوياتها. إذا كان التزام الاحتفاظ لديك يُقاس بالسنوات، فتوقيع بلا تحقّق طويل الأمد هو خطر لا يظهر إلّا لاحقاً.

  • تعتمد صلاحيّة التوقيع على وقائع خارجيّة حسّاسة للوقت: نافذة صلاحيّة الشهادة، وحالة السحب من خادم.
  • تصبح تلك الوقائع غير قابلة للحصول عليها بعد انتهاء صلاحيّة الشهادة — فالسلطات ليست ملزَمة بالإجابة إلى الأبد.
  • يلتقط التحقّق طويل الأمد الأدلّة وقت التوقيع — الشهادات، واستجابات ⁨OCSP⁩، وقوائم ⁨CRL⁩ — ويُضمِّنها في مخزن أمان المستند (⁨DSS⁩) الخاصّ بالمستند.
  • ثمّ يُثبت ختمٌ زمني للمستند أنّ الأدلّة نفسها كانت موجودة وصالحة في تلك اللحظة، ويمكن تجديده قبل أن تضعف حمايته هو نفسه.
  • والنتيجة: يحمل المستند دليله بنفسه. لم يعد التحقّق يعتمد على بقاء خادم ما متاحاً.

المبدأ هو: “اجمع الدليل ما دمت قادراً، ثمّ اختمه.” عندما يُنتج ⁨NextPDF⁩ توقيعاً طويل الأمد، يجمع سلسلة الشهادات واستجابات السحب التي تُثبت أنّ شهادة التوقيع كانت سليمة في لحظة التوقيع. ويكتبها في ⁨DSS⁩ كقيم مُضمَّنة لا كروابط. ثمّ يضيف ختماً زمنياً للمستند فوق كلّ ذلك. القيم المُضمَّنة هي جوهر المسألة. أمّا الرابط إلى خادم سحب فهو بالضبط الاعتماد الذي وُجد التحقّق طويل الأمد لإزالته.

تُكتب الطبقات طويلة الأمد كمراجعات مستند منفصلة، وتُلحَق من دون المساس بنطاق البايتات الخاصّ بالتوقيع الأصلي. ويظلّ التوقيع الأوّل قابلاً للتحقّق. تُضاف المادّة طويلة الأمد حوله، لا داخله. وعندما تتقادم حماية الختم الزمني للمستند نفسه، يتيح المستوى الأرشيفي إضافة ختم زمني آخر فوقه. والنتيجة سلسلة يضمن فيها كلّ ختم زمني كلّ ما تحته.

  1. Sign The signature and its signed attributes are written (B-B).
  2. Capture evidence Certificate chain, OCSP responses, and CRLs proving the certificate was valid at signing time are gathered.
  3. Embed in the DSS The evidence is written into the document as embedded values, not links (B-LT).
  4. Seal with a document timestamp A timestamp proves the embedded evidence existed and was valid at that moment (B-LTA).
  5. Renew before it weakens Another timestamp is layered before the previous one’s protection ages, extending verifiability.
كيف يبقي التحقّق طويل الأمد التوقيع قابلاً للتحقّق عبر الزمن: يُنشَأ التوقيع، وتُلتقَط الأدلّة ما دامت قابلة للحصول عليها، وتُختَم الأدلّة بختم زمني للمستند، ويُجدَّد الختم قبل أن يضعف.

Evidence: Standard-backed تُذكر الحاجة بوضوح في Spec: RFC 6960, §4.4.4 : يمكن لحالة السحب أن تبقى أطول من نافذة صلاحيّة الشهادة، وتمنح آليّة قطع الأرشفة المدقّقين سياقاً تاريخياً لتقرير ما إذا كان التوقيع موثوقاً في الوقت الذي أُنتج فيه، حتّى بعد انتهاء صلاحيّة الشهادة المستخدَمة في التحقّق. ولهذا يوجد التحقّق طويل الأمد. تبقى إجابات السحب متاحة لمدة محدودة فقط، لذا التقطها قبل أن تنقضي تلك المدة.

تعود الآليّة إلى ETSI. Spec: ETSI EN 319 142-2, §5.5 ينصّ على أنّ السلوك طويل الأمد يتطلّب مخزن أمان مستند يحمل بيانات التحقّق كقيم، يليه ختم زمني للمستند. Spec: ISO 32000-2, §12.8.3.3 يربط الأمر معاً: PAdES هو CAdES CMS مُدمَجاً مع التحقّق طويل الأمد (§12.8.4) و قاموس الختم الزمني للمستند (§12.8.5). كما أنّ Spec: ETSI EN 319 142-2, §6.3.2.2 هو سبب وضع الختم الزمني مبكّراً: ينبغي تطبيقه مباشرةً بعد التوقيع ليكون الوقت المسجَّل أقرب ما يكون إلى الوقت الفعلي.

يطبّق محرّك NextPDF ذلك عبر المستويين B-LT وB-LTA: قيم سحب مُضمَّنة في DSS، وختم زمني للمستند يختمها، وحلقة أرشفة تُجدِّد الختم — مكتوبةً كمراجعات مُلحَقة تترك نطاق البايتات الخاصّ بالتوقيع الأصلي سليماً.

المستوى الذي تختاره هو القرار طويل الأمد. تجعل واجهة ⁨API⁩ المتطلّب صريحاً قبل أن تلتزم به.

<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
// B-LT embeds validation material; B-LTA adds the renewable seal.
$level = SignatureLevel::PAdES_B_LTA;
$level->requiresDss(); // true → certificates + revocation embedded
$level->requiresDocumentTimestamp(); // true → a document timestamp seals the DSS
// The high-level seam produces the level end to end: it embeds the DSS
// dictionary and appends the DocTimeStamp revision in one call.
$document
->setSignature($cert, SignatureLevel::PAdES_B_LTA, $tsaClient)
->save();
// The engine produces this only if the deployment can supply what it needs
// (a TSA, and revocation data reachable at signing time). It fails with an
// actionable error rather than embedding nothing and reporting success.

المسار عالي المستوى المعروض أعلاه — setSignature($cert, SignatureLevel::PAdES_B_LTA, $tsaClient)->save() — أصبح الآن موصولاً من طرف إلى طرف؛ كانت الإصدارات السابقة تكشف تعداد المستوى ولكن لا تكشف المسار الذي يُنتجه. ما تكتبه هو البنية: قاموس DSS ومراجعة DocTimeStamp الموصوفة في Spec: ISO 32000-2, §12.8 . هذه البنية ليست مُختبَرة لمطابقة الملف الشخصي، ولا يؤكّد المسار أيّ شيء بشأن مطابقة ETSI أو الصلاحيّة القانونيّة. يتطلّب المستويان B-LT وB-LTA كلاًّ من Pro وEnterprise؛ وعلى أيّ مستوى آخر يفشل المسار فشلاً مغلقاً بدلاً من إنتاج نتيجة جزئيّة. كما يفشل المستند المُشفَّر فشلاً مغلقاً بالنسبة إلى B-LT وB-LTA؛ فلا يُكتب DSS ولا الختم الزمني للمستند فوق محتوى مُشفَّر، لأنّ ذلك سيكتبهما على نحوٍ غير صحيح.

لا يمكن استدراك هذا الاختيار لاحقاً بتكلفة زهيدة. يجب التقاط أدلّة السحب وقت التوقيع، ما دامت الإجابات لا تزال موجودة. واتّخاذ قرار “سنضيف التحقّق طويل الأمد لاحقاً” يعني عادةً اتّخاذ قرار ضمني: “لن تكون لدينا الأدلّة عندما نحتاج إليها.”

المفهوم الخاطئ هو: “التحقّق طويل الأمد يجعل التوقيع صالحاً إلى الأبد.” هو لا يجعل أيّ شيء صالحاً. بل يحفظ القدرة على الفحص لصلاحيّة تأكّدت وقت التوقيع. إذا كانت الشهادة قد سُحبت بالفعل عند توقيع المستند، فإنّ تضمين تلك الواقعة لا يُنقذ التوقيع، بل يوثّق الفشل بشكل دائم. التحقّق طويل الأمد آليّة لحفظ الدليل، لا آليّة لإنشائه. والمفهوم الخاطئ الثاني هو الاعتقاد بأنّ B-LTA خيار “اضبطه وانسَه.” يحمي الختم الزمني الأرشيفي بخوارزميات تتقادم هي نفسها. ومن دون تجديد، يرث ملفّ B-LTA في النهاية الهشاشة نفسها التي كان يُفترض أن يُفلت منها.

يجمع ⁨NextPDF⁩ الأدلّة ويُضمِّنها ويكتب الأختام الزمنيّة. لكنه لا يملك صحّة الأدلّة ولا جدول تجديدها. فاستجابات السحب لا تكون أفضل من السلطة التي أصدرتها ولا من اللحظة التي جُلبت فيها. والاتّصال بتلك السلطة وقت التوقيع مسؤوليّة نشر. ولا يمكن للمحرّك أن يختلق إجابة سحب لم يتمكّن من الحصول عليها. والتجديد الأرشيفي عمليّة تشغيليّة. يمكن للمحرّك أن يضيف ختماً زمنياً آخر، لكنّه لا يمكنه أن يقرّر متى تتطلّبه سياسة الاحتفاظ لديك. أمّا ما إذا كانت البيانات المُضمَّنة ستُعَدّ كافية لاحقاً فهو سؤال متعلّق بالمدقّق والسياسة، يُعالَج في التحقّق من توقيع على الوجه الصحيح. لا تؤكّد هذه الصفحة المقبوليّة القانونيّة، التي تعتمد على الولاية القضائيّة والموقِّع والشهادة.

توفّر التحقّق طويل الأمد بحسب المستوى:

Long-term validation (DSS embedding and the archival timestamp loop) — edition availability
Edition Availability
Core Not in this edition
Pro

PAdES B-T — ختم زمني موثوق على قيمة التوقيع — متوفّر، لكن مادّة التحقّق المُضمَّنة (DSS) ليست جزءاً من B-T.

Enterprise

PAdES B-LT وB-LTA: قيم شهادة وسحب مُضمَّنة في ⁨DSS⁩، والختم الزمني للمستند الذي يختمها، وحلقة الأرشفة القابلة للتجديد.

  • التحقّق طويل الأمد (⁨LTV⁩) — تضمين الأدلّة اللازمة للتحقّق من توقيع، كي لا يعتمد التحقّق لاحقاً على خدمات خارجيّة.
  • مخزن أمان المستند (⁨DSS⁩) — بنية ⁨PDF⁩ التي تحمل الشهادات وبيانات السحب المُضمَّنة للتحقّق طويل الأمد.
  • استجابة OCSP — بيان موقَّع عن حالة سحب شهادة في لحظة زمنيّة محدّدة (Online Certificate Status Protocol، RFC 6960).
  • ⁨CRL⁩ — قائمة سحب الشهادات (⁨Certificate Revocation List⁩)؛ قائمة موقَّعة بالشهادات المسحوبة.
  • الختم الزمني للمستند — ختم زمني وفق RFC 3161 يُطبَّق على المستند بأكمله، ويُثبت أنّ الأدلّة المُضمَّنة كانت موجودة وصالحة في ذلك الوقت.
  • حلقة الأرشفة — إضافة ختم زمني جديد للمستند بشكل متكرّر قبل أن تضعف حماية الختم السابق، ممّا يمدّ قابليّة التحقّق.