LINUX.ORG.RU

Стеганографический веб-сервис DarkJPEG

 , ,


5

1

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

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

Сервис использует стойкие методы стеганографии для сокрытия самого факта сокрытия информации вместе со стойкими методами криптографии для защиты данных, передаваемых по открытым каналам, от компрометации (факта доступа посторонних лиц). Исходные тексты проекта распространяются в рамках лицензии MIT.

Основные особенности:

  • Использование SHA3 для генерации ключей;
  • Симметричное шифрование AES-256;
  • JPEG (DCT LSB) стеганография;
  • Поддержка RarJPEG и двойного сокрытия;
  • Подбор случайного контейнера;
  • Вычисления без участия сервера;
  • Гарантия полной конфиденциальности.

Ссылка проекта: http://darkjpeg.github.io
Ссылка на github: https://github.com/darkjpeg/darkjpeg.github.io

★★★★★

Последнее исправление: mix_mix (всего исправлений: 1)

Автор — я, можете задавать свои ответы. Сразу же хотел бы отметить несколько деталей:

  • да, работает только с современными браузерами (Safari 6, Chrome 25, Firefox 21, Opera 15 и все новее);
  • да, скрипты минифицированны unglifyjs, для проверки можете сделать git clone, make и пустить diff того, что вышло и того, что в директории build — на клиент передаётся всё именно оттуда, напрямую с гитхаба;
  • да, все вычисления действительно на клиенте, без малейшего участия сервера, можно сохранить проект себе на диск и просто открыть index.html без всяких апачей — всё будет работать (хром тогда нужно запускать с –allow-file-access-from-files –disable-web-security для доступа к локальной ФС при кодировании и кросс-доменным загрузкам по урлу при декодировании);
  • да, всё действительно конфидециально, ничто нигде не сохраняется, ничто не трекается, логи не ведутся — сервер github pages умеет отдавать только статичные странички;
  • да, все разноцветные стрелочки (и не только они) кликабельны;
  • да, по умолчанию (в качестве auto) при кодировании используется join метод, который просто склеивает файлы, но ещё есть steg, который использует самую настоящую discrete cosine transfrom coeff. least significan bits стеганографию;
  • да, на сайте есть и readme, и подробный notes, в котором всё это написано, но Ъ верны своему;
  • да, к линуксу имеет отношение, потому как open source и работает на нём;
  • да, не нужно.
mix_mix ★★★★★
() автор топика
Последнее исправление: mix_mix (всего исправлений: 1)
Ответ на: комментарий от mix_mix

Мой ответ прост: зачем так много «да»?

fenris ★★★★★
()

Небольшой FAQ по пользованию:

  • файлы можно прикреплять с локальной ФС нажатием enter, кликом на плюсик, драг-и-дропом или по урлу;
  • в случае урла для скачивания на клиент используются два прокси-сервиса на google app engine из-за ограничений cors;
  • есть три метода кодирования: авто, джойн и стег, по-умолчанию используется авто, который в своей основе использует джойн;
  • джойн склеивает файлы — размер вставляемых данных ограничен только здравым смыслом, безопасность средняя;
  • стег использует стеганографию — допустимый размер вставляемых данных порядка 20% размера контейнера, безопасность высокая;
  • в контейнер можно закодировать данные вначале стегом, затем джойном, таким образом в случае компроментации можно сдать пароль на джойн;
  • отличие авто от джойна ещё в том, что в джойне можно кодировать пустым паролем, это даёт возможность создавать и обрабатывать RarJPEG;
  • есть три типа контейнера: рандомый, градиент и пользовательский, первый подбирает подходящую по размерам рандомную картинку с викимедии, второй используется при невозможности первого (например, нет интернета), третий позволяет использовать любую указанную пользователем картинку, загружаемую с локальной ФС;
  • надпись «darkjpeg» кликабельна, действует как аналог обновления страницы без перезагрузки;
  • для разработки можно использовать dark.js, содержащий javascript-реализации jpeg-энкодера и декодера, aes-256, sha3 и реализованный в виде асинхронного web worker'а;
  • как будет использоваться сервис: для постинга цп на имиджбордах ли, для координации каких-нибудь активистов ли, etc. — это всё на вашей совести, я разрешаю.
