- PVSM.RU - https://www.pvsm.ru -

Защита фотографий от скриншотов с помощью временного дизеринга

Защита фотографий от скриншотов с помощью временного дизеринга

Пару дней назад Facebook запустил свою альтернативу SnapChat — сервис для передачи картинок, которые самоуничтожаются через 1, 3, 5 или 10 секунд. Это довольно глупая программа, которую молодёжь использует для непотребных целей. Многие догадались, что можно успеть заснять скриншот, прежде чем фотография исчезнет с экрана. Отправитель получает уведомление, что получатель сделал скриншот, но уже беспомощен в такой ситуации.

Можно ли защитить фотографию от снятия скриншотов? Разработчик по имени Михай Парпарита (Mihai Parparita) предлагает использовать временный дизеринг [1] (temporal dithering). Суть в том, что оригинал фотографии передаётся двумя кадрами: положительный и отрицательный. В «положительном» кадре к каждому пикселу добавляются случайные значения RGB. В «отрицательном» кадре они же отнимаются. За счёт быстрой смены кадров положительные и отрицательные значения должны сократиться, воссоздавая в глазу зрителя оригинальную фотографию.

Технически, метод реализуется за счёт загрузки фотографии в <canvas>, где уже генерируются положительный и отрицательный кадр. Смена кадров осуществляется с помощью метода requestAnimationFrame [2] при каждом обновлении картинки на экране (например, 60 Гц).

Демо-страница (proof-of concept) [3]
Исходный код программы [4]

Автор рассуждает, что такой метод, конечно, не даёт надёжной защиты. Это просто маленький трюк, который легко обойти, если модифицировать программу для снятия скриншотов. С другой стороны, компания Apple вряд ли будет модифицировать программу для снятия скриншотов на iOS из-за такой мелочи.

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

Автор: alizar

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/canvas-2/23310

Ссылки в тексте:

[1] временный дизеринг: http://blog.persistent.info/2012/12/screenshot-proof-images-via-temporal.html

[2] requestAnimationFrame: https://developer.mozilla.org/en-US/docs/DOM/window.requestAnimationFrame

[3] Демо-страница (proof-of concept): http://persistent.info/web-experiments/temporal-dithering/

[4] Исходный код программы: https://github.com/mihaip/web-experiments/tree/master/temporal-dithering

[5] Источник: http://habrahabr.ru/post/163617/