Enterprise الإصدار
سياسة التشفير والاختبار الذاتي وفق FIPS 140-2/3
نظرة سريعة
قسم بعنوان «نظرة سريعة»يقصر NextPDF Enterprise خيارات التشفير التي يمكن لعملية توقيع أو تشفير اتخاذها على مجموعة معتمدة وفق معايير المعالجة الفيدرالية للمعلومات (FIPS)، ويرفض أي خيار خارج تلك المجموعة. يتحقق حارس وقت التشغيل من كل تجزئة ومعرّف خوارزمية توقيع وخوارزمية تشفير وقوة مفتاح قبل تشغيل العملية. تعمل مجموعة الاختبارات الذاتية عند بدء التشغيل مرة واحدة عند بدء العملية. إذا فشل أي اختبار بإجابة معروفة، تدخل الوحدة في حالة خطأ. تصف هذه الصفحة السلوك: ما الذي تسمح به السياسة، وما الذي يرفضه الحارس، وما الذي يغطيه الاختبار الذاتي، وموقف الاعتماد الصريح.
يساعد NextPDF Enterprise في الامتثال. وهو ليس وحدة تشفير معتمدة. راجع الأمان والامتثال للاطلاع على موقف عدم الاعتماد الصريح.
تسرد البيانات الأولية المتطلبات المسبقة، ويعيد قسم المتطلبات المسبقة ذكرها.
التوفّر والترخيص
قسم بعنوان «التوفّر والترخيص»تُشحَن هذه القدرة في NextPDF Enterprise (nextpdf/enterprise) وتُفعَّل بمظروف ترخيص من فئة Enterprise. لا يُحمِّل أي نشر يفتقر إلى ذلك الاستحقاق فئات هذه القدرة. قارن بين الإصدارات واحصل على ترخيص.
لا يوفّر NextPDF Core ولا NextPDF Pro ملف سياسة في وضع FIPS. يعمل الحارس والاختبار الذاتي داخل العملية؛ ولا ترسل فحوص السياسة والاختبارات الذاتية محتوى المستند خارج المضيف.
ما الذي تفعله هذه القدرة
قسم بعنوان «ما الذي تفعله هذه القدرة»تتكون هذه القدرة من ثلاثة أجزاء: سياسة تشفير، وحارس وقت تشغيل، واختبار ذاتي عند بدء التشغيل.
سياسة التشفير تقصر خيارات التشفير على مجموعة معتمدة، مع إعدادين مسبقين:
- صارم (متوافق مع جيل FIPS 140-3) — تجزئات SHA-256 وSHA-384 وSHA-512؛ ومعرّفات كائنات التوقيع (OIDs) لخوارزميتي RSA وECDSA مع تلك التجزئات؛ وتشفير AES-256-CBC؛ وأحجام مفاتيح دنيا قدرها RSA 2048 ومنحنى إهليلجي 256.
- قياسي (متوافق مع جيل FIPS 140-2) — يطابق الإعداد الصارم، ويسمح أيضًا بـ AES-128-CBC لأغراض التشغيل البيني الأقدم.
بالنسبة إلى إنشاء التوقيع، يقبل NIST SP 800-131A Rev.2 §3 مفتاح RSA لا يقل عن 2048 بت ورتبة ECDSA لا تقل عن 224 بت؛ وتفي الحدود الدنيا 2048/256 في الإعداد الصارم بتلك الحدود الدنيا أو تتجاوزها. ترفض السياسة نوع مفتاح غير معروف افتراضيًا — فهي لا تقبل نوعًا غير معترف به بصمت.
حارس وقت التشغيل يغلّف السياسة ويُتيح طرق تحقق للتجزئة، ومعرّف التوقيع (OID)، وخوارزمية التشفير، وقوة المفتاح. عندما يكون الخيار غير مسموح به، يُطلِق مخالفة مُصنَّفة تذكر اسم السياسة والعنصر المخالف، ثم يوقف العملية. يفشل المسار بأمان: لا تُخفِّف السياسة قيودها أبدًا ولا تستبدل أبدًا خوارزمية أضعف. بالنسبة إلى توقيع RSASSA-PSS، تربط بوابة الإنشاء خلاصة الرسالة صراحةً. تتشارك جميع متغيرات PSS معرّف توقيع (OID) واحدًا؛ وتوجد التجزئة في معاملات PSS، لا في معرّف OID. لا يمكن لقائمة سماح بمعرّفات OID وحدها إثبات الخلاصة الفعلية، لذا تتحقق البوابة من أن الخلاصة معتمدة وفق FIPS (SHA-256/384/512). وترفض مع الفشل الآمن أي رمز PSS تكون خلاصته غير معروفة أو غير معتمدة، مثل SHA-1 PSS، قبل أي إرسال إلى الموقّع (FIPS 186-5 §5.4(b)).
الاختبار الذاتي عند بدء التشغيل يُشغِّل مجموعة اختبارات بإجابة معروفة (KAT) مرة واحدة عند بدء العملية. تغطي هذه المجموعة دوال التجزئة، ومصادقة الرسائل، والتشفير، والتشفير المُصادَق، والتوقيع، والبتات العشوائية المعتمدة. بموجب ISO/IEC 19790:2025 §7.10.4.2، يفشل الاختبار بإجابة معروفة عندما لا يساوي الناتج المحسوب الإجابة المعروفة. عند أي فشل، تدخل الوحدة في حالة خطأ وترفض خدمات التشفير (ISO/IEC 19790:2025 §7.2.4.3). حالة الخطأ ملتصقة بالعملية: بعد أن يرصد أي حارس بدء تشغيل في العملية خطأً، تبقى العملية بأكملها في وضع الفشل الآمن طوال مدة حياتها. لا يمكن لإنشاء حارس بدء تشغيل أو سياسة جديدة مسحها. إعادة تشغيل اختبار ذاتي ناجح لاحقًا لا تمسح خطأً مُثبَّتًا — وحدها إعادة تشغيل العملية (دورة طاقة حقيقية) تفعل ذلك، وفق ISO/IEC 19790:2025 §7.10.2. تُخزَّن النتيجة مؤقتًا طوال مدة حياة العملية؛ يمكنك تشغيل إعادة تشغيل عند الطلب لنقطة نهاية إدارية أو أمر، لكنها تخدم التزام الاختبار الذاتي الدوري، لا استرداد الخطأ.
تتطلب السياسة متجه تهيئة (IV) فريدًا لكل مفتاح لاستخدام التشفير المُصادَق، وفق NIST SP 800-38D §5.2.1.
لماذا يعمل بهذه الطريقة
قسم بعنوان «لماذا يعمل بهذه الطريقة»يرتبط اعتماد FIPS بحدود وحدة تشفير محددة، لا بتطبيق يستدعيها. لذلك يفرض NextPDF السياسة ويُشغِّل مجموعة الاختبارات الذاتية، لكنه يفوّض كل عملية أولية إلى مزوّد معتمد وفق FIPS تضبطه بنفسك — فهو يتحقق من الخيارات المعتمدة بدلًا من الادعاء بأنه الوحدة المعتمدة. حالة الخطأ ملتصقة بالعملية عمدًا: عدم تطابق الاختبار الذاتي يعني أنه لم يعد يمكن الوثوق بالوحدة، لذا يجب ألّا يمسحها حارس جديد أو إعادة تشغيل ناجحة لاحقة بصمت، ووحدها إعادة تشغيل العملية الحقيقية تفعل ذلك. يُبقي هذا الفشل صادقًا وقابلًا للتدقيق بدلًا من أن يكون قابلًا للاسترداد بهدوء في مكانه. والنتيجة قدرة تساعد في الامتثال دون أي مبالغة في وصف ما هو NextPDF معتمد لتقديمه.
خلفية التصميم: امتثال يمكنك تسليمه لمدقّق.
المتطلبات المسبقة
قسم بعنوان «المتطلبات المسبقة»- ثبّت NextPDF Core وحزمة Enterprise، واحتفظ بترخيص Enterprise نشط.
- للادعاء بتشغيل متوافق مع FIPS، اضبط NextPDF باستخدام مزوّد تشفير معتمد وفق FIPS — مثل مزوّد OpenSSL معتمد وفق FIPS — أو وحدة أمان أجهزة (HSM) معتمدة وفق FIPS. يتولى NextPDF Enterprise التجميع البنيوي وحساب الخلاصة وفرض السياسة؛ بينما تعمل العملية الأولية الأساسية داخل الحدود المعتمدة التي توفّرها.
- اختر الإعداد المسبق: صارم للفرض المتوافق مع FIPS 140-3، أو قياسي عندما يكون التشغيل البيني لـ AES-128-CBC مطلوبًا.
التهيئة
قسم بعنوان «التهيئة»- الإعداد المسبق — اختر صارم أو قياسي. يسمح الإعداد الصارم بـ AES-256-CBC فقط؛ بينما يسمح الإعداد القياسي أيضًا بـ AES-128-CBC.
- الحارس — أنشئ الحارس باستخدام السياسة المختارة. استخدم الحارس بوصفه الحد الذي تتحقق عنده من كل خيار تشفير.
- ربط الاختبار الذاتي — اربط حارس بدء التشغيل عند تهيئة التطبيق بحيث تُشغِّل كل عملية عامل دورة الاختبار الذاتي الخاصة بها. تُشغِّل كل نسخة عملية اختبارها الذاتي عند بدء التشغيل.
خطوة بخطوة
قسم بعنوان «خطوة بخطوة»- عند تهيئة التطبيق، شغّل الاختبار الذاتي عند بدء التشغيل عبر حارس بدء التشغيل، وتحقق من أن الوحدة قيد التشغيل. أوقف العملية إذا لم تكن كذلك.
- أنشئ الحارس باستخدام السياسة الصارمة أو القياسية.
- قبل كل عملية تشفير، تحقق من التجزئة ومعرّف التوقيع (OID) وخوارزمية التشفير وقوة المفتاح عبر الحارس.
- التقط المخالفة المُصنَّفة، وسجّل رسالة بنيوية، وارفض العملية. لا تلجأ إلى خيار أضعف.
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Enterprise\Security\Fips\FipsBootGuard;use NextPDF\Enterprise\Security\Fips\FipsCryptoPolicy;use NextPDF\Enterprise\Security\Fips\FipsModeGuard;use NextPDF\Enterprise\Security\Fips\FipsSelfTest;use NextPDF\Enterprise\Security\Fips\FipsModuleErrorStateException;use Psr\Log\LoggerInterface;
/** * Run the power-on self-test, then build a guard on the strict policy. * * The self-test runs once per process. A known-answer failure raises a * module-error-state exception; the caller must stop rather than proceed * with an unverified crypto path. * * @param LoggerInterface $logger Structural diagnostics only — never secrets. * * @throws FipsModuleErrorStateException When a power-on known-answer test fails. * * @return FipsModeGuard A guard ready to assert each cryptographic choice. */function bootFipsGuard(LoggerInterface $logger): FipsModeGuard{ $bootGuard = new FipsBootGuard(new FipsSelfTest());
try { $bootGuard->assertOperational(); } catch (FipsModuleErrorStateException $e) { $logger->critical('FIPS power-on self-test failed; refusing crypto services.', [ 'reason' => $e->getMessage(), ]);
throw $e; }
return new FipsModeGuard(FipsCryptoPolicy::strict());}<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Enterprise\Security\Fips\FipsModeGuard;use NextPDF\Enterprise\Security\Fips\FipsViolationException;use Psr\Log\LoggerInterface;
final readonly class FipsCheckedSigning{ public function __construct( private FipsModeGuard $guard, private LoggerInterface $logger, ) {}
/** * Assert the signing choices against the active policy before signing. * * A disallowed hash, signature OID, or key strength raises a typed * violation; the operation is refused rather than downgraded. * * @param string $hash The hash algorithm name (e.g. 'sha256'). * @param string $signatureOid The signature algorithm OID. * @param string $keyType The key type (e.g. 'rsa', 'ec'). * @param positive-int $keyBits The key length in bits. * * @throws FipsViolationException When any choice is not approved. */ public function assertApproved( string $hash, string $signatureOid, string $keyType, int $keyBits, ): void { try { $this->guard->assertHashAllowed($hash); $this->guard->assertSignatureAlgorithmAllowed($signatureOid); $this->guard->assertKeyStrengthAllowed($keyType, $keyBits); } catch (FipsViolationException $e) { $this->logger->error('FIPS policy violation', ['reason' => $e->getMessage()]);
throw $e; } }}التحقّق
قسم بعنوان «التحقّق»- شغّل الاختبار الذاتي عند بدء التشغيل وتأكّد من أنه يبلّغ أن الوحدة قيد التشغيل. تأكّد من أنه يختبر كل فئة خوارزمية معتمدة — التجزئة، ومصادقة الرسائل، والتشفير، والتشفير المُصادَق، والتوقيع، والبتات العشوائية.
- تحقّق من خيار معتمد، مثل SHA-256 وRSA 2048، وتأكّد من أنه يجتاز الفحص. تحقّق من خيار غير مسموح به، مثل SHA-1 وRSA 1024، وتأكّد من أنه يُطلِق مخالفة مُصنَّفة.
- أدخِل تجزئة معطّلة عمدًا أو مصدرًا عشوائيًا معطّلًا في الاختبار الذاتي وتأكّد من أن الوحدة تدخل في حالة الخطأ وترفض الخدمات.
- تأكّد من أن نوع المفتاح غير المعروف يُرفَض افتراضيًا بدلًا من قبوله.
الأمان والامتثال
قسم بعنوان «الأمان والامتثال»- الفشل الآمن. عندما يكون خيار التشفير غير مسموح به، يُطلِق الحارس مخالفة مُصنَّفة ويوقف العملية. لا تُخفِّف السياسة قيودها أبدًا ولا تستبدل أبدًا خوارزمية أضعف.
- الاختبار الذاتي يرفض عند عدم التطابق. يضع فشل الاختبار بإجابة معروفة الوحدة في حالة خطأ ملتصقة بالعملية. تبقى العملية بأكملها في وضع الفشل الآمن؛ ولا يمكن لحارس بدء تشغيل أو سياسة جديدة استردادها، ولا تُزيل إعادة تشغيل ناجحة القفل. فقط إعادة تشغيل العملية تمسحها (ISO/IEC 19790:2025 §7.10.4.2؛ §7.10.2).
- قوة المفتاح. يفرض الإعداد الصارم حدودًا دنيا قدرها RSA 2048 ومنحنى إهليلجي 256، وهي تفي بالحدود الدنيا المقبولة في NIST SP 800-131A Rev.2 §3 أو تتجاوزها.
- تفرّد متجه التهيئة. يتطلب استخدام التشفير المُصادَق متجه تهيئة (IV) فريدًا لكل مفتاح (NIST SP 800-38D §5.2.1).
تتعلق هذه الصفحة بسياسة التشفير. كل مصدر معياري مُعاد صياغته؛ ولا يُستنسخ أي نص معياري. > NextPDF Enterprise ليس وحدة تشفير معتمدة وفق FIPS ولا يقدّم أي ادعاء اعتماد وفق FIPS. وهو يعمل في وضع متوافق مع FIPS فقط عندما تضبطه باستخدام مزوّد تشفير معتمد وفق FIPS — مثل مزوّد OpenSSL معتمد وفق FIPS — أو وحدة أمان أجهزة (HSM) معتمدة وفق FIPS. تساعد سياسة وضع FIPS في الامتثال؛ وهي ليست اعتمادًا ولا رأيًا قانونيًا. استشر مستشاري الامتثال والمستشارين القانونيين الخاصين بك بشأن التزاماتك التنظيمية.
معالجة الأعطال
قسم بعنوان «معالجة الأعطال»- فشل الاختبار الذاتي عند بدء التشغيل. يُطلِق حارس بدء التشغيل استثناء حالة خطأ الوحدة. أوقف العملية؛ ولا تتابع في مسار تشفير لم يُتحقَّق منه.
- مخالفة السياسة. يُطلِق الحارس مخالفة مُصنَّفة تذكر اسم السياسة والعنصر المخالف. ارفض العملية؛ ولا تُخفِّض المستوى.
- نوع مفتاح غير معروف. ترفضه السياسة افتراضيًا. عيّن نوع المفتاح صراحةً فقط إذا كان معتمدًا فعلًا.
- إعادة تشغيل الاختبار الذاتي. تتوفّر إعادة تشغيل عند الطلب لنقطة نهاية إدارية أو أمر، بما يفي بالتزام الاختبار الذاتي الدوري عند الطلب. وهي ليست آلية استرداد: فإعادة التشغيل الفاشلة تُثبِّت العملية أيضًا، وإعادة التشغيل الناجحة لا تُزيل قفلًا قائمًا. يتطلب استرداد وحدة في حالة الخطأ إعادة تشغيل العملية.
حدود النشر
قسم بعنوان «حدود النشر»توثّق هذه الصفحة السلوك القابل للرصد خارجيًا وواجهة برمجة التطبيقات العامة المدعومة فقط. أما مسارات فضاءات الأسماء الداخلية، والفئات المساعِدة، وجداول الآليات، وأسماء ملفات كتيّبات التشغيل، وبادئات التذاكر، فهي خارج النطاق.
انظر أيضًا
قسم بعنوان «انظر أيضًا»- الأمان — NextPDF Enterprise — ضوابط أمان Enterprise المجمّعة.
- التوقيع بوحدة HSM — NextPDF Enterprise — حفظ المفاتيح في الأجهزة وفق معايير تشفير المفتاح العام #11 (PKCS#11).
- التوقيع — NextPDF Enterprise — مُنتِج التوقيعات الإلكترونية المتقدمة لـ PDF (PAdES) طويلة الأمد B-LT وB-LTA.
- الأمان — NextPDF Core — واجهة التشفير والتوقيع الأساسية.
- وضع FIPS · KAT · التشفير المُصادَق (AEAD) — مصطلحات المسرد.