Hashing ile Veri Bütünlüğü (Integrity) Kontrolü
Windows ve Linux'ta Dosyalarınızın Kötü Niyetli Olarak Değiştirilip Değiştirilmediğini Nasıl Anlarsınız?
Giriş
Bilgisayarınızda "Nuri" isimli bir klasörünüz olduğunu düşünelim.
D:\Nuri
veya Linux'ta
/home/nuri
Bu klasör içerisinde;
Word belgeleri
PDF dosyaları
Fotoğraflar
Proje dosyaları
Python kodları
Yedekler
Şifreli arşivler
bulunuyor.
Bilgisayarı kapattınız.
Bir hafta sonra tekrar açtınız.
Aklınıza şu soru geldi:
"Ben bu klasörü en son kullandıktan sonra içerideki dosyalardan herhangi biri değiştirilmiş olabilir mi?"
Belki;
Zararlı yazılım
Ransomware
Yetkisiz kullanıcı
İç tehdit
USB ile bulaşan malware
Hacker
dosyalardan birini değiştirmiş olabilir.
Peki bunu nasıl kesin olarak anlayabiliriz?
İşte bunun cevabı:
Hash (Özet Değeri)
ve
Veri Bütünlüğü (Integrity)
CIA Triad'ın "Integrity" Maddesi
Bilgi güvenliğinin temel üçlüsü:
ConfidentialityIntegrityAvailability
Integrity şunu garanti eder:
Veri oluşturulduğu andaki haliyle aynıdır.
Yani
Dosya değişmedi.
Hash Nedir?
Hash;
Bir dosyanın
dijital parmak izidir.
Örneğin
nuri.docx
dosyası için
SHA-256 hesapladığımızda
3AE6B8F3D21C77A1...
gibi 64 karakterlik bir çıktı oluşur.
Bu çıktı:
HashDigestChecksumMessage Digest
isimleriyle de anılır.
Hash Nasıl Çalışır?
Dosya↓Hash Algoritması↓256 bit çıktı
Örneğin
Merhaba
SHA256
185F8DB32271FE25...
Sadece tek harf değiştirin.
MerhabA
Hash tamamen değişir.
F8D3A19CB12E....
Bu özelliğe
Avalanche Effect
denir.
Neden Hash Kullanılır?
Çünkü
Dosyanın içine bakmaya gerek kalmadan
şunu söyleyebiliriz:
Hash aynıysa↓Dosya aynıdır.
Hash Algoritmaları
En yaygın algoritmalar
| Algoritma | Güvenli mi? | Kullanım |
|---|---|---|
| MD5 | ❌ Hayır | Eski sistemler |
| SHA1 | ❌ Hayır | Eski doğrulamalar |
| SHA256 | ✅ Evet | Günümüzde standart |
| SHA384 | ✅ Çok güvenli | Kritik sistemler |
| SHA512 | ✅ Çok güvenli | Büyük sistemler |
| BLAKE2 | ✅ Çok hızlı | Modern uygulamalar |
| SHA3 | ✅ Yeni nesil | NIST standardı |
Örnek
Dosya:
notlar.pdf
SHA256
AA55BC....
Dosyanın içerisine sadece
.
tek nokta ekleyin.
Yeni hash
9F11A77....
Tamamen değişecektir.
Veri Bütünlüğü Nasıl Kontrol Edilir?
Mantık çok basittir.
İlk gün
Hash hesapla↓Kaydet
Bir hafta sonra
Tekrar Hash hesapla↓Karşılaştır
Eğer
Hash aynıysa↓Dosya değişmemiştir.
Windows'ta Hash Alma
PowerShell
Get-FileHash D:\Nuri\Rapor.docx
Çıktı
Algorithm : SHA256Hash :A872CCF11B2...Path :D:\Nuri\Rapor.docx
SHA512
Get-FileHash D:\Nuri\Rapor.docx -Algorithm SHA512
MD5
Get-FileHash D:\Nuri\Rapor.docx -Algorithm MD5
CMD Kullanarak
certutil -hashfile Rapor.docx SHA256
SHA512
certutil -hashfile Rapor.docx SHA512
MD5
certutil -hashfile Rapor.docx MD5
Linux'ta Hash Alma
SHA256
sha256sum dosya.pdf
SHA512
sha512sum dosya.pdf
MD5
md5sum dosya.pdf
SHA1
sha1sum dosya.pdf
Örnek
sha256sum rapor.pdf
çıktı
d2ab61b....rapor.pdf
Klasördeki Tüm Dosyaların Hash'i
Linux
find /home/nuri -type f -exec sha256sum {} \; > hashes.txt
Bu dosyada
Tüm dosyaların hash değeri bulunur.
Windows PowerShell
Get-ChildItem D:\Nuri -Recurse -File |Get-FileHash |Out-File hashes.txt
Daha Sonra Kontrol
Linux
sha256sum -c hashes.txt
Çıktı
rapor.pdf OKsunum.pptx OKfoto.jpg OK
veya
FAILED
PowerShell ile Karşılaştırma
İlk hash
hash_old.txt
Yeni hash
hash_new.txt
Compare-Object
ile karşılaştırılabilir.
PowerShell Örneği
$old = Import-Csv hashes_old.csv$new = Import-Csv hashes_new.csvCompare-Object $old $new -Property Hash,Path
Hash Dosyasını Nerede Saklamalı?
En büyük hata:
Nuri│├── dosyalar├── hashes.txt
Çünkü saldırgan
dosyayı da değiştirir.
Doğrusu
USB BellekveyaHarici DiskveyaWrite Once MediaveyaBulut
Hash Dosyasını İmzalamak
Daha güvenli yöntem
Hash Dosyası↓GPG ile İmzala
veya
Code Signing Certificate
ile imzalamaktır.
Böylece
Hash dosyası da değiştirilemez.
Dijital İmza ile Farkı
Hash
Dosya değişti mi?
cevabını verir.
Dijital imza
Kim değiştirdi?Kim oluşturdu?Gerçekten bu kişiden mi geldi?
sorularını cevaplar.
Hash Nerelerde Kullanılır?
ISO dosyalarının doğrulanması
Linux dağıtımları
Windows ISO dosyaları
Yazılım indirmeleri
Yedek doğrulama
Adli bilişim
Malware analizi
Log doğrulama
SIEM sistemleri
SOC operasyonları
Docker Image doğrulama
Git commit doğrulama (ek mekanizmalarla)
Blockchain teknolojileri
Dijital delil zinciri (Chain of Custody)
Gerçek Hayat Senaryosu
Senaryo:
D:\Nuri
klasörünüzde 8.500 dosya bulunuyor.
İlk gün tüm dosyaların SHA-256 özetlerini alıp
hashes.txtdosyasına kaydediyorsunuz.hashes.txtdosyasını çevrimdışı bir USB belleğe kopyalıyorsunuz.Bir ay sonra sisteminizde şüpheli etkinlik fark ediyorsunuz.
Aynı klasör için yeniden SHA-256 özetleri oluşturup ilk kayıtla karşılaştırıyorsunuz.
Sonuçlar:
Tüm özetler aynıysa: Dosyaların içerikleri değişmemiştir.
Bir veya daha fazla özet farklıysa: İlgili dosyalar üzerinde içerik değişikliği olmuştur. Bu değişiklik meşru bir düzenleme de olabilir, kötü niyetli bir müdahale de olabilir; nedenini anlamak için olay incelemesi yapılmalıdır.
Önemli: Hash farklılığı yalnızca "dosyanın değiştiğini" kanıtlar; değişikliği kimin yaptığı veya neden yaptığı bilgisini vermez.
Kurumsal Ortamlarda Veri Bütünlüğü
Büyük kurumlar yalnızca tek seferlik hash kontrolü yapmak yerine Dosya Bütünlüğü İzleme (File Integrity Monitoring - FIM) çözümleri kullanırlar. Bu sistemler belirlenen dosya ve klasörlerin hash değerlerini düzenli olarak kontrol eder ve beklenmeyen değişikliklerde alarm üretir.
Yaygın çözümler:
Wazuh File Integrity Monitoring
AIDE (Advanced Intrusion Detection Environment)
Tripwire
OSSEC
Microsoft Defender for Endpoint (FIM özellikleri bulunan sürümler)
Bu araçlar, yalnızca dosya içeriğini değil; izinler, sahiplik bilgileri ve kritik özniteliklerdeki değişiklikleri de izleyebilir.
En İyi Uygulamalar (Best Practices)
MD5 ve SHA-1 yerine SHA-256 veya SHA-512 kullanın.
Hash kayıtlarını izlenen sistemden ayrı ve güvenli bir ortamda saklayın.
Hash dosyalarını mümkünse dijital olarak imzalayın.
Kritik sistemlerde düzenli otomatik bütünlük kontrolleri planlayın.
Hash farklılıklarını sistem günlükleri (loglar) ve güvenlik olaylarıyla birlikte değerlendirin.
Dosya bütünlüğü izlemesini yedekleme stratejisinin yerine değil, tamamlayıcısı olarak kullanın.
Kritik sunucularda FIM çözümlerini SIEM platformlarıyla entegre ederek gerçek zamanlı uyarılar alın.
Sonuç
Hashing, bilgi güvenliğinin Veri Bütünlüğü (Integrity) ilkesinin temel taşlarından biridir. Bir dosyanın veya klasördeki binlerce dosyanın içeriklerinin değişip değişmediğini hızlı ve güvenilir şekilde doğrulamanızı sağlar. Windows'ta PowerShell ve certutil, Linux'ta ise sha256sum ve benzeri araçlarla bu işlem kolayca gerçekleştirilebilir.
Ancak unutulmamalıdır ki hash tek başına bir saldırıyı engellemez; yalnızca değişikliği tespit eder. Bu nedenle etkin bir güvenlik yaklaşımı için hashing; dijital imzalar, güvenli yedekleme, erişim kontrolü, olay günlükleri ve dosya bütünlüğü izleme çözümleriyle birlikte kullanılmalıdır. Bu katmanlı yaklaşım, hem bireysel kullanıcılar hem de kurumsal sistemler için veri bütünlüğünü korumanın en etkili yöntemlerinden biridir.
"Nuri" klasöründeki o dosyaların en son bıraktığınız halinden tek bir bayt bile sapmadığını kanıtlamak, siber güvenliğin en temel ayaklarından biri olan Veri Bütünlüğünün (Data Integrity) ta kendisidir.
İster kendi kişisel arşivinizi koruyor olun, ister öğrencilere veya blog okurlarına veri güvenliğini anlatıyor olun; bu süreci kavramak kritik önem taşır. İşte bu süreci adım adım anlatan, hem teorik hem de pratik (Windows ve Linux) :
Veri Bütünlüğünü Sağlamak: Hashing Nedir ve Dosyalarımızın Değişmediğinden Nasıl Emin Oluruz?
Dijital dünyada bir dosyanın (örneğin bir belge, fotoğraf veya yapılandırma betiği) bizim haberimiz olmadan değiştirilip değiştirilmediğini anlamanın en kesin yolu ona matematiksel bir kimlik kazandırmaktır. İşte Hashing tam olarak bu işe yarar.
Hashing (Özetleme) Nedir?
Hashing, herhangi bir boyuttaki dijital veriyi (bir metin satırı ya da gigabaytlarca büyüklükte bir video dosyası olabilir) alıp, belirli bir uzunlukta, karmaşık ve benzersiz bir karakter dizisine (özet değerine) dönüştüren tek yönlü matematiksel bir işlemdir.
Tek Yönlüdür: Elde edilen hash değerine bakarak orijinal dosyayı geri oluşturamazsınız.
Benzersizdir (Çakışma Direnci): Dosyanın içindeki tek bir noktayı (virgülü) bile değiştirseniz, ortaya çıkan hash değeri tamamen değişir.
"Nuri" Klasöründeki Dosyalar İçin Bütünlük Kontrolü Nasıl Yapılır?
Dosyalarınızın güvenliğini sağlamak için MD5 veya SHA-1 gibi eski algoritmalar yerine, günümüzde endüstri standardı kabul edilen SHA-256 algoritmasını kullanacağız.
Senaryomuz şu: Klasörünüzde onemli_proje.zip adında bir dosya var. Bu dosyanın orijinal hash değerini bir kenara not edeceksiniz. Aylar sonra dosyayı tekrar açtığınızda, aynı işlemi tekrarlayıp iki değeri karşılaştıracaksınız. Değerler aynıysa dosya güvendedir; farklıysa dosya bozulmuş veya kötü niyetli bir şekilde değiştirilmiştir.
1. Windows Ortamında (PowerShell ile)
Windows işletim sistemlerinde ekstra bir yazılım kurmaya gerek kalmadan, doğrudan PowerShell kullanarak bu işlemi saniyeler içinde gerçekleştirebilirsiniz.
1.PowerShell'i Başlatın:
Başlat menüsüne sağ tıklayın ve "Windows PowerShell" (veya Terminal) uygulamasını açın.
2.Klasörünüze Gidin:
cd komutunu kullanarak "Nuri" isimli klasörünüzün bulunduğu dizine geçiş yapın. Örneğin:
cd C:\Kullanicilar\Nuri\Belgeler
3.Hash Değerini Hesaplayın:
Şu komutu çalıştırarak dosyanın SHA-256 özetini alın:
Get-FileHash -Algorithm SHA256 onemli_proje.zip
Ekranda dosyanın yolu ile birlikte uzun bir karakter dizisi (örneğin: E3B0C44298FC1C149AFBF4C8996FB924...) göreceksiniz. Bu sizin referans değerinizdir.
2. Linux Ortamında (Pardus / Debian / Ubuntu)
Linux tabanlı sistemlerde terminal araçları bu işler için biçilmiş kaftandır. Açık kaynaklı sistem yönetiminde veya laboratuvar ortamlarında bu komutlar hayat kurtarır.
1.Terminali Açın:
Sisteminizdeki terminal emülatörünü başlatın.
2.İlgili Dizine Geçin:
Yine cd komutu ile hedef klasörünüze gidin:
cd /home/kullanici/Masaustu/Nuri
3.Hash Hesaplama Komutunu Çalıştırın:
SHA-256 değerini üretmek için şu komutu girin:
sha256sum onemli_proje.zip
Çıktı olarak yine benzer uzunlukta bir parmak izi değeri elde edeceksiniz. Gelecekte, dosyada şüpheli bir durum olduğunda aynı komutu tekrar çalıştırıp terminaldeki yeni çıktıyı eski notunuzla karşılaştırmanız yeterlidir.
Önemli İpucu: Eğer klasörün içinde çok sayıda dosya varsa ve hepsini tek tek kontrol etmek zor geliyorsa, Linux'ta sha256sum * > hash_kayit.txt komutuyla tüm dosyaların hash'lerini bir metin belgesine kaydedebilirsiniz. Daha sonra sha256sum -c hash_kayit.txt komutu ile tüm klasörün bütünlüğünü tek seferde otomatik olarak doğrulayabilirsiniz.
Yorumlar