mix_mix ★★★★★
() автор топика

стеганографический веб-сервис
позволяющий скрывать конфиденциальную информацию

веб-сервис

Я кажется отстал от жизни

vasily_pupkin ★★★★★
()
Ответ на: комментарий от leonidko

Спасибо! Скорее это пока больше proof of concept. При создании я лишь руководствовался мотивом, что у каждого человека должна быть возможность свободно обмениваться информацией (не важно какой) по открытым каналам связи с другими людьми, не заморачиваясь при этом консольными steghide и прочими gpg, хотел, чтобы сервис получился быстрый, приватный и свободный — я считаю, что у меня это получилось.

mix_mix ★★★★★
() автор топика

А можно алгоритм на пальцах объяснить? При пересохранении картинки в графическом редакторе с изменением потери качества +/- 10% запрятанные данные можно будет извлечь?

Harald ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Все вычисления производятся исключительно на клиенте, во внешний мир ничего, включая хоть какие логи, не передаётся и текущую вкладку браузера не покидает. Из плюсов: кроссплатформенность из коробки, доступность «здесь и сейчас» по гитхабовскому адресу, dark.js для разработчиков.

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

mix_mix ★★★★★
() автор топика
Ответ на: комментарий от Harald

А можно алгоритм на пальцах объяснить?

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

При пересохранении картинки в графическом редакторе с изменением потери качества +/- 10% запрятанные данные можно будет извлечь?

Разумеется, нет. Увы, здесь уже никакая стеганография по определению не сможет выжить.

mix_mix ★★★★★
() автор топика
Ответ на: комментарий от NeverLoved

а с 12.16 как

До тех пор, пока в престо не впилят хотя бы Blob URLs, download attribute и web worker transferable objects, говорить о его поддержке, увы, не приходится, пускай сначала научится в html5.

mix_mix ★★★★★
() автор топика
Ответ на: комментарий от vasily_pupkin

Ну и почему бы это не написать на том же питоне, хотя бы?

Лишние телодвижения для пользователей же, ну. А тут зашел на сайт и вперёд. Впрочем, вас никто не останавливает от того, чтобы переписать сервис на питоне, если хочется.

mix_mix ★★★★★
() автор топика
Ответ на: комментарий от vasily_pupkin

Этот скрипт - кроссплатформенный. Заставлять виндолюбой ставить себе в систему питон - архитупо, тем более что можно напистаь на js который запускается где угодно. Кроме оперы. лол.

NeverLoved ★★★★★
()

а за каким оно меня на апдейтилку перенаправляет?

lazyklimm ★★★★★
()
Ответ на: комментарий от mix_mix

Разумеется, нет. Увы, здесь уже никакая стеганография по определению не сможет выжить.

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

Harald ★★★★★
()

веб-сервис

Его сразу внесут в черный список и заблокируют на уровне локального провайдера или другого файрвола.

Лучше бы свободный «аналог» rarjpeg с гуёвиной каждому пользователю из стандартного репозитария.

record ★★★★★
()
Последнее исправление: record (всего исправлений: 6)

классно! отличная работа!

Ваще круть )

еще б cli тулзу...

uspen ★★★★★
()
Последнее исправление: uspen (всего исправлений: 2)

Само чтение подобных новостей, не говоря уже о посещении сайтов данной тематики, подразумевает желание клиента что-то скрыть => надо бы за ним по-пристальнее последить.

PS: алгоритмы согласованы с АНБ/КГБ? Сколько кликов мыши потребуется оператору вышеназванных структур, чтобы а) определить урл шифрующего; б) отфильтровать на картинкосайтах все стеганографированные жпеги, произведённые через твой серсис; и в) раскодировать сообщение?

// немного параноик

anonymous
()
Ответ на: комментарий от anonymous

алгоритмы согласованы с АНБ/КГБ

Я не являюсь организацией, чтобы проходить согласование. Более того, с Россией данный проект никак не связан, кроме, может быть, только того, что его автору не повезло здесь родиться.

а) определить урл шифрующего;

