- PVSM.RU - https://www.pvsm.ru -
Существует масса способов информационного сокрытия одних данных внутри других данных. Самое частое, что обычно вспоминают – это стеганографию в изображениях, аудио и видео информации.
Однако контейнеры этим не исчерпываются. Совместно с двумя разгильдяями очень талантливыми студентами (а именно с lancerx [1] и с PavelBatusov [2]) мы решили разработать простенький just4fun-проектик информационного сокрытия в электронных документах.
Ссылка на то, что получилось (не судите строго): pdf.stego.su [3]
(примеры PDF можно взять здесь [4])
Интерфейс довольного пользователя представлен на кавайной картинке:

Как-то раз за чашкой кофе, рассуждая о стеганографии, мы задались вопросом: "Можно ли в электронные текстовые документы вкраплять какую-нибудь дополнительную стороннюю информацию таким образом, чтобы визуально сами документы никак не изменились?". Так появился наш маленький «стеганографический кружок».
Оказывается можно.
Вот далеко не полный список.
Продолжать можно долго, т.к. форматов хранения текстовой информции человечество навыдумывало немало.
Для наших опытов с сокрытием мы выбрали PDF, т.к. он обладает следующими «преимуществами»:
Наколеночную приблуду мы назвали SHP, что расшифровывается как Simple Hide to Pdf. Simple – потому что простое; Hide – потому что скрывает; и “to PDF” – потому что работает только с PDF документами.
Для ликбеза пару абзацев про протокол ISO 32000:2008 [11], который и есть PDF.
Документ состоит из объектов (так называемые obj) в конце документа есть xref-таблица, которая перечисляет все необходимые объекты. Каждый объект имеет номер и ревизию… Да, именно так, pdf поддерживает различные ревизии! На самом деле PDF — это мини-система управления версиями [12]! ;)) Вот только в жизни что-то не прижилось…
PDF-документ образуется объектами разных типов:
Если говорить грубо, то структура PDF следующая:
Немного изучив PDF стандарт навскидку можно предложить следующие методы сокрытия.
Самым простым способом пункта 3 являются… комментарии. Вот уж не знаю для кого это оставили; может быть это наследие PostScript [13], который «юридически» является языком программирования (как, LaTeX) и, соответственно, в его синтаксисе предусмотренны строки комментариев, как в любом ЯП. С точки зрения «рафинированной» стеганографии — это, конечно, не секьюрно. Однако предполагаемому противнику нужно знать о факте сокрытия…
Тем не менее, есть случаи, когда при сокрытии не имеет смысл скрывать сам факт наличия сообщения. Это будет информационным сокрытием, но уже не стеганографией.
Вкрапление данных:
Извлечение данных:
Вот, собственно, и все.
Если пользователь введет некорректный пароль, SHP некорректно вычислит стегоключ и криптоключ. Поэтому пользователь может быть уверен, что не зная пароля никто другой саму информацию из pdf не получит.
Тем, кто не заметил в начале pdf.stego.su [3]
(Как видите вместо стандартного черного цвета в Django мы выбрали влюбленных жаб [14]. Да, мы просто гении дизайна!)
Сначала это был просто just4fun для меня и приобритение навыков и опыта для моих паддаванов-студентов. Однако в последствии у нас появились ряд идей. Именно поэтому мы публикуем этот пост, так как хотим знать мнение профессионального IT-сообщества, особенно безопасников.
Возможно все что мы пишем — бред. В этом случае, если читатель еще не бросил чтения этого поста, то просим его потратить еще 5-10 минуть времени на критику в комментах.
В одном из своих прошлых постов я рассказал о 15 практических целей стеганографии (и информационного сокрытия) [15].
По сути стеганография в документах (и в частности в PDF документах) в той или иной мере может быть применима для всех задач.
Однако наиболее интересных всего 4.5 задачи.
Как уже писали — не секьюрно! Однако против киберблондинок точно сработает. Для более серьезной стеганографии требуется придумать хороший алгоритм стеганографического вкрапления как такового. Поэтому эту задачу мы засчитываем за 0.5, а не за 1.
К тому же использование электронных документов нельзя считать робастной стеганографией потому, что при преобразовании (например: pdf -> odt) информация теряется.
Единственное, где идея незаметной передачи может быть востребована, это в закрытых протоколах. Своего рода «security through obscurity» [16], только в стеганографии.
Все больше набирает оборот продажа электронных журналов; различной аналитики и прочих платных подписок. Возникает вопрос: можно ли как-то защитить продаваемый контент? Чтобы публикующим в сети персонажам неповадно было?..
Можно попробовать в рассылаемый документ вкраплять информацию о получателе. Например: e-mail и номер платежной карты, IP, логин при регистрации в интернет-магазине, мобильный телефон и т.д. Для секьюрности и соблюдения законодательства можно вкраплять это в виде хешей (+соль) или просто вкраплять какой-либо номер (ID'шник в системе),
таким образом этот номер что-то скажет только владельцу системы.
В случае публикации защищаемого документа вы можете определить, кто именно слил данную информацию.
Разумеется возникает ряд вопросов.
Если использовать SHP то эту задачу следовало бы так же засчитать за 0.5, а не за 1.0…
Однако можно попытаться найти более хорошие и надежные алгоритмы сокрытия данных.
Например применение нескольких алгоритмов сокрытия «не мешающих друг другу» позволяет построить единую стеганографическую конструкцию, так сказать «многофакторную стеганографию» (тоже отсебячный термин).
Суть «многофакторной стеганографии» в следующем: если хотя бы одна метка сохраниться мы можем взять персонажа за яйца, мы можем определить, кто именно опубликовал данный платный контент. В Японии это актуально.
Идея очень простая. Мы подписываем документ, удостоверяя свое авторство. Отличие от огромного зоопарка аналогичных систем заключена в том, что наша подпись неотчуждаема от самого файла.
Однако, есть штатный механизм [17], который делает то же самое! (по крайней мере и в рамках протокола PDF)
Поэтому мы опоздали >__<
Но можно аналогичные рассуждения применить к другим форматам?
В принципе «неотчуждаемость» сокрытых данных можно использовать
для децентрализированных систем электронного документооборота [18] (СЭДО).
Вот только нужно ли?
Понятно, что это очень удобно; peer-2-peer и вообще — модно!
Самый главный цимес — неотчуждаемость от документа.
В современных СЭДО подписанный документ подписан только если он внутри СЭДО.
Если вы его извлечете и передатите по почте сторонней организации у которой не стоит решение вашего СЭДО, то вы просто передадите файл.
Современный рынок СЭДО напоминают месседжеры. Если вы на Skype, а Вася на Telegram, то либо вам нужно установить Telegram, либо Васе Skype… А вот представте себе протокол вкрапления информации (или совокупность протоколов вкрапления для каждого протокола электронных документов).
Единый для всех! Общий!
Если бы этот протокол вкрапления и извлечения подписей был бы един, так же как едины SMTP и IMAP для всех почтовиков, это было бы гораздо удобнее.
Хотя я — не специалист по СЭДО. Если здесь есть спецы, то прошу уделить время и написать в комментах, что вы думаете по этому поводу.
Востребована ли данная идея?
Представте, что у вас есть режимный или «полурежимный» объект (да, бывают и такие). У вас есть информация, которую вы бы не хотели пускать во вне, например внутренняя документация какого-либо продукта.Вы вкрапляете определенную метку (или метку из определенного множества). Если документ идет «во вне» системы, то DLP (Data Leak Prevention [19]) проверяет наличие метки. Если метки нет – документ проходит; если есть – система поднимает alert.
Конечно, это не является панацеей. Но если польза от информационного сокрытия будет гораздо больше, чем цена на разработку этой системы, то почему бы не ввести в качестве факультативной (то есть дополнительной) меры?
К тому же от одного типа «утечки» это однозначно поможет – от непреднамеренной. Бывают случаи, когда нечаянно пересылаются такие документы, которые лучше бы не пересылать (надеюсь, это печальное свойство присуще только «полурежимным», а не режимным объектам...)
.
Мы убедились, что сокрытие данных в документах – это вполне реальная штука.
… Ну и узнали много нового, так как много где поковырялись [20]...
Конечно, есть ряд вопросов.
Возможно ли сделать это сокрытие стеганографически стойким? Что будет, если пользователь переведет все из pdf, скажем, в jpeg?.. Удалится ли сокрытая информация? Насколько это критично? Решит ли эту проблему многофакторная стеганография?
Применим ли статистический подход для анализа качества системы? То есть если система защищает в 90% случаях, а в 10% не защищает, то разумно ли (как в криптографии) говорить, что система не защищает совсем? Или, может быть, есть бизнес-кейсы, когда и 90% будет достаточно для получения определенной пользы?..
Ваша точка зрения, читатель, категорически приветствуется в комментариях – ради этого данный долгочит и был написан.
Еще раз ссылка на портал: pdf.stego.su [3]
(+ примеры PDF для опытов, кому лень искать [4])
(заранее приносим извенения за возможный хабраэффект)
Автор: PavelMSTU
Источник [21]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/163501
Ссылки в тексте:
[1] lancerx: https://habrahabr.ru/users/lancerx/
[2] PavelBatusov: https://habrahabr.ru/users/pavelbatusov/
[3] pdf.stego.su: http://pdf.stego.su/
[4] взять здесь: https://yadi.sk/d/hWQQnLCPth92m
[5] ISO/IEC 26300-1:2015: http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=66363
[6] ГОСТ Р ИСО/МЭК 26300-2010: http://yandex.ru/clck/jsredir?from=yandex.ru%3Bsearch%2F%3Bweb%3B%3B&text=&etext=1061.4ttzQXyfUnm147Xs7vInSUmv294ELJrz5P4Xj5a4suByE8HT-geCCHjlrDoOzkr1.c529f76a52dbd2b1d12b68af9cc4a4b3ca41a52f&uuid=&state=PEtFfuTeVD5kpHnK9lio9T6U0-imFY5IshtIYWJN7W9gCP82Ty_MkILSpQsSL_4seMWRrvw7swlkTSXMEde-IzM9MrE0Zs_jGVPhqpFDXZU9ffeKx0Jnke8zrmY4exUNxoFmW-Y2Apw&data=UlNrNmk5WktYejR0eWJFYk1LdmtxdklYNVVhX3NIcUtYQU9SNTNaTVBSS3RMLVpId0sxc0pyb282OGhMd1pReUNGaGpJWUwtcFhHV0tOWmNuQ2Y5XzF3YVQycGt0cU1BdG5SZUNyRkR6QnNDMFBVbkpNOEdJa0RlU3BqbjB2TlFVOFNZNDRIRjFqYW1URFZ4OTVVMlQwNGVFZzZRSDVFcXhQTG04emp3WVlldTBoWGNFT1U1M3pTLWlPX2p1SkVaZEdkTGxnRTY2UFNqUHRTcWtZUXpfeTQzbmVVOElvWUp3b1hQRDdzQWU0dmFJMG15aldBNXNEb0N4aVZZdlRYRXM2OWNMTkU3d1czd0g4QkV2cmxtamxMYlgyb3RaMWlWVmtXdUlWcmNpMng1UFdvQnFKY0NFVTFZQkw1NlN6N3dzWks4SlFFY2ttNjc1MjJna2JzUHhiM0Nvc0ZVVmFNSU8ySVJkb28xUUM0&b64e=2&sign=c7816e85b20453d6c967fe923d0d9303&keyno=0&cst=AiuY0DBWFJ5fN_r-AEszk-uaCxT0hx4SxIieaAQZGntqyachnzJiPNtF-BaVmTv7HfHrygaXferX3JIc8jvbI36bRo_VmwPn8tTZpmOXhrdzyLf57RwygbIhI6cDwSw53cC2JgBEOjcquis9Jmn2U_StN2Ng0kgdErEP4x9CN1Q3x4wJNQHHVEuppitxVb4VMCSyKSrVQ5F3PqZF13XXZabxHztaui6n&ref=orjY4mGPRjk5boDnW0uvlrrd71vZw9kp6VO9xJkn34ceKe4MrpxIT3b9uqsO0-hqQH5bGffhex-B8gbnJLp-n0rFBWLatSRBOr9q7g1rTvi5O4jxCnZ6nrYr8wYAiD3taAxvAUuoZAHCaqH9T-9pgkJCiyQXj8e9qsS1FD2dQSGVMPXQ8woyZ3dF7T8FTvFv&l10n=ru&cts=1463866426284&mc=4.882279830013502
[7] LibreOffice: http://ru.libreoffice.org/
[8] JB2: http://www.djvuzone.org/open/doc/JB2Image.h.html
[9] хеш-стеганографии: https://habrahabr.ru/post/272935/
[10] LSB: https://habrahabr.ru/post/112976/
[11] ISO 32000:2008: http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf
[12] система управления версиями: https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F%D0%BC%D0%B8
[13] PostScript: https://ru.wikipedia.org/wiki/PostScript
[14] влюбленных жаб: https://yandex.ru/images/search?text=%D0%92%D0%BB%D1%8E%D0%B1%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%B6%D0%B0%D0%B1%D1%8B%20%D1%86%D0%B2%D0%B5%D1%82&stype=image&lr=213&noreask=1&source=wiz
[15] 15 практических целей стеганографии (и информационного сокрытия): https://habrahabr.ru/post/253045/
[16] «security through obscurity»: https://en.wikipedia.org/wiki/Security_through_obscurity
[17] штатный механизм: http://help.adobe.com/ru_RU/acrobat/pro/using/WSAC8084C2-14F7-4841-9EF8-92106D22C3DB.w.html
[18] систем электронного документооборота: https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%BE%D0%B1%D0%BE%D1%80%D0%BE%D1%82%D0%B0
[19] Data Leak Prevention: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%B4%D0%BE%D1%82%D0%B2%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%82%D0%B5%D1%87%D0%B5%D0%BA_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8
[20] так как много где поковырялись: http://www.anekdot.ru/id/275003/
[21] Источник: https://habrahabr.ru/post/301346/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.