Анонимность цифровых изображений
Дано: есть 2 категории фотографий/видео (личные и служебные), снятые физически одной и той же (распространённой, типичной) цифровой фото/видеокамерой.
Требуется: произвести такие манипуляции над исходными изображениями/видео, чтобы третья сторона, обладающая большими ресурсами (например, google), не смогла бы предоставить убедительных доказательств того, что оба типа материала были произведены физически одним и тем же аппаратом. Желательно, но не необходимо скрыть то, что оба типа материала получены одной и той же маркой фотоаппарата.
Вопросы:
- Разрешима ли в принципе такая задача (в идеальном виде), или же не стоит и пытаться над ней думать, а использовать разную фото/видеоаппаратуру под разные цели? Современная слишком умная аппаратура потенциально может иметь воз способов закодировать серийный номер аппарата в производимые фото/видео, а метод кодирования может быть в категории ДСП. Не заниматься же стегоанализом...
- Подскажите, где можно почитать про используемые в настоящее время "водяные знаки" в фото/видеоаппаратуре — что-то типа "форензики цифровых материалов".
- Посоветуйте открытый *nix-софт поумнее для редактирования заголовков/метаданных jpg/видео-файлов.
Пояснения:
- Припоминается древняя история с простановкой скрытых знаков на печать высококачественными принтерами.
- Кто-то что-то где-то писал про "битые пиксели в определённых местах" — то ли как про случайные повреждения камеры, сказывающиеся на всех производимых файлах, то ли как про предусмотрительно зашитые производителем повреждения.
- Про анализ изображений по типу/материалам случайно засветившихся на фоне объектов мне известно.
Ссылки
[link1] http://arxiv.org/abs/1106.2696
[link2] http://www.smirnov.sp.ru/watermark/results/index.html
[link3] http://www.smirnov.sp.ru/watermark/bmp_jpeg.html
[link4] http://www.smirnov.sp.ru/watermark/finger.html
[link5] http://www.smirnov.sp.ru/watermark/rus.html
[link6] http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5895079
[link7] https://www.tulips.tsukuba.ac.jp/dspace/bitstream/2241/113559/1/IEEETIT_57-7.pdf
[link8] https://www.pgpru.com/comment47671
[link9] http://www.smirnov.sp.ru/graphic_text/graphic_text.html
[link10] http://entropymine.com/jason/tweakpng/
[link11] http://appdb.winehq.org/objectManager.php?sClass=application&iId=1378
[link12] https://github.com/gbenison/png-text-embed
[link13] http://stackoverflow.com/questions/9036152/insert-a-text-chunk-into-a-png-image/9142187#9142187
[link14] http://www.sno.phy.queensu.ca/~phil/exiftool/filename.html
[link15] https://www.blackhat.com/us-14/briefings.html#fingerprinting-web-application-platforms-by-variations-in-png-implementations
[link16] http://xmodulo.com/remove-file-metadata-linux.html
[link17] https://superuser.com/questions/441361/strip-metadata-from-all-formats-with-ffmpeg
[link18] https://www.pgpru.com/comment51097
[link19] http://fotoforensics.com/tutorial-meta.php
[link20] https://packages.debian.org/jessie/extract
[link21] http://arxiv.org/abs/1212.3648
[link22] https://nplus1.ru/news/2015/08/24/author-recognition
[link23] http://arxiv.org/abs/1508.05038
Who clicks there!: Anonymizing the photographer in a camera saturated society[link1].
Работа крайне странная: авторы озаботились сценарием того, что некто из толпы снимает нечто. Саму толпу тоже фотографируют (пишут на видеокамеры). Нужно скрыть положение этого "некто" в толпе. Точнее его место съёмки должно быть невычисляемо по снимку.
Для этого делается несколько промежуточных кадров с разных мест, с которых затем синтезируется кадр с изменённым положением. Как такое возможно (особенно при съёмке динамичных сцен) и как при этом не теряется качество снимка, не вполне ясно. Как честно говоря и степень серьёзности этой работы. Но какие-то исследования на тему анонимизации фотоматериалов ведутся.
Она плохо формализована и малоисследована, поэтому скорее:
Спасибо за ссылку. Само наличие подобных работ интересно, но в моём случае означенная угроза нейтрализуется частично за счёт вырезания фона фотографии и за счёт предположения о несуществовании постоянно включённых видеокамер.
Насчет скрытых "водяных знаков" на фотоснимках – не знаю, может и есть таковые. Точно знаю, что при экспертизе цифровых фотоснимков в экспертных учреждениях (того же МВД) используются дополнительные данные, прикрепленные к снимку (exif data). Просмотреть эти данные можно даже стандартными функциями проводника Windows – особенно хорошо это сделано у 7-ки. Также эти данные можно просмотреть в 16-ричном редакторе. Насколько мне известно, подделать эти данные довольно трудно (но возможно даже при наличии цифровой подписи), а вот просто удалить с помощью того же 16-ричного редактора легко.
Про exif data:
http://ru.wikipedia.org/wiki/EXIF
Вопрос о подделке не стоит — это другая и действительно трудная задача. Достаточно, чтобы разные фотографии нельзя было легко проассоциировать друг с другом.
Распечатываете, ловите на улице случайного прохожего с фотоаппаратом в мобильном телефоне, просите перефотографировать и переслать вам. :)
Качество сильно падает от переснятия. Уже думал об этом.
Чем хуже качество, тем меньше вероятность сохранения "водного знака"
Вот если бы было можно было как-то "переснимать" электронно, без распечатки, это уже интересней. Но перевод в bmp и последующее кодирование в jpg другими средствами не факт что снимет определённые модуляции спектра в картинке, если таковые используются.
Бывает что и распечатка с последующим сканированием не помогает[link2]
Не помогает также преобразование BMP->JPG[link3], сжатие с худшим качеством[link4] и даже засветка части фотографии[link5]. И это просто голографическое фурье-пренобразование, не говоря уж о всяких новомодных вейвлетах... Не факт, что уже такое стоит во всех фотовидеокамерах, но ждать, думаю, осталось недолго.
Да ладно. Проще некуда, есть куча утилит, делающих это легко и непринуждённо .
Это не правда. Подделать трудно. Есть over 9000 параметров, включая такие, которые программно вообще поменять проблематично — у каждого фотоаппарата своя кривая чувствительности, спектральные свойства и прочие тонкости. Учите оптику, мать вашу. Если хоть один из параметров не будет соответствовать, значит, это подделка.
вставляете в пэинт, делаете принтскрин, снова вставляете в пэинт.
с видео то же самое, включаете виндоус медиа плеер, включаете программу захвата экрана, выбираете место на экране и всё!
под другие ОС есть аналоги программ.
И как это по-вашему поменяет спектральные характеристики?
Получить "спектральные характеристики" и "кривую чувствительности" системы сенсора камеры и оптики невозможно по LDR-изображению. Для этого требуются исходные данные с высоким динамическим диапазоном и без какой бы то ни было постобработки.
Если постобработка одинковая то это, возможно, не столь существенно – нужны не сами характеристики, а возможность различать камеры.
Не совсем задача ТС, но похожая на неё:
Есть такая статья[link6] (скачать препринт можно здесь[link7]), под названием «On Anti-Collusion Codes and Detection Algorithms for Multimedia Fingerprinting»:
Грубо говоря: есть у вас авторизованный доступ к какой-нибудь библиотеке или журналу. Захотели вы сделать доброе дело и распространить знания широким массам — скачали материал и выложили в паблике. Тут приходят копирасты и видят гуляющую по интернетам копию вашего материала. Далее смотрят на водяные знаки*, заблаговремененно проставленные баблиотекой и содержащие как можно более полную информацию о сетевых параметрах скачивавшего, определяют виновника торжества, а дальше Бубон → СИЗО → Тюрьма. Но авторизованные качальщики могут оказаться столь хитры, что сговорятся между собой, сольют все копии материалов в одно место, и «усреднят» их, выведя «среднюю копию», по которой копирасты не смогут сказать кто же именно виновен (дословно: в той или иной мере в копии будут отражены параметры всех качальщиков). Против такого сговора кто-то ранее предложил так называемые «anti-collusion codes», защищающие копирастов. В этой статье авторы показыавают слабости и методы обхода уже существующих «anti-collusion codes», также предлагая способ их усоврешенствования (это как я понял, сильно не пинайте). Далее, кому интересно, можно походить по цитированиям в статье, посмотреть что вообще есть по этой теме в литературе.
Журнал, где опубликован результат, не подразумевает свободного распространения статей**, потому я сейчас очень характерно подпадаю под предмет исследования этой статьи с той лишь разницей, что библиотека университета Tsukuba уже выложила в этих интернетах препринт (может, это легально?) :)
*По смыслу тут «fingerprinting» ближе к «водяным знакам» («watermarking»), чем к собственно отпечаткам.
**Хотя именно этот IEEE-журнал уже давно поддерживают предварительную публикацию в arxiv.org, и посему очень странно, что авторы решили не выкладывать туда свою работу.
В UNIX ещё легче: команда
В интернете какое-то время назад в контексте «Навальный vs они» обсуждалась фотография, сделанная в кафе на телефон, где якобы судья сидит за одним столиком с заинтересованным лицом. Предполагалось, что фотография сделана на определённую марку аппарата и в определённый период временни. Анализ осложняло то, что народ не имел оригинала фотографии. В форенсиковых тредах (ссылку долго гуглить), насколько помню, дообсуждались то ли до того, что определить нельзя, то ли до того, что явная подделка (есть следы намеренных модификаций EXIF-данных). Убедительно прошу воздержаться от развития связанных тем «Навальный», «сделано у нас», «пример Китая» и тому подобных оффтопиков.
Вроде б этой команды достаточно (по крайней мере, после неё exiftool ничего не показывает):
В принципе, давно стоит после слива фоток с фотоаппарата взять за правило команду
Разница, наверное, ещё и в том, что исследование касается т.н. "multimedia", т.е. должно фигурировать хот бы широкое использование изображений для "Anti-Collusion Codes" и "Multimedia Fingerprinting".
Есть ещё термин "Traitor tracing".
/comment47671[link8]. Кстати, автор методы — редкостный[link9] [вырезано цензурой].
Можно получить частичную информацию об оных. Если где-то есть нарочито битые пиксели, они же будут и на изображении. Если камера конкретного типа не точно передаёт цвета, это отразится и на изображениях. Набрав статистику по типовым камерам, думаю, можно многое сказать даже по одному изображению в плане того, чем оно было снято.
Обыскал весь интернет, и не смог найти ничего про удаление хидеров из png-файлов. Все тулзы (jhead, exiftool) работают именно с jpg-форматом. Как удалить хидер из png? Он может тоже много чего светить. Есть способ "преобразовать в jpg как convert file.png file.jpg", затем удалить хидер из jpg (jhead -purejpg file.jpg), и, наконец, преобразовать формат в исходный — convert file.jpg file.png, но, боюсь, это только заметает мусор под ковёр, а данные хидера где-то могут остаться. По крайней мере, уже сталкивался с чем-то подобным при преобразованиях eps и pdf: новый формат даных — просто контейнер, содержащий старый формат, где последний при обратном преобразовании можно извлечь. Т.е. имеется разница между реальным преобразованием данных и формальным представлением (достаточно приклеить нужный хидер к данным, чтобы файл распознавался как нечто требуемое и формально просматривался, но сами данные при этом не поменяются). Поправьте, где вру.
% pngcrush -rem allb source.png dest.png
Это добавляет небольшой побочный эффект — пережимает исходное изображение, но лучше софтины я не нашёл после непродолжительных поисков, да и не мешает это, наоборот, меньше места занимать будет.
По желанию можно -alla, чтобы удалить ещё и gAMA-чанки. Ещё можно с помощью -m 1 задать вручную метод, тогда работать будет быстрее. Также можно самому редактировать tEXt-чанки с помощью -text. В общем, подробности в % man pngcrush.
Просматривать информацию об этих чанках не очень удобно, % identify -verbose source.png или % pngcrush -n -v source.png, но определить наличие утечки можно.
Под виндоуз есть программа помощнее — TweakPng[link10], в вайне статус платиновый[link11].
Также есть чья-то самопальная софтина[link12], см.ответ на стэковерфлоу[link13].
Т.е. качество картинки ухудшится?
P.S.: Спасибо за информацию. Посмотрю/поизучаю.
Нет. PNG использует сжатие без потерь, изменятся только параметры кодирования. См.% man pngcrush.
P.S. Это глюч форума или почему у Гостя (31/05/2012 20:39) моя сигнатура?
Если проверять вручную, то пишет:
Это моя сигнатура из https://www.pgpru.com/comment52810, только как она попала сюда? Гость специально вставил?
И почему форум не написал, что подпись неверна? Он проверяет только для зарегистрированных на сайте?
Гость 0x4B3C7781, у тебя ж секретный ключ угнали, пора менять кей.
Нет, он телепатически понимает, когда подпись верная, а когда нет. У pgpru.com своя база ключей зарегистрированных участников. Она иногда синхронизируется с внешними серверами (раз в 2 недели, кажется). Но если кто-то не пожелал выложить сюда свой ключ, указав её при регистрации, то как проверить? Естественно, никак.
Ладно, хорош уже. Кончаю троллить :) Просто пришла в голову «идея» :D
Гость 0x4B3CC7781, не обижайтесь, просто хотел показать обратную сторону использования подписей, которые не соответствуют ни одному из ключей зарегистрированных участников сайта.
% gpg --recv-keys 0x4B3C7781
1) Остается ли еще какое-то идентифицирующее "говно" после юзания jhead, которое не показывает exiftool?
2) Что-то я не в восторге от pngcrush, сведения о разрешении экрана все равно остались.
Кстати, по выводу exiftool видно, каким устройством сделано, и некоторые данные этого устройства. Но серийника etc. этого устройства там нет.
Как же, как рассматривалось выше, спецслужбы делают вывод об идентификации устройства? Видимо, какие-то еще данные есть в файле, кроме хидеров? Или этого небольшого количества инфы достаточно для профилирования? Или просто суд, не разбираясь в вопросе, штампует приговоры? (Я не про наш, я про американский, с нашим то все ясно и без слов, там инфа была по деятельности ФБР и по США).
Exiftool показывает то (или часть того), что задокументировано. Руками можно потереть эскиз изображения (jhead -dt file.jpg) и заголовки (jhead -purejpg file.jpg), причём степень полноты стирания заголовков не ясна. Тем не менее, никто не запрещает изучить формат jpg самостоятельно и происследовать его на предмет возможных утечек через заголовки. Это всё — про документированные опции.
Другая сторона медали — стеганографические вставки в изображение (можно сказать, кодирование информации в случайный шум, присутствующий в любом реальном изображении), т.е. недокументированные форматом jpg опции. Продетектировать их, в общем случае, едва ли представляется возможным. Остаётся вопрос, используется ли такая техника по умолчанию в современных фотоаппаратах или нет, но это скорее вопрос к инженерам и ими подписываемым NDA. Скрытые "водяные знаки", например, для высококачественных принтеров были обнаружены и частично кем-то описаны, так что не стоит удивляться, если подобное уже есть и в каких-то фотоаппаратах. Во всяком случае, при работе с серьёзными вещами я бы не рекомендовал надеяться, что таких вставок нет. Однако, потереть базовые заголовки всегда посильно пользователю, а потому почему бы тогда этим не пользоваться? Всё же уменьшает риск.
В плане png есть интересная опция — текущая директория, только вот не ясно, откуда она берётся. Если файл скопировать с одной директории в другую, то эта опция автоматически меняется (всегда подставляется текущая директория). Или же это не опция, а вычисляемый параметр? Странно как-то.
С чего вы решили, что устройство всегда можно идентифицировать? Это была просто рабочая гипотеза, равно как и то, что серийник потенциально может встраиваться в каждый снимок.
Профилирование возможно всегда, это базовое свойство информации :) Главное — иметь оригинал изображения, тогда спрофилировать тип камеры проще всего — просто по совокупности признаков (хотя вопрос, можно ли узнать серийник, а не просто точный тип камеры, остаётся открытым). Если речь идёт о судебных разбирательствах, то всё может быть проще: если показано, что инкриминируемые снимки действительно сняты тем типом камеры, которая имеется у обвиняемого, это "фактор плюс", а если другим типом — "фактор минус". При всё этом ни то, ни другое само по себе не является достаточным доказательством.
О каких приговорах идёт речь? Разве там есть упоминание серийных номеров фотоаппаратов?
Есть ещё exiv2, использовать как % exiv2 rm file.jpg, возможности примерно те же.
Иногда немного помогает % strings file, дабы выловить очевидные утечки, типо software version/comment в тех же png-файлах. Но это не поможет против сжатого/зашифрованного, конечно.
Где вы её наблюдаете? В самом файле через strings видно? tEXt-чанк? У меня ни identify, ни pngcrush не показывают никаких директорий.
Если вы про vpAg-чанк, то он появляется, например, если сделать import в ImageMagick без +repage.
Но действительно, -allb и -alla опции про него не знают, т.к. чанк т.н. «private», т.е. это самодеятельность программы, которой вы пользуетесь.
Это легко исправить — либо делать +repage:
, либо так:
Только если этот пользователь не хакер. http://habrahabr.ru/post/142192/
Блин, какой у вас «>» некрасивый, лучше через другое цитирование.
Надо доставлять нужные переводы строк руками и делать курсив, тогда будет хорошо: > //текст//
Нет, это «pseudo»-tags.
См.
http://www.sno.phy.queensu.ca/~phil/exiftool/#filename
http://www.sno.phy.queensu.ca/.....iftool/filename.html[link14]
А также сорцы — Image-ExifTool-8.93/lib/Image/ExifTool.pm, начиная со строчки 824.
Для надёжности можно дополнительно посмотреть через identify -verbose.
А есть ли аналогичные чистильщики всяких заголовков для видеофайлов?
Надеюсь, что пока без водяных знаков, но последнее время сильно распространилась чума с засиранием полей в статьях (pdf-файлы), где указывается с какого IP и когда их качали. Надеятся, что если копия появится в свободной скачке, ОНИ узнают, кто это сделал. Контрмеры:
Если качать через Tor, то это не имеет значения.
В том-то и проблема, что скачать их бесплатно можно только с IP, принадлежащего организации (как правило — академическому институту), которая оплатила доступ к соответствующему журналу.
Экспортнуть (фактически отрендерить) постранично в TIFF/JPEG и собрать из этого обратно PDF/DJVU заново. Есть утилиты, которые это делают, можно написать скрипты. Так иногда делали для чтения на тупых электронных книжках. Недостаток: размер файла растёт до уровня отсканированного; всё перестаёт масштабироваться при увеличении, особенно от этого страдают схемы и формулы с мелкими индексами.
Когда сам делаю PDF-файл (проверялся pdflatex), был морально готов к тому, что он напишет версии для этого использовавшегося софта, но всё оказалось ещё хуже: он пишет название Linux-дистра. Более того, эта информация не показывается в выводе pdfinfo file.pdf, но её можно увидеть, если просто просмотреть файл текстовым редактором. Тупо удалить эту информацию в редакторе нельзя — pdf-файл перестанет открываться pdf-ридерами, но можно все символы заменить на какой-то фиксированный (такое впечатление, что контрольные суммы в PDF фиксируют только длину строк в метаданных, но не их содержимое). Примерно так оно выглядит в оригинале:
mat[link16] трёт лучше, чем jhead. Он удлаяет всё то же, но ещё дополнительно стирает параметры JFIF Version, Resolution Unit, X Resolution и Y Resolution.
Делается[link17] через ffmpeg:
другой способ:
мат много чего умеет чистить:
https://mat.boum.org/
Там же есть:
Alternatives
Since MAT is not a silver bullet, you may want to take a look at:
exiv2
jhead
man jhead:
-purejpg подразумевает -dx и -di? Наверно, -du включает в себя -dx и -di. Изображений с IPTC у меня нет, чтоб проверить. -dx действительно что-то удаляет из файла до -purejpg, но после него — нет («modified» не пишется). Вообще, ICC — это такая штука, что может не подпадать под определение того, что дано в -du. Есть ссылка
но там не объясняют, как всё чистить, хотя преподносят так, что exiftool теоретически может всё. Такое впечатление, что Exif — это только один тип метаданных, и всё программы концентрируются именно на нём, хотя есть и другие типы. exiftool своим названием провоцирует думать, что он правит только Exif, однако, опция -icc_profile там есть, а ICC и IPTC многократно упоминаются в man exiftool. Должно быть, по умолчанию он эти данные тоже показывает командой exiftool file.jpg.
Если сделать mat и jhead -dt, то extract[link20] почему-то всё равно показывает, что thumbnail имеется:
Программу научили автоматически определять авторство фотографий[link22]
Там наверно отличие ловят на уровне "импрессионизм, абстракционизм или жизненное фото". Работает ли их алгоритм на множестве фотографий одного класса – не понял.