İçeriğe geç
getnextpdf.com

Güvenilir zaman: bir zaman damgası ne zaman olduğunu nasıl kanıtlar

Spec: RFC 3161Spec: RFC 5816Spec: ISO 32000-2, §12.8.5

Bir zaman damgası, tek bir soruyu, şaşırtıcı biçimde kaygan bir soruyu yanıtlar: bu veri var mıydı? Kimin yaptığını değil, doğru olup olmadığını değil — yalnızca, adlandırılmış bir anda, tam olarak bu baytların dünyada halihazırda bulunduğunu. Bu sayfa, fikri en baştan inşa eder: bir Zaman Damgası Otoritesinin ne yaptığını, bir belirtecin gerçekte ne içerdiğini ve bir saatteki bir sayının neden kanıt hâline geldiğini.

Bu, motor odaklı Zaman damgaları ve güvenilir zaman sayfasının ilk ilkelere dayalı eşlikçisidir. “Güvenilir zaman” size jargon gibi geliyorsa, önce bunu okuyun.

Bilgisayarınızın saati bir itiraftır, bir kanıt değil. Onu istediğiniz herhangi bir değere ayarlayabilirsiniz, başka herkes de öyle. Bir tarih ikinci bir taraf için önem kazandığı anda — bir son tarihten önce imzalanması gereken bir sözleşme, bir anlaşmazlıktan önce var olması gereken bir kayıt — kendi saatiniz kanıt olarak değersizdir, çünkü onu siz denetlersiniz. Güvenilir zamanın bütün sorunu, hareket ettiremeyeceğiniz bir saat bulmaktır.

Bu, dar kapsamlı bir kaygı değildir. Uzun ömürlü her imzalı PDF buna yaslanır. Bir imzalama sertifikasının eninde sonunda süresi dolar; yıllar sonra bir doğrulayıcının, imzanın sertifika hâlâ geçerliyken yapıldığını bilmesi gerekir. “Ne zaman” için bağımsız bir kayıt olmadan, o sorunun dürüst bir cevabı yoktur. Güvenilir zaman, kalıcı imzaların bütün yapısının üzerinde durduğu sessiz temeldir.

  • Bir zaman damgası, bir veri parçasının belirtilen bir andan önce var olduğunu kanıtlar. Bu, yaş üzerine bir üst sınırdır, başka bir şey değil.
  • Üçüncü bir tarafça, Zaman Damgası Otoritesi (TSA) tarafından üretilir; saatine tam olarak sizinki olmadığı için güvenirsiniz.
  • TSA, verinizi asla görmez. Onun bir özetini, bir zaman değerine bağlanmış olarak imzalar ve küçük, imzalı bir belirteç döndürür.
  • Belirteç, üç şeyi birlikte kanıtlar: verinin veri olduğunu (özet eşleşir), zamanın TSA’nın zamanı olduğunu (imzası) ve yanıtın gönderdiğiniz isteğe uyduğunu (geri yansıttığı nonce, yeniden oynatılmış daha eski bir yanıta karşı koruyarak).
  • Veriyi kimin yazdığını, verinin doğru olduğunu ya da kesin oluşturma anını kanıtlamaz. Yalnızca: bundan daha sonra değil.
  • Güven, TSA’ya akar. Kamuca güvenilen bir TSA, çoğu kayıt için yeterince iyidir; eIDAS-nitelikli bir TSA, AB’de yasal bir karine taşır.

Her şeyin merkezindeki numarayla başlayın. Bir yabancının, verinizin ne zaman var olduğuna kefil olmasını istiyorsunuz, ancak ona veriyi gösteremezsiniz — gizli olabilir ve her durumda devasa olabilir. Bu yüzden göstermezsiniz. Bir özet hesaplarsınız: özgün veriden tek bir bayt değişse bile tamamen değişen ve özgününün geri kazanılamayacağı, kısa, sabit uzunlukta bir parmak izi. Dosyayı değil, parmak izini gönderirsiniz.

