1. Aynı dosya adı, aynı içerik demek değildir
İndirilen kurulum dosyasının adı ve boyutu açıklama sayfasındakilerle aynıysa doğru indirildiğini düşünmek kolaydır. Ancak ad değiştirilebilir; aynı boyuttaki dosyaların içerikleri de farklı olabilir. Öte yandan bir fotoğrafı başka bir adla kopyalamak, dosyanın içindeki baytları mutlaka değiştirmez. Dosya içeriğini belirli bir hesaplamadan geçirip kısa bir değerle gösteren özet, karşılaştırmaya yardımcı olur. Sorulması gereken, adın makul görünüp görünmediği değil, aldığınız baytların güvenilir bir referansla uyuşup uyuşmadığıdır. Bir yedek dosyayı başka bir depolama aygıtına taşıdığınızda da aynı soru geçerlidir.
SHA-256, girdiden 256 bitlik bir özet üreten algoritmadır. Genellikle 64 onaltılık basamakla gösterilir; çünkü her onaltılık basamak 4 biti temsil eder. Dosya büyüdüğünde sonuç uzunluğu dosya boyutuyla orantılı olarak artmaz. Aynı baytlara aynı algoritma uygulandığında aynı sonuç alınır. Ancak sonlu uzunluktaki değerlere bütün girdiler sığdırıldığı için farklı girdilerin aynı değeri verdiği çakışmalar ilke olarak vardır. Pratik karşılaştırma aracı olmak, matematiksel olarak her dosyaya benzersiz bir ad vermekle aynı şey değildir. RFC 6234, SHA-256 dahil özet hesaplamalarını ve test malzemelerini sunar.
2. Özet, şifreleme veya dosyanın küçültülmüş kopyası değildir
Bir özet değerini bilmek, özgün belgeyi veya fotoğrafı geri getiren bir şifre çözme düğmesi sağlamaz. Şifreleme uygun anahtarla özgün veriyi geri almayı amaçlarken kriptografik özet bunun için tasarlanmış bir saklama biçimi değildir. Ancak yalnızca özeti yayımlamak, her girdinin gizli kalacağı anlamına da gelmez. Olası girdiler azsa her birinin özeti hesaplanıp karşılaştırılabilir. Bu nedenle dosya kontrolü için SHA-256 açıklamasından, parolaları yalnızca doğrudan özetleyerek saklamanın yeterli olduğu sonucu çıkarılmamalıdır. Bütünlük kontrolü, gizlilik ve parola saklama farklı koşullar gerektirir.
Dosyanın tamamı hesaplandığında yalnızca ekranda görünen karakterler karşılaştırılmaz. Aynı cümle gibi görünse de satır sonları, karakter kodlaması veya belgenin iç metaverileri farklıysa baytlar değişebilir. Arşivden çıkarılan dosya ile arşivin kendisi farklı karşılaştırma nesneleridir. Karakterleri normalleştirdikten veya satır sonlarını değiştirdikten sonra hesaplanan özet, dönüştürülmüş veriye aittir. Dağıtıcı özgün arşivin değerini yayımladıysa önce indirilen arşivin kendisini karşılaştırın. Bu ayrım, önceki Unicode ve UTF-8 yazısında ele alınan görünüm ile bayt farkının dosya doğrulamaya uygulanmasıdır.
3. İndirilen dosyayı aynı algoritma ve referansla karşılaştırın
Doğrulamadan önce geliştiricinin resmî dağıtım açıklamasında sürümü, işletim sistemini, dosya adını ve özet algoritmasını birlikte kontrol edin. Başka işletim sistemi veya sürüm için olan kurulum dosyasının değeri referans olamaz. PowerShell'de Get-FileHash -LiteralPath '.\download.zip' -Algorithm SHA256 komutu yerel dosyayı okuyarak hesaplama yapar. Bu, belirtilen yoldaki içeriği çalıştıran bir komut değildir. Microsoft'un resmî belgesi, değerin dosya içeriğinden hesaplandığını ve yalnızca ad değiştirmenin değeri değiştirmediğini açıklar. Dosya adını ve yolu gerçekten indirdiğiniz dosyaya göre düzenleyin; hesaplama sırasında dosyayı değiştirmeyin.
Çıktıdaki Hash alanının 64 basamağının tamamını dağıtıcının yayımladığı SHA-256 değeriyle karşılaştırın. Yalnızca baştaki veya sondaki birkaç basamağın uyuşması yeterli değildir. Onaltılık gösterimde büyük ve küçük Latin harfleri aynı sayıyı belirtir; ancak fazladan karakter veya eksik basamak varsa önce kopyalanan değeri kontrol edin. Uyuşma, alınan baytların güvenilen referansla tutarlılığını destekler. Belgedeki gerçekleri, program kalitesini veya kötü amaçlı davranışı incelemiş olmaz. Referans dosyanın kendisi sorunluysa aynı kopya da aynı özeti verir. Hesaplamanın başarıyla bitmesi ile dosyanın kullanılabilirliği ayrı değerlendirilmelidir.
4. Uyuşmazlık araştırma işaretidir, saldırının kesin kanıtı değildir
Dün indirilen dağıtım dosyasını bugünkü açıklamadaki değerle karşılaştırdığınızda farklı çıktığını varsayın. Bu, gerçek olay kaydı değil açıklayıcı bir örnektir. Önce açıklamanın aynı sürüm için olup olmadığını, başka bir cihaza ait dosya seçilip seçilmediğini ve hesaplamanın indirme tamamlanmadan yapılıp yapılmadığını kontrol edin. Arşiv yerine çıkarılmış dosya hesaplanmış veya bir düzenleyici belgeyi yeniden kaydetmiş olabilir. Karşılaştırma nesnesinin değişmesi ile aktarım veya saklama sırasında içeriğin değişmesini ayırın. Farklı değer tek başına kimin, ne zaman, neyi değiştirdiğini göstermez.
Özeti uyuşmayan kurulum dosyasını denemek için hemen çalıştırmayın. Resmî dağıtım açıklamasını ve referansı yeniden kontrol edip yeni indirilen dosyayı karşılaştırın. Fark sürerse dağıtıcının düzeltme duyurusunu veya destek kanalını inceleyip sonucu kaydedin. Kayıtta kontrol zamanı, kaynak adresi, dosya sürümü, algoritma ve hesaplanan değer bulunsun. Tekrarlanan hesaplamaların aynı çıkması, mevcut yerel dosyanın aynı yöntemle okunduğuna işaret eder; yayımlanan değerdeki hatayı veya dağıtım yolundaki sorunu çözmez. Referans kaydını beklenen değerle değiştirmek, sonraki değişiklikleri değerlendirecek dayanağı ortadan kaldırır.
5. Referansa güvenmenin dayanağı ve dijital imzanın rolü
Saldırgan hem dosyayı hem yanında sunulan özet değerini değiştirebiliyorsa değiştirdiği dosyanın özetini hesaplayıp yeni referans olarak yazabilir. NIST SP 800-175B, anahtar veya imza olmadan yalnızca özet kullanmanın bu sınırını açıklar. Değeri resmî adresteki HTTPS sayfasından almak, kaynağı ve aktarım yolunu kontrol etmeye yardımcıdır; dağıtım sunucusunun ele geçirilmesini ortadan kaldıran bir garanti değildir. Önemli olan özet dizisinin uzun görünmesi değil, referansın nereden ve hangi güven işlemiyle alındığıdır. Aynı ekrandan kopyalanan iki değerin uyuşması, geliştiricinin kimliğini tek başına doğrulamaz.
Dijital imza, güvenilir biçimde edinilmiş bir açık anahtar gibi araçlarla imza ile veri arasındaki ilişkinin doğrulanmasını sağlar. Dağıtıcının imza kontrol süreci varsa anahtar sahibini ve parmak izini doğrulama yöntemi dahil resmî açıklamayı izleyin. Kaynağı belirsiz dosyanın yanında ilk kez görülen açık anahtara doğrudan güvenmek, güvenin başlangıç sorununu çözmez. Ortak gizli anahtar kullanan HMAC de sıradan özetten farklı bir kimlik doğrulama aracıdır; her indirmeye gelişigüzel eklenerek sorunu çözen bir özellik değildir. Geçerli imza da programın kusursuz veya belgenin doğru olduğunu kanıtlamaz. Bayt uyuşması, kaynağın doğrulanması ve içerik değerlendirmesi ilişkilidir, fakat her biri kendi dayanağını gerektirir.
6. Yedekleme ve iş birliğinde karşılaştırmanın kapsamını da kaydedin
Kişisel fotoğraf yedeklerinde özgün dosyanın SHA-256 değerini saklayıp kopyayla karşılaştırmak, taşıma sırasında değişiklik olup olmadığını anlamaya yardımcı olur. Referans listesini de özgünlerle birlikte kaybolmayacak veya üzerine yazılmayacak biçimde saklayın. Fotoğraf yönetim programı döndürme bilgisini veya çekim metaverilerini yeniden yazarsa görüntü benzer kalsa bile dosya özeti değişebilir. Bu yüzden amacın bayt düzeyinde koruma mı, düzenlenmiş fotoğrafın anlam bakımından aynı kalması mı olduğunu önce ayırın. Klasörün tamamını kontrol etmek için tek dosya özeti yetmez; dahil edilecek dosya listesi, göreli yollar ve her dosyanın değeri birlikte yönetilmelidir.
Ortak belge incelemelerinde de özet, incelenen sürümü sabitleyen bir işaret olabilir. Fakat özetin uyuşması, birinin metnin tamamını okuduğunu veya çeviriyi karşılaştırdığını gösteren kanıtın yerini tutmaz. Önce neyin, ne zaman ve hangi yöntemle incelendiği kaydedilmeli, sonra bu kayıt ilgili dosyanın değeriyle bağlanmalıdır. Yazının görseli bayt karşılaştırmasını, referansın kaynağını ve doğrulama kapsamını düzenleyen özgün açıklayıcı şemadır; gerçek ölçüm sonucu veya sertifika değildir. Dosya kontrolünde nesneyi ve algoritmayı, referansın kaynağını ve sonuçtan çıkarılabilecek sınırları sırayla kaydedin. Böylece uyuşmayı veya uyuşmazlığı abartmadan aynı sürecin başkası tarafından tekrarlanması mümkün olur.