Skip to content

Latest commit

 

History

History
271 lines (193 loc) · 9.42 KB

README.md

File metadata and controls

271 lines (193 loc) · 9.42 KB

Abracadabra 魔曰

Abracadabra 魔曰

License GitHub commit activity C++ JavaScript

GitHub Release GitHub Repo stars

Abracadabra(魔曰) 是一个安全高效的文本脱敏加密工具,把特定的文本(例如链接)加密为乱序汉字。

由此使用户内容不易被自动过滤识别,减低封删率,增加审核成本。

请查阅 部署指南 快速开始使用本项目。

要深入了解本项目的设计思路,内部机制和最佳实践,请查阅 细节和使用指南

更多延申内容,例如本算法与同类产品的比较,请查阅 博客文章

特性

动画

  • 方便,密文可以描述自身。
  • 简短,密文简短方便传播。
  • 随机,加密结果具有随机性。
  • 无序,加密的文本如咒语般不可阅读。
  • 安心,密码表中已剔除敏感汉字。
  • 安全,AES256 + 三重转轮加密。

快速使用

请查阅 部署指南 来了解详细使用方法。

C++

前往 Release 页面下载构建,使用命令行调用程序。 使用参数 -h 查看命令帮助。

JavaScript

使用 npm 下载 Abracadabra 库。

你也可以前往 Release 页面直接下载Js文件。

npm install abracadabra-cn

然后,在项目中引入库文件

import { Abracadabra } from "abracadabra-cn";

静态页面

本项目有自动托管在Cloudflare Pages的静态页面可供直接使用。

如果你想自行快速部署这个静态页,请查阅前端源代码仓库。

浏览器插件

浏览器插件基于本项目的 JavaScript 实现。

已上架 Chrome WebStoreEdge 加载项

如果不方便访问 Chrome 插件商店,也可以访问 Edge 插件商店。

但 Edge 插件商店的上架审核速度十分缓慢,因此更新速度也更慢。

注意

Abracadabra 还在积极开发中,这里是一些注意事项。

密文污染

加密选择的标志位尽可能地排除了日常情况下出现碰撞的可能。

但有些极其特殊的时候,例如你正在尝试加密日语和中文夹杂的文本/文件,此时有可能出现污染现象。

如果出现污染现象,程序会立刻抛出错误并退出。

对于 C++版本,你可以指定 -f 强制加密,也可以指定 -g 忽略检查并继续尝试解密(通常不会成功)。

对于 JavaScript 版本,你可以选择强制加密来解决此问题。

细节概要

请查阅 细节和使用指南 了解更多

加解密过程

明文 -> 压缩 -> 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 来了解转轮的详细运行机制。

随机性

在映射为汉字的时候,每个字母/数字/符号均有多种可能性,完全随机选择。

这进一步降低了密文的规律性,让它看起来像毫无意义的汉字字符串。

最终的密文可能性为 65536*10^N,N为Base64字符串长度(近似正比于原文字节数)。

标志位

使用 日本和制汉字 与 汉语停用字 组成二字标志位,在密文中随机位置插入,不易察觉

标志位用来简化加解密操作流程,程序识别到加密标志位便会自动解密,无需用户手动指定解密,提高便利性。

功能比较

特性 Abracadabra 与熊论道 佛曰 兽音 Whisperer
开源
易用
加密
本地运行
短密文 🟡
随机性 🟡
抗识别
自判断
自校验
易部署 🟡

鸣谢

感谢 Unishox2 提供高效的短文本压缩方案。

感谢贡献 PR 和参与测试的所有人。

Star History

Star History Chart