Видеоинструкция: Сокрытие информации в mp3 файлах

Содержание:

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

Мы попробуем закодировать сообщение в фрагмент из произведения норвежского классика Эдуарда Грига — Wedding day at Troldhaugen. Для этого прекрасно подойдет LSB — метод. Собственно, передать сообщение можно всюду и всем, даже в поэзии путем чередования поэтических стилей. С точки зрения теории информации, разные стили — это разные состояния.Чем больше возможных состояний, тем больше полезной информации можно выразить.

Кодирование информации

Для начала вам нужно скачать midi-файл с классическим произведением. Древнюю музыку никто не слушает, поэтому это самый лучший выбор. Более того, медленный ритм 110-120 ударов в минуту прекрасно подойдет для пошагового анализа. Мы выберем ритм 120 ударов в минуту. Таким образом каждая порция 4/4 будет длится ровно 2 секунды. Для демонстрации это хорошее решение, и классическая музыка будет весьма кстати.

Ниже представлено таблицу ритмов и временные промежутки для наиболее распространенных тактовых размеров: 4/4, 2/2, 2/4, 3/4, 6/8. Числитель определяет количество долей в такте. Знаменатель определяет относительную длительность ноты (не в секундах, не путайте). Длительность описывается формулой: 60/bps * 4 * количество_долей/относительную_длину. Длительность одного такта размером 6/8 и ритма который равен 90 ударам будет равна: 60/90 * 4 * 6/8=2 c.

Ритмы,
bps
4/42/43/4
902.6661.3332.000
1002.4001.2001,800
1102.1811.0901,636
1202.0001.0001,500
1301.8460.9231,384
1401.7140.8571,285

Продолжительность звучания тактов размером 4/4 и 2/2 равна. 3/4 и 6/8 также имеют равную длину звучания в секундах. Разница в расстановке музыкальных акцентов. Акцент — это выделение сильных долей путем увеличения их громкости. Это стоит учитывать при анализе звуковых файлов на стеганографические последовательности. Даже если звук для каждого инструмента установлен на уровне 100%. Он все равно будет скакать.

Кроме классики можно выбрать военный марш. Солдатам на параде удобно шагать под ритм от 110 до 130 ударов в минуту. Ритм 120 ударов применяется для синхронного шагания солдат. Траурный марш пишется в режиме медленного шага (90-105 ударов в минуту) и тоже подходит. Но это выглядит неэстетично, неромантично и слишком мизантропично. Для хороших слов мы выберем более веселую мелодию.

Создание стеганографической схемы

Первое что необходимо выбрать это носитель информации. Носителями информации могут быть: смена высоты ноты, смена ритма, смена громкости, смена источника звука при помощи балансировки (слева, или справа). В качестве носителя информации будет использован звуковой градиент.

Для создания стеганографического сообщения в аудио файле было использовано приложение LMMS. Сколько бы аудио дорожек мы в нем не создали, но после сохранения в формат mp3 все они объединятся в одну стереодорожку. В приложении для работы с mp3, эти дорожки можно разделить на две моно дорожки и проанализировать звуковые скачки.

Audacity
Audacity — разделение стерео на две моно доорожки

Верхняя часть стереодорожки выводится на левый динамик, а нижняя на правый динамик. Что это означает? Это означает, что можно применить несколько схем кодирования.

  1. Если оригинал файла известен получателю, тогда можно сравнивать уровень звука на заданном проверочном интервале для оригинального файла и файла со скрытой информацией сразу по двум дорожкам (2 дорожки файле оригинала и 2 дорожки носители сообщения в стеганографическом файле).
  2. Если оригинал файла неизвестен получателю сообщения, тогда одну из дорожек стеганографического файла можно использовать как эталон для измерения разницы громкости, а вторую для сокрытия информации.
  3. Если оригинал файла неизвестен получателю сообщения, тогда можно использовать две дорожки как в пункте 2, но по очереди меняя роль каждой дорожки. Например, в первом такте дорожка 1 показывает истинный уровень звука, во втором такте она будет носителем информации. В первом такте дорожка 2 будет носителем информации, а во втором показывать истинный уровень звука.

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

Создание звукового градиентного алфавита

Подобно тому как человеческий глаз не может различить все оттенки, так и ухо не способно различить небольшие звуковые скачки. Но не программы для звуковой обработки. Если каждую букву передавать падением громкости звука, тогда это может быть заметно. Особенно если в тексте будет много букв «a» и «z».

Падение на 26% очень заметно. Исходя из этого, можно считывать такты парами по 6 разных состояний на каждый, или использовать параллельно один такт на двух дорожках. Я применил первую схему кодирования, поэтому будем использовать в качестве носителя такты на двух дорожках. В таблице ниже представлен градиентный алфавит.

БукваДорожка 1, %Дорожка 2, %
A9494
B9495
C9496
D9497
E9498
F9499
G9594
H9595
I9596
J9597
K9598
L9599
M9694
N9695
O9696
P9697
Q9698
R9699
S9794
T9795
U9796
V9797
W9798
X9799
Y9894
Z9895

