- 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/
Нажмите здесь для печати.