Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
Şifreleme, veriyi doğru anahtara sahip olan kişinin tekrar okuyabileceği biçimde dönüştürür; hash ise veriden sabit uzunlukta bir özet üretir ve normal kullanımda bu özetten özgün veriye geri dönülmez. Bu nedenle gizli mesajı saklamak veya iletmek için şifreleme, parolayı doğrulamak ve verinin değişmediğini kontrol etmek için hash kullanılır.

Temel fark nasıl çalışır?​


Şifrelemede düz metin, bir algoritma ve anahtar kullanılarak şifreli metne çevrilir. Alıcı aynı anahtarı veya eşleşen özel anahtarı kullanarak veriyi çözer. Anahtar kaybolursa veri erişilemez hâle gelebilir; anahtar ele geçirilirse şifrelenmiş veri çözülebilir.

Hash işleminde ise veri bir özet değerine dönüştürülür. Aynı girdi, aynı koşullarda aynı hash değerini üretir; girdideki küçük bir değişiklik genellikle tamamen farklı bir sonuç verir. Hash tek başına bir parola saklama yöntemi değildir: hızlı hash fonksiyonları, çok sayıda tahminin kısa sürede denenmesine elverişli olabilir. Parolalar için salt kullanan, yavaşlatılmış ve parola saklamaya uygun algoritmalar tercih edilmelidir.

Hash geri döndürülemez olarak anlatılsa da bu, tahmin edilemez anlamına gelmez. Örneğin kısa veya yaygın bir parola tahmin edilip hashlenerek kayıtlı değerle karşılaştırılabilir. Bu yüzden güçlü parola, benzersiz salt ve uygun parola-hash algoritması birlikte önemlidir.

Somut bir örnek​


Bir kullanıcının parolasını veritabanında sakladığınızı varsayalım. Uygulama parolayı şifreleyip anahtarı sunucuda tutarsa, anahtara erişen biri parolaları çözebilir. Daha uygun yaklaşım, parolayı parola saklamaya uygun bir algoritmayla hashleyip sonucu saklamaktır.

Kullanıcı giriş yaptığında uygulama şu mantığı izler:

  1. Yerleşik parola doğrulama işlevine girilen parolayı ve saklanmış hash kaydını verir; işlev kayıttaki salt ve maliyet parametrelerini kullanır.
  2. Doğrulama işlevinin sonucunu değerlendirir; her girişte yeni rastgele salt üretip iki metni doğrudan karşılaştırmaz.
  3. Sonuç eşleşirse girişe izin verir; eşleşmiyorsa parolayı reddeder.

Uygulama parolayı geri çözmeye çalışmaz. Kullanıcı parolasını unutursa mevcut parolayı göstermemeli; yeni bir parola belirlemesini sağlayan parola sıfırlama akışı kullanılmalıdır.

Başka bir örnekte, özel bir raporu yalnızca yetkili bir servisin okuyabilmesi gerekiyorsa hash yeterli değildir. Rapor şifrelenmeli ve çözme anahtarı erişim yetkileriyle korunmalıdır. Dosya indirme sırasında dosyanın değişip değişmediğini kontrol etmek için ayrıca hash kullanılabilir.

Hangi durumda hangisi kullanılmalı?​


Aşağıdaki ayrım, tasarım kararını hızlıca vermeye yardımcı olur:

İhtiyaçUygun yöntemNeden
Veriyi daha sonra tekrar okumakŞifrelemeYetkili taraf anahtarla özgün veriye ulaşabilir
Parola doğrulamakParola saklamaya uygun hashUygulamanın parolayı geri çözmesine gerek yoktur
Dosyanın değişmediğini kontrol etmekHashBeklenen özetle karşılaştırma yapılabilir
Yetkili göndereni doğrulamakHMAC veya dijital imzaYalnızca sıradan hash, gönderenin kimliğini kanıtlamaz

Buradaki son satır önemli bir ayrımdır. Bir dosyanın hash değerini dosyayla aynı kanaldan almak, saldırgan dosyayı değiştirdiğinde hash değerini de değiştirebildiği için tek başına güvenilir doğrulama sağlamayabilir. Bütünlük ve kimlik doğrulama ihtiyacına göre gizli anahtarlı HMAC veya uygun bir dijital imza mekanizması gerekir.

Uygulanabilir karar adımları​


  1. Verinin daha sonra okunması gerekip gerekmediğini belirleyin. Gerekiyorsa hash değil, uygun anahtar yönetimiyle şifreleme kullanın.
  2. Veri parola ise geri çözülebilir şifreleme yerine salt destekli, parola saklamaya uygun bir hash çözümü seçin.
  3. Yalnızca değişiklik kontrolü yapacaksanız, güvenlik gereksinimine uygun kriptografik hash kullanın; eski veya zayıf algoritmaları yeni tasarımlarda seçmeyin.
  4. Saldırganın yeni bir özet üretmesini de engellemeniz gerekiyorsa sıradan hash yerine HMAC ya da dijital imza gerekip gerekmediğini değerlendirin.
  5. Anahtarları uygulama koduna, veritabanına veya herkese açık yapılandırmaya gömmeyin; anahtar erişimini veriden ayrı ve yetkili bir yönetim süreciyle sınırlandırın.
  6. Mevcut sistemde parolalar geri çözülebiliyor veya düz metin tutuluyorsa, kullanıcıları güvenli parola sıfırlama akışıyla uygun parola hash yöntemine taşıyın.

Sık yapılan hatalar​


“Hash şifrelemedir” demek: Hash, gizli veriyi sonradan okuma amacı taşımaz. Bir hash değerinden özgün veriyi elde etmeye çalışmak yerine aday girdiler karşılaştırılır.

Parolaları yalnızca hızlı bir hash ile saklamak: Bu yaklaşım tahmin saldırılarına karşı yetersiz olabilir. Salt kullanımı ve parola için tasarlanmış yavaşlatma mekanizması gerekir.

Base64 veya benzeri kodlamayı şifreleme sanmak: Kodlama, veriyi gizlemez; uygun araçla kolayca geri çevrilebilir.

Hash ile gizlilik beklemek: Hash, verinin içeriğini saklamak için değil, karşılaştırma veya bütünlük kontrolü için kullanılır. Gizlilik gerekiyorsa şifreleme uygulanmalıdır.

Sık sorulan sorular​


Şifrelenmiş verinin hash’ini almak gerekir mi?​

Sıradan bir hash eklemek, saldırganın değiştirilmiş veriye yeni hash üretmesini engellemez. Yeni tasarımlarda uygun kimlik doğrulamalı şifreleme kullanın; ayrıca gereken HMAC veya imza işlemini olgun bir kriptografi kütüphanesine bırakın. Kendi şifreleme ve özet birleştirme düzeninizi tasarlamayın.

Salt nedir ve neden parolalarda kullanılır?​

Salt, her parola kaydına özel eklenen rastgele değerdir. Aynı parolayı kullanan hesapların aynı çıktıyı üretmesini ve önceden hazırlanmış hash listelerinin doğrudan işe yaramasını zorlaştırır.

Hash değerini kullanıcıya göstermek güvenli midir?​

Her durumda güvenli kabul edilmemelidir. Hash, özgün veriyi doğrudan göstermese de tahmin edilebilir girdiler için karşılaştırma yapılmasına olanak verebilir; özellikle parola hash’leri gizli tutulmalıdır.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic