Стеганография, арабский и немного математики (часть 1)

Содержание:

Восточная цивилизация произвела огромное количество великих поэтов, ученых, философов и мудрецов. Собственно, у них было для этого достаточно времени. В предыдущей статье мы говорили об одном из них, великом арабском криптоаналитике Аль-Кинди (смотреть Эволюция шифров и их стойкость)[1].

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

Стеганография — это наука о сокрытии информации. Носителем информации может быть все что меняет свою форму, внутренне или внешнее состояние. Это может быть надпись невидимым чернилом, прическа и даже борода. Это звучит странно, но бороду использовали для сокрытия татуировок с тайным содержанием.

Когда персы в пятом веке до нашей эры захватили Гистиея, который был правителем Греции, они постоянно следили чтобы он ничего не передал своим союзникам. Тем не менее, хитрый грек послал сообщение своему двоюродному брату Аристагору. Сообщение было доставлено в Милет в виде татуировки на волосатой голове его раба [2].

Арабский текст как способ скрыть информацию

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

Семь фактов об арабском языке

Арабский очень важен и включен в шесть основных языков ООН. Культурное наследие оставленное нам арабами очень огромное. Знание арабского, также как и других языков, помогает лучше понять восточную культуру, историю и так далее. Основные факты об арабском языке изложены ниже:

  1. Написание слов начинается с правой стороны и заканчивается на левой стороне (это очень удобно и рука не пачкается, особенно если вы левша);
  2. Не все буквы в одном слове пишутся слитно;
  3. Буквы делятся на солнечные и лунные;
  4. Алфавит содержит 28 букв;
  5. 22 буквы имеют 4 формы написания;
  6. 6 букв имеют только 2 формы написания;
  7. В арабском отсутствуют заглавные буквы.

Если вы UI-дизайнер, или работали с консолью в Linux, то вы наверняка знаете, что шрифты могут иметь разную ширину. Шрифты в которых буквы имеют одинаковую ширину — называются моноширинными (англ. monospace). Для выравнивания слов в арабском языке добавляют специальный символ, который называют татвиль, или кашида. Слова можно растягивать как баян, добавляя татвили много раз.

СловоЗначениеНормальное
написание
Татвиль
аль-малуденьгиالمالالــــمــــال
аль-хамдупохвалаالحمدالحمــــــد
слитное написание
Лигатура риал — символ арабских валют

Существует много способов слитного написания букв (лигатур). Одна лигатура может содержать несколько букв. На зеленом кружке нарисована лигатура риал. Слово может быть растянуто (ريال), или чересчур сплюснуто как риал (﷼).

В каскадной таблице стилей CSS3 раньше можно было определять стили с выравниванием при помощи кашиды. Добавление кашиды может усложнить поиск слов и поэтому обычно не используется в основном тексте. Конечно, если вы не преследуете эту цель. Его использование имеет смысл когда вы создаете навигационное меню на сайте. Данные символы есть на сайте сетевой академии Cisco в навигационном меню при выборе арабского языка в качестве основного.

Использование информативных и неинформативных символов

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

Для сокрытия текстовой информации в текстах, которые написаны на европейских языках приходится использовать смену регистра букв, умышленные опечатки, добавление лишних символов. Но все эти операции очень заметны. Ниже приведен стих Роберта Фроста в который вложено сообщение: «I love you».

i have been one acquainted with the night.
I have waLked Out in rain — and back in rain.
I haVE outwalked the furthest citY light.

I have lOoked down the saddest city lane.
I have passed by the watchman on his beat
And dropped my eyes, Unwilling to explain.

Роберт Фрост, известный американский поэт

Если вы посмотрите на данный текст, то вы обратите внимание на измененный регистр букв. В других, более незаметных схемах сокрытия, используется лишние пропуски между словами для указания индекса буквы. Каждый лишний символ пробела указывает порядок буквы в следующем слове. Смысл стеганографии в незаметности для большинства людей.

Как вы видите, для 8 символов скрытого текста требуется 256 символов открытого текста. Эффективность сокрытия выражается как отношение количества символов скрытых данных к количеству символов открытого текста. Для наших слов эффективность составляет 3,125%.

Избыточность информации равна 96,875%. Эта величина показывает неэффективность сокрытия информации. Данный показатель неприемлемый для информационного обмена. Для передачи одной статьи на этом сайте потребовалось бы около 320 000 символов.

Урду, уйгурский, фарси и белорусский арабский алфавит

Арабский оказал огромное влияние на другие языки такие как: урду, уйгурский и фарси. В иранском фарси, кроме 28 букв арабского алфавита присутствуют ещё 4 буквы. В урду также могут использоваться арабские буквы для написания слов.

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

Собственно, текст на английском также можно выразить при помощи арабских символов. Арабские 28 букв могут быть использованы для передачи 26 букв английского алфавита. Если кто-то вставит данный текст в переводчик Google Translate, то он ничего не поймет.