Для двух треков и шести состояний общее количество состояний будет 6^2=36. В алфавите 26 букв и это значит, что таблицу можно продолжить и закодировать ещё 10 символов. Для меньшей заметности часто встречающиеся буквы можно кодировать меньшей разницей. Однако это не спасет от математического анализа и быстрой расшифровки.

Настройка Linux Multimedia Studio

Количество ударов в минуту BPM должно быть одинаковым. В противном случае придется анализировать разные временные интервалы. Это усложнит задачу. Нажмите правую кнопку мыши по индикатору количества ударов (140). Выберите «изменить глобальную автоматизацию композиции». Появится окно как на рисунке ниже. Нам нужен постоянный темп 120 ударов в минуту и отсутствие автоматизации (прямая линия на графике).

Linux Multimedia Studio
Автоматизация дорожек в LMMS

Для того чтобы график был прямой линией сбросьте настройки автоматизации. Ритм 120 ударов и период 4/4 даст 2 секунды на каждый такт. Можете ставить другой интервал, но этот упростит декодирование скрытого сообщения.

Вставляем скрытое сообщение

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

Баланс распределяет звучание между динамиками в определенной пропорции. Пропорция 1/1 означает что звук в равной мере распределится между левым и правым динамиками. Пропорция 1/2 будет означать что громкость звука на правом динамике будет в 2 раза больше, чем на левом. Чтобы избежать запутанности, мы будем использовать противоположную балансировку для двух дорожек.

Кроме баланса требуется нормализовать громкость. На обоих дорожках должен быть одинаковый относительный уровень звука. После установки правильного баланса и относительной громкости дорожки, необходимо дважды кликнуть по каждой дорожке выделить все ноты комбинацией клавиш Ctrl+A и тоже установить звучание каждой ноты на уровне 100%. После этого для каждого кодирующего такта уменьшить уровень громкости звука на соответствующее число.

Экспорт mp3 файла и разница между mono, joint stereo, stereo

Выберите файл > экспорт, или нажмите Ctrl+E. Установите формат файла mp3 и нажмите кнопку сохранить. В появившемся окне выберите стерео режим Stereo. В нашем случае можно выбрать режим Joint Stereo, но для большего качества лучше выбрать Stereo. Установим битрейт на уровне 160 КБит/с. Интерполяцию можно не менять.

Моно дорожки могут проигрываться сразу по двум динамикам, но это не сделает файл стерео. В реальной жизни звучание объемное и для улучшения качества восприятия используют stereo, или joint stereo. Stereo mp3 будет иметь размер больший, чем mono mp3.

Так как разница между стерео каналами не велика, то для уменьшения размера конечного файла хранят только разницу. Этот режим создания mp3 называется Joint Stereo. Он не сильно исказит скрытую информацию и дорожку по прежнему можно будет разделить на две mono дорожки.

Анализ временных интервалов

Анализ временных интервалов можно провести в программе Audacity. Мы выбрали первую схему однотактного двухполосного кодирования. Поэтому откроем оригинальный файл и импортируем файл со стеганографическим сообщением. Далее разделим 2 стереодорожки и получим 4 моно дорожки.

Чтоб не путать дорожки определим зеленый цвет для первой дорожки. Далее попарно сравним дорожки двух файлов. Чем точнее будет выбранный интервал, тем точнее разницу мы получим. В LMMS мы указывали относительную громкость в процентах. В оригинальном файле отсутствует информация и уровень звука на всех стерео каналах равен 100%. В Audacity разность получим в децибелах. Она будет находится в пределах указанных ниже. Это особенность формата mp3 и настроек интерполяции.

Состояние, %Разность, Дб
94[0.46;0.54]
95[0.39;0.45]
96[0.31;0.38]
97[0.23;0.30]
98[0.15;0.22]
99[0.08;0.14]
100[0.00;0.07]

Закодированное сообщение: «I LOVE YOU» после декодирования будет выглядеть как в таблице ниже. Пробел имеет одинаковый уровень громкости на двух дорожках, но так как я захватил чуть больший интервал это повлияло на разницу. Смотрите на интервал в который попадает разница.

T1/T295
96
100
100
95
99
96
96
97
97
94
98
100
100
98
94
96
96
97
96
ТекстILOVEYOU
Разность 10.450.000.400.380.260.540.050.150.380.28
Разность 20.340.000.080.370.270.540.010.480.370.35

Видеоинструкция

Выводы

Не нужно скачивать особые стеганографические приложения. Можно воспользоватся существующими программными пакетами. Такими как: Libre Office Calc, Linux Multimedia Studio, Audacity. Вы можете использовать другие приложения, но единственное необходимое требование это знание формата и режимов mp3. В этой статье вы познакомились с режимами: mono, stereo и joint stereo.

Стереодорожки содержат два аудио канала. Это можно и нужно использовать для увеличения эффективности сокрытия данных. Кроме всего, их можно разделить на две монодорожки. Приложение Audacity позволяет назначить каждой дорожке свой цвет. Указанная особенность не позволит спутать дорожку и упростит аудио анализ.

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

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *