İçeriğe geç

İmza doğrulama: AdES / PAdES için kriptografik doğrulama tarafı

NextPDF Enterprise dijital imzaları kriptografik olarak doğrular. Doğrulama tarafı PDF’den Cryptographic Message Syntax (CMS) SignedData yapısını ya da Request for Comments (RFC) 3161 zaman damgası belirtecini okur, özetleri yeniden hesaplar, imzaları denetler, her imzayı kendi imzalama sertifikasına bağlar ve sertifika zincirini, sertifika-ilkesi işlemesi dahil, çağıranın sağladığı güven-çapası deposuna karşı doğrular. Bu sayfa bu davranışı açıklar: neyin doğrulandığını, neyin fail-closed olarak reddedildiğini, hangi algoritmaların desteklendiğini ve güven sınırının nerede olduğunu belirtir.

Bu, Doğrulama işleminden ayrıdır; bu işlem salt okunur yapısal ilke denetimleri çalıştırır ve kasıtlı olarak hiçbir kriptografi gerçekleştirmez. Ayrıca, PDF Advanced Electronic Signatures (PAdES) B-LT / B-LTA yapılarını yazan İmza üreticisinin doğrulama tarafındaki karşılığıdır.

Terminal window
composer require nextpdf/enterprise:^3

Doğrulama kanıta dayalıdır ve fail-closed çalışır: olumlu biçimde kanıtlanamayan bir denetim olumlu sonuç vermez. Aşağıdaki parçalar, bir ValidationReport tarafından taşınan tek bir sonuçta birleşir.

CMS / zaman damgası belirteci kriptografik doğrulaması. Kendi içinde tutarlı, katı ve belirli uzunluklu bir DER yığını, CMS SignedData yapısını ve RFC 3161 zaman damgası belirtecini ayrıştırır. Bir belirteç yalnızca şu koşullarda kabul edilir: tam olarak bir SignerInfo taşır, imzalı öznitelikleri katı biçimde ayrıştırılır, imzalayan sertifikası çözümlenir, message-digest özniteliği yeniden hesaplanan özetle eşleşir, zorunlu imzalama-sertifikası (ESS signing-certificate-v2) bağı geçerlidir ve SignerInfo imzası yeniden etiketlenmiş imzalı öznitelikler üzerinde doğrulanır. Özet-eşleştirme kuralı RFC 5652 §5.6 / §5.4 doğrulama modelini izler: alıcı içerik mesaj özetini yeniden hesaplar ve imza yalnızca bu değer messageDigest imzalı özniteliğine eşit olduğunda geçerlidir. Doğrulayıcı, üreticinin sağladığı bir özete asla güvenmez.

TSA sertifikasının genTime anında doğrulanması. Zaman damgasının genTime değeri, belirtecin oluşturulduğu UTC anıdır (RFC 3161 §2.4.2). TSA imzalama sertifikası “şimdi” anında değil, o anda doğrulanır: genişletilmiş anahtar kullanımı tek ve kritik bir id-kp-timeStamping olmalıdır (RFC 3161 §2.3); geçerlilik penceresi, zinciri, güven-çapası kökeni ve iptal durumu genTime değerine göre değerlendirilir. Yapısal olarak iyi biçimlendirilmiş olsa da yapılandırılmış bir güven çapasına ulaşmayan zincir, hiçbir zaman olumlu bir sonucu destekleyemez.

Ayrık PAdES temel belge imzaları. Somut ayıklayıcı, ayrık bir belge imzası için gerçek Advanced Electronic Signatures (AdES) / PAdES temel doğrulamasını gerçekleştirir: mesaj özeti imzalanan bayt aralığı üzerinde yeniden hesaplanır ve karşılaştırılır, imza doğrulanır ve imzalama-sertifikası bağı zorunludur. Bu, önceki, yalnızca yapısal yedek davranışın yerini alır. Zaman damgası doğrulayıcısı ve belge-imzası ayıklayıcısı tek bir ESS issuer-and-serial doğrulayıcısını paylaşır; böylece sertifika-bağı ayrıştırması sapma gösteremez.