Впрочем, для передачи символов русского языка можно применить арабский алфавит, ведь каждая буква имеет несколько форм. Это конечно будет очень заметно. Для русского языка лучше использовать фарси, который содержит 32 символа (букву «ё» в русском алфавите можно просто пропустить).

Стеганография и преимущества арабского

Размещение букв с повторениями в слове аль-малу

Самое главное преимущество это 4 формы написания букв: обособленная, начальная, конечная и промежуточная. В арабском слове аль-малу 3 буквы (две буквы «лям» и одна «мим») имеют 4 формы написания, а остальные 2 буквы «алеф» только 2 формы.

Давайте подсчитаем, сколько возможных размещений букв можно получить для этого слова. Максимальное количество разных состояний которое может хранить это 5-буквенное слово равно 256. Но это самый идеальный случай и он подходит только если каждое из состояний можно интерпретировать отдельно. Например, если все пять позиций занимают «обособленные» формы букв это соответствует числу 256 и означает, что требуется посмотреть на слово с индексом 256 в словаре.

Таблица соответствия для сокрытия символов
(только для букв «алеф», «лям» и «мим»)

Теперь подсчитаем сколько состояний нам необходимо чтоб передать каждую букву английского алфавита. Если каждый кружок на рисунке может пребывать в двух состояниях, то количество кружков которое требуется для одной английской буквы равно логарифму с основой 2, где аргумент равен 26 (количество букв алфавита). Значение этого логарифма равно 4.7, то есть для сокрытия одного символа нужно 5 кружков.

Если арабский текст применить для сокрытия информации достаточно только 3 кружечка для букв «алеф», «лям» и «мим» Количество разных состояний: 4^2*2^1=32 — возможных символа. Количество лишних состояний для трех букв: 32-26=6. Шести состояний не хватит чтобы закодировать английскую букву. Найти для них применение мы больше не сможем. Остальные две буквы оставляют нам 8 возможных состояний (4^1*2^1=8), но и их тоже не хватит.

А сейчас, давайте подсчитаем эффективность: 1/5*100=20%. Один английский символ который прячется в пяти буквах дает двадцатипроцентную эффективность!!! Избыточность равна 80%, но это лучше чем для стиха Роберта Фроста.

Если вы считаете, что эти операции заметны также как сокрытие информации сменой регистра символов, то вы ошибаетесь. Впрочем, для того чтобы оригинальное слово выглядело более органично можно добавить татвили. Это конечно увеличит количество избыточной информации.

Перевод нескольких одинаковых арабских слов в Google Translate

Вначале второго и третьего слова незаметно вставили оконечную форму буквы «алеф». Вконце третьего слова оконечная форма буквы «лям» стала промежуточной формой. Однако, смысл слов не изменился и переводчик по-прежнему показывает один и тот же перевод.

Стеганографический алгоритм

В общем случае, алгоритм включает следующие шаги:

  1. Создайте текст, который вы будете скрывать;
  2. Найдите или напишите некоторый открытый текст;
  3. Проведите математический анализ обоих текстов;
  4. Определите стеганографический метод который наиболее вам подходит;
  5. Если подходящие методы отсутствуют, то перейдите на шаг 2;
  6. Создайте стеганографическое сообщение.

Как было сказано ранее, арабы оставили огромное культурное наследие, которое выражено в песнях, книгах, музыке. С поиском сказок и поэзии никаких проблем нет. А содержимое секретного сообщения зависит от вас.

Математический анализ

Эта часть требует много времени, поэтому возьмите какой-либо программный пакет для математического анализа Matlab, Mathcad, Excel, LibreOffice Calc, Jupiter notebook, или интерпретатор языка Python. Имейте ввиду, что для языка Python вам потребуется дополнительные библиотеки:

  • numpy — для работы с массивами;
  • scipy — для использования статистических функций;
  • matplotlib — для построения графиков и сравнения эффективности;
  • другие библиотеки.

Первое, что вам следует сделать, это это провести частотный анализ букв и символов пунктуации. Для этого строят символьную таблицу, содержащую символы и количество их повторений для открытого и скрытого сообщений. В предыдущей статье, это сделано посредством LibreOffice Calc (смотреть Эволюция шифров и их стойкость).

Основные рекомендации к тексту в котором мы спрячем другой текст:

  1. Количество символов имеющих 4 формы написания должно быть больше;
  2. В начале и конце каждого слова желательно избегать букв с двумя формами написания;
  3. Попытайтесь избегать двух букв идущих подряд, которые имеют только две формы написания.

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

Методы подсвечивания

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

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

Методы инкрементальных указателей

В методе инкрементальных указателей в качестве основы используются в основном символы-разделители. К существующему тексту добавляются «лишние» пробелы, которые указывают на секретную букву. Фиолетовым кружком выделен отступ между словами, где один пробел уже есть. Этот пробел не входит в подсчет.

Метод инкрементальных указателей
Стеганографические сообщения

