Как вы добавляете «раунды» к функции, такой как hash_hmac ()? - PullRequest
0 голосов
/ 28 марта 2012

Я прочитал из этой статьи http://codahale.com/how-to-safely-store-a-password/, и в нем говорится, что использование соли даже не безопасно для атак с использованием грубой силы GPU. Я не хочу, чтобы меня взламывали и через несколько недель расшифровывали пароли ... Поэтому я прочитал еще немного, и решение было bcrypt, однако я не хочу внедрять phpass class, мне нравится SHA-512.

Однако, если можно добавить раунды к sha-512, чтобы замедлить атаки на GPU ... как это можно сделать? Туры означают итерации?

Как вы добавляете раунды, чтобы замедлить sha512?

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

Один из самых безопасных способов хранения пароля, который я нашел, заключается в следующем:

<?php    
function createPasswordSalt($saltLength = 20) {
    return substr(md5(uniqid(rand(), true)), 0, $saltLength);
}

function createPasswordHash($password, $salt = null, $staticKey = null) {
    if ($staticKey === null) {
        $staticKey = "Some passphrase that will be only in your php script";
    }

    if ($salt === null) {
        $salt = self::createPasswordSalt(); 
    }       

    return hash_hmac('sha512', $password . $salt, $staticKey);

}

И я храню в базе данных пароль и хэш ...

Так что здесь я использовал несколькоуровни безопасности.И взломать ваши пароли можно, только если он соберет вашу базу данных и php-скрипты.В любом случае, если у хакера есть ваши скрипты, он может взломать любой ваш пароль в вашей базе данных, поскольку он знает схему, которую вы используете для хэширования паролей.

0 голосов
/ 28 марта 2012

Увеличение количества раундов для SHA512 не означает итерации по уже хешированному значению с той же хеш-функцией. Это может на самом деле УМЕНЬШИТЬ заданную защиту, так как после первого хэша у вашего нового «пароля» будет сокращенный набор символов. Смотрите эту ссылку на security.stackexchange , которая частично объясняет, почему.

Я предлагаю НЕ «катить свою» функцию защиты паролем. Вместо этого используйте гораздо более тщательно изученное и проверенное решение, такое как PHPass .

На их сайте также есть очень хорошо написанная и глубокая статья, объясняющая последствия безопасности хеширования и создания пароля .

...