跳到正文

联网与安全 ​

本页逐项说明 Campfire 的联网行为:连接的对象、发生的时机、传输的内容、能否关闭,以及每一项为何不会危及你的电脑与账号。文中的每一条陈述均可在源代码中核对,对应位置见自行核对。

设计原则 ​

以下原则由代码保证,并作为长期不变的设计约束:

  1. 远程内容无法控制本机。 Campfire 自服务器接收的仅为文字、版本号与列表数据,例如公告、更新说明与联机大厅的房间列表。这些内容无法更改任何设置,无法执行命令,无法指定本机路径,亦无法启动任何程序。
  2. 仅有两类程序会被下载并运行,且均经校验。
    • Campfire 自身的更新:须带有 Campfire 发布密钥的数字签名,且文件的实际版本须与声明一致,否则不予安装。
    • 联机组件:每个文件的 SHA-256 均固定于程序之中,任何一个字节的差异都会导致其被丢弃。
  3. 无需管理员权限。 Campfire 以普通权限运行,不安装驱动,不创建虚拟网卡,不写入系统目录。
  4. 不触及账号。 Campfire 不读取、不保存、不上传任何登录凭据。
  5. 启动器修复完全离线。 修复仅在本机修改文件,不联网,也不为启动器添加任何联网行为。
  6. 源码构建不连接 Campfire 服务。 服务地址仅在正式版构建时写入。自行构建的版本不具备更新检查、公告、使用统计、联机大厅与在线地图,邀请码联机不受影响。

联网清单 ​

功能连接对象时机能否关闭
检查更新与公告Campfire 服务启动时,此后每隔数小时可在 设置 › 常规 中关闭
下载更新Campfire 服务提供的 HTTPS 地址发现新版本时随更新检查一并关闭
使用统计Campfire 服务授权后每日至多一次默认不发送,授权后亦可随时关闭
联机大厅Campfire 服务浏览大厅或公开房间时不使用即不连接
在线地图Campfire 服务、CurseForge 文件服务器浏览地图或下载地图时不使用即不连接
下载联机组件Gitee、GitHub 及两个 GitHub 下载加速服务首次联机时不使用多人联机即不下载
多人联机联机节点与房间内的其他玩家房间开启期间节点、中转与隐藏 IP 均可配置
皮肤头像Mojang 官方服务房间内有正版玩家时可在 联机设置 › 隐私 中关闭
游戏内组件的名称映射表Mojang 官方服务及其国内镜像房主运行需要映射表的游戏版本时不使用多人联机即不下载
打开网页系统浏览器仅在点击链接或按钮时—

除上表所列之外,Campfire 不存在其他联网行为。

Campfire 服务 ​

正式版连接 https://api.mccampfire.top,该服务由 Cloudflare 提供服务与安全防护。所有请求均经 HTTPS 加密,并以 Campfire/版本号 作为客户端标识。

更新与公告 ​

  • 发送:不发送任何内容,也不携带任何设备标识,所有用户获得的内容完全相同。
  • 接收:最新版本号、更新说明、下载地址与签名地址、公告文字,以及检查间隔。
  • 约束:
    • 公告仅能呈现文字。公告按钮只能打开 https:// 网页,且仅在用户点击时打开,不能启动程序。
    • 检查间隔被限定在 1 小时至 7 天之间。
    • 服务器无法借此更改任何设置。

更新 ​

  1. 下载新版本及其签名后,Campfire 以程序内置的公钥校验签名,并核对文件的实际版本号,以防旧版本被冒充为新版本。
  2. 校验通过后,Campfire 征得同意,再替换程序文件并重新启动。
  3. 未通过校验的文件将被直接丢弃。

因此,即便服务器或下载镜像为他人所控制,也无法令 Campfire 安装经过篡改的程序。

关于必须更新

当旧版本存在严重问题时,服务器可将新版本标记为必须更新。只有在签名正确的新版本确已下载并通过校验后,Campfire 才会要求更新后再继续使用。若下载或校验失败,Campfire 照常可用,任何服务器消息都无法阻止它启动。

使用统计 ​

仅在授权后发送,每日至多一次,内容仅限:

  • 随机生成的统计标识,与联机所用的设备标识无关,可随时重置;
  • 软件版本、Windows 版本与系统位数、.NET Framework 版本及界面语言;
  • 各项功能的使用次数,例如创建房间与加入房间。

统计不包含 IP 地址、游戏账号与 UUID、玩家名称、房间与邀请码、文件路径、硬件序列号及网卡地址。服务器依据网络来源推断大致的国家与省份,不保存 IP 地址。详见更新与隐私。

联机大厅 ​

  • 浏览:仅获取房间列表,不发送任何内容。
  • 公开房间:发送房间名称、标签、房主名称、游戏版本、世界名称、人数、邀请码、可选的房间密码与图标,以及一个大厅专用的随机编号。该编号与设备标识、统计标识均无关联。房间开启期间每隔数分钟更新一次人数,房间关闭时随即撤下。
  • 加入:向服务器领取该房间的邀请码;设有密码的房间会一并提交所输入的密码。
  • 举报:仅发送房间编号与举报原因。

服务器仅保存房间密码的摘要,不保存原文;IP 地址仅以加盐摘要的形式保存,用于限制发布频率与处理违规。大致省份可选择不予显示。取消公开或关闭房间后,房间即刻自大厅移除,相关记录于一天内删除。

大厅中的房间由其他玩家公开。加入陌生玩家的房间,与加入任何陌生的 Minecraft 服务器无异。

在线地图 ​

  • 浏览与搜索时,Campfire 服务代为查询 CurseForge 的地图目录,仅传送搜索词与筛选条件。
  • 地图文件与预览图仅从 CurseForge 的文件服务器 forgecdn.net 下载,其余地址一概拒绝,下载完成后以 SHA-1 校验。
  • 地图属于存档数据而非程序。导入时仅解压至所选的存档文件夹,任何试图写入该文件夹之外的文件都会被拒绝。

多人联机 ​

联机组件 ​

多人联机以开源网络组件 EasyTier 2.6.4 为基础。首次联机时,Campfire 依次探测以下地址,并选择最快者下载:

  • gitee.com、github.com:官方发布页;
  • ghfast.top、gh-proxy.com:GitHub 下载加速服务。

三个文件的 SHA-256 均写定于 Campfire 的代码之中,与官方发布完全一致。无论来自哪一地址,内容不符的文件既不会被保存,也不会被运行。加速服务仅能获知你的 IP 地址以及你正在下载该组件。

联机组件以普通权限运行,不安装虚拟网卡,也不为其他网络转发流量。房主仅向房间开放游戏与房间服务所需的端口,加入者不开放任何端口,房间内的玩家无法借此访问你电脑上的其他服务。

节点与连接 ​

  • 联机节点用于帮助同一房间的玩家互相发现。内置公共节点为 public.easytier.top、public2.easytier.cn 与 etnode.zkitefly.eu.org,亦可仅使用自行填写的节点。
  • Campfire 优先在玩家之间建立直连。为此,联机组件可能向公共 STUN 服务探测网络类型,并可能通过 UPnP 在路由器上建立临时的端口映射。
  • 仅在允许中转且直连失败时,游戏数据才会经中转节点传输。
  • 游戏数据在玩家之间加密传输,节点无法读取。节点运营方可获知你的 IP 地址与连接时间。
  • 开启 隐藏我的 IP 地址 后,全部数据均经中转节点传输,其他玩家无从得知你的 IP 地址,但中转节点的运营方仍可获知。

相关选项见网络与隐私。

房间内共享的信息 ​

房间内的其他玩家可以看到你的玩家名称、设备标识,以及你是否使用正版账号;在开启相应选项时,还可看到你的正版 UUID 与 Campfire 版本。设备标识为随机生成,可随时重置。

皮肤头像 ​

开启 显示正版玩家的皮肤头像 后,Campfire 以玩家的 UUID 向 sessionserver.mojang.com 查询皮肤,并从 textures.minecraft.net 下载皮肤图片。关闭后不再查询。

游戏内组件 ​

Campfire 会将一个小型 Java 组件附加到房主本机正在运行的游戏,用于自动对局域网开放、呈现欢迎消息与 Tab 信息。该组件不联网,不启动程序,也不加载任何外部代码。

1.14.4 至 1.21.11 的游戏需要 Mojang 官方的名称映射表。映射表自 piston-data.mojang.com 下载,无法连接时改由国内镜像 bmclapi2.bangbang93.com 提供,并以游戏自带版本文件中的 SHA-1 校验。映射表仅为名称对照文本,并非程序。

风险边界 ​

即便某一方为他人所控制,其影响亦有明确的边界:

受控的一方影响范围无法做到
Campfire 服务显示不实的公告文字与网页链接;篡改大厅列表与地图目录;提示一个无法安装的“更新”安装或运行任何程序;更改你的设置;读取你的文件
下载镜像或加速服务致使下载失败替换更新或联机组件,签名与哈希校验会将其拒绝
联机节点或中转节点获知你的 IP 地址与连接时间;致使连接失败读取游戏数据;访问房主游戏以外的端口
房间内的其他玩家与常规 Minecraft 联机相同的游戏内互动访问你电脑上的其他服务与文件

隐私选项 ​

  • 仅使用启动器修复:修复功能本身不联网;亦可在 设置 › 常规 中关闭 启动时检查更新与公告。
  • 不发送使用统计:在首次询问时拒绝,或在 设置 › 常规 中关闭 发送匿名使用统计。
  • 联机时保护隐私:在联机设置中开启 隐藏我的 IP 地址,关闭 显示正版玩家的皮肤头像 与 向其他玩家显示软件版本,或仅使用自建节点。
  • 完全不连接 Campfire 服务:从源代码构建。

自行核对 ​

内容源代码
服务地址仅在正式版构建时写入OnlineService.cs 中的 ReadServiceUrl
服务器下发内容的全部字段OnlineService.cs 中的 Parse
更新的签名与版本校验Updater.cs 中的 Verify
必须更新仅在签名正确时生效OnlineFlow.cs 中的 OfferUpdateAsync
使用统计的内容与授权检查Telemetry.cs
联机组件的固定哈希与下载地址EasyTierPackage.cs
联机组件的配置EasyTierConfig.cs
内置公共节点LinkSettings.cs
联机大厅发送的字段LobbyClient.cs
地图下载地址限制与解压保护Worlds 中的 MapImages.cs、MapDownloader.cs、WorldImporter.cs
游戏内 Java 组件java-agent

如发现与本页不符的行为,或任何安全问题,请提交至 Issues。

Campfire 是开源免费的社区项目,与 Mojang Studios 及微软均无关联。
在线服务由 Cloudflare 提供服务与安全防护。