abracadabra-cn v3.0.10
Abracadabra 魔曰
Abracadabra(魔曰) 是一个安全高效的文本脱敏加密工具,对任意给定数据进行处理。
由此使数据不易被自动过滤识别,减低封删率,增加审核成本。
请查阅 部署指南 快速开始使用本项目。
要深入了解本项目的设计思路,内部机制和最佳实践,请查阅 细节和使用指南
更多延申内容,例如本算法与同类产品的比较,请查阅 博客文章
特性
- 仿真,使用文言语法句式。
- 简短,密文简短方便传播。
- 随机,加密结果具有随机性。
- 安心,密码表中已剔除敏感汉字。
- 安全,AES256 + 三重转轮混淆。
- 双模式,同时支持仿真加密和传统加密。
古文仿真:下一代防和谐解决方案
虽无灯花之看,亦旅以良开临韵,鹏欲至物航定,但霞梦诚返,鹂当信花泊放,却风森良进,以书现,若走花度岩,舒鸢临笑,兰镜善停。
此语有绚绸悠褔,慧涧聪岩,不夏也,鸳可言云探问,且铃涧远奏,茶想彰花称选,且书雪轻赴,此雪有谜鸳少梦,极天莹空,今现韵以泊良雨,以岩,当去瑞花,非韵买鸢所当良画,不可去也。
生成高仿真文言文,参考康熙二十三年《古文观止》真实语料。
与传统方案一致的高强度加密,更复杂的组句/语法选择机制,更先进的消息隐写。
将链接和短文本隐写在似是而非的文言文中,骗过所有传统检测,甚至大语言模型(结果因模型而异)。
密文高度随机,支持用户自行选择密文的随机性。
快速使用
请查阅 部署指南 来了解详细使用方法。
旧的 C++ 版本已被废弃,不再受后向兼容维护。
JavaScript
使用 npm 下载 Abracadabra 库。
你也可以前往 Release 页面直接下载Js文件。
npm install abracadabra-cn然后,在项目中引入库文件
import { Abracadabra } from "abracadabra-cn";WebAssembly
前往 Release 下载编译好的 WebAssembly 文件。
然后,使用 wasmtime 来调用它。
echo '{"method":"NEXT","mode":"ENCRYPT","inputType":"TEXT","outputType":"TEXT","input":"测试","key":"ABRACADABRA","q":true,"r":50}' | wasmtime abracadabra-cn.wasm本项目的 WebAssembly 模块使用 Javy 编译而来,方便在 C++、Rust、Go 等语言中调用,不推荐在类似 Python、 Java、Node.js 的解释器中调用。
要调用本 WebAssembly 模块,需要使用尚在预览状态的 WASI,目前仅有 wasmtime 提供了最完整的 WASI 支持,但它在各个语言的实现并不一致,具体请见 部署指南。
静态页面 / 前端源码
本项目有自动托管在Cloudflare Pages的静态页面可供直接使用。
如果你想自行快速部署这个静态页,可以在Release中下载快速部署文件包。若要自行编译或修改,请前往前端源代码仓库。
浏览器插件的源码同样在前端源代码仓库,位于crx分支。
浏览器插件
浏览器插件基于本项目的 JavaScript 实现。
已上架 Chrome WebStore, Edge 加载项 和 Firefox 扩展。
如果不方便访问Chrome插件商店,也可以访问Edge插件商店,和Firefox扩展商店。
提示:Edge 插件商店的上架审核速度十分缓慢,因此更新速度也更慢。不推荐从Edge商店下载本插件。
注意
Abracadabra 还在积极开发中,这里是一些注意事项。
密文污染(传统加密)
加密选择的标志位尽可能地排除了日常情况下出现碰撞的可能。
但有些极其特殊的时候,例如你正在尝试加密日语和中文夹杂的文本/文件,此时有可能出现污染现象。
如果出现污染现象,程序会立刻抛出错误并退出。
你可以选择强制加密来解决此问题。
细节概要
请查阅 细节和使用指南 了解更多
加解密过程
明文 -> 压缩 -> AES-256-CTR -> Base64 -> 三重转轮 / 映射汉字 / 组句(仅仿真加密)-> 密文
密文 -> 解仿真(仅仿真加密) -> 转轮逆映射 -> Base64 -> AES-256-CTR 解密 -> 解压缩 -> 明文映射表
Abracadabra 以最常用的 3000 个汉字为密本,对大小写拉丁字母,阿拉伯数字和部分符号进行映射。
密表为纯人工编纂,剔除了可能随机组成敏感词的汉字,不含任何贬义字。
映射表公开可查,查阅 映射表(传统) 或者 映射表(仿真) 以了解密本的全貌。
AES-256-CTR
核心安全性由久经考验的 AES 加密算法提供,采用无填充的AES-256-CTR,节省密文长度。
AES 加密密钥和转轮密钥是同一个,均采用哈希值。
三重转轮混淆
模拟古老的转轮,每次加密均会对密本映射进行偏移。
简言之,程序会将给定的密钥进行 SHA256,得到一个长度为 32 的 Uint8_t 数组。
这个数组中的每个数字,都会决定三重转轮中每个转轮每次迭代的转动方向和转动距离。
数字/符号,字母分别拥有一套转轮,即总共六个转轮,改变密钥相当于更换一套完全不同的转轮。
转轮显著增加了 Base64 密文的安全性,查阅 Issue#30 来了解转轮的详细运行机制。
随机性
在映射为汉字的时候,每个字母/数字/符号均有多种可能性,完全随机选择。
这进一步降低了密文的规律性,让关键词分词识别难以奏效。
功能比较
鸣谢
感谢 Unishox2 提供高效的短文本压缩方案。
感谢贡献 PR 和参与测试的所有人。
Star History
8 months ago
8 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago