Всем привет! Сегодня я хотел бы поговорить о криптографии. Я сделал пример использования специальной криптографии - стеганографии. Этот метод скрывает сам факт шифрования данных. Существует множество видов стеганографии. Я бы хотел поговорить о LBS-методе, в котором данные скрываются в младших битах аудио данных. Это выглядит так, как-будто пользователи обмениваются аудио файлами, но на самом деле они обмениваются секретными данными. Тот кто не знает об этом методе не будет даже подозревать о обмене секретными данными. В некоторых случаях это может быть очень полезно. Как это работает? WAVE-PCM файл (без компрессии) содержит аудио данные. На самом деле звук является аналоговым событием, т.е. непрерывным. Для того чтобы перевести его в цифровую форму нужно проквантовать его с некоторыми потерями. Этот процесс характеризуется двумя параметрами: разрядностью и частотой дискретизации. Разрядность влияет на то как много уровней сигнала может содержаться в каждом семпле. Частота дискретизации влияет на то какая максимальная частота может содержатся в аудиоданных:
pic1_rus.png (36.68 Кб) Просмотров: 1811
В нашем случае нас интересует только разрядность аудиоданных. Она может быть 32, 24, 16, ... бит на семпл. Главная идея стеганографии (в нашем случае) - переписать младшие биты аудиоданных. Чем больше бит мы будем использовать, тем сильнее будут искажения. Наглядно:
pic2_rus.png (30.74 Кб) Просмотров: 1811
Как видно из рисунка метод сохраняет все шифруемые данные в определенных битах аудиоданных (в данном случае 4 бита на каждый семпл). Также заметьте что для сохранения данных нужно использовать аудио файл бо́льший по размеру чем шифруемый файл. Для примера, если мы будем использовать 3 бита для кодирования, аудиофайл должен будет иметь размер как минимум в 16/3 раза больше чем кодируемый. Я говорю 16 потому что я использую 16 бит на семпл в моем примере. В прикрепленном примере я также сохраняю оригинальное имя файла. Формат данных наглядно:
pic3_rus.png (18.81 Кб) Просмотров: 1811
Когда происходит упаковка берется каждый байт из шифруемого файла. Затем извлекается необходимые биты из очередного байта, а также очищаются соответственные биты в аудиоданных. Далее эти биты устанавливаются посредством операции побитовое-ИЛИ. Для извлечения необходимых бит используются маски и сдвиги. Маски оставляют необходимые биты, а сдвиги размещают их в начале байта. Распаковка происходит с точностью наоборот. Извлекаются биты из аудио файла и собирается исходный файл. Кстати вот спектр в зависимости от битности:
Надеюсь что этот небольшой обзор будет полезным. Спасибо за внимание!
Вещь нужная, но в примитивном представлении наивно использовать. Сам когда-то экспериментировал со стенографией в аудио и графике. Т.е. я не хочу сказать, что это не применимо (даже напротив, это, пожалуй, единственный годный метод), но хочу напомнить о поведенческом анализе. Нельзя просто передавать общедоступный файл, модифицируя его, это при случае наоборот упростит работу заинтересованному. Как-то тут же и пришли к выводу, что контент не должен выделяться, должен быть уникальным и не должен использоваться дважды. В телеметрии можно совершенно незаметно пропускать закрытый текст, если он по характеру похож на шум. Младший бит с АЦП почти любого датчика почти всегда находится в шуме. нужно только позаботиться о схожести с равномерным распределением. А ещё из забавных методов сокрытия факта передачи информации могу вспомнить эхо-запросы. Задержка может нести информацию, хоть скорость будет очень невысока и придется использовать самокорректирующийся код (последнее, к слову, позволяет добавить к закрытому тексту ПСП, что существенно повысит стойкость).