ข้ามไปยังเนื้อหา
getnextpdf.com

Enterprise รุ่น

FIPS 140 — เอกสารอ้างอิงเชิงลึก

หน้านี้เป็นข้อมูลอ้างอิงเชิงลึกสำหรับโมดูล FIPS 140 ของ NextPDF Enterprise โมดูลนี้เป็นความสามารถด้านนโยบายและการทดสอบตนเอง มันจำกัดตัวเลือกการเข้ารหัสให้อยู่ในรายการอนุญาตที่สอดคล้องกับ FIPS, รันชุดทดสอบ known-answer เมื่อเปิดเครื่อง และยับยั้งเอาต์พุตการเข้ารหัสเมื่อชุดทดสอบล้มเหลว NextPDF ไม่ใช่โมดูลการเข้ารหัสที่ผ่านการตรวจรับรอง FIPS 140 ไม่ได้ถือใบรับรองใด และไม่ได้มอบใบรับรองใด การรองรับไม่เท่ากับการปฏิบัติตาม และการปฏิบัติตามไม่เท่ากับการรับรอง การดีพลอยที่รองรับ FIPS ยังต้องมีผู้ให้บริการการเข้ารหัสที่ผ่านการตรวจรับรอง FIPS ซึ่งจัดหาโดยผู้ดำเนินการเพิ่มเติมด้วย

ความสามารถนี้มาพร้อมกับ NextPDF Enterprise (nextpdf/enterprise) และเปิดใช้งานด้วยซองใบอนุญาตระดับ Enterprise การดีพลอยที่ไม่มีสิทธิ์นั้นจะไม่โหลดคลาสของความสามารถนี้ เปรียบเทียบเอดิชันและขอรับใบอนุญาต

สัญลักษณ์ทั้งหมดอยู่ใน NextPDF\Enterprise\Security\Fips ยกเว้น FipsBootstrap ซึ่งอยู่ใน NextPDF\Enterprise\Bootstrap

