Методология
Баллы — это то, что продаёт этот сайт, поэтому модель публикуется, а не просто описывается: эта страница строится из methodology.json — того же файла, который читает система оценки. Метод не может разойтись с числами, потому что существует только одна его копия.
Ни один из баллов не публикуется без класса сервиса — именно он подсказывает, какой из двух отвечает на ваш реальный вопрос.
Место в рейтинге — не хранимое значение. Это свойство списка: каждая страница рейтинга упорядочивает провайдеров по двум баллам и указывает, по какой оси она отсортирована. Рейтинг приватности ведётся по безопасности, рейтинг для стриминга — по удобству. Если ведущая ось совпадает, список обращается ко второму баллу, а затем к названию, поэтому порядок всегда однозначен и ни у одной строки нет того же числа. Поля «место в рейтинге», которое можно было бы подправить, не существует.
Восемь независимых каналов риска, каждый задаёт опубликованной записи один вопрос. Канал отвечает вероятностью от 0 до 1 — насколько вероятно, что именно этот путь идентифицирует пользователя, — и восемь ответов перемножаются, а не складываются.
Ни один канал не взвешивается по тому, насколько важным он кажется. Вес заключён в том, что находит каждый канал, а если он ничего не находит, балл остаётся нетронутым.
Каждый канал называет поля, которые он читает, и на странице каждого провайдера показаны фактические прочитанные значения — с источниками и датами. Число ниже — это сколько из 67 полей безопасности участвует в каждом; поле, отвечающее более чем на один вопрос, учитывается в каждом из них, поэтому сумма чисел превышает 67.
| Канал | Задаваемый вопрос | Поля |
|---|---|---|
| Хранение | Есть ли запись, связывающая трафик с человеком, и кто это проверил? | 13 |
| Юрисдикция | Может ли кто-либо принудительно получить имеющееся, не оставив провайдеру возможности высказаться? | 5 |
| Раскрытие | Уже передавал ли он что-либо? | 6 |
| Добросовестность | Ловили ли его на том, что он говорил одно, а делал другое? | 17 |
| Архитектура | Кто управляет точкой выхода и что она делает с трафиком? | 2 |
| Гигиена | Какие идентифицирующие данные собираются попутно и вообще можно ли проверить клиента? | 12 |
| Незнание | Насколько многое здесь никто не установил? | 6 |
| Молчание | Десять лет, миллионы пользователей — и ничего не зафиксировано? | 5 |
Канал не читает поле и не выдаёт число сам по себе. Между ними стоят правила модели: их 32, и каждое называет, что оно читает, какому каналу отвечает и какую форму арифметики использует. Здесь они напечатаны полностью, потому что правило, которое читатель не может увидеть, — это правило, которое читателю приходится принимать на веру.
Все они укладываются в десять форм, и форма — это честное описание того, что правило может сделать с баллом:
capped_sum
Слагаемые суммируются до верхнего предела, который они не могут превысить.
constraint
Инвариант, которому должны соответствовать таблицы. Он не присваивает балл и проверяется с помощью selftest.py, а не вычисляется для каждого провайдера.
decay
Значение, скорректированное с учётом давности лежащих в его основе доказательств.
derivation
Вычисляет одно поле из других, поэтому факт хранится один раз.
flag
Публикует маркер для читателя и не изменяет балл.
gate
Выбирает, какая ветвь модели применяется, а не вычисляет число.
max
Наихудший из нескольких способов кодирования одного обстоятельства. Они не складываются: одно событие, записанное дважды, всё равно остаётся одним событием.
noisy_or
Независимые результаты складываются: 1 - произведение(1 - каждого из них).
product
Факторы перемножаются: каждый масштабирует то, что установили остальные.
threshold
Проверка входных данных, которая определяет уровень безопасности или то, срабатывает ли правило.
Не все 32 правил что-то оценивают. Четыре имеют форму constraint, и три из них — R08, R22, R23 — вообще не проверяются против какого-либо провайдера: это инварианты, которым должны соответствовать сами таблицы, они проверяются при сборке контракта, а не при оценке записи, поэтому вместо количества полей у них указана область проверки.
Четвёртое, R29, действительно читает запись, но чтобы определить, как может быть закодировано поле, а не во что обходится это кодирование. Ещё одно, R15, — это flag: оно публикует пометку для читателя и не сдвигает никакое число.
R01_bought_coverageдобросовестностьmaxчитает 4 полей
Покрытие, существующее потому, что за него заплатили
максимум из: пары (X08, X10), оценённой по params.bought_coverage, и — если M10 содержит review_directory — X11, оценённого по params.review_directory; 0,000, если ни один маршрут не срабатывает
R02_cluster_contagionдобросовестностьproductчитает 4 полей
Риск, перенесённый от родственной компании, пойманной на лжи
min(params.cap, coupling x transfer x максимум по sibling s для R04_lie_group(s)); coupling — это params.coupling, считанный из M18_shared_infrastructure, с возвратом к M17_brand_role, если инфраструктура отделена, неизвестна или в таблице ничего не называет; transfer: 1,0, если дата установления >= max(M16 обоих), иначе 0,0; установление без даты -> 0,0; sibling должны быть опубликованными записями; собственное заражение sibling никогда не считывается
R03_owner_businessдобросовестностьmaxчитает 1 поле
Монетизация, подразумеваемая тем, что ещё продаёт группа
максимум по категориям M10; объединяется с X05 через максимум, а не noisy-OR (одно обстоятельство, две кодировки)
R04_lie_groupдобросовестностьmaxчитает 2 полей
Ось лжи
max(X01, X02) — никогда не noisy-OR: одно событие, закодированное дважды, не должно суммироваться до CHANNEL_CAP; S19 = caught_lying, если >0, unexamined, если оба неизвестны, иначе clean
R05_exposureмолчаниеthresholdчитает 3 полей
Уровень подверженности
pts = лет работы, оценённых по params.years_points + M08 по params.scale_points + params.stayed_logging_points, если P04=stayed_logging; уровень безопасности — самый высокий порог в params.bands, которого достигает сумма, иначе низкий; заданный вручную P10 игнорируется
Уровень безопасности считывается с опубликованного балла, а не хранится отдельно от него, поэтому слово и число не могут разойтись.
| Уровень безопасности | Балл | Что это значит |
|---|---|---|
| Защита: высокая | 75–100 | Ключевые заявления провайдера о приватности подтверждены доказательствами, и независимый аудит их проверил. |
| Защита: средняя | 55–74 | Большая часть важного подтверждена, и в записи нет ничего, что исключало бы провайдера, но некоторые пробелы остаются. |
| Защита: ниже средней | 35–54 | Неподтверждённого больше, чем подтверждённого. Ничего скандального, но недостаточно, чтобы рекомендовать. |
| Защита: низкая | 15–34 | То немногое, что известно, чаще говорит против провайдера, либо почти ничего о нём нельзя подтвердить. |
| Не рекомендуем | 0–14 | Исключён: провайдер был уличён во лжи о своих действиях, либо его приложение пропускает чужой трафик через устройства своих пользователей. |
Безопасность — это порог, а не разменная величина. В общем рейтинге высокий балл удобства не может поднять провайдера выше того, у кого лучше балл безопасности. Список сначала сортируется по безопасности и обращается к удобству только тогда, когда баллы безопасности записей совпадают.
В реестре в его нынешнем виде провайдер с баллом удобства 60 находится на 25 мест ниже того, у кого 55 — и это правильный порядок, а не ошибка.
Модель оценивает состояние опубликованных доказательств, а не наше мнение о компании. Поэтому три вещи о значении важны не меньше, чем само значение.
У каждого значения есть свои источники, и у каждого источника — свой уровень. Веса заданы самой моделью:
| Уровень | Вес | Что это |
|---|---|---|
| A | 1.00 | Сам документ — политика, отчёт, материалы суда |
| B | 0.85 | Провайдер заявляет об этом там, где несёт за это ответственность |
| C | 0.70 | Компетентная третья сторона сообщает об этом |
| D | 0.35 | Всё, что слабее этого |
Отдельно каждое значение фиксирует, как оно там оказалось. document означает, что существует источник, и только такие значения могут отображаться как подкреплённые заявления; derived вычислено из других полей одним из правил на этой странице; asserted — значение, за которым ничего не стоит, именно так хранится поле, которое никто не установил.
Четвёртой градации не существует: значение либо опирается на документ, либо вычислено из значений, которые на него опираются, либо за ним вообще ничего нет.
Три кривые в цифрах:
| Что устаревает | Учитывается полностью | Уменьшается вдвое каждые | Никогда не ниже |
|---|---|---|---|
| Аудит или проверка | 12 месяцев | 18 месяцев | 5% |
| Заявление о текущей практике | 12 месяцев | 60 месяцев | 15% |
| Показатель прозрачности | 12 месяцев | 60 месяцев | 35% |
Три кривые различаются, потому что описываемые ими вещи меняются с разной скоростью. Снимок аудитора устаревает быстрее всего: он говорит о том, что было верно в одну конкретную неделю одного года. Заявление о текущей практике и показатель прозрачности описывают устойчивое положение дел, поэтому дольше сохраняют ценность — а отчёт о прозрачности держит самый высокий из трёх нижних пределов, потому что компания, однажды опубликовавшая свои цифры, установила о себе нечто, чего не отменяет один тихий год.
Совершенно иная форма, потому что она отвечает на другой тип вопроса: аддитивная взвешенная сумма, где функции складываются, а отсутствующая — это недобор. Тринадцать полей, двенадцать из них несут вес, в сумме 34 баллов. Тринадцатое — это годовая цена: публикуется, потому что читателю она нужна, но не имеет веса, потому что скидка за оплату на двенадцать месяцев вперёд — это коммерческое условие, а не свойство сервиса.
| Поле | Вес | Перепроверяется |
|---|---|---|
| Работает при действующей цензуре | 5 | 30 дней |
| Платформы с клиентом | 4 | 30 дней |
| Страны с предлагаемыми точками выхода | 4 | 90 дней |
| Месячная цена в USD по помесячному плану, согласно списанию | 3 | 30 дней |
| Бесплатный тариф, которым можно пользоваться | 3 | 30 дней |
| Предлагаемые протоколы | 3 | 30 дней |
| Охват функции аварийного отключения | 3 | 30 дней |
| Одновременные подключения | 2 | 30 дней |
| Сложность начала использования | 2 | 30 дней |
| P2P разрешён | 2 | 30 дней |
| Доступны основные стриминговые сервисы | 2 | 30 дней |
| Доступно раздельное туннелирование | 1 | 30 дней |
| Цена годового плана в USD за первый срок, согласно списанию | — | 30 дней |
Результат усредняется по полям, у которых есть значение, поэтому провайдер не наказывается за поле, которое никто ни для кого не заполнил. Обход цензуры несёт наибольший вес, потому что это единственное свойство удобства, определяющее, работает ли сервис вообще там, где это важнее всего; split tunneling несёт наименьший вес, потому что его отсутствие — просто неудобство.
Цена входит именно сюда, а не в ось безопасности, и только помесячная ставка. Годовые ставки показаны везде на сайте, но не оцениваются: скидка за обязательство на двенадцать месяцев вперёд — это коммерческое условие, а не свойство сервиса.
Балл при полноте 50% — это другое утверждение, чем тот же балл при полноте 95%, поэтому полнота публикуется вместе с баллом, и оба показываются рядом. Это доля полей, которые вообще были установлены.
Рядом с ним каждая запись несёт ключевые пробелы: текст аналитика, называющий, что не было установлено, что могло бы это закрыть, и оговорки, ограничивающие число. Именно здесь читатель узнаёт, что отчёт о проверке — это Type I, а не Type II, или что страна флота была выведена из заметки о маршрутизации.
Высокий балл с длинным списком пробелов — не противоречие: балл говорит о том, что подтверждают доказательства, пробелы — сколько было доказательств. Ни одна из половин не скрывается, чтобы другая выглядела лучше.
Там, где провайдер ничего не публикует, поле остаётся неизвестным. Оно никогда не оценивается приблизительно, никогда не выводится по аналогии с конкурентом, никогда не заполняется тихо маркетинговым числом и никогда не угадывается в ту или иную сторону — за это отвечает канал незнания, и это честное место, чтобы это стоило балла. В таблице неустановленное значение отображается как — и оказывается последним при сортировке в обоих направлениях: сортировка по размеру флота по возрастанию не вознаграждает провайдера за то, что он отказался нам что-то сообщить.
Две оси, два порога, и они намеренно установлены на разной высоте. По безопасности модель воздерживается от вердикта, если установлено меньше 30% значимых полей вообще, либо если — при установленности ниже 50% и балле ниже 35 — доминирующий риск это наш собственный ignorance. Ни то ни другое не является утверждением о провайдере: это значит, что исследование не зашло достаточно далеко, чтобы его разместить, и 9 из 77 записей находятся.
По удобству порог выше — балл должен опираться минимум на 50% доступного веса, а не на 30% — и он выше, потому что две оси по-разному оценивают пробел. Безопасность оценивает незнание внутри самого балла, поэтому скудная запись уже несёт эту цену.
У удобства нет такого канала: неустановленная функция просто выпадает из среднего, поэтому без порога запись с двумя известными полями выглядела бы как измеренная. 15 из 77 записей публикуют usability.state: no_data, и число, которое они несут, — это нижняя граница, а не измерение — оно никогда не печатается рядом с known так, будто их можно сравнивать.
Шесть ограничений, опубликованных вместе с моделью, а не обнаруженных позже. Они — часть methodology.json и сопровождают каждый балл, который она выдаёт, поэтому здесь они напечатаны слово в слово, а не пересказаны:
expires_at.key_gaps должно быть указано, что это так.V15_assurance_strength имеет значение unknown, а каждому провайдеру с аудитом засчитывается рыночная норма, а не то, что указано в его собственном отчёте. Поле фиксирует заявленную силу, а не лежащую в её основе строгость: задание может содержать заключение с разумной уверенностью и при этом быть узким — для этого предназначены V03_audit_subject и V04_scope_servers.Редакционной корректировки нет. Более ранняя версия этого метода позволяла редактору сдвинуть вычисленный балл до двух пунктов с опубликованным обоснованием; это было убрано, потому что разбор на странице каждого провайдера теперь показывает арифметику полностью, а число, не полученное из этой арифметики, превратило бы разбор во ложь.
У редакторского суждения есть только одно место, и это не балл: отдельный ручной уровень качества, который никогда не подмешивается. Если редактор считает запись неверной, путь тот же, что и для любого читателя — изменить доказательства и дать модели пересчитать.
Баллы пересчитываются при каждом импорте и по запросу. Поскольку версия модели применяется сразу ко всем записям, её изменение сдвигает весь реестр, а не одну строку — так и должно быть, и поэтому каждое изменение публично фиксируется в журнале. Дата обновления провайдера меняется только тогда, когда изменилось что-то существенное; повторный импорт, ничего не меняющий, не трогает ни одну дату, потому что проставить 77 страницам сегодняшнюю дату означало бы подать сигнал свежести, который мы не заслужили.
Что можно купить — это комиссию, когда кто-то подписывается по ссылке, и — если платное размещение когда-либо будет продаваться — собственный помеченный блок над рейтингом, вне общего порядка. Ни то ни другое сегодня не включено — ни одна ссылка не несёт партнёрский параметр, и ни одно размещение не продано — и оба раскрываются там, где появляются, а также в раскрытии партнёрских отношений. Поскольку рейтинг вычисляется из доказательств, а доказательства опубликованы рядом с ним, покупка лучшей позиции потребовала бы изменения опубликованной записи — а это именно то, что может проверить кто угодно.
R06_ignoranceнезнаниеproductчитает 5 полей
Цена того, что никто не установил
min(params.cap, params.slope x (1 - known_share)) x (1 - params.posture_relief x posture); posture = сумма значений posture: записи ограничены значением 1,0
R07_silenceмолчаниеthresholdчитает 4 полей
Молчание пропорционально подверженности
срабатывает только если P01 и P03 входят в {none_known, unknown}, а P05 — в {none, unknown, fresh_no_numbers}; risk = min(params.cap, params.per_year x лет работы x weight), при этом weight берётся из params.weight по уровню безопасности подверженности. Расчёт ведётся по годам, поскольку молчание накапливается: пятнадцать лет без каких-либо сведений в записи — не то же самое утверждение, что пять лет, и фиксированный уровень безопасности именно это и устанавливал. Провайдер, год запуска которого неизвестен, здесь ничего не начисляет согласно R08
R08_unknown_pricing6 каналовconstraintкаждая таблица рисков и нижних границ в схеме
Презумпция невиновности как арифметическое правило
применяется только к установлениям против провайдера и никогда к неизвестному, записанному как опубликованный априор канала (C01 = prior_0.550), который является базовой частотой, а не установлением. В противном случае risk(unknown) <= 0,50 x risk(худшего подтверждённого значения) и никогда не равен ему; пойманная ложь всегда имеет больший вес, чем пустое значение; по оси лжи и в каждом поле события risk(unknown) = 0,000 безусловно. Полная цена пустого значения уплачивается один раз, в незнании, где оно помечено как наше
R09_channel_combination8 каналовnoisy_orчитает 8 полей
Как восемь каналов превращаются в одно число
балл = 100 x product(1 - min(0,90, r_c)) по восьми каналам; общего нижнего или верхнего ограничения нет; S18 входит в integrity, а не как девятый канал
R10_disclosure_decayраскрытиеdecaymaxчитает 4 полей
Неблагоприятные события тоже устаревают
раскрытие = max по P01, P02 и P03 собственной цены этого поля после затухания — один маршрут, взятый в худшем случае, без сложения, поскольку три кодировки одного изъятия — это одно изъятие; decay(plateau=12, half_life=60, floor=0,35) на дату записи P12_case_history для того же эпизода, сопоставленной по тому, что, согласно записи, произошло — P01 с seizure, P03 с court_order, subpoena или mandate_order — и никогда не по тому, чем всё закончилось, поскольку эпизод, который ни к чему не привёл, всё равно является эпизодом, определяющим дату установленного факта; P02 сопоставляется по исходу, поскольку здесь исход и есть факт; неблагоприятное событие без такой записи сохраняет своё значение без затухания; форма кривой практики с более высоким нижним пределом, здесь 0,35 против 0,15 для доказательств практики, поскольку подтверждённое раскрытие навсегда остаётся в записи
R11_evidence_voidingхранениераскрытиедобросовестностьgateчитает 1 поле
Смена контроля сбрасывает то, что передаётся
доказательства, датированные до M16, не относятся к текущему владельцу: аудиты теряют бонус за серию, события раскрытия опускаются до нижнего предела R10, результаты для связанной стороны вообще не переносятся
R12_report_plausibilityдобросовестностьнезнаниеthresholdчитает 5 полей
Отчёт о прозрачности ценен своим содержанием
P06 = zero_implausible, когда P09 = 0, а P08 превышает params.min_requests и запись устанавливает наличие записи на каждого человека, которую можно раскрыть, — строгость хранения на уровне params.min_retention или выше. Оценка только по масштабу пользователей наказывала за противоположное тому, для чего это предназначалось: провайдер, который публикует свои числа и сообщает, что ничего не выдал, объявлялся лжецом, тогда как тот, кто ничего не публикует, ничего не платил. Нулевое число выданных сведений невероятно только для провайдера, чья собственная запись говорит, что ему есть что выдать; при установленном отсутствии журналов это ожидаемый ответ, и модель не должна не верить в одном канале тому, чему она поверила в другом. Когда это срабатывает, ослабление позиции от P05 устанавливается в 0,00, а integrity получает маршрут из params.route
R13_derived_jurisdictionюрисдикцияnoisy_ormaxчитает 6 полей
Поля предписания выводятся, а не оцениваются
C10 = M06 в MANDATE_COUNTRIES; C11 = M11 в MANDATE_COUNTRIES; когда M11 = M06, это одно обстоятельство, и юрисдикция принимает max(C10, C11, P11), а не noisy-OR; присутствие в инфраструктуре учитывается как max(C09b, P04), что представляет собой отдельный маршрут по сравнению с маршрутом компании; рукописное переопределение требует собственного источника и публикуется как таковое
R14_disclosure_rateраскрытиеthresholdчитает 2 полей
Доля запросов, по которым были предоставлены данные
rate = P09 / P08, как только P08 достигает params.min_requests; risk = params.weight x rate; публикуется рядом с rate, поскольку сопоставимость между юрисдикциями низкая — запрос означает судебный приказ в одной стране и письмо в другой
R15_free_tier_flagнет каналаflagчитает 2 полей
Бесплатные тарифы чем-то оплачиваются
S22 = помечается, когда каждое поле, названное в params, содержит одно из указанных для него params значений, и никак иначе; не изменяет балл ни по одной из осей — оба входных значения уже учтены там, где им положено, а оценка их совокупности означала бы усреднение, от которого и существуют две оси
R16_opaque_at_mass_scaleдобросовестностьthresholdчитает 2 полей
Непрозрачность хуже, чем больше людей она охватывает
X03 = непрозрачный и M08 = массовый -> params.at_mass_scale вместо собственной цены X03 для непрозрачного
R17_location_noticeюрисдикцияderivationчитает 3 полей
Если предлагается страна с предписанием, что там фактически находится
C09 = страны U02, которые входят в MANDATE_COUNTRIES; значение вычисляется и никогда не заполняется вручную. Сам по себе C09 ничего не начисляет и не входит в знаменатель полноты: наличие точки выхода в такой стране само по себе ничего не говорит, и оно публикуется для местоположения, которое выбирает читатель. Начисляется C09b — единственный вопрос, который стоит задать, когда C09 не пуст: действительно ли оборудование находится под этим предписанием или местоположение виртуальное, а оборудование находится в другом месте. C09b имеет значение n/a, когда C09 пуст, и объединяется с P04 по max: наличие под предписанием — одно обстоятельство, закодированное дважды
R18_audit_gateхранениеgatemaxчитает 2 полей
Какой путь хранения выбирает аудит
V11 указывает хранение данных -> заявленная ветвь в params.credence_stated; V01 = yes_* и V11 не указано -> ветвь молчания в params.credence_silent x subject_factor (params.subject_default, если предмет не установлен), и ни одна ветвь не превышает params.credence_max; в противном случае документальных доказательств нет вовсе; серьёзность в выбранной ветви = max(C01_linkable_retention, V11_audit_findings), а не noisy-OR — одно обстоятельство, закодированное дважды, не должно усиливаться (как в R04)
R19_audit_decayхранениеdecayчитает 1 поле
Конфигурация постоянно меняется
decay(params.decay) — непрерывно по месяцам, без узлов
R20_practice_agesхранениеdecaymaxчитает 1 поле
Каждое задокументированное событие имеет собственную дату
каждое событие в P12 с outcome = nothing_produced вносит decay(practice, собственной датой); значение практики поля — максимум по его событиям, а не их сумма; это заменяет трактовку с одной датой для P01 и P03, которая объединяла несколько изъятий в одно
R21_circumvention_decayusabilitydecayчитает 1 поле
Блокировка опережает доказательства
U06 оценивается как заявленное, если с даты актуальности самого поля прошло более 12 месяцев; в записи уже указана дата каждого поля, поэтому срок отсчитывается от неё, а не записывается в значении; это единственное поле удобства со снижением со временем, поскольку только его истинность утрачивает силу
R22_completenessнезнаниеconstraintстолбец полноты каждого поля
Что считает знаменатель
содержательные поля с completeness = yes; n/a не входит в знаменатель, unknown остаётся в нём; поля идентичности, результаты моделей, избыточные метки и поля удобства исключаются — охват удобства указывается отдельно как S16
R23_credence_defaultsхранениеconstraintкаждая таблица факторов в схеме
Непрочитанные доказательства не учитываются
зеркало R08 и намеренно не симметрично ему. factor(unknown) <= самый слабый подлинный уровень доказательности в этом поле и строго выше любого значения, кодирующего отказ раскрыть информацию (V06 unnamed, V02 none). Зачёт аудита, который никто не читал, по номиналу — это способ превратить купленный отчёт в балл; выдавать наше собственное незнание за отказ провайдера — противоположная ошибка. Отказ засчитывать непроверенные доказательства — не обвинение: провайдер возвращается к априорной вероятности, базовой ставке рынка, а не к установленному факту
R24_retention_compositionхранениеproductmaxчитает 14 полей
Как подканалы хранения превращаются в одно число
четыре подканала не усредняются. credence.paper = ветвь, которую выбирает R18 (заявленная: credence_stated; молчаливая: credence_silent x subject_factor) x source_credence собственной .conf этой ветви x audit_decay (R19) x publication_factor x engagement_factor (организация x стандарт x сила заверения) x scope_factor для заявленной ветви x series_bonus, когда R11 оставляет серию в силе, с ограничением до credence_max. credence.practice = максимум по датированным событиям nothing_produced: practice_credence x practice_decay (R20). credence = min(credence_max, max(paper, practice) + secondary_weight x min(paper, practice)) — два вида доказательств сильнее одного, но никакое количество доказательств не достигает полной достоверности. severity = max(C01, V11) согласно R18 или prior, если ни одно не установлено. retention = credence x severity + (1 - credence) x max(severity, prior): возврат к базовой рыночной ставке возможен только вверх, поэтому признание против собственных интересов сохраняет свою номинальную величину. retention.floor = max(retention, минимальное значение C12:) в последнюю очередь, потому что аудит, ограниченный туннелем, не может снять факт в приложении
R25_integrity_compositionдобросовестностьnoisy_orчитает 14 полей
Как маршруты добросовестности превращаются в одно число
целостность = 1 - product(1 - route) по срабатывающим маршрутам: ось лжи (R04), прозрачность владельца (R16 при массовом масштабе), история группы владельца, монетизация в сочетании с тем, что продаёт группа (R03), обработка инцидентов, абсолютные заявления, продвижение пожизненных подписок, купленное освещение (R01), маршрут неправдоподобного отчёта (R12), пробел в декларациях магазинов (R28), disclosure_rate_weight x rate (R14) и заражение кластера (R02, S18). Маршруты суммируются, поскольку это отдельные установленные факты; пары, представляющие одно обстоятельство, закодированное дважды, уже были сведены через max внутри собственного правила, поэтому здесь повторное сведение не выполняется
R26_hygiene_compositionгигиенаcapped_sumчитает 12 полей
Как поля гигиены превращаются в одно число
гигиена = min(params.cap, сумма риска: цена каждого поля, направленного сюда). Единственный аддитивный канал на оси безопасности: это небольшие независимые утечки, которые накапливаются, а не один факт, определяющий результат, и ограничение не позволяет куче незначительного сбора данных выглядеть как разглашение. Поле-список оценивается по самому дешёвому элементу — достаточно одного анонимного способа оплаты — и при отсутствии цены у элементов использует собственную цену неизвестности. C13_weakest_protocol — производная сумма здесь (R32): работающий устаревший транспорт — ещё один объект, собранный попутно, а не факт, определяющий результат
R27_report_concealmentдобросовестностьmaxчитает 2 полей
Молчание о раскрытии в масштабе, гарантирующем запросы
провайдер среднего или массового масштаба наверняка получает запросы, поэтому установленное отсутствие чисел — это факт о провайдере, а не пробел в нашем исследовании: P05 = none charges 0.150, fresh_no_numbers 0.100 — опубликованный отчёт, в котором пропущено единственное важное число, является наиболее резкой формой этого случая, — а stale 0.050. Срабатывает только при установленном значении; неизвестность здесь ничего не начисляет и оценивается в неведении, куда относится наш собственный случай, когда мы не искали. Зеркальное отражение R12: одно оценивает невероятное число, это — отсутствие любого числа
R28_store_declaration_gapдобросовестностьmaxчитает 1 поле
Заявление магазина в сравнении с политикой, предоставленной провайдером магазину
обязательная форма магазина — это собственное подписанное заявление провайдера о его приложении, поэтому всё, что заявляет форма, должно также присутствовать в политике, на которую сам провайдер направляет магазин. Читается только в одном направлении: приложение — подмножество сервиса, поэтому форма, заявляющая меньше, чем допускает политика, объясняется областью охвата и ничего не начисляет, тогда как категория, которую заявляет форма, а политика никогда не упоминает, такого оправдания не имеет. Оценка зависит от того, что раскрывает неуказанная категория: идентификатор или диагностические данные начисляют 0.150, поведение — активность приложения, установленные приложения, местоположение или любая рекламная цель — 0.300, а заявление о самом сборе данных, который отрицает заявление об отсутствии журналов, — 0.450. Два магазина по-разному определяют сбор данных, поэтому различие между формой Apple и формой Google само по себе не является установленным фактом. Побеждает наибольший пробел среди магазинов
R29_session_stateхранениеconstraintчитает 2 полей
Соединение — не запись о соединении
C01 оценивает, что провайдер всё ещё может связать с человеком после завершения сеанса. Состояние, существующее только пока туннель работает, — исходный IP, идентификатор аккаунта и временная отметка соединения, хранимые для маршрутизации пакетов сервером и обеспечения ограничения числа устройств, — это само соединение, а не запись о нём, и оценка этого как хранения данных начисляет провайдеру плату за описание работы VPN. Более того, это начисляет больше, чем отсутствие заявления: пустое значение в этом поле — рыночный априорный уровень 0.550, а source_ip — 0.750, поэтому честное описание пятнадцатиминутного буфера стоило дороже молчания. Исключение узкое — и должно быть таким, — иначе оно превратится в предложение, которое пишет каждый провайдер. Оно применяется только там, где собственный документ провайдера указывает срок удаления, привязанный к завершению сеанса и не превышающий 24 часа — это самая короткая календарная единица, более длительная, чем любой срок, необходимый сервису для завершения работы, и более короткая, чем любой цикл ротации, в течение которого хранятся журналы. Незаявленная длительность является хранением данных. Календарный период — 7 дней, 30 дней, цикл ротации — является хранением данных независимо от формулировки, поскольку по замыслу выходит за пределы сеанса. Всё, что провайдер хранит после этого срока, по-прежнему оценивается своим тарифом, а исключение учитывает только заявление провайдера: если аудит обнаружил наличие данных, R18 уже ставит установленный факт выше заявления
R30_usability_foundationusabilitythresholdстолбец веса каждого поля удобства
Какую долю таблицы покрывает балл удобства
сумма удобства делится на вес, который удалось прочитать: поле, по которому ничего не установлено, остаётся в знаменателе, вместо того чтобы получать нулевой балл, поскольку полнота — не качество. Цена этого решения в том, что балл не видит собственного основания: столбец, самое весомое поле которого не прочитано, даёт ту же форму числа, что и заполненный столбец. S21 = прочитанный вес / действующий вес, где действующий — это каждое взвешенное поле удобства за вычетом тех, у которых указано n/a. Ниже usability_foundation_floor S20 = no_data: число, основанное менее чем на половине таблицы, показывает, какие поля были заполнены, а не то, что делает продукт. Порог строже, чем для безопасности, поскольку у этой оси нет канала неведения: безопасность начисляет плату за пустое значение внутри балла, а удобство нигде не начисляет её за это. Балл всё равно публикуется при no_data, как и балл безопасности; непредоставленное число нельзя проверить.
R32_protocol_floorгигиенаderivationmaxчитает 1 поле
Самый слабый предлагаемый транспорт
C13_weakest_protocol — худший протокол в U07_protocols согласно порядку риска в собственной таблице C13; он вычисляется во время загрузки и никогда не заполняется вручную — по той же схеме, по которой R17 вычисляет C09 из U02. Он входит в R26_hygiene_composition как ещё одна сумма и, как каждый элемент там, ограничен потолком канала гигиены. В сети, предлагающей только современные транспорты, поле имеет значение not_applicable, а не название: если цены протоколов выше 0.000 отсутствуют, предлагать нечего и указывать на слабое нечего, а выбор наименее плохого из хороших по порядку разрешения ничьей опубликовал бы факт, которого никто не устанавливал. Поле сохраняется для дешёвого сегмента, где PPTP и L2TP всё ещё работают. Цена proprietary — это не плата за то, что поставщик написал собственный протокол, а цена невозможности определить, является ли этот протокол слабым; поэтому vendor_open ничего не стоит: транспорт поставщика, исходный код которого опубликован и независимо проверен, можно оценить, и в оценке не сказано, что он слабый. Начислять за него всё равно означало бы оценивать неведение, которое уже устранено, и сделало бы публикацию исходного кода более дорогой, чем его сокрытие.
R33_exit_conductархитектураmaxчитает 2 полей
Что точка выхода делает с переносимым ею трафиком
архитектура = max(цена C00_architecture, цена C14_traffic_modification). Кто управляет точкой выхода и что точка выхода делает с проходящими через неё данными, — это один вопрос: находится ли дальний конец туннеля на вашей стороне, — и один плохой ответ его решает, поэтому канал берёт худшую из двух цен, а не их сумму: точка выхода, которой управляют посторонние и которая также переписывает ваши заголовки, не вдвое хуже любого из этих вариантов, она настолько же плоха. headers_injected (0.300) — это идентификатор сеанса или любой другой заголовок, добавленный к проходящему трафику, что передаёт каждому месту назначения имя пользователя; content_injected (0.500) — это скрипты, реклама или другой материал, помещённый на страницы; tls_interception (0.750) — это открытие точкой выхода зашифрованных сеансов. none должен быть выведен из документа, где это указано, а такие документы встречаются редко, поэтому unknown несёт тот же рыночный априорный уровень, что и C00, а канал неведения делает остальное.
verdict: no_data. Перед чтением любого из баллов прочитайте completeness по обеим осям.M14_inclusion_basis — единственная запись о том, почему каждый из них в него включён. Отсутствие провайдера в каталоге сначала является доказательством такого ручного отбора, а уже затем — сведением о провайдере, и ничто здесь не оценивает, сколько он упускает.Один
Здесь они изображены в той же пропорции, в которой их рисует реестр, потому что эта пропорция и есть аргумент: одно из двух определяет порядок, а другое описывает, что вы за это получаете.
Безопасность задаёт 8 вопросов
Каждое из 67 полей безопасности участвует хотя бы в одном из них. Восемь ответов перемножаются.
Определяет порядок
Описывает, что вы получаете
Удобство взвешивает 12 полей
Веса в сумме дают 34, и 12 складываются как взвешенное среднее. Тринадцатое поле несётся с нулевым весом, поэтому оно публикуется, но ничем не оценивается.
Три
Вот что даёт перемножение. Семь каналов могут быть безупречны, а восьмой всё равно решает судьбу записи — поэтому провайдер не может усреднить дисквалифицирующий факт, будучи аккуратным во всём остальном. Подвиньте регулятор.
Семь каналов держат по 0.05 каждый, и один — красный — двигает читатель
Ничего не суммировалось и не усреднялось. Семь аккуратных каналов остаются аккуратными и на дальнем конце этого регулятора — и они не могут выкупить обратно то, что забрал восьмой, в этом и весь смысл перемножения восьми каналов.
Четыре
Ни один канал не может превысить 0.9, потому что чтение документов не даёт полной уверенности. А одно обнаружение фиксирует канал снизу — там, куда не дотягивается ни один аудит.
Канал хранения
Безупречный отчёт опустошает стакан. То, что в нём остаётся, — это идентификатор, которым владеет провайдер:
Отчёт может сказать только то, что было записано. Идентификатор говорит, что пользователя можно назвать по имени независимо от того, было ли что-то записано, поэтому это ответы не на один и тот же вопрос — и модель не позволяет первому решать за второй.
Восемь
Каждая линия веера — это правило, называющее канал, которому оно отвечает. Все они напечатаны полностью ниже на этой странице, потому что правило, которое читатель не может увидеть, — это правило, принятое на веру.
Левый веер — это каждое правило, обращающееся к полям, которые оно читает; правый — каждое правило, называющее канал, которому оно отвечает. Все 32 правил напечатаны полностью ниже на этой странице, потому что правило, которое читатель не может увидеть, — это правило, принятое на веру. Машина большая не потому, что она хитроумная, — она большая потому, что велики сами вопросы, а модель, достаточно маленькая, чтобы уместиться в один абзац, описывала бы не то, что нужно.
Семь
Единственный канал, который оценивает пустоту. Это также единственное на сайте, что провайдер может изменить сам — и способ изменить это — публиковать, а не просить.
0.00начислено записи
min(0.6, 0.9 × (1 − established)) × (1 − 0.4 × posture)
Незнание не нейтрально. Провайдер, о котором ничего не установлено, несёт реальный риск, и модель оценивает это, а не оставляет вежливый пробел — из-за чего это единственное число на всём сайте, которое провайдер меняет сам. Каждый другой канал ждёт, пока что-то найдут; этот ждёт, пока что-то опубликуют.
Два
Ничего не суммируется. Каждый канал сохраняет ту долю записи, что оставил предыдущий, поэтому восемь каналов — это цепочка, а не столбец цифр.
score = 100 × ∏ (1 − channel)
Форма — это noisy-OR over independent risk channels. Здесь она показана на записи Proton VPN, с наивысшим баллом в реестре — цифры ниже принадлежат этой записи, а не придуманы для примера.
3 каналов ничего не находят и ничего не забирают. Остальные 5 забирают понемногу каждый, и доли накапливаются, а не взаимно гасятся: 70 — вот что осталось от ста.
Шесть
Три вида доказательств, три кривые: каждая держится ровно на плато, а затем падает до нижнего предела, который больше не покидает. Аудит — это событие, произошедшее в определённую дату, а не состояние, в котором находится провайдер.
По вертикали: вес, который всё ещё несёт доказательство — максимум сверху, собственный нижний предел снизу
сегодня1 год23456 лет
Каждая кривая держится ровно на плато, а затем падает до нижнего предела, который больше не покидает — доказательства устаревают, но не превращаются в ложь. Точки — это 30 записей реестра, публикующих датированный аудит, размещённые на кривой аудита по их собственному возрасту. Аудит — это не состояние, в котором находится провайдер, а событие, произошедшее в определённую дату.
Девять
Каждый VPN здесь получает одно целое число из ста, и модель делит эту шкалу на 4 порогов, которые публикует заранее. Пересеките порог — и слово меняется. Ничто другое его не меняет — ни красивый логотип, ни скидка, ни пресс-релиз.
Уровни безопасности — это интервалы, зафиксированные до того, как оценена хоть одна запись, и опубликованные, чтобы вы могли сами проверить каждую границу — число вычисляется, слово считывается с него, и ни то ни другое нельзя купить.
Пять
В эту модель ничего не попадает без проверки. То, что говорит отчёт, и то, кто это говорит, — две отдельные шкалы, и они перемножаются.
Что говорит отчётхранение: credence_stated против credence_silent
Кто это говоритчетыре уровня source_credence
Эти две шкалы перемножаются. Четыре уровня того, кто это говорит, и что означает каждый: