Php, i sha1 veya sha Diğer sürümünü kullanmanız gerekir?

4 Cevap php

Benim kullanıcılar için rastgele bir parola oluşturmak için gidiyorum. Muhtemelen tuz ve sha1 yöntemi kullanır. Ama sha1 diğer versiyonu SHA256 gibi, sha512, vb vardır bulundu

Sha sürümleri arasındaki farklar nedir? Hangisi daha iyi, daha güvenli ve daha hızlı (performanslarının)? Hangisini kullanmalıyım?

EDIT:

Ben php kullanıcı değilim, teşekkürler :)

4 Cevap

Şifre nesil düşündüğünüz kadar basit değildir. (Sadece bir sayısal klavye ile ya da herhangi bir cihaz), bir cep telefonundan ulaşılabilir bir site için bir şifre üreten eğer Örneğin, şifrenizi hiçbir üst üste iki karakter o olur beri aynı tuş üzerinde olduğundan emin olmalısınız büyük bir UI kusur olabilir.

Bir örnek: dfe4Pl7 şifre olarak düşünün. Bunu yazın için, bir kez daha bekleyin ve basın '3 'iki kere daha sonra, 3 üç kez basın, sonra beklemek yerine, 3 kez basmanız gerekir kullanılır. Bu berbat.

Daha genel olarak, bu şifre yanlış yorumlama mümkün olduğu kadar önüne geçildiği bir şekilde üretilebilir olmalıdır. Örneğin, ben şahsen 1 's ve l' s, 0 's ve O' s, vb dahil önlemek istiyorum .

Bottomline ise: özetleme algoritmaları burada çok küçük bir yardım olacaktır. Ne gerek iyi bir rasgele sayı üreteci ve UI-bilge katı nesil algoritma.

Burada iki konu kafa karıştırıcıdır. Düz metin parola okuyarak sadece keşfetmek edilemez, böylece temelde pratik açıdan bir tuz ile parola karma depolama içeren rastgele belli (asgari) uzunluğu sembolleri ve şifre depolama, çekme rastgele parola üretimi, veritabanı.

Generation

Rasgele semboller almak için, tüm sembollerin bir dizi var, rastgele bir numara almak ve bir sembol dönmek için indeks olarak bu sayıyı kullanarak diziye indis. Bu Kane Wallmann önceki önerdi budur. Bununla birlikte, bu şifre nesil olarak güvenlik ile ilgili uygulama için, bir a cryptographically strong yalancı rasgele sayı oluşturma, rand (mi) is not.

Storage

Daha önce belirtildiği gibi, parola veritabanında düz metin olarak depolanır edilmemelidir. Aksi takdirde, buna erişimi olan herkes sadece bunu okumak ve herhangi bir şifre ve tüm belirli bir kullanıcı şifresi ne biliyorsunuz. Ne olur parola hash yerine mağazası olduğunu. Bir kullanıcı girişimi giriş, onların parola hash ve aynı olup olmadığını görmek için veritabanındaki değeri karşılaştırın. Karma işlevi adlı bir tek-yönlü fonksiyon diyoruz. Eğer bir karma değerini almak için parola karma, ancak bunu maçları görmek için tüm olası kombinasyon çalışırken olmadan hash değeri parola alınamıyor. (En azından, bu yine de bir fikir.) Hash değeri çıkış uzunluğu sabit olduğundan olası girdi pratik anlamda sonsuz değil iken, oysa, tabii ki daha karmaşıktır kesinlikle çıkışının olası sayısından fazladır.

Şimdi, tuz gelir yalnız şifre basit bir müzakere ya da güvenli olmadığı için nerede. İlk olarak, bu tür bir yöntem, aynı şifre ile herhangi bir iki kullanıcı için aynı karma değer verecektir. Bir hesap Uzlaşma diğer uzlaşma neden olacaktır. İkincisi, ne bir saldırganın yapabileceği bir rainbow table vaktinden ne denir inşa etmektir. Bu zaman alacak olsa da, sadece herhangi bir depolama algoritması için bir kez yapılması gerekir, ve o bunu kendileri yapmak zorunda değilsiniz. Çalışmaları birçok bilgisayar üzerinde dökülen, ve bu tür LM ve NTLM gibi zayıf şifre karma sistem için böyle gökkuşağı tabloları indirebilirsiniz internette aslında web sitelerinde var olabilir. Bundan sonra, saldırgan sadece tabloya karşı herhangi bir hash değeri aramak ve şifresiz şifre belirleyebilirsiniz. Sağlaması için önce böylece karşı korumak için, bir (kullanıcı başına) rasgele tuz değer parola eklenir. Bu hatta aynı şifre giriş farklı kılan, bu yüzden ilk sorunu önlemek. Ayrıca, ikinci sorunun karşı azaltmak durumunda tuz & giriş uzunluğu o kaba kuvvet hesaplama açısından olanaksız olacağı gibi olduğu gibi kombine şifre yeterince uzun.

Özellikle SHA hangi, ya da bu konuda soruya gelince, diğer karma algoritmalar kullanmak için. SHA ABD NIST standart olduğunu ve oldukça iyi olarak kabul edilir. Orada SHA-1 içine küçük bir teorik atılım olmuştur, ama pratikte çoğu amaç için hala yeterli güvenlidir oluyor. SHA-2 algoritmaları bilinen atılım ile, SHA-1 daha iyidir. Hangi seçim varyantı aşağı boyutu dahil olmak üzere çeşitli şeyler vardır. Onlar çünkü boy farkı farklı uzunluk çıktı, ve hesaplamak için farklı miktarda üretmek. PHP karma algoritmalar diğer bir dizi arasında, native implementation SHA-1, SHA-256, 384 ve 512 var.

Sisteminizde zayıf nokta başka muhtemel olarak tüm bunlardan sonra, pratikte, seçtiğiniz SHA algoritmaları hangi muhtemelen önemli değildir. Şifreleri yazmak Kullanıcılar. Farklı sistemler arasında aynı şifreyi kullanarak Kullanıcılar. XSS ve SQL injection gibi şeyler izin programlama kusur. Vs vs

Sadece bir şifre rastgele harfler ve sayılar yapmak için onları kullanarak eğer şifreleme algoritması güvenlik şey demek değildir. Eğer rastgele bir şifre işlevini yapıyor daha kapalı, çok daha verimli .... sen niye tuzlama vardır olurdu?

Burada PHP ile yazılmış bir BASİT şifre jeneratör olduğunu.

function RandomPassword( $length )
{
    $characters = "abcdefghjklmnpqrstuvwxyz23456789";
    $result = "";
    for( $i=0; $i < $length; $i++ )
    {
        $result .= $characters[ rand( 0, strlen( $characters )-1 ) ];
    }

    return $result;
}

NOT: onlar birbirlerine kolayca yanlış olarak ben, 1,0 ve o kasten eksik.

Burada wiki Eğer Şekilli okuyabilirsiniz bulunuyor

orada sha-2 aile algoritmik benzer olma bahsediyor, ancak sha-1 daha popüler.