Canvas-отпечаток
Canvas-отпечаток (canvas fingerprinting) — способ узнать компьютер по тому, как он рисует. Сайт просит браузер нарисовать невидимую картинку с текстом и фигурами, забирает результат и считает от него контрольную сумму.
Картинка одна и та же, а сумма у разных машин разная: рисованием занимается видеокарта, и мельчайшие отличия в ней, в драйвере, в наборе шрифтов и в сглаживании дают на выходе разные пиксели. Разница человеку не видна — а числу видна.
Тот же приём работает и с WebGL (трёхмерная графика, плюс название видеокарты открытым текстом) и с AudioContext (обработка звука вместо картинки).
Почему это сильная примета
Canvas-сумма не хранится ни в каком файле — её нельзя стереть, как куки. Она вычисляется заново при каждом заходе и остаётся одинаковой, пока вы не сменили компьютер, видеокарту или драйвер.
Поэтому два аккаунта, открытые с одной машины, по canvas выглядят одним человеком, даже если всё остальное разное.
Чем опасна неаккуратная подмена
Подменяют обычно шумом: к результату добавляют едва заметные отклонения, чтобы сумма менялась. Здесь легко сделать хуже, чем было, и вот три способа:
- Шум меняется при каждом чтении. Настоящая машина на один и тот же запрос даёт один и тот же ответ. Если сумма прыгает от вызова к вызову, это не «уникальный компьютер», а явная подмена — проверяется двумя запросами подряд.
- Шум слишком крупный. Значение уезжает в область, где настоящих устройств не бывает.
- Canvas подменён, а видеокарта в WebGL осталась настоящей. Два значения, которые обязаны быть связаны, начинают противоречить друг другу.
Правило то же, что и для всего отпечатка: согласованность важнее уникальности. Устойчивый и обычный отпечаток лучше неповторимого.
Как проверить
Проверка отпечатка показывает вашу canvas-сумму и делает два чтения подряд — чтобы было видно, держится значение или прыгает.
