AES-SHA256 gibi şifreleme yöntemlerinde anahtar kullanımı

  • Konuyu başlatan msport
  • Başlangıç Tarihi
  • Mesaj 12
  • Görüntüleme 1.620

msport

Hectopat
Katılım
20 Eylül 2022
Mesajlar
704
Makaleler
1
Çözümler
2
Merhaba. Python öğrenme sürecindeyim ve arada kendimi geliştirmek için bazı küçük programlar yazıyorum. Geçenlerde aklıma şifrelerimi ve önemli bilgilerimi şifrelemek için bir şifreleme programı yazmak istedim. Bunun için internet üzerinde biraz araştırma yapınca güvenli olarak nitelendirilen (AES, SHA-256 vs.) şifreleme algoritmalarının bir anahtar üretip bunun ile karakter kaydırmalar, turlamalar yaparak veriyi şifrelediğini öğrendim. ChatGPT'ye AES şifrelenmiş bir veri verip bunu ondan çözmesini istedim, ChatGPT ise eğer elimde anahtar varsa bunu çözebileceğini söyledi. Bir veriyi şifrelerken kullanılan anahtar tam olarak ne oluyor ve nasıl çalışıyor? Anahtarı bilmezsek veriyi çözemeyeceğimize göre bir verinin şifrelenmiş halinin yanında bu verinin anahtarını da veri tabanında saklamamız mı gerekiyor? Eğer böyle ise bu güvenlik zafiyeti yaratmaz mı? Çünkü veri tabanına sızan birisi anahtarlara da sahip olduğu için şifrelemeyi çözüp anlamlı bir veriye çevirebilir.
 
Evet, o yuzden anahtari DB de saklamazsin. Hatta simetrik sifrelemeden de mumkun oldugunca kacinirsin. Anahtarlari da kisa sure sonra gecersiz olacak sekilde secersin.

Ayrica AES ve SHA farkli seyler, farkli sifreleme yontemleri degil bunlar, yaptiklari sey farkli.

Bu ise girismeden once ufaktan da olsa cryptography ogrenirsen konseptler daha iyi oturur.
 
Evet, o yuzden anahtari dB de saklamazsin. Hatta simetrik sifrelemeden de mumkun oldugunca kacinirsin. Anahtarlari da kisa sure sonra gecersiz olacak sekilde secersin.

Ayrica AES ve SHA farkli seyler, farkli sifreleme yontemleri degil bunlar, yaptiklari şey farkli.

Bu ise girismeden once ufaktan da olsa Cryptography ogrenirsen konseptler daha iyi oturur.

Hocam bahsettiğim gibi bilgili olduğum bir alan değil o yüzden bazı terimleri yanlış kullanmış olabilirim. Aklıma takılan olay şifrelenmiş veriyi tekrardan çözmek istediğimiz zaman anahtar gerekiyor, fakat biz güvenlik sebebiyle bu anahtarı tutmuyoruz. Anahtar olmadan nasıl çözülebiliyor bu şifreli veriler?
 
Hocam bahsettiğim gibi bilgili olduğum bir alan değil o yüzden bazı terimleri yanlış kullanmış olabilirim. Aklıma takılan olay şifrelenmiş veriyi tekrardan çözmek istediğimiz zaman anahtar gerekiyor, fakat biz güvenlik sebebiyle bu anahtarı tutmuyoruz. Anahtar olmadan nasıl çözülebiliyor bu şifreli veriler?
Anahtar dediğin, şifrelemeyi yapan uygulama veya içerdiği yöntem.
Flash belleğini şifreledin ve ardından içindeki yazılım bozuldu. Sonuç: Sen şifreyi doğru da girsen içindeki verilerin çöp oldu.
 
Anahtar dediğin, şifrelemeyi yapan uygulama veya içerdiği yöntem.
Flash belleğini şifreledin ve ardından içindeki yazılım bozuldu. Sonuç: Sen şifreyi doğru da girsen içindeki verilerin çöp oldu.

Hocam kavrayamadığım kısım şu: Biz diyelim ki her şifre için rastgele bir sayı belirliyoruz ve bu sayıya göre o kadar ileri harfe kaydırıp şifreleme yapıyoruz. Bu durumda şifrelenmiş veriyi tekrardan anlamlı hale getirmek için bu kaydırma sayısını bilmemiz gerekmiyor mu? Sonuçta bunu bilmek içinde bunu verinin yanında saklamamız gerekiyor.
 
Hocam kavrayamadığım kısım şu: Biz diyelim ki her şifre için rastgele bir sayı belirliyoruz ve bu sayıya göre o kadar ileri harfe kaydırıp şifreleme yapıyoruz. Bu durumda şifrelenmiş veriyi tekrardan anlamlı hale getirmek için bu kaydırma sayısını bilmemiz gerekmiyor mu? Sonuçta bunu bilmek içinde bunu verinin yanında saklamamız gerekiyor.
O çözme işini o protokoller yapıyor. Sen bir şey yapmıyorsun, saklamıyorsun.
 
Parola tutmaktan bahsediyorsanız hashleyerek tutuyoruz veritabanında. Hash algoritmaları geri döndürülemiyor (md5 gibi güvensizler hariç). Kullanıcıdan aldığın şifreyi aynı algoritma + tuz ile tekradan hashliyoruz ve veritabanındaki hash ile bu hashi karşılaştırarak bir kontrol yapıyoruz. Güncel olarak PBKDF2 veya bcrypt algoritmalarıyla SHA256 veya SHA512 hash algoritmalarının kullanılması öneriliyor. Bunlar şifreleri şifre + tuz ile n sayıda iterasyondan geçirip hesaplıyor. Daha fazla bilgi için okuma önerisi: RFC 2898: PKCS #5: Password-Based Cryptography Specification Version 2.0
 
@delikarga Hocam yani yanlış anlamadıysam aslında uygulamalar ve siteler kullanıcı kayıt olduğunda şifresini şifreleyerek kayıt ediyor daha sonrasında kullanıcı giriş yapmak için şifresini girdiğinde aynı algoritma girilen şifreyi tekrardan şifreleyip Database'deki kayıt sırasında şifrelenmiş olan veri ile karşılaştırıyor eğer eşleşiyorsa erişim izni sağlıyor. Doğru mu anladım hocam?
 
@delikarga Hocam yani yanlış anlamadıysam aslında uygulamalar ve siteler kullanıcı kayıt olduğunda şifresini şifreleyerek kayıt ediyor daha sonrasında kullanıcı giriş yapmak için şifresini girdiğinde aynı algoritma girilen şifreyi tekrardan şifreleyip Database'deki kayıt sırasında şifrelenmiş olan veri ile karşılaştırıyor eğer eşleşiyorsa erişim izni sağlıyor. Doğru mu anladım hocam?
Evet. İlk kayıtta 1 defa şifrelersin daha sonra o şifreyi geri elde edememen gerekiyor. Yani sunucu sahibi olarak sen dahi şifreye erişememen gerekiyor.
 

Technopat Haberler

Yeni konular

Geri
Yukarı