跳转到主要内容

离线密钥生成:气隙安全指南

在联网计算机上生成加密货币密钥会使其暴露于恶意软件、键盘记录器、屏幕捕获、剪贴板劫持和远程外传风险之下。对于计划长期冷存储的高价值钱包,黄金标准是气隙离线生成:在一台从未连接且未来也永不连接任何网络的设备上创建密钥。

本指南提供一套完整的离线密钥生成分步流程,涵盖硬件选择、操作系统设置、密钥生成、校验与安全清理。

为什么气隙生成很重要

威胁模型

当你在日常电脑上生成助记词私钥时,密钥材料会存在于:

  • RAM — 系统中任意运行进程都可能访问。
  • 磁盘 — 可能被操作系统虚拟内存机制交换到磁盘。
  • 剪贴板 — 一旦复制粘贴,所有应用都可访问。
  • 网络 — 如果机器已联网,恶意软件可瞬间外传密钥。
  • 显示器 — 屏幕捕获恶意软件或旁观窃视。
  • 键盘 — 键盘记录器(软件或硬件)会记录所有输入。

气隙计算机可彻底消除网络这一攻击向量。配合正确的操作安全措施,还能显著降低甚至消除其他向量。

谁需要气隙生成?

  • 任何存储金额超过可承受损失范围的人。
  • 长期“深冷”存储(数年或数十年)。
  • 机构托管与资金库管理。
  • 任何希望达到最高可实现安全标准的人。

对于余额较小的日常支付钱包,硬件钱包在不增加气隙流程复杂度的情况下已能提供足够安全性。

硬件选择

选项 1:专用笔记本电脑(推荐)

购买一台新的或恢复出厂设置的笔记本,仅用于密钥生成且永不联网:

  • 移除或禁用所有网络硬件。 如可行,物理移除 Wi-Fi 卡和蓝牙模块;至少在 BIOS/UEFI 固件中禁用它们。
  • 禁用摄像头和麦克风。 物理移除,或进行遮挡/断开连接。
  • 使用不带蜂窝调制解调器的笔记本。
  • 预算方案:二手 ThinkPad(X230、T440)— 价格低、Linux 支持好、易于物理改造。

选项 2:Raspberry Pi

Raspberry Pi(Model 3B+ 或 4)是低成本单板电脑;若使用无无线模块的 Pi Zero 或禁用网络,也可实现无 Wi-Fi:

  • 从 microSD 卡启动。
  • 除 SD 卡外无持久化存储(事后可销毁)。
  • 使用合适型号可避免无线硬件。
  • 成本更低(含配件约 $35–$75)。

选项 3:在现有硬件上使用 Live USB

在现有电脑上禁用所有网络后,启动专用 Linux live USB:

  • live 环境完全在 RAM 中运行。
  • 不会向内部硬盘写入数据(若配置正确)。
  • 关机后 RAM 会被清空。
  • 风险: 现有电脑可能存在跨系统启动持续存在的硬件级入侵(固件 rootkit、硬件键盘记录器)。专用设备可消除此风险。

操作系统设置

Tails OS(推荐)

Tails 是注重隐私、设计为不留痕迹的 Linux 发行版:

  • 从 USB 启动并完全在 RAM 中运行。
  • 默认所有网络经 Tor 路由,但在气隙使用中你不会启用任何网络。
  • 为失忆式使用而设计:除非显式配置,否则无持久状态。
  • 内置常用工具,可运行 Python 密钥生成脚本。

设置步骤:

  1. 在常规电脑上下载 Tails ISO。
  2. 使用 Tails 签名密钥验证 ISO 签名。
  3. 使用 Tails Installer、Etcher 或 dd 将 ISO 写入 USB。
  4. 用该 USB 启动气隙电脑。
  5. 在 Tails Greeter 中,不要配置任何网络连接。
  6. 验证没有活动网络接口:ip link show 应显示所有接口为 DOWN。

