Chính sách mật mã và tự kiểm tra FIPS 140-2/3
Tổng quan nhanh
Phần tiêu đề “Tổng quan nhanh”NextPDF Enterprise giới hạn các lựa chọn mật mã mà một thao tác ký hoặc mã hóa có thể dùng trong một tập hợp được Tiêu chuẩn Xử lý Thông tin Liên bang (FIPS) chấp thuận, đồng thời từ chối mọi lựa chọn nằm ngoài tập hợp đó. Một bộ bảo vệ khi chạy sẽ kiểm tra từng giá trị băm, định danh thuật toán chữ ký, thuật toán mã hóa và độ mạnh khóa trước khi thao tác được thực thi. Một loạt bài tự kiểm tra lúc khởi động chạy một lần khi tiến trình bắt đầu. Nếu bất kỳ bài kiểm tra đáp án đã biết nào thất bại, mô-đun sẽ chuyển sang trạng thái lỗi. Trang này mô tả hành vi: chính sách cho phép những gì, bộ bảo vệ từ chối những gì, bài tự kiểm tra bao quát những gì và lập trường chứng nhận rõ ràng.
NextPDF Enterprise hỗ trợ việc tuân thủ. Đây không phải là một mô-đun mật mã được chứng nhận. Xem Bảo mật và tuân thủ để biết lập trường không chứng nhận rõ ràng.
Phần đầu trang liệt kê các điều kiện tiên quyết, và Điều kiện tiên quyết nhắc lại các điều kiện đó.
Phiên bản và cấp phép
Phần tiêu đề “Phiên bản và cấp phép”Hồ sơ chính sách mật mã chế độ FIPS, bộ bảo vệ khi chạy và bộ bảo vệ tự kiểm tra lúc khởi động được cung cấp trong gói nextpdf/enterprise và yêu cầu cờ tính năng giấy phép enterprise. NextPDF Core và NextPDF Pro không cung cấp hồ sơ chế độ FIPS. Bộ bảo vệ và bài tự kiểm tra chạy trong tiến trình; hoạt động kiểm tra chính sách và tự kiểm tra không gửi nội dung tài liệu ra khỏi máy chủ. So sánh các phiên bản.
Khả năng này làm gì
Phần tiêu đề “Khả năng này làm gì”Khả năng này gồm ba phần: một chính sách mật mã, một bộ bảo vệ khi chạy và một bài tự kiểm tra lúc khởi động.
Chính sách mật mã giới hạn các lựa chọn mật mã trong một tập hợp được chấp thuận, với hai cấu hình sẵn:
- Strict (phù hợp với thế hệ FIPS 140-3) — các giá trị băm SHA-256, SHA-384 và SHA-512; các định danh đối tượng chữ ký (OID) RSA và ECDSA với những giá trị băm đó; mã hóa AES-256-CBC; và kích thước khóa tối thiểu là RSA 2048 và đường cong elliptic 256.
- Standard (phù hợp với thế hệ FIPS 140-2) — giống với strict, và cũng cho phép AES-128-CBC để tương tác với hệ thống cũ.
Đối với việc tạo chữ ký, NIST SP 800-131A Rev.2 §3 chấp nhận khóa RSA ít nhất 2048 bit và bậc ECDSA ít nhất 224 bit; các mức sàn 2048/256 của cấu hình strict đáp ứng hoặc vượt các mức tối thiểu đó. Theo mặc định, chính sách từ chối loại khóa không xác định — nó không âm thầm chấp nhận một loại không nhận dạng được.
Bộ bảo vệ khi chạy bao bọc chính sách và cung cấp các phương thức kiểu assert cho giá trị băm, OID chữ ký, thuật toán mã hóa và độ mạnh khóa. Khi một lựa chọn không được phép, bộ bảo vệ nêu ra một vi phạm có kiểu xác định, gọi tên chính sách và mục vi phạm, rồi dừng thao tác. Đường xử lý đóng an toàn: chính sách không bao giờ tự nới lỏng và không bao giờ thay thế bằng một thuật toán yếu hơn. Đối với chữ ký RSASSA-PSS, cổng tạo chữ ký ràng buộc tóm tắt thông điệp một cách rõ ràng. Mọi biến thể PSS đều dùng chung một OID chữ ký; giá trị băm nằm trong các tham số PSS, không nằm trong OID. Chỉ riêng danh sách OID được phép không thể chứng minh tóm tắt thực sự được dùng, vì vậy cổng này xác nhận rằng tóm tắt được FIPS chấp thuận (SHA-256/384/512). Nó từ chối theo kiểu đóng an toàn bất kỳ mã thông báo PSS nào có tóm tắt không xác định hoặc không được chấp thuận, ví dụ SHA-1 PSS, trước khi gửi đến bất kỳ bộ ký nào (FIPS 186-5 §5.4(b)).
Bài tự kiểm tra lúc khởi động chạy một loạt bài kiểm tra đáp án đã biết (KAT) một lần khi tiến trình bắt đầu. Loạt bài kiểm tra này bao quát các hàm được chấp thuận cho băm, xác thực thông điệp, mã hóa, mã hóa có xác thực, chữ ký và bit ngẫu nhiên. Theo ISO/IEC 19790:2025 §7.10.4.2, một bài kiểm tra đáp án đã biết thất bại khi kết quả tính toán không bằng đáp án đã biết. Khi có bất kỳ thất bại nào, mô-đun chuyển sang trạng thái lỗi và từ chối các dịch vụ mật mã (ISO/IEC 19790:2025 §7.2.4.3). Trạng thái lỗi bám theo tiến trình: sau khi bất kỳ bộ bảo vệ khởi động nào trong tiến trình quan sát thấy một lỗi, toàn bộ tiến trình giữ trạng thái đóng an toàn trong suốt vòng đời của nó. Việc tạo một bộ bảo vệ khởi động hoặc chính sách mới không thể xóa trạng thái này. Một lần chạy lại bài tự kiểm tra đạt về sau không xóa được lỗi đã chốt — chỉ có việc khởi động lại tiến trình (một chu trình tắt-bật điện thực sự) mới làm được, theo ISO/IEC 19790:2025 §7.10.2. Kết quả được lưu trong bộ nhớ đệm suốt vòng đời của tiến trình; bạn có thể chạy lại theo yêu cầu cho một đầu cuối quản trị hoặc một lệnh, nhưng việc đó phục vụ nghĩa vụ tự kiểm tra định kỳ, không phải để khôi phục lỗi.
Chính sách yêu cầu một vector khởi tạo (IV) duy nhất cho mỗi khóa khi dùng mã hóa có xác thực, theo NIST SP 800-38D §5.2.1.
Điều kiện tiên quyết
Phần tiêu đề “Điều kiện tiên quyết”- Cài đặt NextPDF Core và gói Enterprise, đồng thời duy trì giấy phép Enterprise đang hoạt động.
- Để tuyên bố vận hành tương thích FIPS, hãy cấu hình NextPDF với một nhà cung cấp mật mã đã được FIPS xác thực — ví dụ một nhà cung cấp OpenSSL đã được FIPS xác thực — hoặc một mô-đun bảo mật phần cứng (HSM) đã được FIPS xác thực. NextPDF Enterprise thực hiện việc lắp ráp cấu trúc, tính toán tóm tắt và thực thi chính sách; primitive bên dưới chạy trong ranh giới đã được xác thực mà bạn cung cấp.
- Chọn cấu hình sẵn: strict để thực thi phù hợp với FIPS 140-3, hoặc standard khi cần khả năng tương tác AES-128-CBC.
Cấu hình
Phần tiêu đề “Cấu hình”- Cấu hình sẵn — chọn strict hoặc standard. Strict chỉ cho phép AES-256-CBC; standard cũng cho phép AES-128-CBC.
- Bộ bảo vệ — tạo bộ bảo vệ với chính sách đã chọn. Dùng bộ bảo vệ làm ranh giới để xác nhận từng lựa chọn mật mã.
- Kết nối tự kiểm tra — kết nối bộ bảo vệ khởi động ở giai đoạn khởi tạo ứng dụng để mỗi tiến trình worker chạy chu kỳ tự kiểm tra riêng. Mỗi thực thể tiến trình chạy bài tự kiểm tra lúc khởi động riêng của nó.
Từng bước
Phần tiêu đề “Từng bước”- Ở giai đoạn khởi tạo ứng dụng, chạy bài tự kiểm tra lúc khởi động thông qua bộ bảo vệ khởi động và xác nhận rằng mô-đun đang hoạt động. Dừng tiến trình nếu không đúng như vậy.
- Tạo bộ bảo vệ với chính sách strict hoặc standard.
- Trước mỗi thao tác mật mã, xác nhận giá trị băm, OID chữ ký, thuật toán mã hóa và độ mạnh khóa thông qua bộ bảo vệ.
- Bắt vi phạm có kiểu xác định, ghi nhật ký thông báo có cấu trúc và từ chối thao tác. Không quay về dùng một lựa chọn yếu hơn.
<?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; } }}Kiểm chứng
Phần tiêu đề “Kiểm chứng”- Chạy bài tự kiểm tra lúc khởi động và xác nhận rằng nó báo cáo trạng thái đang hoạt động. Xác nhận rằng nó thực thi mọi lớp thuật toán được chấp thuận — băm, xác thực thông điệp, mã hóa, mã hóa có xác thực, chữ ký và bit ngẫu nhiên.
- Xác nhận một lựa chọn được chấp thuận, ví dụ SHA-256, RSA 2048, và xác nhận rằng nó đạt. Xác nhận một lựa chọn không được phép, ví dụ SHA-1, RSA 1024, và xác nhận rằng nó nêu ra một vi phạm có kiểu xác định.
- Đưa vào bài tự kiểm tra một hàm băm hoặc nguồn ngẫu nhiên cố ý bị làm hỏng, và xác nhận rằng mô-đun chuyển sang trạng thái lỗi và từ chối các dịch vụ.
- Xác nhận rằng một loại khóa không xác định bị từ chối theo mặc định thay vì được chấp nhận.
Bảo mật và tuân thủ
Phần tiêu đề “Bảo mật và tuân thủ”- Đóng an toàn. Khi một lựa chọn mật mã không được phép, bộ bảo vệ nêu ra một vi phạm có kiểu xác định và dừng thao tác. Chính sách không bao giờ tự nới lỏng và không bao giờ thay thế bằng một thuật toán yếu hơn.
- Tự kiểm tra từ chối khi không khớp. Một bài kiểm tra đáp án đã biết thất bại đưa mô-đun vào trạng thái lỗi bám theo tiến trình. Toàn bộ tiến trình giữ trạng thái đóng an toàn; một bộ bảo vệ khởi động hoặc chính sách mới không thể khôi phục nó, và một lần chạy lại đạt cũng không gỡ được chốt. Chỉ có việc khởi động lại tiến trình mới xóa được trạng thái đó (ISO/IEC 19790:2025 §7.10.4.2; §7.10.2).
- Độ mạnh khóa. Cấu hình strict thực thi các mức tối thiểu RSA 2048 và đường cong elliptic 256; các mức này đáp ứng hoặc vượt các mức sàn chấp nhận được trong NIST SP 800-131A Rev.2 §3.
- Tính duy nhất của IV. Việc dùng mã hóa có xác thực yêu cầu một IV duy nhất cho mỗi khóa (NIST SP 800-38D §5.2.1).
Trang này được đánh dấu export_control_class: legal-review-required vì liên quan đến chính sách mật mã. Mọi nguồn quy phạm đều được diễn giải lại; không có văn bản quy phạm nào được sao chép nguyên văn. Cần có phê duyệt pháp lý trước khi đặt cờ publish.
NextPDF Enterprise không phải là một mô-đun mật mã được FIPS xác thực và không đưa ra bất kỳ tuyên bố chứng nhận FIPS nào. Nó chỉ vận hành ở chế độ tương thích FIPS khi bạn cấu hình nó với một nhà cung cấp mật mã đã được FIPS xác thực — ví dụ một nhà cung cấp OpenSSL đã được FIPS xác thực — hoặc một mô-đun bảo mật phần cứng (HSM) đã được FIPS xác thực. Chính sách chế độ FIPS hỗ trợ việc tuân thủ; nó không phải là một chứng nhận và không phải là ý kiến pháp lý. Hãy tham vấn cố vấn tuân thủ và pháp lý của riêng bạn về các nghĩa vụ pháp định của bạn.
Xử lý thất bại
Phần tiêu đề “Xử lý thất bại”- Tự kiểm tra thất bại lúc khởi động. Bộ bảo vệ khởi động nêu ra một ngoại lệ trạng thái lỗi mô-đun. Dừng tiến trình; không tiếp tục với một đường xử lý mật mã chưa được kiểm chứng.
- Vi phạm chính sách. Bộ bảo vệ nêu ra một vi phạm có kiểu xác định, gọi tên chính sách và mục vi phạm. Từ chối thao tác; không hạ cấp.
- Loại khóa không xác định. Chính sách từ chối nó theo mặc định. Chỉ ánh xạ loại khóa một cách rõ ràng nếu nó thực sự được chấp thuận.
- Chạy lại tự kiểm tra. Có thể chạy lại theo yêu cầu cho một đầu cuối quản trị hoặc một lệnh, nhằm đáp ứng nghĩa vụ tự kiểm tra định kỳ theo yêu cầu. Đây không phải là cơ chế khôi phục: một lần chạy lại thất bại cũng chốt tiến trình, và một lần chạy lại đạt không gỡ được một chốt đang tồn tại. Việc khôi phục một mô-đun đang ở trạng thái lỗi đòi hỏi phải khởi động lại tiến trình.
Bối cảnh thương mại
Phần tiêu đề “Bối cảnh thương mại”NextPDF Core cung cấp bộ ký phần mềm và mã hóa nhưng không có hồ sơ chế độ FIPS. NextPDF Enterprise bổ sung hồ sơ chính sách mật mã chế độ FIPS, bộ bảo vệ khi chạy và bộ bảo vệ tự kiểm tra lúc khởi động, để bạn có thể giới hạn các lựa chọn mật mã trong một tập hợp được chấp thuận và đóng an toàn khi tự kiểm tra không khớp. Kết hợp nó với việc ký bằng HSM để chạy primitive bên trong một thiết bị đã được FIPS xác thực. So sánh các phiên bản.
Xem thêm
Phần tiêu đề “Xem thêm”- Bảo mật — NextPDF Enterprise — các kiểm soát bảo mật Enterprise tổng hợp.
- Ký bằng HSM — NextPDF Enterprise — lưu giữ khóa phần cứng theo Public-Key Cryptography Standards #11 (PKCS#11).
- Chữ ký — NextPDF Enterprise — bộ tạo dài hạn PDF Advanced Electronic Signatures (PAdES) B-LT và B-LTA.
- Bảo mật — NextPDF Core — bề mặt mã hóa và chữ ký cốt lõi.
- Chế độ FIPS · KAT · mã hóa có xác thực (AEAD) — các thuật ngữ trong bảng chú giải.