copyleftdev/kindi
GitHub: copyleftdev/kindi
一款面向固件与软件供应链的加密证据搜寻工具,利用 SIMD Aho-Corasick 与并行化实现高性能模式匹配。
Stars: 0 | Forks: 0
kindi
Cryptographic evidence hunter for embedded firmware and software supply chains.
Performance · Quick Start · Field Test · AI Output · Fuzzing · Website
以 **Al-Kindi**(801-873 CE)命名,这位阿拉伯博学者撰写了 *Risalah fi Istikhraj al-Mu'amma* —— 第一篇通过频率分析破解密码的已知论文。一千二百年后,Kindi 做了他做过的事:在文本中寻找隐藏的密码模式,但速度达到每秒 200 MB,使用 SIMD 加速的 Aho-Corasick 自动机。 ``` cargo install kindi ``` ## 性能 | Operation | Regex alternation | Kindi | Speedup | |---|---|---|---| | Keyword search (434 patterns) | 10,814 us | 332 us | **33x** | | API search (4,427 patterns) | 55,795 us | 318 us | **175x** | | Throughput | 1.2 - 6.1 MB/s | 199 - 208 MB/s | **33 - 175x** | ### 如何 传统扫描器构建 `(?:kw1|kw2|...|kw4427)` 并逐行运行 `re.finditer()`。这是每行 O(n * m) 的复杂度。 Kindi 将所有模式编译为一个 [Aho-Corasick 自动机](https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm) —— 单次 O(n) 扫描,内部的 SIMD `memchr` 循环,零分配搜索。词边界在匹配后强制执行。通过二分查找的 `LineIndex` 获取行号,并使用 Rayon 并行扫描文件。 ## 快速开始 ``` # 扫描固件源代码树 kindi --keywords patterns/keyword_list.txt --api-defs patterns/api_definitions.txt ./firmware # 二进制文件分析 kindi --keywords patterns.txt --scan-binary ./build/output # AI 代理模式(3 KB 而非 100 MB) kindi --keywords patterns.txt --toon ./target # 快速扫描 + CSV 导出 kindi --keywords patterns.txt --quick --csv -o results/ ./src # 过滤噪声 kindi --keywords patterns.txt --ignore-evidence-types generic,Hash ./src ``` ## 实地测试 四个传奇的 C 语言单仓代码库。相同的模式数据库。真实的基准测试。 | Repo | Files | Source | Hits | Time | Throughput | Toon | |---|---|---|---|---|---|---| | **Linux kernel** | 93,188 | 1.7 GB | 108,010 | 0.64s | 14K files/s | 3.5 KB | | **OpenSSL** | 6,098 | 144 MB | 272,051 | 1.03s | 5.9K files/s | 3.4 KB | | **Wireshark** | 7,256 | 357 MB | 48,923 | 1.40s | 5.2K files/s | 3.5 KB | | **FFmpeg** | 10,260 | 112 MB | 4,281 | 0.38s | 27K files/s | 2.7 KB | | **Total** | **116,802** | **2.3 GB** | **433,265** | **3.45s** | | **13 KB** | 所有四个 toon 输出合并总计:**3,272 tokens**。这仅占 1M token 上下文窗口的 **0.3%**。 ## 发现内容 48+ 种加密算法、协议和库调用: - **对称加密** -- AES、DES、3DES、Blowfish、Twofish、Camellia、ChaCha20、RC4、CAST5 - **非对称加密** -- RSA、DSA、ECC、Diffie-Hellman、ElGamal - **哈希** -- SHA-1、SHA-2、SHA-3、MD5、MD4、BLAKE、RIPEMD、HMAC - **协议** -- TLS、SSL、SSH、Kerberos、PKCS、PKI - **库** -- OpenSSL、libgcrypt、Crypto++、WinCrypt - **弱加密标记** -- DES(已由 NIST 弃用)、MD5(碰撞攻击)、SHA-1(NIST-2030)、RC4(偏差密钥流)、Blowfish(64 位块) ## AI 代理输出 `--toon` 压缩输出以便于 LLM 消费。对 Linux 内核的扫描生成 100 MB 的 JSON(26M token)。Toon 给出 3 KB(864 token)。压缩比 **30,228:1**。 ``` @kindi pkg=linux files=93188 hits=108010 matched=4909 t=0.934s #by_type count=8 AES 10804 908f drivers/crypto/atmel-aes.c:323 SHA2 3851 449f include/crypto/sha2.h:203 DES 2948 263f drivers/gpu/drm/amd/...:225 #weak count=4 DES 2948 263f DEPRECATED:NIST-withdrawn MD5 1193 219f BROKEN:collision-attacks SHA1 1364 330f DEPRECATED:NIST-2030 RC4 87 12f BROKEN:biased-keystream #hot top=3 1010 drivers/crypto/inside-secure/safexcel_cipher.c AES,DES,SHA1 940 drivers/crypto/axis/artpec6_crypto.c AES,SHA2,HMAC 927 drivers/md/dm-crypt.c AES,HMAC,MD5 #methods keyword 107562 api 448 ``` 设计原则: - 我(AI)永远不需要全部 N 个匹配项。我需要聚合结果和深入分析能力。 - 重复的 JSON 字段名是纯粹的令牌浪费。位置格式消除了它们。 - 证据按类型分组,而非按文件分组。这是提问的方式。 - 弱加密预先分类。不要让我查阅训练数据来确认 NIST 状态。 - 省略上下文行(占 JSON 体积的 70%)。在深入分析模式下可用。 ## 架构 ``` src/ pattern.rs -- Aho-Corasick SIMD automaton, per-pattern \b word boundaries detect.rs -- Rayon parallel scanning, encoding fallback, method tracking extract.rs -- Archive extraction, SHA-256 cycle detection, path sanitization toon.rs -- Token-optimized output with weak crypto classification language.rs -- File classification (13 languages + binary) output.rs -- Crypto-spec v3.0 JSON + CSV error.rs -- Typed errors main.rs -- CLI ``` ### 内存安全 零 `unsafe`。生产代码中零 `unwrap()`。每个热路径索引都经过边界检查的 `.get()`。 | 防护 | 机制 | |---|---| | 缓冲区溢出 | `PathBuf`、`Vec`、`.get()` 边界检查 | | 空指针引用 | 每个 I/O 边界使用 `Result标签:Aho-Corasick, AI代理模式, Al-Kindi, cargo, Rayon, Rust, SIMD, 二进制分析, 云安全运维, 关键词猎手, 内存安全, 加密, 取证, 可视化界面, 固件分析, 安全扫描, 密码分析, 密码学, 嵌入式安全, 并行计算, 开源安全工具, 快速搜索, 性能优化, 手动系统调用, 文本挖掘, 时序注入, 检测绕过, 模式匹配, 漏洞扫描器, 网络流量审计, 自动化资产收集, 软件供应链, 逆向工程平台, 通知系统, 零不安全, 频率分析