crgimenes/inro

GitHub: crgimenes/inro

一款无需 gpg 的自包含 PGP 桌面应用,内置 OpenPGP 引擎,提供消息加密、签名、验证和解密功能。

Stars: 4 | Forks: 0

# inro 独立的桌面端 PGP 工具:加密、签名、验证和解密 消息,并保存你联系人的密钥。内置 OpenPGP 引擎。 无需安装任何其他内容;永远不需要 gpg。 ![inro 生成密钥并加密消息](https://raw.githubusercontent.com/crgimenes/inro/trunk/assets/demo.gif) *inro*(印籠)是过去挂在腰带(obi)上的一种小盒子,用来携带 个人印章及其印泥。而这个软件则用来装载你的数字印章。 使用 Go 编写,不依赖 cgo。窗口使用 [glaze](https://github.com/crgimenes/glaze)(通过 purego 实现的平台级 webview),UI 采用内嵌 HTML,加密部分使用 [ProtonMail/go-crypto](https://github.com/ProtonMail/go-crypto),配置管理 使用 [Filo](https://github.com/crgimenes/filo)。仅有一个可执行文件,旁边 没有任何附属文件。 ## 安装说明 在 macOS 上,使用 [Homebrew](https://brew.sh): ``` brew install --cask crgimenes/tap/inro ``` 或者从 [发布页面](https://github.com/crgimenes/inro/releases) 下载二进制文件: macOS 应用已签名并经过公证,Windows 和 Linux 提供普通的 可执行文件。从源码构建只需要 Go;在任何平台上 都不需要 C 工具链: ``` go install github.com/crgimenes/inro@latest ``` inro 自带加密引擎和 UI;它从系统借用的唯一东西是 操作系统已经附带的 webview。macOS 自带该组件,Windows 使用 Edge WebView2 运行时(存在于任何现代版本的 Windows 上),而 Linux 需要带有 WebKitGTK 的 GTK(`libwebkit2gtk-4.1`,或者 GTK 4 使用的 `libwebkitgtk-6.0`;只需安装一个包即可)。 ## 运行说明 首次运行时,inro 会打开 **Keys** 页面。你可以直接在那里 生成你自己的密钥对:EdDSA/Curve25519,可选的有效期,以及在 二次确认窗口中设置的密码(并提供真实的强度评估)。你也可以导入 已有的密钥:粘贴 ASCII 字符串格式的密钥或打开 `.asc` 文件。 之前在用 gpg?在那里导出,然后在这里导入这些文件;inro 永远不会直接与 gpg 通信: ``` gpg --armor --export-secret-keys you@example.com > my-key.asc # your keys gpg --armor --export > contacts.asc # public keys of everyone else ``` 每个密钥都有自己的专属页面,包含昵称、备注、导出和删除功能。此外还有 **认证** 功能:用你的密钥为你朋友的密钥签名,以证明 你已经核实过该密钥确实属于他们。认证信息会随着导出的 密钥一起传输,并且 inro 会显示在你持有的密钥中,有谁为 当前密钥作担保。 接下来所有的操作都在 **Message** 页面上进行:一个文本框,就像一个 只有一个输入框的翻译软件。不需要选择模式,通常也无需点击任何内容, 因为粘贴到文本框中的内容已经决定了它将受到怎样的处理: - **已签名的消息**在粘贴的瞬间就会自动验证,并且易读的 明文会直接替换原内容显示出来。零点击操作。 - **已加密的消息**自带接收方信息,因此 inro 会自动找出 你手中的哪把密钥可以将其打开。如果该密钥不需要密码,或者你 最近刚输入过,消息就会被当场解密。否则,inro 唯一会向你提出的 问题将出现在其专属的窗口中(采用 pinentry 样式):如果 密码输入错误会在那里直接提示,并且该窗口会保留以供 再次尝试。受共享密码(而非密钥)保护的消息同样适用。 - **发送纯文本**:选择接收人进行 *Encrypt*,开启 *Sign as* 进行签名,或者两者兼顾。加密生成的 ASCII 格式内容会替换掉你的文本, 且文本呈全选状态以备复制,如果你还需要原文,旁边有链接可以恢复它。 Open 可从文件中加载消息;Save 可将当前文本框中的内容保存为文件。相同的 操作也存在于应用程序的菜单栏中,并且按下 Cmd/Ctrl+Enter 可在任何位置 立即执行主要操作。 在解密或验证过程中发现的任何签名都会显示在 结果的上方。只有当签名者的密钥存在于你的 密钥环中时,签名才会被报告为有效。“有效”意味着消息未被 篡改,并且确实是由该密钥签名的。至于该密钥是否真的属于它所声称的 主人,这仍需由你自己来判断。 你的密码永远不会被持久化存储。在你输入密码后,已解锁的密钥会在 内存中保留 `KeyCacheSeconds` 设定的时间(默认 5 分钟,设为 0 则禁用缓存),因此在连续的高强度操作中只会提示输入一次;过期后, 再次进行操作时会重新要求输入密码。 ## 文件 ``` ~/.config/inro/ init.filo ; configuration (optional) keyring.filo ; nicknames and notes keys/ .asc ``` 密钥以 PGP 自带的 ASCII 格式存储,每个密钥一个文件,因此 `gpg --import ~/.config/inro/keys/*.asc` 是有效的,没有任何内容被 死锁在这个应用程序里。`keyring.filo` 仅保存密钥材料本身无法携带的信息: 你为密钥附加的昵称和备注。这两个存储位置在密钥指纹或 用户 ID 上永远不会产生分歧。 遵循 `$XDG_CONFIG_HOME` 环境变量。工作目录中的 `inro_init.filo` 文件 优先级高于 `~/.config/inro/init.filo`。 ## 配置项 所有设置都是可选的;以下为默认值。 ``` (set Width 1024) (set Height 720) (set Debug #f) ; open the webview developer tools (set DataDir "~/.config/inro") ; where keys and metadata live (set DefaultKey "") ; fingerprint pre-selected in the UI (set KeyCacheSeconds 300) ; how long a typed passphrase keeps the key unlocked ``` ## 项目状态 处于早期阶段但功能完备:密钥生成(含有效期设置)、导入(粘贴、文件)、 导出、删除、认证、加密、解密(包含受密码保护的消息)、 签名、验证、自动密钥选择,以及已解锁密钥缓存功能均可正常 使用。暂未支持的功能:密钥撤销、延长现有密钥的有效期。
标签:EVTX分析, Go语言, PGP, 加密工具, 多模态安全, 密码学, 手动系统调用, 日志审计, 桌面应用, 程序破解