Güvenli Kodlama: Tuz, karabiber ve karma ile daha güvenli şifreler

Draqon

Aktif Üye
Güvenli kodlama katkısı “Brute Force ve Rainbow tablolarına karşı korumak için parola karması” zaten şifrelerin neden asla doğrudan depolanmaması gerektiğini, ancak kalıcılık katmanında karma değeri olarak kaydedilmesi gerektiğini göstermiştir. Ayrıca, güvenliği daha da arttırmak için karma işlemdeki önem rastgele çarpıcı dizelerin önemi de tartışıldı. Aşağıdaki makale artık tuz değerleri oluştururken ve uygularken geliştiricilerin ne düşünmesi gerektiğini göstermektedir.


Reklamcılık








1996 yılından bu yana Sven Java, 15 yılı aşkın bir süredir otomobil, uzay yolculuğu, sigorta, bankalar ve Dünya Bankası gibi endüstrilerde endüstriyel projelerde ve 15 yılı aşkın bir süredir programlamaktadır. 10 yılı aşkın bir süredir Amerika'dan Yeni Zelanda'ya konferanslar ve topluluk etkinliklerinde bulundu, Jfrog ve Vaadin için geliştirici savunucusu olarak çalıştı ve düzenli olarak BT dergileri ve teknoloji portalları için yayın yazıyor. Ana konusunun çekirdek Java'sına ek olarak, TDD ve güvenli kodlama uygulamalarıyla ilgileniyor.







Şifreler ve tuz değeri için neden karma ihtiyacınız var?


Kısa bir tekrar olarak: Parola Hashing, şifrelerin güvenli bir şekilde depolanması için önemli bir teknolojidir. Bir şifreyi düz metinde kaldırmak yerine, kolayca yeniden oluşturulamayan tek kullanımlık bir karma işlevi ile bir dizeye dönüştürülür. Parolalar, bir veritabanı tehlikeye atılsa bile yetkisiz erişimden korunur.

Aynı şifreler her zaman karma hesaplamasıyla sonuçlandığından, örneğin aynı karma, hangi kullanıcıların karma karşılaştırarak aynı şifreyi kullandığını bulabilir. Bu, belirli kullanıcılara büyük ve hedefli saldırıları kolaylaştırır. Daha yüksek güvenlik için, tuz değeri, karma hesaplamadan önce bir şifreye eklenen rastgele bir dize olarak devreye girer. Aynı şifreler için farklı karma değerleri de oluşturulabilir ve gökkuşağı tablosu gibi farklı saldırı tekniklerine karşı koruma artırılabilir.

Tuz değerleriyle uğraşmak için en iyi uygulamalar


Rainbow tabloları, karma bir parolayı mümkün olduğunca verimli bir şekilde yeniden inşa etmek için çok sayıda yaygın şifre kullanan saldırganlara karma değerlere sahip tablolar hazırlanmış tablolar. Bununla birlikte, karma hesaplamasına bir tuz değeri eklendiyse, şifre artık mümkün değildir. Ayrıca, tuz değerleri, saldırganların çalıntı bir veritabanındakilerle karmalarını telafi etmek için sık kullanılan şifrelerin bir listesini denemeye çalıştıkları sözlük saldırılarına karşı koruma sağlar.

Her şeyden önce, tuz değerlerinin güvenli bir şekilde işlenmesi için her şifre için benzersiz bir tuz değeri kullanması önemlidir. İkincisi, değer rastgele ve yeterince uzun olmalıdır. Çarpışma ve öngörülebilir kalıplar riskinden kaçınmak için en az 16 bayt uzunluğu önerilir. Ek olarak, kriptografik olarak güvenli rastgele sayı jeneratörleri tuz değerlerinin tahmin edilememesini sağlar. Üçüncüsü, tuz değeri tutulan şifre ile birlikte kaydedilmelidir. Gizli bir bilgi olmadığından, halka açık olup olmadığı risk yoktur. Ancak, farklı şifreler için birkaç kez yeniden kullanılmamalıdır.

Brute kuvvet saldırılarına karşı karma prosedürünü sertleştirmek için, aritmetik yoğun karma algoritmaları önerilir-tekrarlanan hesaplamalar nedeniyle saldırılar için engelleri ayarlarlar. Son olarak, sunucu tarafında gizli bir anahtar olarak saklanan ve karma verilerle kaydedilmeyen tuza ek olarak bir biber değeri de kullanılabilir. Düzenli güvenlik kontrolleri, karma yöntemlerinin güncellemeleri ve yineleme sayısı gibi parametrelerin ayarlanması önerilen güvenlik önlemlerini tamamlar.

Biber değeri nedir ve nasıl korur?


Biber değeri, karma işleminin güvenliğini artırmak için bir şifre ile birlikte kullanılan gizli bir anahtardır. Her şifre için ayrı ayrı üretilen ve kaydedilen tuz değerinin aksine, biber değeri bir sistemin tüm şifreleri için aynı kalır ve örneğin sunucu yapılandırmasında ayrı olarak kaydedilir.

Temel amaç çalınan karma değerlere yönelik saldırıları zorlaştırmaktır. Bir saldırgan şifre hassasları olan bir veritabanına erişim alırsa, karabiber değeri veritabanında saklanmadığından, karmaların kolayca deşifre edemez. Bu, saldırganların daha önce bahsedilen sözlük veya kaba kuvvet saldırıları nedeniyle karma çatlamasını çok daha zor hale getirir, çünkü hesaplamanın önemli bir parçası yoktur.

Biber değerinin bir başka avantajı, bir saldırgan kendisine eski veri kayıtlarına erişirse, uzun süreli depolanan karmaların tehlikeye girmesini önlemek için düzenli olarak değiştirilebilmesidir.

Biber değerleriyle başa çıkmak için en iyi uygulamalar


Tuz değerlerinin aksine, biber değerleri veritabanına kaydedilmemeli, ancak sunucu yapılandırmasında veya donanım güvenlik modülleri (HSM) gibi özel güvenlik çözümlerinde güvenli bir şekilde saklanmalıdır. Ayrıca, biber değeri asla doğrudan kaynak koduna veya uygulamanın çalışması için donanıma kaydedilmemelidir. Bunun yerine, güvenli çevresel değişkenlerin veya Sırlar Yönetim Sistemi kullanımı önerilir. Bu, veritabanına erişen saldırganların biber değerini de yakalamamasını sağlar.

Önemli bir husus aynı zamanda biber değerinin düzenli güncellemesidir. Bir sistemin tüm şifreleri için aynı olduğundan (genellikle, ancak zorunlu değil), uzun vadeli güvenlik sağlamak için düzenli aralıklarla değiştirilmelidir. Bununla birlikte, bu, iyi düşünülmüş bir döner mekanizmaya göre gerçekleşmesi gereken tüm depolanan parolalar için yeni bir karma hesaplama gerektirir.

Biber değerlerinin kullanımı yalnızca şifre karma ve tuz değerleri ile bağlantılı olarak mantıklıdır. Tek başına biber değeri güvenliği artırmaz.

Çarpışmalarla hangi tehlike tehdit eder ve onlar nasıl kaçınılabilir?


İki farklı giriş değeri aynı karma değeri oluşturduğunda, hash ile bağlantılı olarak çarpışmalar meydana gelir. Parolaları saklarken, bir güvenlik riskini temsil ederler. Bir saldırgan bir çarpışma yaratabilirse, aynı karma değeri olan alternatif bir girdi üretebilir ve böylece yetkisiz erişim elde edebilir. Daha sonra bir çarpışma saldırısından bahsediyor.

Karma fonksiyonları da sınırlı miktarda çıktı olduğundan, olası girdi miktarı sonsuz büyüktür, çarpışmalar teorik olarak kaçınılmazdır. Bununla birlikte, pratikte, bir çarpışma olasılığı uygun bir kriptografik karma işlevi seçilerek en aza indirilebilir. MD5 veya SHA-1 gibi eski algoritmalar, zaten uygulanabilir çarpışma saldırıları var oldukları için güvensiz kabul edilir. 2017 yılında, Shaverted Proje, SHA 1 çarpışmalarının nispeten ılımlı aritmetik kaynaklarla zaten üretilebileceğini gösterdi. MD5 çarpışmalarına ulaşılması daha da kolaydır. Yalnızca SHA-256 veya Argon2 gibi daha yeni algoritmalar yeterli güvenlik sunar. SHA-256 ile, örneğin, bir çarpışma bulmak için 2^128 denemeleri gereklidir. Çarpışma saldırısı olasılığı son derece düşüktür.

Bir sistemdeki eski şifrelerin yanı sıra tuz ve karabiber değerleriyle nasıl başa çıkabilirim?


Eski tuz ve karabiber değerleri ile bir sistemdeki şifre hashları ile uğraşmak, hem güvenlik hem de kullanıcı dostu olmasını sağlamak için özel bir özen gerektirir. Geliştiriciler aşağıdaki kanıtlanmış prosedürlere geri dönmelidir.

Her şeyden önce, modası geçmiş karma algoritmaların veya belirsiz yöntemlerin yavaş yavaş daha modern yöntemlerle değiştirilmesi sağlanmalıdır. Zayıf bir hash algoritması hala kullanılırsa, parolaların bir kez daha hidrofed edildiği ve daha güçlü bir algoritma ve yeni bir tuz ile kaydedildiği bir geçiş işlemi uygulanmalıdır.

