Хранение скремблированных номеров социального страхования

Мне нужно сохранить номер социального страхования в уникальном скремблированном состоянии...

Причина: мне потребуются социальные номера, но я не хочу их открывать, если база данных будет скомпрометирована.

Я хочу преобразовать номер социального обеспечения в строку alphanumerics, и я предпочитаю, чтобы это был односторонний процесс (не обратимый)

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

В php я мог бы сделать что-то вроде этого

function maskSSN($SSN) {
 $salt = sha1(md5($SSN));
 $SCRAM = md5($SSN . $salt);
 return $SCRAM;
}

Но я не думаю, что это создавало бы уникальные значения

2 ответа

Если вы можете сохранить полный хэш (не усеченный), у вас не должно быть никаких столкновений с 9-разрядным SSN, использующим наиболее безопасные хэши.

Чтобы хеши не были насильственными, используйте HMAC-Sha1 или HMac-Sha256 с секретным ключом. Вот связанный ответ, который включает номера телефонов и анонимные данные qaru.site/questions/942218/...

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

Более поздний вариант позволит вам слишком быстро поворачивать ваши клавиши.


Что-то с такой же энтропией, как SSN, я бы не рекомендовал хранить их незашифрованные или хэшированные. Было бы очень полезно переборщить SSN, если злоумышленник крадет вашу базу данных.

Вместо этого вы должны зашифровать SSN с помощью AES-256 или лучше. Ознакомьтесь с этим вопросом SO для получения дополнительной информации о правильном хранении ключа криптографии: Хранение ключей шифрования - лучшие практики?

licensed under cc by-sa 3.0 with attribution.