方法论
我们如何把证据变成一个数字
本站每一个数值都可追溯到被引用的第一手来源,产出它的算术就公开在本页上。这里没有任何结论要求你去信任;它是一次计算,邀请你来核对。
预览版,尚未经人工核实。
当前语料库由机器采集并核对引用。尚无人逐条将每段摘录与其来源核对过,因此本站没有任何内容被作为推荐呈现。本页描述的是将会管理已评测语料库的方法;方法在今天已是真实的,人工核实则尚未完成。
1 · 无证据,不评分
一个事实只有在至少带有一条指向第一手来源的引用时,隐私政策、审计报告、法庭文书、源代码,或我们自己进行的测量,才能进入评分规则。这不是一条我们努力遵循的指导原则;一个证据列表为空的事实从一开始就无法被构造出来,因此它根本无法进入规则。
我们从不引用竞争对手的评测网站。一旦有人尝试,域名封锁列表就会让我们的构建失败。部分地依据其他排名网站对 VPN 的评价来给它们排名,会把它们的结论洗进我们的结论,而它们的结论正是我们存在的意义所要取代的东西。
我们尚未溯源的事实,通过留空该字段来表示,绝不用零,也绝不用空引用。这一区别对下一条规则至关重要。
独立安全评估
我们如何审计一款 VPN 应用
这套流程记录了 SingLinkVPN v2.5 以及后续 VPN 客户端审计所使用的动手安全评估方法。每一项结果都受版本、平台、测试环境和时间约束,只适用于报告中明确记录的构建版本与测试矩阵。
基本原则
- 执行前冻结产品版本、平台构建、测试日期、账户状态、网络和测试环境。
- 每个用例记录预期结果、实际结果、原始证据、严重性、复测状态和审核人。
- “未复现”只是一项有边界的观察,绝不等于漏洞不可能存在。
- 同时测试正常使用、故障状态、对抗请求、网络切换和修复后的回归。
- 厂商声明与我们的实测严格分开;声明不能代替测试结果。
- 范围排除项和无法公开的证据必须与结果同时披露。
最低测试矩阵
具体矩阵因产品而异。跨平台审计应覆盖每一个可能形成不同安全路径的正式客户端。
| 领域 | 必须覆盖 |
|---|---|
| 平台 | 在产品提供时覆盖 iOS、Android、macOS、Windows、Linux、TV 客户端和 Web 用户面板 |
| 网络 | Wi-Fi、移动数据、IPv4、IPv6、断网、网络切换,以及条件允许时的受限网络 |
| 连接状态 | 首次连接、重连、切换服务器、休眠唤醒、重启应用、异常终止、退出登录、会话过期 |
| 隧道模式 | 全隧道、分流隧道、应用和域名排除、自动路由 |
| 账户 | 有效、无效、过期、已退出、跨设备及未授权请求状态 |
| 构建 | 生产构建标识和修复后构建;除非明确测试,否则不以调试版行为代替正式版 |
执行流程
1.范围、授权与资产冻结
先确定允许测试的内容,并保存所有被测对象的精确身份。
- 书面授权与交战规则
- 产品、版本与构建哈希
- 平台与设备清单
- 域名、API、用户面板和排除资产
- 测试账户与数据处理规则
- 开始时间与截止时间
2.基线与攻击面建模
绘制连接生命周期与信任边界,让测试触及真实数据路径,而不只是界面状态。
- 认证与令牌流程
- VPN 启动和配置流程
- API 端点与请求参数
- 本地存储与诊断路径
- 路由、DNS、隧道适配器和重连行为
- 高权限操作与系统权限
3.连接生命周期与安全失败
确认界面连接状态与操作系统真实路由一致,并验证故障不会静默暴露流量。
- 连接、断开、重连和切换服务器
- 本地网络中断
- 服务端断开
- 应用重启和进程异常终止
- 设备休眠与唤醒
- Wi-Fi 与移动网络切换
- 恢复后不存在陈旧路由
4.DNS、IP、IPv6、WebRTC 与路由泄漏
在隧道建立、切换和中断前后观察公网地址、解析器、ICE 候选项、接口和路由表。
- IPv4 源地址暴露
- IPv6 绕过或回退
- DNS 解析器泄漏
- WebRTC 候选地址暴露
- 本地网络信息暴露
- 断线后的持续裸连流量
- 分流隧道边界执行
5.账户、会话与授权控制
使用真实的无效及对抗请求尝试跨越认证边界和账户边界。
- 未登录访问受保护端点
- 无效和过期令牌
- 退出后的令牌失效
- 修改参数与对象标识符
- 跨账户读取订阅或数据
- 跨设备会话状态
- 用户面板权限
6.内部连接与配置保护
测试提供服务器、路由、证书、凭据或内部连接材料的 API,同时避免公开敏感数据。
- 非标准客户端请求
- 缺失、畸形、重放和过期授权
- 高频及自动化探测
- 请求签名和时效控制
- 限速与异常阻断
- 内部配置与公网端点隔离
7.本地数据与正式构建卫生
检查客户端在设备上留下什么,以及正式版诊断信息会泄露什么。
- 凭据与令牌存储
- 操作系统安全存储
- 日志、崩溃报告和临时文件
- 敏感配置残留
- 调试端点和正式版详细日志
- 不必要的网络活动或账户数据
8.跨平台安全一致性
逐个平台比较控制措施,因为一个更弱的客户端就可能成为绕过整体设计的实际入口。
- 等价的泄漏保护
- 等价的会话失效
- 等价的安全失败行为
- 平台特有权限
- 版本漂移与缺失控制
- 用户面板与客户端策略一致性
9.发现验证与严重性判定
复现疑似问题、排除环境误报、记录利用前提,并在提交报告前确定影响等级。
- 独立复现
- 最小化验证样例
- 受影响版本与平台
- 利用前提
- 用户与基础设施影响
- 在不泄露秘密的前提下保存证据
10.修复与回归复测
只有确认修复构建、原问题不再复现,且相邻控制仍正常时,发现才能关闭。
- 修复内容与构建身份
- 重新执行原始验证
- 负面与边界用例
- 跨平台回归
- 检查新攻击面
- 关闭、部分修复、接受风险或未解决状态
严重性模型
严重性综合考虑影响、可利用性、前置条件、受影响范围和修复紧迫性。
- 严重(Critical)
- 大规模敏感数据暴露、远程代码执行、核心系统控制、完整认证绕过或大范围 VPN 流量暴露。
- 高危(High)
- 账户接管、重要隐私数据泄露、未授权受保护访问、流量绕过或核心安全控制失效。
- 中危(Medium)
- 需要特定条件,或影响有限平台、功能、数据集、网络或设备环境的实质风险。
- 低危(Low)
- 直接影响较低,但削弱纵深防御或暴露非核心技术信息。
- 信息(Informational)
- 不构成可直接利用的漏洞,但属于明确的安全工程或加固改进项。
100 分审计分数如何计算
报告必须公布计分清单和每项权重。每个项目从其规定分值开始;可复现且尚未解决的发现,按照报告预先声明的规则扣除相关控制项分数。
修复项只有在记录完整的复测通过后才能恢复分数。未测试、受阻或超出范围的项目不能静默获得满分,必须从分母排除或单独列出。
因此 100/100 表示被测构建在所有范围内计分项上通过;它不是终身保证、不是“绝无漏洞”的声明,也不是提供商综合评分。
证据与可复现性要求
- 用例编号、负责人、日期、平台、设备、系统版本、应用版本和环境
- 预期结果、实际结果、可复现状态与严重性理由
- 在适合公开时保存脱敏截图、数据包或路由观察、请求轨迹、日志或哈希
- 构建矩阵、计分工作表、变更记录、修复记录和审核签名
- 区分公开证据、脱敏安全证据和保密材料
- 为公开材料保存内容哈希或不可变归档,使后续编辑可被发现
必须披露的限制
- 测试只能抽样观察行为,不能证明所有漏洞都不存在。
- 结果不会自动延伸到后续版本、未测试平台、不同后端、网络、账户或配置。
- 黑盒和灰盒测试无法验证未开放的源代码路径或服务器内部运行情况。
- 无日志声明需要运营或基础设施证据;单纯客户端泄漏测试无法证明无日志。
- 若签名报告、工作表、构建矩阵或原始证据不可公开,独立复现能力会降低,必须明确披露。
Reproducible VPN leak-test protocols
The versioned kill-switch, DNS, WebRTC, and IPv6 specifications define the test matrix, evidence requirements, pass conditions, limitations, and blank raw-data format. Protocol pages are not results: no provider receives a pass until completed evidence and reviewer records are published.
Read the protocols and download blank result templates2 · 我们研究上的空缺,绝不会拉低评分
如果我们对某个维度没有证据,该维度就会被排除在加权平均之外,而不是计为零分。为我们研究上的漏洞去惩罚一家提供商,会悄悄奖励那些我们恰好研究得最少的提供商,而这正是整个模型着力规避的失败。
这条规则的代价是,评分并非自动可比,而我们把这代价摊在明处。每个维度都带有一个覆盖率,它有多少规则有证据可供评判,每个评分都带有一个已评分权重:一个基于方法论 72% 评出的 8.4 分,意味着有 28% 没有数据,页面就在数字旁如实说明。一个完全没有事实的维度,既不得 0 分也不得 10 分,而是什么都不得,并被剔除。
3 · 一个数字从何而来,会随这个数字一同呈现
我们不运行全球速度矩阵,也不运行流媒体解锁测试套件。把厂商自报的吞吐量数字,与我们逐行读过的隐私政策印成同样的字体,恰恰会抹去那个最要紧的区别,因此每一个评分都被标注了它是如何溯源的。共有四种:
- 实测
- 这个数字由我们自己产出,并且可以复现。
- 有据可查
- 读取自第一手文档:隐私政策、审计报告或源代码。
- 厂商声称
- 由提供商单方面声明。我们尚未独立核实,因此评分相应设有上限。
- 无证据
- 我们没有找到任何可供评分的依据。该维度会被排除在加权平均之外,而非计为零分。
数据来源还设定一个上限。因为我们引用他人的速度测试而非自己运行,速度封顶为 8.5。因为流媒体声明来自营销页面,而非我们运行的测试,流媒体封顶为 6.5。一个我们没有赚得认证资格的数字,无法达到我们标度的顶端,而这个封顶是被展示出来的,不是被隐藏起来的。
4 · 十一个维度,以及它们如何加权
一家提供商在十一个维度上被评分。默认权重方案把最大的权重分配给我们能够独立核实的部分,把最小的权重分配给我们只能从厂商页面上读到的部分。速度和流媒体,在这里都属于厂商地盘,所占的权重大约只有行业标准给它们的一半;这份权重转移到了隐私、透明度和服务器真实性上。
| 维度 | 溯源方式 | 上限 | 默认 | Top10VPN 对等 |
|---|---|---|---|---|
隐私 日志政策、司法管辖区、所有权,读取自政策和文书。 | 有据可查 | 10 | 24% | 20% |
安全 协议、断网保护、加密算法选择,读取自文档和源代码。 | 有据可查 | 10 | 18% | 15% |
透明度 已公布的审计、警示(canary)、开源客户端。 | 有据可查 | 10 | 12% | , |
服务器真实性 用我们自己的探测网络进行延迟三角定位,这是我们将会拥有的数据集。 | 实测 | 10 | 10% | , |
服务器位置 数量是提供商的声称;服务器真实性才是核对它的东西。 | 厂商声称 | 10 | 7% | 10% |
流媒体 一个罗列了世上每一项服务的营销页面。我们不运行任何解锁测试套件。 | 厂商声称 | ≤ 6.5 | 7% | 15% |
速度 第三方测量。不是我们产出的,因此无法登顶标度。 | 有据可查 | ≤ 8.5 | 7% | 15% |
设备兼容性 平台和应用页面,直接读取。 | 有据可查 | 10 | 5% | 5% |
易用性 安装设置和界面,读取自文档和商店页面。 | 有据可查 | 10 | 4% | 10% |
种子下载 端口转发、断网保护行为、P2P 政策,来自文档。 | 有据可查 | 10 | 3% | 5% |
附加功能 分流隧道、多重跳转、广告拦截,有或无,依文档而定。 | 有据可查 | 10 | 3% | 5% |
“溯源方式”一列列出的是每个维度在本方法下的典型来源,而非它在今天这份未评测语料库中的实际数据来源。服务器真实性、速度和易用性是我们打算亲自测量或读取的维度,但当前语料库对它们尚无任何证据,因此按规则 2,它们今天不带任何评分。
“Top10VPN 对等”一列,是把一家竞争对手已公布的权重方案套用在我们的证据之上。它把透明度和服务器真实性归零,那套方法论没有对应的类别,而它是我们特意附上的:它让你能把“是数据有分歧”与“是方法论有分歧”区分开。如果你怀疑我们为了得出某个结论而调过权重,就用他们的权重跑一遍数字,看看什么发生了变化。
同一批证据还在三种使用场景权重方案下发布。它们不是引流页面:同样的数据,不同的问题。
- Default (evidence-weighted)
- Weights are allocated toward what this site independently verifies. Speed and streaming are vendor-claimed rather than measured here, so they carry roughly half the weight the industry standard assigns them; that weight moves to privacy, transparency and server authenticity, all of which are checked against primary documents or our own probe network.
- Top10VPN parity
- Reproduces the published Top10VPN category weighting (privacy 20%, streaming 15%, speed 15%, security 15%, server locations 10%, user experience 10%, torrenting 5%, device compatibility 5%, additional features 5%). Transparency and server authenticity are zeroed because that methodology has no equivalent category. Published so readers can see exactly how much of a ranking is the data and how much is the weighting.
- Privacy first
- For readers whose threat model is surveillance rather than geo-blocking. Logging policy, jurisdiction, published audits and open-source clients dominate; streaming access is worth nothing.
- Streaming
- For readers unblocking geo-restricted catalogues. Note the honesty cost: this site does not run its own unblock suite, so the streaming dimension is capped at a vendor-claimed ceiling and this ranking is the least independently grounded one we publish.
- Torrenting
- For P2P users. Weighted toward what actually exposes a seeder: the logging policy, a kill switch that fails closed, and whether port forwarding exists at all. Mirrors Top10VPN's observation that torrenting quality is mostly a function of the privacy and security categories.
与 Top10VPN 有一处刻意的分歧:他们的种子下载评分会把他们自家的隐私和安全评分再折回该维度里。我们不这样,种子下载权重方案已经给隐私和安全各自分配了顶层权重,再折进去一次会把同一批证据算两遍。
5 · 一个维度的规则组合起来的三种方式
不知道一个数字背后的算术,你就无法核对它,因此产出某个维度用的是三种模型中的哪一种,会公布在它旁边。
| 模型 | 规则如何组合 | 用于 |
|---|---|---|
| 绝对式 | 从一个基准出发,加上带符号的扣分或加分。扣分维度的基准为 10,累加得分之处基准为 0。 | 安全、服务器真实性、速度、流媒体、易用性 |
| 归一化式 | 赚得的分数除以可得的分数,但只在那些有证据的规则上计算。这正是规则 2 会悄悄抬高的那个比值,见下方的局限。 | 透明度、服务器位置、设备兼容性、种子下载、附加功能 |
| 复合式 | 若干具名子分数的加权平均,每个子分数本身或为绝对式或为归一化式,在有得分的各部分上计算。 | 隐私 |
在我们的数据里,一个评分绝不是一个孤零零的数字:它带着自己的模型、自己的上限,以及每一条被触发的规则、连同其带符号的贡献和背后的证据 id。一套独立的、单独实现的程序,仅凭一个评测页面所展示的内容重建出每一个头条分数;如果哪一处拆解不完整,这项检查就会让构建失败。这意味着你可以对某一条具体的扣分表示不同意,而不是对某种感觉表示不同意。
6 · 隐私是复合式的,且无法被赎回
隐私是唯一的复合式维度,拆分为五个子分数:记录了哪些数据(60%)、事件历史(20%)、司法管辖区(10%)、可信度(5%),以及增强隐私的功能(5%)。把加分限制在这些小部分里是有意为之的。在一个平坦的模型下,接受现金的加分可能抵消保留支付记录的扣分,而在 10 处的钳制会掩盖其余部分,一家记录日志的提供商和一家不记录的,可能印出同样的满分。
加权平均仍然是可补偿的,而隐私是一项安全属性,因此该维度被封顶在它自身的日志子分数加 1.5。任何有利司法管辖区、透明所有权和支付方式的组合,都无法把隐私评分抬高到超过日志政策本身赚得分数之上 1.5 分。一家无限期保留浏览记录的提供商,无法靠一个巴拿马注册地为自己赎身。
7 · 公布的数字是一个区间,经过钳制
把评分在我们恰好测量过的那些维度上重新归一化,是一种站得住脚的估计,但它不是一个界限,而旧式的评测网站却把估计当作界限来发布。因此每一个评分都带有三个数字,而不是一个。
提供商已经切实赚得的分数,把一切未测量的都算作零。它只会在证据被移除时下降,正是这一点让它可以安全地用来排名。
公布的数值:归一化后的均值,被压低到永远不会超过上限。当两者不同时,页面会告诉你归一化多给了该提供商多少分,以及多了多少。
若每一个未测量的维度都达到其自身封顶时,它所能达到的最高值,因此未测量的流媒体按 6.5 计入,而非 10。这是一个有保证的最高值,而不是一次猜测。
按比例绘出的横条,是我们尚不知晓之事的诚实宽度。这是 Proton VPN 在默认权重方案下的情况:
可证明介于 6.88 与 8.88 之间
阴影带从下限延伸到上限;刻度是头条分数。这个钳制不是装饰:在流媒体权重方案下,一家我们没有任何流媒体证据的提供商,归一化到 9.9,而其可证明的最高值是 8.45。头条把它压在最高值处,而不是印出一个没有提供商能达到的数字。
8 · 排名靠支配关系,而非靠头条分数
证据所许可的唯一排序是这样的:当 A 的保证下限超过 B 在我们尚未测量的一切上的最佳可能上限时,A 排在 B 之上,即 floor(A) > potential(B)。这是一个严格偏序,而关键在于,它不会被我们碰巧研究提供商的先后顺序所左右。一个归一化后的平均值说不出这一点。
在今天这份五家提供商的语料库上,支配关系是空的。最高的下限,Proton VPN 的 6.88,远低于最低的上限,SingLink VPN 的 7.55,因此没有任何一家超过另一家。这是一个诚实的五方并列,本站如实说明,而不是制造出一个一二三名。随着我们自己的测量逐步补齐,真正的区分才会显现。
这里没有决胜规则。早先的一个版本按我们对每家提供商研究得多深来给并列的双方排序;它已被删除,因为那会抬举我们了解得最少的那些提供商。
9 · 这套办法解决不了什么,如实说明
支配关系并不能防止隐瞒,我们也不会声称它能。删除一整个维度的证据会拉低隐瞒者的下限,永远无法为它赢得一个排名。但删除一个归一化维度内部的一条引用,却可能抬高该维度的数值,因为除数只计入那些有证据的规则。这是不变量 2 应用在一个比值上:一旦分母随之缩小,“缺失的数据绝不拉低评分”就变成了“缺失的数据抬高一个比值”。
这在当前语料库中真实存在,不是假设。有一家提供商在附加功能上以 33% 的覆盖率拿到了满分 10:我们溯源了它拥有的那三项功能,而对于本会展示它所缺功能的那些页面,它的网站向我们的抓取程序返回了一个错误。一个缺失的页面买来了一个满分。
要堵上这个漏洞,需要让结构能够区分“我们查看过,而提供商没有披露”,一个评了分的负面项,引用向那个未提及它的页面,与“我们没有查看过”,也就是我们自己的空缺。在此之前,区间和支配规则堵住了归一化这条通道;它们让引用这条通道仍然敞开。完整性门槛只在发布时才堵上它:一家提供商只有在其已评分维度没有任何未评估空缺时才可发布,因此删除一条引用来虚增评分会重新打开一个空缺,从而阻止页面发布。这是一道针对我们发布什么的门槛,而不是算术本身的一项属性,我们宁愿如实说明,也不愿夸大这份保证。
核对我们的算术
上面的一切都跑在同一件产物上。渲染这些页面所用的那份语料库就提供下载,因此你可以重新推导任何头条分数、在不同权重方案下运行它,或找出任何一条扣分背后确切的引用。
我们不收取任何联盟佣金,不出售广告,与任何 VPN 提供商都没有商业关系。