Security Architecture
Security Architecture
EffishMail 安全架构设计
EffishMail 是一款 100% 本地化的 macOS 邮件客户端,核心设计原则:无云端依赖、无外部数据上传、最小权限原则、利用 macOS 原生安全能力。
版本
v1.2 · 2025-11-10
本文档符合 OWASP Proactive Controls (C1, C3, C4, C6) 与 Apple Platform Security 最佳实践。
信任边界 (Trust Boundaries)
EffishMail 明确定义三级信任边界:
| 边界 | 说明 | 保护机制 |
|---|---|---|
| T1: 用户 - EffishMail | 本地交互,macOS 沙盒内 | App Sandbox + Hardened Runtime |
| T2: EffishMail - 邮件服务器 | 远程不可信网络 (IMAP/SMTP) | TLS 1.3 强制 + 证书钉扎 + SASL 认证 |
| T3: EffishMail - macOS Keychain | 系统级凭据存储 | Access Control Lists + kSecAttrAccessibleWhenUnlocked |
架构概览
HuggingFace 模型下载说明
- 仅在用户主动启用本地 AI 功能时触发
- 下载地址:
https://huggingface.co/[model-id]/resolve/main/*(仅 HTTPS) - 文件校验: SHA-256 哈希比对 (清单内置签名)
- 存储位置:
~/Library/Application Support/EffishMail/models/(沙盒内) - 无自动更新、无回传日志或遥测
数据保护
核心数据流保护措施
| 数据类型 | 存储位置 | 加密方式 | 生命周期 |
|---|---|---|---|
| 邮箱账号/密码 | macOS Keychain | 硬件级加密 (Secure Enclave) | 永久 (用户可删) |
| 邮件内容 | 本地 SQLite | SQLCipher AES-256-CBC + PBKDF2-HMAC-SHA256 | 本地留存,随 App 删除 |
| AI 模型文件 | Application Support/models/ | 无加密 (模型本身无敏感信息) | 用户可控,无自动清理 |
| 会话密钥 (TLS) | 内存 | 无持久化 | 退出账户后清零 |
敏感数据说明
邮件正文、发件人、收件人、主题等均视为个人敏感信息 (GDPR PII / 中国《个人信息保护法》)。所有数据从未上传至任何服务器,包括模型推理 (纯本地 CPU/GPU 推理)。
安全控制实现
| OWASP PC | 控制项 | EffishMail 实现 |
|---|---|---|
| C1 | 定义安全需求 | 明确三级信任边界;本地化为默认策略 |
| C3 | 验证输入 | IMAP 响应长度限制;附件 MIME 类型白名单;无 eval/include |
| C4 | 认证与凭据 | Keychain 存储;密码内存零化 (memset_s);无明文日志 |
| C6 | 部署安全 | Apple Notarization + Hardened Runtime;无调试符号 (Release) |
常见问题
是否存在 LFI/RFI 风险?
否。EffishMail 为原生 Swift App,无动态代码加载 (dlopen 仅用于系统库)、无用户可控路径拼接,所有资源编译进 Bundle。
模型下载是否安全?
是。仅支持 https://huggingface.co/ 官方域;SHA-256 校验防止篡改;无自动后台更新。
是否满足 GDPR/CCPA 加密要求?
是。所有本地存储的邮件数据加密落盘 (SQLCipher),密钥由用户主密码派生 (PBKDF2),符合 "encryption at rest" 要求。