Şifre Karma

Feb 08 2023
Parolaların saldırı yüzeyi
En yıkıcı siber güvenlik saldırılarından bazıları, sunucu tarafı veritabanlarında kötü bir şekilde depolanan parolaların ihlal edilmesinden kaynaklanmaktadır. Sorun, basit ve akılda kalıcı bir parola belirleme eğiliminde olabilecek kullanıcıyla başlayabilir.
Unsplash'ta Michael Dziedzic'in fotoğrafı

En yıkıcı siber güvenlik saldırılarından bazıları, sunucu tarafı veritabanlarında kötü bir şekilde depolanan parolaların ihlal edilmesinden kaynaklanmaktadır.

Sorun, basit ve akılda kalıcı bir parola belirleme eğiliminde olabilecek kullanıcıyla başlayabilir. Bu, saldırganlar tarafından evcil hayvanların veya akrabaların adları gibi bağlamsal anlayışa sahip oldukları takdirde kolayca tahmin edilebileceği için bir risk oluşturur.

Daha karmaşık bir parola seçildiğinde bile, parola kırıcı yazılımlar bir kaba kuvvet saldırısını tetikleyebilir ve başarılı olana kadar çok sayıda parolanın denenmesine neden olabilir.

Başka bir saldırı vektörü, kimlik bilgilerini depolayan veritabanına erişim kazanıyor. Bir CISO'nun kabus gibi senaryosunda, bir saldırgan şifrelenmemiş düz metin parolalardan oluşan bir veritabanına erişim elde ederse, binlerce kullanıcı hesabı anında tehlikeye girebilir. Bu maalesef çok sık meydana geldi ve hem küçük hem de büyük organizasyonları etkiledi.

Korkmayın, bu sinir bozucu olasılıklar, parola karma adı verilen bir şeyle sınırlanabilir!

Unsplash'ta Markus Spiske'nin fotoğrafı

karma tanımlama

Parola karma, düz metin alan, karmaşık bir karma işlevi çalıştıran ve karma metin üreten bir kriptografik algoritmik tekniktir. Bu işlemin anahtarı işlevdir, ancak çatlamayı önlemek için hepsi eşit derecede uygun değildir.

Tüm işlevler, OWASP (Açık Kaynak Web Uygulaması Güvenlik Projesi) kriterlerini karşılamak için iki temel özelliği karşılamalıdır:

İstenen belirli bir çıktıya karşılık gelecek bir başlangıç ​​girdisi oluşturmak zordur.

Bu özelliği göstermek için, popüler sha256 kriptografik algoritması aracılığıyla oluşturulan "Parola" karması şöyledir:

e7cf3ef4f17c3999a94f2c6f612e8a888e5b1026878e4e19398b23bd38ec221a

Ve 'şifre' karması:

5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

Gördüğünüz gibi, girdinin sadece bir harfinin büyük harf kullanımı değiştirildiğinde önemli ölçüde farklı bir çıktı üretilir, bu da çıktıların girdilerden kolayca belirlenemeyeceği anlamına gelir.

Hash'i üretmek pratiktir, ancak sadece hash değeri biliniyorsa girdiyi yeniden oluşturmak pratik olarak imkansızdır.

Düz metin parolasının, düz metne şifresi çözülmeden önce şifreli metne dönüştürüldüğü şifrelemeden farklı olarak, karma, tek yönlü bir işlevdir. Parola karma işlemi deterministik olduğundan, aynı girdi her zaman aynı çıktıyı üretir.

Bunun kullanım durumu, bir kullanıcı bir parola oluşturduğunda, özetlenebilir ve ardından çıktı bir veritabanında depolanır. Kullanıcı parolasını yeniden denediğinde, yeniden karma oluşturulur ve ardından veritabanındaki karma ile doğrulanır. Bir saldırgan karma veri tabanına erişim kazanırsa, parolalar düz metne dönüştürülemediğinden bu büyük ölçüde yararsızdır.

Bu konseptin basit bir versiyonunu görmek için bu Python betiğini çalıştırmayı deneyin :

# this and other fun scripts can be found at: https://github.com/Jay-Gokani

# install sha256 library for hashing
from hashlib import sha256

# demo explanation
print ('Hello, this demo will ask for a plaintext password, hash it and will verify the hash for access requests')

# first hash stored as a variable
hash1 = (sha256(input('What phony password would you like to set? ').encode('utf-8'))).hexdigest()
print('The hash of your plaintext password is:', hash1)

# password hash stored confirmation
print ('Your password hash has been successfully stored.')

# promt the user for password re-entry, hash and store as another variable
hash2 = (sha256(input('I will test your hash. Please type your password: ').encode('utf-8'))).hexdigest()
print('The hash of your plaintext password is:', hash2)

# access approval or deny check
while True:
    if hash1 == hash2:
        print('Success - password hash matches.')
        break
    else:
        print('The password hash does not match. Please run the programme again.')
        break

Karmalar, elbette, güvenliği ihlal edilmiş parolaları önlemek için hepsi bir arada bir çözüm değildir. Örneğin, saldırganlar ortak parola listeleri ve bunlara karşılık gelen hash'ler üretebilir. Listede veritabanındaki herhangi bir karma varsa, saldırgan düz metin parolasını bilir. Ancak, düz metin parolalar yeterli karmaşıklıkta oluşturulursa bu bir sorun olmamalıdır. Ayrıca, karma oluşturmak için düz metin parolaları alan uygulama yakalanabilir.

Şifre karma, doğru yönde atılmış harika bir adımdır! Umarız bu makaleyi beğenmişsinizdir :-)