Я работаю над проектом HIPAA, и мне было необходимо зашифровать все данные уровня столбца, которые содержат или могут содержать конфиденциальную информацию о здоровье. Тем не менее, я хочу использовать AES_ENCRYPT и AES_DECRYPT с MySQL в block_encryption_mode = aes-256-cbc. Похоже, что для каждой строки в таблице мне нужно иметь IV (вектор инициализации). Мне понадобится этот же IV для шифрования и дешифрования. Должен ли я просто хранить его в столбце базы данных или что-то еще?MySQL CBC Encryption and Storing Инициализация вектора
Также для типа столбца лучше использовать varbinary/blob или HEX зашифрованные результаты и поместить его в varchar/text?
Любые другие предложения приветствуются, чтобы максимально безопасно хранить данные.
Если вы храните ключ с зашифрованными данными, вы ничего не достигли. это эквивалент банковского хранилища с комбинацией замка, написанной рядом с замком. шифрование - это не просто то, что вы можете проверить в контрольном списке маркетинга. есть целая куча ДРУГОГО материала, с которым приходится иметь дело, до такой степени, что фактическая механика шифрования и дешифрования и хранения этого cyphertext является наименьшей из ваших проблем. –
Я бы никогда не хранил ключ с данными ... это просто глупо. CBC берет ключ (который должен храниться в веб-приложении никогда в БД) и IV. IV должен быть случайным и другим по записи. –
@MarcB IV (Инициализационный вектор) не обязательно должен быть секретным, а обычно нет. IV не является ключом шифрования. – zaph