Enterprise sürüm
FIPS 140 — Derinlemesine başvuru
Bir bakışta
“Bir bakışta” başlıklı bölümBu sayfa, NextPDF Enterprise FIPS 140 modülünün derinlemesine referansıdır. Modül bir politika ve otomatik test yeteneğidir. Kriptografik seçimleri FIPS uyumlu bir izin listesiyle sınırlar, açılışta bilinen-cevap-testi bataryasını çalıştırır ve batarya başarısız olduğunda kriptografik çıktıyı engeller. NextPDF, FIPS 140 doğrulamalı bir kriptografik modül değildir, hiçbir sertifikaya sahip değildir ve hiçbir sertifika sağlamaz. Destek, uygunlukla eşdeğer değildir ve uygunluk da sertifikasyonla eşdeğer değildir. FIPS uyumlu bir dağıtım ayrıca operatör tarafından sağlanan FIPS doğrulamalı bir kriptografik sağlayıcı gerektirir.
Kullanılabilirlik ve lisanslama
“Kullanılabilirlik ve lisanslama” başlıklı bölümBu yetenek NextPDF Enterprise (nextpdf/enterprise) ile gönderilir ve bir Enterprise seviyesi lisans zarfıyla etkinleşir. Bu yetkilendirmeye sahip olmayan bir dağıtım, yeteneğin sınıflarını yüklemez. Sürümleri karşılaştırın ve bir lisans edinin.
Genel API yüzeyi
“Genel API yüzeyi” başlıklı bölümNextPDF\Enterprise\Bootstrap içindeki FipsBootstrap hariç, tüm semboller NextPDF\Enterprise\Security\Fips içinde yer alır.
| Sembol | Parametreler | Varsayılan davranış | Döndürür | Fırlatır veya şununla başarısız olur | Notlar |
|---|---|---|---|---|---|
FipsBootstrap::boot() | ?CryptoPolicyInterface $policy, ?FipsSelfTest $selfTest, ?LoggerInterface $auditLogger (tümü varsayılan null) | Açılış bataryasını başlangıçta bir kez çalıştırır; varsayılan olarak katı politikayı kullanır | FipsModeGuard | Herhangi bir açılış testi başarısızlığında FipsModuleErrorStateException | Kompozisyon kökü; $auditLogger null olduğunda denetim izi kapalıdır |
FipsBootstrap::lazy() | boot() ile aynı | Bataryayı ilk sınır iddiasına erteler | FipsModeGuard | Çağrı anında yok; ilk iddia FipsModuleErrorStateException fırlatabilir | Modül, ilk iddiaya kadar PRE_OPERATIONAL kalır |
FipsBootstrap::signatureEnforcer() | ?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null | Modülü başlatır, ardından korumayı imzalayıcı darboğazları için sarmalar | FipsSignatureEnforcer | Herhangi bir açılış testi başarısızlığında FipsModuleErrorStateException | boot()’a devreder |
FipsBootstrap::selfTestReport() | ?FipsSelfTest $selfTest = null | Bataryayı talep üzerine çalıştırır ve özetler | array{status: FipsSelfTestStatus, operational: bool, failed: list<string>} | Fırlatmaz; başarısızlıklar failed içinde görünür | Yönetici sağlık uç noktaları ve CLI kullanımı için |
FipsCryptoPolicy::strict() | ?FipsSelfTest $selfTest = null | FIPS 140-3 ön ayarı: SHA-256/384/512; onaylı RSA, RSASSA-PSS, ECDSA OID’leri; aes-256-cbc, aes-256-gcm; RSA >= 2048, EC >= 256 | self | Yok | Yapıcı özeldir; ön ayarlar tek giriştir |
FipsCryptoPolicy::standard() | ?FipsSelfTest $selfTest = null | FIPS 140-2 ön ayarı: katı küme artı aes-128-cbc | self | Yok | Yalnızca eski birlikte çalışabilirlik |
FipsCryptoPolicy::assertPreOperational() | Yok | Açılış bataryasını çalıştırır veya mandallanan sonucunu yeniden oynatır | void | Herhangi bir açılış testi başarısız olduğunda FipsModuleErrorStateException | İlk işlemden önce Core uygulama dikişi tarafından yönlendirilir |
FipsCryptoPolicy sorgu yüzeyi | string / int girdileri | İzin listesi üyelik kontrolleri; bilinmeyen anahtar türü reddedilir | bool / string | Yok | isHashAlgorithmAllowed, isSignatureAlgorithmAllowed, isEncryptionAlgorithmAllowed, isKeyStrengthAllowed, getPreferredHashAlgorithm, getName |
FipsModeGuard::__construct() | CryptoPolicyInterface $policy, ?FipsBootGuard $bootGuard = null, ?FipsAuditLogger $auditLogger = null | Bir politikayı iddia tarzı sınırlarla sarmalar | — | Yok | $bootGuard olmadan otomatik test kapısı yoktur; üretim kompozisyonu bunu sağlar |
FipsModeGuard::assertHashAllowed() | string $algorithm | Önce reddetme kataloğu, ardından izin listesi | void | FipsViolationException; bir açılış koruması bağlıyken FipsModuleErrorStateException | Denetim kaydı herhangi bir FipsViolationException’dan önce gelir |
FipsModeGuard::assertSignatureAlgorithmAllowed() | string $oid | Önce reddetme kataloğu, ardından izin listesi | void | Yukarıdaki ile aynı | OID’ler tam olarak eşleştirilir |
FipsModeGuard::assertEncryptionAllowed() | string $algorithm | Önce reddetme kataloğu, ardından izin listesi | void | Yukarıdaki ile aynı | Adlar küçük harfle karşılaştırılır |
FipsModeGuard::assertKeyStrengthAllowed() | string $keyType, int $bitLength | Önce reddetme kataloğu, ardından politika minimumları | void | Yukarıdaki ile aynı | Bilinmeyen anahtar türü reddedilir |
FipsModeGuard::getPolicy() | Yok | Sarmalanan politikayı döndürür | CryptoPolicyInterface | Yok | — |
FipsBootGuard::__construct() | FipsSelfTest $selfTest | Bataryayı tutar; çalıştırmaz | — | Yok | Örnek başına bir açılış döngüsü |
FipsBootGuard::report() | Yok | Bataryayı bir kez çalıştırır, raporu önbelleğe alır, hatada mandallanır | FipsSelfTestReport | Yok | İlk çağrı testleri çalıştırır |
FipsBootGuard::rerun() | Yok | Yeni bir çalıştırmayı zorlar; bir hata çalıştırması işlemi mandallar | FipsSelfTestReport | Yok | Talep üzerine otomatik test; bir hata kurtarma yolu değildir |
FipsBootGuard::assertOperational() | Yok | Modülün operasyonel olduğunu iddia eder; işlem boyunca kalıcıdır | void | FipsModuleErrorStateException | Temiz bir örnek, işlem bir hatayı mandalladıysa yine de fırlatır |
FipsBootGuard::status() | Yok | Önbelleğe alınan durumu bildirir | FipsSelfTestStatus | Yok | Mandallandığında ERROR; hiç çalıştırılmadığında PRE_OPERATIONAL |
FipsSelfTest::__construct() | ?callable $randomBytesProvider = null, ?callable $hashProvider = null | Platform hash() ve random_bytes() kullanır | — | Yok | Deterministik başarısızlık testleri için geçersiz kılmalar mevcuttur |
FipsSelfTest::run() | Yok | Tam bataryayı yürütür; asla kısa devre yapmaz | FipsSelfTestReport | Yok | Başarısızlıklar istisnalarda değil, raporda yer alır |
FipsSelfTestReport | FipsSelfTestStatus $status, array $results, array $failedResults | Bir çalıştırmanın değişmez toplamı | — | Hata durumunda assertOperational(), FipsModuleErrorStateException fırlatır | Ayrıca isOperational(), isError() |
FipsSelfTestResult | string $algorithm, string $kind, bool $passed, string $message = '' | Test başına değişmez sonuç | — | Yok | kind şu değerlerdir: KAT, PWCT veya HEALTH; ayrıca isPassed(), isFailed() |
FipsSelfTestStatus | — | String destekli enum | — | Yok | Durumlar PRE_OPERATIONAL, OPERATIONAL, ERROR |
FipsSignatureEnforcer::__construct() | FipsModeGuard $guard | İmzalama darboğazları için açılış kapılı bir korumayı sarmalar | — | Yok | — |
FipsSignatureEnforcer::assertSignatureGenerationAllowed() | string $algorithm, string $certificatePem | OID’yi ve anahtar gücünü çözer, ardından korumaya devreder | void | FipsViolationException (bilinmeyen algoritma, onaysız PSS özeti, kanıtlanamayan anahtar veya politika reddi); koruma aracılığıyla FipsModuleErrorStateException | Yalnızca üretim yolu; doğrulama buraya asla yönlenmez |
FipsAuditLogger::__construct() | CryptoPolicyInterface $policy, LoggerInterface $logger | Bir PSR-3 günlükleyicisini ve korumanın uyguladığı aynı politikayı sarmalar | — | Yok | Kaydedilen kararlar uygulananlardan sapamaz |
FipsAuditLogger::logHashOperation() / logSignatureOperation() / logEncryptionOperation() / logKeyStrengthCheck() | Karar başına string / int girdileri | ALLOW’u INFO’da, DENY’yi WARNING’de günlükler | bool (izin verildiğinde true) | Yok | Yapılandırılmış bağlam: politika adı, öğe, karar |
FipsTransitioningAlgorithms | string / int girdileri | Statik SP 800-131A Rev.2 reddetme kataloğu | bool / list<string> | Yok | isHashDisallowed, isSignatureOidDisallowed, isEncryptionDisallowed, isKeyStrengthDisallowed, ayrıca disallowedHashes, disallowedSignatureOids, disallowedEncryption |
FipsViolationException | string $policyName, string $violatingItem, string $reason | Genel salt okunur alanlara sahip türlenmiş politika ihlali | — | — | NextPDF\Exception\NextPdfException’ın alt türü |
FipsModuleErrorStateException | array $failedResults, ?string $message = null | Başarısız test sonuçlarını taşıyan hata durumu reddi | — | — | NextPDF\Exception\NextPdfException’ın alt türü |
public 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): arraypublic static function strict(?FipsSelfTest $selfTest = null): selfpublic static function standard(?FipsSelfTest $selfTest = null): selfpublic function assertPreOperational(): voidpublic function isHashAlgorithmAllowed(string $algorithm): boolpublic function isSignatureAlgorithmAllowed(string $oid): boolpublic function isEncryptionAlgorithmAllowed(string $algorithm): boolpublic function isKeyStrengthAllowed(string $keyType, int $bitLength): boolpublic function getPreferredHashAlgorithm(): stringpublic function getName(): stringpublic 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 function __construct(private readonly FipsSelfTest $selfTest)public function report(): FipsSelfTestReportpublic function rerun(): FipsSelfTestReportpublic function assertOperational(): voidpublic function status(): FipsSelfTestStatuspublic function __construct(?callable $randomBytesProvider = null, ?callable $hashProvider = null)public function run(): FipsSelfTestReportpublic function __construct(private readonly FipsModeGuard $guard)public function assertSignatureGenerationAllowed(string $algorithm, string $certificatePem): voidpublic function __construct(private CryptoPolicyInterface $policy, private LoggerInterface $logger)public function logHashOperation(string $algorithm): boolpublic function logSignatureOperation(string $oid): boolpublic function logEncryptionOperation(string $algorithm): boolpublic function logKeyStrengthCheck(string $keyType, int $bitLength): boolpublic static function isHashDisallowed(string $algorithm): boolpublic static function isSignatureOidDisallowed(string $oid): boolpublic static function isEncryptionDisallowed(string $algorithm): boolpublic static function isKeyStrengthDisallowed(string $keyType, int $bitLength): boolpublic static function disallowedHashes(): arraypublic static function disallowedSignatureOids(): arraypublic static function disallowedEncryption(): arraypublic function __construct(public FipsSelfTestStatus $status, public array $results, public array $failedResults)public function isOperational(): boolpublic function isError(): boolpublic function assertOperational(): void
// FipsSelfTestResultpublic function __construct(public string $algorithm, public string $kind, public bool $passed, public string $message = '')public function isPassed(): boolpublic function isFailed(): bool
// FipsSelfTestStatusenum FipsSelfTestStatus: string{ case PRE_OPERATIONAL = 'pre_operational'; case OPERATIONAL = 'operational'; case ERROR = 'error';}Davranış sözleşmesi
“Davranış sözleşmesi” başlıklı bölüm- Politika izin listesi, yetkili karardır.
FipsTransitioningAlgorithms, denetim açısından net reddetme mesajları için bunun üstüne açık bir SP 800-131A Rev.2 reddetme katmanı ekler. Reddetme katmanı izin listesini asla genişletmez veya geçersiz kılmaz. FipsCryptoPolicy::strict()şunlara izin verir: SHA-256, SHA-384 ve SHA-512; RSA PKCS#1 v1.5,RSASSA-PSSve bu hash’lere bağlı ECDSA imza OID’leri;aes-256-cbcveaes-256-gcm; ve RSA 2048, EC 256, Ed25519 256 anahtar alt sınırları.standard()ek olarakaes-128-cbc’ye izin verir.- Açılış bataryası şunları kapsar: SHA-256/384/512 özet KAT’ları, bir HMAC-SHA-256 KAT’ı, bir AES-256-CBC şifreleme-ve-şifre-çözme KAT’ı, bir AES-256-GCM etiket KAT’ı, bir ECDSA P-256 çift-yönlü tutarlılık testi ve bir DRBG sağlık kontrolü.
FipsSelfTest::run()her zaman her testi yürütür ve asla kısa devre yapmaz, böylece rapor denetim kanıtı için eksiksizdir. - DRBG satırı, bilinen-cevap testi değil, sürekli bir sağlık testidir (çekim uzunluğu artı birbirinden farklı ardışık çekimler). DRBG bilinen-cevap yükümlülüğü, operatörün sağladığı temel FIPS doğrulamalı sağlayıcıya devredilir.
- Hata durumu işlem boyunca kalıcıdır. Herhangi bir
FipsBootGuardtarafından gözlemlenen ilkERRORraporu tüm işlemi mandallar. Yeni bir koruma veya politika örneği hatayı temizleyemez ve daha sonra başarılı bir yeniden çalıştırma da onu temizlemez. Yalnızca bir işlem yeniden başlatması (gerçek bir güç döngüsü) durumu sıfırlar. FipsCryptoPolicy,NextPDF\Contracts\CryptoPolicyInterfaceveNextPDF\Contracts\PreOperationalSelfTestInterfacearabirimlerini uygular. Core kripto politikası olarak yapılandırıldığında, Core uygulama dikişi, ilk imza veya şifreli metin üretilmeden önceassertPreOperational()’ı yönlendirir.FipsSignatureEnforceryalnızca üretim yolunu kapılar. Zaten üretilmiş imzaların doğrulanması, SP 800-131A Rev.2 kapsamında eski bir kullanımdır ve asla uygulayıcı üzerinden yönlenmez.- Bir denetim günlükleyicisi bağlıyken, her iddia sınırı, herhangi bir politika ihlali fırlatılmadan önce bir ALLOW (INFO) veya DENY (WARNING) kaydı yayar. Bu nedenle her
FipsViolationExceptionreddi izde kanıtlanır. Açılış koruması kapısı önce çalışır, bu yüzden bir hata durumu reddi denetim kaydından önce oluşturulur.FipsAuditLogger, korumanın uyguladığı aynı politikayı danışır, bu yüzden kaydedilen kararlar uygulananlardan sapamaz.
Sınır durumları ve başarısızlık modları
“Sınır durumları ve başarısızlık modları” başlıklı bölüm- Bilinmeyen bir anahtar türü her iki katman tarafından da reddedilir: politika
falsedöndürür ve katalog bunu reddedilmiş olarak ele alır. - Uygulayıcının bir imza OID’sine eşleyemediği bir imzalama algoritması tanımlayıcısı,
FipsViolationExceptionile fail-closed olarak reddedilir. - Her
RSASSA-PSSçeşidi1.2.840.113549.1.1.10OID’sini paylaşır, bu yüzden OID tek başına özeti kanıtlayamaz. Uygulayıcı, etkin özeti açıkça bağlar ve özeti SHA-256/384/512 olmayan herhangi bir PSS belirtecini reddeder. - Ayrıştırılamayan veya genel anahtar bit uzunluğu kullanılamayan bir sertifika,
key:unprovableolarak reddedilir. - OpenSSL asimetrik ilkelleri olmayan bir çalışma zamanında, ECDSA çift-yönlü tutarlılık testi bir atlama değil, bir başarısızlık kaydeder ve modül
ERRORdurumuna girer. - Aynı olan iki ardışık 32 baytlık rastgele çekim, DRBG sağlık kontrolünü başarısız kılar (takılı-çıktı algılaması) ve
ERROR’ı zorlar. - Açılış koruması olmadan oluşturulan bir
FipsModeGuardyalnızca politika kontrolleri gerçekleştirir ve otomatik test kapısı yoktur. Üretim kompozisyonu, kapıyı her zaman bağlayanFipsBootstrapüzerinden geçer. - Hash ve şifre adları küçük harfle karşılaştırılır; imza OID’leri hiçbir normalleştirme olmadan tam olarak eşleştirilir.
FipsBootstrap::lazy()’den sonra, modül ilk iddia sınırı bataryayı çalıştırana kadarPRE_OPERATIONALkalır.PRE_OPERATIONAL, iddia anında operasyonel değil olarak ele alınır.
FIPS modu davranışı
“FIPS modu davranışı” başlıklı bölümBu modül, FIPS modu yüzeyinin kendisidir. Modül hata durumundayken ve ön operasyonel otomatik testler çalışırken, kriptografik çıktı engellenir: her iddia sınırı, herhangi bir imza veya şifreli metin üretilmeden önce FipsModuleErrorStateException fırlatır (ISO/IEC 19790:2025 §7.3.3 b), AS03.07). FipsBootGuard::status() ve FipsBootstrap::selfTestReport(), bir operatörün modülün hata durumuna girdiğini belirleyebilmesi için durumu açığa çıkarır (ISO/IEC 19790:2025 §7.10.3). Bu davranışlar, NextPDF kodu hakkında yetenek iddialarıdır, bir doğrulama iddiası değil: FIPS 140’ın doğruladığı modül sınırı, NextPDF değil, operatörün sağladığı kriptografik sağlayıcıdır.
Uygunluk
“Uygunluk” başlıklı bölüm| İddia | Standart | Madde |
|---|---|---|
| FIPS 140-3, ISO/IEC 19790 ve ISO/IEC 24759’a dayanır; bu nedenle bu sayfa ISO/IEC 19790 maddelerini alıntılar. | FIPS 140-3 | Introduction (fips_140_3#x26.x2) |
| Çıktı, hata durumunda ve ön operasyonel otomatik testler sırasında engellenir. | ISO/IEC 19790:2025 | §7.3.3 b) [AS03.07] |
| Bir bilinen-cevap testi, hesaplanan bir sonucu bilinen beklenen bir çıktıyla karşılaştırır; batarya bu şekli uygular. | ISO/IEC 19790:2025 | §7.10.4 |
| Operatör, hata durumunu bir durum çıktısı aracılığıyla belirleyebilir. | ISO/IEC 19790:2025 | §7.10.3 [AS10.10] |
Operatörler, periyodik test için otomatik testleri talep üzerine başlatabilir; rerun() ve selfTestReport() bunu sağlar. | ISO/IEC 19790:2025 | §7.10.5 [AS10.54] |
| SHA-1, yeni dijital imza üretimi için reddedilir; reddetme kataloğu onu reddeder. | NIST SP 800-131A Rev.2 | §9 |
| 112 bit güç altındaki imza üretimi (RSA < 2048, ECDSA order < 224) reddedilir; anahtar alt sınırları bunu uygular. | NIST SP 800-131A Rev.2 | §3 Table 2 |
| Zaten üretilmiş SHA-1 imzalarının doğrulanması eski bir kullanımdır; üretim kapısından yönlenmez. | NIST SP 800-131A Rev.2 | Change summary (9.x4.p12) |
Tüm maddeler yeniden ifade edilmiştir; hiçbir normatif metin çoğaltılmamıştır. NextPDF hiçbir FIPS 140 sertifikasyon iddiasında bulunmaz. Modül, bir uygunluk-yardımı yeteneği olarak davranışını alıntılanan maddelerle hizalar. Bir dağıtımın FIPS uyumlu olup olmadığı, NextPDF’e değil, operatörün doğrulanmış sağlayıcısına, modül sınırı tanımına ve uygunluk programına bağlıdır.
Geliştirme notları
“Geliştirme notları” başlıklı bölüm- Deterministik başarısızlık testleri, bozuk sağlayıcıları
FipsSelfTestyapıcısı aracılığıyla veyaFipsCryptoPolicy::strict(),standard()veFipsBootstrapyöntemleri üzerindeki$selfTestparametreleri aracılığıyla enjekte eder. - İşlem boyunca kalıcı hata mandalının dahili, yalnızca test amaçlı bir sıfırlama kancası vardır. Desteklenen API’nin bir parçası değildir ve üretim kodu onu çağırmamalıdır.
- Her PHP çalışan işlemi kendi açılış bataryasını çalıştırır. Rapor örnek başına önbelleğe alınır, böylece sıcak-yol iddiaları sabit-zamanlı durum kontrolleridir.
FipsModuleErrorStateException’ı yakalayıp devam etmeyin. İstisna, modülün kriptografik hizmetleri reddettiği anlamına gelir; doğru yanıt, iyileştirmeden sonra durmak ve işlemi yeniden başlatmaktır.FipsBootstrap::selfTestReport(), sağlık uç noktaları gibi talep üzerine ve periyodik otomatik test ihtiyaçlarına hizmet eder. Başarılı bir talep üzerine çalıştırma, mandallanmış bir hatayı asla temizlemez.
Ayrıca bakınız
“Ayrıca bakınız” başlıklı bölüm- FIPS 140-2/3 kriptografik politika ve otomatik test — kurulum ve örneklerle birlikte yetenek sayfası.
- Güvenlik — derinlemesine referans — birleştirilmiş Enterprise güvenlik kontrolleri.
- İmza — derinlemesine referans — PAdES uzun-vadeli üretici ve FIPS modu notu.
- Güvenlik — NextPDF Core — politikanın bağlandığı Core şifreleme ve imzalama yüzeyi.
Yayın sınırı
“Yayın sınırı” başlıklı bölümBu sayfa yalnızca dışarıdan gözlemlenebilir davranışı ve desteklenen genel API yüzeyini belgeler. Dahili ad alanı yolları, yardımcı sınıflar, mekanizma tabloları, çalıştırma kılavuzu dosya adları ve talep önekleri kapsam dışıdır.