В настоящее время я работаю над приложением, в котором мы получаем конфиденциальную информацию о здоровье. Одна из самых больших проблем связана с SSN. В настоящее время мы не используем SSN для чего-либо, но в будущем мы хотели бы использовать его для уникальной идентификации пациента на нескольких объектах. Единственный способ, которым я могу это сделать, - это SSN. Однако мы (в дополнение к нашим клиентам) ДЕЙСТВИТЕЛЬНО не хотим хранить SSN.
Поэтому, естественно, я думал о том, что SHA хеширует его, поскольку мы просто используем его для идентификации. Проблема заключается в том, что если злоумышленник знает проблемный домен (SSN), то они могут сосредоточиться на этом домене. Поэтому гораздо проще вычислить миллиарды SSN, а не фактически неограниченное количество паролей. Я знаю, что я должен использовать соль сайта и соль для пациентов, но есть ли что-нибудь еще, что я могу сделать, чтобы предотвратить появление злоумышленником SSN? Вместо SHA я планировал использовать BCrypt, так как Ruby имеет хорошую библиотеку, и он автоматически обрабатывает масштабируемую сложность и засовывает.
Он не будет использоваться в качестве пароля. По сути, мы получаем сообщения от многих объектов, и каждый описывает пациента. Единственное, что близко к глобально уникальному идентификатору для пациента, - это номер SSN. Мы собираемся использовать хеш для идентификации одного и того же пациента на нескольких объектах.