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ü:

Confidentiality
Integrity
Availability

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ı:

Hash
Digest
Checksum
Message 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 : SHA256
Hash :
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 OK
sunum.pptx OK
foto.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.csv
Compare-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 Bellek
veya
Harici Disk
veya
Write Once Media
veya
Bulut

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.

  1. İlk gün tüm dosyaların SHA-256 özetlerini alıp hashes.txt dosyasına kaydediyorsunuz.

  2. hashes.txt dosyasını çevrimdışı bir USB belleğe kopyalıyorsunuz.

  3. Bir ay sonra sisteminizde şüpheli etkinlik fark ediyorsunuz.

  4. 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)

  1. MD5 ve SHA-1 yerine SHA-256 veya SHA-512 kullanın.

  2. Hash kayıtlarını izlenen sistemden ayrı ve güvenli bir ortamda saklayın.

  3. Hash dosyalarını mümkünse dijital olarak imzalayın.

  4. Kritik sistemlerde düzenli otomatik bütünlük kontrolleri planlayın.

  5. Hash farklılıklarını sistem günlükleri (loglar) ve güvenlik olaylarıyla birlikte değerlendirin.

  6. Dosya bütünlüğü izlemesini yedekleme stratejisinin yerine değil, tamamlayıcısı olarak kullanın.

  7. 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

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Etap 23 Yazıcı Kurulumu