В арабском языке можно использовать символ татвиль в качестве инкрементального указателя. Также можно применить пробел и татвиль как множитель для позиции указателя. Например, два пробела и три татвиля указывают на 6 символ в слове. Количество самих татвилей в слове, в подсчет индекса искомой буквы не входят. Это очень удобно, не так ли?

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

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

Методы множества шрифтов

Этот метод самый простой и имеет много вариаций. Например, метод множества шрифтов может применяться вместе с методом подсвечивания. Для этого шрифты необходимых букв в тексте меняют на другой очень похожий шрифт. Потом все буквы объединяют (конкатенируют) и получают искомое сообщение.

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

Мета-информационные методы

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

Например, в качестве автора можно указать известную историческую личность. Вместо реальной даты создания, указать дату какого-то знаменательного события. И это также будет считаться стеганографическим сообщением.

Методы множественного смысла

Слова произнесенные в разном обществе могут иметь разный смысл. Так в информационных технологиях слово «мама» означает материнскую плату. Будьте осторожны, когда ругаете компоненты компьютера вашего знакомого. В таком случае, вы рискуете получить синяк под глазом.

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

Выбор способа сокрытия информации

Универсального метода для выбора способа сокрытия информации не существует. Способ можно определить ответив на вопросы ниже.

  1. Что будет использовано в качестве носителя информации?
  2. Какие символы будут сокрыты?
  3. Будет ли текст со скрытым сообщением потом обработан в других программах?
  4. Какие шрифты, программы, устройства, использует получатель информации?
  5. Какими знаниями и опытом обладает получатель секретного сообщения?

После ответа на данные вопросы обратите внимание на возможные проблемы и способы рационализации представления информации.

Возможные проблемы

Текстовые процессоры (Microsoft Office Word, LibreOffice Writer и некоторые другие) могут автоматически исправлять ввод, поэтому скрытое сообщение не всегда будет интерпретировано правильно. Например, редактор векторной графики Inkscape, изменяет формы арабских букв даже если сами буквы вставлять посимвольно.

В отношении смартфонов и планшетов это особенно актуально. Отключите автоматическую замену для слов и проверку правописания. В противном случае, это серьезно усложнит весь процесс сокрытия текста.

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

С блокнотом в ОС Windows также могут возникать проблемы. После переноса текстового файла из ОС Linux в Windows, обычный блокнот в Windows неправильно интерпретирует конец строки. В Linux конец строки выражается ASCII символом «подача рядка» (Line feed, 0x0A). В Windows новая строка начинается после символов «возврат каретки» (Carriage return, 0x0D) и «подача рядка».

В результате, в Windows вы можете увидеть текст размещенный на одном рядке. Во избежание этого, подойдет любой блокнот который поддерживает два формата конца строки. Приложения, которые подходят для этих целей: notepad++, Editpad, Visual Studio Code, Brackets, Sublime Text, и так далее.

Способы рационализации стеганографических процессов

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

Как вы видите, количество всех состояний для этих кружков равно: 2^6=64. Количество неиспользуемых состояний равно: 64-33=31. Если сократить алфавит до 32 символов, тогда будет достаточно пяти кружков. В таком случае, количество всех состояний будет: 2^5=32. Количество неиспользуемых состояний будет: 32-32=0.

Исходя из вышеизложенных особенностей, мы пришли к выводу что оптимизировать процесс сокрытия можно:

  1. Увеличением количества состояний букв открытого сообщения (которое переносит секретную информацию);
  2. Уменьшением количества символов в алфавите скрытого сообщения.

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

Алфавит скрытого сообщения для сокрытия информации в двух состояниях должен иметь от 2^4 до 2^5 букв (2 означает количество состояний для каждой позиции). Тратить 6 позиций (кружочков) для символов нецелесообразно, поэтому для русского языка рекомендуют использовать укороченный вариант алфавита.

Русскую букву «ё» заменяют на похожую на неё букву «е». Буква которая выпала из алфавита применяется не так часто. Пусть n — количество позиций для символа. Если секретное сообщение написано на других языках, количество символов в алфавите которых немного превышает 2^n и значительно меньше 2^(n+1), тогда такой алфавит нужно сократить для увеличения плотности передачи.

Если изначально планируется передавать только две фразы «ДА» и»НЕТ», то множество символов секретного алфавита можно сократить до 5 символов: {‘А’,’Д’,’Е’,’Н’,’Т’}. Это очень упрощенный пример, но он объясняет почему следует использовать статистический анализ.

Выводы

Проанализировано свойства арабского, латинского и русского алфавитов. Показано превосходные свойства арабского для незаметного сокрытия информации. Приведены основные методы сокрытия информации. На их примере показано способы оптимизации процессов сокрытия информации.

Количество способов сокрытия информации не ограничивается приведенными примерами. Основная сложность применения таких подходов состоит в разном стиле текстов. Каждый стиль требует своего уникального подхода. Тексты с огромным количеством повторений наименее подходят для сокрытия информации.

Источники информации:

[1] Аль-Кинди «Трактат о дешифровке криптографических сообщений»

[2] Геродот «История в 9 книгах»

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

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