Ubuntu Live USB(替代方案)

如果 Tails 不适用:

  1. 下载 Ubuntu ISO 并验证其校验和。
  2. 写入 USB。
  3. 在 BIOS 中禁用网络后启动。
  4. 在 Ubuntu 安装器中选择“Try Ubuntu”(不要安装)。
  5. 验证无网络连接。

验证气隙完整性

启动后,验证气隙状态:

# Check that no network interfaces are UP
ip link show

# Verify no IP addresses assigned
ip addr show

# Attempt to reach the internet (should fail)
ping -c 1 8.8.8.8

# Check for Wi-Fi and Bluetooth
rfkill list all

所有网络接口都应为 DOWN,不应分配任何 IP 地址,且 ping 应失败。若任一测试显示可能连通,请先停止并排查后再继续。

密钥生成流程

方法 1:离线使用 SafeSeed 工具

SafeSeed 的工具是客户端 Web 应用,即使无网络也可在浏览器运行。

SafeSeed 工具

SafeSeed Seed Phrase GeneratorPaper Wallet Creator 可保存为离线使用。离线前,先保存完整网页(Ctrl+S / Cmd+S),通过 USB 传输到气隙电脑,并在浏览器中打开。所有加密运算都在本地 JavaScript 中执行,不需要服务器通信。

步骤:

  1. 在常规(联网)电脑上打开 SafeSeed 工具页面。
  2. 将完整网页保存到 USB 驱动器。
  3. 验证文件完整性(如有可用,比较校验和)。
  4. 将 USB 驱动器转移到气隙电脑。
  5. 在浏览器中打开保存的 HTML 文件。
  6. 生成助记词。
  7. 手写到纸上(不要在气隙机器上以数字形式保存)。
  8. 重新输入助记词并确认生成相同地址,以完成校验。

方法 2:使用 Ian Coleman 的 BIP-39 工具

Ian Coleman BIP-39 工具 是广泛用于离线密钥生成的开源独立 HTML 页面:

  1. 在联网电脑上从 GitHub 下载最新发行版。
  2. 验证 PGP 签名。
  3. 通过 USB 传输到气隙电脑。
  4. 在浏览器中打开 bip39-standalone.html
  5. 生成或输入助记词。
  6. 选择币种和派生路径。
  7. 记录助记词和地址。

方法 3:基于骰子的熵

若要最大程度不信任所有软件 RNG,可用骰子手动生成熵:

  1. 使用赌场级骰子(边缘锋利的精密骰,而非圆角消费级骰子)。
  2. 单颗骰子掷 99 次可得到 256 位熵(每次约提供 2.585 位;99 次约 255.9 位)。
  3. 将掷骰结果转换为二进制字符串。
  4. 使用 BIP-39 工具(离线)将二进制熵转换为助记词。
  5. 或掷 50 次得到 128 位熵(12 词短语)。

骰子转换方法:

  • Base-6 方法: 记录每次点数(1-6),将序列转换为二进制。
  • 二进制掷币法: 抛硬币 256 次(正面=1,反面=0)。
  • 骰子转二进制: 掷骰;1-3 记 0,4-6 记 1。重复 256 次。

第三种方法浪费最多熵,但最简单。关于熵质量的详细说明,参见我们的熵与随机性指南

方法 4:命令行(Python)

对于熟悉命令行的用户,可用最小化 Python 脚本生成 BIP-39 助记词:

import hashlib
import os

# BIP-39 word list must be loaded from a file
with open('english.txt', 'r') as f:
wordlist = [w.strip() for w in f.readlines()]

# Generate 256 bits of entropy
entropy = os.urandom(32) # Uses OS CSPRNG

# Compute checksum
h = hashlib.sha256(entropy).digest()
checksum_bits = bin(h[0])[2:].zfill(8) # First 8 bits for 256-bit entropy

# Convert entropy to binary string
entropy_bits = bin(int.from_bytes(entropy, 'big'))[2:].zfill(256)
all_bits = entropy_bits + checksum_bits

