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

от автора

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

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

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

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

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

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

ссылка на оригинал статьи http://habrahabr.ru/post/163617/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *