İçeriğe geç
getnextpdf.com

Enterprise sürüm

FIPS 140 — Derinlemesine başvuru

Bu 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.

Bu 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.

NextPDF\Enterprise\Bootstrap içindeki FipsBootstrap hariç, tüm semboller NextPDF\Enterprise\Security\Fips içinde yer alır.

SembolParametrelerVarsayılan davranışDöndürürFırlatır veya şununla başarısız olurNotlar
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ırFipsModeGuardHerhangi bir açılış testi başarısızlığında FipsModuleErrorStateExceptionKompozisyon kökü; $auditLogger null olduğunda denetim izi kapalıdır
FipsBootstrap::lazy()boot() ile aynıBataryayı ilk sınır iddiasına ertelerFipsModeGuardÇağrı anında yok; ilk iddia FipsModuleErrorStateException fırlatabilirModül, ilk iddiaya kadar PRE_OPERATIONAL kalır
FipsBootstrap::signatureEnforcer()?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = nullModülü başlatır, ardından korumayı imzalayıcı darboğazları için sarmalarFipsSignatureEnforcerHerhangi bir açılış testi başarısızlığında FipsModuleErrorStateExceptionboot()’a devreder
FipsBootstrap::selfTestReport()?FipsSelfTest $selfTest = nullBataryayı talep üzerine çalıştırır ve özetlerarray{status: FipsSelfTestStatus, operational: bool, failed: list<string>}Fırlatmaz; başarısızlıklar failed içinde görünürYönetici sağlık uç noktaları ve CLI kullanımı için
FipsCryptoPolicy::strict()?FipsSelfTest $selfTest = nullFIPS 140-3 ön ayarı: SHA-256/384/512; onaylı RSA, RSASSA-PSS, ECDSA OID’leri; aes-256-cbc, aes-256-gcm; RSA >= 2048, EC >= 256selfYokYapıcı özeldir; ön ayarlar tek giriştir
FipsCryptoPolicy::standard()?FipsSelfTest $selfTest = nullFIPS 140-2 ön ayarı: katı küme artı aes-128-cbcselfYokYalnızca eski birlikte çalışabilirlik
FipsCryptoPolicy::assertPreOperational()YokAçılış bataryasını çalıştırır veya mandallanan sonucunu yeniden oynatırvoidHerhangi 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üzeyistring / int girdileriİzin listesi üyelik kontrolleri; bilinmeyen anahtar türü reddedilirbool / stringYokisHashAlgorithmAllowed, isSignatureAlgorithmAllowed, isEncryptionAlgorithmAllowed, isKeyStrengthAllowed, getPreferredHashAlgorithm, getName
FipsModeGuard::__construct()CryptoPolicyInterface $policy, ?FipsBootGuard $bootGuard = null, ?FipsAuditLogger $auditLogger = nullBir politikayı iddia tarzı sınırlarla sarmalarYok$bootGuard olmadan otomatik test kapısı yoktur; üretim kompozisyonu bunu sağlar
FipsModeGuard::assertHashAllowed()string $algorithmÖnce reddetme kataloğu, ardından izin listesivoidFipsViolationException; bir açılış koruması bağlıyken FipsModuleErrorStateExceptionDenetim kaydı herhangi bir FipsViolationException’dan önce gelir
FipsModeGuard::assertSignatureAlgorithmAllowed()string $oidÖnce reddetme kataloğu, ardından izin listesivoidYukarıdaki ile aynıOID’ler tam olarak eşleştirilir
FipsModeGuard::assertEncryptionAllowed()string $algorithmÖnce reddetme kataloğu, ardından izin listesivoidYukarı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ıvoidYukarıdaki ile aynıBilinmeyen anahtar türü reddedilir
FipsModeGuard::getPolicy()YokSarmalanan politikayı döndürürCryptoPolicyInterfaceYok
FipsBootGuard::__construct()FipsSelfTest $selfTestBataryayı tutar; çalıştırmazYokÖrnek başına bir açılış döngüsü
FipsBootGuard::report()YokBataryayı bir kez çalıştırır, raporu önbelleğe alır, hatada mandallanırFipsSelfTestReportYokİlk çağrı testleri çalıştırır
FipsBootGuard::rerun()YokYeni bir çalıştırmayı zorlar; bir hata çalıştırması işlemi mandallarFipsSelfTestReportYokTalep üzerine otomatik test; bir hata kurtarma yolu değildir
FipsBootGuard::assertOperational()YokModülün operasyonel olduğunu iddia eder; işlem boyunca kalıcıdırvoidFipsModuleErrorStateExceptionTemiz bir örnek, işlem bir hatayı mandalladıysa yine de fırlatır
FipsBootGuard::status()YokÖnbelleğe alınan durumu bildirirFipsSelfTestStatusYokMandallandığında ERROR; hiç çalıştırılmadığında PRE_OPERATIONAL
FipsSelfTest::__construct()?callable $randomBytesProvider = null, ?callable $hashProvider = nullPlatform hash() ve random_bytes() kullanırYokDeterministik başarısızlık testleri için geçersiz kılmalar mevcuttur
FipsSelfTest::run()YokTam bataryayı yürütür; asla kısa devre yapmazFipsSelfTestReportYokBaşarısızlıklar istisnalarda değil, raporda yer alır
FipsSelfTestReportFipsSelfTestStatus $status, array $results, array $failedResultsBir çalıştırmanın değişmez toplamıHata durumunda assertOperational(), FipsModuleErrorStateException fırlatırAyrıca isOperational(), isError()
FipsSelfTestResultstring $algorithm, string $kind, bool $passed, string $message = ''Test başına değişmez sonuçYokkind şu değerlerdir: KAT, PWCT veya HEALTH; ayrıca isPassed(), isFailed()
FipsSelfTestStatusString destekli enumYokDurumlar PRE_OPERATIONAL, OPERATIONAL, ERROR
FipsSignatureEnforcer::__construct()FipsModeGuard $guardİmzalama darboğazları için açılış kapılı bir korumayı sarmalarYok
FipsSignatureEnforcer::assertSignatureGenerationAllowed()string $algorithm, string $certificatePemOID’yi ve anahtar gücünü çözer, ardından korumaya devredervoidFipsViolationException (bilinmeyen algoritma, onaysız PSS özeti, kanıtlanamayan anahtar veya politika reddi); koruma aracılığıyla FipsModuleErrorStateExceptionYalnızca üretim yolu; doğrulama buraya asla yönlenmez
FipsAuditLogger::__construct()CryptoPolicyInterface $policy, LoggerInterface $loggerBir PSR-3 günlükleyicisini ve korumanın uyguladığı aynı politikayı sarmalarYokKaydedilen kararlar uygulananlardan sapamaz
FipsAuditLogger::logHashOperation() / logSignatureOperation() / logEncryptionOperation() / logKeyStrengthCheck()Karar başına string / int girdileriALLOW’u INFO’da, DENY’yi WARNING’de günlüklerbool (izin verildiğinde true)YokYapılandırılmış bağlam: politika adı, öğe, karar
FipsTransitioningAlgorithmsstring / int girdileriStatik SP 800-131A Rev.2 reddetme kataloğubool / list<string>YokisHashDisallowed, isSignatureOidDisallowed, isEncryptionDisallowed, isKeyStrengthDisallowed, ayrıca disallowedHashes, disallowedSignatureOids, disallowedEncryption
FipsViolationExceptionstring $policyName, string $violatingItem, string $reasonGenel salt okunur alanlara sahip türlenmiş politika ihlaliNextPDF\Exception\NextPdfException’ın alt türü
FipsModuleErrorStateExceptionarray $failedResults, ?string $message = nullBaşarısız test sonuçlarını taşıyan hata durumu reddiNextPDF\Exception\NextPdfException’ın alt türü
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
public static function strict(?FipsSelfTest $selfTest = null): self
public static function standard(?FipsSelfTest $selfTest = null): self
public function assertPreOperational(): void
public function isHashAlgorithmAllowed(string $algorithm): bool
public function isSignatureAlgorithmAllowed(string $oid): bool
public function isEncryptionAlgorithmAllowed(string $algorithm): bool
public function isKeyStrengthAllowed(string $keyType, int $bitLength): bool
public function getPreferredHashAlgorithm(): string
public function getName(): string
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 function __construct(private readonly FipsSelfTest $selfTest)
public function report(): FipsSelfTestReport
public function rerun(): FipsSelfTestReport
public function assertOperational(): void
public function status(): FipsSelfTestStatus
public function __construct(?callable $randomBytesProvider = null, ?callable $hashProvider = null)
public function run(): FipsSelfTestReport
public function __construct(private readonly FipsModeGuard $guard)
public function assertSignatureGenerationAllowed(string $algorithm, string $certificatePem): void
public function __construct(private CryptoPolicyInterface $policy, private LoggerInterface $logger)
public function logHashOperation(string $algorithm): bool
public function logSignatureOperation(string $oid): bool
public function logEncryptionOperation(string $algorithm): bool
public function logKeyStrengthCheck(string $keyType, int $bitLength): bool
public static function isHashDisallowed(string $algorithm): bool
public static function isSignatureOidDisallowed(string $oid): bool
public static function isEncryptionDisallowed(string $algorithm): bool
public static function isKeyStrengthDisallowed(string $keyType, int $bitLength): bool
public static function disallowedHashes(): array
public static function disallowedSignatureOids(): array
public static function disallowedEncryption(): array
public function __construct(public FipsSelfTestStatus $status, public array $results, public array $failedResults)
public function isOperational(): bool
public function isError(): bool
public function assertOperational(): void
// FipsSelfTestResult
public function __construct(public string $algorithm, public string $kind, public bool $passed, public string $message = '')
public function isPassed(): bool
public function isFailed(): bool
// FipsSelfTestStatus
enum FipsSelfTestStatus: string
{
case PRE_OPERATIONAL = 'pre_operational';
case OPERATIONAL = 'operational';
case ERROR = 'error';
}
  • 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-PSS ve bu hash’lere bağlı ECDSA imza OID’leri; aes-256-cbc ve aes-256-gcm; ve RSA 2048, EC 256, Ed25519 256 anahtar alt sınırları. standard() ek olarak aes-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 FipsBootGuard tarafından gözlemlenen ilk ERROR raporu 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\CryptoPolicyInterface ve NextPDF\Contracts\PreOperationalSelfTestInterface arabirimlerini uygular. Core kripto politikası olarak yapılandırıldığında, Core uygulama dikişi, ilk imza veya şifreli metin üretilmeden önce assertPreOperational()’ı yönlendirir.
  • FipsSignatureEnforcer yalnı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 FipsViolationException reddi 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.
  • Bilinmeyen bir anahtar türü her iki katman tarafından da reddedilir: politika false dö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ı, FipsViolationException ile fail-closed olarak reddedilir.
  • Her RSASSA-PSS çeşidi 1.2.840.113549.1.1.10 OID’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:unprovable olarak 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 ERROR durumuna 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 FipsModeGuard yalnızca politika kontrolleri gerçekleştirir ve otomatik test kapısı yoktur. Üretim kompozisyonu, kapıyı her zaman bağlayan FipsBootstrap ü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 kadar PRE_OPERATIONAL kalır. PRE_OPERATIONAL, iddia anında operasyonel değil olarak ele alınır.

Bu 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.

İddiaStandartMadde
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-3Introduction (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.2Change 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.

  • Deterministik başarısızlık testleri, bozuk sağlayıcıları FipsSelfTest yapıcısı aracılığıyla veya FipsCryptoPolicy::strict(), standard() ve FipsBootstrap yöntemleri üzerindeki $selfTest parametreleri 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.

Bu 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.