libsrtp

Библиотека для реализации протокола SRTP (Secure Real-time Transport Protocol) и SRTCP (Secure Real-time Transport Control Protocol). Она предоставляет функции для шифрования, аутентификации и защиты целостности медиапотоков в реальном времени, используемых в VoIP, видеоконференциях и других приложениях потоковой передачи мультимедиа. Библиотека реализует стандарты RFC 3711 (SRTP) и RFC 6188 (шифрование для RTP).

Особенности

  • полная реализация протоколов SRTP и SRTCP;
  • поддержка различных алгоритмов шифрования (AES-128, AES-256) и аутентификации (HMAC-SHA1);
  • защита от replay-атак и управление криптографическим контекстом;
  • совместимость с протоколами RTP/RTCP и поддержка различных профилей.

Основные компоненты

libsrtp состоит из нескольких модулей, обеспечивающих криптографическую защиту RTP/RTCP-трафика и управление сессиями безопасности. (подробнее с документацией можно ознакомиться здесь).

Управление криптографическими сессиями

Библиотека использует понятие криптографического контекста (session) для управления ключами и параметрами безопасности для SRTP-потока. Каждый контекст содержит ключи шифрования, параметры аутентификации и счетчики пакетов.

Основные функции управления сессиями:

  • srtp_init() — инициализация библиотеки;
  • srtp_create() — создание SRTP-сессии с заданными параметрами;
  • srtp_add_stream() — добавление потока к существующей сессии;
  • srtp_remove_stream() — удаление потока из сессии;
  • srtp_dealloc() — освобождение ресурсов сессии;
  • srtp_shutdown() — деинициализация библиотеки.

Шифрование и дешифрование пакетов

libsrtp предоставляет функции для защиты (шифрование и аутентификация) и проверки (дешифрование и проверка целостности) RTP/RTCP-пакетов. Библиотека обрабатывает заголовки и полезную нагрузку пакетов в соответствии со стандартами SRTP.

Основные функции обработки пакетов:

  • srtp_protect() — защита RTP-пакета (шифрование и добавление аутентификационного тега);
  • srtp_unprotect() — проверка и дешифрование RTP-пакета;
  • srtp_protect_rtcp() — защита RTCP-пакета;
  • srtp_unprotect_rtcp() — проверка и дешифрование RTCP-пакета;
  • Автоматическое обновление ключей на основе счетчиков пакетов.

Алгоритмы шифрования и аутентификации

Библиотека поддерживает различные криптографические алгоритмы, определённые в профилях SRTP. Эти алгоритмы могут быть выбраны в зависимости от требований безопасности и производительности.

Поддерживаемые алгоритмы:

  • Шифрование: AES-128 (CTR и ICM режимы), AES-256, NULL-шифрование (без шифрования);
  • Аутентификация: HMAC-SHA1 (80-битный и 32-битный теги), NULL-аутентификация;
  • Профили SRTP: AES128_CM_HMAC_SHA1_80 (по умолчанию), AES128_CM_HMAC_SHA1_32, AES256_CM_HMAC_SHA1_80, AES256_CM_HMAC_SHA1_32.

Управление ключами и безопасность

libsrtp включает механизмы для управления ключами, включая генерацию, распределение и обновление ключей. Библиотека поддерживает мастер-ключи и производные ключи для шифрования и аутентификации.

Функции управления ключами:

  • srtp_update() — обновление ключей сессии (например, при достижении лимита пакетов);
  • srtp_set_user_data() и srtp_get_user_data() — хранение пользовательских данных в сессии;
  • Поддержка внешнего управления ключами через API;
  • Генерация salt и ключей деривации на основе мастер-ключей.

Защита от replay-атак и контроль целостности

Библиотека реализует механизмы защиты от повторной передачи пакетов (replay-атаки) и обеспечивает контроль целостности данных через аутентификационные теги.

Механизмы безопасности:

  • Защита от replay: проверка уникальности индекса пакета с использованием sliding window;
  • Аутентификация: вычисление HMAC для заголовка и данных пакета;
  • Проверка целостности: сравнение аутентификационных тегов на принимающей стороне;
  • Управление лимитами: автоматическое прекращение использования ключей после определённого количества пакетов.

Работа с RTP-заголовками и расширениями

libsrtp корректно обрабатывает стандартные и расширенные заголовки RTP, сохраняя неизменными поля, необходимые для маршрутизации, и защищая только те части пакета, которые требуются по стандарту.

Особенности обработки заголовков:

  • Защита только полезной нагрузки (payload) и некоторых расширений;
  • Сохранение неизменными полей SSRC, timestamp, sequence number;
  • Поддержка расширений RTP-заголовков (не зашифровываются, но могут быть аутентифицированы);
  • Обработка маркера (marker bit) и типа полезной нагрузки (payload type).

Интеграция с VoIP и видеосистемами

libsrtp легко интегрируется с популярными VoIP- и видеосерверами, клиентами и библиотеками обработки мультимедиа, такими как Asterisk, WebRTC, SIP-стеков.

Точки интеграции:

  • WebRTC: используется как часть стека безопасности для SRTP в WebRTC-соединениях;
  • Asterisk/FreeSWITCH: защита медиапотоков в телефонии;
  • SIP-клиенты: интеграция с библиотеками типа PJSIP, Sofia-SIP;
  • Собственные медиа-серверы: для защиты потоков в системах видеонаблюдения и конференц-связи.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "libsrtp/2.5.0@aurora",
    )    

Процесс локальной сборки описан в документации.

libsrtp

Library for SRTP (Secure Realtime Transport Protocol).
Лицензия
BSD-3-Clause
Версия
Автор
Angelica Volkova <angelica.volkova@fruct.org>
Скачать
armv7
65.54 Kb
MD5: 254a9e840049e197362a65617b5bedf0
Updated: 29.10.2025, 13:55:55
armv8
70.11 Kb
MD5: 7d2e94282915f7f4da37148a9b1e9148
Updated: 29.10.2025, 13:55:44
x86_64
68.6 Kb
MD5: efbc4544b7ac0073b0de5df2549030f5
Updated: 29.10.2025, 13:55:56
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.