Маскирование без дублей: перестановка вместо проверок на уникальность
Habr ·
Когда-то я работал DBA, и одной из самых нелюбимых задач было «сделать копию прода для тестов, только без персональных данных». Заменить значения несложно. Сложности начинаются на колонках с уникальным индексом. Сейчас мы с небольшой командой разрабатываем сервис для маскирования персональных данных в PostgreSQL и SQL Server. Одной из первых серьёзных задач, с которой мы столкнулись, стала проблема уникальности данных. Ниже расскажу, к каким выводам мы пришли: почему случайная замена может приводить к дубликатам, во что обходится их устранение и как перестановка с сохранением формата (format-preserving encryption, FPE) позволяет сохранить уникальность без проверок на занятость значений. В конце разберём, где заканчиваются гарантии этого подхода и чего он не позволяет добиться. Читать далее