สัญลักษณ์พารามิเตอร์พฤติกรรมเริ่มต้นคืนค่าโยนหรือล้มเหลวด้วยหมายเหตุ
FipsBootstrap::boot()?CryptoPolicyInterface $policy, ?FipsSelfTest $selfTest, ?LoggerInterface $auditLogger (ทั้งหมดค่าเริ่มต้น null)รันชุดทดสอบเมื่อเปิดเครื่องหนึ่งครั้งตอนเริ่มต้น; ค่าเริ่มต้นใช้นโยบาย strictFipsModeGuardFipsModuleErrorStateException เมื่อมีการทดสอบเมื่อเปิดเครื่องล้มเหลวรากการประกอบ; ปิดร่องรอยการตรวจสอบเมื่อ $auditLogger เป็น null
FipsBootstrap::lazy()เหมือนกับ boot()เลื่อนชุดทดสอบไปยังการยืนยันขอบเขตครั้งแรกFipsModeGuardไม่มีในตอนเรียก; การยืนยันครั้งแรกอาจโยน FipsModuleErrorStateExceptionโมดูลคงสถานะ PRE_OPERATIONAL จนกว่าจะมีการยืนยันครั้งแรก
FipsBootstrap::signatureEnforcer()?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = nullบูตโมดูล จากนั้นห่อหุ้มตัวป้องกันสำหรับจุดคอขวดของผู้ลงนามFipsSignatureEnforcerFipsModuleErrorStateException เมื่อมีการทดสอบเมื่อเปิดเครื่องล้มเหลวมอบหมายให้ boot()
FipsBootstrap::selfTestReport()?FipsSelfTest $selfTest = nullรันชุดทดสอบตามคำขอและสรุปผลarray{status: FipsSelfTestStatus, operational: bool, failed: list<string>}ไม่โยนข้อยกเว้น; ความล้มเหลวปรากฏใน failedสำหรับ endpoint ตรวจสุขภาพของผู้ดูแลระบบและการใช้งาน CLI
FipsCryptoPolicy::strict()?FipsSelfTest $selfTest = nullพรีเซ็ต FIPS 140-3: SHA-256/384/512; RSA, RSASSA-PSS, ECDSA OIDs ที่ได้รับการอนุมัติ; aes-256-cbc, aes-256-gcm; RSA >= 2048, EC >= 256selfไม่มีคอนสตรัคเตอร์เป็นแบบ private; พรีเซ็ตเป็นทางเข้าเดียว
FipsCryptoPolicy::standard()?FipsSelfTest $selfTest = nullพรีเซ็ต FIPS 140-2: ชุด strict บวก aes-128-cbcselfไม่มีสำหรับการทำงานร่วมกันแบบเดิมเท่านั้น
FipsCryptoPolicy::assertPreOperational()ไม่มีรัน หรือเล่นซ้ำผลลัพธ์ที่ติดค้างของชุดทดสอบเมื่อเปิดเครื่องvoidFipsModuleErrorStateException เมื่อมีการทดสอบเมื่อเปิดเครื่องล้มเหลวขับเคลื่อนโดยตะเข็บการบังคับใช้ของ Core ก่อนการดำเนินการครั้งแรก
พื้นผิวการสอบถามของ FipsCryptoPolicyอินพุต string / intการตรวจสอบสมาชิกในรายการอนุญาต; ปฏิเสธชนิดกุญแจที่ไม่รู้จักbool / stringไม่มีisHashAlgorithmAllowed, isSignatureAlgorithmAllowed, isEncryptionAlgorithmAllowed, isKeyStrengthAllowed, getPreferredHashAlgorithm, getName
FipsModeGuard::__construct()CryptoPolicyInterface $policy, ?FipsBootGuard $bootGuard = null, ?FipsAuditLogger $auditLogger = nullห่อหุ้มนโยบายด้วยขอบเขตแบบ assertไม่มีหากไม่มี $bootGuard จะไม่มีเกตทดสอบตนเอง; การประกอบสำหรับโปรดักชันจะจัดหาให้
FipsModeGuard::assertHashAllowed()string $algorithmแคตตาล็อกการปฏิเสธก่อน จากนั้นรายการอนุญาตvoidFipsViolationException; FipsModuleErrorStateException เมื่อมีการต่อ boot guard ไว้บันทึกการตรวจสอบเกิดขึ้นก่อน FipsViolationException ใดๆ
FipsModeGuard::assertSignatureAlgorithmAllowed()string $oidแคตตาล็อกการปฏิเสธก่อน จากนั้นรายการอนุญาตvoidเหมือนกับด้านบนOID จับคู่แบบตรงตัว
FipsModeGuard::assertEncryptionAllowed()string $algorithmแคตตาล็อกการปฏิเสธก่อน จากนั้นรายการอนุญาตvoidเหมือนกับด้านบนชื่อถูกเปรียบเทียบแบบตัวพิมพ์เล็ก
FipsModeGuard::assertKeyStrengthAllowed()string $keyType, int $bitLengthแคตตาล็อกการปฏิเสธก่อน จากนั้นค่าต่ำสุดของนโยบายvoidเหมือนกับด้านบนปฏิเสธชนิดกุญแจที่ไม่รู้จัก
FipsModeGuard::getPolicy()ไม่มีคืนค่านโยบายที่ถูกห่อหุ้มCryptoPolicyInterfaceไม่มี
FipsBootGuard::__construct()FipsSelfTest $selfTestถือชุดทดสอบไว้; ไม่รันมันไม่มีหนึ่งรอบเปิดเครื่องต่อหนึ่งอินสแตนซ์
FipsBootGuard::report()ไม่มีรันชุดทดสอบหนึ่งครั้ง, แคชรายงาน, ติดค้างเมื่อเกิดข้อผิดพลาดFipsSelfTestReportไม่มีการเรียกครั้งแรกจะรันการทดสอบ
FipsBootGuard::rerun()ไม่มีบังคับรันใหม่; การรันที่ผิดพลาดจะทำให้โปรเซสติดค้างFipsSelfTestReportไม่มีการทดสอบตนเองตามคำขอ; ไม่ใช่เส้นทางการกู้คืนข้อผิดพลาด
FipsBootGuard::assertOperational()ไม่มียืนยันว่าโมดูลพร้อมทำงาน; ติดค้างทั่วทั้งโปรเซสvoidFipsModuleErrorStateExceptionอินสแตนซ์ที่สะอาดยังคงโยนข้อยกเว้นเมื่อโปรเซสติดค้างข้อผิดพลาดไว้
FipsBootGuard::status()ไม่มีรายงานสถานะที่แคชไว้FipsSelfTestStatusไม่มีERROR เมื่อติดค้าง; PRE_OPERATIONAL เมื่อไม่เคยรัน
FipsSelfTest::__construct()?callable $randomBytesProvider = null, ?callable $hashProvider = nullใช้ hash() และ random_bytes() ของแพลตฟอร์มไม่มีมีการแทนที่สำหรับการทดสอบความล้มเหลวแบบกำหนดผลได้
FipsSelfTest::run()ไม่มีดำเนินชุดทดสอบทั้งหมด; ไม่ลัดวงจรFipsSelfTestReportไม่มีความล้มเหลวปรากฏในรายงาน ไม่ใช่ในข้อยกเว้น
FipsSelfTestReportFipsSelfTestStatus $status, array $results, array $failedResultsกลุ่มข้อมูลที่ไม่เปลี่ยนแปลงของการรันหนึ่งครั้งassertOperational() โยน FipsModuleErrorStateException ในสถานะข้อผิดพลาดยังมี isOperational(), isError()
FipsSelfTestResultstring $algorithm, string $kind, bool $passed, string $message = ''ผลลัพธ์ต่อการทดสอบที่ไม่เปลี่ยนแปลงไม่มีkind คือ KAT, PWCT หรือ HEALTH; ยังมี isPassed(), isFailed()
FipsSelfTestStatusenum ที่รองรับด้วยสตริงไม่มีเคส PRE_OPERATIONAL, OPERATIONAL, ERROR
FipsSignatureEnforcer::__construct()FipsModeGuard $guardห่อหุ้มตัวป้องกันที่ผ่านเกตบูตสำหรับจุดคอขวดการลงนามไม่มี
FipsSignatureEnforcer::assertSignatureGenerationAllowed()string $algorithm, string $certificatePemแปลง OID และความแข็งแรงของกุญแจ จากนั้นมอบหมายให้ตัวป้องกันvoidFipsViolationException (อัลกอริทึมที่ไม่รู้จัก, PSS digest ที่ไม่ได้รับอนุมัติ, กุญแจที่พิสูจน์ไม่ได้ หรือการปฏิเสธของนโยบาย); FipsModuleErrorStateException ผ่านตัวป้องกันเส้นทางการสร้างเท่านั้น; การตรวจสอบไม่เคยผ่านทางนี้
FipsAuditLogger::__construct()CryptoPolicyInterface $policy, LoggerInterface $loggerห่อหุ้ม logger แบบ PSR-3 และนโยบายเดียวกับที่ตัวป้องกันบังคับใช้ไม่มีการตัดสินใจที่บันทึกไว้ไม่สามารถแตกต่างจากที่บังคับใช้จริง
FipsAuditLogger::logHashOperation() / logSignatureOperation() / logEncryptionOperation() / logKeyStrengthCheck()อินพุต string / int ต่อการตัดสินใจบันทึก ALLOW ที่ระดับ INFO และ DENY ที่ระดับ WARNINGbool (true เมื่ออนุญาต)ไม่มีบริบทเชิงโครงสร้าง: ชื่อนโยบาย, รายการ, การตัดสินใจ
FipsTransitioningAlgorithmsอินพุต string / intแคตตาล็อกการปฏิเสธ SP 800-131A Rev.2 แบบสถิตbool / list<string>ไม่มีisHashDisallowed, isSignatureOidDisallowed, isEncryptionDisallowed, isKeyStrengthDisallowed, plus disallowedHashes, disallowedSignatureOids, disallowedEncryption
FipsViolationExceptionstring $policyName, string $violatingItem, string $reasonการละเมิดนโยบายแบบมีชนิดพร้อมฟิลด์ public readonlyชนิดย่อยของ NextPDF\Exception\NextPdfException
FipsModuleErrorStateExceptionarray $failedResults, ?string $message = nullการปฏิเสธในสถานะข้อผิดพลาดที่พาผลการทดสอบที่ล้มเหลวมาด้วยชนิดย่อยของ NextPDF\Exception\NextPdfException
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
public static function strict(?FipsSelfTest $selfTest = null): self
public static function standard(?FipsSelfTest $selfTest = null): self
public function assertPreOperational(): void
public function isHashAlgorithmAllowed(string $algorithm): bool
public function isSignatureAlgorithmAllowed(string $oid): bool
public function isEncryptionAlgorithmAllowed(string $algorithm): bool
public function isKeyStrengthAllowed(string $keyType, int $bitLength): bool
public function getPreferredHashAlgorithm(): string
public function getName(): string
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 function __construct(private readonly FipsSelfTest $selfTest)
public function report(): FipsSelfTestReport
public function rerun(): FipsSelfTestReport
public function assertOperational(): void
public function status(): FipsSelfTestStatus
public function __construct(?callable $randomBytesProvider = null, ?callable $hashProvider = null)
public function run(): FipsSelfTestReport
public function __construct(private readonly FipsModeGuard $guard)
public function assertSignatureGenerationAllowed(string $algorithm, string $certificatePem): void
public function __construct(private CryptoPolicyInterface $policy, private LoggerInterface $logger)
public function logHashOperation(string $algorithm): bool
public function logSignatureOperation(string $oid): bool
public function logEncryptionOperation(string $algorithm): bool
public function logKeyStrengthCheck(string $keyType, int $bitLength): bool
public static function isHashDisallowed(string $algorithm): bool
public static function isSignatureOidDisallowed(string $oid): bool
public static function isEncryptionDisallowed(string $algorithm): bool
public static function isKeyStrengthDisallowed(string $keyType, int $bitLength): bool
public static function disallowedHashes(): array
public static function disallowedSignatureOids(): array
public static function disallowedEncryption(): array
public function __construct(public FipsSelfTestStatus $status, public array $results, public array $failedResults)
public function isOperational(): bool
public function isError(): bool
public function assertOperational(): void
// FipsSelfTestResult
public function __construct(public string $algorithm, public string $kind, public bool $passed, public string $message = '')
public function isPassed(): bool
public function isFailed(): bool
// FipsSelfTestStatus
enum FipsSelfTestStatus: string
{
case PRE_OPERATIONAL = 'pre_operational';
case OPERATIONAL = 'operational';
case ERROR = 'error';
}
  • รายการอนุญาตของนโยบายคือการตัดสินใจที่มีอำนาจสูงสุด FipsTransitioningAlgorithms เพิ่มชั้นการปฏิเสธตาม SP 800-131A Rev.2 อย่างชัดเจนไว้เหนือมัน เพื่อข้อความปฏิเสธที่ชัดเจนสำหรับการตรวจสอบ ชั้นการปฏิเสธไม่เคยขยายหรือลบล้างรายการอนุญาต
  • FipsCryptoPolicy::strict() อนุญาต SHA-256, SHA-384 และ SHA-512; signature OID ของ RSA PKCS#1 v1.5, RSASSA-PSS และ ECDSA ที่ผูกกับแฮชเหล่านั้น; aes-256-cbc และ aes-256-gcm; และขั้นต่ำของกุญแจ RSA 2048, EC 256, Ed25519 256 standard() อนุญาต aes-128-cbc เพิ่มเติม
  • ชุดทดสอบเมื่อเปิดเครื่องครอบคลุม: KAT ของ digest SHA-256/384/512, KAT ของ HMAC-SHA-256, KAT การเข้ารหัสและถอดรหัส AES-256-CBC, KAT ของ tag AES-256-GCM, การทดสอบความสอดคล้องแบบคู่ของ ECDSA P-256 และการตรวจสุขภาพ DRBG FipsSelfTest::run() จะดำเนินทุกการทดสอบเสมอและไม่ลัดวงจร ดังนั้นรายงานจึงสมบูรณ์สำหรับหลักฐานการตรวจสอบ
  • แถว DRBG เป็นการทดสอบสุขภาพแบบต่อเนื่อง (ความยาวการสุ่มบวกกับการสุ่มต่อเนื่องที่แตกต่างกัน) ไม่ใช่การทดสอบ known-answer ภาระ known-answer ของ DRBG ถูกมอบหมายให้ผู้ให้บริการที่ผ่านการตรวจรับรอง FIPS ซึ่งผู้ดำเนินการจัดหามาเป็นพื้นฐาน
  • สถานะข้อผิดพลาดติดค้างทั้งโปรเซส รายงาน ERROR ครั้งแรกที่ FipsBootGuard ใดสังเกตเห็นจะทำให้ทั้งโปรเซสติดค้าง ตัวป้องกันหรืออินสแตนซ์นโยบายใหม่ไม่สามารถลบล้างข้อผิดพลาดได้ และการรันซ้ำที่ผ่านในภายหลังก็ไม่ล้างมัน มีเพียงการรีสตาร์ทโปรเซส (การเปิดเครื่องใหม่จริงๆ) เท่านั้นที่รีเซ็ตสถานะ
  • FipsCryptoPolicy ทำการ implement NextPDF\Contracts\CryptoPolicyInterface และ NextPDF\Contracts\PreOperationalSelfTestInterface เมื่อกำหนดค่าเป็นนโยบายการเข้ารหัสของ Core ตะเข็บการบังคับใช้ของ Core จะขับเคลื่อน assertPreOperational() ก่อนที่ลายเซ็นหรือไซเฟอร์เท็กซ์แรกจะถูกสร้างขึ้น
  • FipsSignatureEnforcer ควบคุมเฉพาะเส้นทางการสร้าง การตรวจสอบลายเซ็นที่ถูกสร้างขึ้นแล้วเป็นการใช้งานแบบเดิมภายใต้ SP 800-131A Rev.2 และไม่เคยผ่านตัวบังคับใช้
  • เมื่อมีการต่อ audit logger ไว้ ทุกขอบเขต assert จะปล่อยบันทึก ALLOW (INFO) หรือ DENY (WARNING) หนึ่งรายการก่อนการโยนการละเมิดนโยบายใดๆ ดังนั้นการปฏิเสธด้วย FipsViolationException ทุกครั้งจึงมีหลักฐานในร่องรอย เกต boot-guard ทำงานก่อน ดังนั้นการปฏิเสธในสถานะข้อผิดพลาดจึงถูกยกขึ้นก่อนบันทึกการตรวจสอบ FipsAuditLogger อ้างอิงนโยบายเดียวกับที่ตัวป้องกันบังคับใช้ ดังนั้นการตัดสินใจที่บันทึกไว้จึงไม่สามารถแตกต่างจากที่บังคับใช้จริง
  • ชนิดกุญแจที่ไม่รู้จักถูกปฏิเสธโดยทั้งสองชั้น: นโยบายคืนค่า false และแคตตาล็อกถือว่าไม่อนุญาต
  • ตัวระบุอัลกอริทึมการลงนามที่ตัวบังคับใช้ไม่สามารถแมปเป็น signature OID ได้จะถูกปฏิเสธแบบ fail-closed ด้วย FipsViolationException
  • ทุกวาเรียนต์ของ RSASSA-PSS ใช้ OID 1.2.840.113549.1.1.10 ร่วมกัน ดังนั้น OID เพียงอย่างเดียวจึงไม่สามารถพิสูจน์ digest ได้ ตัวบังคับใช้ผูก digest ที่มีผลอย่างชัดเจนและปฏิเสธ PSS token ใดๆ ที่ digest ไม่ใช่ SHA-256/384/512
  • ใบรับรองที่ไม่สามารถแยกวิเคราะห์ได้ หรือที่ไม่ทราบความยาวบิตของกุญแจสาธารณะ จะถูกปฏิเสธเป็น key:unprovable
  • บนรันไทม์ที่ไม่มี asymmetric primitives ของ OpenSSL การทดสอบความสอดคล้องแบบคู่ของ ECDSA จะบันทึกความล้มเหลว ไม่ใช่การข้าม และโมดูลจะเข้าสู่ ERROR
  • การสุ่ม 32 ไบต์ต่อเนื่องกันสองครั้งที่เหมือนกันจะทำให้การตรวจสุขภาพ DRBG ล้มเหลว (การตรวจจับเอาต์พุตที่ค้าง) และบังคับให้เป็น ERROR
  • FipsModeGuard ที่ถูกสร้างขึ้นโดยไม่มี boot guard จะทำเพียงการตรวจสอบนโยบายและไม่มีเกตทดสอบตนเอง การประกอบสำหรับโปรดักชันจะผ่าน FipsBootstrap ซึ่งต่อเกตไว้เสมอ
  • ชื่อแฮชและ cipher ถูกเปรียบเทียบแบบตัวพิมพ์เล็ก; signature OID จับคู่แบบตรงตัวโดยไม่มีการนอร์มัลไลซ์
  • หลังจาก FipsBootstrap::lazy() โมดูลจะคงสถานะ PRE_OPERATIONAL จนกว่าขอบเขต assert แรกจะรันชุดทดสอบ PRE_OPERATIONAL ถูกถือว่าไม่พร้อมทำงานในเวลาที่ยืนยัน

