SilentLink — Протокол Безопасного Обмена Сообщениями
Описание
SilentLink — это современный протокол сквозного шифрования, разработанный для обеспечения безопасного и приватного обмена сообщениями в режиме реального времени. Он создан с целью максимальной защиты данных пользователей, используя постквантовые криптографические алгоритмы и предоставляя функциональность для безопасных групповых чатов и поддержки нескольких устройств.
Особенности
- Постквантовая безопасность: Использует алгоритмы, устойчивые к квантовым атакам, такие как CRYSTALS-Kyber для обмена ключами.
- Сквозное шифрование: Обеспечивает конфиденциальность сообщений от отправителя до получателя.
- Совершенная прямая секретность (PFS): Компрометация текущих ключей не раскрывает прошлые сообщения.
- Поддержка нескольких устройств: Пользователь может использовать несколько устройств одновременно с безопасной синхронизацией.
- Групповые чаты: Безопасный групповой обмен сообщениями.
- Сокрытие метаданных: Реализованы методы обфускации метаданных для повышения конфиденциальности.
- Правдоподобное отрицание: Отправитель может отрицать факт отправки конкретного сообщения.
- Открытый исходный код: Проект открыт для сообщества и доступен для аудита.
Обновления и улучшения
1. Переход на постквантовую безопасность с использованием Kyber
- Замена x25519 на Kyber: Мы обновили алгоритм обмена ключами, заменив
x25519
(основанный на эллиптических кривых) на постквантовый алгоритм CRYSTALS-Kyber, обеспечивающий устойчивость к квантовым атакам.
- Обновление криптографических примитивов: Включены функции для генерации и использования ключей Kyber, а также обновлены механизмы шифрования и расшифровки данных.
- Модификация протокола Double Ratchet: Обновлены механизмы генерации корневых и цепных ключей для обеспечения постквантовой безопасности.
2. Оптимизация серверной архитектуры с использованием FastAPI
- Переход на FastAPI и Redis: Серверная часть переписана с использованием FastAPI и Redis для повышения производительности и масштабируемости.
- Асинхронная обработка: Использование асинхронных функций и обработчиков для эффективного управления соединениями.
- Docker и Docker Compose: Контейнеризация приложения для облегчения развёртывания и масштабирования.
- Горизонтальное масштабирование: Возможность запуска нескольких экземпляров сервера и распределения нагрузки.
3. Обфускация метаданных и улучшение конфиденциальности
- Паддинг сообщений: Сообщения дополняются случайными данными до фиксированного размера для сокрытия реальной длины.
- Фиктивные сообщения: Периодическая отправка фиктивных сообщений для затруднения анализа трафика.
- Фиксированные интервалы отправки: Отправка сообщений через равные или случайные промежутки времени.
4. Оптимизация алгоритмов и операций
- Аппаратные ускорения: Проверка и использование аппаратных ускорений для криптографии при доступности.
- Эффективные алгоритмы: Оптимизация криптографических операций для снижения нагрузки на процессор и ускорения работы приложения.
Установка
Примечание: Убедитесь, что у вас установлены все необходимые зависимости, включая cryptography
, asyncio
, fastapi
, uvicorn
и redis
. Если вы планируете использовать постквантовые алгоритмы, установите соответствующие библиотеки, такие как pykyber
.
Клонирование репозитория и установка зависимостей
git clone https://github.com/SilentLink-lab/silentlink-protocol.git
cd silentlink-protocol
pip install -r requirements.txt
Использование
Запуск сервера с использованием Docker Compose
Убедитесь, что у вас установлены Docker и Docker Compose.
docker-compose up --build
Сервер будет доступен по адресу ws://localhost:8765/ws/{username}/{device_id}
.
Запуск клиента
Создайте файл клиента, например client_alice.py
:
import asyncio
from silentlink import User # Предполагая, что пакет установлен или доступен в PYTHONPATH
async def main():
alice = User('Alice', 'password123')
await alice.connect('ws://localhost:8765')
# Отправка сообщения
await alice.send_message('Bob', b'Привет, Bob!')
if __name__ == '__main__':
asyncio.run(main())
Запустите клиента:
python client_alice.py
Управление устройствами
Пользователь может управлять своими устройствами:
# Получение списка устройств
devices = await alice.list_devices()
print("Мои устройства:", devices)
# Удаление устройства
success = await alice.remove_device('device_id_to_remove')
if success:
print("Устройство удалено успешно")
Документация
Файлы исходного кода
silentlink/user.py
— Реализация пользователя, управление сессиями и подключениями.
silentlink/protocol.py
— Реализация протокола Double Ratchet и криптографических операций.
silentlink/crypto.py
— Криптографические примитивы и функции.
server.py
— Реализация сервера для маршрутизации сообщений и управления устройствами.
silentlink/utils.py
— Вспомогательные функции.
Криптографические примитивы
- Постквантовый обмен ключами: CRYSTALS-Kyber (Kyber512)
- Симметричное шифрование: ChaCha20-Poly1305
- Хеш-функции: SHA-256
- HMAC: HMAC-SHA256
- Ключевые деривации: HKDF с использованием SHA-256
- Цифровые подписи: Ed25519 (планируется переход на постквантовые алгоритмы)
Протокол Double Ratchet
- Обновление ключей: Реализует рачеты с использованием Kyber для обновления ключей после каждого сообщения.
- Безопасность: Обеспечивает совершенную прямую секретность и форвардную секретность.
Аутентификация и проверка подлинности ключей
- Цифровые сертификаты: Публичные ключи пользователей подписываются их приватными ключами Ed25519 и передаются в виде сертификатов.
- Механизм TOFU: При первом получении публичного ключа собеседника он сохраняется; при изменении ключа пользователь получает предупреждение.
Обфускация метаданных
- Паддинг сообщений: Сообщения дополняются до фиксированного размера случайными данными для скрытия реального размера.
- Фиктивные сообщения: Периодическая отправка фиктивных сообщений для затруднения анализа трафика.
- Фиксированные интервалы отправки: Отправка сообщений через равные или случайные промежутки времени.
Оптимизация серверной архитектуры
- FastAPI и Redis: Использование современных технологий для повышения производительности.
- Асинхронная обработка: Эффективное управление большим количеством одновременных соединений.
- Горизонтальное масштабирование: Возможность масштабирования сервера по мере роста нагрузки.
Безопасность
- Шифрование приватных ключей: Приватные ключи шифруются при хранении, используя ключ, производный от пароля пользователя.
- Защита от атак по сторонним каналам: Используются проверенные криптографические библиотеки, устойчивые к подобным атакам.
- Обработка ошибок: Улучшена обработка ошибок и логирование для повышения безопасности и упрощения отладки.
- Защита от Replay Attack: Внедрен механизм защиты от повторных отправок сообщений.
- Обфускация метаданных: Реализованы методы для скрытия метаданных и затруднения анализа трафика.
Вклад
Мы приветствуем вклад сообщества! Если вы хотите улучшить SilentLink:
- Форкните репозиторий.
- Создайте ветку для ваших изменений.
- Внесите изменения и зафиксируйте их.
- Отправьте изменения в ваш форк.
- Создайте Pull Request в оригинальный репозиторий.
Лицензия
Этот проект лицензирован под лицензией MIT. Подробнее см. в файле LICENSE.
Контакты
Пожертвования
Если вы хотите поддержать развитие проекта, вы можете сделать пожертвование на следующие кошельки:
- Bitcoin:
1GYpJpKSi1Sn7LXexYfva8Yvu5u7WkwJbo
- ETH ERC20:
0x7b6da964518b161ea8b2f1d83f12f99615380984
- USDT TRC20:
TLLx5Pie2BDkRbDRxTxBa28YTaMgg7uuzr
- Dogecoin:
DEs46phF9Sa1ReNSD853TzLcg9JkxfWeQL
Если у вас возникнут вопросы или потребуется помощь, пожалуйста, свяжитесь с нами!