• XSS.stack #1 – первый литературный журнал от юзеров форума

Протокол безопасного и приватного обмена сообщениями

silentlink

floppy-диск
Пользователь
Регистрация
21.11.2024
Сообщения
8
Реакции
3
Всех приветствую, представляю на суд https://github.com/SilentLink-lab/silentlink-protocol . Буду рад вашей конструктивной критике!

# SilentLink — Протокол безопасного обмена сообщениями

## Описание


**SilentLink** — это современный протокол сквозного шифрования, разработанный для обеспечения безопасного и приватного обмена сообщениями в режиме реального времени. Он ориентирован на максимальную защиту данных пользователей, используя передовые криптографические методы, включая постквантовые алгоритмы, и предоставляет функциональность для безопасных групповых чатов и поддержки нескольких устройств.

## Особенности

- **Сквозное шифрование:** Обеспечивает конфиденциальность сообщений от отправителя до получателя.
- **Совершенная прямая секретность (PFS):** Компрометация текущих ключей не раскрывает прошлые сообщения.
- **Постквантовая безопасность:** Использует алгоритмы, устойчивые к квантовым атакам (при использовании соответствующих библиотек).
- **Поддержка нескольких устройств:** Пользователь может использовать несколько устройств одновременно с безопасной синхронизацией.
- **Групповые чаты:** Безопасный групповой обмен сообщениями.
- **Сокрытие метаданных:** Реализованы методы обфускации метаданных для повышения конфиденциальности.
- **Правдоподобное отрицание:** Отправитель может отрицать факт отправки конкретного сообщения.
- **Открытый исходный код:** Проект открыт для сообщества и доступен для аудита.

## Обновления и улучшения

### Усиление механизмов аутентификации и проверки подлинности ключей


- **Цифровые подписи:** Внедрены цифровые подписи с использованием алгоритма Ed25519 для аутентификации публичных ключей пользователей.
- **Механизм TOFU:** Реализован механизм Trust On First Use (TOFU) с уведомлениями о смене ключей, позволяющий пользователям отслеживать изменения в публичных ключах собеседников.

### Полная реализация протокола Double Ratchet

- **DH-рачеты и симметричные рачеты:** Полностью реализован протокол Double Ratchet, включая Диффи-Хеллмана рачеты и симметричные рачеты для обновления ключей.
- **PFS и защита после компрометации:** Обеспечена совершенная прямая секретность и защита после компрометации ключей.

### Защита от повторных отправок сообщений (Replay Attack)

- **Отслеживание индексов сообщений:** Внедрен механизм отслеживания индексов полученных сообщений для предотвращения обработки дубликатов.
- **Улучшенная обработка ошибок:** Добавлено подробное логирование и специфические исключения для повышения безопасности и удобства отладки.

### Обфускация метаданных

- **Паддинг сообщений:** Сообщения дополняются случайными данными до фиксированного размера для сокрытия реальной длины сообщений.
- **Фиктивные сообщения:** Периодическая отправка фиктивных сообщений для затруднения анализа трафика.
- **Фиксированные интервалы отправки:** Отправка сообщений через равные промежутки времени для обфускации временных меток.

### Оптимизация серверной архитектуры

- **FastAPI и Redis:** Сервер переписан с использованием FastAPI и Redis для повышения производительности и масштабируемости.
- **Асинхронная обработка:** Использование асинхронных функций и обработчиков для эффективного управления соединениями.
- **Docker и Docker Compose:** Контейнеризация приложения для облегчения развёртывания и масштабирования.
- **Горизонтальное масштабирование:** Возможность запуска нескольких экземпляров сервера и распределения нагрузки.

### Оптимизация алгоритмов и операций

- **Аппаратные ускорения:** Проверка и использование аппаратных ускорений для криптографии (например, AES-NI) при доступности.
- **Эффективные алгоритмы:** Оптимизация криптографических операций для снижения нагрузки на процессор и ускорения работы приложения.

## Установка

**Примечание:** Убедитесь, что у вас установлены все необходимые зависимости, включая `cryptography`, `asyncio`, `fastapi`, `uvicorn` и `redis`. Если вы планируете использовать постквантовые алгоритмы, установите соответствующие библиотеки, такие как `pqcrypto`.

### Клонирование репозитория и установка зависимостей


Код:
git clone https://github.com/SilentLink-lab/silentlink-protocol.git
cd silentlink-protocol
pip install -r requirements.txt
 
Приложение только под Линукс пока что? Клиент на чем написан, надеюсь не Электрон?

С названием интересная ситуация, поищите silentlink в гугле :)
 
Последнее редактирование модератором:
Если убрать лишнее:
Python:
from .crypto import (
    generate_x25519_keypair,
    serialize_x25519_public_key,
    x25519_derive_shared_secret,
    encrypt,
    decrypt,
    hmac_sha256,
    verify_hmac
)

def encrypt(key, plaintext):
    """
    Шифрует данные с использованием ChaCha20-Poly1305.

    Args:
        key (bytes): 32-байтный ключ.
        plaintext (bytes): Данные для шифрования.

    Returns:
        bytes: Нонс, объединенный с шифротекстом.
    """
    nonce = os.urandom(12)  # 96-битный нонс
    aead = ChaCha20Poly1305(key)
    ciphertext = aead.encrypt(nonce, plaintext, None)
    return nonce + ciphertext

message_key = hmac_sha256(session.send_chain_key, b'MessageKey')
ciphertext = encrypt(message_key, padded_plaintext)

