2012-02-29 8 views
1

Я использую PBKDF2 для получения ключа из строки пароля в моем приложении, и у меня есть несколько вопросов об этом.Некоторые вопросы о PBKDF2

Сначала я видел много PBKDF2 в Интернете, используя хеши, такие как HMAC-SHA256. Что означает, что он использует HMAC-SHA256, а не только HMAC? Я думал, что HMAC шифрует данные с помощью ключа.

Во-вторых, я прочитал, что была уязвимость BlackBerry, потому что ее функция PBKDF2 использовала только одну итерацию (вместо 1000). Будет ли одна итерация такой же, как просто хеширование пароля (скажем, с SHA256).

Thanks

+0

У вас есть связь по поводу уязвимости BlackBerry? –

+0

http://en.wikipedia.org/wiki/PBKDF2#BlackBerry_vulnerability – user924387

+0

Эта предполагаемая уязвимость имеет меньше общего с количеством итераций и больше связана с тем, что люди используют слабые пароли и что утилита резервного копирования BlackBerry включает в себя зашифрованную базу данных в резервном изображении. Счетчик итераций 10000 не поможет, если пароль, например, представляет собой четырехзначный пин-код. –

ответ

2

HMAC использует встроенную функцию хеширования. Он не шифрует данные; он просто создает проверяемую «подпись» (Message Authentication Code) с использованием секретного ключа. HMAC-SHA256 означает HMAC с использованием хэш-функции SHA256. Вы также можете использовать HMAC-SHA1, HMAC-MD5 или HMAC-WhateverHash.

Да, с одной итерацией, PBKDF2-HMAC-SHA256 очень похож на хэширование пароля с помощью SHA256. У вас все еще есть соль, и функция хэша вызывается дважды (см. Любую ссылку на HMAC), но тем не менее намного быстрее проверять много паролей.

+0

Да и нет. Счетчик итераций 1 против 1000 довольно незначителен, если пароли содержат достаточно энтропии для начала. Добавление коэффициента работы, эквивалентного 10 битам безопасности, не принесет больших результатов, если вам нужны 256 бит безопасности, а пароли - все 8 символов 7 бит ASCII. –

+0

@Henrick Hellström: Вы задали свой комментарий как ответ? –

+0

@PeterO .: Я думаю, что Немо дал правильный, хороший ответ. Мой комментарий касался только фразы «намного быстрее». –

6

Да, одна итерация такая же, как и вызов базовой функции hmac. Вы не хотите этого делать, гораздо проще вычислить эту функцию и, тем самым, упростить выбор пароля паролем. Больше итераций заставляет процесс занимать больше времени.

PBKDF2 использует HMAC. HMAC, однако, является алгоритмом, который использует любую хеш-функцию. Вы можете подключить md5, sha1, sha2 или что-нибудь еще.

HMAC

Смежные вопросы