VoIP-телефония постепенно отвоёвывает позиции у традиционных медно-проводных телефонных систем, поскольку обеспечивает более высокую пропускную способность, при меньшей стоимости развёртывания. В 2013 году число VoIP-абонентов составляло более 150 миллионов, что уже само по себе немало; а в 2017 году – почти 1 миллиард. Но как насчёт конфиденциальности VoIP-переговоров? Способно ли сквозное шифрование, применяемое в VoIP-софте, обеспечить эту самую конфиденциальность? Такие вопросы стали в особенности злободневными после откровений Сноудена, поведавшего миру о тотальном прослушке, которую правительственные спецслужбы вроде АНБ (агентство национальной безопасности) и ЦПС (центр правительственной связи) осуществляют при помощи шпионского софта PRISM и BULLRUN, который в том числе и шифрованные переговоры прослушивает.
– Что злоумышленник может извлечь из зашифрованного аудио-потока
– Атака на VoIP по обходным каналам
– Несколько слов о DTW-алгоритме
– Принцип действия HMM-автоматов
– Принцип действия PHMM-автоматов
– От теории к практике: распознавание языка, на котором идёт разговор
– Прослушивание шифрованного аудио-потока Skype
– А если отключить VBR-режим?
Каким же образом PRISM, BULLRUN и другой, им подобный софт, извлекает информацию из голосового потока, передаваемого по зашифрованным каналам? Для того чтобы понять ответ на этот вопрос, нужно сначала разобраться, каким образом в VoIP передаётся голосовой трафик. Канал передачи данных в VoIP-системах как правило реализуется поверх UDP-протокола, и наиболее часто работает по протоколу SRTP (Secure Real-time Transport Protocol; протокол защищённой передачи данных, в режиме реального времени), который поддерживает упаковку (посредством аудио-кодеков) и шифрование аудио-потока. При этом шифрованный поток, который получается на выходе – имеет тот же самый размер, что и входной аудио-поток. Как будет показано ниже, подобные, казалось бы незначительные утечки информации, можно использовать для прослушивания «шифрованных» VoIP-переговоров.
Что злоумышленник может извлечь из зашифрованного аудио-потока
Большинство из тех аудио-кодеков, которые применяются в VoIP-системах, основаны на CELP-алгоритме (Code-Excited Linear Prediction; кодовое линейное предсказание), функциональные блоки которого представлены на рисунке 1. В целях достижения более высокого качества звука, без увеличения нагрузки на канал передачи данных, VoIP-софт обычно использует аудио-кодеки в VBR-режиме (Variable bit-rate; аудио-поток с переменным битрейтом). По такому принципу работает, например, аудио-кодек Speex.
Рисунок 1. Функциональные блоки алгоритма CELP
К чему это приводит в плане конфиденциальности? Простой пример… Speex, работая в VBR-режиме, упаковывает шипящие согласные меньшим битрейтом, чем гласные; и более того даже определённые гласные и согласные звуки – специфическим для них битрейтом упаковывает (см. рис. 2.a). График, изображённый на рисунке 2.b, показывает распределение длин пакетов – для фразы, в которой есть шипящие согласные: «Speed skaters sprint to the finish». Глубокие впадины графика приходятся именно на шипящие фрагменты этой фразы. На рисунке 2.c представлена динамика входного аудио-потока, битрейта и размера выходных (зашифрованных) пакетов, – наложенная на общую шкалу времени; поразительное сходство второго и третьего графиков – можно видеть невооружённым взглядом.
Рисунок 2. Как шипящие звуки влияют на размер пакетов
Плюс, если на рисунок 2 посмотреть через призму математического аппарата цифровой обработки сигналов (который используется в задачах распознавания речи), вроде PHMM-автомата (Profile Hidden Markov Models; расширенный вариант скрытой марковской модели), – то можно будет увидеть намного больше, чем просто отличие гласных звуков от согласных. В том числе, идентифицировать пол, возраст, язык и эмоции говорящего.
Атака на VoIP по обходным каналам
PHMM-автомат очень хорошо справляется с обработкой числовых цепочек, с их сравнением между собой и нахождением закономерностей между ними. Именно поэтому PHMM-автомат широко используется в решении задач распознавания речи.
PHMM-автомат кроме того оказывается полезными и в задаче прослушивания зашифрованного аудио-потока. Но не напрямую, а по обходным каналам. Иначе говоря, PHMM-автомат не может прямо ответить на вопрос: «Какая фраза содержится в этой цепочке шифрованных аудио-пакетов?», но может с большой точностью ответить на вопрос: «Содержится ли такая-то фраза в таком-то месте такого-то зашифрованного аудио-потока?»
Т.о. PHMM-автомат может распознавать только те фразы, на которые его изначально натренировали. Однако современные технологии глубокого обучения настолько могущественны, что способны натренировать PHMM-автомат до такой степени, что для него фактически стирается грань между двумя озвученными чуть выше вопросами. Чтобы оценить всю мощь данного подхода, нужно слегка погрузиться в матчасть.
Несколько слов о DTW-алгоритме
DTW-алгоритм (Dynamic Time Warping; динамическая трансформация временной шкалы) до недавнего времени широко использовался при решении задач идентификации говорящего и распознавания речи. Он способен находить сходства между двумя числовыми цепочками, сгенерированными по одному и тому же закону, – даже когда эти цепочки генерируются с разной скоростью и располагаются в разных местах шкалы времени. Это именно то, что происходит при оцифровке аудио-потока: например, говорящий может произнести одну и ту же фразу, одним и тем же акцентом, но при этом быстрее или медленнее, с разным фоновым шумом. Но это не помешает DTW-алгоритму найти сходства между первым и вторым вариантом. Чтобы проиллюстрировать этот момент на примере, рассмотрим две целочисленных цепочки:
0 0 0 4 7 14 26 23 8 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 13 25 24 9 4 2 0 0 0 0 0
Если сравнивать эти две цепочки «в лоб», то они по-видимому сильно отличаются друг от друга. Однако если мы сравним их характеристики, то увидим, что цепочки определённо имеют некоторое сходство: обе они состоят из 8 целых чисел; обе имеют схожее пиковое значение (25-26). «Лобовое» сравнение, начинающееся от их точек входа, – игнорирует эти их важные характеристики. Но DTW-алгоритм, сравнивая две цепочки, учитывает эти и другие их характеристики. Однако мы не будем сильно акцентироваться на DTW-алгоритме, поскольку на сегодняшний день есть более эффективная альтернатива – PHMM-автоматы. Экспериментально было установлено, что PHMM-автоматы «опознаёт» фразы из зашифрованного аудио-потока с 90-процентной точностью; тогда как DTW-алгоритм – даёт только 80-процентную гарантию. Поэтому DTW-алгоритм (который в годы своего расцвета был популярным инструментом в решении задач распознавания речи) упоминаем лишь для того, чтобы показать, насколько лучше, в сравнении с ним, PHMM-автоматы (в частности в решении задачи распознавания шифрованного аудио-потока). Конечно, DTW-алгоритм, в сравнении с PHMM-автоматами, обучается значительно быстрее. Это его преимущество неоспоримо. Однако при современных вычислительных мощностях данное преимущество не является принципиальным.
Принцип действия HMM-автоматов
HMM (просто HMM, а не PHMM) представляет собой инструмент статистического моделирования, который генерирует числовые цепочки, следуя системе, заданной детерминированным конечным автоматом, каждая из переходных функций которого представляет собой т.н. «марковский процесс». Работа этого автомата (см. рис. 3) всегда начинается с состояния «B» (begin) и заканчивается состоянием «E» (end). Выбор очередного состояния, в который будет осуществлён переход из текущего, – осуществляется в соответствии с переходной функцией текущего состояния. По мере продвижения между состояниями, HMM-автомат на каждом шаге выдаёт по одному числу, из которых пошагово формируется выходная цепочка чисел. Когда HMM-автомат оказывается в состоянии «E», формирование цепочки заканчивается. При помощи HMM-автомата можно находить закономерности в цепочках, которые внешне выглядят случайными. Например здесь это достоинство HMM-автомата используется для нахождения закономерности между цепочкой длин пакетов и целевой фразой, наличие которой мы проверяем в зашифрованном VoIP-потоке.
Рисунок 3. Пример HMM-автомата
Хотя существует большое количество возможных путей, по которым HMM-автомат может пройти из точки «B» в точку «E» (в нашем случае при упаковке отдельно взятого аудио-фрагмента), всё же для каждого конкретного случая (даже для такого случайного как «марковский процесс») есть один единственный лучший путь, одна единственная лучшая цепочка. Она же самая является и наиболее вероятной претенденткой, которую скорее всего выберет аудио-кодек при упаковке соответствующего аудио-фрагмента (ведь её уникальность выражается в том числе и в том, что она лучше других поддаётся упаковке). Такие «лучшие цепочки» могут быть найдены при помощи алгоритма Витерби (как это например сделано здесь).
Кроме того, в задачах распознавания речи (в том числе из зашифрованного потока данных, как в нашем случае), помимо возможности находить лучший путь для наблюдаемой цепочки, – также полезно уметь вычислять, насколько вероятно, что выбранная нами цепочка будет сгенерирована HMM-автоматом. Лаконичное решение данной задачи приведено здесь; оно опирается на алгоритм «Вперёд-Назад» и алгоритмом Баума-Велша.
Вот здесь на основе HMM-автомата разработан метод идентификации языка, на котором идёт разговор; с точностью в 66%. Но такая низкая точность не очень впечатляет, поэтому есть более продвинутая модификация HMM-автомата – PHMM, которая вытягивать из шифрованного аудио-потока намного больше закономерностей. Так например вот здесь подробно описано, как при помощи PHMM-автомата идентифицировать в зашифрованном трафике – слова и фразы (а эта задача будет посложнее, чем просто идентификация языка, на котором идёт разговор); с точностью до 90%.
Принцип действия PHMM-автоматов
PHMM – это усовершенствованная модификация HMM-автомата, в которой (см. рис. 4.a) помимо состояний «соответствия» (квадраты с буквой M), также присутствуют состояния «вставки» (ромбы с буквой I) и «удаления» (круги с буквой D). Благодаря этим двум новым состояниям, PHMM-автоматы, в отличие HMM-автоматов, способны распознать гипотетическую цепочку «A-B-C-D», даже если она присутствует не полностью (например, «A-B-D») или в неё произведена вставка (например, «A-B-X-C-D»). В решении задачи распознавания зашифрованного аудио-потока эти два нововведения PHMM-автомата в особенности полезны. Потому что выходные данные аудио-кодека редко совпадают, даже когда аудио-входы очень похожи (когда например, один и тот же человек произносит одну и ту же фразу). Т.о. простейшая модель PHMM-автомата состоит из трех взаимосвязанных цепочек состояний («соответствия», «вставки» и «удаления»), которые описывают ожидаемые длины сетевых пакетов в каждой позиции цепочки (зашифрованных пакетов VoIP-трафика для выбранной фразы).
Рисунок 4. Пример PHMM-автомата
Однако поскольку в зашифрованном аудио-потоке сетевые пакеты, по которым расфасована целевая фраза, как правило окружены другими сетевыми пакетами (остальной частью разговора), нам потребуется ещё более продвинутый PHMM-автомат. Такой, который сможет изолировать целевую фразу от других, окружающих её звуков. Вот здесь для этого к исходному PHMM-автомату добавляют 5 новых состояний (см. рис. 4.b). Наиболее важное из этих добавленных пяти состояний – «случайное» (ромб с буквой R). PHMM-автомат (после завершения стадии обучения) переходит в это состояние, когда к нему на вход попадают те пакеты, которые не являются частью интересующей нас фразы. Состояния PS (Profile Start) и PE (Profile End) – обеспечивают переход между случайным состоянием и профильной частью модели. Такая улучшенная модификация PHMM-автомата способна распознавать даже те фразы, которых автомат «не слышал» на этапе обучения (см. рис. 5).
Рисунок 5. PHMM-автомат решает задачу распознавания шифрованного аудио-потока
От теории к практике: распознавание языка, на котором идёт разговор
Вот здесь представлена экспериментальная установка на основе PHMM-автомата (см. рис. 6), при помощи которой были проанализированы шифрованные аудио-потоки с речью 2000 носителей языка из 20 разных языковых групп. После завершения тренировочного процесса, PHMM-автомат идентифицировал язык разговора с точностью от 60 до 90%: для 14 из 20 языков точность идентификации превысила 90%, для остальных – 60%.
Экспериментальная установка, представленная на рисунке 6, включает в себя два ПК под управлением Linux с OpenSource-софтом VoIP. Одна из машин работает как сервер и слушает в сети SIP-вызовы. После получения вызова сервер автоматически отвечает абоненту, инициализируя речевой канал в режим «Speex over RTP». Здесь следует упомянуть, что канал управления в VoIP-системах как правило реализуется поверх TCP-протокола, и работает либо по какому-то из общедоступных протоколов с открытой архитектурой (SIP, XMPP, H.323), либо имеет закрытую архитектуру, специфичную для конкретного приложения (как в Skype, например).
Рисунок 6. Экспериментальная установка для работы с PHMM-автоматом
Когда речевой канал инициализирован, сервер воспроизводит файл вызывающему абоненту, а затем завершает соединение SIP-соединение. Абонент, который является еще одной машиной в нашей локальной сети, делает SIP-вызов серверу, и затем при помощи сниффера «слушает» файл, который проигрывается сервером: прослушивает цепочку сетевых пакетов с шифрованным аудио-трафиком, которые от сервера поступают. Далее, абонент либо тренирует PHMM-автомат на идентификацию языка разговора (используя описанный в предыдущих разделах математический аппарат), либо «спрашивает» у PHMM-автомата: «На каком языке идёт разговор?» Как уже упоминалось, данная экспериментальная установка обеспечивает точность идентификации языка – до 90%. Процесс тренировки PHMM-автомата будет подробно описан в следующем разделе (в примере со Skype).
Прослушивание шифрованного аудио-потока Skype
Здесь продемонстрировано как посредством PHMM-автомата решать ещё более сложную задачу: распознавать шифрованный аудио-поток, генерируемый программой Skype (которая использует аудио-кодек Opus/NGC, в VBR-режиме; и 256-битное AES-шифрование). Представленная разработка работает по принципу представленному на рисунке 5. Для этого в ней используется экспериментальная установка вроде той, что представлена на рисунке 6. Но только со Skype’овским кодеком Opus.
Для обучения своего PHMM-автомата исследователи воспользовались следующей последовательностью шагов: 1) сначала собрали набор саунд-треков, включающих все интересующие их фразы; 2) затем установили сниффер сетевых пакетов, и инициировали голосовую беседу между двумя учётными записями Skype (такая манипуляция привела к генерации шифрованного UDP-трафика между двумя машинами, в режиме P2P); 3) затем проигрывали каждый из собранных саунд-треков в Skype-сеансе, используя медиа-плеер; с пятисекундными интервалами молчания между треками; 4) тем временем пакетный сниффер был настроен для регистрации всего трафика, поступающего на вторую машину экспериментальной установки (см. рис. 6). После сбора всех тренировочных данных, цепочки длин UDP-пакетов – были извлечены при помощи автоматического парсера для PCAP-файлов. Полученные цепочки, состоящие из длин пакетов полезной нагрузки затем использовались для тренировки PHMM-модели, – с использованием алгоритма Баума-Велша.
А если отключить VBR-режим?
Казалось бы, проблему подобных утечек можно решить, переведя аудио-кодеки в режим постоянного битрейта (хотя какое же это решение – пропускная способность от этого резко снижается), но даже в этом случае безопасность шифрованного аудио-потока всё ещё оставляет желать лучшего. Ведь эксплуатация длин пакетов VBR-трафика – это лишь один из примеров атаки по обходным каналам. Но есть и другие примеры атак, например отслеживание пауз между словами.
Задача конечно нетривиальная, но вполне решаемая. Почему нетривиальная? Потому что в Skype, например, в целях согласования работы UDP-протокола и NAT (network address translation; преобразование сетевых адресов); а также для увеличения качества передаваемого голоса – передача сетевых пакетов не останавливается даже когда в разговоре возникают паузы. Это усложняет задачу выявления пауз в речи.
Однако вот здесь разработан алгоритм адаптивного порогового значения, позволяющий отличать тишину от речи с точностью более 80%; предложенный метод основан на том факте, что речевая активность сильно коррелирует с размером зашифрованных пакетов: больше информации кодируется в голосовом пакете, когда пользователь говорит, чем во время молчания пользователя. А вот здесь (с акцентом на Google Talk, Lella и Bettati) осуществляется идентификация говорящего, даже когда через размер пакетов никакая утечка не идёт (даже когда VBR-режим отключен). Здесь исследователи опираются на измерение временных интервалов между приёмами пакетов. Описанный метод опирается на фазы молчания, которые кодируются в более мелкие пакеты, с более длинными временными интервалами – чтобы отделять слова друг от друга.
Т.о. даже самая современная криптография не способна защитить шифрованные VoIP-коммуникации от прослушивания, даже если эта криптография реализована надлежащим образом, – что уже само по себе маловероятно. И также стоит отметить, что в данной статье подробно разобрана лишь одна математическая модель цифровой обработки сигналов (PHMM-автоматы), которая оказывается полезной при распознавании шифрованного аудио-потока (в таком шпионском софте правительственных спецслужб как PRISM и BULLRUN). Но таких математических моделей существуют десятки и сотни. Так что если хотите идти в ногу со временем – смотрите на мир сквозь призму высшей математики.
- Charles Wright, Lucas Ballard. Language Identification of Encrypted VoIP Traffic // Proceedings of the 16th USENIX Security Symposium. 2007. pp. 43-54.
- Charles Wright, Lucas Ballard. Uncovering Spoken Phrases in Encrypted VoIP Conversations // Proceedings of the IEEE Symposium on Security and Privacy. 2008. pp. 35-49.
- Benoit Dupasquier, Stefan Burschka. Analysis of information leakage from encrypted Skype conversations // International Journal of Information Security. 9(5), 2010. pp. 313-325.
- Shaun Colley. Practical Attacks Against Encrypted VoIP Communications // HITB Magazine. 4(19), 2014. pp. 30-41.
- Global VoIP subscriber numbers and net growth // Point Topic. 2013. URL: http://point-topic.com/free-analysis/global-voip-subscriber-numbers-q1-2013/ (дата обращения: 25 марта 2018).
- World Broadband Statistics – Q3 2017 // Point Topic. URL: http://point-topic.com/free-analysis/world-broadband-statistics-q3-2017/ (дата обращения: 25 марта 2018).
- James Ball. Revealed: how US and UK spy agencies defeat internet privacy and security // Guardian. 2013. URL: https://www.theguardian.com/world/2013/sep/05/nsa-gchq-encryption-codes-security (дата обращения: 25 марта 2018).
- Hiddem Markov Model // Wikipedia. URL: https://en.wikipedia.org/wiki/Hidden_Markov_model (дата обращения: 25 марта 2018).
- Forward–backward algorithm // Wikipedia. URL: https://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm (дата обращения: 25 марта 2018).
- Leonard Baum, Norman Weiss. A maximization technique occurring in the statistical analysis of probabilistic functions of Markov chains // Annals of Mathematical Statistics. 41(1), 1970. pp. 164-171.
- Andrew Viterbi. Error bounds for convolutional codes and an asymptotically optimum decoding algorithm // IEEE Transactions on Information Theory. 13(2), 1967. pp. 260-267.
- Manfred Schroeder. Code-excited linear prediction(CELP): High-quality speech at very low bit rates // Proceedings of the 1985 IEEE International Conference on Acoustics, Speech, and Signal Processing. v.10, 1985. pp, 937-940.
- S. Eddy. Multiple alignment using hidden Markov models // Proceedings of the Third International Conference on Intelligent Systems for Molecular Biology. 1995. pp. 114-120.
- Yu-Chun Chang. Inferring speech activity from encrypted Skype traffic // Proceedings of IEEE Globecom. 2008.
- Tuneesh Lella. Privacy of encrypted voice-over-IP // Proceedings of the 2007 IEEE International Conference on Systems, Man and Cybernetics. 2007. pp. 3063-3068.
- Charles Wright. Language identification of encrypted VoIP traffic: Alejandra y Roberto or Alice and Bob? // Proceedings of the 16th USENIX Security Symposium. 2007. pp. 1-12.
- Карев А.А. Самый опасный в мире код: проверка SSL/TLS-сертификатов в небраузерном софте // Хакер. №228. 2018.
- Карев А.А. Правда Сноудена // Хабрахабр. 2015. URL: https://habrahabr.ru/post/272385/ (дата обращения: 25 марта 2018).
Комментарии (8)
JC_IIB
29.07.2019 20:15Канал передачи данных в VoIP-системах как правило реализуется поверх UDP-протокола
Это так.
наиболее часто работает по протоколу SRTP
А вот это уже не так, RTP там обычный чаще всего. Хотя, если мы говорим только о зашифрованных коммуникациях, тогда да, SRTP. Впрочем, есть еще и ZRTP. Но это уже я так… занудничаю. Статья на самом деле интересная!
evasilenko
29.07.2019 21:19Значит нужно наложить много шума по псевдо-случайному алгоритму.
Причем параметры этого алгоритма устанавливать на каждыю сессию отдельно
Borikinternet
30.07.2019 03:28Очень интересно, какие модели применяются для распознавания g.711-х кодеков
dhaenoor
30.07.2019 11:13+1Если эксперт расскажет нечто подобное судье, то ваш разговор с мамой о покупке хлеба и молока превратится в доказательство подготовки террористического акта. Потому что судья пропустит в своем уме фразу «с вероятностью 90%». Это как «мы с ним поговорили и я поехал за товаром» после экспертизы в наших судах начинает означать «я продал ему ведро наркоты».
amarao
Мораль: кодек должен генерировать константный поток байт вне зависимости от того, что кодируется — тишина или речь. Просто константный поток.
vadimr
Осталось внедрить такой кодек в телефонный софт. Обычные-то ставят перед собой задачу уменьшить требования к каналу. Как всегда, вопрос в том, что эффективная защита информации — это осмысленный набор оргмероприятий, а не инсталляция волшебной защитной софтины.
Borikinternet
Стандартные PCMU и PCMA именно это и делают. Статья действительно интересная, но вот как это все применяется к самым распространенным кодеками непонятно.
ivan386
Можно перед шифрованием дополнять пакет рандомом. А кодек пусть кодирует как надо.