Статья опубликована в рамках: Научного журнала «Студенческий» № 19(357)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал
АНАЛИЗ УЯЗВИМОСТЕЙ МАСКИРОВАНИЯ ДАННЫХ И МЕТОДИКА ВАЛИДАЦИИ ОБЕЗЛИЧЕННЫХ НАБОРОВ ДАННЫХ В СУБД POSTGRESQL
ANALYSIS OF DATA MASKING VULNERABILITIES AND VALIDATION METHODOLOGY FOR DEPERSONALIZED DATASETS IN POSTGRESQL DBMS
Morozov Maxim Sergeevich
Student, Department of Secure Communication Systems, Saint Petersburg State University of Telecommunications named after prof. M.A. Bonch-Bruevich,
Russia, Saint Petersburg
АННОТАЦИЯ
В статье рассмотрены уязвимости стандартного маскирования персональных данных в расширении PostgreSQL Anonymizer, в частности инференс-атаки и атаки перекрёстного связывания таблиц. Предложена методика комплексной валидации обезличенных наборов данных на основе критериев K-анонимности, L-разнообразия и T-близости, реализованная в виде универсального SQL-скрипта. Разработанный инструмент позволяет автоматизировать контроль качества перед публикацией данных и снизить риски деанонимизации.
ABSTRACT
The article examines vulnerabilities of standard personal data masking in the PostgreSQL Anonymizer extension, in particular inference attacks and cross‑table linking attacks. A methodology for comprehensive validation of depersonalized datasets based on k‑anonymity, l‑diversity and t‑closeness criteria is proposed, implemented as a universal SQL script. The developed tool automates quality control before data publication and reduces the risks of deanonymization.
Ключевые слова: маскирование данных, PostgreSQL Anonymizer, K-анонимность, L-разнообразие, T-близость, валидация обезличивания, инференс-атаки.
Keywords: data masking, PostgreSQL Anonymizer, k‑anonymity, l‑diversity, t‑closeness, depersonalization validation, inference attacks.
Введение
Защита персональных данных и конфиденциальной информации в распределённых информационных системах — это одна из критических задач современного информационного общества. С введением в Российской Федерации Федерального закона от 27.07.2006 № 152-ФЗ «О защите персональных данных», а также ужесточением требований новой статьёй 13.1 от 08.08.2024 № 233-ФЗ, регулирующей обращение с обезличенными данными, организации обязаны обеспечивать защиту персональных данных в соответствии с установленными требованиями [1]. Цель — установить чёткие правила обезличивания и дать бизнесу и государству новые возможности для безопасного использования больших данных и технологий искусственного интеллекта.
Однако практика последних лет показывает, что традиционные методы маскирования данных недостаточны для обеспечения истинной анонимизации. Исследования в области восстановления личности демонстрируют, что при наличии побочных данных или возможности перекрёстного связывания таблиц, даже хорошо маскированные данные могут быть деанонимизированы [2].
PostgreSQL Anonymizer — это расширение с открытым исходным кодом, которое предоставляет встроенные механизмы для маскирования персональных данных. Расширение поддерживает три стратегии анонимизации: динамическое маскирование, статическое маскирование и создание анонимизации 3 уровненных дампов [4; 5].
В русскоязычной научной литературе практически отсутствуют работы, посвящённые анализу целостности и эффективности маскирования в PostgreSQL Anonymizer, а также методам выявления скрытых утечек данных через инференс-атаки и анализ косвенных идентификаторов. Большинство публикаций ограничиваются практическими руководствами по использованию инструмента, но не рассматривают аспекты его безопасности. [4]
Цель статьи — изучить и разработать практическую методику валидации эффективности маскирования данных в СУБД PostgreSQL на основе критериев K-анонимности, L-разнообразия и T-близости, а также реализовать в виде универсального SQL-скрипта инструмент для проверки перед публикацией обезличенных наборов данных
1. Теоретические основы анонимизации и маскирования данных
1.1 Понятие анонимизации и её отличие от псевдонимизации
В соответствии с базовыми положениями ФЗ-152, обезличивание (анонимизация) определяется как действия, в результате которых становится невозможным без использования дополнительной информации определить принадлежность персональных данных конкретному субъекту персональных данных [6]. С технической точки зрения необходимо проводить четкое разграничение между анонимизацией и псевдонимизацией:
Анонимизированные данные — это данные, которые не могут быть связаны с конкретным субъектом ни при каких обстоятельствах, даже при наличии у атакующего дополнительных сведений.
Псевдонимизированные данные — это данные, обработка которых проведена таким образом, что персональные данные больше не могут быть отнесены к конкретному субъекту данных без использования дополнительной информации, при условии, что такая дополнительная информация хранится отдельно и подлежит техническим и организационным мерам защиты.
Рассматриваемое расширение PostgreSQL Anonymizer предоставляет инструменты, которые, в строгом смысле, реализуют механизм псевдонимизации. Следовательно, для соответствия требованиям необходимо учитывать, что применения одного лишь маскирования может быть недостаточно для юридического статуса «полностью анонимных данных» без применения дополнительных организационных мер [6].
1.2 Модели анонимности, разнообразия и близости
Концепция К-Анонимности — это концепция, предложенная Латаньей Суини в 1998 году и получила широкое признание в научном сообществе как фундаментальная работа в области защиты приватности. Эта и последующие концепции подробно рассмотрены в русскоязычном журнале «Программирование» в серии статей Борисова А.В. [7].
К-Анонимность гарантирует, что каждая комбинация квайзи-идентификаторов в наборе данных встречается как минимум K раз. Квайзи-идентификаторы — это атрибуты (например, возраст, пол, почтовый индекс), которые при сочетании могут привести к идентификации лица, но сами по себе эту информацию не содержат.
Рассмотрим пример: если в маскированной таблице медицинских данных есть 100 записей с комбинацией: Возраст: 30-35, Пол: Женский, Город: Москва, и каждая такая комбинация встречается ровно 4 раза, то K=4. Это гарантирует, что злоумышленник, зная эти три параметра о конкретной женщине, может сузить выборку только до 4 человек, но не может однозначно её идентифицировать.
Однако эта концепция имеет серьёзное ограничение: она не защищает от атак на основе единообразности значений чувствительного атрибута. Если все 4 записи с комбинацией (30-35, Женский, Москва) содержат одно и то же значение диагноза (например, “Рак”), то злоумышленник может с уверенностью вывести, что женщина в этой группе страдает раком.
Концепция L-Разнообразия была разработана для преодоления ограничений K-Анонимности. Она расширяет К-Анонимность, требуя, чтобы внутри каждой группы с одинаковыми квайзи-идентификаторами было как минимум L различных значений чувствительного атрибута.
Пример реализации с L=2 для тех же данных: группа (30-35, Женский, Москва) должна содержать минимум 2 разных диагноза, группа (30-35, Мужской, Москва) должна содержать минимум 2 разных диагноза.
Разнообразие предотвращает однородность атак, но не защищает от атак на основе асимметричности распределения.
Концепция T-Близости как дальнейшее усовершенствование, которое требует, чтобы распределение чувствительного атрибута внутри каждой группы было близко к распределению этого атрибута во всём наборе данных. Отклонение не должно превышать пороговое значение T.
Для измерения расстояния между распределениями используются статистические метрики [7], [11]. Если во всей таблице диагноз “Рак” встречается в 20% записей, то в каждой группе квази-идентификаторов доля этого диагноза также должна быть близка к 20% (±T). Пример такой проверки показан в разделе 3.2.
PostgreSQL Anonymizer реализует концепцию К-Анонимность для проверки чувствительности данных. В документации [5] указана функция для проверки К-Анонимности, однако полная реализация L-Разнообразия и T-Близости требует дополнительных механизмов контроля, которые описаны далее в разделе 3.
1.3 Методы маскирования в PostgreSQL Anonymizer
PostgreSQL Anonymizer предоставляет следующие основные функции маскирования [3; 5]:
- Удаление — замена значения на статическую константу или NULL
- Рандомизация — замена на случайное значение
- Фальсификация — замена на сгенерированное правдоподобное значение
- Псевдонимизация — детерминированное хеширование с солью
- Частичное скрытие — замена части значения (например, маскирование номера телефона)
- Перестановка — переупорядочивание значений в столбце
- Обобщение — замена конкретного значения на диапазон
Каждый метод имеет свои преимущества и недостатки с точки зрения безопасности и сохранения полезности данных [3]. Например, удаление сохраняет наибольшую безопасность, но делает данные менее полезными. Фальсификация и рандомизация сохраняют статистические свойства, но требуют тщательного контроля.
2. Уязвимости простого маскирования
2.1 Инференс-атаки
Инференс-атака — это метод восстановления конфиденциальной информации путём логического вывода на основе видимых маскированных данных и фоновых знаний о распределении значений в популяции.
Рассмотрим таблицу 1 с данными пациентов, маскированную следующим образом:
Таблица 1.
Пример маскированной таблицы пациентов
|
Id |
Возраст |
Пол |
Диагноз |
|
1 |
20-30 |
M |
***MASKED*** |
|
2 |
20-30 |
M |
***MASKED*** |
|
3 |
20-30 |
Ж |
***MASKED*** |
|
4 |
20-30 |
Ж |
***MASKED*** |
Если злоумышленник знает из открытых источников, что в данной клинике лечится ровно 4 пациента в возрасте 20-30 лет, и он знает пол трёх из них (M, M, Ж из больничных отчётов), то он может вывести, что четвёртый пациент — женщина. Затем, если он знает распределение диагнозов (например, 75% пациентов с этим возрастом и полом имеют диагноз A), он может с высокой вероятностью предположить диагноз [9].
Инференс-атаки особенно опасны в контексте маскирования, потому что злоумышленник может использовать статистические свойства маскированных данных для восстановления исходной информации [3; 8]. Для защиты от инференс-атак необходимо применять концепции, описанные в разделе 1.2.
2.2 Атаки по перекрёстному связыванию таблиц
Одна из наиболее опасных уязвимостей PostgreSQL Anonymizer заключается в возможности перекрёстного связывания маскированных таблиц с внешними источниками данных [2; 7].
Предположим, таблица 2, маскированая таблица заказов:
Таблица 2.
Маскированная таблица заказов
|
Id_заказа |
Id_клиента |
Дата_заказа |
Количество |
Товар |
|
1001 |
emp_12345 |
2025-01-15 |
15000 |
Ноутбук |
|
1002 |
emp_12345 |
2025-01-20 |
5000 |
Мышка |
|
1003 |
emp_54321 |
2025-01-15 |
20000 |
Монитор |
И таблица 3, маскирована таблица сотрудников:
Таблица 3.
Маскированная таблица сотрудников
|
Id_сотрудника |
Имя |
Отдел |
Зарплата |
|
emp_12345 |
***MASKED*** |
Sales |
***MASKED*** |
|
emp_54321 |
***MASKED*** |
IT |
***MASKED*** |
Однако, если в таблице заказов остался столбец дата заказа, и злоумышленник знает, что конкретный сотрудник заказал ноутбук 15 января 2025 года, он может связать эту запись с конкретным идентификатором сотрудника. Затем, если столбец количество заказов не был маскирован, это может раскрыть информацию о доходах сотрудника.
Это демонстрирует критическую проблему: маскирование одних столбцов недостаточно; необходимо маскировать все идентификаторы, которые могут служить ключами для перекрёстного связывания [2; 7; 10].
3. Практическая реализация комплексной вадидации
3.1 Описание SQL-скрипта для комплексной валидации маскирования
Разработанный SQL-скрипт реализует комплексную систему валидации маскированных данных, проверяя одновременно три ключевые концепции защиты персональных данных: K-Анонимность, L-Разнообразие и T-Близость. Скрипт автоматизирует процесс проверки конфиденциальности данных и предоставляет анализ в виде таблицы результатов. Скрипт предназначен для запуска и проверки перед выкаткой маскированных данных в окружение и служит объективным доказательством соблюдения требований безопасности.
3.2 Архитектура разработанного скрипта
Скрипт состоит из пяти основных этапов:
Этап 1: Инициализация и настройка параметров
Универсальность скрипта позволяет использовать его с различными наборами данных. Для адаптации необходимо изменить пять параметров: название проверяемой таблицы, квайзи-идентификаторы и чувствительный атрибут. Можно изменять значения всех трех критериев (K, T, L), исходя из требований. По умолчанию используются условия: минимум записей для K-анонимности = 5; минимум вариантов для L-разнообразия = 2; расстояние для T-близости от 10% до 20%.
Этап 2: Удаление старых представлений и создание глобального распределения
На этом этапе создаётся представление глобального распределения (view) с названием v_global_distribution, которое вычисляет процентное соотношение каждого значения чувствительного атрибута во всей таблице.
Пример результата в таблице 4:
Таблица 4.
Пример таблицы с процентным соотношением
|
Диагноз |
Глобальное распределение |
|
Гипертония |
25.5 |
|
Диабет |
18.3 |
|
Рак |
12.1 |
|
Грипп |
44.1 |
Это распределение далее используется для проверки T-близости: в каждой группе квази-идентификаторов распределение диагнозов не должно значительно отличаться от глобального.
Этап 3: Расчёт K-анонимности и L-разнообразия
Этот блок группирует данные по всем комбинациям квази-идентификаторов и для каждой группы вычисляет: количество записей в группе - используется для проверки K-анонимности, количество разных диагнозов в группе - используется для проверки L-разнообразия и список всех диагнозов в группе. А также выставляются условия проверки обоих криетериев.
Пример результата работы скрипта на рисунке 1:

Рисунок 1. Результат работы скрипта
Этап 4: Расчёт T-близости
T-близость измеряет расстояние между распределением чувствительного атрибута в каждой группе квази-идентификаторов и глобальным распределением. Формула вычисляет вариационное расстояние между распределениями по алгоритму:
- Для каждой комбинации квази-идентификаторов вычисляется процент каждого значения диагноза;
- Вычисляется абсолютная разница между процентом в группе и глобальным процентом;
- Суммируются все разницы и делятся на 2.
Пример для распределения диагнозов:
Группа: age_range = 30-40, gender = M, city = Москва, 15 записей
Глобальное распределение:
Гипертония: 25.5%
Диабет: 18.3%
Рак: 12.1%
Грипп: 44.1%
Распределение в группе (15 записей):
Гипертония: 4 (26.7%)
Диабет: 2 (13.3%)
Рак: 3 (20.0%)
Грипп: 6 (40.0%)
Расчет:
T-distance = (|26.7-25.5| + |13.3-18.3| + |20.0-12.1| + |40.0-44.1|) / 2
= (1.2 + 5.0 + 7.9 + 4.1) / 2
= 18.2 / 2
= 9.1 / 100 = 0.091
Результат t_distance = 0.091 означает, что распределение в группе отличается от глобального на 9.1%, что соответствует статусу В НОРМЕ (так как < 10%).
Этап 5: Выходные данные и интерпретация результатов
Скрипт выводит одну итоговую таблицу 5 со следующими колонками:
Таблица 5.
Итоговая таблица
|
Критерий |
Описание |
|---|---|
|
quasi_id |
Комбинированный идентификатор группы |
|
record_count |
Количество записей в группе |
|
k_status |
PASS/FAIL — соответствует ли группа требованиям K-анонимности |
|
distinct_diseases |
Количество разных диагнозов в группе |
|
disease_list |
Список всех диагнозов в группе |
|
l_status |
PASS/FAIL — соответствует ли группа требованиям L-разнообразия |
|
t_distance |
Численное значение расстояния (0.0-1.0) |
|
t_status |
PASS/WARNING/FAIL — оценка T-близости |
Заключение
Федеральный Закон РФ №152 требует, чтобы обезличивание (анонимизация) проводилось таким образом, чтобы идентифицировать лицо было невозможно. PostgreSQL Anonymizer с методом статического маскирования и удаления может удовлетворить эти требования, если: все явные идентификаторы удалены, все квази-идентификаторы правильно маскированы, критерий К-Анонимности >= 5 (или больше, согласно политике компании), концепция L-разнообразия соблюдена (L ≥ 2), Концепция T-близости соблюдена (T ≤ 0.1), а также нет возможности перекрёстного связывания с внешними источниками.
В результате исследования был предложен и протестирован SQL‑подход к комплексной проверке маскирования по критериям K-анонимности, L-разнообразия и T-близости; данный подход позволяет выявлять группы квази‑идентификаторов с повышенным риском раскрытия чувствительного атрибута и может быть встроен в процесс подготовки обезличенных данных, как этап контроля качества перед выгрузкой.
Список литературы:
- Российская Федерация. Законы. О персональных данных : Федеральный закон № 152-ФЗ : [принят Государственной Думой 8 июля 2006 года : одобрен Советом Федерации 14 июля 2006 года]. — Текст : электронный // Гарант : справочно-правовая система. — URL: http://base.garant.ru/12148567/ (дата обращения: 04.12.2025).
- Карпова, И. П. О реализации метода обезличивания персональных данных / И. П. Карпова. — Текст : электронный // Высшая школа экономики : [сайт]. — URL: https://publications.hse.ru/pubs/share/folder/6lznn8cw57/83784965.pdf (дата обращения: 04.12.2025).
- Методы анонимизации персональных данных / М. А. Полтавцева, В. В. Платонов, А. Ф. Супрун, П. В. Семьянов. — Текст : электронный // CyberLeninka : [сайт]. — 2024. — URL: https://cyberleninka.ru/article/n/metody-anonimizatsii-personalnyh-dannyh (дата обращения: 04.12.2025).
- Ревизор приехал: pg_anon проверяет, всё ли скрыто. — Текст : электронный // Хабр : [сайт]. — 2025. — 23 января. — URL: https://habr.com/ru/companies/rostelecom/articles/876124/ (дата обращения: 04.12.2025).
- Модуль pgpro_anonymizer. — Текст : электронный // Postgres Professional : [сайт]. — URL: https://postgrespro.ru/docs/enterprise/current/pgpro-anonymizer (дата обращения: 04.12.2025).
- Садовников, Д. Обезличивание персональных данных в России и в Европе: когда данные перестают быть персональными / Д. Садовников. — Текст : электронный // Закон.ру : [сайт]. — 2021. — 5 ноября. — URL: https://zakon.ru/blog/2021/11/05/obezlichivanie_personalnyh_dannyh_v_rossii_i_v_evrope_kogda_dannye_perestayut_byt_personalnymi (дата обращения: 04.12.2025).
- Борисов, А. В. Моделирование процесса обезличивания персональных данных / А. В. Борисов // Программирование. — 2023. — № 5. — С. 19–34.
- Как обезличить персональные данные. — Текст : электронный // Хабр : [сайт]. — 2022. — 25 сентября. — URL: https://habr.com/ru/companies/rubda/articles/688116/ (дата обращения: 04.12.2025).
- Утечки данных: как бизнесу их обнаружить, предотвратить и избежать штрафов / Yandex Cloud Blog. — 2025. — Текст : электронный. — URL: https://yandex.cloud/ru/blog/data-leakage-fines (дата обращения: 04.12.2025).
- Методы защиты больших данных / Е. Ю. Ситников. — Текст : электронный // БГУИР : [сайт]. — 2022. — май. — URL: https://libeldoc.bsuir.by/bitstream/123456789/48384/1/Sitnikov_Metody.pdf (дата обращения: 04.12.2025).

