☰
PenEcho安全设计深度解析:访问码、HTTPS MCP与无到期证书鉴权的完整指南
2026/10/4 6:47:52 网站建设 项目流程

PenEcho安全设计深度解析:访问码、HTTPS MCP与无到期证书鉴权的完整指南

【免费下载链接】penechoThink with AI beyond the chat box. A shared canvas for handwriting, equations, diagrams, and spatial reasoning.项目地址: https://gitcode.com/gh_mirrors/pe/penecho

PenEcho 是一款"超越聊天框"的 AI 共享画布应用,支持手写、公式、图表与空间推理协作。由于它把 AI 能力开放给局域网内的浏览器和 AI Agent,安全问题就成了设计的核心:谁能打开画布?AI 如何安全连接?证书会不会过期?本文带你读懂 PenEcho 的三层安全机制——六位访问码、HTTPS MCP 本地证书鉴权、以及"无到期证书"设计。

整体架构:安全从哪里开始

先看懂 PenEcho 的连接关系,你就明白了为什么需要多层防护:

浏览器、本地应用、AI Agent(Codex / Claude 等)可能同时接入同一台主机,因此 PenEcho 用访问码守住网页入口、用HTTPS + 证书守住 MCP 通道,两层互不替代。

访问码机制:一个六位数字的"门锁"

首次启动时,PenEcho 会让你设置一个六位数字访问码(或在确认风险后选择开放访问)。这个看似简单的 PIN,背后做了四件专业的事:

🔐只存哈希,不存明文访问码经scrypt加盐哈希后才保存在内存中(src/server/main.js中 deriveLocalAccessPin,参数 N=16384),即使别人拿到了程序也拿不到你的码。

🔐恒定时间比较,防时序攻击校验时使用 crypto.timingSafeEqual 做比较,避免通过响应时间差逐位猜解。

🔐两级暴力破解防护限速常量定义了两层防线:

防护层触发条件惩罚
单 IP 限流5 分钟内同一 IP 输错 5 次锁定 30 秒
全局限流5 分钟内全局累计错 30 次锁定 60 秒

同时最多只允许 4 个并行的校验请求,防止用并发刷掉时间预算。

🔐会话 Cookie 严格加固验证成功后下发的会话 Cookie 是随机 32 字节令牌,带HttpOnly和SameSite=Strict属性(aiSessionCookie),JavaScript 读不到、跨站请求带不走;且访问码只存在内存中,重启即重置,攻击者无法持久化利用。

值得一提的是,选择"开放访问"模式时,open 接口会强制要求客户端显式确认风险(acknowledgeRisk: true),把安全决策权交回用户。

HTTPS MCP:本地 CA + Bearer 的双因子鉴权

AI 客户端连接 PenEcho 时走的是内置 HTTPS MCP 服务(默认依次尝试 3922、13922、23922 端口)。它没有发明复杂协议,而是用两道经典防线:

第一道:TLS 证书信任(证明"你是那台 PenEcho")direct-http-identity.js 在首次启动时自动生成一套本地证书体系:

  1. 用 EC P-256 密钥对创建一个名为PenEcho MCP Local CA的本地根证书;
  2. 每次监听为新的 LAN IP 签发覆盖localhost+ 实际地址的叶子服务器证书(createDirectHttpLeaf,含完整 SAN 列表);
  3. 客户端必须导入该 CA 信任包并完成 IP 校验,发现机制提供的地址提示永远不能替代信任验证。

第二道:Bearer 令牌(证明"你被授权")身份文件中还包含一个随机 32 字节的accessToken(loadDirectHttpIdentity),每次请求都要携带。两者缺一不可:光有证书说明"认识这台机器",光有令牌说明"拿到了钥匙",但无法证明对方身份。

📌 身份文件本身的存储也很讲究:目录强制0700、文件0600权限,读取时用O_NOFOLLOW防符号链接劫持,加载后还会逐项自检(CA 标志、私钥匹配、签名有效、未过期),任何一项不过就拒绝启动(校验逻辑)。客户端通过证书 SHA-256 摘要得到hostId,保证连接的是导入信任包时的那台主机。

无到期证书:告别"每月续签"的麻烦

很多自签名 MCP 方案每月都要重新生成证书、重新分发,非常麻烦。PenEcho 依据RFC 5280 §4.1.2.5"无明确到期日期"的规定,把根证书和服务器证书的有效期直接设为9999-12-31T23:59:59Z(CERTIFICATE_NOT_AFTER),Bearer 凭据同样不设定期失效。

这套"无到期证书鉴权"带来的好处(详见 docs/mcp-setup.md):

✅没有月度证书续签定时器,配置一次长期有效 ✅IP 变化不破坏信任:新地址在同一根 CA 下签发新叶子证书即可 ✅升级字节级兼容:旧版本的 10 年有效期根证书在升级后原样保留,不会被偷偷替换 ✅ 只有主动重置证书才会更换根 CA,此时需要给已配置客户端更新一次信任包

一句话总结:把"证书过期导致 AI 断连"这类最烦人的故障从根上消灭了。

一次请求的安全之旅

把三层机制串起来看,AI 发起一次工具调用要经历:

  1. CLI 子进程用导入的本地 CA + Bearer 令牌连接 HTTPS 端点,主机证书与hostId必须匹配;
  2. MCP 会话建立后,浏览器侧仍需在设置中显式开启 MCP——服务启动不等于授权,未选定的浏览器与文档一律拒绝;
  3. 画布操作全部经由已授权的文档绑定执行,虚拟文件工具永不触碰宿主机文件系统。

安全设计速查表

机制防护目标关键实现
六位访问码局域网内网页入口scrypt + 限流 + 加固 Cookie
本地 CA 证书MCP 通道传输加密与主机证明证书生成与自检
Bearer 令牌MCP 请求级授权随机 32 字节令牌
无到期证书免维护的长期信任RFC 5280 §4.1.2.5
显式浏览器授权防未受邀设备读写画布MCP 设置与绑定

📚 更多细节可阅读 docs/mcp-setup.md 中的证书生命周期章节、docs/mcp-implementation.md 的实现说明,以及访问页面前端 public/access.html。

小结:PenEcho 用"访问码守门 + HTTPS 双因子 + 无到期证书"这套朴素而严谨的组合,让新手无需理解密码学细节,也能放心地把 AI 画布开在局域网里——这正是它安全设计最打动人的地方。

【免费下载链接】penechoThink with AI beyond the chat box. A shared canvas for handwriting, equations, diagrams, and spatial reasoning.项目地址: https://gitcode.com/gh_mirrors/pe/penecho

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询