Arşivsel DocTimeStamp kapsama zinciri. validateArchivalTimestampChain(), PDF bayt aralıkları üzerindeki güvenilir DocTimeStamp belirteçlerinden oluşan bir zinciri B-LTA arşivsel kanıtı olarak doğrular. Her belirtecin imprint değeri kapsadığı gerçek ByteRange baytlarına bağlıdır, zincir katı ETSI sıralamasını izler, her belirtecin TSA zinciri güven-çapalıdır ve zincir dosyayı end-of-file işaretine kadar kapsamalıdır. Yalnızca tam, güven-çapalı ve EOF’a kadar kapsayan bir zincir için tümüyle geçti sonucuna ulaşır.

Sertifika-ilkesi işlemesi (RFC 5280 §6.1.4). Yol doğrulaması tam sertifika-ilkesi işlemesini uygular: düğüm yapılı bir ilke ağacı, anyPolicy yedeğiyle ilke eşleme ve policyConstraints / inhibitAnyPolicy değerlerinin birlikte uygulanması; tümü fail-closed bir ilke-uzantısı DER okuyucusuyla desteklenir. Yol-işleme durum değişkenleri explicit_policy ve inhibit_anyPolicy (RFC 5280 §6.1.2) boş olmayan bir geçerli-ilke ağacının gerekip gerekmediğini belirler; tamamlama adımı geçerli-ilke ağacını user-initial-policy-set ile kesiştirir (RFC 5280 §6.1.4). Gerekli ilke bulunmadığında ve anyPolicy kabul edildiğinde işleme kısıtlanmamış kalır; bu varsayılandır ve önceki davranışa göre değişmemiştir.

Doğrulama tarafı aşağıdaki algoritma kümesini kabul eder ve bunun dışındaki her şeyde fail-closed davranır: desteklenmeyen bir algoritma reddedilmiş doğrulama demektir, asla sessiz bir geçiş değildir.