Если честно, не знаю. Но здесь, как и с i2p, можно лишь доказать факт посещения сервиса, действия пользователя отследить со стороны невозможно (если только не шпионить за самим человеком).

б) отфильтровать на картинкосайтах все стеганографированные жпеги, произведённые через твой серсис

Немного напряжно в случае использования join метода и оче сложно при использовании steg. Например, для детектирования последнего подойдёт исключительно ресурсоёмкий хи-квадрат тест, так что можно не переживать.

в) раскодировать сообщение?

Крипто использует 256-битный ключ, если в качестве пароля не брать всякие qwerty, 123 и прочие легко пробиваемые по словарям сочетания, то остаётся только идти с раскалённым паяльником к автору (которого ещё нужно умудриться вычислить, что совсем не тривиально в случае использования того же TOR), т.к. брутфорс в пару триллионов лет кажется мне сомнительным занятием.

mix_mix ★★★★★
() автор топика
Последнее исправление: mix_mix (всего исправлений: 2)
Ответ на: комментарий от anonymous

на google app engine

Ты точно для паранойиков этот проект затеял¿

Увы, вынужденная мера из-за ограничений безопасности для возможности скачивания по урлу. Как вариант, можно сохранять и открывать уже с локальной ФС или, я настойчиво советую, использовать расширение для браузера, которому никакие прокси-сервисы не нужны (у них ещё и дневная квота в 2 Гб). Тем не менее, сервис тоже самописный, ничего не трекает, не кеширует, тупо принимает base64 url, выдаёт содержимое с включенным CORS'ом, используется только если напрямую скачать с какого-то сайта нельзя (т.е. если там CORS отключен/не поддерживается), исходники так же есть на гитхабе.

mix_mix ★★★★★
() автор топика
Последнее исправление: mix_mix (всего исправлений: 1)

годно. ТС молоток!

ymn ★★★★★
()

Использование SHA3 для генерации ключей;

ЕМНИП, SHA3 - это хеш, а не способ генерации ключей, и даже не ГПСЧ.

Поддержка RarJPEG и двойного сокрытия;

А вот это лишнее. Поможет только от домохозяек, а для ГБ - наоборот, красная тряпка.

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

Самое простое, выходит.

Разумеется, нет. Увы, здесь уже никакая стеганография по определению не сможет выжить.

Лютое, бешеное 4.2. Пойди, что ли, почитай матчасть. Про ЦВЗ, например, и для чего их сейчас используют.

В общем, курсач на четверочку. На ЛОР можно было не постить.

segfault ★★★★★
()
Последнее исправление: segfault (всего исправлений: 1)
Ответ на: комментарий от mix_mix

всё действительно конфидециально, ничто нигде не сохраняется, ничто не трекается, логи не ведутся — сервер github pages умеет отдавать только статичные странички;

Ручаешься за все узлы по пути от меня до твоего сервера? Смело...

Лишние телодвижения для пользователей же, ну. А тут зашел на сайт и вперёд.

Практически каждое первое послабление безопасности спровоцировано желанием облегчить работу конечному пользователю.

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

Я уже устал повторять, что сервисы с одной кнопочкой «сделать анонимненько» просто не могут быть безопасными. Нужно искать компромисс между необходимым объемом знаний для использования защиты и, собственно, уровнем этой защиты. В упомянутых выше gpg и stegohide этот быланс выдержан неплохо.

segfault ★★★★★
()
Ответ на: комментарий от segfault

и даже не ГПСЧ

ГПСЧ присутствует.

Самое простое, выходит.

Потратил немало времени на исследование гораздо более сложных методов, часть не подошла из-за модификации матриц квантования, часть из-за низкого полезного объёма на выходе. На самом деле тот же современный F5 с его случайными перестановками блоков или вот этот вот на практике буквально не отличаются от AES256+LSB(2).

Про ЦВЗ, например, и для чего их сейчас используют.

Дядя, у нас lossy JPEG здесь, вы о чём вообще? Ему чтоб lossless поворот сделать, это извратиться надо, а вы тут про ЦВЗ.

mix_mix ★★★★★
() автор топика
Ответ на: комментарий от mix_mix

Можно из google://pictures сообщения инопланетян майнить перебором паролей?

