سياسة التشفير والاختبارات الذاتية وفق FIPS 140-2/3
نظرة سريعة
قسم بعنوان «نظرة سريعة»يقصر NextPDF Enterprise خيارات التشفير المتاحة لعملية التوقيع أو التشفير على مجموعة معتمدة وفق معايير المعالجة الفيدرالية للمعلومات (FIPS)، ويرفض أي خيار خارج تلك المجموعة. يتحقق حارس وقت التشغيل من كل تجزئة ومعرّف خوارزمية توقيع وخوارزمية تشفير وقوة مفتاح قبل تشغيل العملية. تعمل مجموعة الاختبارات الذاتية عند بدء التشغيل مرة واحدة مع بدء العملية. إذا فشل أي اختبار بإجابة معروفة، تدخل الوحدة في حالة خطأ. تصف هذه الصفحة السلوك: ما الذي تسمح به السياسة، وما الذي يرفضه الحارس، وما الذي يغطيه الاختبار الذاتي، وموقفه الصريح من الاعتماد.
يساعد NextPDF Enterprise في الامتثال. وهو ليس وحدة تشفير معتمدة. راجع الأمان والامتثال للاطلاع على موقف عدم الاعتماد الصريح.
تسرد البيانات الأولية المتطلبات المسبقة، ويعيد قسم المتطلبات المسبقة ذكرها.
الإصدار والترخيص
قسم بعنوان «الإصدار والترخيص»يُشحَن ملف سياسة التشفير في وضع FIPS وحارس وقت التشغيل وحارس الاختبار الذاتي عند بدء التشغيل ضمن حزمة 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.
المتطلبات المسبقة
قسم بعنوان «المتطلبات المسبقة»- ثبّت 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).
هذه الصفحة مُعلَّمة بـ export_control_class: legal-review-required لأنها تتعلق بسياسة التشفير. كل مصدر معياري مُعاد صياغته؛ ولا يُستنسخ أي نص معياري. يلزم الحصول على موافقة قانونية قبل تعيين علامة publish.
NextPDF Enterprise ليس وحدة تشفير معتمدة وفق FIPS ولا يقدّم أي ادعاء اعتماد وفق FIPS. وهو يعمل في وضع متوافق مع FIPS فقط عندما تضبطه باستخدام مزوّد تشفير معتمد وفق FIPS — مثل مزوّد OpenSSL معتمد وفق FIPS — أو وحدة أمان أجهزة (HSM) معتمدة وفق FIPS. تساعد سياسة وضع FIPS في الامتثال؛ وهي ليست اعتمادًا ولا رأيًا قانونيًا. استشر مستشاري الامتثال والمستشارين القانونيين الخاصين بك بشأن التزاماتك التنظيمية.
معالجة الأعطال
قسم بعنوان «معالجة الأعطال»- فشل الاختبار الذاتي عند بدء التشغيل. يُطلِق حارس بدء التشغيل استثناء حالة خطأ الوحدة. أوقف العملية؛ ولا تتابع في مسار تشفير لم يُتحقَّق منه.
- مخالفة السياسة. يُطلِق الحارس مخالفة مُصنَّفة تذكر اسم السياسة والعنصر المخالف. ارفض العملية؛ ولا تُخفِّض المستوى.
- نوع مفتاح غير معروف. ترفضه السياسة افتراضيًا. عيّن نوع المفتاح بشكل صريح فقط إذا كان معتمدًا فعلًا.
- إعادة تشغيل الاختبار الذاتي. تتوفّر إعادة تشغيل عند الطلب من نقطة نهاية إدارية أو أمر، بما يفي بالتزام الاختبار الذاتي الدوري عند الطلب. وهي ليست آلية استرداد: فإعادة التشغيل الفاشلة تُثبِّت العملية أيضًا، وإعادة التشغيل الناجحة لا تُزيل قفلًا قائمًا. يتطلب استرداد وحدة في حالة الخطأ إعادة تشغيل العملية.
السياق التجاري
قسم بعنوان «السياق التجاري»يُشحَن NextPDF Core مع الموقّع البرمجي والتشفير دون ملف سياسة في وضع FIPS. يضيف NextPDF Enterprise ملف سياسة التشفير في وضع FIPS وحارس وقت التشغيل وحارس الاختبار الذاتي عند بدء التشغيل، بحيث يمكنك قصر خيارات التشفير على مجموعة معتمدة والفشل بأمان عند عدم تطابق الاختبار الذاتي. اقرنه بـ التوقيع بوحدة HSM لتشغيل العملية الأولية داخل جهاز معتمد وفق FIPS. قارن بين الإصدارات.
انظر أيضًا
قسم بعنوان «انظر أيضًا»- الأمان — NextPDF Enterprise — ضوابط أمان Enterprise المجمّعة.
- التوقيع بوحدة HSM — NextPDF Enterprise — حفظ المفاتيح في الأجهزة وفق معايير تشفير المفتاح العام #11 (PKCS#11).
- التوقيع — NextPDF Enterprise — مُنتِج التوقيعات الإلكترونية المتقدمة لـ PDF (PAdES) طويلة الأمد B-LT وB-LTA.
- الأمان — NextPDF Core — واجهة التشفير والتوقيع الأساسية.
- وضع FIPS · KAT · التشفير المُصادَق (AEAD) — مصطلحات المسرد.