TSA o parmak izini alır, kendi güncel zamanını ekler, çifti özel anahtarıyla imzalar ve bir zaman damgası belirteci geri verir (Spec: RFC 3161, §2.1). Belirteç, kalıcı kılınmış bağlamadır: bu parmak izi, bu zamanda, benim tarafımdan kefil olunmuş. Belirteç imzalı olduğu için, hiç kimse — sonradan TSA bile — imzayı bozmadan zamanı değiştiremez. Parmak izinizi taşıdığı için, başka herhangi bir dosya için işe yaramaz. Ve istek, TSA’nın değiştirmeden geri yansıttığı yeni rastgele bir nonce içerdiği için, yanıtın bu belirli isteğe karşılık geldiğini ve daha eski bir yanıtın yeniden oynatması olmadığını anlayabilirsiniz — nonce, kimin sorduğunu değil, tazeliği tasdik eder (Spec: RFC 3161, §2.4.2).

Katlanmış bir mektubun üzerine bastırılmış bir balmumu mührü düşünün. Mühür mektubu okumaz; yalnızca mühür vurulduğunda mektubun bütün ve mevcut olduğunu kanıtlar. Bir zaman damgası, sahibi olmadığınız bir saatin, verinizin bir parmak izinin üzerine vurduğu bir mühürdür.

  1. Fingerprint the dataCompute a one-way hash of the file or the signature value. The data itself never leaves your hands.
  2. Ask the authoritySend the hash and a fresh random nonce to the Time-Stamp Authority.
  3. The TSA seals a timeIt signs the hash bound to its own clock and echoes your nonce, producing a small signed token.
  4. Store the tokenFor a PDF, the token is placed inside the file so the proof travels with the document.
  5. Verify laterAnyone who trusts the TSA can check the token: its signature against the TSA certificate, the matching hash, the echoed nonce, and the time — then concludes an upper bound on age.
How a trusted timestamp is obtained and what it proves: a hash plus a fresh nonce go to the TSA, the TSA signs that hash bound to its own time and echoes the nonce, and the verifier checks every link before treating the token as proof that the data existed before the stated time.

Bir PDF’te, bu aynı mekanizma iki şapka takar. Bir imza zaman damgası, imzanın değerini zaman damgalayarak bir imzanın ne zaman uygulandığını mühürler. Bir belge zaman damgası, tüm PDF’i özetleyerek (belirtecin işgal edeceği yer tutucu hariç) ve dönen belirteci o yer tutucuya geri saklayarak tüm dosyanın ne zaman var olduğunu mühürler (Spec: ISO 32000-2, §12.8.5). İkinci tür, uzun ömürlü bir arşivleme imzasının güvenini taze tutmak için yıllar boyunca yenilediği şeydir.

Bilmeye değer modern bir ayrıntı: daha eski bir zaman damgası biçimi, TSA’nın kendi sertifikasını adlandırmak için kendisini tek bir özet algoritmasına sabitliyordu. Güncellenmiş profil, bir belirtecin sertifikasını bunun yerine güncel bir özetle adlandırmasına izin verir (Spec: RFC 5816, §2.1); böylece güvenilir zaman, dünün kriptografisini sessizce devralmaz.

Bir belirteci elle birleştirmezsiniz ve bunu istememelisiniz. Anlamaya değer şey, güven dikiş yeridir: hangi saate inanmayı seçtiğiniz. NextPDF’te, güvenilir zaman gerektiren bir imza düzeyi istemek, bu seçimi örtük yerine açık kılar.

<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
// A baseline signature trusts only the signer's own clock.
$baseline = SignatureLevel::PAdES_B_B;
$baseline->requiresTimestamp(); // false → no third party vouches for "when"
// Stepping up to B-T means a Time-Stamp Authority must be supplied:
// from here on, "when" is attested by a clock you do not control.
$timestamped = SignatureLevel::PAdES_B_T;
$timestamped->requiresTimestamp(); // true → a TSA is now part of your trust model
// The decision is now visible at the call site, not buried in a default.
// Choosing the TSA is choosing whose time becomes your evidence.

Örneğin amacı API değildir. “Güvenilir zamanım var mı?” sorusunun, belgeniz hakkında, bir TSA’nın döngüde olup olmadığıyla kararlaştırılan, evet-ya-da-hayır bir gerçek olması — ve motorun bu gerçeğin belirsiz olmasına izin vermeyi reddetmesidir.

Tuzak, bir zaman damgasını “bu 14:32’de oluşturuldu” diye okumaktır. Böyle bir şey söylemez. “Bu, 14:32’den daha geç olmamak üzere vardı” der. Fark, asıl meselenin tamamıdır. Bir zaman damgası bir üst sınırdır, asla bir alt sınır ve asla kesin bir an değil. Verileriniz, siz zaman damgalamaya sıra gelene kadar yıllarca var olmuş olabilir; belirteç bu konuda sessizdir. Tek bir çizgi çeker ve der ki: buradan sonra değil.

