Перейти к содержимому

Глоссарий

Шум на canvas

Сайт всё равно получает картинку и всё равно получает свёртку, только это уже не та свёртка, какую дало бы это железо. Помогает это или нет, решает одно: как сдвинутые точки ведут себя при втором взгляде.

Шум на canvas это защита, которая сдвигает точки до того, как сайт их прочтёт, и рисунок получает своё значение.

Как накладывается сдвиг

Рисунок это значения каналов, по четыре байта на точку. Шум добавляет к этим байтам небольшой сдвиг, и сдвиг выводится из зерна профиля, а не берётся заново каждый раз.

Зерно и делает итог повторяемым. Один профиль отвечает себе одинаково при каждом заходе, а два профиля отвечают по-разному.

  1. 1

    Страница рисует как обычно

    Текст, фигуры и цвета ложатся на холст вне экрана, который никогда не показывают. Разрешения никто не спрашивает: браузер не считает это личным.

  2. 2

    Сдвиги ложатся на точки

    Каждый канал уезжает на малую величину, которую решает зерно. Сдвиг принадлежит точке, а не её месту в отданном куске памяти.

  3. 3

    Страница читает итог

    Байты приходят сдвинутыми, и свёртка, которую запишет сайт, уже другая. Картинка при этом остаётся картинкой и читается как картинка.

Ваш холст прямо сейчас

Значения прочитаны в вашем браузере на этой странице. Свёртка это то, что сайт записал бы про эту машину.

Отсюда ничего не уходит. Чтение рисуется на месте, а проверялка, отправляющая вашу свёртку куда-то, уже её собрала.

Ваша машина прямо сейчас

Свёртка canvas
измеряем на вашей машине
Рендерер WebGL
измеряем на вашей машине
Плотность пикселей
измеряем на вашей машине

Прочитано в вашем браузере и показано здесь. Никуда не отправляется.

Где сдвиг обязан лежать

Добавить сдвиг легко. Вся работа в том, чтобы положить его туда, где второй взгляд его не найдёт, и четыре места этой проверки не проходят.

Четыре неверных места

Настоящая машина никогда не спорит сама с собой. Каждая беда ниже это браузер, возражающий собственному ответу, и слышно её громче любого редкого значения.

  • Сдвиг привязан к куску памяти

    Если сдвиг следует за местом в отданном массиве, а не за точкой, одна и та же полоса, прочитанная через два окна, расходится с самой собой.

  • Сдвиг не смотрит на прозрачность

    Цвет под полной прозрачностью не значит ничего, и ни один настоящий драйвер его не даёт. Сайт проверяет это тремя строками.

  • Сдвиг никогда не меняется

    Маску, выученную на сплошной заливке, можно вычесть из любого другого рисунка. С этой минуты защита стала той самой приметой, которую собиралась скрыть.

  • Сдвиг дописан поверх страницы

    Обёртка вокруг читающей функции обязана выглядеть родной для всякого, кто в неё заглянет. Самопроверка задаёт этот вопрос отрисовщику графики и свойству navigator.webdriver.

Что отвечает нынешняя сборка

Все четыре места замерены на ARMANOS Browser, на каждом зерне, которое даётся прогону. Числа ниже взяты из прогона 2 сентября.

Каждое из них мы проверяем на каждой сборке. Сборка, ответившая иначе, до вас не доедет, и потерять это правило по дороге у нас не выйдет.

  • Одна точка через два окна

    Одна и та же полоса, прочитанная дважды через разные прямоугольники, приходит теми же байтами.

    0 байт
  • Маска не переносится

    Сдвиги, выученные на сплошной заливке, не переходят на другой рисунок ни на одном из зёрен.

    0 из 7
  • Два профиля рисуют врозь

    Один рисунок в двух профилях даёт две свёртки, то есть сдвиги выведены из зерна, а не общие для всех.

    2 свёртки

Что делает ARMANOS Browser

