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

التحقق من التوقيع: جانب التحقق التشفيري في AdES / PAdES

يتحقق ⁨NextPDF Enterprise⁩ تشفيريًّا من التوقيعات الرقمية. يقرأ جانب التحقق بنية رسائل التشفير (⁨CMS⁩) SignedData أو رمز طابع زمني وفق ⁨Request for Comments⁩ (⁨RFC⁩) 3161 من ملف ⁨PDF⁩، ويعيد حساب الملخّصات، ويفحص التوقيعات، ويربط كل توقيع بشهادة التوقيع الخاصة به، ويتحقق من سلسلة الشهادات، بما في ذلك معالجة سياسة الشهادات، بالاستناد إلى مخزن مراسي ثقة يوفّره المستدعي. تصف هذه الصفحة السلوك، وتبيّن ما يُتحقَّق منه، وما يُرفَض بالإغلاق الآمن، والخوارزميات المدعومة، وموضع حدّ الثقة.

هذا منفصل عن التحقق البنيوي، الذي يُجري فحوص سياسة بنيوية للقراءة فقط ولا يُجري أي عمليات تشفير عمدًا. وهو أيضًا النظير على جانب التحقق لـمنتِج التوقيع، الذي يكتب بُنى ⁨PDF Advanced Electronic Signatures⁩ (⁨PAdES⁩) ⁨B-LT⁩ / ⁨B-LTA.⁩

Terminal window
composer require nextpdf/enterprise:^3

التحقق قائم على الأدلة ومُغلَق بأمان: أي فحص لا يمكن إثباته إيجابيًّا لا يُنتج نتيجة إيجابية. تجتمع العناصر أدناه في نتيجة واحدة يحملها ValidationReport.

التحقق التشفيري من ⁨CMS⁩ / رمز الطابع الزمني. يُحلِّل مكدّس ⁨DER⁩ مستقل وصارم ومحدّد الطول بنيةَ ⁨CMS⁩ SignedData ورمزَ الطابع الزمني وفق ⁨RFC 3161.⁩ لا يُقبَل الرمز إلا عندما يحمل SignerInfo واحدًا بالضبط، وتُحلَّل سماته الموقَّعة بصرامة، وتُحَلّ شهادة الموقِّع، وتُطابق سمة ⁨message-digest⁩ الملخّصَ المُعاد حسابه، ويثبت ربط شهادة التوقيع الإلزامي (⁨ESS⁩ signing-certificate-v2)، ويُتحقَّق من توقيع SignerInfo فوق السمات الموقَّعة المُعاد ترقيمها. تتبع قاعدة مطابقة الملخّص نموذج التحقق في ⁨RFC 5652⁩ §5.6 / §5.4: يعيد المتلقّي حساب ملخّص رسالة المحتوى، ولا يكون التوقيع صحيحًا إلا عندما تساوي تلك القيمة سمةَ messageDigest الموقَّعة. لا يثق المتحقّق أبدًا بملخّص يوفّره المنتِج.

التحقق من شهادة ⁨TSA⁩ عند ⁨genTime.⁩ قيمة genTime الخاصة بالطابع الزمني هي اللحظة بتوقيت ⁨UTC⁩ التي أُنشئ فيها الرمز (⁨RFC 3161⁩ §2.4.2). يُتحقَّق من شهادة توقيع ⁨TSA⁩ عند تلك اللحظة، لا عند “الآن”: يجب أن يكون الاستخدام الموسَّع لمفتاحها id-kp-timeStamping واحدًا وحرجًا (⁨RFC 3161⁩ §2.3)، وتُقيَّم نافذة صلاحيتها وسلسلتها ومصدر مرساة ثقتها وإبطالها جميعًا بالنسبة إلى genTime. السلسلة السليمة بنيويًّا التي لا تصل إلى مرساة ثقة مُهيَّأة لا يمكن أن تدعم أبدًا نتيجة إيجابية.

