Fair Poker Security Model

防攻击安全说明

本页从浏览器伪装、偷看牌、篡改牌局、账号窃取、中继攻击和串通风险等角度说明 Fair Poker 的防护边界。结论不是“任何系统绝对不可攻破”,而是把哪些攻击由密码学和可验证记录限制住,哪些风险仍需要用户保护设备讲清楚。

Release Facts

Official domain
https://fairpoker.app
Game client CID
bafybeihwpu3ajtggckcxmhals75ei7c3lrlblwsv7pghpktw3mpb2aryuq
Source package CID
bafkreicsvooemdq4odstyykyhykms662gwhcg5kpkjsn7lo4klnuprmtpa
Source fingerprint
sha256:761332c3107beaa960f020a965baff1a7e4bfad5cdc40e7307324e26eedebfec
Audit repository
https://github.com/Realfairpoker/fairpoker-core-audit

中文

核心结论:伪装浏览器、修改 User-Agent、改语言/时区/IP 等信息,最多影响脱敏安全提示;它不能让攻击者直接看到别人的底牌。底牌需要对应玩家浏览器中的逐牌解密钥,解密钥只在发给该玩家或公开摊牌时出现。

攻击面与防护边界

攻击手段系统防护剩余风险
伪装浏览器信息、游客身份或设备环境浏览器信息只作为脱敏安全信号,不参与发牌、解密或胜负判定。安全提示可能被干扰,因此不能把浏览器指纹当作作弊定罪依据。
试图偷看别人底牌每张牌需要多方逐步解密。私有发牌阶段的解密事件只发给对应玩家;公开牌只在翻牌、转牌、河牌或摊牌时释放。如果玩家设备被木马、远控、恶意插件控制,攻击者可能看到该玩家自己能看到的内容。
篡改下注、弃牌、发牌或结果事件由玩家签名,接收端校验签名、sender、payload hash;transcript 用 hash-chain 记录顺序和内容。恶意客户端可以拒绝继续、断线或发送无效事件,但不能无痕改写已记录事件。
中继服务器偷牌或控牌中继只转发消息,不持有牌堆明文、玩家私钥或完整解密钥。中继仍可断开、延迟或拒绝服务,所以牌局需要超时弃牌和 transcript 复验。
账号密码或本地密钥被盗账号密钥库用用户密码派生密钥加密;登录服务保存密码哈希和加密后的 vault。弱密码、被钓鱼、浏览器本地存储被恶意软件读取,仍可能造成账号和身份恢复风险。
玩家串通共享屏幕或主动报牌系统可显示脱敏的伙牌安全信号和同网络/同设备线索。现实串通无法仅靠密码学完全消除,只能通过安全提示、桌面提示和人工判断降低风险。
替换前端代码或假冒官网正式牌局客户端以 IPFS CID 固定;公开源码包有 SHA256 和 source fingerprint,可与官网、GitHub 证据比对。用户需要确认域名和 CID,避免进入假链接或被浏览器扩展篡改页面。

用户建议

English

Key conclusion: spoofing User-Agent, browser language, timezone, IP, or guest identity can affect sanitized safety signals, but it does not grant access to other players' private cards. Hole cards require per-card decryption keys held by the relevant player browser and are only released to that player or during public reveal.

AttackDefenseRemaining risk
Browser or device spoofingEnvironment data is only a sanitized safety signal; it does not drive dealing, decryption, or results.Safety indicators can be noisy and are not a standalone cheating verdict.
Trying to see another player's cardsCards are revealed through multi-step per-card decryption. Private decrypt events are sent only to the intended player until public reveal.Malware, remote control, or malicious extensions on a player's device can see what that player can see.
Tampering with actions or resultsPlayer events are signed and checked against sender, payload hash, and public-key-derived peer id. Transcript hash-chain preserves order.A malicious client can disconnect or send invalid events, but cannot silently rewrite accepted history.
Relay server attackThe relay forwards messages and does not hold plaintext deck state, player private keys, or full decrypt keys.The relay can still delay, disconnect, or deny service; timeout and transcript replay reduce the damage.
Account or local key theftVaults are encrypted with a password-derived key; the login service stores password hashes and encrypted vaults.Weak passwords, phishing, malware, or local storage theft remain user-device risks.
Collusion outside the protocolSanitized safety signals can flag nearby network/device patterns.Players can still share screens or communicate outside the game; cryptography cannot fully prevent that.
Fake frontend or code replacementThe table client is fixed by IPFS CID; source archive SHA256 and source fingerprint can be compared with GitHub evidence.Users must verify domain/CID and avoid hostile browser extensions.

日本語

User-Agent、言語、時区、IP、ゲスト身份を偽装しても、風控信号に影響するだけで、他人のホールカードを見る権限にはなりません。カードの公開には該当プレイヤーのブラウザが持つ逐牌復号鍵が必要です。

Español

Suplantar navegador, idioma, zona horaria, IP o identidad de invitado solo puede afectar señales de riesgo; no permite ver cartas privadas de otros jugadores. Las cartas privadas requieren claves de descifrado por carta en el navegador correspondiente.

Français

Usurper le navigateur, la langue, le fuseau horaire, l’IP ou l’identité invitée peut influencer les signaux de risque, mais ne donne pas accès aux cartes privées des autres joueurs. Les cartes privées nécessitent les clés de déchiffrement par carte du navigateur concerné.

Deutsch

Browser, Sprache, Zeitzone, IP oder Gastidentität zu fälschen kann Risikosignale beeinflussen, verschafft aber keinen Zugriff auf private Karten anderer Spieler. Private Karten benötigen kartenspezifische Entschlüsselungsschlüssel im jeweiligen Browser.

联系我们 / Contact

问题反馈、Bug 提交、安全线索、授权与合规事务,请联系 support@fairpoker.app