UStackUStack
AxKeyStore icon

AxKeyStore

AxKeyStore 安全开源 CLI:在客户端加密管理密钥与密码,仅将加密数据存入你的私有 GitHub 仓库。

AxKeyStore

AxKeyStore 是什么?

AxKeyStore 是一个安全开源命令行界面 (CLI) 工具,用于管理密钥、密钥和密码。其核心目的是让你使用自己的私有 GitHub 仓库作为加密存储,同时将 GitHub 视为不可信存储。

使用 AxKeyStore,加密在客户端进行。加密数据是存储在远程 GitHub 仓库中的内容,密钥不会以明文形式保存在仓库中。该工具还避免在本地文件系统中以未加密形式存储密钥、主密钥或密码。

主要特性

  • GitHub 私有仓库作为加密后端:将密钥存储在你控制的私有仓库中,使用加密二进制 blob。
  • 所有密钥处理采用客户端加密:密钥在上传前在你的机器上加密;不会发送明文密钥。
  • 零信任 / 多层加密模型:使用本地主密钥 (LMK) 加密本地配置(包括你的 GitHub 访问令牌和仓库名称),使用远程主密钥 (RMK) 加密实际存储的密钥。
  • 现代认证加密和密钥派生:LMK 加密使用 Argon2id 和 XChaCha20-Poly1305;三层方案设计确保只有加密工件到达 GitHub。
  • 通过 GitHub Apps 和 Device Flow 统一认证:使用 GitHub Apps 结合 Device Flow 进行安全认证。
  • CLI 工作流用于初始化和操作:包含登录、初始化存储仓库以及通过简单命令集管理密钥的命令。
  • 分层分类组织:将密钥组织在如 api/production/internal 等分类中。
  • 多配置文件支持:管理具有不同登录、主密码和 GitHub 仓库的多个密钥库。

如何使用 AxKeyStore

  1. 安装 CLI:在 macOS/Linux 上,运行提供的 shell 安装脚本。在 Windows 上,运行提供的 PowerShell 安装脚本。脚本会下载二进制文件,将其置于 $HOME/.axkeystore/bin 下,并配置你的 PATH。
  2. 使用 GitHub 账户登录:运行 axkeystore login。首次登录时,设置主密码;此密码用于加密敏感的本地 GitHub 访问令牌。
  3. 安装所需的 GitHub App:登录过程中,CLI 提供链接安装适用于你的用户或组织的 GitHub App。你必须安装该应用以授予仓库访问权限。
  4. 初始化存储仓库:运行 axkeystore init --repo <repo-name>(或包含组织/所有者,如 my-org/my-secret-store)。如果仓库已在另一台机器上初始化,AxKeyStore 将在初始化时提示。

初始化后,你可以使用 CLI 在私有 GitHub 仓库中以加密 blob 形式存储和检索凭据。

使用场景

  • 存储 GitHub 托管凭据而不以明文保存:在私有仓库中保存 API 密钥、密码和其他密钥,仅存储加密数据。
  • 使用分类按环境或域分离密钥:使用如 api/production/internal 等分层分类组织密钥,便于导航不同环境。
  • 跨不同 GitHub 仓库管理多个密钥库:为不同仓库和主密码维护独立配置文件,适用于跨多个项目或组织工作。
  • 锁定本地凭据存储:确保 GitHub 访问令牌和仓库名称(本地凭据)使用本地主密钥加密,并由用户主密码保护。
  • 跨机器使用不可信远程存储:在另一台机器上初始化同一加密仓库(初始化时提示),远程仅保存加密 blob,每个客户端处理加密。

常见问题

  • AxKeyStore 会在 GitHub 中以未加密形式存储密钥吗? 不会。密钥在客户端加密,仅将加密二进制 blob 存储在私有 GitHub 仓库中。

  • 加密密钥或主密码会通过网络发送吗? 项目说明没有明文密钥、主密钥或密码接触网络。加密完全在你的机器上进行。

  • AxKeyStore 使用什么认证方式? 它使用 GitHub Apps 和 Device Flow 进行认证。

  • AxKeyStore 如何保护本地数据? 它使用本地主密钥 (LMK),该密钥使用你的主密码通过 Argon2id 和 XChaCha20-Poly1305 加密,LMK 用于加密本地配置,如 GitHub 访问令牌和仓库名称。

  • 安装支持哪些操作系统? 仓库提供 macOS/Linux(通过 install.sh)和 Windows(通过 install.ps1)的安装脚本。

替代方案

  • 其他支持客户端加密的 CLI 密钥管理工具:寻找本地加密密钥并仅将密文存储在远程后端(类似不受信任存储模型)的工具,通常使用 S3、Git 或其他存储。
  • 专用密码管理器(基于 Vault 的应用):使用本地应用或桌面/移动 Vault 管理加密与同步;工作流程不同,因为后端由密码管理器管理,而非你控制的私有 GitHub 仓库。
  • 基于 Git 的加密密钥存储方案:某些方法将加密文件存储在 Git 中并依赖你的加密工具;与 AxKeyStore 相比,你需自行管理加密工作流程,而非使用专用 CLI 及其密钥模型。
  • 云密钥管理服务(托管加密):在托管系统中存储密钥的服务;与 AxKeyStore 所述模型不同,客户端不受信任存储方式可能并非主要设计模式。
AxKeyStore | UStack