Skip to content

Security: Soodok/MeshChat

SECURITY.md

Security Policy

安全设计 / Security Overview

MeshChat 内置以下安全能力(详见 READMEdocs/):

  • 端到端加密(E2EE):ECDH P-256 密钥协商 + HKDF-SHA256 派生 + AES-256-GCM(每条消息独立随机 IV),消息在离开设备前加密,中继节点无法解密。
  • 中间人防御(密钥连续性):每个点对点会话显示对端公钥指纹(SHA-256 截断);首次握手信任并持久化记录(TOFU),此后公钥变化(重装 / 重启 / 被中间人替换)立即在会话页红色告警,提示线下比对指纹。
  • 存储加密:本地消息数据库加密存储(AndroidKeyStore 保护密钥),应用锁(PBKDF2 + AES-GCM)防止未授权访问。
  • 隔离控制:拉黑 / 删除对话 / 换频道 / 关闭搜索即彻底断开既有连接并拒绝重连。

已知限制 / Known Limitations

  • 首次握手盲区:密钥连续性依赖首次握手记录(TOFU)。若攻击者在双方第一次连接时就替换公钥,指纹告警无从比对。高危场景请线下核对指纹。
  • 受限 ROM 降级:部分厂商 ROM(如部分华为系统)AndroidKeyStore 不支持密钥协商,自动降级为内存密钥(加密仍生效,重启后需重新握手)。
  • 范围限制:通信基于蓝牙低功耗,有效范围约 40 米(空旷室内)/ 20 米(丛林,蓝牙 5.1 实测),受机型与环境影响。

漏洞报告 / Reporting a Vulnerability

不要通过公开 Issue 提交安全漏洞细节。

  • 首选:通过 GitHub 仓库「Issues」以私密描述(或标题注明 [SECURITY],尽量隐去细节)提交,或联系维护者。
  • 报告内容建议包含:受影响版本、复现步骤、预期与实际行为、可选的修复建议。
  • 维护者会在确认后尽快响应,并在修复发布前对细节保密。
  • 提交即表示你同意在修复发布前不公开披露该漏洞(负责任的披露)。

There aren't any published security advisories