2024-03-12 00:00:22 +05:30
|
|
|
|
1. Введение
|
2024-04-17 01:13:02 +05:30
|
|
|
|
1.1. Безопасность и модель угроз
|
|
|
|
|
2. Базовая терминология
|
|
|
|
|
3. Криптография
|
|
|
|
|
3.1. Дескриптор криптоалгоритма [CryptoDs]
|
|
|
|
|
3.1.1. Дескриптор хэш-функции [HashCryptoDs]
|
|
|
|
|
3.1.2. Дескриптор симметричного шифра [SymCiphCryptoDs]
|
|
|
|
|
3.1.3. Дескриптор асимметричного шифра [AsymCiphCryptoDs]
|
|
|
|
|
3.2. Дескриптор набора криптоалгоритмов [CryptoPack]
|
|
|
|
|
3.2.1. Набор для хэширования [HashCryptoPack]
|
|
|
|
|
3.2.2. Набор для симметричного шифрования [SymCiphCryptoPack]
|
|
|
|
|
3.2.3. Набор для подписи [SignCryptoPack; набор для подписи, т.е. AsymCiphCryptoDs + HashCryptoDs]
|
|
|
|
|
3.2.4. Набор для генерации ключей [KDCryptoPack; набор для Key Derivation, т.е. существующая KDF или SymCiphCryptoDs + HashCryptoDs]
|
|
|
|
|
3.2.4.1. Стартовое значение для KDF [KDInitValue; значение, которым впервые инициализируется KDF]
|
|
|
|
|
3.2.4.2. Константа для KDF [KDPrivConst; приватное значение, используемое в качестве второго аргумента KDF]
|
|
|
|
|
4. Установка соединения
|
|
|
|
|
4.1. Возможные параметры
|
|
|
|
|
4.1.1. Магическое число протокола
|
|
|
|
|
4.1.2. Версия протокола
|
|
|
|
|
4.2. Запрос рукопожатия
|
|
|
|
|
4.3. Ответ на рукопожатие
|
|
|
|
|
5. Сессия
|
|
|
|
|
5.1. Поток
|
2024-04-23 01:55:33 +05:30
|
|
|
|
5.1.1. Состояние [StreamState; Running, Desynchronized]
|
2024-04-17 01:13:02 +05:30
|
|
|
|
5.1.2. Идентификатор потока [StreamId, SrvStreamId, CltStreamId]
|
|
|
|
|
5.1.3. Секрет потока [StreamSecret]
|
|
|
|
|
5.1.4. Криптографические параметры потока
|
|
|
|
|
5.1.5. Параметры сжатия потока
|
|
|
|
|
5.1.6. Контроль последовательности
|
|
|
|
|
5.1.7. Шумовые пакеты
|
|
|
|
|
5.2. Секрет сессии [SessionSecret]
|
2024-03-12 00:00:22 +05:30
|
|
|
|
6. Событие
|
2024-04-17 01:13:02 +05:30
|
|
|
|
6.1. Тип события
|
|
|
|
|
6.2. Зарезервированные типы и диапазоны типов событий
|
|
|
|
|
6.3. Содержание события
|
|
|
|
|
6.3.1. Формат содержания зарезервированных событий
|
|
|
|
|
6.4. Запрос и ответ [абстрактно]
|
|
|
|
|
7. Пакет
|
|
|
|
|
7.1. Заголовок пакета
|
|
|
|
|
7.1.1. Код аутентификации [Packet Authentication Code, PAC, CltPAC, SrvPAC; проверка целостности и достоверности]
|
|
|
|
|
7.1.2. Флаги
|
2024-04-23 01:55:33 +05:30
|
|
|
|
7.1.3. Идентификатор ответа [RespId; мб стоит сделать PacketID и обязательным для всех, дабы перезапрашивать в случае повреждения]
|
2024-04-17 01:13:02 +05:30
|
|
|
|
7.2. Полезная нагрузка
|
|
|
|
|
7.2.1. Шум в полезной нагрузке пакета
|
|
|
|
|
7.3. Структура и шифрование
|
|
|
|
|
7.4. Пачка пакетов и разбиение полезной нагрузки
|
|
|
|
|
8. Транспортный адаптер
|
|
|
|
|
8.1. Дескриптор транспортного адаптера [TransportDs]
|
|
|
|
|
8.2. Свойства адаптеров
|
|
|
|
|
8.2.1. Максимальный размер полезной нагрузки
|
|
|
|
|
8.2.2. Гарантия последовательности
|
|
|
|
|
8.2.3. Гарантия обнаружения недоставки [?]
|
|
|
|
|
8.2.4. Гарантия целостности
|
|
|
|
|
8.2.5. Наличие шифрования
|
2024-04-23 01:55:33 +05:30
|
|
|
|
8.3. Список адаптеров [мб стоит вынести в отдельную спеку]
|
2024-04-17 01:13:02 +05:30
|
|
|
|
8.3.1. UDP-raw
|
|
|
|
|
8.3.2. TCP-raw
|
|
|
|
|
8.3.3. HTTP1.1-text+binary [текстовые HTTP/1.1 POST-запросы и бинарные ответы]
|
|
|
|
|
8.3.4. [???]
|
|
|
|
|
9. Сериализация данных [Linear Binary Map (?)]
|
|
|
|
|
9.1. Используемые ключи полезной нагрузки
|
|
|
|
|
10. Расширения протокола [SPX]
|
2024-03-12 00:00:22 +05:30
|
|
|
|
10.1. Идентификатор расширения [SPXI]
|
|
|
|
|
10.2. Дескриптор расширения [SPXD]
|