it-swarm-tr.com

En güvenli şifre karma algoritması?

Şu anda en kriptografik olarak güvenli karma algoritma (lar) nedir/nelerdir? ( PHP'de mevcuttur )

Hız önemsiz, çünkü karma değerini sabit tekrarlıyorum (sabit sayıda yineleme yerine). İlgilendiğim matematiksel güç.

Sezgim bana girdap olduğunu söyler. Bu ya da SHA-512. Fakat uzmanların önerilerini net olarak nerede görebilirim?

41
Core Xii

Kriyograflar, ince baskıyı okuduğunuzda, güvenli hash işlevlerinin gerçekten var olduğuna dair bir kanıt olmadığını belirtebilirler. Şu an sahip olduğumuz tek şey, henüz hiçbir zayıflık bulunmayan adaylar.

Bu yüzden ümit edebileceğiniz en iyi şey, birçok kriptograf tarafından uzun zamandır incelemede hayatta kalan bir işlevdir. Ayrıca, yeterince geniş bir çıkışa sahip olmanız gerekir ("128 bit güvenlik" elde etmek ve bunun ötesine geçmek çok az mantıklıysa 256 bit yeterlidir). Şu anda, 2011 yazından itibaren, Whirlpool'a değil SHA-256 veya SHA-512'ye işaret ediyor.

Yineleme sayımını tipik bir makinede geçen süreye dayandırmak iyi bir fikirdir - ancak zamana dayandırmak gerçekten alır sizin makine iyi bir fikir değil . Aksi takdirde, makine o anda birçok isteği (bir saldırganın zorlayabileceği bir durum) ele aldığı için bazı şifreler için düşük yineleme sayıları elde edebilirsiniz. Birçok yinelemenin kullanılması, saldırganın bilgisayarında parola karma işlemini yavaşlatarak saldırganları engellemek anlamına gelir; bu da sisteminizde yavaşlatır talihsiz bir yan üründür; ancak asıl hedef, saldırganın toplayabileceği makine gücüdür. Saldırganın makinesinde gerçekten kıyaslama yapamayacağınız için, sisteminizdeki ortalama yükün tolere edilebilir olduğu sürece mümkün olduğunca yüksek kaba tahminlere, dolayısıyla sabit bir sayıya başvurmanız gerekir (buradaki önemli Kelime "ortalama" gerçekleştirmeyi düşündüğünüz gibi dinamik bir önlemi diskalifiye eder).

Ayrıca, saldırganın makinesinin sizinki gibi görünmesi gerekmez; örneğin, farklı hesaplama sunan bir GPU veya bir FPGA olabilir. tipik bir sunucuda elde edebileceğiniz yetenekler. Bir saldırganın PC dışı donanım kullanarak büyük performans artışları elde edemeyeceği bir işlev istiyorsunuz. Yine, bu, AES için tasarlanan donanım optimizasyonlarından yararlanabilen Whirlpool değil, CPU verimliliği (32 bit veya 64 bit aritmetik işlemlerle) için amaçlanan SHA-256 veya SHA-512'yi teşvik eder.

Son olarak, iterasyonlar işin sadece bir parçasıdır; ayrıca yeterince uzun, benzersiz bir tuza ihtiyacınız var. Yinelemeler ve tuzlama aynı zamanda biraz zor olabilir; PBKDF2 gibi standart bir yapı kullanmanız için sıcak bir şekilde teşvik edilirsiniz (her ne kadar bir şifre ayırıcı değil, anahtar türetme işlevi olarak ifade edilmiş olsa da, PBKDF2 de bu konuda oldukça iyi görünüyor).

33
Thomas Pornin

OP'nin yorumundan:

Bilinen hızlı bir çözümü olmayan bir matematik problemine dayanarak olduğu gibi "güvenli". "En güvenli" olduğu gibi, bu tür sorunların en karmaşık dayalı. Bir karma algoritması kırıldığında "güçlü" olarak kabul edilir ve kriptolojiye/matematiğe büyük bir katkı gerektirir.

Kulağa okuyormuş gibi geliyor Thomas Ptacek'in "Gökkuşağı Tabloları ile Yeterli: Güvenli Şifre Şemaları Hakkında Bilmeniz Gerekenler" ve şimdi şifre saklama için hangi modern şifreleme karma değerini optimize ettiğini merak ediyorsunuz 'en güvenli' olarak kabul edilir.

Kesin bir cevap olduğunu sanmıyorum. Bildiğim kadarıyla, programlama topluluğundaki (scrypt & bcrypt) mevcut favorilerin bazıları şifre karmaşası işlevleri olarak titizlikle gözden geçirilmedi. En azından, NIST karma işlevi rekabet girişleri 'nin nasıl denetlendiğiyle karşılaştırılabilir çok sayıda kriptograf tarafından akranları tarafından gözden geçirilmemiştir.

Bununla birlikte, mevcut Hacker News mutabakatı, siparişin:

  1. scrypt . Hem bellek yoğun hem de CPU yoğun olduğundan, scrypt'in mevcut şifre karmalarının en yüksek güvenlik marjına sahip olduğu düşünülmektedir . tasarımı hakkında daha fazla bilgiyi burada bulabilirsiniz .
  2. bcrypt Thomas Ptacek'in yukarıdaki blog yazısı bölümünde belirtildiği gibi önceki şampiyon oldu.
  3. PBKDF2 ve SHA2'nin birden fazla turunun (fx SHA256 ile Unix Crypt ) üçüncü en iyi olduğu düşünülüyor (bunlardan biri 'en iyisi' büyük ölçüde yineleme sayısına bağlıdır Kullanılmış).

("Hacker News" un çoğunlukla bir programlama topluluğu olduğunu ve adın bir güvenlik uzmanı topluluğunu ima edebileceği için olmadığını unutmayın (bazıları da orada takılsa bile).)

Bu siteye bakarsanız, kriptografişifreler ve hashing tags fx altında, genellikle tek bir tane olmadığını görürsünüz. 'en iyi' şifre karması belirtildi. Sanırım bu kısmen, gerçek kriptografların görece sınırlı akran incelemesinden dolayı 'en güçlü' olduğu kesin bir fikir birliği yok.

İşte oldukça eşit elle ve kolayca okunan bir karşılaştırma (muhtemelen hala yeni olduğu için scrypt içermiyor).

Hız önemsizdir, çünkü karmayı sabit bir süre boyunca yineliyorum (sabit sayıda yineleme yerine).

Bu karmaların bazılarıyla, bunu gerçekten yapamazsınız. Kütüphaneyi çağırdığınızda bir "iş faktörü" sağlarsınız ve kütüphane geri kalanıyla ilgilenir.

20
Jesper M

CRYPT_BLOWFISH (balon balığı simetrik şifresine dayanan OpenBSD bcrypt, ancak gerçek bir karma algoritmasıdır, bu konuda çok fazla karışıklık var gibi görünüyor) ve CRYPT_SHA512 en iyisidir. Her ikisi de, kullanılan 'mermi' sayısını ölçeklendirme seçeneği sunarak bir güvenlik/performans ödünleşimi seçmenize olanak tanır.

Örneğin, balon balığı için varsayılan tur sayısı 7'dir (değer aralığı 4-31'dir). Bu değer logaritmiktir, bu nedenle her artış algoritmanın 10 kat daha fazla çalışmasına neden olur. 13 değeri, Core2Duo 2.4 ghz'de karma başına neredeyse 1 dakika sürer

Bunu tolere edilebilir performans açısından akıllıca ayarlamak, en güçlü güvenlik ile sonuçlanır.

not: son zamanlarda bazı bcrypt uygulamalarında bir hata bulundu ve bunun yerine SHA-512 kullanmak isteyebilirsiniz.

Not: SHA-512'nin hesaplanması 64 bit işlemcilerde SHA-256'dan daha hızlıdır (özellikle SSE2_64 ile optimize edilmişse. Özellikle, bunu dikkate almalı ve karmalarınızın amaçları için yeterince güçlü olmasını sağlamak için ek turlar kullanmalısınız.

Açık kaynak uygulaması hashkill , modern GPU'ların modern karma algoritmalarla ne kadar çabuk çatlayabileceğine dair bazı performans kriterleri yayınladı. Özellikle, bir Radeon HD 6990 şunları yapabilir: 11001 Megahashes/sn düz MD5 (CRYPT_MD5 tuzlanır ve FreeBSD uygulaması 100 mermi kullanır). 3444 Megahash/s'de düz SHA1.

7
Allan Jude

phpass

Bu, PHP uygulamalarında kullanım için taşınabilir bir genel alan parolası karma çerçevesidir. PHP 3 ve üstü ile çalışmak içindir ve gerçekten test edilmiştir) şimdiye kadar en az PHP 3.0.18 - 5.3.0 arası).

Phpass tarafından desteklenen tercih edilen (en güvenli) karma yöntemi, kamuya açık crypt_blowfish paketimizle (C uygulamaları için) da desteklenen ve PHP olarak bilinen) OpenBSD tarzı Blowfish tabanlı bcrypt'tir. , PHP CRYPT_EXT_DES olarak bilinen BSDI stili genişletilmiş DES tabanlı karmalara geri dönüş ve ph5'in kendisinde uygulanan MD5 tabanlı tuzlu ve değişken yineleme sayısı şifre karmalarına son çare ( taşınabilir karma olarak da adlandırılır).

Web sitesinde olduğu gibi Blowfish tabanlı bcrypt en güvenli hashidir. Bunun doğru olduğuna inanıyorum, çünkü çoğu = " Moore kanununun kanıtı ".

0
Alfred