توقيعات مستندات ⁨PAdES⁩ الأساسية المنفصلة. يُجري مُستخرِج فعلي تحققًا أساسيًّا حقيقيًّا من ⁨Advanced Electronic Signatures⁩ (⁨AdES⁩) / ⁨PAdES⁩ لتوقيع مستند منفصل: يُعاد حساب ملخّص الرسالة فوق نطاق البايتات الموقَّع ويُقارَن، ويُتحقَّق من التوقيع، ويكون ربط شهادة التوقيع إلزاميًّا. يحلّ هذا محلّ البديل السابق الذي كان بنيويًّا فقط. يتشارك متحقّق الطابع الزمني ومُستخرِج توقيع المستند مدقّقَ ⁨ESS⁩ واحدًا للمُصدِر والرقم التسلسلي، فلا يمكن أن ينحرف تحليل ربط الشهادة.

سلسلة تغطية ⁨DocTimeStamp⁩ الأرشيفية. يتحقق validateArchivalTimestampChain() من سلسلة من رموز DocTimeStamp الموثوقة فوق نطاقات بايتات ملف ⁨PDF⁩ بوصفها دليلًا أرشيفيًّا من نوع ⁨B-LTA.⁩ تُربَط بصمة كل رمز ببايتات ByteRange الفعلية التي يغطّيها، وتتبع السلسلة ترتيب ⁨ETSI⁩ الصارم، وتكون سلسلة ⁨TSA⁩ لكل رمز مرتكزة إلى مرساة ثقة، ويجب أن تغطّي السلسلة الملف حتى علامة نهاية الملف لديه. لا تتحقق نتيجة ناجحة كليًّا إلا لسلسلة كاملة ومرتكزة إلى مرساة ثقة وتغطّي حتى ⁨EOF.⁩

معالجة سياسة الشهادات (⁨RFC 5280⁩ §6.1.4). يطبّق التحقق من المسار معالجة كاملة لسياسة الشهادات: شجرة سياسة ذات بنية عُقدية، وتعيين سياسة مع البديل ⁨anyPolicy⁩، وطيّ policyConstraints / inhibitAnyPolicy، بدعم من قارئ ⁨DER⁩ لامتداد السياسة مُغلَق بأمان. يحدّد متغيّرا حالة معالجة المسار explicit_policy وinhibit_anyPolicy (⁨RFC 5280⁩ §6.1.2) ما إذا كانت شجرة سياسة صالحة وغير فارغة مطلوبة؛ وتُقاطِع خطوة الإنهاء شجرةَ السياسة الصالحة مع مجموعة السياسة الأولية للمستخدم (⁨RFC 5280⁩ §6.1.4). عند عدم وجود سياسات مطلوبة ومع قبول anyPolicy، تكون المعالجة غير مقيَّدة، وهذا هو الوضع الافتراضي غير المتغيّر عن السلوك السابق.

يقبل جانب التحقق مجموعة الخوارزميات أدناه ويُغلِق بأمان على أي شيء خارجها: الخوارزمية غير المدعومة تعني تحققًا مرفوضًا، لا تمريرة صامتة أبدًا.

