Важная информация
RSS лента

The trick

Стеганография в WAVE файлах.

Рейтинг: 3.00. Голосов: 2.
Всем привет!
Сегодня я хотел бы поговорить о криптографии. Я сделал пример использования специальной криптографии - стеганографии. Этот метод скрывает сам факт шифрования данных. Существует множество видов стеганографии. Я бы хотел поговорить о LBS-методе, в котором данные скрываются в младших битах аудио данных. Это выглядит так, как-будто пользователи обмениваются аудио файлами, но на самом деле они обмениваются секретными данными. Тот кто не знает об этом методе не будет даже подозревать о обмене секретными данными. В некоторых случаях это может быть очень полезно.
Как это работает?
WAVE-PCM файл (без компрессии) содержит аудио данные. На самом деле звук является аналоговым событием, т.е. непрерывным. Для того чтобы перевести его в цифровую форму нужно проквантовать его с некоторыми потерями. Этот процесс характеризуется двумя параметрами: разрядностью и частотой дискретизации. Разрядность влияет на то как много уровней сигнала может содержаться в каждом семпле. Частота дискретизации влияет на то какая максимальная частота может содержатся в аудиоданных:

В нашем случае нас интересует только разрядность аудиоданных. Она может быть 32, 24, 16, ... бит на семпл. Главная идея стеганографии (в нашем случае) - переписать младшие биты аудиоданных. Чем больше бит мы будем использовать, тем сильнее будут искажения.
Наглядно:

Как видно из рисунка метод сохраняет все шифруемые данные в определенных битах аудиоданных (в данном случае 4 бита на каждый семпл). Также заметьте что для сохранения данных нужно использовать аудио файл бо́льший по размеру чем шифруемый файл. Для примера, если мы будем использовать 3 бита для кодирования, аудиофайл должен будет иметь размер как минимум в 16/3 раза больше чем кодируемый. Я говорю 16 потому что я использую 16 бит на семпл в моем примере.
В прикрепленном примере я также сохраняю оригинальное имя файла. Формат данных наглядно:

Когда происходит упаковка берется каждый байт из шифруемого файла. Затем извлекается необходимые биты из очередного байта, а также очищаются соответственные биты в аудиоданных. Далее эти биты устанавливаются посредством операции побитовое-ИЛИ. Для извлечения необходимых бит используются маски и сдвиги. Маски оставляют необходимые биты, а сдвиги размещают их в начале байта.
Распаковка происходит с точностью наоборот. Извлекаются биты из аудио файла и собирается исходный файл.
Кстати вот влияние на спектр сигнала в зависимости от разрядности:

Надеюсь что этот небольшой обзор будет полезным.
Спасибо за внимание.
С уважением,
Кривоус Анатолий.
Миниатюры Вложения
Метки: Нет Добавить / редактировать метки
Категории
Без категории

Комментарии

  1. Аватар для >Quiet Snow<
    Видел это раньше, чем оно было опубликовано у нас. Да метод достаточно очевидный и прикольный.
    При 24 бит звуке можно вливать данные в 8-10 младших бит. При 16 бит звуке в 1-2 бита, но при этом
    нужно предварительно "поджать" трек, чтобы не так сильно ощущалось искажение. Если растягивать
    данные, дублируя их, можно получить минимальное влияние на ВЧ спектр, что не будет выдавать
    наличие данных.
  2. Аватар для Абадябер
    Спасибо за интересный материал. Как-то делал другу в универ аналогичную программу, но данные прятались в изображении формата BMP. В связи с этим интересно, какой метод применяется для обнаружения вероятного наличия спрятанных данных в изображении.
  3. Аватар для Free Admin
    Репостнул в группе вконтакте...)
  4. Аватар для FelixMacintosh
    Free Admin, что за группа такая?, скинте ссыль, может загляну ..