Enterprise phiên bản
Security — Tài liệu tham chiếu chuyên sâu (HSM, PKCS#11, chế độ FIPS)
Tổng quan nhanh
Phần tiêu đề “Tổng quan nhanh”Trang này là tài liệu tham chiếu chuyên sâu kết hợp cho bề mặt bảo mật NextPDF Enterprise. Nó bao quát việc ký bằng token phần cứng qua PKCS#11, việc ký qua tiến trình con thông qua giao diện dòng lệnh (CLI) của OpenSSL, các thiết lập sẵn của chính sách mã hóa FIPS, bộ bảo vệ FIPS lúc chạy, và bộ bảo vệ tự kiểm tra lúc khởi động. Có hai tài liệu đồng hành tập trung: HSM — tài liệu tham chiếu chuyên sâu cho chi tiết trình ký và FIPS 140 — tài liệu tham chiếu chuyên sâu cho chi tiết module FIPS. Đường ký post-quantum là bản xem trước, không có tuyên bố tuân thủ. NextPDF không nắm giữ chứng nhận nào và cũng không cấp chứng nhận nào; hỗ trợ không đồng nghĩa với tuân thủ, và tuân thủ không đồng nghĩa với chứng nhận.
Tính khả dụng & cấp phép
Phần tiêu đề “Tính khả dụng & cấp phép”Khả năng này được phát hành trong NextPDF Enterprise (nextpdf/enterprise) và kích hoạt bằng một gói giấy phép bậc Enterprise. Một triển khai không có quyền đó sẽ không nạp các class của khả năng này. So sánh các phiên bản và lấy giấy phép.
Bề mặt API công khai
Phần tiêu đề “Bề mặt API công khai”composer require nextpdf/enterprise:^3Các kiểu ký nằm trong NextPDF\Enterprise\Security\Signature\Hsm; các kiểu FIPS nằm trong NextPDF\Enterprise\Security\Fips; gốc kết hợp (composition root) nằm trong NextPDF\Enterprise\Bootstrap. Cả hai trình ký đều triển khai hợp đồng NextPDF\Contracts\HsmSignerInterface của Core. Chính sách triển khai các hợp đồng NextPDF\Contracts\CryptoPolicyInterface và NextPDF\Contracts\PreOperationalSelfTestInterface của Core.
| Ký hiệu | Tham số | Hành vi mặc định | Trả về | Ném hoặc thất bại với | Lưu ý |
|---|---|---|---|---|---|
Pkcs11Signer::__construct() | string $libraryPath, int $slotId, string $pin, string $certLabel, ?string $keyLabel = null, array $chainDer = [], bool $enablePostQuantum = false, ?FipsSignatureEnforcer $fipsEnforcer = null | Mở thư viện của nhà cung cấp, đăng nhập vào slot, nạp metadata chứng chỉ và thuật toán khóa | — | HsmOperationException khi ext-pkcs11 vắng mặt hoặc truy cập token thất bại | PIN và các nhãn là #[SensitiveParameter]; mỗi tiến trình lưu đệm một handle module cho mỗi đường dẫn thư viện |
Pkcs11Signer::isAvailable() | Không có | Báo cáo liệu ext-pkcs11 có được nạp hay không | bool | Không có | Tĩnh; kiểm tra trước khi khởi tạo |
Pkcs11Signer::sign() | string $data, string $algorithm = 'sha256WithRSAEncryption' | Ký trên token; đầu ra ECDSA thô được chuyển sang DER ECDSA-Sig-Value | string các byte chữ ký thô | HsmOperationException (không tìm thấy khóa, token thất bại); InvalidArgumentException (thuật toán không được ánh xạ); FipsViolationException / FipsModuleErrorStateException trước khi ký khi một enforcer được nối | Tập thuật toán đóng; xem Hợp đồng hành vi |
Pkcs11Signer::signPqs() | string $data, Pkcs11PqsAlgorithm $algorithm, string $context = '', bool $randomized = true | Bị từ chối trừ khi $enablePostQuantum được đặt; điều phối cơ chế post-quantum PKCS#11 tạm thời | string các byte chữ ký thô | HsmOperationException (bị tắt, token thất bại, độ dài chữ ký không khớp); InvalidArgumentException (context vượt quá 255 byte) | Bản xem trước; không có tuyên bố tuân thủ |
Pkcs11Signer bề mặt accessor | Không có | Kết quả khởi tạo chỉ-đọc | bool / string / array<string> | Không có | 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 | Xác minh proc_open, thăm dò binary, phân giải backend, nạp các chứng chỉ | — | HsmOperationException (proc_open bị tắt, thiếu tệp module/config/chứng chỉ, không có backend); InvalidArgumentException (pin-value bên trong $keyUri) | Auto ưu tiên provider OpenSSL 3.x, rồi đến engine |
OpenSslCliSigner::sign() | string $data, string $algorithm = 'sha256WithRSAEncryption' | Ký trong một tiến trình con openssl; theo mặc định PIN đi qua một tệp pin-source 0600 tạm thời | string các byte chữ ký thô | HsmOperationException (hết thời gian chờ, PIN bị từ chối, không tìm thấy khóa, đầu ra rỗng); InvalidArgumentException (thuật toán không được ánh xạ); các ngoại lệ cổng FIPS trước khi ký | Tiến trình con bị hủy sau $timeoutSeconds; stderr được che (redacted) |
OpenSslCliSigner bề mặt accessor | Không có | Kết quả khởi tạo chỉ-đọc | string / array<string> / OpenSslCliBackend | Không có | getCertificateDer, getCertificateChainDer, getPublicKeyAlgorithm, getCertificatePem, getResolvedBackend, getOpensslVersion |
OpenSslCliBackend | — | Enum: Provider, Engine, Auto | — | Không có | Lựa chọn backend cho trình ký CLI |
Pkcs11PqsAlgorithm | — | Enum của các tập tham số ML-DSA và SLH-DSA | — | Không có | Các helper: isMlDsa, isSlhDsa, mechanismId, parameterSetId, signatureLength, nistCategory |
PqsCapabilityStatus::current() | Không có | Xây dựng lập trường post-quantum trung thực cho tiến trình | PqsCapabilityStatus | Không có | Mọi boolean tuyên bố tuân thủ đều được đặt cứng là false; không cờ nào có thể bật một cái lên |
HsmSignerProviderAdapter | HsmSignerInterface $hsm, string $providerId, SignatureAlgorithm $algorithm = SignatureAlgorithm::Pkcs1v15 | Phơi bày một HSM cụ thể dưới dạng một SignerProviderInterface thống nhất | Theo SPI | KeyManagementException (phiên bản khóa khác null); SignatureFailedException (driver thất bại, chữ ký rỗng) | Provider id: pkcs11-{module-id}, openssl-cli |
HsmOperationException | — | Thất bại có kiểu cho mọi đường ký HSM | — | — | Mở rộng NextPdfException của Core |
FipsCryptoPolicy::strict() / ::standard() | ?FipsSelfTest $selfTest = null | Các thiết lập sẵn factory; strict là hồ sơ FIPS 140-3, standard bổ sung AES-128-CBC | FipsCryptoPolicy | Không có | Danh sách cho phép bất biến; xem hành vi ở chế độ FIPS |
FipsCryptoPolicy bề mặt predicate | các đầu vào string / int | Kiểm tra thành viên danh sách cho phép | bool / string | Không có | isHashAlgorithmAllowed, isSignatureAlgorithmAllowed, isEncryptionAlgorithmAllowed, isKeyStrengthAllowed, getPreferredHashAlgorithm, getName |
FipsCryptoPolicy::assertPreOperational() | Không có | Chạy (hoặc phát lại) tự kiểm tra lúc khởi động | void | FipsModuleErrorStateException | Được điều khiển bởi seam thực thi của Core ở thao tác mã hóa đầu tiên |
FipsModeGuard::__construct() | CryptoPolicyInterface $policy, ?FipsBootGuard $bootGuard = null, ?FipsAuditLogger $auditLogger = null | Bao một chính sách bằng các ranh giới kiểu assert | — | Không có | Không có boot guard thì cổng tự kiểm tra vắng mặt (chỉ-chính-sách) |
FipsModeGuard bề mặt assert | các đầu vào string / int | Danh mục từ chối trước, rồi danh sách cho phép; ghi audit trước bất kỳ lần ném nào | void | FipsViolationException; FipsModuleErrorStateException (boot guard được nối) | assertHashAllowed, assertSignatureAlgorithmAllowed, assertEncryptionAllowed, assertKeyStrengthAllowed, cùng getPolicy |
FipsBootGuard::report() / ::rerun() | Không có | Chạy bộ tự kiểm tra (được lưu đệm / bị buộc) | FipsSelfTestReport | Không có | Một báo cáo ERROR khóa chốt tiến trình; một lần chạy lại thành công không bao giờ xóa chốt |
FipsBootGuard::assertOperational() | Không có | Xác nhận module đang ở trạng thái OPERATIONAL | void | FipsModuleErrorStateException | Dính: một ERROR đã khóa chốt tiến trình sẽ từ chối ngay cả một instance sạch |
FipsBootGuard::status() | Không có | Báo cáo trạng thái được lưu đệm | FipsSelfTestStatus | Không có | PRE_OPERATIONAL, OPERATIONAL, hoặc ERROR |
FipsSelfTest::run() | Không có | Thực thi toàn bộ bộ known-answer-test; không bao giờ đoản mạch | FipsSelfTestReport | Không có | Constructor chấp nhận các provider hàm băm và random-bytes có thể tiêm vào cho các kiểm thử tất định |
FipsSelfTestReport / FipsSelfTestResult / FipsSelfTestStatus | — | Các value object báo cáo và enum trạng thái | — | FipsSelfTestReport::assertOperational() ném FipsModuleErrorStateException | results luôn liệt kê mọi kết quả để làm bằng chứng audit |
FipsSignatureEnforcer::assertSignatureGenerationAllowed() | string $algorithm, string $certificatePem | Phân giải OID chữ ký và độ mạnh khóa, rồi ủy quyền cho bộ bảo vệ | void | FipsViolationException (không được phép hoặc không phân loại được, fail-closed) | Điểm nghẽn mà cả hai trình ký gọi ở đầu sign() trong chế độ FIPS |
FipsAuditLogger | CryptoPolicyInterface $policy, LoggerInterface $logger | Phát các bản ghi ALLOW (INFO) / DENY (WARNING) theo từng quyết định | bool mỗi lần gọi log | Không có | logHashOperation, logSignatureOperation, logEncryptionOperation, logKeyStrengthCheck |
FipsTransitioningAlgorithms | các đầu vào string / int | Danh mục từ chối NIST SP 800-131A tĩnh | bool / array | Không có | Lớp từ chối tường minh dưới mọi ranh giới bảo vệ |
FipsBootstrap::boot() / ::lazy() | ?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null, ?LoggerInterface $auditLogger = null | Kết hợp boot guard, chính sách, và mode guard; boot() chạy tự kiểm tra ngay lập tức, lazy() hoãn nó đến ranh giới đầu tiên | FipsModeGuard | boot(): FipsModuleErrorStateException khi một kiểm tra thất bại | Mặc định dùng chính sách strict |
FipsBootstrap::signatureEnforcer() | ?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null | Khởi động module và trả về cổng lúc-sinh cho các trình ký | FipsSignatureEnforcer | FipsModuleErrorStateException | Truyền kết quả vào tham số $fipsEnforcer của một trình ký |
FipsBootstrap::selfTestReport() | ?FipsSelfTest $selfTest = null | Chạy bộ kiểm tra theo yêu cầu và tóm tắt nó | array{status, operational, failed} | Không có | Dành cho các endpoint sức khỏe và lệnh con CLI |
FipsViolationException / FipsModuleErrorStateException | — | Các thất bại FIPS có kiểu | — | — | Lần lượt phơi bày policyName / violatingItem / reason và 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): arrayHợp đồng hành vi
Phần tiêu đề “Hợp đồng hành vi”- Phân giải hợp đồng. Cả hai trình ký đều triển khai
HsmSignerInterfacecủa Core; chính sách triển khaiCryptoPolicyInterfacecủa Core. Mã gọi phụ thuộc vào các hợp đồng, nên việc nâng cấp phiên bản thay đổi cách kết hợp, không phải các điểm gọi. - Giám hộ khóa. Khóa riêng không bao giờ rời khỏi ranh giới token.
Pkcs11Signerủy quyền thao tác cho token;OpenSslCliSignertruyền một tham chiếu khóa dạng URI PKCS#11 cho tiến trình con. NextPDF không lưu trữ, sinh, hay bảo đảm tính bảo mật của khóa ký. Bảo vệ khóa là trách nhiệm giám hộ của người vận hành (NIST SP 800-57 Part 1 Rev.5 §5.5.2). - Phiên và đăng nhập. Thao tác ký của token, phiên, và việc đăng nhập người dùng tuân theo PKCS#11 v3.1 §5. Nhãn chứng chỉ và nhãn khóa riêng có thể khác nhau; constructor chấp nhận một nhãn khóa riêng biệt cho các token như vậy.
- Tập thuật toán đóng. Các trình ký chấp nhận đúng: RSA PKCS#1 v1.5 với SHA-256/384/512, RSASSA-PSS với SHA-256/384/512, và ECDSA với SHA-256/384/512 (
Pkcs11Signercũng chấp nhậnecdsa-raw). Bất kỳ định danh nào khác đều phát sinhInvalidArgumentException; không bao giờ ký bằng một thuật toán thay thế. - Ràng buộc salt PSS. Với mọi biến thể PSS, độ dài salt bằng độ dài digest — 32, 48, hoặc 64 byte — và các tham số hàm băm và sinh mặt nạ khớp với digest đã chọn (PKCS#11 v3.1 §5).
- Chuyển đổi ECDSA. Các cơ chế ECDSA của token trả về một chữ ký thô;
sign()chuyển nó sang dạngECDSA-Sig-Valueđược mã hóa DER để tương tác với PDF và OpenSSL. Việc sinh chữ ký tuân theo FIPS 186-5 §6.3.2. - Nội dung thiết lập sẵn. Thiết lập strict cho phép SHA-256/384/512; các OID chữ ký RSA và ECDSA với các hàm băm đó; RSASSA-PSS; AES-256-CBC và AES-256-GCM; tối thiểu RSA 2048 và EC 256. Thiết lập standard cho phép thêm AES-128-CBC cho khả năng tương tác cũ. Mọi việc dùng AES-GCM yêu cầu một vector khởi tạo duy nhất cho mỗi khóa (NIST SP 800-38D §5).
- Thực thi hai lớp. Mọi ranh giới bảo vệ tham vấn danh mục từ chối NIST SP 800-131A tường minh trước, rồi đến danh sách cho phép của chính sách. Lớp từ chối tạo ra tín hiệu “không được phép” rõ ràng cho audit; danh sách cho phép vẫn là thẩm quyền quyết định.
- Tự kiểm tra lúc khởi động. Bộ kiểm tra bao quát SHA-256/384/512, HMAC-SHA-256, AES-256-CBC, AES-256-GCM, một kiểm tra nhất quán theo cặp (pairwise-consistency) ECDSA P-256, và một kiểm tra sức khỏe bit ngẫu nhiên. Thao tác mã hóa đầu tiên dưới chính sách trên đường Core chạy nó một lần cho mỗi tiến trình, fail-closed. Một lần thất bại đặt module vào trạng thái ERROR; các dịch vụ mã hóa bị từ chối cho đến khi đặt lại. Điều này tuân theo ISO/IEC 19790:2025 §7.10, §7.10.2, §7.10.3, và §7.10.3.p3.
- Trạng thái ERROR dính. Một ERROR đã quan sát được khóa chốt cho toàn bộ tiến trình. Việc tạo một chính sách hay boot guard mới không thể tẩy nó; một lần chạy lại thành công không xóa nó. Chỉ một lần khởi động lại tiến trình — một chu kỳ nguồn thực sự — mới đặt lại trạng thái.
- Chỉ cổng sinh.
FipsSignatureEnforcerquản lý việc tạo ra chữ ký mới. Việc xác thực các chữ ký đã tồn tại là dùng cũ và không bao giờ đi qua enforcer. - Vết audit. Khi một bộ bảo vệ được kết hợp với một audit logger, mọi ranh giới phát một bản ghi ALLOW hoặc DENY trước khi cho phép hay từ chối thao tác. Logger tham vấn cùng chính sách mà bộ bảo vệ thực thi, nên quyết định được ghi lại không thể phân kỳ.
Trường hợp ngoại lệ & chế độ thất bại
Phần tiêu đề “Trường hợp ngoại lệ & chế độ thất bại”- Việc khởi tạo
Pkcs11Signermà không cóext-pkcs11phát sinhHsmOperationExceptionngay lập tức; extension này không được đóng gói kèm các bản phân phối PHP tiêu chuẩn. - Một nhãn chứng chỉ hoặc nhãn khóa riêng không khớp với đối tượng token nào sẽ phát sinh
HsmOperationExceptionnêu tên lớp đối tượng bị thiếu. OpenSslCliSignertừ chối một$keyUrichứapin-valuelúc khởi tạo, fail-closed; thay vào đó PIN đi qua đường pin-source an toàn.- Trong chế độ FIPS, một định danh thuật toán không thể ánh xạ sang một OID chữ ký đã biết sẽ bị từ chối fail-closed; một chứng chỉ có độ mạnh khóa công khai không thể xác định cũng vậy.
- Một kiểu khóa không xác định bị từ chối theo mặc định; chính sách không bao giờ lùi về một thuật toán yếu hơn.
- Một kiểm tra known-answer thất bại phát sinh
FipsModuleErrorStateExceptionmang theo các kết quả thất bại; mọi ranh giới về sau trong tiến trình lặp lại thất bại đó cho đến khi khởi động lại. - Một bộ bảo vệ được tạo mà không có boot guard vẫn thực thi các danh sách cho phép nhưng không cung cấp cổng tự kiểm tra; cách kết hợp FIPS cho sản phẩm cung cấp một cổng như vậy qua bootstrap.
signPqs()từ chối chạy trừ khi tùy chọn bật ở constructor đã được đặt. Một chuỗi context vượt quá 255 byte phát sinhInvalidArgumentException(FIPS 204 §5.4). Một chữ ký trả về có độ dài byte không khớp với tập tham số đã chọn sẽ bị từ chối trước khi đến bước mã hóa.
Hành vi ở chế độ FIPS
Phần tiêu đề “Hành vi ở chế độ FIPS”Được FIPS cho phép ở chế độ strict: SHA-256/384/512; RSA PKCS#1 v1.5 và RSA-PSS với các hàm băm đó; ECDSA với các hàm băm đó; AES-256-CBC và AES-256-GCM; RSA tối thiểu 2048 bit, EC tối thiểu 256 bit. Bị FIPS từ chối ở chế độ strict: các hàm băm yếu hơn hoặc cũ, các OID chữ ký không được chấp thuận, AES-128 (chỉ được phép trong thiết lập standard), và bất kỳ khóa nào dưới độ mạnh tối thiểu. Độ dài khóa RSA tối thiểu và tình trạng chuyển tiếp tuân theo NIST SP 800-131A Rev.2 §3. Cặp đường cong và hàm băm của ECDSA tuân theo FIPS 186-5 §6.1.1. Đường này là fail-closed và không bao giờ thay thế bằng một thuật toán yếu hơn.
NextPDF Enterprise không phải là một module mã hóa được FIPS thẩm định và không đưa ra tuyên bố chứng nhận FIPS nào. NextPDF Enterprise chỉ hoạt động ở chế độ tương thích FIPS khi được cấu hình với một nhà cung cấp mã hóa được FIPS thẩm định — ví dụ một nhà cung cấp OpenSSL được FIPS thẩm định — hoặc một HSM được FIPS thẩm định. 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. Không có tạo phẩm chứng nhận FIPS nào tồn tại trong kho mã này.
Tuân thủ
Phần tiêu đề “Tuân thủ”| Tuyên bố | Tiêu chuẩn | Điều khoản |
|---|---|---|
| Ngữ nghĩa thao tác ký của token, phiên, và đăng nhập người dùng | PKCS#11 v3.1 | §5 (sign) |
| Độ dài salt PSS bằng độ dài digest | PKCS#11 v3.1 | §5 (PSS sLen) |
| Sinh chữ ký ECDSA; cặp đường cong và hàm băm | FIPS 186-5 | §6.3.2; §6.1.1 |
| Độ dài khóa RSA tối thiểu và tình trạng chuyển tiếp sinh chữ ký | NIST SP 800-131A Rev.2 | §3 |
| Hạng mục tự kiểm tra, tài liệu, kích hoạt có điều kiện, tập rời | ISO/IEC 19790:2025 | §7.10, §7.10.2, §7.10.3, §7.10.3.p3 |
| Tính duy nhất của vector khởi tạo AES-GCM | NIST SP 800-38D | §5 |
| Bảo vệ khóa và trách nhiệm giám hộ | NIST SP 800-57 Part 1 Rev.5 | §5.5.2 |
| Chuỗi context ký post-quantum giới hạn 255 byte | FIPS 204 | §5.4 |
Tất cả các điều khoản đều được diễn giải lại; không có văn bản quy phạm nào được tái hiện. Đây là các tuyên bố về khả năng của mã NextPDF, không phải các chứng nhận. Việc một chữ ký được tạo có xác thực được hay không là quyết định của bên xác thực dựa trên cấu hình tin cậy của riêng họ. Chính sách chế độ FIPS là một tính năng hỗ trợ tuân thủ, không phải một ý kiến pháp lý; hãy tham vấn các cố vấn tuân thủ và pháp lý của riêng bạn. Module này liên quan đến chức năng mã hóa; hãy coi nó là nhạy cảm về bảo mật trong quá trình đánh giá của riêng bạn.
Ghi chú phát triển
Phần tiêu đề “Ghi chú phát triển”- Kết hợp chế độ FIPS qua bootstrap:
boot()cho một cổng lúc khởi động,lazy()để hoãn bộ kiểm tra đến ranh giới đầu tiên, và factory enforcer cho tham số$fipsEnforcercủa các trình ký. Các triển khai không dùng FIPS truyềnnullvà hành vi không đổi. - Lệnh con
fips:self-testcủabin/nextpdf-enterprisechạy bộ kiểm tra theo yêu cầu và thoát với mã khác không trong trạng thái ERROR; hãy nối nó vào các tác vụ bảo trì hoặc các endpoint sức khỏe chỉ-dành-cho-admin (tự kiểm tra theo yêu cầu của ISO/IEC 19790:2025). FipsBootGuard::resetProcessErrorLatchForTesting()là@internalvà chỉ dành cho kiểm thử; mã sản phẩm không bao giờ gọi nó, vì nó sẽ vô hiệu hóa trạng thái ERROR dính.- Khởi tạo các trình ký một lần và tái sử dụng chúng; việc khởi tạo đăng nhập và đọc chứng chỉ, và bộ đệm module theo từng thư viện khiến việc khởi tạo lặp lại trên cùng một thư viện là an toàn.
- Cung cấp PIN từ một trình quản lý bí mật. Nó là một
#[SensitiveParameter], không bao giờ được ghi log hay tuần tự hóa; đừng commit nó vào cấu hình. - Người vận hành sở hữu việc cấp phát token, xử lý PIN, cấu hình slot, bảo vệ mạng cho một HSM gắn-mạng, và cấu hình tin cậy. Trang này không phơi bày chi tiết nội bộ về chính sách PIN của token hay thông tin xác thực của nhà cung cấp.
- Đừng bật bản xem trước post-quantum cho chữ ký AdES sản phẩm. Danh mục các bộ mã hóa AdES chưa công nhận các bộ post-quantum, hầu hết trình xem PDF từ chối các chữ ký như vậy, và việc xác thực vòng khứ hồi phần cứng chưa hoàn tất. Chi tiết cơ chế nội bộ nằm trong tài liệu nội bộ của kho mã nguồn và nằm ngoài phạm vi của sổ tay này.
Ranh giới xuất bản
Phần tiêu đề “Ranh giới xuất bản”Trang này chỉ ghi lại hành vi có thể quan sát được từ bên ngoài và bề mặt API công khai được hỗ trợ. Các đường dẫn namespace nội bộ, các class trợ giúp, các bảng cơ chế, các tên tệp runbook, và các tiền tố ticket đều nằm ngoài phạm vi.
Xem thêm
Phần tiêu đề “Xem thêm”- Security — NextPDF Enterprise — trang khả năng cho bề mặt này.
- Ký bằng hardware security module (PKCS#11) — các bước cài đặt, cấu hình, và xác minh.
- Chính sách mã hóa FIPS 140 — trang khả năng FIPS.
- HSM — tài liệu tham chiếu chuyên sâu — tài liệu tham chiếu trình ký tập trung.
- FIPS 140 — tài liệu tham chiếu chuyên sâu — tài liệu tham chiếu module FIPS tập trung.
- Security — NextPDF Pro — bề mặt bảo mật bậc Pro.
- Security — NextPDF Core — nền tảng bảo mật Core.