Рис. 1. Незначительное изменение глифа (формы конкретной литеры) кодирует цифровую информацию за счёт двухмерной матрицы вариантов начертания. Каждая точка в двухмерной координатной сетке генерирует соответствующий уникальный глиф

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

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

Суть метода вкратце изложена на схеме и подробно объясняется в научной работе.



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


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



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

Схема кодирования предусматривает разбиение текста на блоки по пять символов. Каждому блоку назначается число от 0 до 255 в кодировке ASCII, которое внедряется в глифы путём изменения их формы. При декодировании выполняется обратная процедура, когда числа извлекаются из глифов.



При выборе глифов для стенографического внедрения цифр применяется схема кодирования с оценкой максимального правдоподобия и коррекцией ошибок на базе китайской теоремы об остатках 1700-летней давности. Это гарантирует восстановление оригинального сообщения с ограничением частоты ошибок не более установленной.

В каком-то смысле техника FontCode похожа на штрих-коды и QR-коды, ведь там полоски разной толщины или чёрно-белые квадраты кодируют цифровую информацию. Здесь примерно так же цифровая информация кодируется формой глифов.

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

Научная работа с описанием технологии FontCode подготовлена для конференции SIGGRAPH, которая пройдёт в августе 2018 года в канадском Ванкувере.

Комментарии (30)


  1. vis_inet
    17.05.2018 20:49
    +1

    Ну, вот…
    Что же теперь запрещать все шрифты кроме одного эталонного? )


    1. Fortunato28
      17.05.2018 21:34
      +2

      А эталонным признают Comic Sans


    1. stychos
      17.05.2018 23:36
      +1

      Пора вообще слова запрещать. Устроили тут обмен информацией, понимаешь ли.


  1. savostin
    17.05.2018 23:46
    +1

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


    1. khim
      18.05.2018 01:19

      Зачем коды? Передаёте картинки. PDF. 5000x3500 страница. И никто никогда не догадается зачем текстовую информацию передавать такими картинками, да.

      Ужос как секретно.

      P.S. А если «кроме шуток», то можно в комиксы это вклеивать — они часто как раз как PNG'шки публикуются несмотря на обилие в некоторых из них текста. Вот для них и придётся эталоном делать Comic Sans, как тут уже предлагают


      1. savostin
        18.05.2018 08:04

        Под «печатным» я подразумевал визуальный.
        Игрушка какая-то, а не стенография.
        Хотя, кто их, шпионов, поймет.


        1. Memiy
          18.05.2018 08:56

          Много где документооборот идёт через pdf, так что не всё так однозначно


          1. BasilioCat
            18.05.2018 09:58

            PDF хранит либо ссылку на системный шрифт, либо ембеддит его в документ (полностью или только используемые символы). В любом случае это будут разные символы. TIFF спасёт!


            1. Am0ralist
              18.05.2018 10:12

              ПДФ прекрасно хранит и картинки внутри себя


            1. Alexeyslav
              18.05.2018 14:53

              Это когда есь информация о тексте и шрифте, например при печати через виртуальный принтер. Но если этот документ представится «сканированным» то никакого встроенного или системного шрифта не надо — символы в документе могутхранится в виде глифов, каждому символу в соответствие можно задать с десяток похожих глифов но отличающихся незначительно, а в документ пойдут только ссылки на глифы. Декодер составит таблицу ссылка-символ обработав глифы по своим характерным признакам(а их могут быть десятки, и только один из них несёт полезную информацию) и извлечёт нужную нам информацию. В то же время по исходному документу будет очень сложно судить вообще о наличии стеганографии, даже если человек будет просматривать встроенные глифы. Ну да, глифы будут разные и чем-то отличаться… но какой именно признак несёт скрытую информацию, а какой является случайным артефактом сканирования?


      1. eiennohito
        18.05.2018 10:33

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


        1. Alexeyslav
          18.05.2018 14:46

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


    1. LLE
      18.05.2018 08:56

      Например PDF с отсканироваными страничками


    1. unwrecker
      18.05.2018 12:57

      Даже, скорее, для рукописного. В печатном будет слишком легко найти признаки наличия стегонографии.


      1. Alexeyslav
        18.05.2018 14:55

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


  1. CaptainFlint
    18.05.2018 01:36

    Так вот зачем последние годы в интернетах активно внедрялась привычка постить везде тексты картинками!


  1. BM_MacGregor
    18.05.2018 08:56

    Штука занятная, но:
    1. Много информации не закодируешь.
    2. Факт кодирования легко выявляется.


    1. iig
      18.05.2018 12:50

      1. Много информации не закодируешь.
      2. Факт кодирования легко выявляется.

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


  1. RolexStrider
    18.05.2018 09:18

    Новый способ? Да этим способом еще итальянские мафиози в 20-30-х годах пользовались, чтобы из тюрьмы ценные указания на волю передавать.


    1. impwx
      18.05.2018 09:55

      Где можно про это почитать?


      1. RolexStrider
        18.05.2018 11:28

        Конкретно про итальянскую мафию не могу найти, но как оказалось эта методика гораздо, гораздо более древняя:
        Шифр Бэкона


  1. tangro
    18.05.2018 10:54
    -1

    Такая себе стеганография — я невооруженным глазом вижу разницу между этими буквами.


    1. strongholda
      18.05.2018 14:04
      +1

      невооруженным? если бы вам не сказали что это шифровка — ни в жизнь бы не догадались… если бы не обвели, не показали примеры, не увеличили — тоже бы ни сном… тем более я предполагаю, что вряд ли буквы в тексте подряд будут шифровать


      1. tangro
        18.05.2018 16:16

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


        1. iig
          18.05.2018 18:08

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


          Комикс, шрифт стилизован под рукописный, все буквы немного отличаются.
          Талмуд с документацией под NDA в 1000 страниц — некоторые буквы отличаются на пару пикселей. Как отличить, это так напечаталось, или это скрытые watermark'и?
          План по захвату Галактики, опубликованный на wikileaks…


  1. akkuraten
    18.05.2018 11:16

    Главное, чтобы эта статья не попалась на глаза Роскомнадзору.


    1. TrllServ
      18.05.2018 11:29

      Да нет же.
      Пусть попадется, чем больше забанят бездумно, тем быстрее заменят любителей «делать и посмотреть», на любителей «думать и не навредить».


  1. PavelMSTU
    18.05.2018 18:15

    Предлагаю другую стеганографию.

    Есть принтер, печатающий текст.
    Но реальный мир не идеален, поэтому, по сути, все напечатанные буквы уникальны (не могут же они микрон-в-микрон совпадать).

    И вот тут уже можно попытаться сделать стеганогарфию ;)
    Как буд-то на «некачественном» принтере распечатано…
    А по факту — это намеренно.


    1. Am0ralist
      18.05.2018 21:30

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


      1. PavelMSTU
        18.05.2018 22:48

        Для just4fun да, для тех кому такое надо — нет.