Enterprise الإصدار
الأمان — مرجع متعمّق (HSM وPKCS#11 ووضع FIPS)
لمحة سريعة
قسم بعنوان «لمحة سريعة»هذه الصفحة هي المرجع المتعمّق المُوحّد لسطح أمان NextPDF Enterprise. تغطي توقيع الرمز العتادي عبر PKCS#11، والتوقيع بعملية فرعية عبر واجهة سطر الأوامر (CLI) لـ OpenSSL، وإعدادات سياسة تعمية FIPS المسبقة، وحارس FIPS في وقت التشغيل، وحارس الاختبار الذاتي عند التشغيل. يوجد رفيقان مُركّزان: HSM — مرجع متعمّق لتفاصيل الموقّع وFIPS 140 — مرجع متعمّق لتفاصيل وحدة FIPS. مسار التوقيع ما بعد الكمّي معاينة دون أي ادّعاء مطابقة. لا تملك NextPDF أي شهادة اعتماد ولا تمنح أيًّا منها؛ الدعم لا يعادل المطابقة، والمطابقة لا تعادل الاعتماد.
التوفّر والترخيص
قسم بعنوان «التوفّر والترخيص»تُشحن هذه الإمكانية في NextPDF Enterprise (nextpdf/enterprise) وتُفعَّل بمظروف ترخيص من طبقة Enterprise. النشر بدون ذلك الاستحقاق لا يُحمّل أصناف الإمكانية. قارن الإصدارات واحصل على ترخيص.
سطح واجهة برمجة التطبيقات العام
قسم بعنوان «سطح واجهة برمجة التطبيقات العام»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 عابر بأذونات 0600 | string بايتات التوقيع الخام | 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؛ ولا يمكن لأي راية أن تقلبها إلى تفعيل |
HsmSignerProviderAdapter | HsmSignerInterface $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() | لا شيء | يُشغّل (أو يعيد تشغيل) الاختبار الذاتي عند التشغيل | void | FipsModuleErrorStateException | مدفوع بوصلة الإنفاذ في Core عند أول عملية تعمية |
FipsModeGuard::__construct() | CryptoPolicyInterface $policy, ?FipsBootGuard $bootGuard = null, ?FipsAuditLogger $auditLogger = null | يلفّ سياسة بحدود بأسلوب التأكيد | — | لا شيء | بدون حارس تشغيل تغيب بوّابة الاختبار الذاتي (سياسة فقط) |
FipsModeGuard سطح التأكيد | مدخلات string / int | فهرس الرفض أولًا، ثم قائمة السماح؛ سجل تدقيق قبل أي رمي | void | FipsViolationException؛ FipsModuleErrorStateException (حارس تشغيل مربوط) | assertHashAllowed, assertSignatureAlgorithmAllowed, assertEncryptionAllowed, assertKeyStrengthAllowed، إضافةً إلى getPolicy |
FipsBootGuard::report() / ::rerun() | لا شيء | يُشغّل بطارية الاختبار الذاتي (مُخزَّنة / مُجبَرة) | FipsSelfTestReport | لا شيء | يُرسِّخ تقرير ERROR العملية؛ ولا تمحو إعادة تشغيل ناجحة الترسيخ أبدًا |
FipsBootGuard::assertOperational() | لا شيء | يؤكّد أن الوحدة OPERATIONAL | void | FipsModuleErrorStateException | لاصق: يرفض ERROR المُرسَّخ في العملية حتى نسخة نظيفة |
FipsBootGuard::status() | لا شيء | يُبلّغ الحالة المُخزَّنة | FipsSelfTestStatus | لا شيء | PRE_OPERATIONAL أو OPERATIONAL أو ERROR |
FipsSelfTest::run() | لا شيء | ينفّذ بطارية اختبار الإجابة المعروفة الكاملة؛ ولا يختصر المسار أبدًا | FipsSelfTestReport | لا شيء | يقبل الباني مزوّدَي تجزئة وبايتات عشوائية قابلين للحقن لأجل اختبارات حتمية |
FipsSelfTestReport / FipsSelfTestResult / FipsSelfTestStatus | — | كائنات قيمة التقرير وتعداد الحالة | — | FipsSelfTestReport::assertOperational() يرمي FipsModuleErrorStateException | results يسرد دائمًا كل نتيجة لأجل دليل التدقيق |
FipsSignatureEnforcer::assertSignatureGenerationAllowed() | string $algorithm, string $certificatePem | يحلّ مُعرِّف OID التوقيع وقوة المفتاح، ثم يفوّض إلى الحارس | void | FipsViolationException (غير مسموح أو غير قابل للتصنيف، بإغلاق عند الفشل) | نقطة الاختناق التي يستدعيها كلا الموقّعَين في أعلى sign() في وضع FIPS |
FipsAuditLogger | CryptoPolicyInterface $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() إلى أول حدّ | FipsModeGuard | boot(): FipsModuleErrorStateException عند اختبار فاشل | يفترض السياسة الصارمة افتراضيًا |
FipsBootstrap::signatureEnforcer() | ?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null | يُشغّل الوحدة ويُعيد بوّابة وقت التوليد للموقّعات | FipsSignatureEnforcer | FipsModuleErrorStateException | مرّر النتيجة إلى معامل $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(): boolpublic function sign(string $data, string $algorithm = 'sha256WithRSAEncryption'): stringpublic function signPqs(string $data, Pkcs11PqsAlgorithm $algorithm, string $context = '', bool $randomized = true): stringpublic 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'): stringpublic static function strict(?FipsSelfTest $selfTest = null): selfpublic static function standard(?FipsSelfTest $selfTest = null): selfpublic function assertPreOperational(): voidpublic function __construct(private CryptoPolicyInterface $policy, private ?FipsBootGuard $bootGuard = null, private ?FipsAuditLogger $auditLogger = null)public function assertHashAllowed(string $algorithm): voidpublic function assertSignatureAlgorithmAllowed(string $oid): voidpublic function assertEncryptionAllowed(string $algorithm): voidpublic function assertKeyStrengthAllowed(string $keyType, int $bitLength): voidpublic function getPolicy(): CryptoPolicyInterfacepublic static function boot(?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null, ?LoggerInterface $auditLogger = null): FipsModeGuardpublic static function lazy(?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null, ?LoggerInterface $auditLogger = null): FipsModeGuardpublic static function signatureEnforcer(?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null): FipsSignatureEnforcerpublic static function selfTestReport(?FipsSelfTest $selfTest = null): arrayعقد السلوك
قسم بعنوان «عقد السلوك»- تحديد العقود. يُنفّذ كلا الموقّعَين عقد Core
HsmSignerInterface؛ وتُنفّذ السياسة عقد CoreCryptoPolicyInterface. تعتمد الشِفرة المُستدعِية على العقود، لذا فإن ترقية الإصدار تُغيّر التركيب لا مواضع الاستدعاء. - حفظ المفاتيح. لا يغادر المفتاح الخاص حدود الرمز أبدًا. يُفوّض
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
قسم بعنوان «سلوك وضع FIPS»المسموح في 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 ترفض مثل هذه التواقيع، والتحقق العتادي بالرحلة الكاملة غير مكتمل. تبقى تفاصيل الآلية الداخلية في التوثيق الداخلي لمستودع المصدر وهي خارج نطاق هذا الدليل.
حدود النشر
قسم بعنوان «حدود النشر»توثّق هذه الصفحة السلوك القابل للملاحظة خارجيًا وسطح واجهة برمجة التطبيقات العام المدعوم فقط. مسارات مجالات الأسماء الداخلية، والأصناف المساعِدة، وجداول الآليات، وأسماء ملفات كتيّبات التشغيل، وبادئات التذاكر خارج النطاق.
اطّلع أيضًا
قسم بعنوان «اطّلع أيضًا»- الأمان — NextPDF Enterprise — صفحة الإمكانية لهذا السطح.
- توقيع وحدة الأمان العتادية (PKCS#11) — خطوات الإعداد والتهيئة والتحقق.
- سياسة تعمية FIPS 140 — صفحة إمكانية FIPS.
- HSM — مرجع متعمّق — مرجع الموقّع المُركّز.
- FIPS 140 — مرجع متعمّق — مرجع وحدة FIPS المُركّز.
- الأمان — NextPDF Pro — سطح الأمان لطبقة Pro.
- الأمان — NextPDF Core — خط أساس الأمان في Core.