Methodik
Die Scores sind das Produkt, das diese Seite verkauft, deshalb wird das Modell veröffentlicht statt nur beschrieben: Diese Seite wird aus methodology.json gerendert, derselben Datei, die der Bewertungsalgorithmus liest. Die Methode kann nicht von den Zahlen abweichen, weil es nur eine einzige Kopie von ihr gibt.
Keiner der beiden Scores wird ohne die Dienstklasse gedruckt, denn sie sagt Ihnen, welcher der beiden die Frage beantwortet, die Sie eigentlich haben.
Der Rang ist kein gespeicherter Wert. Er ist eine Eigenschaft einer Liste: Jede eingestufte Seite ordnet Anbieter nach den beiden Scores und sagt, nach welcher Achse sie sortiert hat. Eine Datenschutz-Rangliste führt nach Sicherheit, eine Streaming-Rangliste nach Usability. Bei Gleichstand auf der führenden Achse greift die Liste auf den anderen Score und dann auf den Namen zurück, sodass die Reihenfolge vollständig ist und keine zwei Zeilen dieselbe Zahl tragen. Es gibt kein Rang-Feld, an dem irgendjemand drehen könnte.
Acht unabhängige Risikokanäle, jeder stellt dem veröffentlichten Datensatz eine Frage. Ein Kanal antwortet mit einer Wahrscheinlichkeit zwischen 0 und 1 — wie wahrscheinlich es ist, dass genau dieser Weg den Nutzer identifiziert — und die acht werden multipliziert, nicht addiert.
Kein Kanal wird danach gewichtet, wie wichtig er sich anfühlt. Die Gewichtung liegt in dem, was jeder Kanal findet, und findet er nichts, lässt er den Score unangetastet.
Jeder Kanal nennt die Felder, die er liest, und jede Anbieterseite zeigt die tatsächlich gelesenen Werte mit Quellen und Daten. Die Zahl unten gibt an, wie viele der 67 Sicherheitsfelder in jeden einfließen; ein Feld, das mehr als eine Frage beantwortet, wird unter jeder gezählt, weshalb die Summe der Zahlen über 67 liegt.
| Kanal | Die gestellte Frage | Felder |
|---|---|---|
| Speicherdauer | Gibt es einen Datensatz, der Datenverkehr mit einer Person verknüpft, und wer hat das geprüft? | 13 |
| Jurisdiktion | Kann jemand das Vorhandene erzwingen, ohne dass der Anbieter mitreden kann? | 5 |
| Offenlegung | Hat er bereits etwas herausgegeben? | 6 |
| Integrität | Ist er dabei ertappt worden, eines zu sagen und ein anderes zu tun? | 17 |
| Architektur | Wer betreibt den Exit, und was macht er mit dem Datenverkehr? | 2 |
| Hygiene | Welche identifizierenden Daten werden nebenbei erhoben, und kann der Client überhaupt überprüft werden? | 12 |
| Unwissenheit | Wie viel davon hat niemand belegt? | 6 |
| Schweigen | Zehn Jahre, Millionen von Nutzern und nichts im Datensatz? | 5 |
Ein Kanal liest nicht einfach ein Feld und erzeugt von sich aus eine Zahl. Zwischen beiden stehen die Regeln des Modells: 32 Stück, jede nennt, was sie liest, welchem Kanal sie zugeordnet ist und welche Art von Rechenoperation sie verwendet. Sie sind hier vollständig abgedruckt, denn eine Regel, die ein Leser nicht sehen kann, ist eine Regel, der er vertrauen muss.
Zehn Formen decken sie alle ab, und die Form ist die ehrliche Zusammenfassung dessen, was eine Regel mit einem Score anstellen kann:
capped_sum
Summanden sammeln sich bis zu einer Obergrenze, die sie nicht überschreiten können.
constraint
Eine Invariante, die die Tabellen erfüllen müssen. Sie bepreist nichts und wird von selftest.py geprüft, statt pro Anbieter bewertet zu werden.
decay
Ein Wert, skaliert nach dem Alter des ihm zugrunde liegenden Belegs.
derivation
Berechnet ein Feld aus anderen, sodass der Fakt nur einmal gespeichert wird.
flag
Veröffentlicht eine Markierung für den Leser und verändert keinen Score.
gate
Wählt aus, welcher Zweig des Modells gilt, statt eine Zahl zu berechnen.
max
Das Schlechteste aus mehreren Kodierungen eines Umstands. Sie werden nicht kumuliert: Ein zweimal niedergeschriebenes Ereignis bleibt ein Ereignis.
noisy_or
Unabhängige Befunde kumulieren sich: 1 - Produkt(1 - jeweils).
product
Faktoren werden miteinander multipliziert, wobei jeder skaliert, was die anderen belegt haben.
threshold
Ein Test der Eingaben, der eine Stufe oder das Auslösen der Regel bestimmt.
Nicht alle 32 bepreisen etwas. Vier tragen die Form constraint, und drei davon — R08, R22, R23 — werten gar keinen Anbieter aus: Es sind Invarianten, die die Tabellen selbst erfüllen müssen, geprüft beim Erstellen des Vertrags statt beim Bewerten eines Datensatzes, weshalb sie einen Geltungsbereich statt einer Feldzahl nennen.
Die vierte, R29, liest zwar einen Datensatz, aber um zu entscheiden, wie ein Feld codiert werden darf, statt was die Codierung kostet. Eine weitere, R15, ist ein flag: Sie veröffentlicht eine Markierung für den Leser und bewegt keine Zahl.
R01_bought_coverageIntegritätmaxliest 4 Felder
Abdeckung, die besteht, weil dafür bezahlt wurde
maximal: das (X08, X10)-Paar, bepreist nach params.bought_coverage, und — sofern M10 review_directory aufführt — X11, bepreist nach params.review_directory; 0.000, wenn keine der beiden Routen greift
R02_cluster_contagionIntegritätproductliest 4 Felder
Risiko, das von einem beim Lügen ertappten Schwesteranbieter übernommen wurde
min(params.cap, coupling x transfer x Maximum über Geschwister s von R04_lie_group(s)); coupling ist params.coupling, gelesen aus M18_shared_infrastructure, mit Rückfall auf M17_brand_role, wenn die Infrastruktur getrennt, unbekannt ist oder nichts in der Tabelle benennt; transfer: 1.0, wenn das Feststellungsdatum >= max(M16 beider) ist, sonst 0.0; undatierte Feststellung -> 0.0; Geschwister müssen veröffentlichte Datensätze sein; liest nie die eigene Ansteckung eines Geschwisters
R03_owner_businessIntegritätmaxliest 1 Feld
Monetarisierung, die durch das impliziert wird, was die Gruppe sonst verkauft
Maximum über M10-Kategorien; mit X05 durch Maximum kombiniert, nicht durch noisy-OR (ein Umstand, zwei Kodierungen)
R04_lie_groupIntegritätmaxliest 2 Felder
Lügenachse
max(X01, X02) — nie noisy-OR: ein zweimal kodiertes Ereignis darf sich nicht zu CHANNEL_CAP aufaddieren; S19 = caught_lying, wenn >0, unexamined, wenn beide unbekannt sind, ansonsten clean
R05_exposureSchweigenthresholdliest 3 Felder
Expositionsstufe
pts = Betriebsjahre, bewertet nach params.years_points + M08 nach params.scale_points + params.stayed_logging_points, wenn P04=stayed_logging; die Stufe ist die höchste Schwelle in params.bands, die die Summe erreicht, andernfalls niedrig; handschriftliches P10 wird ignoriert
Die Stufe wird vom veröffentlichten Score abgelesen, statt daneben gespeichert zu werden, sodass Wort und Zahl nicht auseinanderdriften können.
| Stufe | Score | Was sie bedeutet |
|---|---|---|
| Schutz: hoch | 75–100 | Die zentralen Datenschutzversprechen des Anbieters sind durch Belege gedeckt, und ein unabhängiges Audit hat sie geprüft. |
| Schutz: mittel | 55–74 | Das meiste Wichtige ist bestätigt, und nichts im Datensatz disqualifiziert den Anbieter — einige Lücken bleiben aber. |
| Schutz: unterdurchschnittlich | 35–54 | Mehr ist unbestätigt als bestätigt. Nichts Skandalöses, aber zu wenig für eine Empfehlung. |
| Schutz: niedrig | 15–34 | Was bekannt ist, spricht größtenteils gegen den Anbieter, oder es lässt sich fast nichts davon bestätigen. |
| Nicht empfohlen | 0–14 | Ausgeschlossen: Der Anbieter wurde bei einer Falschaussage über seine eigene Praxis ertappt, oder seine App leitet den Datenverkehr anderer Personen über die Geräte seiner Nutzer. |
Sicherheit ist eine Schwelle, keine handelbare Größe. In einer allgemeinen Rangliste kann ein hoher Usability-Score einen Anbieter nicht über einen mit besserem Sicherheits-Score heben. Die Liste sortiert zuerst nach Sicherheit und greift nur bei Datensätzen mit identischem Sicherheits-Score auf Usability zurück.
Im Register, wie es aktuell steht, liegt ein Anbieter mit einem Usability-Score von 60 25 Plätze unter einem mit 55 — und das ist die richtige Reihenfolge, kein Fehler.
Das Modell bewertet den Zustand der veröffentlichten Belege, nicht unsere Meinung über ein Unternehmen. Drei Dinge an einem Wert zählen deshalb ebenso wie der Wert selbst.
Jeder Wert trägt seine Quellen, und jede Quelle trägt eine Ebene. Die Gewichte stammen aus dem Modell selbst:
| Ebene | Gewicht | Was es ist |
|---|---|---|
| A | 1.00 | Das Artefakt selbst — die Richtlinie, der Bericht, das Gerichtsprotokoll |
| B | 0.85 | Der Anbieter sagt es an einer verantwortlichen Stelle |
| C | 0.70 | Ein kompetenter Dritter berichtet es |
| D | 0.35 | Alles, was dünner ist als das |
Getrennt davon hält jeder Wert fest, wie er dorthin gekommen ist. document bedeutet, dass eine Quellenangabe existiert, und nur solche dürfen als belegte Behauptungen dargestellt werden; derived wurde von einer Regel auf dieser Seite aus anderen Feldern berechnet; asserted ist ein Wert ohne irgendetwas dahinter, so wird ein Feld gespeichert, das niemand belegt hat.
Es gibt keine vierte Stufe: Ein Wert steht entweder auf einem Dokument, wurde aus Werten berechnet, die das tun, oder hat überhaupt nichts dahinter.
Die drei Kurven in Zahlen:
| Was altert | Zählt voll für | Halbiert sich alle | Nie unter |
|---|---|---|---|
| Ein Audit oder eine Prüfung | 12 Monate | 18 Monate | 5% |
| Eine Behauptung über laufende Praxis | 12 Monate | 60 Monate | 15% |
| Eine Transparenzangabe | 12 Monate | 60 Monate | 35% |
Die drei Kurven unterscheiden sich, weil sich das, was sie beschreiben, unterschiedlich schnell ändert. Die Momentaufnahme eines Prüfers veraltet am schnellsten: Sie sagt, was in einer Woche eines Jahres zutraf. Eine Behauptung über laufende Praxis und eine Transparenzangabe beschreiben einen fortbestehenden Zustand, deshalb halten sie ihren Wert deutlich länger — und ein Transparenzbericht behält von den dreien den höchsten Boden, denn ein Unternehmen, das seine Zahlen einmal veröffentlicht hat, hat damit etwas über sich selbst belegt, das ein ruhiges Jahr nicht rückgängig macht.
Eine völlig andere Form, denn sie beantwortet eine andere Art von Frage: eine additive gewichtete Summe, bei der sich Funktionen aufaddieren und eine fehlende ein Defizit ist. Dreizehn Felder, zwölf davon mit Gewicht, 34 Punkte zusammen. Das dreizehnte ist der Jahrespreis: veröffentlicht, weil ein Leser ihn will, mit null gewichtet, weil ein Rabatt für zwölf Monate Vorauszahlung ein kommerzielles Merkmal ist, keine Eigenschaft des Dienstes.
| Feld | Gewicht | Erneut geprüft |
|---|---|---|
| Funktioniert unter aktiver Zensur | 5 | 30 Tage |
| Plattformen mit Client | 4 | 30 Tage |
| Länder mit angebotenen Exit-Standorten | 4 | 90 Tage |
| Monatlicher Preis in USD, Monatsplan, wie berechnet | 3 | 30 Tage |
| Nutzbare kostenlose Stufe | 3 | 30 Tage |
| Angebotene Protokolle | 3 | 30 Tage |
| Abdeckung des Kill Switches | 3 | 30 Tage |
| Gleichzeitige Verbindungen | 2 | 30 Tage |
| Hürde für den Nutzungsbeginn | 2 | 30 Tage |
| P2P erlaubt | 2 | 30 Tage |
| Große Streaming-Dienste erreichbar | 2 | 30 Tage |
| Split-Tunneling verfügbar | 1 | 30 Tage |
| Jahresplanpreis in USD, erster Zeitraum wie berechnet | — | 30 Tage |
Das Ergebnis wird über die Felder mit einem Wert gemittelt, sodass ein Anbieter nicht für ein Feld bestraft wird, das für niemanden ausgefüllt wurde. Zensurumgehung trägt das meiste Gewicht, weil sie die eine Usability-Eigenschaft ist, die entscheidet, ob der Dienst dort überhaupt funktioniert, wo es am meisten zählt; Split-Tunneling trägt das wenigste, weil sein Fehlen nur eine Unannehmlichkeit ist.
Der Preis geht hier ein, nicht auf der Sicherheitsachse, und nur der Monatspreis. Jahrespreise werden überall auf der Seite angezeigt, aber nicht bewertet: Ein Rabatt für eine zwölfmonatige Vorabverpflichtung ist ein kommerzielles Merkmal, keine Eigenschaft des Dienstes.
Ein Score bei 50 % Vollständigkeit ist eine andere Aussage als derselbe Score bei 95 %, deshalb wird die Vollständigkeit mit dem Score mitgeliefert, und beide werden zusammen angezeigt. Sie ist der Anteil der Felder, die überhaupt belegt wurden.
Daneben trägt jeder Datensatz zentrale Lücken: Analystenprosa, die benennt, was nicht belegt wurde, was es klären würde, und die Vorbehalte, die die Zahl einschränken. Hier erfährt ein Leser, dass ein Prüfbericht Typ I statt Typ II ist, oder dass ein Flottenland aus einem Routing-Hinweis erschlossen wurde.
Ein hoher Score mit einer langen Liste von Lücken ist kein Widerspruch: Der Score sagt, was die Belege stützen, die Lücken sagen, wie viele Belege es gab. Keine der beiden Hälften wird verborgen, damit die andere besser wirkt.
Wo ein Anbieter nichts veröffentlicht, bleibt das Feld unbekannt. Es wird nie geschätzt, nie von einem Mitbewerber abgeleitet, nie still mit einer Marketingzahl gefüllt und in keine Richtung geraten — der Unwissen-Kanal ist die Stelle, an der das den Score kostet, und das ist der ehrliche Ort dafür. In einer Tabelle wird ein nicht belegter Wert als — dargestellt und steht in beiden Richtungen zuletzt: Aufsteigend nach Flottengröße zu sortieren belohnt einen Anbieter nicht dafür, es uns verweigert zu haben.
Zwei Achsen, zwei Grenzen, und sie liegen absichtlich auf unterschiedlicher Höhe. Bei der Sicherheit verweigert das Modell ein Urteil, wenn unter 30% der wesentlichen Felder überhaupt belegt wurden, oder wenn — unter 50% belegt und unter 35 Punkten — das dominante Risiko unser eigenes ignorance ist. Keines von beidem ist eine Aussage über den Anbieter: Es sagt, dass die Recherche nicht weit genug kam, um ihn einzuordnen, und 9 von 77 Datensätzen befinden sich darin.
Bei der Usability liegt die Grenze höher — der Score muss auf 50% des verfügbaren Gewichts beruhen, nicht auf 30% — und sie liegt höher, weil die beiden Achsen eine Leerstelle unterschiedlich bepreisen. Sicherheit bepreist Unwissen innerhalb des Scores, sodass ein dünner Datensatz schon trägt, was es kostet.
Usability hat keinen solchen Kanal: Ein nicht belegtes Merkmal verlässt einfach den Mittelwert, sodass ein Datensatz mit nur zwei bekannten Feldern ohne Grenze wie ein gemessener wirken würde. 15 von 77 Datensätzen veröffentlichen usability.state: no_data, und die Zahl, die sie tragen, ist ein unterer Grenzwert statt einer Messung — sie wird nie neben einem known-Wert gedruckt, als wären die beiden vergleichbar.
Sechs Grenzen, mit dem Modell veröffentlicht, statt später entdeckt zu werden. Sie sind Teil von methodology.json und begleiten jeden Score, den es hervorbringt, weshalb sie hier wortwörtlich abgedruckt sind statt umschrieben:
expires_at lesen.key_gaps muss dies angegeben werden.V15_assurance_strength unknown an, und jeder Anbieter mit Audit erhält die Marktnorm statt des Werts, den sein eigener Bericht nennt. Das Feld erfasst die erklärte Stärke, nicht die dahinterstehende Strenge — ein Engagement kann ein Urteil mit angemessener Sicherheit enthalten und dennoch eng gefasst sein; dafür sind V03_audit_subject und V04_scope_servers vorgesehen.Es gibt keine redaktionelle Anpassung. Eine frühere Version dieser Methode erlaubte es einem Redakteur, einen berechneten Score mit veröffentlichter Begründung um bis zu zwei Punkte zu verschieben; das wurde entfernt, weil die Aufschlüsselung auf jeder Anbieterseite die Rechnung inzwischen vollständig zeigt, und eine Zahl, die nicht aus dieser Rechnung stammt, würde die Aufschlüsselung zur Lüge machen.
Redaktionelles Urteil hat einen einzigen Ort, an dem es leben kann, und das ist nicht der Score: eine manuelle Qualitätsstufe, getrennt gehalten und nie eingemischt. Glaubt ein Redakteur, ein Datensatz sei falsch, führt der Weg über dieselbe Route, die jedem Leser offensteht — die Belege ändern und das Modell neu berechnen lassen.
Scores werden bei jedem Import und auf Anfrage neu berechnet. Da die Modellversion für jeden Datensatz gleichzeitig gilt, bewegt eine Änderung an ihr das ganze Register statt einer einzelnen Zeile — was auch so sein soll, und weshalb jede Änderung öffentlich protokolliert wird. Das Datum aktualisiert eines Anbieters bewegt sich nur, wenn sich etwas Wesentliches geändert hat; ein erneuter Import, der nichts ändert, lässt jedes Datum unangetastet, denn 77 Seiten mit dem heutigen Datum zu stempeln wäre ein Aktualitätssignal, das wir uns nicht verdient hätten.
Was es kaufen kann, ist eine Provision, wenn jemand über einen Link abonniert, und — sollte je eine bezahlte Platzierung verkauft werden — ein eigener gekennzeichneter Block oberhalb der Rangliste, außerhalb der Reihenfolge. Keines von beidem ist heute aktiv — kein Link trägt einen Affiliate-Parameter, und keine Platzierung wurde verkauft — und beides wird dort offengelegt, wo es erscheint, sowie in der Affiliate-Offenlegung. Da die Rangliste aus Belegen berechnet wird und die Belege daneben veröffentlicht sind, würde eine bessere Position zu kaufen bedeuten, den veröffentlichten Datensatz zu ändern — genau das, was jeder überprüfen kann.
R06_ignoranceUnwissenheitproductliest 5 Felder
Der Preis dessen, was niemand belegt hat
min(params.cap, params.slope x (1 - known_share)) x (1 - params.posture_relief x posture); posture = Summe der posture-Einträge, begrenzt auf 1.0
R07_silenceSchweigenthresholdliest 4 Felder
Schweigen im Verhältnis zur Exposition
greift nur, wenn P01 und P03 in {none_known, unknown} und P05 in {none, unknown, fresh_no_numbers} liegen; risk = min(params.cap, params.per_year x Betriebsjahre x Gewicht), wobei das Gewicht aus params.weight anhand der Expositionsstufe genommen wird. Bepreist wird nach Jahren, weil sich Schweigen ansammelt: fünfzehn Jahre ohne irgendetwas im Register sind nicht dieselbe Behauptung wie fünf, und eine pauschale Stufe hat das so angegeben. Ein Anbieter, dessen Startjahr unbekannt ist, wird hier gemäß R08 mit nichts bepreist
R08_unknown_pricing6 Kanäleconstraintjede Risiko- und Untergrenzentabelle im Schema
Unschuldsvermutung als arithmetische Regel
gilt nur für Feststellungen gegen den Anbieter und nie für ein unknown, das als veröffentlichte Kanalvorgeschichte geschrieben ist (C01 = prior_0.550), die eine Basisrate und keine Feststellung ist. Andernfalls gilt risk(unknown) <= 0.50 x risk(schlechtester bestätigter Wert) für dieses Feld und ist nie gleich diesem Wert; eine aufgedeckte Lüge steht immer über einer Leerstelle; auf der Lügenachse und bei jedem Ereignisfeld gilt risk(unknown) = 0.000 ohne Weiteres. Der volle Preis einer Leerstelle wird einmal in der Unkenntnis bezahlt, wo sie als unsere gekennzeichnet ist
R09_channel_combination8 Kanälenoisy_orliest 8 Felder
Wie aus den acht Kanälen eine Zahl wird
score = 100 x product(1 - min(0,90, r_c)) über die acht Kanäle; keine pauschale Unter- oder Obergrenze; S18 geht in die Integrität ein, nicht als neunter Kanal
R10_disclosure_decayOffenlegungdecaymaxliest 4 Felder
Auch nachteilige Ereignisse veralten
disclosure = max über P01, P02 und P03 aus dem jeweiligen eigenen Preis dieses Feldes nach dem Verfall — ein gewählter Weg zu seinem schlechtesten Zeitpunkt, niemals kumuliert, weil drei Codierungen einer Beschlagnahme eine Beschlagnahme sind; decay(plateau=12, half_life=60, floor=0.35) am Datum des P12_case_history-Eintrags für dieselbe Episode, abgeglichen danach, was der Eintrag als geschehen ausweist — P01 mit einer Beschlagnahme, P03 mit einem court_order, subpoena oder mandate_order — und niemals danach, wie sie ausging, da eine Episode, die nichts hervorbrachte, weiterhin die Episode ist, die die Feststellung datiert; P02 wird nach dem Ergebnis abgeglichen, weil dort das Ergebnis die Tatsache ist; ein nachteiliges Ereignis ohne einen solchen Eintrag behält seinen nicht verfallenen Wert; die Kurvenform für die Praxis hat eine höhere Untergrenze, hier 0.35 gegenüber 0.15 für Praxisbelege, weil eine nachgewiesene Offenlegung dauerhaft im Register bleibt
R11_evidence_voidingSpeicherdauerOffenlegungIntegritätgateliest 1 Feld
Ein Kontrollwechsel setzt zurück, was übertragen wird
Belege mit einem Datum vor M16 werden dem aktuellen Eigentümer nicht zugeordnet: Audits verlieren den Serienbonus, Offenlegungsereignisse fallen auf die R10-Untergrenze, Feststellungen zu verbundenen Anbietern werden überhaupt nicht übertragen
R12_report_plausibilityIntegritätUnwissenheitthresholdliest 5 Felder
Ein Transparenzbericht ist so viel wert wie sein Inhalt
P06 = zero_implausible, wenn P09 = 0 und P08 über params.min_requests liegt und der Datensatz belegt, dass ein personenbezogener Datensatz zur Offenlegung vorhanden ist — Schweregrad der Speicherdauer auf oder über params.min_retention. Die Beurteilung allein nach der Nutzerzahl bestrafte das Gegenteil dessen, wofür sie gedacht war: Ein Anbieter, der seine Zahlen veröffentlicht und keine gewährten Anfragen meldet, wurde als Lügner bezeichnet, während ein Anbieter, der nichts veröffentlicht, nichts bezahlte. Null gewährte Anfragen ist nur gegenüber einem Anbieter unglaubwürdig, dessen eigener Datensatz besagt, dass er etwas zu gewähren hat; gegenüber einer belegten no-logs-Feststellung ist dies die erwartete Antwort, und das Modell darf in einem Kanal nicht anzweifeln, was es in einem anderen angerechnet hat. Wenn dies auslöst, wird die Entlastung der Haltung aus P05 auf 0,00 gesetzt und die Integrität erhält den Weg in params.route
R13_derived_jurisdictionJurisdiktionnoisy_ormaxliest 6 Felder
Vorgabefelder werden abgeleitet, nicht bewertet
C10 = M06 in MANDATE_COUNTRIES; C11 = M11 in MANDATE_COUNTRIES; wenn M11 = M06 sind die beiden ein und derselbe Umstand, und die Jurisdiktion nimmt max(C10, C11, P11), niemals noisy-OR; die Flottenexposition geht als max(C09b, P04) ein, was ein vom Unternehmensweg getrennter Weg ist; ein handschriftlicher Override erfordert eine eigene Quelle und wird als solcher veröffentlicht
R14_disclosure_rateOffenlegungthresholdliest 2 Felder
Der Anteil der Anfragen, die Daten erbracht haben
rate = P09 / P08, sobald P08 params.min_requests erreicht; risk = params.weight x rate; wird neben der Rate veröffentlicht, weil die Vergleichbarkeit über Jurisdiktionen hinweg gering ist — eine Anfrage bedeutet in einem Land eine gerichtliche Anordnung und in einem anderen einen Brief
R15_free_tier_flagkein Kanalflagliest 2 Felder
Kostenlose Tarife werden irgendwie bezahlt
S22 = flagged, wenn jedes in params benannte Feld einen der dafür von params aufgeführten Werte trägt, andernfalls nicht; ändert den Score auf keiner der beiden Achsen — beide Eingaben sind bereits dort eingepreist, wo sie hingehören, und die Bepreisung ihrer Verbindung wäre genau die Mittelung, deren Ablehnung der Zweck der beiden Achsen ist
R16_opaque_at_mass_scaleIntegritätthresholdliest 2 Felder
Intransparenz ist schlimmer, je mehr Menschen sie abdeckt
X03 = undurchsichtig und M08 = Massenmaßstab -> params.at_mass_scale statt des eigenen Preises von X03 für undurchsichtig
R17_location_noticeJurisdiktionderivationliest 3 Felder
Wo ein Vorgabenland angeboten wird, was tatsächlich dort ist
C09 = U02-Länder, die in MANDATE_COUNTRIES vorkommen, abgeleitet und nie manuell eingetragen. C09 allein berechnet nichts und bleibt außerhalb des Vollständigkeitsnenners: Einen Exit in einem solchen Land anzubieten, sagt für sich genommen nichts aus, und er wird bezogen auf den Standort veröffentlicht, den ein Leser auswählt. Berechnet wird C09b, die eine Frage, die sich zu stellen lohnt, sobald C09 nicht leer ist — ob die Hardware tatsächlich unter dieser Vorgabe steht oder der Standort virtuell ist und die Hardware anderswo steht. C09b ist n/a, wenn C09 leer ist, und wird mit P04 per max kombiniert: Das Vorhandensein unter einer Vorgabe ist ein Umstand, der zweimal codiert wird
R18_audit_gateSpeicherdauergatemaxliest 2 Felder
Welchen Speicherdauer-Zweig ein Audit nimmt
V11 gibt die Speicherdauer an -> angegebener Zweig bei params.credence_stated; V01 = yes_* und V11 schweigt -> schweigender Zweig bei params.credence_silent x subject_factor (params.subject_default, wenn der Gegenstand nicht belegt ist), und kein Zweig überschreitet params.credence_max; andernfalls überhaupt keine schriftlichen Belege; der Schweregrad des gewählten Zweigs = max(C01_linkable_retention, V11_audit_findings), niemals noisy-OR — ein zweimal codierter Umstand darf sich nicht aufaddieren (wie bei R04)
R19_audit_decaySpeicherdauerdecayliest 1 Feld
Konfigurationen ändern sich
decay(params.decay) — kontinuierlich in Monaten, keine Knoten
R20_practice_agesSpeicherdauerdecaymaxliest 1 Feld
Jedes dokumentierte Ereignis hat sein eigenes Datum
Jedes Ereignis in P12 mit outcome = nothing_produced trägt decay(practice, seinem eigenen Datum) bei; der Praxiswert des Feldes ist das Maximum über seine Ereignisse, niemals ihre Summe; ersetzt die Lesart mit einem einzigen Datum von P01 und P03, die mehrere Beschlagnahmungen zu einer zusammenfasste
R21_circumvention_decayusabilitydecayliest 1 Feld
Sperrung bewegt sich schneller als Belege
U06 = belegt gilt als behauptet, sobald das eigene Stichtagsdatum des Feldes mehr als 12 Monate zurückliegt; der Datensatz datiert bereits jedes Feld, daher wird das Alter dort abgelesen, statt in den Wert geschrieben zu werden; das einzige Usability-Feld mit einem decay, weil es das einzige ist, dessen Gültigkeit abläuft
R22_completenessUnwissenheitconstraintdie Vollständigkeitsspalte jedes Feldes
Was der Nenner zählt
Substanzielle Felder mit completeness = yes; n/a verlässt den Nenner, unknown bleibt darin; Identitätsfelder, Modellausgaben, redundante Bezeichnungen und Usability-Felder sind alle ausgeschlossen — die Usability-Abdeckung wird separat als S16 ausgewiesen
R23_credence_defaultsSpeicherdauerconstraintjede Faktortabelle im Schema
Nicht gelesene Belege werden nicht angerechnet
das Gegenstück zu R08 und bewusst nicht symmetrisch dazu. factor(unknown) <= der schwächsten echten Belegebene in diesem Feld und strikt über jedem Wert, der eine Weigerung zur Offenlegung codiert (V06 unnamed, V02 none). Ein Audit, das niemand gelesen hat, zum Nennwert anzurechnen, ist der Weg, auf dem ein gekaufter Bericht in einen Score gewaschen wird; unsere eigene Unkenntnis so anzurechnen, als wäre sie die Weigerung des Anbieters, ist der entgegengesetzte Fehler. Nicht verifizierte Belege nicht anzurechnen ist keine Anschuldigung — der Anbieter fällt auf den vorherigen Wert zurück, die Basisrate des Marktes, nicht auf eine Feststellung
R24_retention_compositionSpeicherdauerproductmaxliest 14 Felder
Wie die Speicherdauer-Unterkanäle zu einer Zahl werden
Die vier Unterkanäle werden nicht gemittelt. credence.paper = der Zweig, den R18 auswählt (angegeben: credence_stated; schweigend: credence_silent x subject_factor) x source_credence des eigenen .conf dieses Zweigs x audit_decay (R19) x publication_factor x engagement_factor (Firma x Standard x Stärke der Zusicherung) x scope_factor beim angegebenen Zweig x series_bonus, wenn R11 die Serie bestehen lässt, begrenzt auf credence_max. credence.practice = max über datierte nothing_produced-Ereignisse aus practice_credence x practice_decay (R20). credence = min(credence_max, max(paper, practice) + secondary_weight x min(paper, practice)) — zwei Arten von Belegen sind stärker als eine, und keine Menge an Belegen erreicht Gewissheit. severity = max(C01, V11) gemäß R18 oder der vorherige Wert, wenn keines von beiden belegt ist. retention = credence x severity + (1 - credence) x max(severity, prior): Die Rückkehr zur Basisrate des Marktes erfolgt nur nach oben, daher behält ein nachteiliger Eingeständnis seinen Nennwert. retention.floor = max(retention, C12 floor:) zuletzt, weil ein auf den Tunnel begrenztes Audit eine Tatsache in der App nicht ausräumen kann
R25_integrity_compositionIntegritätnoisy_orliest 14 Felder
Wie die Integritätswege zu einer Zahl werden
Integrität = 1 - Produkt(1 - Route) über die Routen, die auslösen: die Lügenachse (R04), Transparenz des Eigentümers (R16 bei Massenskalierung), die Historie der Eigentümergruppe, Monetarisierung kombiniert mit dem, was die Gruppe verkauft (R03), Umgang mit Vorfällen, absolute Behauptungen, Lifetime-Push, gekaufte Abdeckung (R01), die Route für den unglaubwürdigen Bericht (R12), die Lücke in der Store-Erklärung (R28), disclosure_rate_weight x rate (R14) und Cluster-Ansteckung (R02, S18). Routen verstärken sich, weil sie separate Feststellungen sind; die Paare, die ein und derselbe Umstand sind, der zweimal codiert wurde, wurden bereits durch max innerhalb ihrer eigenen Regel zusammengefasst, weshalb hier nichts erneut zusammengefasst wird
R26_hygiene_compositionHygienecapped_sumliest 12 Felder
Wie die Hygienefelder zu einer Zahl werden
Hygiene = min(params.cap, Summe des Risikos: Preis jedes Feldes, das hierher geleitet wird). Der einzige additive Kanal auf der Sicherheitsachse: Dies sind kleine unabhängige Lecks, die sich anhäufen, nicht eine einzelne Feststellung, die ein Ergebnis bestimmt, und die Schwelle verhindert, dass eine Ansammlung geringfügiger Datenerhebung wie eine Offenlegung wirkt. Ein Listenfeld ist so viel wert wie sein günstigstes Element — eine anonyme Zahlungsmethode genügt — und fällt auf seinen eigenen unbekannten Preis zurück, wenn kein Element bepreist ist. C13_weakest_protocol ist hier ein abgeleiteter Summand (R32): Ein aktiver Legacy-Transport ist eine weitere beiläufig erhobene Information, keine Feststellung, die ein Ergebnis bestimmt
R27_report_concealmentIntegritätmaxliest 2 Felder
Schweigen über Offenlegung in einem Umfang, der Anfragen garantiert
Ein Anbieter auf mittlerer oder Massenskalierung erhält sicherlich Anfragen, daher ist ein belegtes Fehlen von Zahlen eine Tatsache über den Anbieter und keine Lücke in unserer Recherche: P05 = none berechnet 0,150, fresh_no_numbers 0,100 — ein veröffentlichter Bericht, der die eine maßgebliche Zahl auslässt, ist die schärfste Form davon — und stale 0,050. Löst nur bei einem belegten Wert aus; unknown berechnet hier nichts und wird bei Unwissenheit bepreist, wohin unser eigenes Nichtnachsehen gehört. Das Gegenstück zu R12: Das eine bepreist eine unglaubliche Zahl, dieses bepreist das Fehlen jeder Zahl
R28_store_declaration_gapIntegritätmaxliest 1 Feld
Die Erklärung des Stores im Vergleich zu der Richtlinie, die der Anbieter dem Store gegeben hat
Das obligatorische Store-Formular ist die eigene signierte Erklärung des Anbieters zu seiner App, daher muss alles, was das Formular erklärt, auch in der Richtlinie erscheinen, auf die der Anbieter selbst den Store verweist. Nur in eine Richtung lesen: Die App ist eine Teilmenge des Dienstes, daher lässt sich ein Formular, das weniger erklärt als die Richtlinie einräumt, durch den Geltungsbereich erklären und berechnet nichts, während eine Kategorie, die das Formular erklärt und die Richtlinie nie erwähnt, keine solche Entschuldigung hat. Bewertet danach, was die nicht offengelegte Kategorie enthüllt: Ein Identifikator oder eine Diagnose berechnet 0,150, Verhalten — App-Aktivität, installierte Apps, Standort oder irgendein Werbezweck — berechnet 0,300, und eine Erklärung genau der Erhebung, die eine No-Logs-Behauptung bestreitet, berechnet 0,450. Die beiden Stores definieren Erhebung unterschiedlich, daher ist ein Unterschied zwischen dem Apple-Formular und dem Google-Formular selbst keine Feststellung. Die größte Lücke über die Stores hinweg zählt
R29_session_stateSpeicherdauerconstraintliest 2 Felder
Die Verbindung ist kein Datensatz der Verbindung
C01 bewertet, womit ein Anbieter eine Person nach Ende der Sitzung noch verknüpfen kann. Ein Zustand, der nur besteht, während der Tunnel aktiv ist — eine Quell-IP, eine Konto-ID und ein Verbindungszeitpunkt, die der Server vorhält, um Pakete weiterzuleiten und das Geräte-Limit durchzusetzen — ist die Verbindung selbst, nicht ein Datensatz darüber, und ihn als Speicherdauer zu bepreisen, belastet einen Anbieter dafür, zu beschreiben, wie ein VPN funktioniert. Schlimmer noch: Es berechnet mehr als nichts zu sagen: Die Leerstelle in diesem Feld ist der Marktprior 0,550 und source_ip 0,750, daher kostete die ehrliche Beschreibung eines fünfzehnminütigen Puffers mehr als Schweigen. Die Ausnahme ist eng gefasst, und das muss sie sein, sonst wird sie zum Satz, den jeder Anbieter schreibt. Sie gilt nur, wenn das eigene Dokument des Anbieters ein Löschfenster nennt, das an das Ende der Sitzung gebunden und nicht länger als 24 Stunden ist — die kürzeste Kalendereinheit, länger als jeder Abbau, den ein Dienst benötigt, und kürzer als jede Rotation, die ein Log beibehält. Nicht erklärte Dauer ist Speicherdauer. Ein Kalenderzeitraum — 7 Tage, 30 Tage, ein Rotationszyklus — ist Speicherdauer, wie auch immer er formuliert ist, weil er die Sitzung absichtlich überdauert. Was der Anbieter über das Fenster hinaus aufbewahrt, ist weiterhin seine eigene Stufe wert, und die Ausnahme liest nur die Behauptung des Anbieters: Wo ein Audit die Daten als vorhanden festgestellt hat, setzt R18 die Feststellung bereits über die Behauptung
R30_usability_foundationusabilitythresholddie Gewichtsspalte jedes Usability-Feldes
Wie viel der Tabelle dem Usability-Score zugrunde liegt
Die Usability-Summe teilt durch das Gewicht, das sie auslesen konnte: Ein Feld, dessen Beleg niemand erbracht hat, bleibt im Nenner, statt mit null bewertet zu werden, denn Abdeckung ist keine Qualität. Der Preis dafür ist, dass der Score seine eigene Grundlage nicht sehen kann – eine Spalte, deren schwerstes Feld nicht ausgelesen wird, erzeugt dieselbe Zahlenform wie eine ausgefüllte. S21 = ausgelesenes Gewicht / aktives Gewicht, wobei aktiv jedes gewichtete Usability-Feld abzüglich derjenigen ist, die n/a sind. Unter usability_foundation_floor S20 = no_data: Eine Zahl, die auf weniger als der Hälfte der Tabelle beruht, zeigt, welche Felder ausgefüllt wurden, nicht, was das Produkt tut. Die Schwelle ist strenger als die der Sicherheit, weil diese Achse keinen Unwissenheitskanal hat – Sicherheit berechnet eine Leerstelle innerhalb des Scores, Usability berechnet sie nirgends. Der Score wird weiterhin unter no_data veröffentlicht, genau wie der Sicherheits-Score; eine zurückgehaltene Zahl kann nicht überprüft werden.
R32_protocol_floorHygienederivationmaxliest 1 Feld
Der schwächste noch angebotene Transport
C13_weakest_protocol ist das schlechteste Protokoll in U07_protocols nach der Risikoordnung in der eigenen Tabelle von C13, wird beim Laden abgeleitet und niemals von Hand ausgefüllt — dieselbe Form wie bei R17, das C09 aus U02 ableitet. Es geht als weiterer Summand in R26_hygiene_composition ein und unterliegt wie jeder dortige Term der Schwelle des Hygiene-Kanals. Auf einer Flotte, die nur moderne Transporte anbietet, lautet das Feld not_applicable statt eines Namens: Bei keiner Protokollbepreisung über 0,000 gibt es nichts Schwaches, auf das verwiesen werden könnte, und die Auswahl des am wenigsten schlechten der guten Protokolle nach der Tie-Break-Reihenfolge würde eine Feststellung veröffentlichen, die niemand getroffen hat. Das Feld wird für das günstige Segment mitgeführt, in dem PPTP und L2TP noch aktiv sind. Der Preis proprietary ist keine Gebühr dafür, dass ein Anbieter sein eigenes Protokoll schreibt — er ist der Preis dafür, nicht feststellen zu können, ob dieses Protokoll schwach ist, weshalb vendor_open nichts kostet: Ein Anbietertransport, dessen Quellcode veröffentlicht und unabhängig geprüft ist, kann bewertet werden, und nichts an der Bewertung besagt, dass er schwach ist. Ihn trotzdem zu berechnen, würde eine bereits beseitigte Unwissenheit bepreisen und die Veröffentlichung des Quellcodes teurer machen als sein Zurückhalten.
R33_exit_conductArchitekturmaxliest 2 Felder
Was der Exit mit dem von ihm transportierten Datenverkehr macht
Architektur = max(Preis von C00_architecture, Preis von C14_traffic_modification). Wer den Exit betreibt und was der Exit mit dem macht, was ihn durchläuft, ist eine Frage — ob sich das entfernte Ende des Tunnels auf der eigenen Seite befindet — und eine schlechte Antwort entscheidet sie, daher nimmt der Kanal den schlechteren der beiden Preise und niemals ihre Summe: Ein von Fremden betriebener Exit, der zugleich Ihre Header umschreibt, ist nicht doppelt so schlecht wie einer von beiden, sondern genau so schlecht. headers_injected (0,300) ist eine Sitzungskennung oder jeder andere Header, der dem durchlaufenden Datenverkehr hinzugefügt wird und jedem Ziel einen Namen für den Nutzer übergibt; content_injected (0,500) sind Skripte, Werbung oder anderes Material, das in Seiten eingefügt wird; tls_interception (0,750) ist das Öffnen verschlüsselter Sitzungen durch den Exit. none muss aus einem Dokument abgelesen werden, das dies ausdrücklich sagt, was nur wenige tun, daher trägt unknown denselben Marktprior wie C00 und der Unwissenheitskanal erledigt den Rest.
verdict: no_data sagt dies ausdrücklich. Vor dem Lesen eines der beiden Scores completeness auf beiden Achsen lesen.M14_inclusion_basis ist der einzige Datensatz darüber, warum jeder einzelne hier aufgeführt ist. Ein Anbieter, der im Katalog fehlt, ist zunächst ein Beleg für diese manuelle Auswahl und erst danach ein Beleg über den Anbieter, und nichts hier schätzt, wie viel dadurch fehlt.Drei
Das erkauft die Multiplikation. Sieben Kanäle können makellos sein, und der achte entscheidet trotzdem über den Datensatz — deshalb kann ein Anbieter eine disqualifizierende Tatsache nicht wegmitteln, indem er sonst überall ordentlich ist. Bewegen Sie den Regler.
Sieben Kanäle, die je 0.05 halten, und einer — der rote — den der Leser bewegt
Nichts wurde addiert, und nichts wurde gemittelt. Die sieben ordentlichen Kanäle bleiben ordentlich, selbst am äußersten Ende dieses Reglers — und sie können nicht zurückkaufen, was der achte genommen hat, was der ganze Grund dafür ist, dass die acht multipliziert werden.
Vier
Kein Kanal darf 0.9 überschreiten, denn Gewissheit ist aus dem Lesen von Dokumenten nicht zu haben. Und ein Befund fixiert einen Kanal von unten, wo kein Audit ihn erreichen kann.
Der Speicherdauer-Kanal
Ein makelloser Bericht leert das Glas. Was darin bleibt, ist der Identifikator, den der Anbieter hält:
Ein Bericht kann nur sagen, was schriftlich festgehalten wurde. Ein Identifikator sagt, dass der Nutzer benennbar ist, ganz gleich, ob etwas festgehalten wurde oder nicht, also sind die beiden keine Antworten auf dieselbe Frage — und das Modell weigert sich, die erste die zweite entscheiden zu lassen.
Fünf
Nichts geht ungeprüft in dieses Modell ein. Was der Bericht sagt und wer es sagt, sind zwei getrennte Leitern, und sie multiplizieren sich.
Was der Bericht sagtSpeicherdauer credence_stated gegen credence_silent
Wer es sagtdie vier Stufen von source_credence
Die beiden multiplizieren sich. Die vier Ebenen von wer es sagt, und was jede davon ist:
Acht
Jede Linie im Fächer ist eine Regel, die den Kanal nennt, dem sie zugeordnet ist. Alle sind weiter unten auf dieser Seite vollständig abgedruckt, denn eine Regel, die ein Leser nicht sehen kann, ist eine Regel, der er vertrauen muss.
Der linke Fächer ist jede Regel, die nach den Feldern greift, die sie liest; der rechte ist jede Regel, die den Kanal nennt, dem sie zugeordnet ist. Alle 32 sind weiter unten auf dieser Seite vollständig abgedruckt, denn eine Regel, die ein Leser nicht sehen kann, ist eine Regel, der er vertrauen muss. Die Maschine ist nicht groß, weil sie raffiniert ist — sie ist groß, weil es die Fragen sind, und ein Modell, das klein genug wäre, um es in einem Absatz zusammenzufassen, würde das Falsche zusammenfassen.
Eins
Sie sind hier im selben Verhältnis gezeichnet, in dem das Register sie zeichnet, denn dieses Verhältnis ist das Argument: Eine der beiden entscheidet die Reihenfolge, die andere beschreibt, was man dafür bekommt.
Sicherheit stellt 8 Fragen
Jedes der 67 Sicherheitsfelder speist mindestens eine davon. Die acht Antworten werden multipliziert.
Entscheidet die Reihenfolge
Beschreibt, was man bekommt
Usability gewichtet 12 Felder
Die Gewichte summieren sich zu 34, und die 12 werden als gewichteter Mittelwert addiert. Ein dreizehntes wird mit Gewicht null mitgeführt, sodass es veröffentlicht, aber von nichts bepreist wird.
Zwei
Nichts wird addiert. Jeder Kanal behält den Anteil des Datensatzes, den der vorherige übrig gelassen hat, sodass die acht eine Kette bilden statt einer Zahlenkolonne.
score = 100 × ∏ (1 − channel)
Die Form ist ein noisy-OR over independent risk channels. Hier durchgerechnet am Datensatz von Proton VPN, dem höchsten Score im Bestand — die Zahlen unten gehören zu diesem Datensatz, sie sind kein eigens erfundenes Beispiel.
3 Kanäle finden nichts und nehmen nichts. Die übrigen 5 nehmen jeweils einen kleinen Anteil, und die Anteile potenzieren sich, statt sich aufzuheben: 70 ist, was von den hundert übrig bleibt.
Sechs
Drei Arten von Belegen, drei Kurven, jede hält sich für ein Plateau konstant und fällt dann auf einen Boden, den sie nie wieder verlässt. Ein Audit ist etwas, das an einem Datum geschehen ist, kein Zustand, in dem sich ein Anbieter befindet.
An der Seite nach oben: das Gewicht, das der Beleg noch trägt — voll oben, sein eigener Boden unten
heute1 J.23456 J.
Jede Kurve hält sich für ein Plateau konstant und fällt dann auf einen Boden, den sie nie wieder verlässt — Belege veralten, sie werden nicht zur Lüge. Die Punkte sind die 30 erfassten Datensätze, die ein datiertes Audit veröffentlichen, auf der Audit-Kurve an ihrem eigenen Alter platziert. Ein Audit ist kein Zustand, in dem sich ein Anbieter befindet; es ist etwas, das an einem Datum geschehen ist.
Sieben
Der einzige Kanal, der eine Leerstelle bepreist. Es ist auch das Einzige auf dieser Seite, das ein Anbieter selbst bewegen kann — und der Weg, es zu bewegen, ist zu veröffentlichen, nicht zu bitten.
0.00dem Datensatz angelastet
min(0.6, 0.9 × (1 − established)) × (1 − 0.4 × posture)
Nicht wissen ist nicht neutral. Ein Anbieter, über den niemand etwas belegt hat, trägt reales Risiko, und das Modell bepreist es, statt eine höfliche Lücke zu lassen — was das zu der einen Zahl auf der ganzen Seite macht, die ein Anbieter selbst bewegt. Jeder andere Kanal wartet darauf, dass etwas gefunden wird; dieser wartet darauf, dass etwas veröffentlicht wird.
Neun
Jeder VPN hier bekommt eine Ganzzahl von hundert, und das Modell teilt diese Skala an 4 im Voraus veröffentlichten Grenzen. Überschreitet man eine Grenze, ändert sich das Wort. Nichts anderes bewegt sie — kein hübscheres Logo, kein Rabatt, keine Pressemitteilung.
Stufen sind Bereiche, festgelegt, bevor auch nur ein Datensatz bewertet wird, und veröffentlicht, damit Sie jede Grenzüberschreitung selbst prüfen können — die Zahl wird berechnet, das Wort wird von ihr abgelesen, und keines von beiden ist käuflich.