Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Anonimious

Система анонимизации и деанонимизации данных по продажам Анонимизирует исторические данные с сохранением статистических свойств, закономерностей и взаимосвязей для безопасной аналитики и прогнозирования.

🎯 Возможности

  • Поддержка форматов: CSV, Parquet, Excel
  • Гибкая анонимизация: выбор типов данных (категориальные, числовые, даты)
  • Сохранение свойств: распределения, корреляции, тренды, сезонность
  • Деанонимизация: восстановление реальных значений после анализа
  • Безопасность: шифрование маппингов AES-256
  • Web интерфейс: Streamlit GUI для простого использования
  • Docker: готовая контейнеризация для любой платформы
  • Портативность: легко передать на другой компьютер (TRANSFER.md)
  • Связанные данные: анонимизация нескольких файлов с общими идентификаторами (LINKED-DATA.md)
  • Согласованная анонимизация: один пароль = одинаковые анонимные значения в разных файлах (HOWTO-MULTIPLE-FILES.md)

💡 ВАЖНО: Если у вас несколько связанных файлов (например, продажи, склад, товары) с общими артикулами или ID, используйте один пароль для всех файлов! Это сохранит возможность делать JOIN между таблицами. Подробнее: LINKED-DATA.md и HOWTO-MULTIPLE-FILES.md

📦 Установка и запуск

🐳 Вариант 1: Docker (рекомендуется)

Самый простой способ - все уже настроено!

  1. Установите Docker Desktop
  2. Запустите приложение:
# Windows
docker-build.bat   # Собрать образ (первый раз)
docker-start.bat   # Запустить приложение

# Приложение откроется автоматически на http://localhost:8501

Полная документация по Docker: см. DOCKER.md

💻 Вариант 2: Локальная установка

Windows - батники (проще всего)

# Просто запустите батник - он всё настроит автоматически
start_app.bat      # Полная установка с созданием venv
quick_start.bat    # Быстрый запуск (если уже установлено)

Ручная установка

Шаг 1: Клонируйте репозиторий или скачайте файлы

Шаг 2: Создайте виртуальное окружение

Windows (CMD / Командная строка):

# Перейдите в папку проекта
cd C:\Users\Lenovo\Desktop\Anonimious

# Создайте виртуальное окружение
python -m venv venv

# Активируйте окружение (для CMD)
venv\Scripts\activate.bat

# Установите зависимости
pip install -r requirements.txt

# Проверьте установку
python --version
pip list

Windows (PowerShell) - если используете PowerShell:

# Перейдите в папку проекта
cd C:\Users\Lenovo\Desktop\Anonimious
# Создайте виртуальное окружение
python -m venv venv
# Активируйте окружение (для PowerShell)
.\venv\Scripts\Activate.ps1
# Если ошибка "выполнение сценариев отключено", выполните в PowerShell от администратора:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Установите зависимости
pip install -r requirements.txt

Linux/Mac:

cd Anonimious
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Вариант 2: Без виртуального окружения

# Просто установите зависимости глобально
pip install -r requirements.txt

Деактивация виртуального окружения

# Когда закончите работу (для CMD и PowerShell)
deactivate

⚠️ Решение проблем с активацией

Проблема: "не является внутренней или внешней командой"

  • Вы в CMD, а не в PowerShell
  • Решение: используйте venv\Scripts\activate.bat вместо .\venv\Scripts\Activate.ps1

Проблема: "выполнение сценариев отключено" в PowerShell

  • Откройте PowerShell от администратора
  • Выполните: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  • Закройте и откройте PowerShell заново

Как понять, что окружение активировано?

  • В начале строки появится (venv)
  • Пример: (venv) C:\Users\Lenovo\Desktop\Anonimious>

🚀 Быстрый старт

1. Анонимизация данных

# Анонимизировать все типы данных
python main.py anonymize -i data/input/sales.csv -o data/output/sales_anon.csv

# Только категориальные (ID клиентов, товаров и т.д.)
python main.py anonymize -i sales.csv -o sales_anon.csv --mode categorical

# Только числовые (цены, количества)
python main.py anonymize -i sales.csv -o sales_anon.csv --mode numeric

# Комбинация: категориальные + числовые (без дат)
python main.py anonymize -i sales.csv -o sales_anon.csv --categorical --numeric

2. Работа с анонимными данными

Используйте анонимизированные данные для:

  • Аналитики и визуализации
  • Прогнозирования
  • Машинного обучения
  • Передачи третьим лицам

3. Деанонимизация результатов

python main.py deanonymize \
    -i predictions_anon.csv \
    -o predictions_real.csv \
    -m data/mappings/mapping_20260201_123456.json \
    --encryption-key mypassword123

📖 Примеры использования

Пример 1: Анонимизация всех данных

python main.py anonymize \
    --input data/input/sales_2025.csv \
    --output data/output/sales_2025_anon.csv \
    --encryption-key secure_password_123

Результат:

  • customer_id: "CUST_001""ANON_CUSTOMER_ID_a8f3e2b1"
  • quantity: 1010.23 (добавлен шум)
  • sale_date: 2025-06-152024-10-20 (сдвиг 238 дней)

Пример 2: Только ID (категориальные)

python main.py anonymize \
    --input sales.csv \
    --output sales_anon.csv \
    --mode categorical

Результат:

  • Анонимизированы: customer_id, product_id, warehouse_id
  • Без изменений: quantity, price, sale_date

Пример 3: Исключить определенные поля

python main.py anonymize \
    --input sales.csv \
    --output sales_anon.csv \
    --exclude id,created_at,updated_at

Пример 4: Использование конфигурации

# Создать конфигурацию
python main.py create-config -o my_config.yaml

# Отредактировать my_config.yaml...

# Использовать конфигурацию
python main.py anonymize \
    --input sales.csv \
    --output sales_anon.csv \
    --config my_config.yaml

🔧 CLI Команды

anonymize - Анонимизация данных

Опции:
  -i, --input PATH          Входной файл (обязательно)
  -o, --output PATH         Выходной файл (обязательно)
  -c, --config PATH         Файл конфигурации
  --mode [all|categorical|numeric|datetime|custom]
                           Режим анонимизации (по умолчанию: all)
  --categorical            Анонимизировать категориальные
  --numeric                Анонимизировать числовые
  --datetime               Анонимизировать даты
  --exclude TEXT           Исключить колонки (через запятую)
  --include TEXT           Включить только эти колонки
  --mappings-output PATH   Путь для маппингов
  --encryption-key TEXT    Пароль для шифрования
  --no-encryption          Не шифровать маппинги

deanonymize - Деанонимизация данных

Опции:
  -i, --input PATH         Анонимизированный файл
  -o, --output PATH        Выходной файл
  -m, --mappings PATH      Файл маппингов
  --encryption-key TEXT    Пароль расшифровки

info - Информация о файле

python main.py info -i data.csv

create-config - Создать конфигурацию

python main.py create-config -o config.yaml

📁 Структура проекта

Anonimious/
├── main.py                    # Главный файл с CLI
├── requirements.txt           # Зависимости
├── config.yaml               # Конфигурация (пример)
├── README.md                 # Документация
│
├── src/
│   ├── __init__.py
│   ├── loader.py             # Загрузка данных
│   ├── exporter.py           # Экспорт данных
│   ├── config.py             # Управление конфигурацией
│   ├── anonymizer.py         # Анонимизация
│   ├── deanonymizer.py       # Деанонимизация
│   └── utils.py              # Утилиты
│
└── data/
    ├── input/                # Исходные данные
    ├── output/               # Анонимизированные данные
    ├── mappings/             # Маппинги (зашифрованные)
    └── reports/              # Отчеты

🔐 Методы анонимизации

1. Категориальные данные (ID, категории)

Метод: Детерминированный хэш-маппинг

  • customer_123ANON_CUSTOMER_ID_a8f3e2b1
  • Сохраняет частоты и взаимосвязи
  • Необратимо без маппинга

2. Числовые данные (цены, количества)

Метод: Дифференциальная приватность

  • Добавление гауссовского шума
  • Сохранение статистик (среднее, дисперсия, корреляции)
  • Параметр ε (epsilon) контролирует уровень приватности

3. Временные данные (даты)

Метод: Временной сдвиг

  • Единый сдвиг для всех дат
  • Сохранение относительных интервалов, сезонности, трендов
  • Сдвиг: 180-730 дней

⚙️ Конфигурация

Файл config.yaml:

# Что анонимизировать
anonymization_mode:
  categorical: true
  numeric: true
  datetime: true

# Параметры дифференциальной приватности
differential_privacy:
  epsilon: 1.0              # 0.1 = высокая приватность, 10 = низкая

# Параметры сдвига дат
datetime_shift:
  min_days: 180
  max_days: 730

🛡️ Безопасность

  • Шифрование маппингов: AES-256
  • Хэш-функции: SHA-256 с солью
  • Key Derivation: PBKDF2 (100,000 итераций)
  • Рекомендация: Используйте надежные пароли (12+ символов)

❗ Важно

Числовые поля НЕ деанонимизируются (шум необратим). Это нормально:

  • Статистические свойства сохранены
  • Анализ и прогнозирование работают корректно
  • Только категориальные ID и даты полностью обратимы

📊 Пример работы

Исходные данные:

customer_id | product_id | quantity | price  | sale_date
CUST_001    | PROD_A     | 10       | 99.99  | 2025-06-15
CUST_002    | PROD_B     | 5        | 149.50 | 2025-06-16

После анонимизации (--mode all):

customer_id              | product_id            | quantity | price   | sale_date
ANON_CUSTOMER_ID_a8f3... | ANON_PRODUCT_ID_b2e1..| 10.23    | 100.14  | 2024-10-20
ANON_CUSTOMER_ID_c4d7... | ANON_PRODUCT_ID_f9a3..| 5.17     | 149.82  | 2024-10-21

После деанонимизации:

customer_id | product_id | quantity | price   | sale_date
CUST_001    | PROD_A     | 10.23    | 100.14  | 2025-06-15
CUST_002    | PROD_B     | 5.17     | 149.82  | 2025-06-16

🐛 Решение проблем

"Неподдерживаемый формат"

  • Поддерживаются: .csv, .parquet, .xlsx, .xls

"Ошибка при расшифровке"

  • Проверьте правильность пароля
  • Убедитесь, что файл маппингов не поврежден

"Нет полей для анонимизации"

  • Проверьте режим анонимизации (--mode)
  • Проверьте список исключений (--exclude)

📝 Лицензия

MIT License

👤 Автор

Проект Anonimious Версия 0.1.0


Начните прямо сейчас:

python main.py anonymize -i your_data.csv -o anonymized.csv

About

Secure data anonymization tool with web GUI and Docker support

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages