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

Enterprise الإصدار

الأمان — مرجع متعمّق (HSM وPKCS#11 ووضع FIPS)

هذه الصفحة هي المرجع المتعمّق المُوحّد لسطح أمان ⁨NextPDF Enterprise⁩. تغطي توقيع الرمز العتادي عبر ⁨PKCS#11⁩، والتوقيع بعملية فرعية عبر واجهة سطر الأوامر (⁨CLI⁩) لـ ⁨OpenSSL⁩، وإعدادات سياسة تعمية ⁨FIPS⁩ المسبقة، وحارس ⁨FIPS⁩ في وقت التشغيل، وحارس الاختبار الذاتي عند التشغيل. يوجد رفيقان مُركّزان: ⁨HSM⁩ — مرجع متعمّق لتفاصيل الموقّع و⁨FIPS 140⁩ — مرجع متعمّق لتفاصيل وحدة ⁨FIPS⁩. مسار التوقيع ما بعد الكمّي معاينة دون أي ادّعاء مطابقة. لا تملك ⁨NextPDF⁩ أي شهادة اعتماد ولا تمنح أيًّا منها؛ الدعم لا يعادل المطابقة، والمطابقة لا تعادل الاعتماد.

تُشحن هذه الإمكانية في ⁨NextPDF Enterprise⁩ (nextpdf/enterprise) وتُفعَّل بمظروف ترخيص من طبقة ⁨Enterprise⁩. النشر بدون ذلك الاستحقاق لا يُحمّل أصناف الإمكانية. قارن الإصدارات واحصل على ترخيص.

سطح واجهة برمجة التطبيقات العام

قسم بعنوان «سطح واجهة برمجة التطبيقات العام»
Terminal window
composer require nextpdf/enterprise:^3

تعيش أنواع التوقيع في NextPDF\Enterprise\Security\Signature\Hsm؛ وتعيش أنواع ⁨FIPS⁩ في NextPDF\Enterprise\Security\Fips؛ ويعيش جذر التركيب في NextPDF\Enterprise\Bootstrap. يُنفّذ كلا الموقّعَين عقد ⁨Core⁩ NextPDF\Contracts\HsmSignerInterface. وتُنفّذ السياسة عقدَي ⁨Core⁩ NextPDF\Contracts\CryptoPolicyInterface وNextPDF\Contracts\PreOperationalSelfTestInterface.

الرمزالمعاملاتالسلوك الافتراضيالقيمة المُعادةيرمي أو يفشل بـملاحظات
Pkcs11Signer::__construct()string $libraryPath, int $slotId, string $pin, string $certLabel, ?string $keyLabel = null, array $chainDer = [], bool $enablePostQuantum = false, ?FipsSignatureEnforcer $fipsEnforcer = nullيفتح مكتبة المورّد، ويسجّل الدخول إلى الفتحة، ويحمّل بيانات الشهادة ووصف خوارزمية المفتاحHsmOperationException عند غياب ext-pkcs11 أو فشل الوصول إلى الرمزالـ ⁨PIN⁩ والتسميات من نوع #[SensitiveParameter]؛ يُخزَّن مقبض وحدة واحد لكل مسار مكتبة لكل عملية
Pkcs11Signer::isAvailable()لا شيءيُبلّغ عمّا إذا كان ext-pkcs11 محمَّلًاboolلا شيءساكن؛ تحقّق قبل البناء
Pkcs11Signer::sign()string $data, string $algorithm = 'sha256WithRSAEncryption'يوقّع على الرمز؛ ويُحوَّل خرج ⁨ECDSA⁩ الخام إلى ECDSA-Sig-Value بترميز ⁨DER⁩string بايتات التوقيع الخامHsmOperationException (المفتاح غير موجود، فشل الرمز)؛ InvalidArgumentException (خوارزمية غير مربوطة)؛ FipsViolationException / FipsModuleErrorStateException قبل التوقيع عند ربط مُنفِّذمجموعة خوارزميات مُغلقة؛ راجع عقد السلوك
Pkcs11Signer::signPqs()string $data, Pkcs11PqsAlgorithm $algorithm, string $context = '', bool $randomized = trueمرفوض ما لم يُضبَط $enablePostQuantum؛ يُرسِل آلية ما بعد الكمّي المؤقتة في ⁨PKCS#11⁩string بايتات التوقيع الخامHsmOperationException (مُعطَّل، فشل الرمز، عدم تطابق طول التوقيع)؛ InvalidArgumentException (سياق يتجاوز 255 بايت)معاينة؛ لا ادّعاء مطابقة
Pkcs11Signer سطح المُوصِّلاتلا شيءنتائج بناء للقراءة فقطbool / string / array<string>لا شيءisPostQuantumEnabled, getCertificateDer, getCertificateChainDer, getPublicKeyAlgorithm
OpenSslCliSigner::__construct()string $keyUri, string $certPath, string $pin, array $extraCertPaths = [], OpenSslCliBackend $backend = OpenSslCliBackend::Auto, string $opensslBinary = 'openssl', int $timeoutSeconds = 30, ?string $modulePath = null, ?string $configPath = null, bool $legacyPinDelivery = false, ?FipsSignatureEnforcer $fipsEnforcer = nullيتحقق من proc_open، ويسبر الملف الثنائي، ويحلّ الخلفية، ويحمّل الشهاداتHsmOperationException (proc_open مُعطَّل، ملف وحدة/إعداد/شهادة مفقود، لا خلفية)؛ InvalidArgumentException (pin-value داخل $keyUri)يُفضّل Auto مزوّد ⁨OpenSSL 3.x⁩، ثم المحرّك
OpenSslCliSigner::sign()string $data, string $algorithm = 'sha256WithRSAEncryption'يوقّع في عملية openssl فرعية؛ ويسافر الـ ⁨PIN⁩ افتراضيًا عبر ملف مصدر ⁨PIN⁩ عابر بأذونات 0600string بايتات التوقيع الخامHsmOperationException (مهلة، رُفض الـ ⁨PIN⁩، المفتاح غير موجود، خرج فارغ)؛ InvalidArgumentException (خوارزمية غير مربوطة)؛ استثناءات بوّابة ⁨FIPS⁩ قبل التوقيعتُقتَل العملية الفرعية بعد $timeoutSeconds؛ ويُنقَّح ⁨stderr⁩
OpenSslCliSigner سطح المُوصِّلاتلا شيءنتائج بناء للقراءة فقطstring / array<string> / OpenSslCliBackendلا شيءgetCertificateDer, getCertificateChainDer, getPublicKeyAlgorithm, getCertificatePem, getResolvedBackend, getOpensslVersion
OpenSslCliBackendتعداد: Provider، Engine، Autoلا شيءاختيار الخلفية لموقّع ⁨CLI⁩
Pkcs11PqsAlgorithmتعداد لمجموعات معاملات ⁨ML-DSA⁩ و⁨SLH-DSA⁩لا شيءمساعدات: isMlDsa، isSlhDsa، mechanismId، parameterSetId، signatureLength، nistCategory
PqsCapabilityStatus::current()لا شيءيبني الوضعية الصادقة لما بعد الكمّي للعمليةPqsCapabilityStatusلا شيءكل قيمة منطقية لادّعاء المطابقة مُثبَّتة على false؛ ولا يمكن لأي راية أن تقلبها إلى تفعيل
HsmSignerProviderAdapterHsmSignerInterface $hsm, string $providerId, SignatureAlgorithm $algorithm = SignatureAlgorithm::Pkcs1v15يكشف تجسيدًا ملموسًا لـ ⁨HSM⁩ بوصفه SignerProviderInterface مُوحَّدًاحسب ⁨SPI⁩KeyManagementException (نسخة مفتاح غير فارغة)؛ SignatureFailedException (فشل المُشغِّل، توقيع فارغ)مُعرِّفات المزوّد: pkcs11-{module-id}، openssl-cli
HsmOperationExceptionفشل مُصنَّف لكل مسار توقيع ⁨HSM⁩يمدّد NextPdfException في ⁨Core⁩
FipsCryptoPolicy::strict() / ::standard()?FipsSelfTest $selfTest = nullإعدادات مصنع مسبقة؛ الصارم هو ملف ⁨FIPS 140-3⁩، والقياسي يضيف ⁨AES-128-CBC⁩FipsCryptoPolicyلا شيءقوائم سماح غير قابلة للتغيير؛ راجع سلوك وضع ⁨FIPS⁩
FipsCryptoPolicy سطح المُسنِداتمدخلات string / intفحوص العضوية في قائمة السماحbool / stringلا شيءisHashAlgorithmAllowed, isSignatureAlgorithmAllowed, isEncryptionAlgorithmAllowed, isKeyStrengthAllowed, getPreferredHashAlgorithm, getName
FipsCryptoPolicy::assertPreOperational()لا شيءيُشغّل (أو يعيد تشغيل) الاختبار الذاتي عند التشغيلvoidFipsModuleErrorStateExceptionمدفوع بوصلة الإنفاذ في ⁨Core⁩ عند أول عملية تعمية
FipsModeGuard::__construct()CryptoPolicyInterface $policy, ?FipsBootGuard $bootGuard = null, ?FipsAuditLogger $auditLogger = nullيلفّ سياسة بحدود بأسلوب التأكيدلا شيءبدون حارس تشغيل تغيب بوّابة الاختبار الذاتي (سياسة فقط)
FipsModeGuard سطح التأكيدمدخلات string / intفهرس الرفض أولًا، ثم قائمة السماح؛ سجل تدقيق قبل أي رميvoidFipsViolationException؛ FipsModuleErrorStateException (حارس تشغيل مربوط)assertHashAllowed, assertSignatureAlgorithmAllowed, assertEncryptionAllowed, assertKeyStrengthAllowed، إضافةً إلى getPolicy
FipsBootGuard::report() / ::rerun()لا شيءيُشغّل بطارية الاختبار الذاتي (مُخزَّنة / مُجبَرة)FipsSelfTestReportلا شيءيُرسِّخ تقرير ⁨ERROR⁩ العملية؛ ولا تمحو إعادة تشغيل ناجحة الترسيخ أبدًا
FipsBootGuard::assertOperational()لا شيءيؤكّد أن الوحدة ⁨OPERATIONAL⁩voidFipsModuleErrorStateExceptionلاصق: يرفض ⁨ERROR⁩ المُرسَّخ في العملية حتى نسخة نظيفة
FipsBootGuard::status()لا شيءيُبلّغ الحالة المُخزَّنةFipsSelfTestStatusلا شيءPRE_OPERATIONAL أو OPERATIONAL أو ERROR
FipsSelfTest::run()لا شيءينفّذ بطارية اختبار الإجابة المعروفة الكاملة؛ ولا يختصر المسار أبدًاFipsSelfTestReportلا شيءيقبل الباني مزوّدَي تجزئة وبايتات عشوائية قابلين للحقن لأجل اختبارات حتمية
FipsSelfTestReport / FipsSelfTestResult / FipsSelfTestStatusكائنات قيمة التقرير وتعداد الحالةFipsSelfTestReport::assertOperational() يرمي FipsModuleErrorStateExceptionresults يسرد دائمًا كل نتيجة لأجل دليل التدقيق
FipsSignatureEnforcer::assertSignatureGenerationAllowed()string $algorithm, string $certificatePemيحلّ مُعرِّف ⁨OID⁩ التوقيع وقوة المفتاح، ثم يفوّض إلى الحارسvoidFipsViolationException (غير مسموح أو غير قابل للتصنيف، بإغلاق عند الفشل)نقطة الاختناق التي يستدعيها كلا الموقّعَين في أعلى sign() في وضع ⁨FIPS⁩
FipsAuditLoggerCryptoPolicyInterface $policy, LoggerInterface $loggerيُصدر سجلات ⁨ALLOW⁩ (⁨INFO⁩) / ⁨DENY⁩ (⁨WARNING⁩) لكل قرارbool لكل استدعاء تسجيللا شيءlogHashOperation, logSignatureOperation, logEncryptionOperation, logKeyStrengthCheck
FipsTransitioningAlgorithmsمدخلات string / intفهرس رفض ⁨NIST SP 800-131A⁩ ساكنbool / arrayلا شيءطبقة الرفض الصريح تحت كل حدّ حارس
FipsBootstrap::boot() / ::lazy()?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null, ?LoggerInterface $auditLogger = nullيركّب حارس التشغيل والسياسة وحارس الوضع؛ يُشغّل boot() الاختبار الذاتي فورًا، ويؤجّله lazy() إلى أول حدّFipsModeGuardboot(): FipsModuleErrorStateException عند اختبار فاشليفترض السياسة الصارمة افتراضيًا
FipsBootstrap::signatureEnforcer()?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = nullيُشغّل الوحدة ويُعيد بوّابة وقت التوليد للموقّعاتFipsSignatureEnforcerFipsModuleErrorStateExceptionمرّر النتيجة إلى معامل $fipsEnforcer في الموقّع
FipsBootstrap::selfTestReport()?FipsSelfTest $selfTest = nullيُشغّل البطارية عند الطلب ويلخّصهاarray{status, operational, failed}لا شيءمُخصَّص لنقاط فحص السلامة والأمر الفرعي في ⁨CLI⁩
FipsViolationException / FipsModuleErrorStateExceptionإخفاقات ⁨FIPS⁩ مُصنَّفةتكشف policyName / violatingItem / reason وfailedResults على التوالي
public function __construct(private readonly string $libraryPath, private readonly int $slotId, #[SensitiveParameter] private readonly string $pin, #[SensitiveParameter] private readonly string $certLabel, #[SensitiveParameter] private readonly ?string $keyLabel = null, array $chainDer = [], private readonly bool $enablePostQuantum = false, ?FipsSignatureEnforcer $fipsEnforcer = null)
public static function isAvailable(): bool
public function sign(string $data, string $algorithm = 'sha256WithRSAEncryption'): string
public function signPqs(string $data, Pkcs11PqsAlgorithm $algorithm, string $context = '', bool $randomized = true): string
public function __construct(private string $keyUri, string $certPath, #[SensitiveParameter] private string $pin, array $extraCertPaths = [], private OpenSslCliBackend $backend = OpenSslCliBackend::Auto, private string $opensslBinary = 'openssl', private int $timeoutSeconds = 30, private ?string $modulePath = null, private ?string $configPath = null, private bool $legacyPinDelivery = false, private ?FipsSignatureEnforcer $fipsEnforcer = null)
public function sign(string $data, string $algorithm = 'sha256WithRSAEncryption'): string
public static function strict(?FipsSelfTest $selfTest = null): self
public static function standard(?FipsSelfTest $selfTest = null): self
public function assertPreOperational(): void
public function __construct(private CryptoPolicyInterface $policy, private ?FipsBootGuard $bootGuard = null, private ?FipsAuditLogger $auditLogger = null)
public function assertHashAllowed(string $algorithm): void
public function assertSignatureAlgorithmAllowed(string $oid): void
public function assertEncryptionAllowed(string $algorithm): void
public function assertKeyStrengthAllowed(string $keyType, int $bitLength): void
public function getPolicy(): CryptoPolicyInterface
public static function boot(?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null, ?LoggerInterface $auditLogger = null): FipsModeGuard
public static function lazy(?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null, ?LoggerInterface $auditLogger = null): FipsModeGuard
public static function signatureEnforcer(?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null): FipsSignatureEnforcer
public static function selfTestReport(?FipsSelfTest $selfTest = null): array
  • تحديد العقود. يُنفّذ كلا الموقّعَين عقد ⁨Core⁩ HsmSignerInterface؛ وتُنفّذ السياسة عقد ⁨Core⁩ CryptoPolicyInterface. تعتمد الشِفرة المُستدعِية على العقود، لذا فإن ترقية الإصدار تُغيّر التركيب لا مواضع الاستدعاء.
  • حفظ المفاتيح. لا يغادر المفتاح الخاص حدود الرمز أبدًا. يُفوّض Pkcs11Signer العملية إلى الرمز؛ ويمرّر OpenSslCliSigner مرجع مفتاح بصيغة ⁨PKCS#11 URI⁩ إلى العملية الفرعية. لا تخزّن ⁨NextPDF⁩ مفتاح التوقيع ولا تولّده ولا تضمن أمنه. حماية المفتاح مسؤولية حفظ تقع على المُشغّل (⁨NIST SP 800-57 Part 1 Rev.5 §5.5.2⁩).
  • الجلسة وتسجيل الدخول. تتبع عملية توقيع الرمز والجلسة وتسجيل دخول المستخدم ⁨PKCS#11 v3.1 §5⁩. قد تختلف تسمية الشهادة عن تسمية المفتاح الخاص؛ ويقبل الباني تسمية مفتاح منفصلة لمثل هذه الرموز.
  • مجموعة خوارزميات مُغلقة. يقبل الموقّعان بالضبط: ⁨RSA PKCS#1 v1.5⁩ مع ⁨SHA-256/384/512⁩، و⁨RSASSA-PSS⁩ مع ⁨SHA-256/384/512⁩، و⁨ECDSA⁩ مع ⁨SHA-256/384/512⁩ (يقبل Pkcs11Signer أيضًا ecdsa-raw). أي مُعرِّف آخر يرفع InvalidArgumentException؛ ولا يُوقَّع أبدًا أي خوارزمية بديلة.
  • ربط ملح ⁨PSS⁩. في كل صيغة ⁨PSS⁩ يساوي طول الملح طول الخلاصة — 32 أو 48 أو 64 بايت — وتطابق معاملات التجزئة وتوليد القناع الخلاصةَ المختارة (⁨PKCS#11 v3.1 §5⁩).
  • تحويل ⁨ECDSA⁩. تُعيد آليات ⁨ECDSA⁩ في الرمز توقيعًا خامًا؛ ويحوّله sign() إلى صيغة ECDSA-Sig-Value المُرمَّزة بـ ⁨DER⁩ لأجل قابلية التشغيل البيني مع ⁨PDF⁩ و⁨OpenSSL⁩. يتبع توليد التوقيع ⁨FIPS 186-5 §6.3.2⁩.
  • محتويات الإعداد المسبق. يسمح الإعداد الصارم بـ ⁨SHA-256/384/512⁩؛ ومُعرِّفات ⁨OID⁩ لتوقيع ⁨RSA⁩ و⁨ECDSA⁩ مع تلك التجزئات؛ و⁨RSASSA-PSS⁩؛ و⁨AES-256-CBC⁩ و⁨AES-256-GCM⁩؛ وحدًّا أدنى ⁨RSA 2048⁩ و⁨EC 256⁩. يسمح الإعداد القياسي إضافةً بـ ⁨AES-128-CBC⁩ لأجل التشغيل البيني القديم. يتطلب أي استخدام لـ ⁨AES-GCM⁩ متجه تهيئة فريدًا لكل مفتاح (⁨NIST SP 800-38D §5⁩).
  • إنفاذ بطبقتين. يستشير كل حدّ حارس فهرس الرفض الصريح ⁨NIST SP 800-131A⁩ أولًا، ثم قائمة السماح في السياسة. تُنتج طبقة الرفض إشارة «غير مسموح» الواضحة للتدقيق؛ وتبقى قائمة السماح هي المرجعية.
  • الاختبار الذاتي عند التشغيل. تشمل البطارية ⁨SHA-256/384/512⁩ و⁨HMAC-SHA-256⁩ و⁨AES-256-CBC⁩ و⁨AES-256-GCM⁩، واختبار اتساق زوجي لـ ⁨ECDSA P-256⁩، وفحص سلامة للبتات العشوائية. تُجريها أول عملية تعمية تحت السياسة على مسار ⁨Core⁩ مرة واحدة لكل عملية، بإغلاق عند الفشل. يضع الفشلُ الوحدةَ في حالة ⁨ERROR⁩؛ وتُرفَض خدمات التعمية حتى إعادة التعيين. يتبع هذا ⁨ISO/IEC 19790:2025 §7.10⁩ و⁨§7.10.2⁩ و⁨§7.10.3⁩ و⁨§7.10.3.p3⁩.
  • حالة ⁨ERROR⁩ اللاصقة. يترسّخ ⁨ERROR⁩ المُلاحَظ طوال العملية بأكملها. لا يمكن لبناء سياسة أو حارس تشغيل جديد أن يغسله؛ ولا تمحوه إعادة تشغيل ناجحة. إعادة تشغيل العملية وحدها — دورة تشغيل حقيقية — تُعيد ضبط الحالة.
  • بوّابة التوليد فقط. يحكم FipsSignatureEnforcer إنتاج التواقيع الجديدة. التحقق من التواقيع الموجودة مسبقًا استخدام قديم ولا يمرّ أبدًا عبر المُنفِّذ.
  • مسار التدقيق. عندما يُركَّب الحارس مع مُسجِّل تدقيق، يُصدر كل حدّ سجل ⁨ALLOW⁩ أو ⁨DENY⁩ قبل السماح بالعملية أو رفضها. يستشير المُسجِّل السياسة نفسها التي يُنفِّذها الحارس، لذا لا يمكن للقرار المُسجَّل أن يتباعد.

الحالات الحدّية وأنماط الفشل

قسم بعنوان «الحالات الحدّية وأنماط الفشل»
  • بناء Pkcs11Signer بدون ext-pkcs11 يرفع HsmOperationException فورًا؛ فالامتداد ليس مضمَّنًا في توزيعات ⁨PHP⁩ القياسية.
  • تسمية شهادة أو مفتاح خاص لا تطابق أي كائن رمز ترفع HsmOperationException مع تسمية صنف الكائن المفقود.
  • OpenSslCliSigner يرفض أي $keyUri يحتوي على pin-value عند البناء، بإغلاق عند الفشل؛ ويسافر الـ ⁨PIN⁩ عبر مسار مصدر الـ ⁨PIN⁩ الآمن بدلًا من ذلك.
  • في وضع ⁨FIPS⁩، يُرفض أي مُعرِّف خوارزمية لا يمكن ربطه بمُعرِّف ⁨OID⁩ توقيع معروف بإغلاق عند الفشل؛ وكذلك أي شهادة يتعذّر تحديد قوة مفتاحها العام.
  • يُرفض أي نوع مفتاح غير معروف افتراضيًا؛ ولا تتراجع السياسة أبدًا إلى خوارزمية أضعف.
  • اختبار إجابة معروفة فاشل يرفع FipsModuleErrorStateException حاملًا النتائج الفاشلة؛ ويكرّر كل حدّ لاحق في العملية الفشلَ حتى إعادة التشغيل.
  • الحارس المبنيّ بدون حارس تشغيل يُنفّذ قوائم السماح لكنه لا يوفّر بوّابة اختبار ذاتي؛ ويوفّر تركيب ⁨FIPS⁩ الإنتاجي واحدة عبر التمهيد.
  • signPqs() يرفض العمل ما لم يُضبَط تفعيل الباني. سلسلة سياق تتجاوز 255 بايت ترفع InvalidArgumentException (⁨FIPS 204 §5.4⁩). أي توقيع مُعاد لا يطابق طولُه بالبايت مجموعةَ المعاملات المختارة يُرفَض قبل أن يصل إلى الترميز.

المسموح في ⁨FIPS⁩ بالوضع الصارم: ⁨SHA-256/384/512⁩؛ و⁨RSA PKCS#1 v1.5⁩ و⁨RSA-PSS⁩ مع تلك التجزئات؛ و⁨ECDSA⁩ مع تلك التجزئات؛ و⁨AES-256-CBC⁩ و⁨AES-256-GCM⁩؛ و⁨RSA⁩ بما لا يقل عن 2048 بت، و⁨EC⁩ بما لا يقل عن 256 بت. المرفوض في ⁨FIPS⁩ بالوضع الصارم: التجزئات الأضعف أو القديمة، ومُعرِّفات ⁨OID⁩ التوقيع غير المعتمدة، و⁨AES-128⁩ (المسموح به فقط في الإعداد القياسي)، وأي مفتاح دون الحد الأدنى للقوة. يتبع الحد الأدنى لطول مفتاح ⁨RSA⁩ وحالة الانتقال ⁨NIST SP 800-131A Rev.2 §3⁩. ويتبع منحنى ⁨ECDSA⁩ وإقران التجزئة ⁨FIPS 186-5 §6.1.1⁩. المسار مُغلق عند الفشل ولا يستبدل أبدًا خوارزمية أضعف.

‏⁨NextPDF Enterprise⁩ ليست وحدة تعمية مُصدَّقة وفق ⁨FIPS⁩ ولا تقدّم أي ادّعاء اعتماد ⁨FIPS⁩. تعمل ⁨NextPDF Enterprise⁩ في وضع متوافق مع ⁨FIPS⁩ فقط عند تهيئتها بمزوّد تعمية مُصدَّق وفق ⁨FIPS⁩ — مثل مزوّد ⁨OpenSSL⁩ مُصدَّق وفق ⁨FIPS⁩ — أو ⁨HSM⁩ مُصدَّق وفق ⁨FIPS⁩. تساعد سياسة وضع ⁨FIPS⁩ في الامتثال؛ لكنها ليست اعتمادًا. لا يوجد أي مُصنَّف اعتماد ⁨FIPS⁩ في هذا المستودع.

الادّعاءالمعيارالبند
دلالات عملية توقيع الرمز والجلسة وتسجيل دخول المستخدمPKCS#11 v3.1§5 (sign)
طول ملح ⁨PSS⁩ يساوي طول الخلاصةPKCS#11 v3.1§5 (PSS sLen)
توليد توقيع ⁨ECDSA⁩؛ إقران المنحنى والتجزئةFIPS 186-5§6.3.2; §6.1.1
الحد الأدنى لطول مفتاح ⁨RSA⁩ وحالة انتقال توليد التوقيعNIST SP 800-131A Rev.2§3
فئة الاختبار الذاتي والتوثيق والمُشغِّل المشروط والمجموعة المنفصلةISO/IEC 19790:2025§7.10, §7.10.2, §7.10.3, §7.10.3.p3
تفرّد متجه التهيئة في ⁨AES-GCM⁩NIST SP 800-38D§5
مسؤوليات حماية المفاتيح وحفظهاNIST SP 800-57 Part 1 Rev.5§5.5.2
سلسلة سياق التوقيع ما بعد الكمّي محدودة بـ 255 بايتFIPS 204§5.4

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

  • ركّب وضع ⁨FIPS⁩ عبر التمهيد: boot() لبوّابة عند بدء التشغيل، وlazy() لتأجيل البطارية إلى أول حدّ، ومصنع المُنفِّذ لمعامل $fipsEnforcer في الموقّعَين. تمرّر عمليات النشر غير ⁨FIPS⁩ القيمة null ويبقى السلوك بلا تغيير.
  • يُشغّل الأمر الفرعي fips:self-test في bin/nextpdf-enterprise البطارية عند الطلب ويخرج بقيمة غير صفرية في حالة ⁨ERROR⁩؛ اربطه بمهام الصيانة أو نقاط فحص السلامة المخصّصة للمشرفين فقط (اختبارات ⁨ISO/IEC 19790:2025⁩ الذاتية عند الطلب).
  • FipsBootGuard::resetProcessErrorLatchForTesting() داخليّ @internal ومخصّص للاختبار فقط؛ ولا تستدعيه شِفرة الإنتاج أبدًا، لأنه سيُبطل حالة ⁨ERROR⁩ اللاصقة.
  • ابنِ الموقّعات مرة واحدة وأعِد استخدامها؛ فالبناء يسجّل الدخول ويقرأ الشهادة، وذاكرة تخزين الوحدة لكل مكتبة تجعل البناء المتكرر مقابل المكتبة نفسها آمنًا.
  • زوّد الـ ⁨PIN⁩ من مدير أسرار. فهو #[SensitiveParameter]، لا يُسجَّل ولا يُسلسَل أبدًا؛ ولا تودعه في الإعداد.
  • يملك المُشغّل تزويد الرمز، والتعامل مع الـ ⁨PIN⁩، وتهيئة الفتحة، وحماية شبكة أي ⁨HSM⁩ متصل بالشبكة، وتهيئة الثقة. لا تكشف هذه الصفحة تفاصيل سياسة الـ ⁨PIN⁩ للرمز الداخلية أو مواد اعتماد المورّد.
  • لا تُفعّل معاينة ما بعد الكمّي لتواقيع ⁨AdES⁩ الإنتاجية. فهرس أطقم التعمية في ⁨AdES⁩ لا يعترف بعدُ بأطقم ما بعد الكمّي، ومعظم عارضات ⁨PDF⁩ ترفض مثل هذه التواقيع، والتحقق العتادي بالرحلة الكاملة غير مكتمل. تبقى تفاصيل الآلية الداخلية في التوثيق الداخلي لمستودع المصدر وهي خارج نطاق هذا الدليل.

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