Сдвиги накладываются там, где точки рождаются, а не там, где их отдают, и выводятся из зерна профиля. Поэтому один профиль неизменен для себя, а два профиля не связаны.

Два замера одним и тем же способом: сборка до заплат отпечатка и сборка, которая едет сегодня. В обоих столбцах мерили одинаково, менялась только сборка.

ЗамерДо заплат, 25.08.2026Отгружено, 02.09.2026
Одна точка через два окнарасходятся 5 байтрасходится 0 байт
Маска перенеслась на другой рисунок7 из 70 из 7
Зёрен в прогоне14

Часто путают с этим

  • Запрет холста

    Браузер, отвечающий пустой картинкой, встречается реже любого рисунка. Отказ и становится приметой.

  • Новое значение на каждое чтение

    Два чтения в одной сессии, которые не сходятся, это противоречие внутри одного браузера. Неизменность для себя это требование, а не поблажка.

  • Отпечаток canvas

    Отпечаток это то, что считает сайт, а шум это то, что его двигает. Называя одно другим, легко потерять, какую сторону меряют.

  • Шум на WebGL

    Графику рисует видеокарта, и читают её своими вызовами. Она правится отдельно, и починка холста до неё не достаёт.

Как проверить свой

Панель выше показывает свёртку для браузера, в котором вы это читаете. Автопроверка отпечатка живёт в программе (меню профиля > Проверить отпечаток) и идёт внутри профиля, против того движка, который профиль запустил.

Про холст в ней четыре строки. Каждая показывает своё число, а не приговор.

Прогоните её в двух профилях на одном компьютере. Две разные свёртки это и есть то, что стоит увидеть, и один прогон покажет обе.

Чего это не делает

  • Это не закрывает холст совсем. Пустая картинка в ответ встречается реже любой свёртки и выдаёт браузер сразу.
  • Это не даёт каждому сайту свой рисунок. Зерно принадлежит профилю, а значение, которое меняется между двумя вкладками одной сессии, само по себе примета.
  • Это не закрывает другие поверхности рисования. WebGL и WebGPU читают своими вызовами, и правятся они отдельно от этого.
  • Это не делает профиль невидимым. Поведение, репутация адреса и история аккаунта закрывают аккаунты чаще любого рисунка.

Проверить

Каждое число выше взято из файла, который можно открыть.

Четыре замера холста в автопроверке отпечатка
apps/desktop/src/lib/fpAudit.js
Два прогона, названные выше
docs/замеры/приёмка-до-заплат-25-08.log · docs/замеры/приёмка-windows-02-09.log
Сборка не принимается, пока это не сходится
engine/scripts/engine-invariants.js · engine/scripts/accept-engine.js
Где описаны сами сдвиги
engine/patches/PATCHES.md

Вопросы

Почему не новое значение на каждое чтение?
Потому что два несходящихся чтения в одной сессии это доказательство подмены, а не защита. Самопроверка требует, чтобы повторное чтение одного прямоугольника пришло тем же.
Могут ли два профиля дать один рисунок?
Сдвиги выводятся из зерна профиля, поэтому две свёртки будут разными. Приёмка рисует одну картинку в двух профилях и записывает оба значения рядом.
Хватает ли одного шума на холсте?
Нет. Холст со сдвигами рядом с кадром WebGL без них это расхождение внутри одного браузера, и прогон меряет обе дороги именно поэтому.
Меняет ли рисунок VPN или инкогнито?
Ни то, ни другое его не трогает. VPN меняет адрес выхода, инкогнито очищает хранилище, а картинка рождается на вашей машине в обоих случаях.
На скольких зёрнах проверяют сборку?
Нынешний прогон взял четыре, предыдущий одно. Защита, которая держится на одном зерне и падает на другом, ещё не защита.

Посмотрите, что ответит ваш профиль

Самопроверка идёт внутри профиля и называет каждый замер по имени, и зелёный, и красный.