โมดูลนี้คือพื้นผิวโหมด FIPS โดยตัวมันเอง ในขณะที่โมดูลอยู่ในสถานะข้อผิดพลาด และในขณะที่การทดสอบตนเองก่อนการทำงานกำลังรัน เอาต์พุตการเข้ารหัสจะถูกยับยั้ง: ทุกขอบเขต assert จะโยน FipsModuleErrorStateException ก่อนที่ลายเซ็นหรือไซเฟอร์เท็กซ์ใดจะถูกสร้างขึ้น (ISO/IEC 19790:2025 §7.3.3 b), AS03.07) FipsBootGuard::status() และ FipsBootstrap::selfTestReport() เปิดเผยสถานะเพื่อให้ผู้ดำเนินการสามารถระบุได้ว่าโมดูลเข้าสู่สถานะข้อผิดพลาด (ISO/IEC 19790:2025 §7.10.3) พฤติกรรมเหล่านี้เป็นการอ้างความสามารถเกี่ยวกับโค้ดของ NextPDF ไม่ใช่การอ้างการตรวจรับรอง: ขอบเขตโมดูลที่ FIPS 140 ตรวจรับรองคือผู้ให้บริการการเข้ารหัสที่ผู้ดำเนินการจัดหา ไม่ใช่ NextPDF

ข้ออ้างมาตรฐานข้อกำหนด
FIPS 140-3 อ้างอิงจาก ISO/IEC 19790 และ ISO/IEC 24759; หน้านี้จึงอ้างข้อกำหนดของ ISO/IEC 19790FIPS 140-3Introduction (fips_140_3#x26.x2)
เอาต์พุตถูกยับยั้งในสถานะข้อผิดพลาดและระหว่างการทดสอบตนเองก่อนการทำงานISO/IEC 19790:2025§7.3.3 b) [AS03.07]
การทดสอบ known-answer เปรียบเทียบผลลัพธ์ที่คำนวณได้กับเอาต์พุตที่คาดหวังที่ทราบ; ชุดทดสอบนำรูปแบบนี้ไปใช้ISO/IEC 19790:2025§7.10.4
ผู้ดำเนินการสามารถระบุสถานะข้อผิดพลาดได้ผ่านเอาต์พุตสถานะISO/IEC 19790:2025§7.10.3 [AS10.10]
ผู้ดำเนินการสามารถเริ่มการทดสอบตนเองตามคำขอสำหรับการทดสอบตามระยะ; rerun() และ selfTestReport() ให้ความสามารถนี้ISO/IEC 19790:2025§7.10.5 [AS10.54]
SHA-1 ไม่ได้รับอนุญาตสำหรับการสร้างลายเซ็นดิจิทัลใหม่; แคตตาล็อกการปฏิเสธจะปฏิเสธมันNIST SP 800-131A Rev.2§9
การสร้างลายเซ็นที่มีความแข็งแรงต่ำกว่า 112 บิต (RSA < 2048, ลำดับ ECDSA < 224) ไม่ได้รับอนุญาต; ขั้นต่ำของกุญแจบังคับใช้เรื่องนี้NIST SP 800-131A Rev.2§3 Table 2
การตรวจสอบลายเซ็น SHA-1 ที่ถูกสร้างขึ้นแล้วเป็นการใช้งานแบบเดิม; มันไม่ผ่านเกตการสร้างNIST SP 800-131A Rev.2Change summary (9.x4.p12)

ข้อกำหนดทั้งหมดถูกถอดความ; ไม่มีการนำข้อความเชิงบรรทัดฐานมาแสดงซ้ำ NextPDF ไม่ได้อ้างการรับรอง FIPS 140 โมดูลปรับพฤติกรรมให้สอดคล้องกับข้อกำหนดที่อ้างถึงในฐานะความสามารถช่วยเหลือการปฏิบัติตาม การที่การดีพลอยจะปฏิบัติตาม FIPS หรือไม่นั้นขึ้นอยู่กับผู้ให้บริการที่ผ่านการตรวจรับรอง, นิยามขอบเขตโมดูล และโปรแกรมการปฏิบัติตามของผู้ดำเนินการ — ไม่ใช่ NextPDF เพียงลำพัง

  • การทดสอบความล้มเหลวแบบกำหนดผลได้จะฉีดผู้ให้บริการที่เสียหายผ่านคอนสตรัคเตอร์ของ FipsSelfTest หรือผ่านพารามิเตอร์ $selfTest บน FipsCryptoPolicy::strict(), standard() และเมธอดของ FipsBootstrap
  • ตัวล็อกข้อผิดพลาดที่ติดค้างทั้งโปรเซสมีฮุครีเซ็ตภายในสำหรับการทดสอบเท่านั้น มันไม่ได้เป็นส่วนหนึ่งของ API ที่รองรับ และโค้ดโปรดักชันต้องไม่เรียกใช้มัน
  • โปรเซส PHP worker แต่ละตัวจะรันชุดทดสอบเมื่อเปิดเครื่องของตัวเอง รายงานถูกแคชต่ออินสแตนซ์ ดังนั้นการยืนยันบนเส้นทางร้อนจึงเป็นการตรวจสอบสถานะแบบเวลาคงที่
  • อย่าจับ FipsModuleErrorStateException แล้วดำเนินการต่อ ข้อยกเว้นนี้หมายความว่าโมดูลปฏิเสธบริการการเข้ารหัส; การตอบสนองที่ถูกต้องคือหยุดและรีสตาร์ทโปรเซสหลังจากแก้ไข
  • FipsBootstrap::selfTestReport() รองรับความต้องการทดสอบตนเองตามคำขอและตามระยะ เช่น health endpoints การรันตามคำขอที่ผ่านไม่เคยล้างข้อผิดพลาดที่ติดค้าง

หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น เส้นทาง namespace ภายใน, คลาสตัวช่วย, ตารางกลไก, ชื่อไฟล์ runbook และคำนำหน้าตั๋วอยู่นอกขอบเขต