Méthodologie
Les scores sont le produit que ce site vend, donc le modèle est publié plutôt que décrit : cette page est générée à partir de methodology.json, le même fichier que lit le moteur de notation. La méthode ne peut pas dériver des chiffres, car il n'en existe qu'un seul exemplaire.
Aucun des deux scores n'est imprimé sans la classe de service, qui indique lequel des deux répond à la question que l'on se pose réellement.
Le rang n'est pas une valeur stockée. C'est une propriété d'une liste : chaque page classée ordonne les fournisseurs à partir des deux scores et indique sur quel axe elle a trié. Un classement de confidentialité privilégie la sécurité, un classement de streaming l'utilisabilité. Là où l'axe principal fait égalité, la liste se rabat sur l'autre score puis sur le nom, si bien que l'ordre est total et qu'aucune ligne ne partage son numéro avec une autre. Il n'existe aucun champ de rang que quiconque pourrait pousser.
Huit canaux de risque indépendants, chacun posant une question à la fiche publiée. Un canal répond par une probabilité comprise entre 0 et 1 — la probabilité que cette voie précise identifie l'utilisateur — et les huit sont multipliés, pas additionnés.
Aucun canal n'est pondéré selon l'importance qu'on lui prête. La pondération est dans ce que chaque canal trouve, et ne rien trouver laisse le score intact.
Chaque canal nomme les champs qu'il lit, et chaque page de fournisseur affiche les valeurs réellement lues, avec leurs sources et leurs dates. Le nombre ci-dessous indique combien des 67 champs de sécurité alimentent chacun ; un champ qui répond à plus d'une question est compté sous chacune, ce qui explique pourquoi la somme des nombres dépasse 67.
| Canal | La question posée | Champs |
|---|---|---|
| Conservation | Existe-t-il une fiche reliant le trafic à une personne, et qui l'a vérifiée ? | 13 |
| Juridiction | Quelqu'un peut-il contraindre à divulguer ce qui existe, sans que le fournisseur ait son mot à dire ? | 5 |
| Divulgation | A-t-il déjà remis quelque chose ? | 6 |
| Intégrité | A-t-il été pris à dire une chose et à en faire une autre ? | 17 |
| Architecture | Qui exploite la sortie, et que fait-elle au trafic ? | 2 |
| Hygiène | Quels éléments identifiants sont collectés au passage, et le client peut-il seulement être vérifié ? | 12 |
| Ignorance | Quelle part de cela n'a jamais été établie ? | 6 |
| Silence | Dix ans, des millions d'utilisateurs et rien dans la fiche ? | 5 |
Un canal ne lit pas un champ pour produire un nombre par lui-même. Entre les deux se trouvent les règles du modèle : 32 d'entre elles, chacune nommant ce qu'elle lit, le canal auquel elle répond et le type de calcul qu'elle utilise. Elles sont imprimées ici en entier, car une règle que le lecteur ne peut pas voir est une règle qu'il doit prendre sur la foi d'autrui.
Dix formes les couvrent toutes, et la forme est le résumé honnête de ce qu'une règle peut faire à un score :
capped_sum
Les termes s'accumulent jusqu'à un plafond qu'ils ne peuvent dépasser.
constraint
Un invariant que les tableaux doivent respecter. Il ne calcule aucun score et est vérifié par selftest.py plutôt qu'évalué pour chaque fournisseur.
decay
Une valeur mise à l'échelle selon l'ancienneté de la preuve qui la sous-tend.
derivation
Calcule un champ à partir d'autres champs, afin que le fait ne soit enregistré qu'une seule fois.
flag
Publie un marqueur pour le lecteur et ne modifie pas le score.
gate
Choisit la branche du modèle qui s'applique, plutôt que de calculer un nombre.
max
Le plus défavorable de plusieurs codages d'une même circonstance. Ils ne se cumulent pas : un événement consigné deux fois reste un seul événement.
noisy_or
Les constats indépendants se cumulent : 1 - produit(1 - chacun).
product
Les facteurs se multiplient, chacun amplifiant ce que les autres ont établi.
threshold
Un test portant sur les entrées qui détermine une tranche ou si la règle se déclenche.
Elles ne chiffrent pas toutes quelque chose parmi les 32. Quatre portent la forme constraint, et trois d'entre elles — R08, R22, R23 — ne s'évaluent contre aucun fournisseur : ce sont des invariants que les tables elles-mêmes doivent respecter, vérifiés à la construction du contrat plutôt qu'à la notation d'une fiche, ce qui explique pourquoi elles nomment une portée plutôt qu'un nombre de champs.
La quatrième, R29, lit bien une fiche, mais pour décider comment un champ peut être codé plutôt que ce que ce codage coûte. Une de plus, R15, est un flag : elle publie un marqueur pour le lecteur et ne fait bouger aucun nombre.
R01_bought_coverageintégritémaxlit 4 champs
Une couverture qui existe parce qu'elle a été payée
maximum entre : la paire (X08, X10) tarifée selon params.bought_coverage et — lorsque M10 mentionne review_directory — X11 tarifé selon params.review_directory ; 0,000 lorsque aucune des deux voies ne s'applique
R02_cluster_contagionintégritéproductlit 4 champs
Un risque importé d'une entité sœur surprise à mentir
min(params.cap, coupling x transfer x maximum sur les fiches sœurs s de R04_lie_group(s)) ; coupling est params.coupling lu sur M18_shared_infrastructure, avec recours à M17_brand_role lorsque l'infrastructure est séparée, inconnue ou ne nomme rien dans le tableau ; transfer : 1,0 si la date du constat >= maximum(M16 des deux), sinon 0,0 ; constat sans date -> 0,0 ; les fiches sœurs doivent être des fiches publiées ; ne lit jamais la propre contagion d'une fiche sœur
R03_owner_businessintégritémaxlit 1 champ
Une monétisation déduite de ce que le groupe vend par ailleurs
maximum sur les catégories M10 ; combiné à X05 par maximum, et non par noisy-OR (une circonstance, deux codages)
R04_lie_groupintégritémaxlit 2 champs
L'axe du mensonge
maximum(X01, X02) — jamais par noisy-OR : un même événement codé deux fois ne doit pas se cumuler jusqu'à CHANNEL_CAP ; S19 = caught_lying si >0, non examiné si les deux sont inconnus, irréprochable sinon
R05_exposuresilencethresholdlit 3 champs
Tranche d'exposition
pts = années d'activité évaluées selon params.years_points + M08 selon params.scale_points + params.stayed_logging_points lorsque P04=stayed_logging ; la tranche est le seuil le plus élevé dans params.bands que le total atteint, faible sinon ; le P10 écrit manuellement est ignoré
La tranche est lue sur le score publié plutôt que stockée à côté, si bien que le mot et le nombre ne peuvent pas diverger.
| Tranche | Score | Ce que cela signifie |
|---|---|---|
| Protection : élevée | 75–100 | Les principales promesses de confidentialité du fournisseur sont étayées par des preuves, et un audit indépendant les a vérifiées. |
| Protection : moyenne | 55–74 | L'essentiel de ce qui compte est confirmé et rien au dossier n'exclut le fournisseur, mais quelques lacunes subsistent. |
| Protection : sous la moyenne | 35–54 | Il y a plus de non confirmé que de confirmé. Rien de scandaleux, mais pas assez pour recommander. |
| Protection : faible | 15–34 | Ce que l'on sait joue surtout contre le fournisseur, ou presque rien à son sujet ne peut être confirmé. |
| Non recommandé | 0–14 | Écarté : le fournisseur a été pris à mentir sur ce qu'il fait, ou son application fait transiter le trafic d'autres personnes par les appareils de ses utilisateurs. |
La sécurité est un verrou, pas une quantité négociable. Sur un classement général, un score d'utilisabilité élevé ne peut pas hisser un fournisseur au-dessus d'un autre au meilleur score de sécurité. La liste trie d'abord par sécurité et ne fait appel à l'utilisabilité qu'entre fiches à égalité de score de sécurité.
Dans le registre tel qu'il se présente, un fournisseur notant 60 en utilisabilité se situe 25 places en dessous d'un fournisseur notant 55 — et c'est l'ordre correct, pas un bug.
Le modèle note l'état de la preuve publiée, pas notre opinion sur une entreprise. Trois choses concernant une valeur comptent donc autant que la valeur elle-même.
Chaque valeur porte ses sources, et chaque source porte un niveau. Les poids appartiennent au modèle :
| Niveau | Poids | Ce que c'est |
|---|---|---|
| A | 1.00 | L'artefact lui-même — la politique, le rapport, le dossier judiciaire |
| B | 0.85 | Le fournisseur qui l'affirme quelque part où il en répond |
| C | 0.70 | Un tiers compétent qui le rapporte |
| D | 0.35 | Tout ce qui est plus mince que cela |
Séparément, chaque valeur enregistre comment elle est arrivée là. document signifie qu'une citation existe, et seules celles-ci peuvent être rendues comme des affirmations sourcées ; derived a été calculée à partir d'autres champs par une règle de cette page ; asserted est une valeur sans rien derrière elle, ce qui est la façon dont est stocké un champ que personne n'a établi.
Il n'existe pas de quatrième grade : une valeur repose soit sur un document, soit a été calculée à partir de valeurs qui en ont un, soit n'a rien du tout derrière elle.
Les trois courbes en chiffres :
| Ce qui vieillit | Compte pleinement pendant | Diminue de moitié tous les | Jamais en dessous de |
|---|---|---|---|
| Un audit ou une inspection | 12 mois | 18 mois | 5% |
| Une déclaration sur une pratique en cours | 12 mois | 60 mois | 15% |
| Un chiffre de transparence | 12 mois | 60 mois | 35% |
Les trois courbes diffèrent parce que les choses qu'elles décrivent changent à des vitesses différentes. L'instantané d'un auditeur se périme le plus vite : il dit ce qui était vrai pendant une semaine d'une année donnée. Une déclaration sur une pratique en cours et un chiffre de transparence décrivent un état de fait durable, donc ils conservent leur valeur bien plus longtemps — et un rapport de transparence garde le plancher le plus haut des trois, car une entreprise qui a un jour publié ses chiffres a établi quelque chose sur elle-même qu'une année silencieuse ne défait pas.
Une forme entièrement différente, car elle répond à un autre type de question : une somme pondérée additive, où les fonctionnalités s'additionnent et où une fonctionnalité absente est un manque. Treize champs, dont douze portent un poids, pour 34 points au total. Le treizième est le prix annuel : publié parce qu'un lecteur le veut, pondéré à zéro parce qu'une remise pour payer douze mois à l'avance est une condition commerciale plutôt qu'une propriété du service.
| Champ | Poids | Revérifié |
|---|---|---|
| Fonctionne sous une censure active | 5 | 30 jours |
| Plateformes avec un client | 4 | 30 jours |
| Pays proposant des emplacements de sortie | 4 | 90 jours |
| Prix mensuel en USD, formule mensuelle, tel que facturé | 3 | 30 jours |
| Formule gratuite utilisable | 3 | 30 jours |
| Protocoles proposés | 3 | 30 jours |
| Couverture du kill switch | 3 | 30 jours |
| Connexions simultanées | 2 | 30 jours |
| Difficulté pour commencer à l'utiliser | 2 | 30 jours |
| P2P autorisé | 2 | 30 jours |
| Principaux services de streaming accessibles | 2 | 30 jours |
| Split tunneling disponible | 1 | 30 jours |
| Prix de la formule annuelle en USD, première période telle que facturée | — | 30 jours |
Le résultat est moyenné sur les champs qui portent une valeur, de sorte qu'un fournisseur n'est pas pénalisé pour un champ que personne n'a renseigné pour personne. Le contournement de la censure porte le plus grand poids, car c'est la seule propriété d'utilisabilité qui décide si le service fonctionne ne serait-ce qu'un peu là où cela compte le plus ; le split tunneling porte le plus faible, car son absence n'est qu'un inconvénient.
Le prix entre ici, pas sur l'axe de sécurité, et seul le tarif mensuel compte. Les tarifs annuels sont affichés partout sur le site mais ne sont pas notés : une remise pour s'engager douze mois à l'avance est une condition commerciale, pas une propriété du service.
Un score à 50 % de complétude n'est pas la même affirmation que le même score à 95 %, donc la complétude accompagne toujours le score et les deux sont affichés ensemble. C'est la part des champs qui ont été établis, quels qu'ils soient.
À ses côtés, chaque fiche porte des lacunes clés : un texte d'analyste nommant ce qui n'a pas été établi, ce qui permettrait de le trancher, et les réserves qui nuancent le nombre. C'est là qu'un lecteur apprend qu'un rapport d'assurance est de Type I plutôt que de Type II, ou qu'un pays du parc a été déduit d'une note de routage.
Un score élevé accompagné d'une longue liste de lacunes n'est pas une contradiction : le score dit ce que la preuve soutient, les lacunes disent combien de preuve il y avait. Aucune des deux moitiés n'est cachée pour faire mieux paraître l'autre.
Lorsqu'un fournisseur ne publie rien, le champ reste inconnu. Il n'est jamais estimé, jamais déduit d'un concurrent, jamais discrètement rempli par un chiffre marketing, et jamais deviné dans un sens ou dans l'autre — c'est le canal d'ignorance qui en fait coûter le prix au score, ce qui est l'endroit honnête pour que cela coûte quelque chose. Dans un tableau, une valeur non établie s'affiche comme — et se classe en dernier dans les deux sens : trier par taille de parc croissante ne récompense pas un fournisseur pour avoir refusé de nous le dire.
Deux axes, deux planchers, réglés délibérément à des hauteurs différentes. Sur la sécurité, le modèle retient son verdict lorsque moins de 30% des champs substantiels ont été établis, quels qu'ils soient, ou lorsque — sous 50% établi et sous 35 points — le risque dominant est notre propre ignorance. Ni l'un ni l'autre n'est une affirmation sur le fournisseur : cela dit que la recherche n'est pas allée assez loin pour le situer, et 9 des 77 fiches le sont.
Sur l'utilisabilité, le plancher est plus haut — le score doit reposer sur 50% du poids disponible, non 30% — et il est plus haut parce que les deux axes ne facturent pas un vide de la même façon. La sécurité chiffre l'ignorance à l'intérieur du score, donc une fiche mince en porte déjà le coût.
L'utilisabilité n'a pas de canal de ce genre : une fonctionnalité non établie sort simplement de la moyenne, donc sans plancher, une fiche avec deux champs connus se lirait comme une fiche mesurée. 15 des 77 fiches publient usability.state: no_data, et le nombre qu'elles portent est une borne inférieure plutôt qu'une mesure — il n'est jamais imprimé à côté d'un chiffre known comme si les deux étaient comparables.
Six limites, publiées avec le modèle plutôt que découvertes plus tard. Elles font partie de methodology.json et accompagnent chaque score qu'il produit, ce qui explique pourquoi elles sont imprimées ici mot pour mot plutôt que reformulées :
expires_at avant de citer un prix.key_gaps est l'endroit où elle doit le préciser.V15_assurance_strength indique unknown et chaque fournisseur audité se voit attribuer la norme du marché plutôt que ce qu'indique son propre rapport. Le champ consigne la force déclarée, et non la rigueur qui la sous-tend — un audit peut comporter une opinion à assurance raisonnable et rester étroit, ce qui est précisément le rôle de V03_audit_subject et de V04_scope_servers.Il n'y a aucun ajustement éditorial. Une version antérieure de cette méthode permettait à un éditeur de déplacer un score calculé jusqu'à deux points avec une raison publiée ; cela a été supprimé, car le détail sur chaque page de fournisseur montre désormais le calcul en entier, et un nombre qui ne sortirait pas de ce calcul ferait du détail un mensonge.
Le jugement éditorial a un seul endroit où vivre, et ce n'est pas le score : une tranche de qualité manuelle, gardée séparée et jamais mélangée. Si un éditeur pense qu'une fiche est erronée, la voie est la même que celle ouverte à tout lecteur — changer la preuve, et laisser le modèle recalculer.
Les scores sont recalculés à chaque import et à la demande. Comme la version du modèle s'applique à toutes les fiches à la fois, un changement qui lui est apporté fait bouger tout le registre plutôt qu'une seule ligne — ce qui est ce qui doit se produire, et pourquoi chaque changement est consigné publiquement. La date mise à jour d'un fournisseur ne bouge que lorsque quelque chose de significatif a changé ; un réimport qui ne change rien laisse chaque date intacte, car estampiller 77 pages de la date du jour serait un signal de fraîcheur que nous n'aurions pas mérité.
Ce qu'il peut acheter, c'est une commission lorsque quelqu'un s'abonne via un lien, et — si un placement payant est un jour vendu — un bloc étiqueté qui lui est propre au-dessus du classement, hors de l'ordre. Aucun des deux n'est activé aujourd'hui — aucun lien ne porte de paramètre d'affiliation et aucun placement n'a été vendu — et les deux sont divulgués là où ils apparaissent et dans la divulgation d'affiliation. Comme le classement est calculé à partir de la preuve et que la preuve est publiée à côté, acheter une meilleure position exigerait de changer la fiche publiée — ce qui est exactement ce que n'importe qui peut vérifier.
R06_ignoranceignoranceproductlit 5 champs
Le prix de ce que personne n'a établi
min(params.cap, params.slope x (1 - known_share)) x (1 - params.posture_relief x posture) ; posture = somme des entrées de posture, plafonnée à 1,0
R07_silencesilencethresholdlit 4 champs
Le silence proportionnel à l'exposition
s'applique uniquement lorsque P01 et P03 sont dans {none_known, unknown} et P05 dans {none, unknown, fresh_no_numbers} ; risque = min(params.cap, params.per_year x années d'activité x poids), le poids étant tiré de params.weight selon la tranche d'exposition. Tarifé à l'année parce que le silence s'accumule : quinze ans sans rien dans la fiche ne constituent pas la même affirmation que cinq, et une tranche uniforme l'indiquait. Un fournisseur dont l'année de lancement est inconnue ne facture rien ici, conformément à R08
R08_unknown_pricing6 canauxconstrainttoutes les tables de risques et de planchers du schéma
La présomption d'innocence comme règle arithmétique
s'applique uniquement aux constats visant le fournisseur, et jamais à un inconnu écrit comme un antécédent de canal publié (C01 = prior_0.550), qui est un taux de base et non un constat. Sinon, risque(inconnu) <= 0,50 x risque de la valeur confirmée la plus défavorable pour ce champ, et ne lui est jamais égal ; un mensonge établi prime toujours un champ vide ; sur l'axe du mensonge et pour chaque champ d'événement, risque(inconnu) = 0,000 sans exception. Le prix intégral d'un champ vide est payé une seule fois, dans l'ignorance, lorsqu'il est étiqueté comme le nôtre
R09_channel_combination8 canauxnoisy_orlit 8 champs
Comment les huit canaux deviennent un seul nombre
score = 100 x product(1 - min(0,90, r_c)) sur les huit canaux ; aucune borne inférieure ou supérieure générale ; S18 est pris en compte dans l'intégrité, et non comme un neuvième canal
R10_disclosure_decaydivulgationdecaymaxlit 4 champs
Les événements défavorables vieillissent aussi
divulgation = max sur P01, P02 et P03 du prix propre à ce champ après décroissance — une seule voie retenue à son pire niveau, jamais cumulée, car trois codages d'une même saisie constituent une seule saisie ; decay(plateau=12, half_life=60, floor=0,35) à la date de l'entrée P12_case_history pour le même épisode, déterminée par ce que l'entrée indique comme s'étant produit — P01 pour une saisie, P03 pour un court_order, une subpoena ou une mandate_order — et jamais par la manière dont l'épisode s'est terminé, puisqu'un épisode qui n'a rien produit reste l'épisode qui date le constat ; P02 est déterminé par le résultat, car le résultat en est ici le fait ; un événement défavorable sans entrée de ce type conserve sa valeur non décotée ; la forme de la courbe de la pratique, avec un plancher plus élevé, 0,35 ici contre 0,15 pour les preuves de pratique, car une divulgation établie reste définitivement inscrite dans la fiche
R11_evidence_voidingconservationdivulgationintégritégatelit 1 champ
Un changement de contrôle réinitialise ce qui est transféré
les preuves datées d'avant M16 ne se rattachent pas au propriétaire actuel : les audits perdent le bonus de série, les événements de divulgation tombent au plancher R10, les constats des entités apparentées ne sont pas transférés du tout
R12_report_plausibilityintégritéignorancethresholdlit 5 champs
Un rapport de transparence vaut ce que vaut son contenu
P06 = zero_implausible lorsque P09 = 0 et que P08 est supérieur à params.min_requests et que la fiche établit qu'une fiche par personne existe à divulguer — gravité de conservation au moins égale à params.min_retention. Le juger selon la seule échelle des utilisateurs sanctionnait l'exact opposé de sa raison d'être : un fournisseur qui publie ses chiffres et indique qu'aucune demande n'a été accordée était traité de menteur, tandis que celui qui ne publie rien ne payait rien. Zéro demande accordée n'est incroyable que face à un fournisseur dont la propre fiche indique qu'il détient quelque chose à accorder ; face à un constat établi d'absence de journaux, c'est la réponse attendue, et le modèle ne doit pas mettre en doute dans un canal ce qu'il a crédité dans un autre. Lorsqu'il se déclenche, l'allègement de posture de P05 est fixé à 0,00 et l'intégrité gagne la voie indiquée dans params.route
R13_derived_jurisdictionjuridictionnoisy_ormaxlit 6 champs
Les champs de mandat sont dérivés, non évalués
C10 = M06 dans MANDATE_COUNTRIES ; C11 = M11 dans MANDATE_COUNTRIES ; lorsque M11 = M06, les deux constituent une seule circonstance et la juridiction prend max(C10, C11, P11), jamais un OR inclusif ; l'exposition du parc entre comme max(C09b, P04), selon une voie distincte de celle de l'entreprise ; une dérogation manuscrite exige sa propre source et est publiée comme telle
R14_disclosure_ratedivulgationthresholdlit 2 champs
La part des demandes ayant produit des données
taux = P09 / P08 dès que P08 atteint params.min_requests ; risque = params.weight x taux ; publié à côté du taux parce que la comparabilité entre juridictions est faible — une demande signifie une ordonnance judiciaire dans un pays et une lettre dans un autre
R15_free_tier_flagaucun canalflaglit 2 champs
Les offres gratuites sont bien payées d'une manière ou d'une autre
S22 = flagged lorsque chaque champ nommé dans params porte l'une des valeurs que params énumère pour lui, et rien dans le cas contraire ; ne modifie le score sur aucun des deux axes — les deux entrées sont déjà tarifées là où elles doivent l'être, et tarifer leur conjonction reviendrait à faire la moyenne que les deux axes ont précisément pour objet de refuser
R16_opaque_at_mass_scaleintégritéthresholdlit 2 champs
L'opacité est pire à mesure qu'elle couvre davantage de personnes
X03 = opaque et M08 = mass -> params.at_mass_scale au lieu du propre prix de X03 pour opaque
R17_location_noticejuridictionderivationlit 3 champs
Lorsqu'un pays de mandat est proposé, ce qui s'y trouve réellement
C09 = pays U02 qui apparaissent dans MANDATE_COUNTRIES, dérivés et jamais remplis manuellement. C09 seul ne compte pour rien et reste en dehors du dénominateur de complétude : proposer une sortie dans un tel pays ne dit rien en soi, et c'est publié en fonction de l'emplacement choisi par le lecteur. Ce qui compte est C09b, la seule question qui mérite d'être posée une fois que C09 n'est pas vide — le matériel se trouve-t-il effectivement sous ce mandat, ou l'emplacement est-il virtuel, le matériel se trouvant ailleurs ? C09b vaut n/a lorsque C09 est vide et se combine avec P04 par max : la présence sous un mandat est une seule circonstance, codée deux fois
R18_audit_gateconservationgatemaxlit 2 champs
La branche de conservation suivie par un audit
V11 indique la conservation -> branche stated dans params.credence_stated ; V01 = yes_* et V11 silencieux -> branche silent dans params.credence_silent x subject_factor (params.subject_default lorsque le sujet n'est pas établi), et aucune branche ne dépasse params.credence_max ; sinon, aucune preuve documentaire ; la sévérité de la branche choisie = max(C01_linkable_retention, V11_audit_findings), jamais noisy-OR — une seule circonstance codée deux fois ne doit pas se cumuler (comme pour R04)
R19_audit_decayconservationdecaylit 1 champ
La configuration change sans cesse
decay(params.decay) — continu en mois, sans nœuds
R20_practice_agesconservationdecaymaxlit 1 champ
Chaque événement documenté porte sa propre date
chaque événement de P12 avec outcome = nothing_produced contribue à decay(practice, sa propre date) ; la valeur practice du champ est le max de ses événements, jamais leur somme ; remplace la lecture à date unique de P01 et P03, qui réduisait plusieurs saisies à une seule
R21_circumvention_decayusabilitydecaylit 1 champ
Le blocage progresse plus vite que les preuves
U06 = scores établis comme affirmé lorsque la date en date du champ a plus de 12 mois ; la fiche date déjà chaque champ, donc l'ancienneté est lue à cet endroit plutôt qu'inscrite dans la valeur ; le seul champ d'utilisabilité avec une décroissance, car c'est le seul dont la validité expire
R22_completenessignoranceconstraintla colonne de complétude de chaque champ
Ce que compte le dénominateur
champs substantiels avec completeness = yes ; n/a sort du dénominateur, unknown y reste ; les champs d'identité, les sorties du modèle, les libellés redondants et les champs d'utilisabilité sont tous exclus — la couverture d'utilisabilité est indiquée séparément par S16
R23_credence_defaultsconservationconstrainttoutes les tables de facteurs du schéma
Les preuves non lues ne sont pas prises en compte
le miroir de R08 et délibérément non symétrique avec celui-ci. factor(unknown) <= la tranche de preuve authentique la plus faible dans ce champ, et strictement supérieur à toute valeur codant un refus de divulgation (V06 unnamed, V02 none). Accorder à sa valeur nominale le crédit d'un audit que personne n'a lu est la manière dont un rapport acheté est blanchi en score ; facturer notre propre ignorance comme s'il s'agissait du refus du fournisseur est l'erreur inverse. Refuser d'accorder du crédit à une preuve non vérifiée n'est pas une accusation — le fournisseur revient à l'a priori, au taux de base du marché, et non à un constat
R24_retention_compositionconservationproductmaxlit 14 champs
Comment les sous-canaux de conservation deviennent un seul nombre
les quatre sous-canaux ne font pas de moyenne. credence.paper = la branche choisie par R18 (stated : credence_stated ; silent : credence_silent x subject_factor) x source_credence du propre .conf de cette branche x audit_decay (R19) x publication_factor x engagement_factor (solidité de l'entreprise x de la norme x de l'assurance) x scope_factor sur la branche stated x series_bonus lorsque R11 maintient la série, plafonné à credence_max. credence.practice = max sur les événements nothing_produced datés de practice_credence x practice_decay (R20). credence = min(credence_max, max(paper, practice) + secondary_weight x min(paper, practice)) — deux types de preuve valent mieux qu'un seul, et aucune quantité de preuve n'atteint la certitude. severity = max(C01, V11) selon R18, ou prior lorsque ni l'un ni l'autre n'est établi. retention = credence x severity + (1 - credence) x max(severity, prior) — la régression vers le taux de base du marché ne se fait que vers le haut, donc un aveu défavorable conserve sa valeur nominale. retention.floor = max(retention, C12 floor:) en dernier, car un audit limité au tunnel ne peut pas écarter un fait dans l'application
R25_integrity_compositionintégriténoisy_orlit 14 champs
Comment les voies de l'intégrité deviennent un seul nombre
intégrité = 1 - produit(1 - route) sur les routes qui s'activent : l'axe du mensonge (R04), la transparence du propriétaire (R16 à grande échelle), l'historique du groupe propriétaire, la monétisation combinée à ce que vend le groupe (R03), le traitement des incidents, les affirmations absolues, la promotion à vie, la couverture achetée (R01), la route des rapports invraisemblables (R12), la lacune des déclarations des boutiques (R28), disclosure_rate_weight x rate (R14) et la contagion par grappes (R02, S18). Les routes se composent parce qu'elles correspondent à des constats distincts ; les paires qui sont une même circonstance codée deux fois ont déjà été réduites par max dans leur propre règle, raison pour laquelle rien n'est à nouveau réduit ici
R26_hygiene_compositionhygiènecapped_sumlit 12 champs
Comment les champs d'hygiène deviennent un seul nombre
hygiène = min(params.cap, somme du risque : prix de chaque champ acheminé ici). L'unique canal additif de l'axe de sécurité : il s'agit de petites fuites indépendantes qui s'accumulent, et non d'un seul constat qui décide d'un résultat, et le plafond empêche qu'une accumulation de collectes mineures soit lue comme une divulgation. Un champ de liste vaut le prix de son membre le moins cher — un seul mode de paiement anonyme suffit — et revient à son propre prix inconnu lorsqu'aucun membre n'a de prix. C13_weakest_protocol est ici un terme dérivé (R32) : un transport ancien encore actif est une chose de plus collectée au passage, et non un constat qui décide d'un résultat
R27_report_concealmentintégritémaxlit 2 champs
Le silence sur la divulgation à une échelle garantissant des demandes
un fournisseur à moyenne ou grande échelle reçoit certainement des demandes, donc une absence établie de chiffres est un fait concernant le fournisseur plutôt qu'une lacune de notre recherche : P05 = none coûte 0,150, fresh_no_numbers 0,100 — un rapport publié qui omet le seul chiffre qui compte en est la forme la plus nette — et stale 0,050. Ne s'active que sur une valeur établie ; inconnu ne coûte rien ici et est tarifé dans l'ignorance, où se trouve le fait que nous n'avons pas nous-mêmes regardé. Le miroir de R12 : l'un attribue un prix à un chiffre incroyable, celui-ci attribue un prix à l'absence de tout chiffre
R28_store_declaration_gapintégritémaxlit 1 champ
La déclaration de la boutique face à la politique que le fournisseur a remise à la boutique
le formulaire obligatoire de la boutique est la déclaration signée du fournisseur lui-même concernant son application ; tout ce que le formulaire déclare doit donc aussi apparaître dans la politique vers laquelle le fournisseur renvoie lui-même la boutique. Lecture dans un seul sens : l'application est un sous-ensemble du service, donc un formulaire qui déclare moins que la politique l'admet s'explique par le périmètre et ne coûte rien, tandis qu'une catégorie que le formulaire déclare et que la politique ne mentionne jamais n'a aucune excuse de ce type. Évalué selon ce que révèle la catégorie non divulguée : un identifiant ou un diagnostic coûte 0,150, un comportement — activité de l'application, applications installées, localisation ou toute finalité publicitaire — coûte 0,300, et une déclaration de la collecte même qu'une affirmation d'absence de journaux nie coûte 0,450. Les deux boutiques définissent la collecte différemment, donc une différence entre le formulaire Apple et le formulaire Google n'est pas en soi un constat. La pire lacune entre les boutiques l'emporte
R29_session_stateconservationconstraintlit 2 champs
La connexion ne constitue pas une fiche de la connexion
C01 évalue ce qu'un fournisseur peut encore relier à une personne une fois la session terminée. Un état qui n'existe que pendant que le tunnel est actif — une adresse IP source, un identifiant de compte et un horodatage de connexion conservés afin que le serveur puisse acheminer les paquets et faire respecter la limite d'appareils — est la connexion elle-même, et non une fiche de celle-ci ; le tarifer comme conservation ferait payer à un fournisseur la description du fonctionnement d'un VPN. Pire encore, cela coûte plus cher que de ne rien dire : le blanc dans ce champ est le a priori du marché, à 0,550, et source_ip vaut 0,750 ; ainsi, la description honnête d'une conservation de quinze minutes coûtait plus que le silence. L'exception est étroite, et doit l'être, sinon elle devient la phrase que chaque fournisseur écrit. Elle s'applique uniquement lorsque le propre document du fournisseur indique une durée de suppression liée à la fin de la session et ne dépassant pas 24 heures — la plus courte unité calendaire, plus longue que tout démontage nécessaire au service et plus courte que toute rotation conservée par un journal. Une durée non déclarée est une conservation. Une période calendaire — 7 jours, 30 jours, un cycle de rotation — est une conservation quelle que soit sa formulation, car elle survit par conception à la session. Tout ce que le fournisseur conserve au-delà de la période d'exception vaut encore son propre niveau, et l'exception ne lit que l'affirmation du fournisseur : lorsqu'un audit a constaté la présence des données, R18 place déjà le constat au-dessus de l'affirmation
R30_usability_foundationusabilitythresholdla colonne de pondération de chaque champ d'utilisabilité
Quelle part du tableau sous-tend le score d'utilisabilité
la somme d'utilisabilité se divise par le poids qu'elle pouvait lire : un champ dont personne n'a établi la valeur reste dans le dénominateur au lieu de compter zéro, car la couverture n'est pas la qualité. Le coût est que le score ne peut pas voir ses propres fondations — une colonne dont le champ le plus lourd n'a pas été lu produit la même forme de nombre qu'une colonne remplie. S21 = poids lu / poids actif, où actif désigne tous les champs d'utilisabilité pondérés moins ceux qui sont n/a. Sous usability_foundation_floor S20 = no_data : un nombre reposant sur moins de la moitié du tableau indique quels champs ont été remplis, et non ce que fait le produit. Le seuil est plus strict que celui de la sécurité, car cet axe n'a pas de canal d'ignorance — la sécurité facture un blanc dans le score et l'utilisabilité ne le facture nulle part. Le score est tout de même publié sous no_data, exactement comme le score de sécurité ; un nombre non publié ne peut pas être vérifié.
R32_protocol_floorhygiènederivationmaxlit 1 champ
Le transport le plus faible encore proposé
C13_weakest_protocol est le pire protocole de U07_protocols selon l'ordre de risque du propre tableau de C13, dérivé au chargement et jamais renseigné manuellement — de même que R17 dérive C09 de U02. Il entre dans R26_hygiene_composition comme un terme supplémentaire et est limité par le plafond du canal d'hygiène comme tous les termes qui s'y trouvent. Sur un parc qui ne propose que des transports modernes, le champ est not_applicable plutôt qu'un nom : aucun prix de protocole supérieur à 0,000 n'étant proposé, il n'y a rien de faible à désigner, et choisir le moins bon des bons selon l'ordre de départage publierait un constat que personne n'a fait. Le champ est conservé pour le segment bon marché où PPTP et L2TP sont encore actifs. Le prix proprietary ne facture pas le fait qu'un fournisseur écrive son propre protocole — il facture l'impossibilité de savoir si ce protocole est faible, raison pour laquelle vendor_open ne coûte rien : un transport de fournisseur dont le code source est publié et fait l'objet d'un examen indépendant peut être évalué, et rien dans l'évaluation ne dit qu'il est faible. Le facturer malgré tout tarifarait une ignorance qui a été résolue et rendrait la publication du code source plus coûteuse que sa rétention.
R33_exit_conductarchitecturemaxlit 2 champs
Ce que la sortie fait au trafic qu'elle transporte
architecture = max(prix de C00_architecture, prix de C14_traffic_modification). Qui exploite la sortie et ce que la sortie fait à ce qui la traverse constituent une seule question — celle de savoir de votre côté se trouve l'extrémité distante du tunnel — et une seule mauvaise réponse suffit à décider ; le canal prend donc le plus élevé des deux prix, jamais leur somme : une sortie exploitée par des inconnus qui réécrit également vos en-têtes n'est pas deux fois plus mauvaise que l'une ou l'autre, elle est aussi mauvaise que celle-ci. headers_injected (0,300) est un identifiant de session ou tout autre en-tête ajouté au trafic qui le traverse, ce qui donne à chaque destination un nom pour l'utilisateur ; content_injected (0,500) désigne des scripts, de la publicité ou tout autre contenu placé dans les pages ; tls_interception (0,750) désigne la sortie qui ouvre les sessions chiffrées. none doit être déduit d'un document qui l'affirme, ce que peu font ; unknown porte donc le même a priori du marché que C00, et le canal d'ignorance fait le reste.
verdict: no_data l'énonce explicitement. Consultez completeness sur les deux axes avant de consulter l'un ou l'autre score.M14_inclusion_basis est la seule fiche indiquant pourquoi chacun y figure. L'absence d'un fournisseur du catalogue est d'abord une preuve de cette sélection manuelle, avant d'être une preuve concernant le fournisseur, et rien ici n'estime l'ampleur de ses omissions.Un
Ils sont dessinés ici dans la proportion où le registre les dessine, car cette proportion est l'argument : l'un des deux décide de l'ordre, et l'autre décrit ce que cela apporte.
La sécurité pose 8 questions
Chacun des 67 champs de sécurité alimente au moins l'une d'elles. Les huit réponses sont multipliées.
Décide de l'ordre
Décrit ce que l'on obtient
L'utilisabilité pondère 12 champs
Les poids totalisent 34, et les 12 sont additionnés en une moyenne pondérée. Un treizième est porté à poids nul, donc il est publié et n'est chiffré par rien.
Trois
C'est ce qu'achète la multiplication. Sept canaux peuvent être impeccables et le huitième règle quand même le sort de la fiche — c'est pourquoi un fournisseur ne peut pas faire disparaître par la moyenne un fait disqualifiant en étant soigné partout ailleurs. Déplacez le curseur.
Sept canaux à 0.05 chacun, et un — le rouge — que le lecteur déplace
Rien n'a été additionné et rien n'a été moyenné. Les sept canaux soignés restent soignés à l'autre bout de ce curseur — et ils ne peuvent pas racheter ce que le huitième a pris, ce qui est exactement la raison pour laquelle les huit sont multipliés.
Quatre
Aucun canal ne peut dépasser 0.9, parce que la certitude n'est pas accessible par la seule lecture de documents. Et un constat peut ancrer un canal par le bas, là où aucun audit ne peut l'atteindre.
Le canal de conservation
Un rapport irréprochable vide le verre. Ce qui y reste, c'est l'identifiant que détient le fournisseur :
Un rapport ne peut dire que ce qui a été écrit. Un identifiant dit que l'utilisateur est identifiable, que quelque chose ait été écrit ou non, si bien que les deux ne répondent pas à la même question — et le modèle refuse de laisser le premier trancher le second.
Cinq
Rien n'entre dans ce modèle pour argent comptant. Ce que dit le rapport et qui le dit sont deux échelles séparées, et elles se multiplient.
Ce que dit le rapportconservation credence_stated contre credence_silent
Qui le ditles quatre niveaux de source_credence
Les deux se multiplient. Les quatre niveaux de qui le dit, et ce que chacun représente :
Huit
Chaque ligne de l'éventail est une règle qui nomme le canal auquel elle répond. Toutes sont imprimées en entier plus bas sur cette page, car une règle que le lecteur ne peut pas voir est une règle prise sur la foi d'autrui.
L'éventail de gauche montre chaque règle qui va chercher les champs qu'elle lit ; celui de droite montre chaque règle qui nomme le canal auquel elle répond. Les 32 sont toutes imprimées en entier plus bas sur cette page, car une règle que le lecteur ne peut pas voir est une règle prise sur la foi d'autrui. La machine n'est pas grande parce qu'elle est ingénieuse — elle est grande parce que les questions le sont, et un modèle assez petit pour tenir en un paragraphe résumerait la mauvaise chose.
Deux
Rien n'est additionné. Chaque canal conserve la part de la fiche que le précédent a laissée debout, si bien que les huit forment une chaîne plutôt qu'une colonne de chiffres.
score = 100 × ∏ (1 − canal)
La forme est un noisy-OR over independent risk channels. Travaillée ici sur la fiche de Proton VPN, le score le plus élevé au dossier — les chiffres ci-dessous sont ceux de cette fiche, pas un exemple inventé pour l'occasion.
3 canaux ne trouvent rien et ne prennent rien. Les 5 autres prennent chacun une petite part, et les parts se composent plutôt que de s'annuler : 70 est ce qu'il reste des cent.
Sept
Le seul canal qui chiffre un vide. C'est aussi la seule chose sur ce site qu'un fournisseur peut faire bouger lui-même — et le moyen de la faire bouger, c'est de publier, pas de demander.
0.00imputé à la fiche
min(0.6, 0.9 × (1 − established)) × (1 − 0.4 × posture)
Ne pas savoir n'est pas neutre. Un fournisseur sur lequel rien n'a été établi porte un risque réel, et le modèle le chiffre plutôt que de laisser un vide poli — ce qui fait de ce nombre le seul, sur tout le site, qu'un fournisseur fait bouger lui-même. Chaque autre canal attend que quelque chose soit trouvé ; celui-ci attend que quelque chose soit publié.
Six
Trois types de preuve, trois courbes, chacune restant stable sur un plateau puis retombant vers un plancher qu'elle ne quitte plus jamais. Un audit est une chose qui s'est produite à une date, pas un état dans lequel se trouve un fournisseur.
Sur le côté, de bas en haut : le poids que porte encore la preuve — plein en haut, son propre plancher en bas
aujourd'hui1 an23456 ans
Chaque courbe reste stable sur un plateau puis retombe vers un plancher qu'elle ne quitte plus jamais — la preuve se périme, elle ne devient pas un mensonge. Les points sont les 30 fiches au dossier qui publient un audit daté, placées sur la courbe d'audit à leur propre âge. Un audit n'est pas un état dans lequel se trouve un fournisseur ; c'est une chose qui s'est produite à une date.
Neuf
Chaque VPN ici reçoit un entier sur cent, et le modèle découpe cette échelle à 4 planchers qu'il publie à l'avance. Franchir un plancher change le mot. Rien d'autre ne le fait bouger — ni un plus beau logo, ni une remise, ni un communiqué de presse.
Les tranches sont des plages, fixées avant qu'une seule fiche ne soit notée et publiées afin que chacun puisse vérifier lui-même chaque franchissement — le nombre est calculé, le mot en est déduit, et ni l'un ni l'autre ne s'achète.