Deleted
()
Ответ на: комментарий от mix_mix

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

Поэтому в качестве контейнера обычно выбирают видео. Но короткое текстовое сообщение и в обоину можно засунуть.

F5 с его случайными перестановками блоков или вот этот вот на практике буквально не отличаются от AES256+LSB(2).

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

Дядя, у нас lossy JPEG здесь, вы о чём вообще?

Я о ЦВЗ. А тебе еще раз советую пойти почитать что это такое. Заодно узнаешь что такое ключ стегоконтейнера. Не шифра, которым данные обычно предварительно шифруются, а самого алгоритма упаковки.

segfault ★★★★★
()
Ответ на: комментарий от mix_mix

Use TOR, Luke.

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

segfault ★★★★★
()
Ответ на: комментарий от segfault

Но короткое текстовое сообщение и в обоину можно засунуть.

До двух мегабайт норм с викимедией, до пяти с градиентами.

А то начинаешь тут: «никакая стеганография по определению не выживет».

Ещё раз повторяю: JPEG — формат с потерей качества, у нас здесь и сабсемплинг, выкидывающий биты хромо-компонент, и квантование с конечным образом f : Z -> Z/nZ.

Заодно узнаешь что такое ключ стегоконтейнера.

Такая штука как раз используется в F5. При наличии стойкого шифрования данных толку от этого ноль.

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

Но их нет. https://blog.torproject.org/blog/rumors-tors-compromise-are-greatly-exaggerated

mix_mix ★★★★★
() автор топика
Ответ на: комментарий от mix_mix

Автор — я, можете задавать свои ответы.

Ваши кураторы из ЦРУ или СВР?

Update:

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

Ясно, из ЦРУ.

Теперь ответь, зачем нужен этот сервис, если есть steghide и outguess, это такой хитрый план собрать всех кухонных прононоиков в одном месте и курировать?

Любой мало-мальски знакомый с сутью вопроса будет постить свои jpeg-депеши среди тонн прочего мусора, imageshack, всяких чанах и прочих сосочах.

Umberto ★☆
()
Последнее исправление: Umberto (всего исправлений: 2)
Ответ на: комментарий от Umberto

Ваши кураторы из ЦРУ или СВР?

Из тайного общества массонов.

зачем нужен этот сервис, если есть steghide и outguess

Если одним словом: юзабилити.

mix_mix ★★★★★
() автор топика
Последнее исправление: mix_mix (всего исправлений: 1)
Ответ на: комментарий от mix_mix

Если одним словом: юзабилити.

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

ЗЫ. Закиньте новость на pgpru.com, там всегда нехватка еды :)

// Nervous, смари какая аналогия, ну же отбери её :D

Umberto ★☆
()
Ответ на: комментарий от Umberto

Это как игра с плутонием, не умеешь - будешь облучён.

Потребности 95% пользователей он удовлетворит на отлично, ну а каким-нибудь террористам действительно лучше им, наверное, не пользоваться, да.

насколько тривиально определяется избыточное энтропийное стего-излучение

В случае с JPEG всё далеко не так тривиально, как вам кажется.

mix_mix ★★★★★
() автор топика

ОП — ты замечателен.

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

Интересно, если JPEG содержит шум, является ли использование этого формата законным в Великобритании?

Anatolik ★★
()
Ответ на: комментарий от prischeyadro

проект очень правильный и хороший, спасибо

You're welcome!

mix_mix ★★★★★
() автор топика
Ответ на: комментарий от Anatolik

откуда в JPEG незаметный шум

  • берём 256-битную SHA-3 хэш-сумму введённого пользователем пароля + случайно сгенерированной соли;
  • шифруем данные + заголовок (сигнатура, имя и размер вкладываемого файла) с помощью AES-256, добавляем в начало соль, в конец 0xFFD9 — маркер JPEG End of Image;
  • подбираем контейнер, размером подходящий под наши данные, переводим цвета из RGB в YCbCr;
  • над каждым блоком 8х8 пикселей производим дискретное косинусное преобразование;
  • в последние два бита каждого ненулевого коэффициента понемногу записываем наши данные;
  • коэффициенты сжимаются с использованием кодирования серий и кодов Хаффмана.

