目录

Croc:基于 PAKE 密码认证的跨平台端到端加密文件传输工具

Croc:基于 PAKE 密码认证的跨平台端到端加密文件传输工具

Croc 真正解决的是“如何在两台任意电脑之间安全地传文件”这个老问题——不需要公网 IP、不需要端口映射、不需要注册账号、不需要上传到第三方服务器,同时还能保证端到端加密。

在它之前,大多数方案都有明显的短板:scp/sftp 需要双方能直连;WeTransfer 之类的网页工具需要上传到中间服务器;局域网传输工具出了内网就用不了。而 Croc 用一个优雅的技术组合解决了所有这些问题。

系统地图:Croc 的四层技术架构

层级职责关键技术
用户层交互与发现4 个助记词 + code phrase
加密层密钥协商与加密PAKE 协议 + AES-GCM
传输层数据传输与中继TCP 中继 + WebSocket
协议层传输控制逻辑断点续传、多文件、进度管理

这四层设计的核心优势是:用户只需要记住 4 个单词,就能在底层获得完整的加密安全保障——不需要理解密码学,也不需要手动交换密钥。

为什么 PAKE 是这项技术的核心

Croc 使用的是 PAKE(Password Authenticated Key Exchange,密码认证密钥交换) 协议,这是它与其他文件传输工具最大的区别。

传统的密钥交换有两种模式:

  1. 公钥加密:双方需要先知道对方的公钥,但如何安全地交换公钥本身就是个问题
  2. 对称加密:需要一个共享密钥,但如何在不安全的信道上安全地交换密钥?

PAKE 解决的就是这个问题:双方只需要共享一个简单的口令(比如 4 个单词),就可以通过协议协商出一个安全的会话密钥,而攻击者即使截获了所有流量,也无法获得这个密钥。

更重要的是:即使口令强度不高,PAKE 协议也能保证攻击者无法通过暴力破解来获得密钥——因为每一次猜测都需要与服务器进行一次完整的网络交互,这让离线暴力攻击成为不可能。

这就是为什么 Croc 只需要 4 个简单的助记词就能达到很高的安全性——不是因为口令本身很难猜,而是因为协议本身防止了暴力破解。

核心机制拆解

1. 中继模式:无需直连

Croc 使用中继服务器来连接两台无法直连的电脑:

  • 发送方连接到中继服务器,生成一个 code phrase(比如 croc-apple-banana-cherry
  • 接收方用同一个 code phrase 连接到中继服务器
  • 中继服务器把两方的连接对接起来,数据开始流动

关键在于:中继服务器只能看到加密后的数据流,无法解密内容。中继服务器的作用只是转发数据,而不是存储或解密。

这意味着即使中继服务器被攻破,攻击者也无法获得传输的文件内容——因为密钥只存在于发送方和接收方的本地。

2. 端到端加密流程

一次完整的加密传输流程是这样的:

  1. 发送方和接收方通过 PAKE 协议协商出一个共享会话密钥(双方都不需要暴露自己的私钥)
  2. 发送方用 AES-GCM 加密文件内容
  3. 加密后的数据通过中继服务器转发
  4. 接收方用会话密钥解密数据
  5. 传输完成后会话密钥立即丢弃

整个过程中,未加密的明文数据永远不会离开发送方和接收方的本地机器。

3. 断点续传与多文件支持

Croc 支持在传输中断后从断点恢复,而不需要从头开始:

  • 发送方和接收方会交换文件的哈希值
  • 如果接收方已经有部分数据,会通知发送方从哪里继续
  • 传输进度会实时显示在终端上

同时支持一次传输多个文件或整个文件夹——这是很多同类工具不具备的功能。

4. IPv6 优先与代理支持

Croc 默认优先使用 IPv6,这在未来的网络环境中会越来越重要。同时也支持通过 Tor 等代理传输,可以满足更高的匿名性需求。

一个典型的文件传输流程

让我们看看“发送方 A 给接收方 B 传一个大文件”的完整流程:

  1. A 在终端输入 croc send big-file.zip
  2. Croc 生成 code phrase:croc-apple-banana-cherry
  3. A 通过聊天工具把这个 code phrase 发给 B
  4. B 在终端输入 croc croc-apple-banana-cherry
  5. A 和 B 通过 PAKE 协议在本地协商出共享会话密钥(中继服务器全程看不到这个密钥)
  6. A 开始用 AES-GCM 加密文件,并通过中继服务器转发给 B
  7. B 接收加密数据,在本地解密,实时显示进度
  8. 如果网络中断,任何一方重新执行命令即可从断点继续
  9. 传输完成,会话密钥被丢弃

整个过程中,A 和 B 都不需要知道对方的 IP 地址,也不需要配置任何网络参数。

适用边界与采用建议

谁应该优先使用

  • 需要跨平台传文件的人:Windows、Linux、Mac 之间互传,再也不用找 U 盘了。
  • 需要传大文件的人:断点续传意味着即使传几十 GB 的文件也不怕断网。
  • 注重隐私的用户:文件不会在第三方服务器落地,只有发送方和接收方能解密。
  • CLI 用户:在终端就能完成所有操作,不需要打开浏览器。

谁可以暂时不用

  • 只在同一局域网内传输:局域网直连速度更快,不需要中继。
  • 传输极度敏感的数据:虽然 PAKE 很安全,但极端敏感场景可能还是需要物理介质。
  • 完全不会用命令行的用户:Croc 目前主要是 CLI 工具,GUI 版本还在开发中。

采用顺序

  1. 先安装:brew install croc 或对应系统的包管理器。
  2. 试传一个小文件,体验基本流程。
  3. 尝试传文件夹和大文件,测试断点续传功能。
  4. 如果有特殊需求,可以尝试自建中继服务器(Croc 完全开源)。
  5. 如果需要更高的匿名性,配置通过 Tor 代理传输。

总结

Croc 是那种“用了就再也回不去”的工具——它把一个复杂的问题(安全跨平台文件传输)封装成了极其简单的用户体验:发送方输入命令得到 4 个单词,接收方输入这 4 个单词,文件就开始传了。

这种“简单的用户界面 + 扎实的底层技术”的组合,在开源工具中并不多见。大多数工具要么界面简单但技术上有妥协,要么技术很牛但用户体验一塌糊涂。而 Croc 两者都做到了。

如果你还在为“怎么把这个大文件传给另一台电脑”而烦恼,Croc 值得你立即尝试。