Kebijakan kriptografi dan swauji FIPS 140-2/3
Sekilas pandang
Bagian berjudul “Sekilas pandang”NextPDF Enterprise membatasi pilihan kriptografi yang dapat digunakan oleh operasi penandatanganan atau enkripsi ke himpunan yang disetujui Federal Information Processing Standards (FIPS), dan menolak pilihan apa pun di luar himpunan tersebut. Penjaga runtime memeriksa setiap hash, pengenal algoritma tanda tangan, algoritma enkripsi, dan kekuatan kunci sebelum operasi berjalan. Rangkaian swauji saat-nyala berjalan satu kali saat proses dimulai. Jika ada uji jawaban-diketahui yang gagal, modul memasuki keadaan galat. Halaman ini menjelaskan perilaku tersebut: apa yang diizinkan kebijakan, apa yang ditolak penjaga, apa yang dicakup swauji, dan posisi sertifikasi secara eksplisit.
NextPDF Enterprise membantu kepatuhan. Ini bukan modul kriptografi tersertifikasi. Lihat Keamanan dan kepatuhan untuk posisi non-sertifikasi yang dinyatakan secara eksplisit.
Front matter mencantumkan prasyarat; bagian Prasyarat mengulanginya.
Edisi dan pelisensian
Bagian berjudul “Edisi dan pelisensian”Profil kebijakan-kripto mode-FIPS, penjaga runtime, dan penjaga swauji saat-nyala disertakan dalam paket nextpdf/enterprise dan memerlukan flag fitur lisensi enterprise. NextPDF Core dan NextPDF Pro tidak menyediakan profil mode-FIPS. Penjaga dan swauji berjalan di dalam proses; pemeriksaan kebijakan dan swauji tidak mengirimkan konten dokumen ke luar host. Bandingkan edisi.
Apa yang dilakukan kapabilitas ini
Bagian berjudul “Apa yang dilakukan kapabilitas ini”Kapabilitas ini memiliki tiga bagian: kebijakan kripto, penjaga runtime, dan swauji saat-nyala.
Kebijakan kripto membatasi pilihan kriptografi pada himpunan yang disetujui, dengan dua prasetel:
- Strict (selaras dengan generasi FIPS 140-3) — hash SHA-256, SHA-384, dan SHA-512; pengenal objek (OID) tanda tangan RSA dan ECDSA dengan hash tersebut; enkripsi AES-256-CBC; serta ukuran kunci minimum RSA 2048 dan kurva eliptik 256.
- Standard (selaras dengan generasi FIPS 140-2) — sama dengan strict, dan juga mengizinkan AES-128-CBC untuk interoperabilitas yang lebih lama.
Untuk pembuatan tanda tangan, NIST SP 800-131A Rev.2 §3 menerima kunci RSA minimal 2048 bit dan order ECDSA minimal 224 bit; batas bawah 2048/256 pada prasetel strict memenuhi atau melampaui minimum tersebut. Kebijakan secara baku menolak jenis kunci yang tidak dikenal — kebijakan tidak diam-diam menerima jenis yang tidak dikenali.
Penjaga runtime membungkus kebijakan dan memaparkan metode bergaya assert untuk hash, OID tanda tangan, algoritma enkripsi, dan kekuatan kunci. Ketika sebuah pilihan tidak diizinkan, penjaga memunculkan pelanggaran bertipe yang menyebutkan kebijakan dan item yang melanggar, lalu menghentikan operasi. Jalur ini gagal-tertutup: kebijakan tidak pernah melonggarkan dirinya dan tidak pernah mengganti pilihan dengan algoritma yang lebih lemah. Untuk tanda tangan RSASSA-PSS, gerbang pembuatan mengikat digest pesan secara eksplisit. Setiap varian PSS berbagi satu OID tanda tangan; hash berada di parameter PSS, bukan di OID. Daftar-izin OID saja tidak dapat membuktikan digest yang efektif, sehingga gerbang menegaskan bahwa digest disetujui FIPS (SHA-256/384/512). Gerbang menolak secara gagal-tertutup setiap token PSS yang digest-nya tidak dikenal atau tidak disetujui, misalnya SHA-1 PSS, sebelum penyalur penanda tangan mana pun dipanggil (FIPS 186-5 §5.4(b)).
Swauji saat-nyala menjalankan rangkaian uji jawaban-diketahui (KAT) satu kali saat proses dimulai. Rangkaian ini mencakup fungsi hash, autentikasi-pesan, enkripsi, enkripsi-terautentikasi, tanda tangan, dan bit-acak yang disetujui. Berdasarkan ISO/IEC 19790:2025 §7.10.4.2, uji jawaban-diketahui gagal ketika keluaran yang dihitung tidak sama dengan jawaban yang diketahui. Pada kegagalan apa pun, modul memasuki keadaan galat dan menolak layanan kriptografi (ISO/IEC 19790:2025 §7.2.4.3). Keadaan galat bersifat lengket-proses: setelah penjaga boot mana pun dalam proses mengamati galat, seluruh proses tetap gagal-tertutup sepanjang masa hidupnya. Membangun penjaga boot atau kebijakan baru tidak dapat menghapusnya. Pengulangan swauji yang lulus di kemudian hari tidak menghapus galat yang terkunci — hanya muat ulang proses (siklus daya yang sesungguhnya) yang dapat melakukannya, sesuai ISO/IEC 19790:2025 §7.10.2. Hasilnya disimpan dalam cache sepanjang masa hidup proses; Anda dapat menjalankan pengulangan sesuai permintaan untuk endpoint admin atau sebuah perintah, tetapi pengulangan itu memenuhi kewajiban swauji berkala, bukan pemulihan galat.
Kebijakan mewajibkan initialization vector (IV) yang unik per kunci untuk penggunaan enkripsi-terautentikasi, sesuai NIST SP 800-38D §5.2.1.
Prasyarat
Bagian berjudul “Prasyarat”- Pasang NextPDF Core dan paket Enterprise, serta pertahankan lisensi Enterprise yang aktif.
- Untuk mengklaim operasi yang kompatibel dengan FIPS, konfigurasikan NextPDF dengan penyedia kriptografi tervalidasi FIPS — misalnya penyedia OpenSSL tervalidasi FIPS — atau hardware security module (HSM) tervalidasi FIPS. NextPDF Enterprise melakukan perakitan struktural, komputasi digest, dan penegakan kebijakan; primitif yang mendasarinya berjalan dalam batas tervalidasi yang Anda sediakan.
- Pilih prasetelnya: strict untuk penegakan yang selaras dengan FIPS 140-3, atau standard jika interoperabilitas AES-128-CBC diperlukan.
Konfigurasi
Bagian berjudul “Konfigurasi”- Prasetel — pilih strict atau standard. Strict hanya mengizinkan AES-256-CBC; standard juga mengizinkan AES-128-CBC.
- Penjaga — bangun penjaga dengan kebijakan yang dipilih. Gunakan penjaga sebagai batas tempat Anda menegaskan setiap pilihan kriptografi.
- Pengaitan swauji — kaitkan penjaga boot pada bootstrap aplikasi sehingga setiap proses pekerja menjalankan siklus swaujinya sendiri. Setiap instans proses menjalankan swauji saat-nyalanya sendiri.
Langkah demi langkah
Bagian berjudul “Langkah demi langkah”- Pada bootstrap aplikasi, jalankan swauji saat-nyala melalui penjaga boot dan tegaskan bahwa modul operasional. Hentikan proses jika tidak.
- Bangun penjaga dengan kebijakan strict atau standard.
- Sebelum setiap operasi kriptografi, tegaskan hash, OID tanda tangan, algoritma enkripsi, dan kekuatan kunci melalui penjaga.
- Tangkap pelanggaran bertipe, catat pesan struktural, dan tolak operasi. Jangan beralih ke pilihan yang lebih lemah.
<?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; } }}Verifikasi
Bagian berjudul “Verifikasi”- Jalankan swauji saat-nyala dan pastikan swauji melaporkan status operasional. Pastikan swauji menguji setiap kelas algoritma yang disetujui — hash, autentikasi-pesan, enkripsi, enkripsi-terautentikasi, tanda tangan, dan bit-acak.
- Tegaskan pilihan yang disetujui, misalnya SHA-256, RSA 2048, dan pastikan pilihan itu lolos. Tegaskan pilihan yang tidak diizinkan, misalnya SHA-1, RSA 1024, dan pastikan pilihan itu memunculkan pelanggaran bertipe.
- Suntikkan hash atau sumber acak yang sengaja dirusak ke dalam swauji dan pastikan modul memasuki keadaan galat serta menolak layanan.
- Pastikan jenis kunci yang tidak dikenal ditolak secara baku, bukan diterima.
Keamanan dan kepatuhan
Bagian berjudul “Keamanan dan kepatuhan”- Gagal-tertutup. Ketika sebuah pilihan kriptografi tidak diizinkan, penjaga memunculkan pelanggaran bertipe dan menghentikan operasi. Kebijakan tidak pernah melonggarkan dirinya dan tidak pernah mengganti pilihan dengan algoritma yang lebih lemah.
- Swauji menolak saat tidak cocok. Kegagalan uji jawaban-diketahui menempatkan modul ke dalam keadaan galat yang lengket-proses. Seluruh proses tetap gagal-tertutup; penjaga boot atau kebijakan baru tidak dapat memulihkannya, dan pengulangan yang lulus tidak melepaskan kunci tersebut. Hanya muat ulang proses yang menghapusnya (ISO/IEC 19790:2025 §7.10.4.2; §7.10.2).
- Kekuatan kunci. Prasetel strict menegakkan minimum RSA 2048 dan kurva eliptik 256, yang memenuhi atau melampaui batas bawah yang dapat diterima dalam NIST SP 800-131A Rev.2 §3.
- Keunikan IV. Penggunaan enkripsi-terautentikasi memerlukan IV yang unik per kunci (NIST SP 800-38D §5.2.1).
Halaman ini ditandai export_control_class: legal-review-required karena berkaitan dengan kebijakan kriptografi. Setiap sumber normatif diparafrasakan; tidak ada teks normatif yang direproduksi. Persetujuan legal diperlukan sebelum flag publish diaktifkan.
NextPDF Enterprise bukan modul kriptografi tervalidasi FIPS dan tidak membuat klaim sertifikasi FIPS apa pun. NextPDF Enterprise beroperasi dalam mode yang kompatibel dengan FIPS hanya ketika Anda mengonfigurasinya dengan penyedia kriptografi tervalidasi FIPS — misalnya penyedia OpenSSL tervalidasi FIPS — atau hardware security module (HSM) tervalidasi FIPS. Kebijakan mode-FIPS membantu kepatuhan; ini bukan sertifikasi dan bukan opini hukum. Konsultasikan kewajiban regulasi Anda dengan penasihat kepatuhan dan hukum Anda sendiri.
Penanganan kegagalan
Bagian berjudul “Penanganan kegagalan”- Kegagalan swauji saat boot. Penjaga boot memunculkan eksepsi keadaan-galat-modul. Hentikan proses; jangan lanjutkan dengan jalur kripto yang belum terverifikasi.
- Pelanggaran kebijakan. Penjaga memunculkan pelanggaran bertipe yang menyebutkan kebijakan dan item yang melanggar. Tolak operasi; jangan menurunkan tingkatnya.
- Jenis kunci tidak dikenal. Kebijakan menolaknya secara baku. Petakan jenis kunci secara eksplisit hanya jika jenis itu benar-benar disetujui.
- Pengulangan swauji. Pengulangan tersedia sesuai permintaan untuk endpoint admin atau sebuah perintah, dan memenuhi kewajiban swauji berkala sesuai permintaan. Ini bukan mekanisme pemulihan: pengulangan yang gagal juga mengunci proses, dan pengulangan yang lulus tidak melepaskan kunci yang sudah ada. Memulihkan modul yang berada dalam keadaan galat memerlukan muat ulang proses.
Konteks komersial
Bagian berjudul “Konteks komersial”NextPDF Core menyertakan penanda tangan perangkat lunak dan enkripsi tanpa profil mode-FIPS. NextPDF Enterprise menambahkan profil kebijakan-kripto mode-FIPS, penjaga runtime, dan penjaga swauji saat-nyala, sehingga Anda dapat membatasi pilihan kriptografi ke himpunan yang disetujui dan gagal-tertutup saat swauji tidak cocok. Pasangkan dengan penandatanganan HSM untuk menjalankan primitif di dalam perangkat tervalidasi FIPS. Bandingkan edisi.
Lihat juga
Bagian berjudul “Lihat juga”- Keamanan — NextPDF Enterprise — kontrol keamanan Enterprise yang terpadu.
- Penandatanganan HSM — NextPDF Enterprise — penyimpanan kunci perangkat keras Public-Key Cryptography Standards #11 (PKCS#11).
- Tanda tangan — NextPDF Enterprise — produser jangka-panjang PDF Advanced Electronic Signatures (PAdES) B-LT dan B-LTA.
- Keamanan — NextPDF Core — antarmuka enkripsi dan tanda tangan inti.
- Mode FIPS · KAT · enkripsi terautentikasi (AEAD) — istilah glosarium.