Coursework_2026

0

Описание

Языки

  • Python75,6%
  • HTML16,9%
  • Ruby7,5%
M
mariadavydova
README
Система электронного голосования с протоколом слепой подписи
 
О проекте:
Данный проект представляет собой исследовательскую и практическую реализацию протоколов слепой подписи (Blind Signature) для обеспечения конфиденциальности в системах электронного голосования. Работа выполнена в рамках курсовой работы.
 
Цель исследования:
Разработать и исследовать протоколы слепой подписи для создания анонимной и безопасной системы электронного голосования, а также провести сравнительный анализ производительности различных реализаций (RSA и ECC) на языках Python и Ruby.
 
Архитектура системы
Проект включает несколько компонентов:
 
```
┌─────────────────────────────────────────────────────────────────┐
│ СИСТЕМА ЭЛЕКТРОННОГО ГОЛОСОВАНИЯ │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Избиратель │────▶│ ЦИК │────▶│ Сервер │ │
│ │ (Клиент) │◀────│ (CA) │ │ голосования │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Ослепление │ │ Подпись │ │ Проверка │ │
│ │ голоса │ │ слепого │ │ подписи │ │
│ │ │ │ сообщения │ │ подсчёт │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
 
Компоненты системы (Компонент, Назначение, Порт):
 
Центризбирком (CA) - Выдаёт подписи на ослеплённые бюллетени - 8000
Сервер голосования - Принимает и проверяет подписанные голоса - 8001
RSA Микросервис - Тестирование производительности RSA - 8002
ECC Микросервис - Тестирование производительности ECC - 8003
 
 
Просмотр результатов
После запуска откройте в браузере:
Главная сервера голосования - http://localhost:8001/ - Статистика и навигация
Итоги голосования (графики) - http://localhost:8001/results-chart - Столбчатая и круговая диаграммы
Результаты в JSON - http://localhost:8001/results - JSON формат
Список всех голосов - http://localhost:8001/votes-list - Детальный список
Статистика ЦИК - http://localhost:8000/stats - Кто получил подписи
Очистка состояния ЦИК - http://localhost:8000/clear - Сброс данных
Очистка сервера голосования - http://localhost:8001/clear - Сброс данных
 
Структура проекта и ссылки для браузера
1. Главые серверы, которые НУЖНО ЗАПУСТИТЬ ПЕРЕД ПРОСМОТРОМ
ca_server.py - Центризбирком (выдаёт подписи) python ca_server.py http://localhost:8000
voting_server.py - Сервер голосования (считает голоса)- python voting_server.py- http://localhost:8001
blind_signature_microservice.py - RSA микросервис (тест производительности)- python blind_signature_microservice.py http://localhost:8002/performance
blind_signature_ecc_microservice.py ECC микросервис (тест производительности) python blind_signature_ecc_microservice.py
2. HTML-страницы для просмотра результатов (открываются без запуска серверов)
full_comparison.html Полное сравнение: ECC vs RSA, Python vs Ruby (все результаты в одном месте)
comparison_report.html Сравнение производительности ECC и RSA
ruby_vs_python_comparison.html Сравнение Python и Ruby на RSA
3. Ruby-файлы (тесты производительности)
blind_signature_rb_simple.rb - Тест RSA на Ruby - ruby blind_signature_rb_simple.rb
ruby_ecc_comparison.rb - Сравнение ECC vs RSA на Ruby - ruby ruby_ecc_comparison.rb
test_ruby_performance.rb - Быстрый тест Ruby - ruby test_ruby_performance.rb
4. Основная система голосования
demo.py - Запуск голосования (7 избирателей) - python demo.py (вывод в консоль)
voter_client.py - Клиент избирателя (используется demo.py)
blind_signature.py - Криптографические операции RSA (библиотека)
blind_signature_ecc.py - Криптографические операции ECC (библиотека)
5. Тестовые файлы
test_simple.py Диагностика серверов
test_votes.py Тест отправки голосов
test_attack.py Тест безопасности (атаки)
 
ЗАПУСК
СПОСОБ 1: открыть HTML-файлы (без запуска серверов) full_comparison.html →кликнутьх2→ все графики и таблицы с результатами
Способ 2: Запустить микросервисы для живого тестирования
# Терминал 1 python blind_signature_microservice.py
# Терминал 2 python blind_signature_ecc_microservice.py
затем в браузере:
RSA тесты: http://localhost:8002/performance
ECC тесты: http://localhost:8003/performance
Способ 3: Запустить систему голосования
# Терминал 1 python ca_server.py
# Терминал 2 python voting_server.py
# Терминал 3 python demo.py
Затем в браузере:
Главная: http://localhost:8001/
Графики: http://localhost:8001/results-chart
Список голосов: http://localhost:8001/votes-list
Статистика ЦИК: http://localhost:8000/stats
 
```
├── blind_signature.py RSA криптооперации
├── blind_signature_ecc.py ECC криптооперации
├── ca_server.py Сервер ЦИК (порт 8000)
├── voting_server.py Сервер голосования (порт 8001)
├── voter_client.py Клиент избирателя
├── demo.py Демонстрация голосования
├── blind_signature_microservice.py RSA микросервис (порт 8002)
├── blind_signature_ecc_microservice.py ECC микросервис (порт 8003)
├── blind_signature_rb_simple.rb Ruby тест RSA
├── ruby_ecc_comparison.rb Ruby сравнение ECC vs RSA
├── full_comparison.html 📊 ГЛАВНЫЙ ОТЧЁТ
├── comparison_report.html Сравнение ECC vs RSA
├── ruby_vs_python_comparison.html Сравнение Python vs Ruby
├── test_simple.py Диагностика
├── test_votes.py Тест голосования
├── test_attack.py Тест безопасности
├── requirements.txt Зависимости Python
└── README.md Этот файл
```