Мой диплом по крипторгафии съела собака, но x25519 не постквантовый. x25519 это эл кривые.
Наличие сессионного ключа с цепочке сводит в нуль все постквантовое.

Представь это так: навесной замок с сканером пальца и сечатки, но дужка выполненна из коктейльной трубочки.
Не надо взламывать "постквантовый" x25519, если можно взломать обычный "доквантовый" ChaCha20

ПС вместо session.send_message_index можно использовать время
 
Мой диплом по крипторгафии съела собака, но x25519 не постквантовый. x25519 это эл кривые.
Наличие сессионного ключа с цепочке сводит в нуль все постквантовое.
слушай я вот тоже на днях что то гуглил на тему.
а есть вообще рейтинг какой то? че их всех так много то и все блин взламываются 😁
даже постквантовые
 
слушай я вот тоже на днях что то гуглил на тему.
а есть вообще рейтинг какой то? че их всех так много то и все блин взламываются 😁
даже постквантовые
Я не обладаю достаточной компетенцией, и поэтому не стану рекомендовать
 
Если убрать лишнее:
Python:
from .crypto import (
    generate_x25519_keypair,
    serialize_x25519_public_key,
    x25519_derive_shared_secret,
    encrypt,
    decrypt,
    hmac_sha256,
    verify_hmac
)

def encrypt(key, plaintext):
    """
    Шифрует данные с использованием ChaCha20-Poly1305.

    Args:
        key (bytes): 32-байтный ключ.
        plaintext (bytes): Данные для шифрования.

    Returns:
        bytes: Нонс, объединенный с шифротекстом.
    """
    nonce = os.urandom(12)  # 96-битный нонс
    aead = ChaCha20Poly1305(key)
    ciphertext = aead.encrypt(nonce, plaintext, None)
    return nonce + ciphertext

message_key = hmac_sha256(session.send_chain_key, b'MessageKey')
ciphertext = encrypt(message_key, padded_plaintext)

Мой диплом по крипторгафии съела собака, но x25519 не постквантовый. x25519 это эл кривые.
Наличие сессионного ключа с цепочке сводит в нуль все постквантовое.

Представь это так: навесной замок с сканером пальца и сечатки, но дужка выполненна из коктейльной трубочки.
Не надо взламывать "постквантовый" x25519, если можно взломать обычный "доквантовый" ChaCha20

ПС вместо session.send_message_index можно использовать время
Я заменил алгоритм обмена ключами x25519 на постквантовый алгоритм Kyber.

ChaCha20-Poly1305 оставлен в качестве симметричного шифра, так как он считается безопасным даже в контексте квантовых атак.

Я подумал насчет session.send_message_index. Хотя использование временных меток имеет свои преимущества, я решил пока оставить индексы сообщений для обеспечения порядка и защиты от повторных сообщений.
 
Я заменил алгоритм обмена ключами x25519 на постквантовый алгоритм Kyber.

ChaCha20-Poly1305 оставлен в качестве симметричного шифра, так как он считается безопасным даже в контексте квантовых атак.

Я подумал насчет session.send_message_index. Хотя использование временных меток имеет свои преимущества, я решил пока оставить индексы сообщений для обеспечения порядка и защиты от повторных сообщений.
кристалс?

постквант самих смсок шифр?
а междусобойные подписи тоже в посткванте ?

это и правда достаточно сложная тема аж мозг шевелится

работа отличная доведи до ума переводи на мобилки и начинай стричь бабос.
это первое постквант шифрование в мессенджерах?

апд оказывается нет и все паблик как раз им обладают.
а наши?!
 
Последнее редактирование:
кристалс?

постквант самих смсок шифр?
а междусобойные подписи тоже в посткванте ?

это и правда достаточно сложная тема аж мозг шевелится

работа отличная доведи до ума переводи на мобилки и начинай стричь бабос.
это первое постквант шифрование в мессенджерах?

апд оказывается нет и все паблик как раз им обладают.
а наши?!
Да, я использую CRYSTALS-Kyber для обмена ключами в моём протоколе. Это обеспечивает постквантовую безопасность на этапе установки сессии.

Для симметричного шифрования сообщений я использую ChaCha20-Poly1305

Пока я использую Ed25519 для цифровых подписей. Но ты прав для полной постквантовой безопасности необходимо перейти на постквантовые алгоритмы цифровых подписей. Я планирую изучить возможность внедрения постквантовых подписей в следующих версиях.

Не уверен, что мой протокол является первым с постквантовым шифрованием, но таких проектов действительно немного
 
но таких проектов действительно немного
вотсап сигнал и аймесадж
)))))))))))

ну или только в планах
 
кристалс?

постквант самих смсок шифр?
а междусобойные подписи тоже в посткванте ?

это и правда достаточно сложная тема аж мозг шевелится

работа отличная доведи до ума переводи на мобилки и начинай стричь бабос.
это первое постквант шифрование в мессенджерах?

апд оказывается нет и все паблик как раз им обладают.
а наши?!
В то время как многие существующие протоколы адаптируют постквантовые алгоритмы в уже существующие системы, мой протокол изначально разработан как протокол для обмена сообщениями с учетом постквантовой безопасности.
 
UPD:
Теперь вся криптографическая цепочка протокола становится постквантово устойчивой:
Обмен ключами: CRYSTALS-Kyber
Цифровые подписи: CRYSTALS-Dilithium

 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх