Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
tird — 隐写存储与文件加密工具 | Kitploit
工具/GitHubGitHub/hakavlad/tird
加密/解密工具取证分析隐写术数据恢复密码学隐私保护
GitHubhakavlad/tird

tird

隐写存储与文件加密工具

查看仓库
222624个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

🏠 首页    📑 规范    📜 手册页    📄 输入选项    📖 教程    ❓ 常见问题    📥 安装


Logo: random data visualization

tird & tirdFS

Releases PyPI

tird /tɪrd/ (“this is random data” 的缩写) 是一种文件加密工具,它最小化元数据并隐藏加密数据。

使用 tird,你可以:

  1. 创建填充随机数据的文件,用作容器或密钥文件。
  2. 用随机数据覆写块设备和常规文件的内容,以准备容器或销毁残留数据。
  3. 使用密钥文件和口令加密文件内容及注释。加密数据格式(cryptoblob)是一个填充均匀随机数据块(PURB):它看起来像随机数据,且大小具有随机性。这减少了来自文件格式和长度的元数据泄露,并允许将 cryptoblob 隐藏在随机数据中。
  4. 在容器文件和块设备内创建隐写(隐藏、不可检测)的用户驱动文件系统(tirdFS)。与 VeraCrypt 和 Shufflecake 不同,tirdFS 容器不包含头部;用户指定容器内数据的位置,并负责保持这些位置相互分离。文件或块设备中任何看起来随机的区域都可以用作容器。
  5. 使用时间锁加密防止快速访问解密后的数据。

tird 提供内置的可否认性,即使在容器外部存储加密文件时也是如此。它还帮助抵御胁迫下的密钥泄露攻击(橡胶软管密码分析、xkcd 538)。

[!WARNING] 在使用 tird 之前,请阅读“警告”一节。安全性不仅取决于工具,还取决于你的行为:安全的密钥存储、在安全环境中操作,以及避免使用真实数据进入调试模式。

格式稳定化和正式规范计划在 v1.0.0 中实现。

目标

  1. 文件保护: 确保对单个文件的保护,包括:
    • 使用经过认证的对称加密确保机密性和完整性。
    • 最小化元数据泄露,包括隐藏加密数据的存在。
    • 防止或抵御胁迫攻击。
  2. 稳定格式: 为长期存储维护稳定的加密数据格式,不追求密码敏捷性。
  3. 简洁性: 优先考虑简洁性,避免功能膨胀;拒绝实现与主要安全目标无直接关系的功能。

功能

  • PURB 格式加密数据块: 大小随机且内容均匀随机;元数据受限(仅泄露总大小——无头部、类型或明文线索)。
  • 填充并加密的注释: 不包含任何关于内容的明文线索。
  • 隐藏数据嵌入(可选): 将 cryptoblob 隐藏在随机/加密容器中,以实现可否认性。
  • 时间锁加密(可选): 基于 PoW 的慢速离线密钥派生,以延迟解密(反胁迫)。
  • 健壮的身份验证加密: 完全承诺、量子安全的 ChaCha20-BLAKE2b AEAD。
  • 强密钥拉伸: Argon2id(libsodium “sensitive” 配置文件)—— 1 GiB 内存、1 车道、4 次遍历(默认且最低)。
  • 任意密钥材料: 从口令、文件、块设备或目录派生密钥——顺序无关紧要。
  • 基于提示符的 CLI: 直观且交互式,无需记忆参数。
  • [TODO] 稳定、有文档的格式: 计划用于长期归档和互操作性。

用法

你无需记住命令行选项即可使用 tird。该工具采用基于提示符的 CLI:只需启动它,选择一个菜单选项,然后回答随后出现的问题即可。``` $ tird

                   MENU
———————————————————————————————————————————
0. Exit              1. Info & Warnings
2. Encrypt           3. Decrypt
4. Embed             5. Extract
6. Encrypt & Embed   7. Extract & Decrypt
8. Create w/ Random  9. Overwrite w/ Random
———————————————————————————————————————————

A0. SELECT AN OPTION [0-9]:

## 输入选项

共有 4 组输入选项:A (动作), D (数据), K (密钥), P (继续)。为便于描述,对它们进行了编号。```
+——————————————————————+————————————————————————+
| A0. SELECT AN OPTION | A. Select an action    |
+——————————————————————+————————————————————————+
| D1. INPUT FILE PATH  |                        |
| D2. COMMENTS         | D. Enter data,         |
| D3. OUTPUT FILE PATH |    data location,      |
| D4. OUTPUT FILE SIZE |    data size           |
| D5. START POSITION   |                        |
| D6. END POSITION     |                        |
+——————————————————————+————————————————————————+
| K1. KEYFILE PATH     | K. Enter values        |
| K2. PASSPHRASE       |    related to          |
| K3. TIME COST        |    key derivation      |
+——————————————————————+————————————————————————+
| P0. PROCEED?         | P. Confirm to continue |
+——————————————————————+————————————————————————+

A detailed description of these options with examples can be found here.

载荷

在创建 cryptoblob 期间将被加密的载荷由以下部分组成:

  • 单个文件的内容(可选): 普通文件或块设备(整个磁盘/分区)。如果省略,则加密一个空文件载荷。
  • 注释(可选): 任意 UTF‑8 字符串,最大 1 KiB。默认情况下,使用输入文件名。解密后会显示解密后的注释。

在 UI 中指定载荷的方式如下:``` D1. FILE TO ENCRYPT (OPT): files.zip I: path: 'files.zip'; size: 2,824,230,648 B (2.6 GiB) D2. COMMENTS (DEFAULT='files.zip'): The X-Files, zip (секретные материалы) I: comments will be shown as ['The X-Files, zip (секретные материалы)']

## 输入密钥材料

`tird` 提供使用密钥文件内容和口令来派生一次性密钥的选项。

- **密钥文件(可选):** 零个、一个或多个密钥文件路径;输入顺序无关紧要。密钥文件路径可以是:
  - 一个<ins>常规文件</ins>。密钥文件的内容将被哈希,其摘要将用于进一步的密钥拉伸和密钥派生。
  - 一个<ins>块设备</ins>。与常规密钥文件处理方式相同:内容将被哈希。
  - 一个<ins>目录</ins>。目录中的所有文件将被哈希并用作密钥文件。
- **口令(可选):** 经过 Unicode [规范化](https://www.unicode.org/reports/tr15/)(格式 C)后最多 2048 字节;可以省略。

在用户界面中指定 IKM 的方式如下:```
K1. KEYFILE PATH (OPT): key 
    I: path: 'key'; size: 32 B
    I: reading and hashing contents of 'key'
    I: keyfile accepted
K1. KEYFILE PATH (OPT): 
K2. PASSPHRASE (OPT): 
K2. CONFIRM PASSPHRASE: 
    I: passphrase accepted

加密数据格式

  • PURB 格式:
    • 数据看起来是随机的,且不包含任何可识别的头部;在缺少相应密钥的情况下,无法将其与随机数据区分开来。这一特性使得加密数据块可以隐藏在其他随机数据之中。
    • 随机化大小:填充长度在未填充加密数据块大小的 0% 到 25% 之间均匀随机选取(相当于最终加密数据块大小的最高 20%)。
  • 注释在加密前会被填充(或截断)到固定的 1 KiB 大小,从而完全隐藏其原始长度。
  • 双侧应用盐:覆盖加密数据块的起始或结尾部分(或存储不完整的加密数据块)将使成功解密变得不可能。
 显示加密数据块方案``` +————————————————————————————————————————————————————————+ | CSPRNG output: | | Salt for key stretching used with Argon2 (16 B) | +————————————————————————————————————————————————————————+ | ChaCha20 output: | | Encrypted pad_ikm (8 B) | +————————————————————————————————————————————————————————+ | CSPRNG/BLAKE2 output: | | Randomized padding (0-25% of the unpadded size) | | + MAC tag (32 B) | +————————————————————————————————————————————————————————+ | ChaCha20/BLAKE2 output: | | Encrypted payload file contents + MAC tags (0+ B) | +————————————————————————————————————————————————————————+ | ChaCha20/BLAKE2 output: | | Encrypted padded comments (1 KiB) + MAC tag (32 B) | +————————————————————————————————————————————————————————+ | CSPRNG output: | | Salt for pre‑hashing IKM used with BLAKE2 (16 B) | +————————————————————————————————————————————————————————+ ```

有关更多详细信息,请参阅规范。

低可观测性与元数据最小化

虽然加密消息的内容受到保护,但其大小、来源、目的地……却没有。数据被隐藏,元数据却被展示。有时,你的敌人仅凭这些就能揭开你的秘密。

— Loup Vaillant

我们基于元数据杀人。

— Michael Hayden


对比
  • PURB 格式:
    • 加密文件看起来像随机数据。
    • 加密文件的大小是随机化的:不暴露有效载荷大小。
  • 注释是恒定填充的,不暴露其大小或存在。
  • 无法证明输入的密钥是错误的。
  • 基于提示的 CLI:不会通过 shell 历史泄露已使用的选项。
  • 输出文件路径由用户定义,默认与输入文件路径无关。
  • 可选:将加密数据隐藏在容器中。

tirdFS — 用户驱动的隐写文件系统

下载工具