Belgenin Değişmediğini Nasıl Kanıtlarsınız
Herkes imzaladıktan altı ay sonra bir anlaşmazlık ortaya çıkıyor. Diğer taraf, anlaşmanın kendi kopyasını sunuyor ve 7. madde sizin hatırladığınız şeyi söylemiyor. Her iki dosyaya da agreement-final.pdf adı verilmiş. İkisi de makul görünüyor. İkinizden hiçbiri zorla yalan söylüyor değil — dosyalar yeniden kaydediliyor, versiyonlar karışıyor. O zaman kayıt altına alınmamış bir şey olmadan, "anlaştığımız belge budur" sadece iki kişinin anısıdır ve anılar tartışmalarda kazanamaz.
Hash Nedir
Kriptografik bir hash, verinin parmak izidir. Bir dosyayı bir hash fonksiyonuna — mantıklı modern varsayılan SHA-256'dır — verdiğinizde, girdi tek sayfa olsun ya da on bin sayfa, sabit uzunlukta bir değer döndürür: 64 onaltılık karakter.
Bunu kullanışlı kılan üç özellik vardır:
- Deterministiktir. Aynı baytlar her zaman aynı hash'i üretir. Herkes, herhangi bir yerde, herhangi bir makinede aynı değeri alır.
- Herhangi bir düzenlemede tamamen değişir. Tek bir karakteri — bir virgül, tek bir bit — değiştirin ve çıktı tamamen farklı olur. Biraz değil. Tanınmayacak kadar farklı. Buna çığ etkisi denir ve hash'lerin "yakın" olamaymasının nedeni budur.
- Tersine çalışmaz. Hash'ten belgeyi yeniden oluşturamazsınız ve aynı hash değerini üreten farklı, anlamlı bir belge tasarlayamazsınız.
Bu nedenle parmak izi kamuya açık şekilde paylaşılmak için güvenlidir. Gizli bir sözleşmenin hash'ini yayınlamak, içeriği hakkında hiçbir şey açıklamaz — ancak sözleşmeyi sabitler.
Bir hash nedir? değil kanıtlamak
Fikrin fazla abartıldığı yer burası, bu yüzden kesin olmakta fayda var. Eşleşen bir hash dosyanın değişmediğini söyler. Şunları söylemez:
- Kim tarafından oluşturulduğunu. Bir hash kimlik taşımaz. Herkes her şeyi hash'leyebilir.
- Ne zaman var olduğunu. Değer tek başına zaman hakkında hiçbir şey kanıtlamaz. Bugün hesapladığınız bir hash, bugünün dosyasının bugünün dosyası olduğu anlamına gelir — bu bir özdeşliktir.
- İçeriğin doğru, yasal veya üzerinde anlaşılmış olduğunu. Bir sahtekârlığın hash'i, mükemmel geçerli bir sahtekârlık hash'idir.
Hashler size, bütünlük verir, özgünlük değil. İkisini karıştırmak bu alandaki en yaygın hatadır.
Herkesin Yanlış Anladığı Kısım
Şimdi hesaplanan bir hash geçmiş hakkında hiçbir şey kanıtlamaz. Bugün bir dosyanın hash'ini hesaplar ve değerin bugünkü dosyayla eşleştiğini görürseniz hiçbir şey öğrenmiş olmazsınız — elbette eşleşir; aynı dosyadır.
Bir hash değeri ancak anlaşmazlık ortaya çıkmadan önce güvenilir bir yere kaydedilmişse kanıta dönüşür. Güvenlik matematikte değil, zaman çizelgesindedir. Hash'in yanıtladığı soru şudur: “Bu, o zaman kaydettiğimiz değerle eşleşiyor mu?” — bunun için de birinin o değeri o zaman kaydetmiş olması gerekir.
Bu da iş akışının, algoritmanın önemli olduğu anlamına gelir.
Gerçekten Değerli Bir İş Akışı
- Dosyayı nihai hale geldiği anda hash'leyin. İmzaladıktan hemen sonra, dosyalanmadan önce. Belge Hash'i kullanın.
- Değeri sessizce değiştirilemeyecek bir yere kaydedin. Belgeyi ileten e-postaya koyun. Tutanaklara okutun. Karşı tarafa göndererek onların da elinde tutmasını sağlayın. Amaç, yalnızca sizin kontrolünüzde olmayan bir tarihle birlikte kayda sahip olmaktır.
- Dosyanın tam halini arşivleyin. Yeniden dışa aktarma değildir. Tekrar basılmış "aynı belge" değil. Hash'lediğiniz tam baytlar.
- Daha sonra yeniden hesaplayın ve karşılaştırın. Aynı değer: bayt düzeyinde özdeş, tartışmaya gerek yok. Farklı değer: dosya değişmiş demektir, bu illa kötü niyetli olmak zorunda değil — aşağıya bakın.
Neden "hiçbir şey değişmediğinde" hash'iniz değişir
Bu sürekli insanları yanıltıyor ve bu, hash'in bir hatası değil. Bir hash, görünümü değil, baytları kapsar. İki PDF piksel düzeyinde aynı görünebilir ancak farklı hash değerlerine sahip olabilir:
- Tekrar kaydettiniz. Bir PDF'i açıp tekrar dışa aktarmak dosyayı yeniden yazar. Yeni zaman damgaları, muhtemelen yeni bir
Producer, farklı dahili yapı. Okunur açıdan özdeş, baytlar açısından farklı. - Buna bir şey eklendi. PDF'ler artımlı güncellemeleri destekler — bir yorum eklemek veya bir alanı doldurmak, veriyi yeniden yazmak yerine ekleyebilir. Belge büyüdü; hash değişti.
- Bir araç geçici olarak dokundu. Bazı e-posta sistemleri ve belge yöneticileri ekleri yeniden yazar. Bu değişiklik tamamen görünmez ve tamamen gerçek olabilir.
Yani bir uyuşmazlık olması, "bunlar aynı dosya değil" anlamına gelir, "biriyle oynanmış" anlamına gelmez. Doğru tepki suçlama yapmak değil, araştırma yapmaktır. Ve pratik ders nettir: hash'lediğiniz dosyayı arşivleyin ve hiçbir şeyin onu yeniden kaydetmesine izin vermeyin.
Yerel Bir Kayıt Tutmak
Eğer rutin olarak belgelerin sapmadığını kanıtlamanız gerekiyorsa, her birini elle hash'lemek zahmetli olur. Yerel İmza Kaydı, kendi cihazınızda hash'lediğiniz belgelerin bir kaydını tutar, böylece herhangi bir üçüncü tarafla belge kaydetmeden daha sonra kontrol edebileceğiniz kişisel bir günlük elde edersiniz.
Bunun ne olduğunu ve ne olmadığını netleştirmek gerekir. Bu, özel, kendi kendine yönetilen bir kayıttır: kendi güvenliğiniz için, dahili süreçler için, yanlışlıkla oluşan sapmaları yakalamak için güçlüdür. Kayıt sizin olsa da — siz kontrol edersiniz, ki bu tam olarak şüphe eden kişinin masanın diğer tarafındaki kişi olduğu durumda sınırlılıktır.
Bir Hash'ten Daha Fazlasına İhtiyaç Duyduğunuzda
Eğer bir üçüncü taraf ikna edilmek zorundaysa, bütünlük tek başına yeterli olmayacaktır. Belgeyi bir kimlikle ve ideal olarak da bir zamanla bağlayan bir şeye ihtiyacınız var; bu bağlama ne taraflardan hangisi kontrol edebilir:
- Dijital bir imza, hash'e kimliği ekler: değer özel bir anahtar ile imzalanır, böylece eşleşen sertifikaya sahip herhangi biri hem dosyanın değişmediğini hem de kimin imzaladığını doğrulayabilir. Bu yüzden imzalar güven zinciri gerektirir, hash'ler ise gerekmez — zor kısım hangi anahtara ait olduğunu kanıtlamaktır.
- Güvenilir bir zaman damgası, hash'in belirli bir anda var olduğuna dair bir otorite beyanı ekler ve çıplak bir hash'in yapamayacağı "ne zaman" sorusunu yanıtlar.
- Değiştirilmiş bir hash, iyi bir orta yoldur: her iki taraf da imza gününün değerini elinde tutarsa, hiçbiri tek taraflı olarak tarihi yeniden yazamaz. Altyapıya gerek yok, faydanın çoğu bu şekilde sağlanır.
Dahili kayıtlar, kişisel arşivler ve sıradan “Bu gönderdiğim dosya mı?” soruları için, o anda kaydettiğiniz bir hash gerçekten yeterlidir. Hukuki süreçler için değil ve kimse aksini önermemelidir.
Eski algoritmalar hakkında bir not
Mevcut bir süreçte MD5 veya SHA-1 ile karşılaşırsanız, onlara güvenlikten ziyade kontrol toplamı (checksum) olarak yaklaşın. Her ikisi de pratik çarpışma saldırılarına sahiptir: aynı değere sahip iki farklı dosya oluşturmak mümkündür ve bu da tam olarak güvendiğiniz özelliktir. Rastgele bozulmayı tespit etmek için uygundurlar, ancak herhangi bir düşmanca amaç için uygun değildirler. SHA-256 iyi bir nedenden dolayı varsayılan seçenektir.
Bunu neden yerel olarak hesaplayalım?
Bir belgeyi bir web sitesine yükleyerek parmak izini öğrenmek, o belgenin bir kopyasını üçüncü bir tarafa verir — ki bu hesaplamayı kendi cihazınız anında yapabilir. Dosya, belirlenmeye değer kadar önemliyse, verilmemeye de yeterince önemlidir. CyvoDocOps'ta desteklenen bu tür işlemler yerel olarak tarayıcınızda çalışır ve belge bir sunucuya yüklenmez.
Sıkça Sorulan Sorular
Basit bir dille dosya hash'i nedir?
Bir dosyanın içeriğinden türetilen kısa bir parmak izidir. Aynı dosya, aynı parmak izi; herhangi bir şey değiştirilirse parmak izi tamamen değişir.
İki farklı belgenin aynı hash'e sahip olması mümkün mü?
Teoride evet, pratikte SHA-256 ile hayır — kimse böyle bir çift oluşturamaz. MD5 veya SHA-1 ile ise evet ve bu yüzden önemli olduğu yerlerde kullanılmamalıdır.
Bir hash, belgenin kim tarafından yazıldığını kanıtlar mı?
Hayır. Dosyanın değişmediğini kanıtlar. Kimlik için dijital bir imza gerekir; bu da bir hash'i bilinen bir kişiye veya kuruluşa ait bir anahtara bağlar.
Hash'im değişti ama belge aynı görünüyor. Değiştirilmiş olabilir mi?
Zorunlu değil. Yeniden kaydetmek, bir form alanını doldurmak veya sistemin eki yeniden yazması tüm baytları görünümü değiştirmeden değiştirir. Bu, dosyanın farklı olduğu anlamına gelir — kötü niyet kanıtı değil, araştırılmaya değerdir.
Dosya hash'lenmek için yükleniyor mu?
Hayır. Hash, tarayıcınızda yerel olarak hesaplanır ve belge bir sunucuya gönderilmez.