является ли использование этого формата законным в Великобритании?

Плохо знаком с особенностями законодательства UK, но комиссии нужно ещё будет доказать наличие скрытых данных в возможно просто криво пожатой картинке. Хотя, я слышал, там чуть ли не за /dev/urandom могут привлечь.

mix_mix ★★★★★
() автор топика
Ответ на: комментарий от mix_mix

Потребности 95%

Первая ваша ошибка, пренебрежительное отношение к теоретическим пользователям не высокого уровня подготовки, речь не о меме 95%, а о том, что вы предлагаете им воспользоваться крайне сомнительным сервисом, как и с точки зрения анонимности (факт соединение, который вы перекладываете на ТОР), так и кода, который не подвергался изучению в «широких кругах».

ну а каким-нибудь террористам

Ваша вторая ошибка, вы причисляете пользователей уровня превосходящего ваш проект к террористам. (недоговаривая, что они, раз таковые, должны быть под колпаком) Значит у вас реализован колпак, так?

В случае с JPEG всё далеко не так тривиально, как вам кажется.

Мне не кажется, витала работа по изучению графических файлов на фотохостингах, с заключением что от 7 до 15 процентов могут содержать стего данные, работа эдак 2006-7 года, точно не помню, искать не буду, лень :D.

Кроме неё есть масса работ которые ведут закрытые группы по поводу выявления стего, и есть серьёзные основания предполагать, что «находить» умеют лучше чем «прятать», там силы крайне неравномерны по сравнению с разработчиками ТОРа и сотоварищами.

Umberto ★☆
()
Последнее исправление: Umberto (всего исправлений: 1)
Ответ на: комментарий от Anatolik

Интересно, если JPEG содержит шум, является ли использование этого формата законным в Великобритании?

Само использование нет, но могут настойчиво попросить предоставить ключи для декодирования шума.

Была волна негодования, что могут упрятать фактически за cat /dev/urandom , если возникнут подозрения и ты не сможешь расшифровать.

Umberto ★☆
()

Оформи еще как новость на главную, я подтвержу.

tazhate ★★★★★
()
Ответ на: комментарий от Umberto

факт соединение, который вы перекладываете на ТОР

А что ещё позволит гарантировать non-traceable connection при том же постинге криптожпега?

так и кода, который не подвергался изучению в «широких кругах»

Ну это уже за вами, я разрешаю.

могут содержать стего данные

Так могут или содержат с вероятностью 90%? Математиками придумано большое количество методов стегоанализа, начиная с гистограмного, заканчивая хи-квадрат, я про них в курсе. Реализация на сервисе является довольно стегостойкой, что означает, что простые методы (вроде того же гистограмного или энтопийного) не смогут её скомпрометировать.

mix_mix ★★★★★
() автор топика

Opera 15

Это такой троллинг линукс-юзеров?

Suntechnic ★★★★★
()
Ответ на: комментарий от mix_mix

А что ещё позволит гарантировать non-traceable connection

Это ещё одна проблема пользователей не дотягивающих до криптопанков :D

Просто хочу донести одну мысль, что чтоб воспользоваться пусть даже одной технологией надо знать массу смежных областей.

Не зная их и не имея понимания картины целиком, попытка воспользоваться чем-то одним не достигнет желаемых результатов.

Озвучу третий тезис, специально для домохозяек: Вам предлагают доступные, на первый взгляд, методы и решения с одной целью, прятать среди ваших логов действительно знающих пользователей, которые используют предложенный сервис не совсем так/совсем не так, как это предложено вам. Вы - лишь статисты.

Так могут или содержат

могут == содержат.

Ну а в сфере последних откровений (сноудена) не надо долго рассказывать, что цели как таковой дешифровать всё до крупицы нет.

Цель другая, если парсер, пусть даже с малой долью вероятности определил, что есть избыток = +1 к Васе. Далее, в другом месте, другой парсер выловил другое вхождение = +1 к Васе.

А с учетом, что это всё складируется и сохраняется за годы...

Реализация на сервисе является довольно стегостойкой

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

Думаю хватит :D

Umberto ★☆
()
Последнее исправление: Umberto (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.