العائلةمدعومةملاحظات
⁨RSA⁩ (⁨PKCS⁩#1 ⁨v1.5⁩)rsaEncryption مع ⁨SHA-2⁩، ومعرّفات ⁨OID⁩ من نوع sha*WithRSAEncryptionمقبولة
⁨ECDSA⁩المنحنيات ⁨P-256⁩ و⁨P-384⁩ و⁨P-521⁩مقبولة
⁨RSASSA-PSS⁩غير مدعومة ← إغلاق آمن
⁨EdDSA⁩غير مدعومة ← إغلاق آمن
ملخّصات ⁨SHA-3⁩غير مدعومة ← إغلاق آمن
⁨SHA-1⁩ضعيفة: التوقيع الأساسي الذي يُتحقَّق منه باستخدام ⁨SHA-1⁩ يُخفَّض إلى فشل في قيود التشفير، لا إلى تمريرة

استخدم جانب التحقق عبر المحرّك العام وعقود ⁨Core⁩ / ⁨Pki.⁩ أصناف الاستراتيجية الفعلية داخلية.

النوعالصنفالدور
AdESValidationEngineصنفنقطة الدخول إلى جانب التحقق: التحقق من التوقيع والسلسلة الأرشيفية.
AdESValidationEngine::validateArchivalTimestampChain()دالةالتحقق من سلسلة تغطية ⁨DocTimeStamp⁩ موثوقة فوق نطاقات بايتات ملف ⁨PDF.⁩
ValidationReportنتيجةالنتيجة المنظَّمة: الحالة العامة إضافةً إلى نتائج كل فحص على حدة.
PathValidatorInterfaceواجهة (NextPDF\…\Pki)واجهة ⁨SPI⁩ للتحقق من مسار التصديق التي يعتمد عليها المحرّك.
PathValidationOptionsكائن قيمةضوابط معالجة السياسة: requireExplicitPolicy وinhibitAnyPolicy وinhibitPolicyMapping وmaxPolicyFanout.
TrustAnchorStoreInterfaceواجهةمجموعة المراسي الموثوقة التي يوفّرها المستدعي والتي تُقيَّم السلسلة بالاستناد إليها.

لدالة السلسلة الأرشيفية هذا التوقيع:

public function validateArchivalTimestampChain(
string $pdfBytes,
array $dssData = [],
?TrustAnchorStoreInterface $anchors = null,
): ValidationReport;

لا تتحقق نتيجة ناجحة كليًّا إلا عندما تكون سلسلة ⁨DocTimeStamp⁩ قد جرى التحقق منها بالكامل، ومرتكزة إلى مرساة ثقة، وتغطّي الملف حتى علامة ⁨EOF⁩ لديه.

يأخذ CertificateChainValidator::validate() مجموعةَ سياسة أولية (مجموعة السياسة الأولية للمستخدم وفق ⁨RFC 5280⁩). الوضع الافتراضي هو anyPolicy، وهو غير مقيَّد، لذلك لا تتأثر السلسلة العادية. مرّر مجموعة صريحة، أو اضبط requireExplicitPolicy، لاشتراط شجرة سياسة صالحة وغير فارغة.

use NextPDF\Enterprise\Security\Validation\AdESValidationEngine;
$report = $engine->validateArchivalTimestampChain($pdfBytes, [], $trustAnchors);
if ($report->isTotalPassed()) {
// A complete, trust-anchored, EOF-covering DocTimeStamp chain.
}
use NextPDF\Enterprise\Security\Validation\AdESValidationEngine;
use Psr\Log\LoggerInterface;
final readonly class ArchivalEvidenceCheck
{
public function __construct(
private AdESValidationEngine $engine,
private LoggerInterface $logger,
) {}
public function check(string $pdfBytes, TrustAnchorStoreInterface $anchors): bool
{
$report = $this->engine->validateArchivalTimestampChain($pdfBytes, [], $anchors);
foreach ($report->findings as $finding) {
$this->logger->info('archival.finding', [
'check' => $finding->checkId,
'status' => $finding->status->value,
]);
}
// A positive result proves byte-range coverage by a trusted timestamp
// chain — it is one input to your decision, not a legal conclusion.
return $report->isTotalPassed();
}
}

تغييرات سلوكية وملاحظات الترقية

قسم بعنوان «تغييرات سلوكية وملاحظات الترقية»

انتقل جانب التحقق من القبول البنيوي / الزمني إلى التحقق التشفيري الكامل. إن كنت تعتمد على السلوك الأقدم والأكثر تساهلًا، فراجِع هذه التغييرات.

  • الإغلاق الآمن على طابع زمني يمكن التعرّف عليه لكن لا يمكن التحقق منه. رمز ⁨DocTimeStamp⁩ أو رمز أرشيفي كان يمرّ سابقًا على أسس بنيوية وزمنية يتطلّب الآن تحققًا تشفيريًّا كاملًا: التوقيع و⁨message-digest⁩ وربط شهادة التوقيع. الرمز الذي لا يُتحقَّق منه لم يعد يُنتج إثباتًا إيجابيًّا للوجود؛ بل يرتبط بنتيجة غير محدَّدة أو فاشلة.
  • توقيعات ⁨SHA-1⁩ الأساسية مُخفَّضة لا ممرَّرة. توقيع مستند أساسي يُتحقَّق منه لكنه يستخدم ⁨SHA-1⁩ يُبلَّغ عنه بوصفه فشلًا في قيود التشفير، لا تمريرة كاملة.
  • معالجة سياسة الشهادات وفق ⁨RFC 5280⁩ §6.1.4 مُنفَّذة. السلسلة التي يبلغ explicit_policy لديها الصفر مع شجرة سياسة صالحة فارغة تفشل الآن، بما في ذلك عندما يقودها policyConstraints داخلي للسلسلة من نوع requireExplicitPolicy. السلاسل الافتراضية غير المقيَّدة (لا سياسات مطلوبة، مع قبول anyPolicy) لا تتأثر.
  • تغيّر توقيع المُنشئ (كسر للتوافق الرجعي). يحدّد AdESValidationEngine::__construct() الآن نوعَ معامله $chainValidator بوصفه واجهة ⁨SPI⁩ من نوع Pki\PathValidatorInterface، مع وضعٍ افتراضي كسول إلى Pki\CertificateChainValidator::withDefaults(). كان سابقًا من نوع Ltv\CertificateChainValidator الفعلي. يجب على المستدعي الذي حقن مدقّق ⁨LTV⁩ الفعلي أن يحقن بدلًا منه تنفيذ واجهة ⁨SPI⁩ من نوع ⁨Pki.⁩ يلفّ مدقّق ⁨Pki⁩ محرّك المسار البنيوي ذاته ويضيف قيود الأسماء ومعالجة السياسة؛ ولا يؤثر ذلك في المدخلات الافتراضية المطابقة.
  • الخوارزمية غير المدعومة ≠ غير حاسمة. ⁨RSASSA-PSS⁩ و⁨EdDSA⁩ و⁨SHA-3⁩ مرفوضة بالإغلاق الآمن، لا مؤجَّلة. إن استخدمها موقّعوك، فلن يُرجع جانب التحقق هذا نتيجة إيجابية.
  • الثقة نسبية إلى المرساة. التحقق دائمًا نسبي إلى مخزن مراسي الثقة الذي توفّره. مجموعة مراسٍ فارغة أو خاطئة تُنتج نتيجة “غير موثوقة” بصرف النظر عن الصحة التشفيرية.
  • ⁨genTime⁩ لا الآن. تُحكَم شهادة ⁨TSA⁩ عند genTime الخاصة بالرمز. شهادة ⁨TSA⁩ التي انتهت صلاحيتها منذ ذلك الحين يمكنها مع ذلك أن تدعم رمزًا أُنشئ بينما كانت صالحة؛ أما شهادة لم تَصِر بعدُ صالحة عند genTime فلا يمكنها ذلك.
  • تغطية ⁨EOF.⁩ يجب أن تغطّي السلسلة الأرشيفية المستند حتى علامة ⁨EOF⁩ لديه. الطابع الزمني الذي يغطّي بادئة الملف فقط لا يثبت تغطية المستند بكامله.
  • “غير مُثبَت الإبطال” ليس “جيدًا”. يحتاج حُكم Valid إلى حالة غير مُبطَلة على نحو قاطع. إذا عاد كلٌّ من ⁨OCSP⁩ و⁨CRL⁩ بنتيجة “غير معروف” أو “غير متاح”، فإن توقيعًا سليمًا تشفيريًّا وصحيح السلسلة ومرتكزًا إلى مرساة ثقة يُحسَم إلى Indeterminate. وفّر مادة ⁨OCSP/CRL⁩ “جيدة” ومضمَّنة لشهادة الموقِّع لكي تبلغ Valid.

يجري التحقق داخل العملية فوق بايتات ملف ⁨PDF⁩ المُوفَّرة ومادة التحقق المضمَّنة؛ وتتناسب الكلفة مع طول السلسلة وعدد الطوابع الزمنية. لا يُجري التحقق أي ذهاب وإياب عبر الشبكة. تأتي مادة الإبطال والثقة مما يوفّره المستدعي أو مما هو مضمَّن في المستند. التحقق حتمي: المدخلات نفسها ومراسي الثقة نفسها تُنتج التقرير ذاته.

  • الإغلاق الآمن هو الوضع الافتراضي. ترفض كل خطوة قبول أي مادة لا يمكنها التحقق منها إيجابيًّا. يمنع هذا المستندَ من ادّعاء صلاحية لم يثبتها المحرّك قط.
  • الإلحاق بعد الطابع الزمني تُحبِطه تغطية ⁨EOF.⁩ لأن بصمة كل طابع زمني أرشيفي مربوطة ببايتات ByteRange الفعلية، ولأن السلسلة يجب أن تبلغ ⁨EOF⁩، فإن المحتوى المُلحَق بعد طابع زمني غير مُغطَّى به ولا يكتسب وزنه الإثباتي.
  • عامِل المدخل بوصفه عدائيًّا. بايتات ⁨PDF⁩ و⁨CMS⁩ المضمَّنة ورموز الطوابع الزمنية الواردة من مصادر غير موثوقة يحلّلها قارئ ⁨DER⁩ صارم ومحدّد الطول يرفض الترميزات المُشوَّهة أو غير محدَّدة الطول.

موضع إقامة البيانات وتخفيفات معلومات التعريف الشخصية

قسم بعنوان «موضع إقامة البيانات وتخفيفات معلومات التعريف الشخصية»

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

القياس الآمن عن بُعد وتنقية السجلات

قسم بعنوان «القياس الآمن عن بُعد وتنقية السجلات»

تحمل النتائج معرّفات الفحوص وحالاتها. قد تكرّر بعض التشخيصات أسماء جهات الشهادات أو أرقامها التسلسلية؛ فنقِّ هذه الحقول أو احجبها قبل تمرير السجلات إلى وجهات مشتركة.

بيّن هذه الحدود في المخرجات الموجَّهة للمستخدم كي لا تُحمَّل النتيجة الإيجابية أكثر مما تحتمل.

  • validateArchivalTimestampChain() يثبت تغطية نطاق البايتات لا قابلية الوصول عبر ⁨xref.⁩ يُثبِت أن سلسلة طوابع زمنية موثوقة تغطّي تشفيريًّا نطاقات بايتات المستند حتى ⁨EOF.⁩ لا يُجري تحليلًا على مستوى ⁨xref⁩ أو تحليلًا لقابلية الوصول إلى الكائنات عبر startxref؛ فذلك خارج النطاق بحكم التصميم. قاعدة تغطية ⁨EOF⁩، مع الارتكاز إلى الثقة، تُحبِط هجمات الإلحاق بعد الطابع الزمني، لكنها ليست تحليلًا لرسم بياني للكائنات.
  • خارج النطاق بحكم التصميم. سجلّات الأدلة (⁨RFC 4998⁩ / ⁨RFC 6283⁩)؛ والتحقق من رموز الطوابع الزمنية بـ ⁨RSASSA-PSS⁩ أو ⁨EdDSA⁩ أو ⁨SHA-3⁩؛ وتكامل القائمة الموثوقة (⁨TSL⁩) وسلطة الطابع الزمني المؤهَّلة؛ وجلب إبطال ⁨TSA⁩ عبر الإنترنت — كلها غير مُوفَّرة في جانب التحقق هذا. يُقيَّم الإبطال من مادة متاحة بالفعل للمتحقّق.
السلوكالمرجعالحالة
قيمة التوقيع / رمز الطابع الزمني مخزَّن بترميز ⁨DER⁩ في /Contents⁨ISO 32000-2⁩ §12.8.1مُحلَّل ومُتحقَّق منه
قاموس الطابع الزمني للمستند⁨ISO 32000-2⁩ §12.8.5مقروء للسلسلة الأرشيفية
يعيد المتلقّي حساب ملخّص المحتوى؛ ويجب أن يساوي سمة ⁨messageDigest⁩⁨RFC 5652⁩ §5.6 / §5.4مُنفَّذ
شهادة ⁨TSA⁩ تحمل id-kp-timeStamping واحدًا حرجًا من نوع ⁨EKU⁩⁨RFC 3161⁩ §2.3مفحوص عند ⁨genTime⁩
⁨genTime⁩ هي لحظة الإنشاء بتوقيت ⁨UTC⁩⁨RFC 3161⁩ §2.4.2مُستخدَمة بوصفها لحظة التحقق
متغيّرا حالة معالجة السياسة (explicit_policy وinhibit_anyPolicy)⁨RFC 5280⁩ §6.1.2مُعالَجة
الإنهاء يُقاطِع شجرة السياسة الصالحة مع مجموعة السياسة الأولية للمستخدم⁨RFC 5280⁩ §6.1.4مُنفَّذ
مدخلات ⁨DSS⁩ والطوابع الزمنية للمستند للتوقيعات طويلة الأمد⁨ETSI EN 319 142-2⁩ §5.5مُتحقَّق منها بوصفها دليلًا أرشيفيًّا

صيغت جميع البنود إعادة صياغة. لا يعيد ⁨NextPDF⁩ إنتاج النص المعياري؛ فراجِع المعايير المنشورة للصيغة الموثوقة. لا يقدّم ⁨NextPDF⁩ أي ادّعاء بالشهادة لـ ⁨AdES⁩ / ⁨PAdES.⁩ يُنفّذ جانب التحقق الفحوص التشفيرية الموصوفة في المواصفات المُستشهَد بها؛ وهو ليس خدمة تحقق معتمَدة ولا يُنتج أي إثبات من طرف ثالث.

عندما يكون ملف ⁨FIPS⁩ الخاص بالإصدار ⁨Enterprise⁩ نشطًا، ينطبق القيد على خوارزميات الملخّص والتوقيع التي يقبلها المتحقّق. منطق التحقق، بما فيه إعادة حساب الملخّص وفحوص التوقيع وربط الشهادة والتحقق من المسار، غير متغيّر.

الأصلالخصمالخطرالتخفيف
رمز الطابع الزمنيرمز مُزوَّر أو مُحرَّفإثبات وجود زائفتحقق تشفيري كامل؛ إغلاق آمن على أي شيء لا يمكن التحقق منه
شهادة ⁨TSA⁩مُصدِر غير موثوقثقة ظاهرية لا ينبغي للمتحقّق أن يؤكّدهاسلسلة مُتحقَّق منها إلى مرساة يوفّرها المستدعي عند ⁨genTime⁩؛ والسلسلة غير الموثوقة لا تمرّ أبدًا
بايتات المستندالإلحاق بعد الطابع الزمنييكتسب المحتوى وزن طابع زمني دون تغطيةبصمة مربوطة ببايتات ⁨ByteRange⁩ الفعلية + قاعدة تغطية ⁨EOF⁩
خوارزمية ضعيفةتخفيض إلى ⁨SHA-1⁩ / مخطّط غير مدعومتوقيع ضعيف يُقرأ بوصفه صحيحًا⁨SHA-1⁩ مُخفَّض؛ ⁨RSASSA-PSS⁩ / ⁨EdDSA⁩ / ⁨SHA-3⁩ بإغلاق آمن

جانب التحقق هذا قدرة من قدرات ⁨Enterprise⁩ ويُشحَن ضمن حزمة nextpdf/enterprise. يكتشف ⁨NextPDF Core⁩ وجود التوقيع وينتج توقيعات ⁨B-B⁩ / ⁨B-T⁩، لكنه لا يوفّر جانب التحقق التشفيري هذا. احصل على ترخيص.

جانب التحقق مُقيَّد ببوابة الإصدار ⁨Enterprise⁩ (license_feature_flag: enterprise). يُحَلّ عبر عقود ⁨Core⁩ و⁨Pki⁩؛ ولا تتغيّر واجهة برمجة التطبيقات (⁨API⁩) العامة عند ترقية الإصدار.

  • لا يُقبَل رمز ⁨CMS⁩ أو طابع زمني إلا بـ SignerInfo واحد بالضبط، وسمات موقَّعة مُحلَّلة بصرامة، وشهادة موقِّع مُحَلَّة، و⁨message-digest⁩ مطابق، وربط شهادة التوقيع الإلزامي، وتوقيع SignerInfo مُتحقَّق منه.
  • يُتحقَّق من شهادة ⁨TSA⁩ عند genTime الخاصة بالرمز: id-kp-timeStamping واحد حرج من نوع ⁨EKU⁩، ونافذة الصلاحية، وسلسلة مرتكزة إلى مرساة ثقة، والإبطال.
  • يتطلّب حُكم Valid فضلًا عن ذلك حالة غير مُبطَلة على نحو قاطع: على الأقل دليل “جيد” موثوق واحد (استجابة ⁨OCSP⁩ مُتحقَّق من جودتها، أو ⁨CRL⁩ حديثة تضع الرقم التسلسلي خارج قائمة غير منتهية الصلاحية). الحالة التي هي مجرّد “غير مُثبَتة الإبطال”، حيث يكون كلٌّ من ⁨OCSP⁩ و⁨CRL⁩ “غير معروف” أو “غير متاح”، تُحسَم إلى Indeterminate، لا إلى Valid أبدًا (⁨ETSI EN 319 102-1⁩: عدم توافر حالة الإبطال ← ⁨INDETERMINATE⁩). ولأن مسار الرجوع إلى ⁨CRL⁩ يشهد فقط على حداثة القائمة لا على الإبطال لكل رقم تسلسلي على حدة، فإن سلسلة تعتمد على ⁨CRL⁩ وحدها دون استجابة ⁨OCSP⁩ “جيدة” تكون عادةً Indeterminate.
  • validateArchivalTimestampChain() لا يبلغ نتيجة ناجحة كليًّا إلا لسلسلة ⁨DocTimeStamp⁩ كاملة ومرتكزة إلى مرساة ثقة وتغطّي حتى ⁨EOF⁩؛ وهو يثبت تغطية نطاق البايتات لا قابلية الوصول عبر ⁨xref.⁩
  • تتبع معالجة سياسة الشهادات ⁨RFC 5280⁩ §6.1.4؛ والسلاسل الافتراضية غير المقيَّدة غير متأثرة.
  • الخوارزميات المدعومة هي ⁨RSA⁩ (⁨PKCS⁩#1 ⁨v1.5⁩ مع ⁨SHA-2⁩) و⁨ECDSA⁩ (⁨P-256/384/521⁩)؛ و⁨RSASSA-PSS⁩ و⁨EdDSA⁩ و⁨SHA-3⁩ تُغلَق بأمان؛ و⁨SHA-1⁩ مُخفَّض.

حالة فحص اتفاقية عدم الإفصاح

قسم بعنوان «حالة فحص اتفاقية عدم الإفصاح»

تصف هذه الصفحة العامة سلوك جانب التحقق القابل للملاحظة خارجيًّا فقط. وهي تسمّي المحرّك العام، وعقود ⁨Pki⁩ / مرساة الثقة، ودالة validateArchivalTimestampChain() عبر السطح المدعوم. التفاصيل الداخلية الفعلية لـ ⁨DER⁩ و⁨CMS⁩ ومعالج السياسة ومدقّق المسار موجودة في المرجع العميق المُقيَّد بموجب اتفاقية عدم الإفصاح (⁨NDA⁩).

يكتشف ⁨NextPDF Core⁩ وجود توقيع وينتج توقيعات ⁨B-B⁩ / ⁨B-T⁩، لكنه لا يتحقق تشفيريًّا من رموز ⁨CMS⁩ أو الطوابع الزمنية، ولا يتحقق من سلسلة أرشيفية، ولا يُجري معالجة السياسة وفق ⁨RFC 5280⁩ §6.1.4. النشر القائم على ⁨Core⁩ وحده لا يملك نظيرًا على جانب التحقق؛ انظر الأمان / التوقيع (⁨Core⁩).

يضيف ⁨NextPDF Pro⁩ استراتيجيات توقيع ومعالجة الفواتير الإلكترونية، لكنه لا يوفّر جانب التحقق التشفيري هذا؛ فالتحقق من السلسلة الأرشيفية ومعالجة سياسة الشهادات يُشحَنان في nextpdf/enterprise فقط.

جانب التحقق موصوف على مستوى السلوك. مكدّس ⁨DER⁩ الصارم، ومحلِّل ⁨CMS⁩، ومعالج السياسة، والتفاصيل الداخلية لمدقّق المسار خارج نطاق السطح العام ولا تُعاد هنا.

يعتمد التحقق على مخزن مراسي الثقة وأي مادة إبطال يوفّرها المستدعي أو تكون مضمَّنة في المستند. يُقيّم ⁨NextPDF Enterprise⁩ تلك المادة؛ وهو لا يشغّل قائمة ثقة ولا ⁨TSA⁩ ولا خدمة إبطال. يملك المشغّل قرار اختيار المراسي وحداثة مادة الإبطال المضمَّنة.

هذه الصفحة موسومة بـ export_control_class: legal-review-required؛ فهي تتعلّق بالتحقق التشفيري. يلزم الاعتماد القانوني قبل ضبط علامة publish. النتيجة الإيجابية للتحقق بيان تشفيري عن توقيعات المستند وطوابعه الزمنية. وهي ليست رأيًا قانونيًّا ولا تحديدًا للتأهيل وفق ⁨eIDAS⁩ ولا شهادة. لا يقدّم ⁨NextPDF⁩ أي ادّعاء بالشهادة لـ ⁨AdES⁩ / ⁨PAdES.⁩ استشر مستشاريك المختصين بالامتثال والشؤون القانونية بشأن التزاماتك التنظيمية.