Bỏ qua để đến nội dung
getnextpdf.com

Enterprise phiên bản

Security — Tài liệu tham chiếu chuyên sâu (HSM, PKCS#11, chế độ FIPS)

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.

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.

Terminal window
composer require nextpdf/enterprise:^3

Cá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\CryptoPolicyInterfaceNextPDF\Contracts\PreOperationalSelfTestInterface của Core.

Ký hiệuTham sốHành vi mặc địnhTrả vềNém hoặc thất bại vớiLưu ý
Pkcs11Signer::__construct()string $libraryPath, int $slotId, string $pin, string $certLabel, ?string $keyLabel = null, array $chainDer = [], bool $enablePostQuantum = false, ?FipsSignatureEnforcer $fipsEnforcer = nullMở 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óaHsmOperationException khi ext-pkcs11 vắng mặt hoặc truy cập token thất bạiPIN 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ôngboolKhô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-Valuestring 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ốiTập thuật toán đóng; xem Hợp đồng hành vi
Pkcs11Signer::signPqs()string $data, Pkcs11PqsAlgorithm $algorithm, string $context = '', bool $randomized = trueBị từ chối trừ khi $enablePostQuantum được đặt; điều phối cơ chế post-quantum PKCS#11 tạm thờistring 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 accessorKhông cóKết quả khởi tạo chỉ-đọcbool / 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 = nullXá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ờistring 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 accessorKhông cóKết quả khởi tạo chỉ-đọcstring / array<string> / OpenSslCliBackendKhông cógetCertificateDer, getCertificateChainDer, getPublicKeyAlgorithm, getCertificatePem, getResolvedBackend, getOpensslVersion
OpenSslCliBackendEnum: Provider, Engine, AutoKhông cóLựa chọn backend cho trình ký CLI
Pkcs11PqsAlgorithmEnum của các tập tham số ML-DSA và SLH-DSAKhô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ìnhPqsCapabilityStatusKhô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
HsmSignerProviderAdapterHsmSignerInterface $hsm, string $providerId, SignatureAlgorithm $algorithm = SignatureAlgorithm::Pkcs1v15Phơi bày một HSM cụ thể dưới dạng một SignerProviderInterface thống nhấtTheo SPIKeyManagementException (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
HsmOperationExceptionThất bại có kiểu cho mọi đường ký HSMMở rộng NextPdfException của Core
FipsCryptoPolicy::strict() / ::standard()?FipsSelfTest $selfTest = nullCác thiết lập sẵn factory; strict là hồ sơ FIPS 140-3, standard bổ sung AES-128-CBCFipsCryptoPolicyKhông cóDanh sách cho phép bất biến; xem hành vi ở chế độ FIPS
FipsCryptoPolicy bề mặt predicatecác đầu vào string / intKiểm tra thành viên danh sách cho phépbool / stringKhô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 độngvoidFipsModuleErrorStateExceptionĐượ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 = nullBao một chính sách bằng các ranh giới kiểu assertKhô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 assertcác đầu vào string / intDanh 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àovoidFipsViolationException; 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)FipsSelfTestReportKhô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 OPERATIONALvoidFipsModuleErrorStateExceptionDí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 đệmFipsSelfTestStatusKhô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ạchFipsSelfTestReportKhô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 / FipsSelfTestStatusCác value object báo cáo và enum trạng tháiFipsSelfTestReport::assertOperational() ném FipsModuleErrorStateExceptionresults luôn liệt kê mọi kết quả để làm bằng chứng audit
FipsSignatureEnforcer::assertSignatureGenerationAllowed()string $algorithm, string $certificatePemPhân giải OID chữ ký và độ mạnh khóa, rồi ủy quyền cho bộ bảo vệvoidFipsViolationException (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
FipsAuditLoggerCryptoPolicyInterface $policy, LoggerInterface $loggerPhát các bản ghi ALLOW (INFO) / DENY (WARNING) theo từng quyết địnhbool mỗi lần gọi logKhông cólogHashOperation, logSignatureOperation, logEncryptionOperation, logKeyStrengthCheck
FipsTransitioningAlgorithmscác đầu vào string / intDanh mục từ chối NIST SP 800-131A tĩnhbool / arrayKhô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 = nullKế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ênFipsModeGuardboot(): FipsModuleErrorStateException khi một kiểm tra thất bạiMặc định dùng chính sách strict
FipsBootstrap::signatureEnforcer()?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = nullKhởi động module và trả về cổng lúc-sinh cho các trình kýFipsSignatureEnforcerFipsModuleErrorStateExceptionTruyền kết quả vào tham số $fipsEnforcer của một trình ký
FipsBootstrap::selfTestReport()?FipsSelfTest $selfTest = nullChạ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 / FipsModuleErrorStateExceptionCác thất bại FIPS có kiểuLần lượt phơi bày policyName / violatingItem / reasonfailedResults
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(): bool
public function sign(string $data, string $algorithm = 'sha256WithRSAEncryption'): string
public function signPqs(string $data, Pkcs11PqsAlgorithm $algorithm, string $context = '', bool $randomized = true): string
public 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'): string
public static function strict(?FipsSelfTest $selfTest = null): self
public static function standard(?FipsSelfTest $selfTest = null): self
public function assertPreOperational(): void
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 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
  • Phân giải hợp đồng. Cả hai trình ký đều triển khai HsmSignerInterface của Core; chính sách triển khai CryptoPolicyInterface củ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; OpenSslCliSigner truyề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 (Pkcs11Signer cũng chấp nhận ecdsa-raw). Bất kỳ định danh nào khác đều phát sinh InvalidArgumentException; 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ạng ECDSA-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. FipsSignatureEnforcer quả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 Pkcs11Signer mà không có ext-pkcs11 phát sinh HsmOperationException ngay 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 HsmOperationException nêu tên lớp đối tượng bị thiếu.
  • OpenSslCliSigner từ chối một $keyUri chứa pin-value lú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 FipsModuleErrorStateException mang 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 sinh InvalidArgumentException (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.

Đượ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.

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ùngPKCS#11 v3.1§5 (sign)
Độ dài salt PSS bằng độ dài digestPKCS#11 v3.1§5 (PSS sLen)
Sinh chữ ký ECDSA; cặp đường cong và hàm bămFIPS 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ờiISO/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-GCMNIST 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 byteFIPS 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.

  • 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ố $fipsEnforcer của các trình ký. Các triển khai không dùng FIPS truyền null và hành vi không đổi.
  • Lệnh con fips:self-test của bin/nextpdf-enterprise chạ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()@internal và 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.

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.