AileDesteklenenNotlar
RSA (PKCS#1 v1.5)rsaEncryption (SHA-2 ile) ve sha*WithRSAEncryption OID’leriKabul edilir
ECDSAP-256, P-384, P-521 eğrileriKabul edilir
RSASSA-PSSDesteklenmiyor → fail-closed
EdDSADesteklenmiyor → fail-closed
SHA-3 özetleriDesteklenmiyor → fail-closed
SHA-1Zayıf: SHA-1 altında doğrulanan temel bir imza, geçiş olarak değil, kripto-kısıtları hatasına indirgenir

Doğrulama tarafını herkese açık motor ve Core / Pki sözleşmeleri aracılığıyla kullanırsınız. Somut strateji sınıfları içseldir.

TürÇeşitRol
AdESValidationEnginesınıfDoğrulama tarafının giriş noktası: imza ve arşivsel-zincir doğrulaması.
AdESValidationEngine::validateArchivalTimestampChain()yöntemPDF bayt aralıkları üzerinde güvenilir bir DocTimeStamp kapsama zincirini doğrular.
ValidationReportsonuçYapılandırılmış sonuç: genel durum ile birlikte denetim başına bulgular.
PathValidatorInterfacearabirim (NextPDF\…\Pki)Motorun bağımlı olduğu sertifika-yolu doğrulaması SPI’si.
PathValidationOptionsdeğer nesnesiİlke-işleme denetimleri: requireExplicitPolicy, inhibitAnyPolicy, inhibitPolicyMapping, maxPolicyFanout.
TrustAnchorStoreInterfacearabirimZincirin değerlendirildiği, çağıran tarafından sağlanan güvenilir çapalar kümesi.

Arşivsel zincir yönteminin imzası şöyledir:

public function validateArchivalTimestampChain(
string $pdfBytes,
array $dssData = [],
?TrustAnchorStoreInterface $anchors = null,
): ValidationReport;

Yalnızca DocTimeStamp zinciri tümüyle doğrulandığında, güven-çapalı olduğunda ve dosyayı EOF işaretine kadar kapsadığında tümüyle geçti sonucuna ulaşır.

CertificateChainValidator::validate(), bir başlangıç-ilke kümesi alır (RFC 5280 user-initial-policy-set). Varsayılan anyPolicy değeridir; bu kısıtlanmamıştır, dolayısıyla sıradan zincir etkilenmez. Boş olmayan bir geçerli-ilke ağacı talep etmek için açık bir küme geçirin ya da requireExplicitPolicy değerini ayarlayın.

use NextPDF\Enterprise\Security\Validation\AdESValidationEngine;
$report = $engine->validateArchivalTimestampChain($pdfBytes, [], $trustAnchors);
if ($report->isTotalPassed()) {
// A complete, trust-anchored, EOF-covering DocTimeStamp chain.
}
use NextPDF\Enterprise\Security\Validation\AdESValidationEngine;
use Psr\Log\LoggerInterface;
final readonly class ArchivalEvidenceCheck
{
public function __construct(
private AdESValidationEngine $engine,
private LoggerInterface $logger,
) {}
public function check(string $pdfBytes, TrustAnchorStoreInterface $anchors): bool
{
$report = $this->engine->validateArchivalTimestampChain($pdfBytes, [], $anchors);
foreach ($report->findings as $finding) {
$this->logger->info('archival.finding', [
'check' => $finding->checkId,
'status' => $finding->status->value,
]);
}
// A positive result proves byte-range coverage by a trusted timestamp
// chain — it is one input to your decision, not a legal conclusion.
return $report->isTotalPassed();
}
}

Doğrulama tarafı, yapısal / zamansal kabulden tam kriptografik doğrulamaya geçti. Eski, daha hoşgörülü davranışa güveniyorsanız bu değişiklikleri gözden geçirin.

  • Tanınabilir ancak doğrulanamayan bir zaman damgasında fail-closed. Daha önce yapısal ve zamansal gerekçelerle geçen bir DocTimeStamp ya da arşivsel belirteç artık tam kriptografik doğrulama gerektirir: imza, message-digest ve imzalama-sertifikası bağı. Doğrulanmayan belirteç artık olumlu bir varlık kanıtı üretmez; belirsiz ya da başarısız bir sonuca eşlenir.
  • SHA-1 temel imzalar geçirilmez, indirgenir. Doğrulanan ancak SHA-1 kullanan temel bir belge imzası, tam geçiş yerine kripto-kısıtları hatası olarak raporlanır.
  • RFC 5280 §6.1.4 sertifika-ilkesi işlemesi zorunlu kılınır. Geçerli-ilke ağacı boşken explicit_policy değeri sıfıra ulaşan bir zincir artık başarısız olur; buna zincir içindeki bir policyConstraints requireExplicitPolicy kısıtlaması yol açtığında da sonuç aynıdır. Varsayılan, kısıtlanmamış zincirler (gerekli ilke yok, anyPolicy kabul edilir) etkilenmez.
  • Yapıcı imzası değişikliği (BC kırılması). AdESValidationEngine::__construct() artık $chainValidator parametresini Pki\PathValidatorInterface SPI’si olarak türler ve tembel biçimde Pki\CertificateChainValidator::withDefaults() değerine ayarlar. Önceden somut Ltv\CertificateChainValidator idi. Somut LTV doğrulayıcısını enjekte eden çağıran, bunun yerine Pki SPI uygulamasını enjekte etmelidir. Pki doğrulayıcısı aynı yapısal yol motorunu sarmalar ve ad kısıtlamaları ile ilke işlemesini ekler; uyumlu varsayılan girdiler için no-op’tur.
  • Desteklenmeyen algoritma ≠ sonuçsuz. RSASSA-PSS, EdDSA ve SHA-3 ertelenmez; fail-closed olarak reddedilir. İmzalayanlarınız bunları kullanıyorsa bu doğrulama tarafı olumlu sonuç döndürmez.
  • Güven, çapaya görelidir. Doğrulama her zaman sağladığınız güven-çapası deposuna görelidir. Boş ya da yanlış bir çapa kümesi, kriptografik doğruluktan bağımsız olarak güvenilmeyen sonuç verir.
  • genTime, şimdi değil. TSA sertifikası belirtecin genTime anında değerlendirilir. Bu nedenle süresi dolmuş bir TSA sertifikası, geçerliyken oluşturulmuş bir belirteci yine de destekleyebilir; genTime anında henüz geçerli olmayan bir sertifika ise destekleyemez.
  • EOF kapsaması. Arşivsel zincir belgeyi EOF işaretine kadar kapsamalıdır. Dosyanın yalnızca bir önekini kapsayan zaman damgası, belgenin tamamının kapsandığını ortaya koymaz.
  • İptali kanıtlanmamış olmak Good değildir. Bir Valid kararı, kesin biçimde iptal edilmemiş bir durum gerektirir. Hem OCSP hem de CRL Unknown ya da Unavailable döndürürse, kriptografik olarak sağlam, zincir-geçerli ve güven-çapalı bir imza bile Indeterminate sonucuna çözümlenir. Valid sonucuna ulaşmak için imzalayan sertifikasına ilişkin gömülü OCSP/CRL Good malzemesi sağlayın.

Doğrulama, sağlanan PDF baytları ve gömülü doğrulama malzemesi üzerinde işlem içinde çalışır; maliyet zincir uzunluğu ve zaman damgası sayısıyla ölçeklenir. Doğrulama hiçbir ağ gidiş-dönüşü yapmaz. İptal ve güven malzemesi, çağıranın sağladığı ya da belgeye gömülü malzemeden gelir. Doğrulama belirlenimcidir: aynı girdiler ve aynı güven çapaları aynı raporu üretir.

  • Fail-closed varsayılandır. Her kabul adımı, olumlu biçimde doğrulayamadığı malzemeyi reddeder. Bu, belgenin motorun hiçbir zaman ortaya koymadığı bir geçerliliği ilan etmesini önler.
  • Zaman damgasından sonra ekleme, EOF kapsamasıyla etkisiz kılınır. Her arşivsel zaman damgasının imprint değeri gerçek ByteRange baytlarına bağlı olduğundan ve zincir EOF’a ulaşmak zorunda olduğundan, zaman damgasından sonra eklenen içerik onun tarafından kapsanmaz ve kanıtsal ağırlık kazanmaz.
  • Girdiyi düşman olarak ele alın. Güvenilmeyen kaynaklardan gelen PDF baytları, gömülü CMS ve zaman damgası belirteçleri; hatalı biçimlendirilmiş ya da belirsiz uzunluklu kodlamaları reddeden katı, belirli uzunluklu bir DER okuyucusu tarafından ayrıştırılır.

Doğrulama işlem içinde ve yereldir; hiçbir ağ G/Ç’si yoktur. Sertifikalar ve imzalar özne kimliği taşır; raporlara ve ayıklanan her türlü sertifika verisine kendi saklama ve en aza indirme denetimlerinizi uygulayın.

Bulgular denetim tanımlayıcılarını ve durumlarını taşır. Bazı tanılamalar sertifika özne adlarını ya da seri numaralarını yansıtabilir; günlükleri paylaşılan havuzlara iletmeden önce bu alanları temizleyin ya da çıkarın.

Olumlu bir sonucun fazla anlam yüklenmemesi için bu sınırları kullanıcıya yönelik çıktıda belirtin.

  • validateArchivalTimestampChain() bayt-aralığı kapsamasını kanıtlar, xref erişilebilirliğini değil. Güvenilir bir zaman damgası zincirinin belgenin bayt aralıklarını EOF’a kadar kriptografik olarak kapsadığını ortaya koyar. Xref düzeyinde ya da startxref nesne-erişilebilirliği çözümlemesi yapmaz; bu, tasarım gereği kapsam dışıdır. EOF-kapsama kuralı, güven çapalamayla birlikte zaman damgasından sonra ekleme saldırılarını etkisiz kılar; nesne-grafiği çözümlemesini değil.
  • Tasarım gereği kapsam dışı. Evidence Records (RFC 4998 / RFC 6283); RSASSA-PSS, EdDSA ya da SHA-3 zaman damgası belirteçlerinin doğrulanması; güvenilir-liste (TSL) ve nitelikli-TSA entegrasyonu; ve çevrimiçi TSA-iptal getirme bu doğrulama tarafınca sağlanmaz. İptal durumu, doğrulayıcının zaten erişebildiği malzemeye göre değerlendirilir.
DavranışReferansDurum
İmza değeri / zaman damgası belirteci DER-kodlu olarak şurada saklanır: /ContentsISO 32000-2 §12.8.1Ayrıştırılır ve doğrulanır
Belge zaman damgası sözlüğüISO 32000-2 §12.8.5Arşivsel zincir için okunur
Alıcı içerik özetini yeniden hesaplar; bu, messageDigest özniteliğine eşit olmalıdırRFC 5652 §5.6 / §5.4Zorunlu kılınır
TSA sertifikası tek, kritik bir id-kp-timeStamping EKU taşırRFC 3161 §2.3genTime anında denetlenir
genTime UTC oluşturma anıdırRFC 3161 §2.4.2Doğrulama anı olarak kullanılır
İlke-işleme durum değişkenleri (explicit_policy, inhibit_anyPolicy)RFC 5280 §6.1.2İşlenir
Tamamlama, geçerli-ilke ağacını user-initial-policy-set ile kesiştirirRFC 5280 §6.1.4Zorunlu kılınır
Uzun süreli imzalar için DSS girişleri ve belge zaman damgalarıETSI EN 319 142-2 §5.5Arşivsel kanıt olarak doğrulanır

Tüm hükümler başka sözcüklerle ifade edilmiştir. NextPDF normatif metni yeniden üretmez; yetkili ifade için yayımlanmış standartlara başvurun. NextPDF hiçbir AdES / PAdES sertifikasyon iddiasında bulunmaz. Doğrulama tarafı, atıfta bulunulan teknik özelliklerin tanımladığı kriptografik denetimleri uygular; sertifikalı bir doğrulama hizmeti değildir ve üçüncü taraf tasdiki üretmez.

Enterprise FIPS profili etkin olduğunda kısıtlama, doğrulayıcının kabul ettiği özet ve imza algoritmalarına uygulanır. Özet yeniden hesaplaması, imza denetimleri, sertifika-bağı ve yol doğrulaması dahil olmak üzere doğrulama mantığı değişmez.

VarlıkSaldırganRiskAzaltım
Zaman damgası belirteciSahte ya da değiştirilmiş belirteçSahte bir varlık kanıtıTam kriptografik doğrulama; doğrulanamayan her şeyde fail-closed
TSA sertifikasıGüvenilmeyen verenDoğrulayıcının ileri sürmemesi gereken görünürdeki güvenZincir, genTime anında çağıran tarafından sağlanan bir çapaya karşı doğrulanır; güvenilmeyen zincir asla geçmez
Belge baytlarıZaman damgasından sonra eklemeİçerik, kapsama olmadan bir zaman damgasının ağırlığını kazanırİmprint gerçek ByteRange baytlarına bağlı + EOF-kapsama kuralı
Zayıf algoritmaSHA-1’e / desteklenmeyen şemaya düşürmeGeçerli görünen zayıf bir imzaSHA-1 indirgenir; RSASSA-PSS / EdDSA / SHA-3 fail-closed

Bu doğrulama tarafı bir Enterprise yeteneğidir ve nextpdf/enterprise paketiyle gelir. NextPDF Core imzanın varlığını algılar ve B-B / B-T imzaları üretir, ancak bu kriptografik doğrulama tarafını sağlamaz. Lisans alın.

Doğrulama tarafı Enterprise sürümü tarafından kapılandırılır (license_feature_flag: enterprise). Core ve Pki sözleşmeleri üzerinden çözümlenir; herkese açık application programming interface (API) bir sürüm yükseltmesinde değişmez.

  • Bir CMS ya da zaman damgası belirteci yalnızca şunlarla kabul edilir: tam olarak bir SignerInfo, katı biçimde ayrıştırılmış imzalı öznitelikler, çözümlenmiş bir imzalayan sertifikası, eşleşen bir message-digest, zorunlu imzalama-sertifikası bağı ve doğrulayan bir SignerInfo imzası.
  • TSA sertifikası belirtecin genTime anında doğrulanır: tek, kritik bir id-kp-timeStamping EKU, geçerlilik penceresi, güven-çapalı zincir ve iptal.
  • Bir Valid kararı ayrıca kesin biçimde iptal edilmemiş bir durum gerektirir: en az bir yetkili Good (doğrulanmış Good bir OCSP yanıtı ya da seriyi süresi dolmamış bir listenin dışına yerleştiren taze bir CRL). Yalnızca iptali kanıtlanmamış olan, OCSP ve CRL’nin her ikisinin de Unknown ya da Unavailable olduğu bir durum, Indeterminate sonucuna çözümlenir, asla Valid değil (ETSI EN 319 102-1: iptal durumu-kullanılamaz → INDETERMINATE). CRL yedek yolu yalnızca liste tazeliğini tasdik ettiğinden, seri başına iptali değil, Good bir OCSP bulunmayan yalnızca CRL bir zincir genellikle Indeterminate olur.
  • validateArchivalTimestampChain() yalnızca tam, güven-çapalı, EOF’a kadar kapsayan bir DocTimeStamp zinciri için tümüyle geçti sonucuna ulaşır; bayt-aralığı kapsamasını kanıtlar, xref erişilebilirliğini değil.
  • Sertifika-ilkesi işlemesi RFC 5280 §6.1.4 kuralını izler; varsayılan kısıtlanmamış zincirler etkilenmez.
  • Desteklenen algoritmalar RSA (SHA-2 ile PKCS#1 v1.5) ve ECDSA (P-256/384/521)‘dir; RSASSA-PSS, EdDSA ve SHA-3 fail-closed davranır; SHA-1 indirgenir.

Bu herkese açık sayfa yalnızca dışarıdan gözlemlenebilir doğrulama-tarafı davranışını açıklar. Herkese açık motoru, Pki / güven-çapası sözleşmelerini ve validateArchivalTimestampChain() yöntemini desteklenen yüzey aracılığıyla adlandırır. Somut DER, CMS, ilke-işlemci ve yol-doğrulayıcı iç ayrıntıları, gizlilik sözleşmesi (NDA) altındaki kapılı derin referansta yer alır.

NextPDF Core imzanın varlığını algılar ve B-B / B-T imzaları üretir; ancak CMS ya da zaman damgası belirteçlerini kriptografik olarak doğrulamaz, arşivsel zinciri doğrulamaz ya da RFC 5280 §6.1.4 ilke işlemesini çalıştırmaz. Yalnızca-Core bir dağıtımın eşdeğer bir doğrulama tarafı yoktur; bkz. Güvenlik / İmzalama (Core).

NextPDF Pro imzalama stratejileri ve e-fatura işleme ekler; ancak bu kriptografik doğrulama tarafını sağlamaz. Arşivsel-zincir doğrulaması ve sertifika-ilkesi işlemesi yalnızca nextpdf/enterprise ile gelir.

Doğrulama tarafı davranış düzeyinde açıklanmıştır. Katı DER yığını, CMS ayrıştırıcısı, ilke işlemcisi ve yol-doğrulayıcı iç ayrıntıları herkese açık yüzey için kapsam dışıdır ve burada yeniden üretilmez.

Doğrulama, çağıranın sağladığı ya da belgeye gömülü güven-çapası deposuna ve her türlü iptal malzemesine bağlıdır. NextPDF Enterprise bu malzemeyi değerlendirir; güven listesi, TSA ya da iptal hizmeti işletmez. Çapa seçimi ve gömülü iptal malzemesinin tazeliği operatöre aittir.

Bu sayfa export_control_class: legal-review-required olarak işaretlenmiştir; kriptografik doğrulamayı ilgilendirir. publish bayrağı ayarlanmadan önce yasal onay gereklidir. Olumlu bir doğrulama sonucu, belgenin imzaları ve zaman damgaları hakkında kriptografik bir ifadedir. Bir yasal görüş, bir eIDAS nitelik belirlemesi ya da bir sertifikasyon değildir. NextPDF hiçbir AdES / PAdES sertifikasyon iddiasında bulunmaz. Mevzuat yükümlülükleriniz için kendi uyum ve hukuk danışmanlarınıza başvurun.