Как хэшировать номера социального страхования при использовании в качестве идентификаторов - PullRequest
0 голосов
/ 14 мая 2018

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

У меня есть структурированная база данных JSON, в которой в качестве идентификатора их профиля хранится номер социального страхования пользователей.

 $salted_hashed_ssn: {
    //important information for extended family such as vidoes and email addresses
   }

Когда пользователь умирает, его ближайшие родственники заходят на мой сайт и вводят номер социального страхования умершего. Затем я хеширую их и проверяю соответствие в моей базе данных. Если найдено совпадение, мы запускаем функции, чтобы поделиться важной информацией для расширенного семейства.

Готовясь к худшему, я хочу хранить номера социального страхования максимально надежно. Поскольку мне нужно только использовать номера социального страхования в качестве идентификатора, мне не нужно хранить значения ssn для простого / простого текста. Поэтому я могу хэшировать ssns, но мне нужно посолить их, чтобы защитить от поиска таблиц. Моя проблема в том, что когда пользователи вводят номер социального страхования умершего пользователя, у меня нет возможности узнать, какой солт-ключ был использован.

Чтобы сделать это случайным и предотвратить просмотр таблиц, как бы вы посоветовали мне подсчитать мои номера социального страхования? Должен ли я просто взять х количество символов каждый раз? Т.е. всегда захватывать первые 4 символа номера социального страхования, хешировать их и их до полного номера SSN, а затем перефразировать?

let salted_hashed_ssn = SHA256 (первые 4 символа SSN) + SHA256 (SSN)?

Как бы вы порекомендовали настроить соль и хэш?

1 Ответ

0 голосов
/ 14 мая 2018

Вы можете обращаться с вашим SSN так же, как с паролем.Помните, соль не должна быть секретной, она просто должна быть разной для каждой записи.Так что просто храните соль вместе с вашим хешем, это совершенно безопасно.

Однако я бы не рекомендовал использовать SHA256 здесь.Вместо этого используйте bcrypt.Он обрабатывает соль для вас, что означает, что вам не нужно беспокоиться о совете выше в любом случае.Это также намного более устойчиво к грубому принуждению.Семейство SHA не было разработано для хэширования в том виде, в котором вы его используете.

...