Метод и его границы
Мы никогда не спрашиваем у эндпоинта, какая он модель, — любой эндпоинт может назвать любое имя. Мы отправляем 84 стандартных проверок, заставляя его действительно работать, и сравниваем манеру этой работы с эталонами известных нам моделей. Вердикт складывается в пять этапов, от грубого к точному, и на каждом этапе допустимо сказать: «доказательств мало, я не берусь утверждать».
Как пять этапов сужают круг
①Провести проверки
Можно ли этот эндпоинт вообще измерить?
Первое условие вердикта — что на вопросы действительно пришли ответы. Пропуски означают не просто меньше данных: пришедшие ответы могут случайно склоняться в одну сторону, и это смещение выборки, а не доказательство.
Если эндпоинт не отвечает вовсе или ключ либо имя модели попросту не работают, мы останавливаемся здесь и не собираем вывод из обломков.
②Определить производителя
Чья это модель?
Чаще всего подмена происходит между семействами: дешёвая модель под дорогим именем. Поведение на уровне семейства самое устойчивое и труднее всего подделывается, поэтому мы спрашиваем этот слой первым. Сравниваем мы стиль и привычки ответов, а не то, как эндпоинт себя называет: самоназвание — самая легко подделываемая часть всего отчёта.
Без надёжных признаков семейства мы воздерживаемся, а не называем кого-то наугад. Когда эндпоинт по-китайски называет одного производителя, а ведёт себя как другой, мы считаем это оговоркой и возвращаемся к поведенческим признакам.
③Определить модель
Какая именно модель внутри этого семейства?
Вы купили конкретную модель, а не «что-нибудь этого производителя». То, что называют падением качества, обычно происходит на этом слое: семейство остаётся прежним, а место занимает более дешёвый родственник. Мы одновременно проводим сравнение внутри семейства и сравнение между семействами и заставляем их проверять друг друга: стоит ошибиться с семейством, и сравнение внутри него назовёт неверную модель с большой уверенностью.
Когда доказательств хватает только до уровня семейства, отчёт так и пишет: производителя мы узнаём, модель — нет. Мы не заполняем пробел самым похожим кандидатом.
④Перепроверить близнецов
Действительно ли выбранную на прошлом этапе модель можно отличить от ближайших родственников?
Некоторые модели — близнецы: стиль, возможности и привычные обороты перекрываются настолько, что у прошлого этапа между ними почти нет разрешающей способности, и баллы оказываются рядом, хотя эта близость ничего не значит. Этот этап делает одно: для таких групп близких родственников он заново набирает выборку отдельным набором вопросов, построенным именно под это сравнение, и читает всё распределение, а не отдельный ответ. Прошёл — прошлый этап подтверждается или отменяется; не прошёл — результат прошлого этапа остаётся.
В этот этап заложена намеренная асимметрия: если доказательства не решающие, а результат прошлого этапа случайно совпал с заявлением продавца, мы его не отменяем. Ложно обвинить честного продавца дороже, чем один раз пропустить нечестного.
⑤Сверить с заявленным
Чем измеренное отличается от того, что заявил продавец?
Само распознавание не смотрит на заявление продавца — предыдущие этапы сравнивают только поведенческие признаки. Заявление входит в игру ровно в двух местах: когда четвёртый этап решает, отменять ли результат, и здесь. Такой порядок выбран намеренно: если ответ получен до чтения условия, заявление не может вести за собой. Возможные выводы: полное совпадение, совпадение только семейства, верное семейство при неверной модели, подмена модели, подделанное самоназвание, наведённое поведение, недостаточно данных и неоднозначно.
Когда сигналы противоречат друг другу и устойчивого большинства нет, вывод — «неоднозначно». Это полноценный вывод, а не сбой.
Почему мы так часто говорим, что не можем определить
Потому что две стороны ошибки стоят по-разному. Назвать честный релей подменщиком моделей — это обвинение, и оно реально вредит живым людям; пропустить же один случай не страшно: можно проверить ещё раз или посмотреть историю. Поэтому при слабых доказательствах мы предпочитаем не утверждать.
У этого принципа есть конкретная форма в коде: отчёт рисует «модель не совпадает» только тогда, когда движок подтвердил подмену. «Самая похожая модель случайно отличается от заявленной» никогда не превращается в обвинение — это лишь наша догадка. Если вы видите «не определено», правильное прочтение такое: доказательств этого запуска недостаточно для вывода. Это ни справка о невиновности, ни приговор.
Как читать числа в отчёте
- Оценка от 0 до 100
- Это оценка качества, а не вердикт о личности. В неё входят только проверки безопасности, целостности и качества; проверки на идентичность баллов не дают, потому что идентичность — вопрос «да или нет», а не «сколько баллов». Поэтому быстрый режим, который выполняет только проверки идентичности, всегда даёт 0 — это значит «экзамен не сдавался», а не «экзамен провален». Если нужна оценка качества, запустите все 84 стандартных проверок.
- Сила вердикта
- Насколько сильны доказательства именно в этом запуске: насколько полно отвечены вопросы, указывают ли отдельные сигналы в одну сторону и насколько велик разрыв между близкими кандидатами. Значение меняется от запуска к запуску и не является постоянным свойством модели.
- Историческая точность
- Насколько хорошо этот метод срабатывал на выборках, ответы для которых нам уже известны. Она считается офлайн и к вашему запуску отношения не имеет. Её нельзя читать как «вероятность того, что этот вердикт верен»: два числа отвечают на разные вопросы и не взаимозаменяемы.
Чего мы не умеем
Ниже — известные нам границы. Мы их описываем, потому что отчёту, умалчивающему о своих границах, доверяют больше, чем он заслуживает.
- Мы видим только этот один вызов
Одна проверка — это одна выборка. Релей может подменять модель лишь на части трафика или отдавать настоящую всякий раз, когда трафик похож на проверку. Пройти один раз — не то же самое, что быть честным долго: перепроверяйте регулярно и смотрите историю, а не единственный отчёт.
- У различения близких моделей есть потолок
Когда подражатель намеренно копирует больше половины поведения оригинала, примерно половина доказательств по построению указывает на заявленную личность. Это структурный предел, а не нехватка вопросов: мы измеряли — добавление вопросов резко подняло стоимость и почти не сдвинуло разрешающую способность.
- Мы не можем доказать, что подмены не было
Вердикт о совпадении означает «доказательства этого запуска не подтверждают подмену», а не «подмены не было». Любая проверка, обещающая гарантию второго рода, преувеличивает свои возможности.
- Старые отчёты содержат меньше пометок
Путь вердикта восстанавливается по сохранённым данным задним числом; движок не записывает, какое правило сработало в тот момент. Некоторые ветви не оставляют достаточно различимого следа, и тогда мы подсвечиваем только результат, не указывая номер правила. Лучше сказать меньше, чем угадывать.