
Рис. 1. Незначительное изменение глифа (формы конкретной литеры) кодирует цифровую информацию за счёт двухмерной матрицы вариантов начертания. Каждая точка в двухмерной координатной сетке генерирует соответствующий уникальный глиф
Специалисты по стеганографии придумали новый способ прятать шифровки в открытом канале. В данном случае — в открытом тексте. По мнению изобретателей, кроме естественного применения в разведке эту технологию можно использовать для скрытого внедрения метаданных, таких как водяные знаки.
Недавно на Хабре рассказывалось про фингерпринтинг текста непечатаемыми символами. Новая техника FontCode более изощрённая, но по сути похожа. И здесь обнаружить скрытое сообщение не так просто, даже сложнее, чем непечатаемые пробелы. В этом тексте никаких невидимых символов нет, а слегка изменённую форму букв сложно заметить на глаз и уж точно невозможно расшифровать, если вы не знаете принцип кодирования/декодирования.
Суть метода вкратце изложена на схеме и подробно объясняется в научной работе.

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

Чтобы распознать искажённый глиф каждой буквы с помощью CNN, изображение сначала предварительно обрабатывается c подготовкой данных для обучения нейросети, а также для уменьшения размерности обучающих данных. Область каждой буквы обрезается по рамке, установленной системой оптического распознавания символов. Затем осуществляется бинаризация области изображения с помощью классического алгоритма Otsu. Этот шаг помогает устранить влияние, вызванное различными условиями освещения и цветами фона. Наконец, размер области изображения изменяется до квадрата 200?200 пикселей. Такие чёрно-белые изображения 200?200 подаются для обучения в нейросеть. Обученная нейросеть способна распознавать изображения, непосредственно синтезированные или полученные с цифровых камер, то есть когда пользователь наводит камеру смартфона на текст со скрытой шифровкой, так же как он наводит камеру на QR-код. Соответственно, обучающие данные для CNN состояли из синтетических изображений и реальных фотографий. Эти синтетические данные были созданы фотореалистичным визуализатором с различными настройками экспозиции.
Схема кодирования предусматривает разбиение текста на блоки по пять символов. Каждому блоку назначается число от 0 до 255 в кодировке ASCII, которое внедряется в глифы путём изменения их формы. При декодировании выполняется обратная процедура, когда числа извлекаются из глифов.

При выборе глифов для стенографического внедрения цифр применяется схема кодирования с оценкой максимального правдоподобия и коррекцией ошибок на базе китайской теоремы об остатках 1700-летней давности. Это гарантирует восстановление оригинального сообщения с ограничением частоты ошибок не более установленной.
В каком-то смысле техника FontCode похожа на штрих-коды и QR-коды, ведь там полоски разной толщины или чёрно-белые квадраты кодируют цифровую информацию. Здесь примерно так же цифровая информация кодируется формой глифов.
Кроме стеганографического внедрения секретного послания в открытый текст FontCode допускает и использование шифрования. В этом случае отправитель и получатель должны предварительно согласовать секретный ключ для расшифровки сообщения. Шифровку можно спокойно передавать в открытом виде — через интернет или в виде бумажной распечатки. Человек видит обычный текст, а компьютер с системой OCR и специально обученной нейросетью распознаёт в этом тексте скрытое послание.
Научная работа с описанием технологии FontCode подготовлена для конференции SIGGRAPH, которая пройдёт в августе 2018 года в канадском Ванкувере.
Комментарии (30)
savostin
17.05.2018 23:46+1Это ж только для печатного способа передачи информации?
Имхо цифровой бессмысленен, т.к. коды у символов будут разные.
Тогда как-то архаично выглядит, несмотря на ИИ.khim
18.05.2018 01:19Зачем коды? Передаёте картинки. PDF. 5000x3500 страница. И никто никогда не догадается зачем текстовую информацию передавать такими картинками, да.
Ужос как секретно.
P.S. А если «кроме шуток», то можно в комиксы это вклеивать — они часто как раз как PNG'шки публикуются несмотря на обилие в некоторых из них текста. Вот для них и придётся эталоном делать Comic Sans, как тут уже предлагают…savostin
18.05.2018 08:04Под «печатным» я подразумевал визуальный.
Игрушка какая-то, а не стенография.
Хотя, кто их, шпионов, поймет.Memiy
18.05.2018 08:56Много где документооборот идёт через pdf, так что не всё так однозначно
BasilioCat
18.05.2018 09:58PDF хранит либо ссылку на системный шрифт, либо ембеддит его в документ (полностью или только используемые символы). В любом случае это будут разные символы. TIFF спасёт!
Alexeyslav
18.05.2018 14:53Это когда есь информация о тексте и шрифте, например при печати через виртуальный принтер. Но если этот документ представится «сканированным» то никакого встроенного или системного шрифта не надо — символы в документе могутхранится в виде глифов, каждому символу в соответствие можно задать с десяток похожих глифов но отличающихся незначительно, а в документ пойдут только ссылки на глифы. Декодер составит таблицу ссылка-символ обработав глифы по своим характерным признакам(а их могут быть десятки, и только один из них несёт полезную информацию) и извлечёт нужную нам информацию. В то же время по исходному документу будет очень сложно судить вообще о наличии стеганографии, даже если человек будет просматривать встроенные глифы. Ну да, глифы будут разные и чем-то отличаться… но какой именно признак несёт скрытую информацию, а какой является случайным артефактом сканирования?
eiennohito
18.05.2018 10:33Превращаем глифы в их векторные контуры и всё. Может быть можно правда ещё поделать что-то с трансформациями самих глифов в пдфках.
Alexeyslav
18.05.2018 14:46Векторные контуры будут иметь легко узнаваемую сигнатуру, считай практически коды символов подставлять. Не вектор надо в документ вставлять, а так называемые OCR, где каждый символ разбирается на глиф и встраивается в документ, а сам документ состоит из ссылок на «похожие» глифы. Таким образом, одному символу может соответствовать с десяток а то и сотня практически похожих глифов, соответственно для одного символа можно будет использовать одну из ссылок фактически ведущих к одному и тому же глифу. Снаружи, этот документ будет выглядеть как отсканированный и весьма сложно будет задать фильтр на поиск таких документов с приемлемым процентом ложных срабатываний.
unwrecker
18.05.2018 12:57Даже, скорее, для рукописного. В печатном будет слишком легко найти признаки наличия стегонографии.
Alexeyslav
18.05.2018 14:55Насчет этого не уверен. Для стеганографии например используется один признак а в символах можно менять 5 разных признаков, в которых будет вложена случайная последовательность. А ещё эти… адаптивные «рукописные» символы, которые рандомно меняют свою форму для придания естественности… да тут поле непаханое.
CaptainFlint
18.05.2018 01:36Так вот зачем последние годы в интернетах активно внедрялась привычка постить везде тексты картинками!
BM_MacGregor
18.05.2018 08:56Штука занятная, но:
1. Много информации не закодируешь.
2. Факт кодирования легко выявляется.iig
18.05.2018 12:501. Много информации не закодируешь.
2. Факт кодирования легко выявляется.
Стеганография же. Чем больше разница между обьемом контейнера и обьемом вложенной информации, тем не легче выявить факт наличия скрытой информации.
RolexStrider
18.05.2018 09:18Новый способ? Да этим способом еще итальянские мафиози в 20-30-х годах пользовались, чтобы из тюрьмы ценные указания на волю передавать.
impwx
18.05.2018 09:55Где можно про это почитать?
RolexStrider
18.05.2018 11:28Конкретно про итальянскую мафию не могу найти, но как оказалось эта методика гораздо, гораздо более древняя:
Шифр Бэкона
tangro
18.05.2018 10:54-1Такая себе стеганография — я невооруженным глазом вижу разницу между этими буквами.
strongholda
18.05.2018 14:04+1невооруженным? если бы вам не сказали что это шифровка — ни в жизнь бы не догадались… если бы не обвели, не показали примеры, не увеличили — тоже бы ни сном… тем более я предполагаю, что вряд ли буквы в тексте подряд будут шифровать
tangro
18.05.2018 16:16Хорошей стеганографией является такая, которую нужно сначала обнаружить. Вот такую стеганографию обнаружить в автоматическом режиме проще простого — достаточно больше 2 букв с разными начертаниями похожих символов, чтобы заподозрить неладное.
iig
18.05.2018 18:08достаточно больше 2 букв с разными начертаниями похожих символов, чтобы заподозрить неладное
Комикс, шрифт стилизован под рукописный, все буквы немного отличаются.
Талмуд с документацией под NDA в 1000 страниц — некоторые буквы отличаются на пару пикселей. Как отличить, это так напечаталось, или это скрытые watermark'и?
План по захвату Галактики, опубликованный на wikileaks…
PavelMSTU
18.05.2018 18:15Предлагаю другую стеганографию.
Есть принтер, печатающий текст.
Но реальный мир не идеален, поэтому, по сути, все напечатанные буквы уникальны (не могут же они микрон-в-микрон совпадать).
И вот тут уже можно попытаться сделать стеганогарфию ;)
Как буд-то на «некачественном» принтере распечатано…
А по факту — это намеренно.Am0ralist
18.05.2018 21:30Для этого надо супер-пупер крутой и точный принтер иметь. И чтоб он, не дай бог, не начал пачкать страницы (то есть идеальные фотобарабаны, идеальную систему их очистки от лишнего тонера, печки чтоб не пачкали).
Дороговато будет.
vis_inet
Ну, вот…
Что же теперь запрещать все шрифты кроме одного эталонного? )
Fortunato28
А эталонным признают Comic Sans
stychos
Пора вообще слова запрещать. Устроили тут обмен информацией, понимаешь ли.