Eski tuz değerleri yeterli oldukları sürece kullanılabilir. Bununla birlikte, çok kısa veya öngörülebilirseniz, yeni, daha güvenli tuz değerleri ile değiştirilmelisiniz. Bu, bir adım -adım -adım değişikliği etkinleştirmek için bir sonraki kullanıcının oturum açma veya şifre değişikliğinde de yapılabilir.

Güvenliği artırmak için biber değerleri düzenli olarak güncellenmelidir. Yeni biber değerleri eski karmalar için geriye dönük olarak kullanılamadığından, eski düzenli olarak kontrol edilirken yeni bir biber karma durumuna yeni şifreler ekleyerek güncelleme adımla adım atmalıdır. Uzlaşma riskini en aza indirmek için, eski biber değerleri kalıcı olarak kaydedilmemeli, ancak etkilenen tüm şifreler yeni bir biber karma ile güncellenene kadar.

Alternatif olarak, tüm karmaların tamamen yenilenmesi, belirli bir süre sonra veya bir güvenlik uyarısından sonra şifrelerinizi sıfırlamaya zorlanarak elde edilebilir. Bu, tüm şifrelerin en son güvenlik standartlarına göre saklanmasını sağlar.

Son olarak, eski karmaların sınırsız tutulmaması tavsiye edilir. Makul bir geçiş döneminden sonra ve tüm kullanıcıların şifrelerini güncellemelerini sağladıktan sonra, kötüye kullanım riskini en aza indirmek için modası geçmiş karmalar güvenli bir şekilde silinmelidir.

Çeşitli göç stratejilerinin avantajları ve dezavantajları


Kullanıcı dostu olma, ekonomi ve güvenlik ile ilişkili olarak farklılık gösteren şifre hassaslarının taşınması için çeşitli stratejiler vardır:

Bir sonraki girişte yavaş yavaş geçiş

Bu yöntemle, güvenli bir karma işlemine geçiş, bir kullanıcı kaydolur kaydedmez otomatik olarak arka planda. Sistem yükü ılımlı kalır çünkü yalnızca aktif kullanıcılar etkilenir. Bununla birlikte, bu, bir kullanıcı oturum açana kadar eski belirsiz karmaların sistemde kaldığı anlamına gelir – aktif olmayan kullanıcılar geçişten yararlanmaz ve daha az güvenli karmaların hala var olduğu daha uzun bir süre vardır.

Zorla Şifre Güncellemesi

Bu yöntem, tüm kullanıcıların mevcut ve güvenli karmalarla kaydedildiklerinden emin olmak için şifrelerini derhal değiştirmelerini sağlar. Potansiyel güvenlik sorunları bu şekilde hızlı bir şekilde sabitlenebilir. Bununla birlikte, bu, değişiklik sırasında sorunlar ortaya çıkarsa ve muhtemelen şifrelerin birkaç kez sıfırlanması gerekiyorsa, destek çabalarının artmasına ve kullanıcılara kızmaya yol açabilir.

Tüm karmaların otomatik yeniden hesaplanması

Bu yöntemle, depolanan tüm şifreler, gerekli kullanıcı etkileşimi olmadan hemen güvenli bir standarda geçer. Bu, tüm şifrelerin en son güvenlik gereksinimlerini karşılamasını sağlar. Bununla birlikte, zorluklar vardır: Hashing yöntemi bir biber değeri kullanıyorsa, yeniden hesaplama düz metin şifresi bilgisi olmadan yeniden hesaplanamaz. Buna ek olarak, bu strateji yüksek bir kaynak çaba gerektirir, çünkü tüm veritabanı geçişi aynı anda gerçekleştirilmelidir, bu da en azından geçici olarak performans kaybına yol açabilir.

Hibrit strateji

Bu yöntem, kademeli ve zorla göçün avantajlarını birleştirir. Aktif kullanıcılar, giriş bir sonraki girişte otomatik olarak yeni karma prosedürüne geçerken, daha eski veya aktif olmayan hesapları olanlar yeni güvenlik standardına geçmek için bir şifre değişikliğini değiştirmek zorundadır. Bir yandan, prosedür sistem üzerindeki yükü azaltır, ancak yine de kapsamlı bir güncelleme sağlar. Bununla birlikte, bu strateji daha karmaşık uygulamaya eşlik eder, çünkü farklı kullanıcı gruplarına farklı muamele edilmelidir.

Göç stratejisinin dikkatli bir şekilde seçilmesi, açıklanan faktörleri dikkate alarak, bireysel durumlarda kullanıcı arkadaşlığını veya ekonomisini gereksiz yere etkilemeden sistemin güvenliğini arttırır.