# Split into 11-bit groups and map to words
words = []
for i in range(0, len(all_bits), 11):
index = int(all_bits[i:i+11], 2)
words.append(wordlist[index])

print(' '.join(words))

重要: 这是用于教学的简化示例。生产环境请使用经过充分审计的库,例如 python-mnemonic 中的 mnemonic

校验

生成助记词后,在存入资金前务必校验:

1. 校验和验证

将助记词重新输入生成工具。若工具无报错并接受该短语,则校验和有效。

2. 地址派生验证

为目标加密货币和派生路径派生前几个地址并记录。随后在另一台设备上(或重启气隙机器后)重新输入助记词,确认生成地址一致。

3. 跨工具验证

如可行,在两个不同工具中验证助记词(例如 SafeSeed 生成器与 Ian Coleman 工具)。相同助记词、派生路径与口令下,两者应生成一致地址。

4. 小额交易测试

在存入较大价值前:

  1. 向第一个接收地址发送一小笔加密货币。
  2. 在另一台设备上用助记词恢复钱包。
  3. 确认能看到资金,并且可以签名一笔交易将其转回。

这可验证整条链路:熵生成、助记词编码、种子派生、密钥派生、地址生成均正确。

记录助记词

纸质

  • 用防褪色墨水笔在无酸纸上清晰书写。
  • 为每个词编号(1-24)。
  • 不要在会留下压痕的表面书写(例如垫着多页纸写字导致下页显痕)。
  • 存放于防火防水容器中。

金属

  • 冲压或雕刻到不锈钢板上。
  • 空间受限时可先测试前四字母缩写方案。
  • 冲压后立即验证可读性。
  • 金属可耐火耐水,推荐用于长期存储。

不要这样做

  • 不要拍摄助记词照片。
  • 不要在气隙机器上输入到任何文件。
  • 不要打印(打印机有存储与网络能力)。
  • 不要保存到 USB 驱动器。

安全清理

完成助记词生成和记录后,清除气隙设备上的所有痕迹:

1. 清空剪贴板与屏幕

  • 关闭所有应用程序。
  • 清空剪贴板(Ctrl+C 一段无关文本)。

2. 关机

  • 关闭电脑电源。断电后 RAM 内容会在数秒到数分钟内衰减。
  • 为进一步确保,至少保持关机 15 分钟(室温下 DRAM 保留时间更短,低温下更长)。

3. 存储介质

  • 若使用 Tails live USB,不会写盘。该 USB 可重复使用。
  • 若使用非失忆系统的 Raspberry Pi SD 卡,请安全擦除 SD 卡(dd if=/dev/urandom of=/dev/sdX bs=1M)或物理销毁。
  • 若误将内容保存到气隙机器内部硬盘,请进行安全擦除。

4. USB 驱动器

  • 如果你按说明操作,用于传输生成工具的 USB 不应包含任何生成出的密钥材料。
  • 验证 USB 仅含原始工具文件,无其他内容。
  • 为最高安全性,使用后擦除 USB。

进阶:在气隙环境签名交易

气隙电脑不仅适用于密钥生成,也适用于持续的交易签名:

工作流

  1. 在线(只读监控)机器: 构造未签名交易。
  2. 传输: 通过 USB 或二维码将未签名交易转移到气隙机器。
  3. 气隙机器: 使用私钥签名交易。
  4. 传输: 将已签名交易传回在线机器。
  5. 在线机器: 向网络广播已签名交易。

二维码传输(推荐)

使用二维码可完全避免 USB,从而关闭一个潜在恶意软件向量(USB 设备可能携带自动执行载荷):

  • 在在线机器上将未签名交易显示为二维码。
  • 用连接到气隙机器的摄像头扫描该二维码。
  • 对交易进行签名。
  • 在气隙机器上将已签名交易显示为二维码。
  • 由在线机器扫描。

