Эксперимент по сравнению скорости алгоритмов шифрования
Это программа для научного эксперимента, описанного в проекте «КриптоБарьер: умный помощник для выбора алгоритма шифрования больших данных».
Что делает программа
- Создаёт тестовые файлы разных размеров (1 КБ, 100 КБ, 1 МБ, 10 МБ)
- Шифрует их четырьмя способами:
- AES-256 (симметричное шифрование, режим CBC)
- RSA-2048 (асимметричное шифрование, только для ключей)
- Гибридная схема (AES для данных + RSA для ключа сессии)
- ChaCha20 (современный потоковый шифр)
- Замеряет время выполнения, нагрузку на процессор (CPU) и использование оперативной памяти (RAM)
- Проводит 10 повторений для каждого теста и усредняет результаты
- Выводит подробные таблицы с результатами
- Строит графики сравнения скорости и загрузки CPU
- Рассчитывает ускорение ChaCha20 относительно AES-256
Как запустить
- Убедитесь, что у вас установлен Python 3.9 или новее
- Установите необходимые библиотеки из файла requirements.txt: pip install -r requirements.txt
- Запустите программу: python encryption_experiment.py
Результаты эксперимента
При запуске программа создаёт следующие файлы:
time_results.csv— время шифрованияcpu_results.csv— загрузка CPUmem_results.csv— использование памятиcrypto_speed_comparison.png— график сравнения скоростиcpu_comparison.png— график сравнения загрузки CPU
Ниже приведены результаты, полученные в ходе выполнения эксперимента (усреднённые по 10 замерам).
Время шифрования (секунды)
| Размер | AES-256 | RSA-2048 | Гибрид | ChaCha20 | Ускорение |
|---|---|---|---|---|---|
| 1 КБ | 0.000067 | 0.000106 | 0.000163 | 0.000064 | +5.2% |
| 100 КБ | 0.000315 | 0.000108 | 0.000392 | 0.000176 | +44.1% |
| 1 МБ | 0.002785 | 0.000093 | 0.002580 | 0.001485 | +46.7% |
| 10 МБ | 0.029284 | 0.000097 | 0.027647 | 0.016742 | +42.8% |
Загрузка CPU (секунды процессорного времени)
| Размер | AES-256 | RSA-2048 | Гибрид | ChaCha20 | Ускорение CPU |
|---|---|---|---|---|---|
| 1 КБ | 0.000 | 0.000 | 0.000 | 0.000 | — |
| 100 КБ | 0.001 | 0.000 | 0.001 | 0.000 | +100% |
| 1 МБ | 0.002 | 0.000 | 0.003 | 0.001 | +50% |
| 10 МБ | 0.030 | 0.001 | 0.028 | 0.017 | +43.3% |
Использование оперативной памяти (МБ)
| Размер | AES-256 | RSA-2048 | Гибрид | ChaCha20 |
|---|---|---|---|---|
| 1 КБ | 0.000 | 0.000 | 0.000 | 0.000 |
| 100 КБ | 0.000 | 0.000 | 0.000 | 0.000 |
| 1 МБ | 1.000 | 0.000 | 0.988 | 0.887 |
| 10 МБ | 12.000 | 0.000 | 12.000 | 11.100 |
Графики


Примечание: значения могут незначительно меняться при каждом запуске из-за генерации случайных данных и системной нагрузки.
Выводы
- ChaCha20 стабильно быстрее AES-256 на всех объёмах данных, начиная с 100 КБ (ускорение от 42% до 47%).
- Гибридная схема (AES+RSA) показывает производительность, близкую к чистому AES.
- RSA-2048 эффективен только для шифрования ключей (время практически не зависит от размера файла).
- На больших объёмах (10 МБ) ChaCha20 экономит около 1 МБ оперативной памяти по сравнению с AES.
- По нагрузке на CPU ChaCha20 также даёт выигрыш до 43% на 10 МБ и до 100% на малых объёмах (где AES потребляет заметное процессорное время, а ChaCha20 — нет).
Структура проекта
crypto-experiment/ encryption_experiment.py # Основная программа requirements.txt # Список библиотек README.md # Документация time_results.csv # Результаты времени cpu_results.csv # Результаты CPU mem_results.csv # Результаты памяти crypto_speed_comparison.png # График скорости cpu_comparison.png # График загрузки CPU
Используемые технологии
- Python 3.9+
- Библиотека cryptography для реализации алгоритмов шифрования
- psutil для замера CPU и памяти
- matplotlib и numpy для визуализации результатов
Автор
Шелковникова Анастасия, 9 класс
МБОУ Лицей №3, г. Барабинск
Научный руководитель: Тишина Оксана Владимировна