Можно ли вставить дополнительные данные для каждого пакета в протокол RTMP? - PullRequest
2 голосов
/ 06 июня 2019

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

В рассказе секреты лжи, и все данные должны быть доступны каждому.Пользователи могут передавать свои данные на сервер, который позволяет пользователям смотреть.Теперь поток должен иметь проверки целостности, но не должен шифровать свои данные с целью сокрытия информации.Чтобы решить эту проблему, я хотел:

  • Установить клиент (android), который транслирует свою камеру через RTMP и отправляет цифровую подпись как способ обеспечения аутентификации, отсутствия аннулирования и способа проверки целостности.
  • Настройка сервера, который принимает данные, подтверждает идентичность потока, считывая подпись и проверяя хэш.Затем сервер передает этот поток веб-клиенту.
  • Имеет веб-клиент, где зрители могут наблюдать за потоком, а также тот же тип безопасности, что и при публикации потока.

Теперь я подумал о том, как реализовать это несколько способов, но самым красивым способом, не влияющим на задержку, было бы изменение пакетов RTMP, чтобы можно было отправлять дополнительные данные на каждом этапе.Я прочитал в официальных документах по RTMP, что заголовок оставляет место только для 2 байтов, что недостаточно для поддержки сигнатуры sha256.Теперь я не эксперт по протоколу потоковой передачи, поэтому любая дополнительная помощь, кроме указания меня на документы, будет принята с благодарностью.

Я успешно справился с вызовом OnMetaData, но это отправляется только один раз для каждого потока, поэтому он оставляетПоток уязвим после первоначального рукопожатия.В основном я работал с пакетом Node-Media-Server .

TLDR: для науки нужен способ добавить цифровую подпись в мой протокол RTMP.Я думаю об этом неправильно?Можно ли вставить хеш в пакет?Или это неправильный подход все вместе?

1 Ответ

1 голос
/ 15 июня 2019

Насколько я понял ваш вопрос, вам, вероятно, не нужно добавлять подпись в каждый пакет RTMP. RTMP-соединение устанавливается один раз для клиента и начинается с рукопожатия. Пакет C1 имеет длину 1536 байт и содержит случайные данные (1528 байт) , что:

Это поле может содержать любые произвольные значения. С каждой конечной точки должен различать ответ на рукопожатие инициировано и рукопожатие инициировано его пэром, эти данные ДОЛЖЕН отправить что-то достаточно случайное. Но в этом нет необходимости для криптографически защищенной случайности или даже динамических значений.

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

...