Прихована загроза геотегування EXIF: як цифрові камери розкривають ваше фізичне місцезнаходження
Кожна цифрова фотографія, зроблена за допомогою сучасного смартфона або спеціальної цифрової камери, містить невидиме вторинне корисне навантаження, відоме якМетадані EXIF (формат файлу обмінного зображення). Стандартизований JEITA (Японська асоціація промисловості електроніки та інформаційних технологій), EXIF спочатку був розроблений для допомоги фотографам, фоторедакторам і поліграфічним лабораторіям, зберігаючи параметри експозиції — діафрагму, витримку, чутливість ISO та фокусну відстань об’єктива.
Однак із масовим впровадженням навігаційних чіпсетів GPS, Galileo та ГЛОНАСС у мобільних пристроях почалося додавання мікропрограми камери.точні координати супутника (широта, довгота та висота)безпосередньо в заголовок зображення. Коли ви робите фотографію у своїй вітальні, на балконі чи на задньому дворі, файл зображення назавжди зазначає координати вашого будинку з точністю до3-5 метрів.
Технічна анатомія сегмента EXIF: маркери APP1 і ENDianness TIFF
У стандартному файлі зображення JPEG двійкові дані починаються з 2-байтового маркера початку зображення0xFFD8(SOI). Спеціальні метадані програми вбудовано в спеціалізовані сегменти з міткамиAPP0 до APP15. Метадані EXIF знаходяться виключно вМаркер APP1 (0xFFE1):
- Маркер і довжина:
0xFFE1за яким слідує 2-байтове ціле число без знаку, що оголошує загальний розмір сегмента в байтах. - Підпис заголовка:6 байтів, що містять
45 78 69 66 00 00— рядок ASCII"Exif"після чого йдуть два нульових байти. - Заголовок TIFF:8 байтів, що декларують порядок байтів. Якщо перші два байти
0x4949(Intel, Little-Endian, молодший байт спочатку) або0x4D4D(Motorola, Big-Endian, старший байт першим), а потім магічна константа42(0x002A) і 4-байтовий покажчик на основний каталог файлів зображень (IFD0). - Довідники IFD:IFD0 посилається на вторинні підкаталоги, включаючиExifIFD (тег
0x8769)для вимірювання оптичної експозиції таGPSInfo IFD (тег0x8825)для записів геолокації.
Зачистка EXIF без втрат проти повторного стиснення Canvas із втратами
Багато основних онлайн-інструментів видаляють метадані, відтворюючи фотографію в HTML5<canvas>елемент і викликcanvas.toDataURL('image/jpeg'). Незважаючи на те, що цей метод відкидає заголовки метаданих, він змушує все зображення проходити декомпресію JPEG із втратами даних і повторне кодування. Це призводить до помітних артефактів стиснення, деградації субдискретизації кольоровості та змінює значення яскравості пікселів.
FlashSoftОнлайн стриппер EXIFвиконуєочищення чистого бінарного сегментабезпосередньо в байтовому буфері необробленого файлу. Він хірургічним шляхом видаляє маркери APP1 (EXIF/XMP), APP2 (ICC), APP13 (Photoshop/IPTC) і COM, залишаючи ентропійні навантаження таблиць квантування (DQT), таблиць Хаффмана (DHT), початку кадру (SOF0/SOF2) і початку сканування (SOS) недоторканими. Отримане чисте зображення зберігається100% побітова оптична точністьз нульовими втратами на стиснення.