防攻击安全说明
本页从浏览器伪装、偷看牌、篡改牌局、账号窃取、中继攻击和串通风险等角度说明 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,避免进入假链接或被浏览器扩展篡改页面。 |
用户建议
- 只从
fairpoker.app或官网公布的 IPFS CID 进入牌桌。 - 重要牌局优先注册账号,使用强密码,并避免在安装可疑扩展的浏览器里玩。
- 下载 transcript 后可用 复现公平验证教程 本地复验。
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.
| Attack | Defense | Remaining risk |
|---|---|---|
| Browser or device spoofing | Environment 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 cards | Cards 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 results | Player 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 attack | The 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 theft | Vaults 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 protocol | Sanitized 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 replacement | The 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、ゲスト身份を偽装しても、風控信号に影響するだけで、他人のホールカードを見る権限にはなりません。カードの公開には該当プレイヤーのブラウザが持つ逐牌復号鍵が必要です。
- 中継はメッセージ転送のみで、平文デッキや私钥を保持しません。
- イベントは署名と hash-chain transcript で検証できます。
- 端末がマルウェアや悪意ある拡張に侵害された場合、その端末が見える情報は漏れる可能性があります。
- IPFS CID、SHA256、source fingerprint を検証してください。
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.
- El relay solo reenvía mensajes; no guarda mazos en claro ni claves privadas.
- Los eventos se verifican con firmas y transcript hash-chain.
- Malware, control remoto o extensiones maliciosas siguen siendo riesgos del dispositivo del usuario.
- Verifica CID de IPFS, SHA256 y source fingerprint.
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é.
- Le relais transmet les messages et ne détient ni deck en clair ni clés privées.
- Les événements sont vérifiables par signatures et transcript hash-chain.
- Malware, contrôle à distance ou extensions malveillantes restent des risques côté appareil.
- Vérifiez le CID IPFS, le SHA256 et le source fingerprint.
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.
- Der Relay leitet nur Nachrichten weiter und besitzt keinen Klartext-Deckzustand oder private Schlüssel.
- Ereignisse sind durch Signaturen und Hash-Chain-Transcript prüfbar.
- Malware, Fernsteuerung oder schädliche Erweiterungen bleiben Risiken auf dem Nutzergerät.
- Prüfen Sie IPFS-CID, SHA256 und Source Fingerprint.
联系我们 / Contact
问题反馈、Bug 提交、安全线索、授权与合规事务,请联系 support@fairpoker.app。
- English: For support, bug reports, security leads, licensing, or compliance matters, contact support@fairpoker.app.
- 日本語: サポート、バグ報告、セキュリティ情報、ライセンス、コンプライアンスは support@fairpoker.app までご連絡ください。
- Español: Para soporte, bugs, seguridad, licencia o cumplimiento, escribe a support@fairpoker.app.
- Français: Pour support, bugs, sécurité, licence ou conformité, contactez support@fairpoker.app.
- Deutsch: Für Support, Bugmeldungen, Sicherheitshinweise, Lizenz- oder Compliance-Fragen: support@fairpoker.app.