双层加密:Z-Text 如何保护您的消息
大多数加密通讯工具仅依赖单层加密。Z-Text 使用两层独立的加密机制,分别抵御不同的威胁向量。
大多数加密通讯工具只依赖单层加密。Z-Text 使用两个独立的加密层,每一层针对不同的威胁向量提供保护。本文介绍它们如何协同工作,为您的消息提供纵深防御。
第一层:区块链屏蔽
第一层加密来自 BitcoinZ 区块链本身。屏蔽交易使用 zk-SNARKs(零知识简洁非交互式知识论证)来加密所有交易数据。
当 Z-Text 消息作为屏蔽交易发送时,以下信息对所有网络观察者都是隐藏的:
- 发送者的地址
- 接收者的地址
- 交易金额
- 备注字段(消息存储的位置)
只有持有接收者 z-地址查看密钥的人才能解密备注字段并阅读消息内容。这可以防御被动网络监控和区块链分析。
第二层:联系人密钥加密
第二层在区块链屏蔽之上添加端到端加密。在握手过程中,Z-Text 使用椭圆曲线 Diffie-Hellman (ECDH) 密钥交换在两个联系人之间建立共享密钥。
在任何消息被写入交易备注之前,它都会使用这个共享密钥进行加密。这意味着即使有人获取了 z-地址的查看密钥(无论是通过胁迫、盗窃还是未来的漏洞),如果没有单独派生的联系人密钥,他们仍然无法阅读消息。
握手密钥交换
联系人密钥通过一个无需信任的握手协议建立:
- Alice 向 Bob 的 z-地址发送握手请求,其中包含她的临时公钥(加密在屏蔽交易的备注中)
- Bob 通过向 Alice 发回自己的临时公钥来接受请求(同样通过屏蔽交易)
- Alice 和 Bob 各自独立使用 ECDH 派生出相同的共享密钥
- 这个共享密钥成为所有后续消息的对称加密密钥
这种方法的精妙之处在于,即使是密钥交换本身也受到第一层屏蔽的保护。观察者无法看到正在交换的公钥,甚至无法看到握手正在发生。
为什么双层加密很重要
每一层都针对不同的攻击场景提供保护:
- 仅第一层 可以防御网络观察者和区块链分析师,但对查看密钥泄露无能为力
- 仅第二层 可以防御查看密钥泄露,但如果消息以明文形式在链上发送则会存在漏洞
- 两层结合 要求攻击者同时突破两个独立的密码学系统
这就是纵深防御原则应用于消息加密的体现。没有任何单一故障点可以暴露您的消息。
密码学原语
Z-Text 的加密栈使用成熟的密码学原语:
- zk-SNARKs (Groth16) 用于第一层屏蔽交易
- ECDH 基于 Curve25519 用于密钥交换
- ChaCha20-Poly1305 用于第二层对称加密
- BLAKE2b 用于密钥派生
所有密码学操作都在应用程序的 Rust 核心中执行,利用常数时间实现来防止时序侧信道攻击。
实际意义
对于用户来说,双层加密是完全透明的。应用程序自动处理所有密钥交换和加密。消息显示在一个熟悉的聊天界面中,不会显示底层复杂密码学运算的任何迹象。
最终的结果是消息安全级别超越了任何中心化通讯工具所能提供的水平——不是因为密码学更复杂,而是因为信任模型从根本上不同。没有可以被传唤的服务器,没有可以被施压的公司,也没有能解锁一切的单一密钥。