İkinci ve daha maliyetli bir yanlış anlama: bir zaman damgasının belgenizin gerçek ya da doğru olduğunu kanıtladığı. İkisini de yapmaz. Anlama kayıtsızdır. Kusursuzca zaman damgalanmış bir yalan, hâlâ bir yalandır — artık kanıtlanabilir biçimde eski. Özgünlük, kimin olduğunu söyleyen imzadan gelir; doğruluk, dünyadan gelir. Zaman damgası yalnızca ne zaman olduğuna işaret eder.

Bir zaman damgasının erişimi, tam olarak güven modelinin durduğu yerde durur. Yaş üzerine bir üst sınır kanıtlar, yalnızca onu ve yalnızca onu mühürleyen otoriteye güveniyorsanız.

Ayırt etmeye değer iki otorite katmanı vardır. Kamuca güvenilen bir TSA, yazılımınızın zaten kabul ettiği bir sertifikaya zincirlenir; belirteçleri yaygın biçimde doğrulanabilir ve çoğu kayıt için uygundur. eIDAS-nitelikli bir TSA, bir AB güvenilir listesindeki denetlenen bir sağlayıcıdır ve nitelikli bir elektronik zaman damgası, tarihinin doğruluğu ve verinin bütünlüğü üzerine sıradan bir zaman damgasının taşımadığı bir yasal karine taşır (Spec: eIDAS, Art. 41). Aralarında seçim yapmak, baytların nasıl işlediğiyle ilgili değil, gereksindiğiniz kanıtsal ağırlık hakkında bir sorudur; kriptografi aynıdır.

Bir zaman damgası ayrıca kendi güven çıpalarının ömrünü de devralır. TSA’nın sertifikasının süresi dolabilir ya da iptal edilebilir ve kullandığı özet algoritması eskiyebilir. Uzun ömürlü belgelerin bir kez zaman damgalayıp çekilmemesinin tam nedeni budur — yenilerler, eski kanıt zayıflamadan önce eski kanıtın üzerine taze bir belge zaman damgası katmanlayarak. O yenileme döngüsü kendi başına bir konudur; Uzun vadeli doğrulama sayfasına bakın.

RFC 3161 trusted timestamping (signature and document timestamps) — edition availability
EditionAvailability
Core

Supports PAdES B-B and B-T. B-B is the baseline signature with no timestamp; B-T requests and embeds a verified RFC 3161 signature timestamp against a deployment-supplied TSA whose clock you choose.

Pro

Adds the embedded long-term validation data (certificates, OCSP, CRLs) that B-LT needs to keep a signature verifiable after its certificates expire.

Enterprise

Adds the B-LTA renewal loop, sealing the validation data under a fresh document timestamp and re-stamping it before the protection weakens.

  • Zaman Damgası Otoritesi (TSA) — imzalı zaman damgası belirteçleri veren bağımsız bir hizmet. Saatine, tam olarak sizinki olmadığı için güvenirsiniz.
  • Zaman damgası belirteci — bir TSA’nın döndürdüğü, verinizin bir özetini bir zaman değerine bağlayan küçük imzalı nesne (Spec: RFC 3161, §2.1).
  • Özet (mesaj izi) — verinin kısa, tek yönlü bir parmak izi. TSA bunu imzalar, veriyi asla değil; böylece içeriğiniz gizli kalır.
  • Nonce — istekle birlikte gönderilen ve yanıtta değiştirilmeden geri yansıtılan yeni rastgele bir sayı; belirtecin o belirli isteğe karşılık geldiğini ve yeniden oynatılmış eski bir yanıt olmadığını gösterir (kimin istediğini değil, tazeliği tasdik eder).
  • Üst sınır — bir zaman damgasının ortaya koyduğu şey: veri, belirtilen andan daha geç olmamak üzere vardı. Asla kesin bir oluşturma anı değil.
  • eIDAS-nitelikli zaman damgası — denetlenen bir AB sağlayıcısından gelen, tarih doğruluğu ve veri bütünlüğü üzerine yasal bir karine taşıyan bir zaman damgası.
  • Belge zaman damgası — tüm bir PDF dosyası üzerine bir zaman damgası; uzun vadeli doğrulama kanıtını çıpalamak ve yenilemek için kullanılır (Spec: ISO 32000-2, §12.8.5).