Полнофункциональная система управления IoT-устройствами с шифрованием данных на всех уровнях взаимодействия. Реализует безопасное управление устройствами через шлюзы с использованием сессионных ключей и криптографических протоколов.
- 🔒 End-to-End Шифрование:
- AES-GCM для передачи данных
- HKDF для генерации сессионных ключей
- Индивидуальные ключи для каждого устройства
- 🌐 Многоуровневая архитектура:
- Устройства → Шлюзы → Облако → Веб-интерфейс
- 📊 Панель управления:
- Управление устройствами в реальном времени
- Генерация токенов доступа
- Мониторинг состояния системы
- ⚙️ Поддержка устройств:
- Лампочки (управление яркостью)
- Умные замки
- Датчики температуры/влажности
- 🔐 Система безопасности:
- Механизм обнаружения скомпрометированных устройств
- Валидация сессионных ключей
- Защита от MITM-атак
Backend:
- Python 3.9+
- Flask (веб-интерфейс)
- SQLite (база данных)
- Cryptography (AES-GCM, HKDF)
- Многопоточность
Frontend:
- HTML5, CSS3
- Jinja2 шаблоны
- Vanilla JS
- Клонировать репозиторий:
git clone https://github.com/nedoletoff/secure-iot-system.git
cd secure-iot-system
- Установить зависимости:
pip install -r requirements.txt
- Запустить систему:
python run_system.py --gateways 2 --devices-per-gateway 3
Параметры запуска:
--gateways
: Количество шлюзов (по умолчанию: 2)--devices-per-gateway
: Устройств на шлюз (по умолчанию: 3)
После запуска система будет доступна по адресу: http://localhost:5000
Данные для входа:
- Администратор:
admin/admin123
- Пользователь:
user/user123
(создается через админку)
graph TD
A[Устройства] -->|Зашифрованное соединение| B[Шлюзы]
B -->|Защищенный канал| C[Облачный сервер]
C --> D[База данных]
C --> E[Веб-интерфейс]
E --> F[Пользователи]
-
Устройства:
- Умные лампочки (Bulb)
- Умные замки (Lock)
- Датчики (Sensor)
-
Шлюзы (Gateways):
- Посредники между устройствами и облаком
- Управляют сессионными ключами устройств
- Агрегируют телеметрию
-
Облачный сервер (Cloud):
- Центральный управляющий компонент
- Хранит ключи устройств и шлюзов
- Обрабатывает команды пользователей
-
Веб-интерфейс:
- Панель управления устройствами
- Администрирование системы
- Генерация токенов доступа
- Управление устройствами
- Просмотр и создание шлюзов
- Генерация токенов доступа
- Управление пользователями
Для обычных пользователей:
- Управление устройствами через токены
- Просмотр состояния устройств
- Контроль параметров устройств
Панель управления устройствами
-
Лампочки:
- Включение/выключение
- Регулировка яркости (0-100%)
-
Замки:
- Открытие/закрытие
- Просмотр состояния
-
Датчики:
- Чтение температуры
- Чтение влажности
- Обновление показаний
sequenceDiagram
participant User
participant Web
participant Cloud
participant Gateway
participant Device
User->>Web: Отправка команды
Web->>Cloud: Запрос с токеном
Cloud->>Gateway: Зашифрованная команда
Gateway->>Device: Зашифрованный запрос
Device-->>Gateway: Зашифрованный ответ
Gateway-->>Cloud: Зашифрованный ответ
Cloud-->>Web: Результат выполнения
Web-->>User: Обновление интерфейса
# Пример шифрования данных
encrypted_data = CryptoUtils.encrypt(
json.dumps(command).encode(),
session_key
)
- Уникальные ключи для каждого устройства
- Сессионные ключи с ограниченным временем жизни
- AEAD (AES-GCM) для аутентификации и шифрования
def handle_execute(self, conn, message):
if self.compromised:
self.logger.warning("Device compromised, ignoring command")
return
# ...код обработки команд...
- Автоматическое блокирование скомпрометированных устройств
- Проверка целостности сообщений
- Защита от повторной передачи команд
- Динамическое создание шлюзов и устройств
- Балансировка нагрузки между шлюзами
- Изолированные сессии для каждого подключения
- Подробное логирование всех операций
- Визуализация состояния устройств
- Отслеживание последней активности
secure-iot-system/
├── cloud.py # Облачный сервер
├── gateway.py # Шлюзы
├── devices/ # Устройства
│ ├── base_device.py # Базовый класс устройств
│ ├── bulb.py # Умные лампочки
│ ├── lock.py # Умные замки
│ ├── sensor.py # Датчики
├── web_interface/ # Веб-интерфейс
│ ├── templates/ # HTML шаблоны
│ ├── web_interface.py # Flask приложение
├── database.py # Работа с базой данных
├── crypto.py # Криптографические функции
├── logger.py # Система логирования
├── run_system.py # Запуск всей системы
├── requirements.txt # Зависимости
└── README.md # Документация
Этот проект распространяется под лицензией MIT. Подробнее см. в файле LICENSE.
Автор: Никита Лучкин (nedoletoff)
Дата создания: Июнь 2025
Контактная информация: [email protected]
GitHub: https://github.com/nedoletoff
Примечание: Для работы с реальными IoT-устройствами требуется дополнительная адаптация протокола связи и криптографических механизмов под конкретные аппаратные платформы.