Salt (kriptografi) - Salt (cryptography)

İçinde kriptografi, bir tuz dır-dir rastgele ek bir girdi olarak kullanılan veriler tek yönlü işlev o karmalar veri, bir parola veya parola. Tuzlar, depoda şifreleri korumak için kullanılır. Geçmişte bir parola şurada saklanıyordu: düz metin ancak zamanla bir kullanıcının şifresinin sistemden okunmasına karşı korunması için ek koruma önlemleri geliştirilmiştir. Tuz, bu yöntemlerden biridir.

Her şifre için rastgele yeni bir tuz oluşturulur. Tipik bir ortamda, tuz ve şifre (veya daha sonraki sürümü) anahtar germe ) sıralı ve bir ile işlendi kriptografik karma işlevi ve çıktı karma değeri (ancak orijinal parola değil), bir veritabanındaki salt ile birlikte saklanır. Karma oluşturma, saklamadan daha sonra kimlik doğrulamaya izin verir ve bu nedenle düz metin kimlik doğrulama veri deposunun tehlikeye girmesi durumunda parola.

Tuzlar önceden hesaplanmış bir hash saldırısına karşı savunma yapar, ör. gökkuşağı masaları.[1] Tuzların insanlar tarafından ezberlenmesi gerekmediğinden, başarılı bir saldırı için gerekli olan hash tablosunun boyutunu, kullanıcılara herhangi bir yük getirmeden engelleyici ölçüde büyük hale getirebilirler. Tuzlar her durumda farklı olduğundan, aynı şifre için tüm şifreli hash örneklerini birbirinden farklı hale getirerek, yaygın olarak kullanılan şifreleri veya aynı şifreyi birkaç sitede kullanan kullanıcıları da korurlar.

Kriptografik tuzlar, birçok modern bilgisayar sisteminde yaygın olarak kullanılmaktadır. Unix sistem kimlik bilgileri İnternet güvenliği.

Tuzlar, bir kavramla yakından ilişkilidir. kriptografik nonce.

Örnek kullanım

İşte şifreleri saklamak için bir tuz değerinin eksik bir örneği. Bu ilk tablo iki kullanıcı adı ve şifre kombinasyonuna sahiptir. Parola saklanmaz.

Kullanıcı adıParola
kullanıcı1şifre123
kullanıcı2şifre123

Tuz değeri rastgele oluşturulur ve herhangi bir uzunlukta olabilir, bu durumda tuz değeri 16 bayt uzunluğundadır. Tuz değeri, düz metin şifresine eklenir ve ardından sonuç karma hale getirilir, buna karma değer denir. Hem tuz değeri hem de karma değer saklanır.

Kullanıcı adıTuz değeriHashing uygulanacak dizeHashed değer = SHA256 (Şifre + Salt değeri)
kullanıcı1E1F53135E559C253şifre123E1F53135E559C25372AE25495A7981C40622D49F9A52E4F1565C90F048F59027BD9C8C8900D5C3D8
kullanıcı284B03D034B409D4Eşifre12384B03D034B409D4EB4B6603ABC670967E99C7E7F1389E40CD16E78AD38EB1468EC2AA1E62B8BED3A

Yukarıdaki tablonun gösterdiği gibi, düz metin parolaları tamamen aynı olsa bile, farklı tuz değerleri tamamen farklı karma değerler oluşturacaktır. Bunlara ek olarak, sözlük saldırıları bir saldırganın pratikte yapamayacağı kadar hafifletilir. karmaları önceden hesapla. Bununla birlikte, bir tuz, genel veya kolayca tahmin edilebilen şifreleri koruyamaz.

Yaygın hatalar

Tuzun yeniden kullanımı

Sabit bir tuz, bir programcının her karma şifre için aynı tuzu kullanmasıdır.

Bu güncel hale getirecekken gökkuşağı masaları işe yaramazsa (tuz doğru seçilmişse), tuz, popüler bir ürüne kodlanmışsa, bu tuz çıkarılabilir ve bu tuz kullanılarak yeni bir gökkuşağı tablosu oluşturulabilir.

Tek bir sabit tuz kullanmak, aynı parolayı giren her kullanıcının aynı hash'e sahip olacağı anlamına gelir (parola karması aynı zamanda kullanıcı adına bağlı değilse). Bu, yalnızca bir hash'i kırarak birden çok kullanıcıya saldırmayı kolaylaştırır.

Kısa tuz

Bir tuz çok kısaysa, bir saldırganın olası her parolaya eklenen olası her tuzdan oluşan bir gökkuşağı tablosu oluşturması kolay olacaktır. Uzun bir tuz kullanmak, bir veritabanı için bir gökkuşağı tablosunun çok büyük olmasını sağlar.[2]

Faydaları

Tek bir şifre ile bir dizi şifreyi kırmak arasındaki farkı anlamak için yüzlerce kullanıcı adı ve karma şifre içeren tek bir şifre dosyasını düşünün. Tuz olmadan, saldırgan karma hesaplayabilir ([0] denemesi) ve ardından bu karmanın dosyanın herhangi bir yerinde görünüp görünmediğini kontrol edebilir. Bir eşleşme olasılığı, yani şifrelerden birinin bu girişimle kırılması, dosyadaki şifre sayısı ile artar. Tuzlar mevcutsa, saldırganın hash hesaplaması (tuz [a], [0] denemesi), A girişiyle karşılaştırması, ardından hash (tuz [b], [0] denemesi), B girişiyle karşılaştırması ve yakında. Bu, birden çok parolayı kırma girişimlerinde "yeniden kullanım" hashlerini ortadan kaldırır.

Tuzlar ayrıca hash tablolarının kullanımıyla da savaşır ve gökkuşağı masaları şifreleri kırmak için.[3] Karma tablo, yaygın olarak kullanılan şifreler için önceden hesaplanmış karmaların geniş bir listesidir. Tuzsuz bir parola dosyası için, bir saldırgan her girişi gözden geçirebilir ve hash tablosunda veya gökkuşağı tablosunda hashing uygulanmış parolayı arayabilir. Arama, karma işlevinden önemli ölçüde daha hızlıysa (ki çoğu zaman budur), bu, dosyanın kırılmasını önemli ölçüde hızlandıracaktır. Bununla birlikte, eğer şifre dosyası tuzlanmışsa, karma tablo veya gökkuşağı tablosu önceden karma hale getirilmiş "tuz şifre" içermelidir. Tuz yeterince uzun ve yeterince rasgele ise, bu pek olası değildir. İnsanlar tarafından seçilen tuzsuz şifreler, hem kısa hem de ezberlenecek kadar anlamlı olmaları gerektiğinden sözlük saldırılarına karşı savunmasız olma eğilimindedir. Küçük bir sözlük (veya onun karma eşdeğeri, bir karma tablo) bile en sık kullanılan şifrelerin kırılmasına önemli ölçüde yardımcı olur. Tuzların insanlar tarafından ezberlenmesi gerekmediğinden, başarılı bir saldırı için gereken gökkuşağı tablosunun boyutunu, kullanıcılara herhangi bir yük getirmeden engelleyici ölçüde büyük hale getirebilirler.

Daha teknik olarak, tuzlar karma tablolara ve gökkuşağı tablolarına karşı koruma sağlar, çünkü bunlar aslında parolanın uzunluğunu ve potansiyel olarak karmaşıklığını artırır. Gökkuşağı tablolarının uzunluğu ile eşleşen şifreler yoksa (örneğin, 8 baytlık bir şifre ve 2 baytlık tuz, etkin bir şekilde 10 baytlık bir şifredir) ve karmaşıklık (alfanümerik olmayan tuz, kesinlikle alfanümerik şifrelerin karmaşıklığını artırır). tuzlu parola, ardından parola bulunmayacaktır. Bulunursa, kullanılmadan önce tuzu şifreden kaldırmanız gerekecektir.

Modern gölge şifre şifre karmalarının ve diğer güvenlik verilerinin halka açık olmayan bir dosyada depolandığı sistem, bu endişeleri bir şekilde azaltır. Ancak, parolaları veya parola karmalarını birden çok sisteme göndermek için merkezi parola yönetim sistemlerini kullanan çok sunuculu kurulumlarla ilgili olmaya devam ederler. Bu tür kurulumlarda, kök Her bir sistemdeki hesap, merkezi parola sisteminin yöneticilerinden daha az güvenilir olarak değerlendirilebilir, bu nedenle, benzersiz tuz değerlerinin oluşturulması da dahil olmak üzere parola karma algoritmasının güvenliğinin yeterli olmasını sağlamaya değer.[kaynak belirtilmeli ]

Tuzlar da yapar sözlük saldırıları ve kaba kuvvet saldırıları çok sayıda parolayı çok daha yavaş kırmak için (ancak yalnızca bir parolayı kırma durumunda değil). Tuzlar olmadan, aynı anda birçok parolayı kıran bir saldırganın, her parola tahminini yalnızca bir kez hash etmesi ve tüm karmalarla karşılaştırması gerekir. Bununla birlikte, tuzlarda her şifrenin farklı bir tuzu olması muhtemeldir; bu nedenle, her bir tahminin ayrı ayrı hash edilmesi ve her bir tuz için karşılaştırılması gerekir; bu, aynı tek hash'i her parolayla karşılaştırmaktan önemli ölçüde daha yavaştır.

Bir tuzun bir başka (daha az) faydası ise şudur: iki kullanıcı şifreleri olarak aynı dizeyi seçebilir veya aynı kullanıcı aynı şifreyi iki makinede kullanmayı seçebilir. Tuz olmadan bu parola, parola dosyasında aynı karma dizge olarak saklanacaktır. Bu, iki hesabın aynı parolaya sahip olduğunu ortaya çıkarır ve hesabın parolalarından birini bilen herkesin diğer hesaba erişmesine izin verir. Parolaları rastgele iki karakterle tuzlayarak, iki hesap aynı parolayı kullansa bile, hiç kimse bunu yalnızca hash'leri okuyarak keşfedemez.

Unix uygulamaları

1970'ler - 1980'ler

Eski sürümleri Unix kullanılan bir şifre dosyası / etc / passwd tuzlu şifrelerin karmalarını saklamak için (iki karakterli rasgele tuzların önüne eklenen şifreler). Unix'in bu eski sürümlerinde, tuz da şifreli şifrenin karmasıyla birlikte passwd dosyasında (açık metin olarak) saklanıyordu. Parola dosyası, sistemin tüm kullanıcıları tarafından herkes tarafından okunabilir hale geldi. Kullanıcı ayrıcalıklı yazılım araçlarının kullanıcı adlarını ve diğer bilgileri bulabilmesi için bu gerekliydi. Bu nedenle şifrelerin güvenliği, yalnızca bu amaç için kullanılan tek yönlü işlevlerle (şifreleme veya karma) korunur. İlk Unix uygulamaları, parolaları sekiz karakterle sınırladı ve 4.096 olası tuz değerine izin veren 12 bitlik bir tuz kullandı.[4] Bu, 1970'lerin hesaplama ve depolama maliyetleri için uygun bir dengeydi.[5]

1980'ler–

gölge şifre sistemi, karmalara ve tuza erişimi sınırlamak için kullanılır. Tuz sekiz karakterdir, karma 86 karakterdir ve şifre uzunluğu sınırsızdır.

Web uygulaması uygulamaları

Bir web uygulamasının bir veritabanında bir kullanıcının parolasının karma değerini depolaması yaygındır. Tuzsuz, başarılı SQL enjeksiyonu saldırı, kolayca kırılabilir parolalar sağlayabilir. Birçok kullanıcı birden fazla site için şifreleri yeniden kullandığından, bir tuzun kullanımı genel olarak önemli bir bileşendir. web uygulaması güvenliği.[6] Belirli dillerde (PHP, .NET, vb.) Parola karmalarının güvenliğini sağlamak için bir tuz kullanımına ilişkin bazı ek referanslar, Dış bağlantılar aşağıdaki bölüm.

Ayrıca bakınız

Referanslar

  1. ^ "Parolalar Önemlidir". Alındı 2016-12-09.
  2. ^ "Güvenli Şifreli Parola Karıştırma - Nasıl Düzgün Yapılır?".
  3. ^ "Gökkuşağı Masaları nasıl çalışır?". kestas.kuliukas.com.
  4. ^ Morris, Robert; Thompson, Ken (1978-04-03). "Şifre Güvenliği: Bir Durum Geçmişi". Murray Hill, NJ, ABD: Bell Laboratuvarları. Arşivlenen orijinal 2013-08-21 tarihinde. Alıntı dergisi gerektirir | günlük = (Yardım)
  5. ^ "Unix Parolaları Nasıl Uygular [Kitap]".
  6. ^ "ISC Günlüğü - Şifrelerin Karıştırılması". Dshield.org. Alındı 2011-10-15.

Dış bağlantılar