PBKDF2 для хеширования идентификатора (не пароля) в ядре .Net - PullRequest
1 голос
/ 01 мая 2019

Мне нужно хешировать идентификаторы перед сохранением в базе данных.Всего будет до 1 миллиона значений.Мне нужно псевдонимить эти значения в соответствии с GDPR.

Я использую ядро ​​.Net и хочу сохранить функциональность хеширования ядра.Я не хочу рисковать, используя внешние реализации хеширования.Намерение заключается в добавлении солевой фразы к каждому значению перед хэшированием.Эти значения уже были хэшированы поставщиком, но я буду хэшировать снова перед сохранением в db.

Я собирался использовать SHA256, но я прочитал, что PBKDF2 более безопасен.Тем не менее, я прочитал, что PBKDF2 подвержен столкновениям.Крайне важно, чтобы используемая мною реализация хэширования имела малую вероятность столкновения.У PBKDF2 частота столкновений выше, чем у простого SHA256?Уменьшает ли возможность получения коллизий использование ключа HMACSHA512 с PBKDF2 в отличие от HMACSHA1?Хотелось бы получить рекомендации по безопасному одностороннему хешу с низким уровнем коллизий для сетевого ядра.

1 Ответ

2 голосов
/ 02 мая 2019

Всего будет до 1 миллиона значений.Мне нужно псевдонимы этих значений, чтобы соответствовать GDPRЯ собирался использовать SHA256, но я прочитал, что PBKDF2 более безопасен.

Для этого случая использования надлежащий криптографический хеш-код является лучшим вариантом.

PBKDF2 - это функция получения ключей, предназначенная для получения ключей с более высокой энтропией из относительно слабых паролей.Он использует хеш под капотом, поэтому, если хеш имеет определенную вероятность коллизии хеша, pbkdf будет иметь то же самое.

pbkdf2 должен быть медленным (с использованием итераций), чтобы снизить вероятность грубого взлома входного пароля.Вам не нужно это свойство, даже если это может быть плохо для вашего случая использования.

Итак, вы можете смело использовать sha256 для анонимизации ваших данных, хотя, возможно, это лучший вариант, который у вас есть сегодня.Действительно, принципиально вы не можете предотвратить столкновение хешей, но вероятность должна быть незначительной

...