# myauth **Repository Path**: philiam/myauth ## Basic Information - **Project Name**: myauth - **Description**: 端到端加密的auth - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-21 - **Last Updated**: 2025-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MyAuth - 安全的网页版 TOTP 验证器 一个基于 Vue.js 的现代化 TOTP (Time-based One-Time Password) 验证器,支持端到端加密存储,可托管在 Gitee Pages 等静态网站服务上。 ## ✨ 核心特性 - 🔐 **军事级加密**: AES-256-GCM + PBKDF2 双重盐值架构确保数据安全 - 🎨 **现代化 Vue.js 界面**: 优雅的动画效果和响应式设计 - ⚡ **零依赖 CLI 工具**: Node.js 原生实现,无外部依赖 - 📱 **全平台支持**: 桌面、移动端完美适配 - 🔄 **实时验证码**: 自动刷新显示验证码和倒计时进度 - 🌓 **智能主题**: 跟随系统的浅色/深色主题切换 - 📥 **数据导入**: 支持从 Proton Authenticator 导入数据 ## 🚀 快速开始 ### 方式一:从零开始 ```bash # 1. 克隆项目 git clone https://github.com/yourusername/myauth.git cd myauth # 2. 初始化数据存储 node cli/main.js init # 3. 启动交互式界面添加第一个 TOTP 条目 node cli/main.js ``` ### 方式二:从现有数据导入 ```bash # 支持导入 Proton Authenticator 导出的 JSON 文件 node cli/main.js import proton_export.json ``` ## 🌐 网页版使用 ### 本地预览 ```bash # 启动本地服务器(推荐) python -m http.server 8000 # 或者 npx serve . # 访问 http://localhost:8000 ``` ### 部署到 Gitee Pages ```bash # 推送到 Gitee 仓库并启用 Pages 服务 git add . git commit -m "Deploy MyAuth" git push origin main # 在 Gitee 仓库设置中启用 Pages # 访问 https://yourusername.gitee.io/myauth ``` ## 💻 CLI 命令参考 ```bash # 交互式主界面(推荐使用) node cli/main.js # 快速命令 node cli/main.js init # 初始化数据文件 node cli/main.js list # 列出所有条目 node cli/main.js show <名称> # 显示特定条目的验证码 node cli/main.js remove <名称> # 删除条目 node cli/main.js import <文件路径> # 导入数据 node cli/main.js export [--format json] # 导出数据 ``` ## 🎯 网页版功能亮点 ### 🔐 安全特性 - **密码保护**: 主密码解锁查看验证码 - **安全存储**: 本地加密数据,无服务器风险 - **会话管理**: 支持锁定/解锁界面 ### 🎨 界面特性 - **实时更新**: 验证码自动刷新,圆形进度指示器 - **智能搜索**: 实时过滤条目,支持名称和分组搜索 - **分组管理**: 条目按分组有序显示 - **一键复制**: 点击验证码立即复制到剪贴板 - **流畅动画**: Vue.js 过渡动画效果 ### ⚙️ 设置选项 - **主题模式**: 自动跟随系统/强制浅色/强制深色 - **显示选项**: 进度条、分组显示开关 - **刷新控制**: 自动更新验证码开关 ### ⌨️ 快捷键 - `Ctrl/Cmd + K`: 快速聚焦搜索框 - `Ctrl/Cmd + R`: 手动刷新数据 - `Escape`: 关闭设置面板或清空搜索 ## 📁 项目架构 ``` myauth/ ├── README.md # 项目文档 ├── overview.md # 详细技术说明 ├── index.html # Vue.js 应用入口 ├── css/ │ ├── style.css # 主样式文件 │ └── themes.css # 主题样式定义 ├── js/ │ ├── vue-app.js # Vue.js 主应用组件 │ ├── crypto.js # Web Crypto API 加密模块 │ ├── totp.js # TOTP 算法实现 │ ├── storage.js # 前端数据存储管理 │ ├── app.js # 传统 JS 应用(备用) │ └── ui.js # 传统 UI 逻辑(备用) ├── cli/ │ ├── main.js # CLI 主程序入口 │ ├── package.json # CLI 包配置 │ └── lib/ │ ├── crypto.js # Node.js 加密实现 │ ├── totp.js # TOTP 解析和管理 │ └── storage.js # 文件系统数据管理 ├── data/ │ └── encrypted.json # 加密的 TOTP 数据存储 ├── lib/ │ └── base32.min.js # Base32 编解码库 └── proton_example.json # Proton Authenticator 导入示例 ``` ## 🔒 安全架构 ### 双重盐值加密机制 ``` 主密码 → ├── PBKDF2(密码, global_salt, 100,000次) → 数据加密密钥 └── PBKDF2(密码, verification_salt, 200,000次) → 密码验证哈希 ``` ### 数据加密流程 ``` TOTP 明文数据 → AES-256-GCM(加密密钥, 随机IV) → 密文 + 认证标签 ``` ### 安全特性 - ✅ **密码分离**: 验证和加密使用不同派生密钥 - ✅ **暴力破解防护**: 高迭代次数 PBKDF2 - ✅ **数据完整性**: GCM 模式内置认证标签 - ✅ **随机化**: 每次加密使用不同 IV - ✅ **快速验证**: 无需解密数据即可验证密码 ### 数据格式 ```json { "version": "1.0", "global_salt": "数据加密用盐值 (base64)", "verification_salt": "密码验证用盐值 (base64)", "password_hash": "密码验证哈希 (base64)", "entries": [ { "id": "uuid-v4", "name": "显示名称", "group": "分组", "iv": "初始化向量 (base64)", "encrypted_data": "加密的 TOTP URI (base64)", "auth_tag": "认证标签 (base64)", "created": "2024-01-01T00:00:00Z", "order": 0 } ] } ``` ## 🔧 开发指南 ### 本地开发环境 ```bash # 启动前端开发服务器 python -m http.server 8000 # 测试 CLI 功能 cd cli && node main.js # 修改配置后重启服务器 ``` ### 技术栈 - **前端**: Vue.js 3 + Web Crypto API + CSS3 动画 - **CLI**: Node.js + readline + crypto 模块 - **加密**: AES-256-GCM + PBKDF2 - **部署**: 静态文件托管(Gitee Pages/GitHub Pages) ## 🚀 部署方案 ### Gitee Pages(推荐国内用户) 1. 创建 Gitee 仓库 2. 推送代码到 `main` 分支 3. 仓库设置 → Gitee Pages → 启用服务 4. 访问 `https://用户名.gitee.io/仓库名` ### GitHub Pages 1. 创建 GitHub 仓库 2. 推送代码到 `main` 分支 3. 仓库设置 → Pages → Source: Deploy from branch 4. 访问 `https://用户名.github.io/仓库名` ### 自托管 任何支持静态文件的 Web 服务器均可部署,如 Nginx、Apache、Vercel、Netlify 等。 ## 🔄 数据迁移 ### 从 Proton Authenticator 导入 ```bash # 1. 从 Proton Authenticator 导出数据到 JSON 文件 # 2. 使用 CLI 导入 node cli/main.js import proton_export.json ``` ### 备份与恢复 ```bash # 备份数据(定期执行) cp data/encrypted.json backup/encrypted_$(date +%Y%m%d).json # 恢复数据 cp backup/encrypted_20240101.json data/encrypted.json ``` ## 🛡️ 安全建议 1. **密码策略**: 使用 16+ 字符的强主密码,包含大小写字母、数字和符号 2. **访问控制**: 建议使用私有仓库托管敏感数据 3. **传输安全**: 仅通过 HTTPS 访问网页版 4. **定期备份**: 定期备份 `data/encrypted.json` 文件 5. **环境安全**: 在受信任的设备上使用,避免公共电脑 ## 🤝 贡献指南 1. Fork 本仓库 2. 创建功能分支: `git checkout -b feature/新功能` 3. 提交更改: `git commit -m '添加新功能'` 4. 推送分支: `git push origin feature/新功能` 5. 创建 Pull Request ## 📝 许可证 MIT License ## ⚠️ 免责声明 本项目仅供学习和个人使用。请妥善保管主密码和备份文件,开发者不对任何数据丢失或安全问题承担责任。在生产环境中使用前请自行评估安全风险。