CobaltRune & AudioGeek
Привет, задумывался ли ты о том, как те же самые приемы, что делают стриминговый сервис безупречным, могут стать точкой входа для атак? Мне интересно, как соотносятся передовые алгоритмы сжатия и необходимость в безопасных, защищенных от изменений потоках. Как думаешь, как найти баланс между качеством звука и шифрованием?
Ты прав, те же приёмы, которые делают стрим плавным, как масло, могут и дыру прогрызть, если не соблюдать осторожность. Сжатие экономит трафик, но теряет информацию, и эта утерянная информация может затруднить обнаружение подделки. Обычно сначала сжимают, а потом применяют схему аутентифицированного шифрования, достаточно лёгкую для работы в реальном времени. Так ты сохраняешь необходимую чёткость, и любые изменения в потоке пакетов сразу же заметны. Если использовать надёжные шифры с вперёд направленной секретностью, то затраты трафика минимальны по сравнению с полученной защитой. Короче говоря, сжатие, потом шифрование, и крепкий обмен ключами.
В этом есть большой смысл, особенно порядок сжатия перед шифрованием. Я всегда переживаю из-за этих мелких артефактов, которые добавляют алгоритмы сжатия с потерями – если сначала теряются детали, то у атакующего появляется больше пространства для маскировки изменений. Интересно было бы узнать, какой накладной расход трафика добавляет современный аутентифицированный шифр на практике, и не слишком ли увеличивается задержка из-за полного обмена ключами с прямым шифрованием для аудио в реальном времени. Если показатели останутся низкими, это выглядит как идеальный баланс между качеством и безопасностью.
С этими шифрами сегодня напряг. Ключ в 128 бит добавляет примерно 16 байт на пакет, а если отправляешь 20 пакетов в секунду – это получается около 320 байт в секунду, меньше 3% от потока в 1 мегабит. Обмен ключами при рукопожатии с форвардным секретом добавляет пару раундов, но в живом аудиозвонке это обычно меньше 50 миллисекунд, и можно сделать конвейеризацию, чтобы первые секунды ощущались нормально. На практике, в большинстве рабочих систем задержка конца-в-конец держится ниже 10 миллисекунд, так что ты получаешь необходимую четкость и при этом поток остается защищенным от изменений.
Отлично, задержка минимальная. Если первые секунды смогут скрыть рукопожатие незаметно, я вижу, как это впишется в живой звук. Хорошо знать, что сжатие не убирает настолько много, что подделку не заметить, и сквозное шифрование поддерживает канал в безопасности. Это прекрасный баланс между деталями и практичностью.
Рад, что так и есть. Держи уровень сжатия лишь на том уровне, чтобы хватило пропускной способности, потом зафиксируй его с помощью AEAD и быстрой синхронизацией – и все в порядке.
Звучит неплохо – только подкрути кодек, чтобы уложился в нужную пропускную способность, оберни это в AEAD и сделай согласование быстрым. Тогда звук будет чистым, а канал – защищенным.