Türkiye'de zaman zaman uygulanan platform erişim kısıtlamaları, kullanıcıları APK dosyalarını Google Play dışında üçüncü taraf sitelerden veya sosyal medya bağlantılarından indirmeye yöneltiyor. Bu dağıtım şekli, e-Devlet veya banka uygulaması taklidi yapan sahte APK'ların yayılması için elverişli bir zemin oluşturuyor. İndirilen dosyanın checksum'ını resmi kaynağın yayınladığı değerle karşılaştırmak, kuruluma geçmeden önce bu tür bir değişikliği tespit etmenin basit bir yolu.
Bir sağlama toplamı bozulmayı veya değişikliği nasıl tespit eder
Hash fonksiyonlarının çığ etkisi nedeniyle, ister aktarım sırasında oluşan bir bozulma ister kasıtlı bir değişiklik olsun, tek bir bayt bile dosyanın hesaplanan hash'ini tamamen değiştirir. Bu yüzden beklenen ve hesaplanan sağlama toplamı arasındaki herhangi bir tutarsızlık, dosyanın orijinalinden bayt bayt farklı olduğu anlamına açıkça gelir.
Bir sağlama toplamının garanti etmediği şey
Eşleşen hash'ler yalnızca dosyanın, yayınlanan hash'in hesaplandığı dosyayla aynı olduğunu doğrular — bu, orijinalin güvenli olduğu anlamına gelmez. Sahte bir sitenin kendisi hem zararlı APK'yı hem de ona "uyan" sağlama toplamını yayınlıyorsa, doğrulama hiçbir şey tespit etmez — bu yüzden referans hash her zaman bankanın veya kurumun resmi sitesinden alınmalı, şüpheli dosyanın indirildiği kaynaktan değil.
Sağlama toplamına karşı dijital imza
Sağlama toplamının aksine, dijital bir imza özel bir anahtarla oluşturulur ve yalnızca ilgili genel anahtarla doğrulanabilir. Play Store bu imzayı kurulum sırasında otomatik olarak doğrular; bir APK elle (sideload) yüklendiğinde bu koruma devre dışı kalır ve manuel sağlama toplamı kontrolü geriye kalan tek savunma olur.
Bu neden gereklidir
- Resmi mağaza dışından indirilen bir banka veya e-Devlet APK'sının değiştirilmediğini doğrulamak.
- İki büyük dosyayı bayt bayt karşılaştırmadan hızlıca kıyaslamak.
- Bir dosyanın yedek kopyasının orijinaliyle aynı olduğunu doğrulamak.
Bazen SHA-256 yerine neden CRC32 kullanılır
CRC32, kriptografik hash fonksiyonlarından çok daha hızlıdır, ancak kasıtlı olarak sahtesini üretmek kolaydır — bu, aktarım sırasında oluşan rastgele bir bozulmayı tespit etmek için sorun değildir, ancak bir dosyayı fark ettirmeden değiştirmek isteyen bir saldırgana karşı koruma sağlamak için uygun değildir. Bu yüzden CRC32, güvenliğin değil hata denetiminin önemli olduğu arşivleyicilerde ve ağ protokollerinde hâlâ karşımıza çıkar.