密码门

密码门

PasswordGate — 为Minecraft服务器提供安全的密码保护,在玩家进入游戏世界之前激活。

PasswordGate

PasswordGate 为 Minecraft 服务器增加了一个额外的密码认证步骤。认证在登录握手期间进行,早于玩家进入世界、接收区块、出现在玩家列表或获取正常游戏数据之前。

该模组必须同时安装在客户端和服务器上。

没有安装 PasswordGate 或协议版本不兼容的客户端会在登录时被拒绝,而不是被允许进入世界后再被踢出。

功能特性

  • 在 ServerPlayer 创建和进入世界之前进行认证
  • 安全的首次加入密码注册
  • SRP-6a 挑战-响应认证
  • 使用 SHA-256 的 3072 位 RFC 5054 SRP 组
  • 每次连接都生成全新的加密挑战
  • 不传输明文密码或可重用的密码哈希
  • 可配置的认证超时时间
  • 基于 UUID 和 IP 的暴力破解防护
  • 临时锁定和控制失败延迟
  • 防止格式错误、重复、乱序和重放的包
  • 原子化、带版本管理的服务器凭据存储
  • 支持专用服务器和集成服务器

客户端密码界面

当本地没有可用的凭据时,PasswordGate 会在正常标题界面之前显示一个单独的密码界面。

生成的密码使用 SecureRandom,包含大小写字母、数字和安全特殊字符,在默认设置下至少提供 128 位熵。

密码存储

在 Windows 上,PasswordGate 会生成一个随机的 AES-256 密钥,使用 Windows DPAPI 保护该密钥,并使用 AES-256-GCM 加密密码,每次写入都使用新的随机数。文件以原子方式替换。

没有明文、仅 Base64、XOR、静态哈希或硬编码密钥的回退方案。如果安全的操作系统级存储不可用,PasswordGate 会再次要求输入密码,而不是以不安全的方式静默存储。

服务器从不存储原始密码。它只存储玩家的 UUID、一个唯一的盐值、一个 SRP 验证器、格式版本和认证时间戳。

首次登录和离线模式

当 allowFirstJoinRegistration=true 时,没有现有记录的玩家可以在登录握手期间注册密码,并且必须在加入前立即完成完整的 SRP 证明。

注册在离线模式下也能工作,但离线模式的 UUID 可能被冒充。PasswordGate 会记录一条警告,因为该模组无法使 Minecraft 离线身份具有加密真实性。请尽可能使用在线模式。

管理员命令

/passwordgate status <player>
/passwordgate reset <player>
/passwordgate revoke <player>
/passwordgate authorize <player>
/passwordgate reload

命令永远不会显示密码、盐值、验证器或认证证明。

配置

服务器配置包括认证超时、首次加入注册、最小密码长度、生成密码长度、失败尝试次数限制、失败时间窗口和临时锁定持续时间。

安全说明

PasswordGate 保护登录过程免受明文密码泄露、被动重放、可重用证明重放、格式错误的包以及基本在线暴力破解尝试的攻击。它无法保护被入侵的客户端计算机、被盗用的已解锁操作系统账户,或验证 Minecraft 离线模式提供的身份。

PasswordGate 旨在作为额外的认证层,不能替代正常的 Minecraft 账户安全、服务器访问控制、备份或操作系统安全。