支持基于二维码的气隙签名钱包包括 Coldcard、Keystone 和 Sparrow Wallet(配合摄像头设置)。

PSBT(Partially Signed Bitcoin Transactions)

Bitcoin 的 PSBT 格式(BIP-174)正是为气隙流程设计。PSBT 包含签名交易所需全部信息,无需签名设备具备任何区块链数据。

多重签名气隙方案

为获得最高安全性,可将气隙密钥生成与多重签名结合:

  1. 在三次独立气隙会话中生成三组独立助记词(理想情况下使用不同设备)。
  2. 设置一个 2-of-3 多重签名钱包。
  3. 将每组助记词存放在不同物理地点。
  4. 交易需在三台气隙设备中的两台上签名。

这可防护:

  • 单一设备被攻破(仅暴露一把密钥)。
  • 单一助记词丢失(剩余两把钥仍可签名)。
  • 单一存储地点被攻破。

常见错误

错误 1:使用“干净但曾联网”的电脑

对曾联网电脑执行擦除并重装系统并不足够。固件级恶意软件(UEFI rootkit)可在重装后存活。专用、从未联网设备可消除此风险。

错误 2:让气隙机器“临时连一下网”

任何网络连接,即使很短暂,也会破坏气隙。恶意软件可在毫秒级外传私钥。一旦连接,该设备就不能再被视为气隙。

错误 3:使用打印机

打印机通常有自身存储(用于排队打印任务),且许多现代打印机具备 Wi-Fi 或蓝牙。打印助记词可能将其保存在打印机内存并潜在传输。请改为手写。

错误 4:以数字方式传输助记词

除在气隙屏幕短暂显示的瞬间外,助记词不应以数字形式存在。不要复制到 USB、保存为文件,或编码成二维码传输。应直接写在纸上或冲压到金属上。

错误 5:未验证生成工具

传输到气隙机器的工具在使用前必须验证。检查文件哈希、PGP 签名,或至少比对文件大小。被篡改工具可能生成攻击者已知的确定性密钥。

常见问题(FAQ)

为什么不直接用硬件钱包?

硬件钱包很优秀,对大多数用户已足够。对于超高价值存储,气隙生成能提供额外安全边际,因为它消除了对硬件钱包随机数生成器和固件的信任。气隙方案还允许用多个独立工具交叉验证,而硬件钱包是单点信任。

整个气隙流程需要多久?

首次配置通常需 2-4 小时,包括系统准备、验证、密钥生成和清理。后续在已准备好的设备上生成通常只需 30-60 分钟。

我可以用智能手机作为气隙设备吗?

智能手机很难完全气隙,因为其有多种无线电模块(蜂窝、Wi-Fi、蓝牙、NFC),并不总能物理禁用。移除网络硬件的笔记本更可信。某些专用设备(如 Keystone wallet)专门设计为气隙签名设备。

每个钱包都需要气隙生成吗?

不需要。对于小额日常支付钱包,可信硬件钱包甚至安全配置良好的软件钱包就足够。气隙生成更推荐用于长期冷存储的重要价值资产。

如何更新气隙机器上的软件?

不更新。气隙机器应长期运行同一软件。若确需更新版本,应在在线机器下载并验证,再经 USB 传输,并在气隙机器上使用前再次校验校验和。

如果气隙机器的随机数生成器坏了怎么办?

这正是基于骰子熵作为兜底方案的意义。如果你不信任所有硬件和软件 RNG,可用骰子手动生成熵并输入 BIP-39 工具。最终助记词的安全性仅取决于你的掷骰质量,而非任何电子组件。

恶意软件能跨越气隙吗?

理论上,复杂的国家级攻击者已演示过通过电磁辐射、声学信号或 LED 闪烁模式跨越气隙的技术。实践中,这类攻击需要物理近距、专业设备,远超普通加密盗窃者能力。对绝大多数用户而言,正确维护的气隙在现实中几乎不可攻破。

相关指南