Coder-cci/Absoluta

GitHub: Coder-cci/Absoluta

一个实现了变体一次性密码本的对称加密系统,通过扩展字符集、随机 salt 插入和 XOR 掩码追求完善保密性。

Stars: 0 | Forks: 0

# Absoluta 一个实现了变体一次性密码本(one-time pad)的密码学系统,具备扩展字符集和 salt 插入机制。 ## 概述 Absoluta 是一个对称加密系统,通过结合大型密文字母表、随机 salt 插入和 XOR 掩码来实现完善保密性(perfect secrecy)。根据所选的密码字母表,该系统为每个源字符提供从数十亿到数百上万亿种可能的组合。 ## 核心算法 ### 关键组件 - **Seed**:32 个十六进制字符(128 位熵) - **Salt 概率**:3 位数字值(000-999),控制 salt 插入频率 - **位置权重**:三个数字(0-3),决定 salt 放置的概率 - **密码字母表**:从外部文件加载的 Unicode 字符集(支持多种字母表) ### 加密过程 对于每个源字符: 1. 将源字符转换为其在源字母表中的索引(ASCII 为 0-94) 2. 从密码字母表中生成随机 Y 值 3. 根据概率参数确定是否存在 salt 4. 如果存在 salt: - 使用循环权重算法选择 salt 位置 - 生成随机 salt 值 - 按确定的顺序构建三元组 [salt, X, Y] 5. 如果没有 salt: - 构建二元组 [X, Y] 6. 将所有索引转换为密码字母表符号 ### Salt 位置选择 系统使用具有可配置权重的循环选择算法: - 权重 0:0% 概率 - 权重 1:33% 概率 - 权重 2:66% 概率 - 权重 3:99% 概率 循环检查位置(左 -> 中 -> 右 -> 重复),直到发生选择为止。 ### XOR 掩码 在主加密之后,应用 XOR 掩码: 1. 使用以 key 为 seed 的独立 RNG 生成与中间密文长度相同的掩码 2. 将每个密文符号索引与对应的掩码值进行 XOR 运算 3. 将生成的索引转换回密码字母表符号 这确保了雪崩效应:在 seed 中更改一位将完全改变最终的密文。 ## 密码字母表 系统支持存储在 `alphabets\` 文件夹中的多种密码字母表: - **alphabet1635.txt**:1,635 个独特的 Unicode 字符 - **alphabet5483.txt**:5,483 个独特的 Unicode 字符 - **alphabet40326.txt**:40,326 个独特的 Unicode 字符 程序会自动: - 扫描 `alphabets\` 文件夹中的所有 `.txt` 文件 - 计算每个文件中的实际字符数 - 在界面中显示实际大小 - 按需加载选定的字母表 ## 安全属性 ### 组合复杂度 下表显示了在使用不同字母表的情况下,不同明文长度所对应的可能组合数。 | 字母表 | 实际大小 | 1 个字符 | 10 个字符 | 100 个字符 | 1000 个字符 | |----------|-----------|--------|----------|-----------|------------| | alphabet1635.txt | 1,635 | ~4.37×10⁹ | ~10⁹⁶ | ~10⁹⁶⁰ | ~10⁹⁶⁰⁰ | | alphabet5483.txt | 5,483 | ~4.95×10¹¹ | ~10¹¹⁷ | ~10¹¹⁷⁰ | ~10¹¹⁷⁰⁰ | | alphabet40326.txt | 40,326 | ~1.97×10¹⁴ | ~10¹⁴² | ~10¹⁴²⁰ | ~10¹⁴²⁰⁰ | ### 密钥空间 - Seed:2¹²⁸ 种可能值 - Salt 概率:1000 种变体 - 位置权重:64 种变体 - 总密钥数:约 2¹⁴⁴ ≈ 2.2×10⁴³ ### 密码学强度 - 通过 XOR 掩码实现完全的雪崩效应 - 由于每个字符具有多种表示形式,因此能够抵抗频率分析 - 明文与密文之间没有确定性关系 - 当密钥是真正随机的且只使用一次时,具有数学上的完善保密性 - 更大的字母表会呈指数级提高安全性 ## 系统要求 - Python 3.8 及更高版本的解释器 - `alphabets\` 目录中至少有一个密码字母表文件 - 基本上,要运行该程序,您只需将 `alphabets\` 文件夹和 `absoluta.py` 文件放在同一目录下即可 ## 用法 1. 使用任何 Python 3.8 及更高版本的解释器执行 `absoluta.py` 2. 选择源字母表(ASCII、俄语或数学符号) 3. 在输入字段中输入文本 4. 从下拉菜单中选择密码字母表(程序会显示实际字符数) 5. 配置密钥参数: - Seed(32 个十六进制字符,可自动生成) - Salt 概率(000-999) - 位置权重(每个位置为 0-3) 6. 选择模式(加密或解密) 7. 点击“Execute” 8. 结果将显示在输出字段中 系统会在加密或解密之前验证所有参数,并为无效的输入提供清晰的错误提示。 ## 添加自定义字母表 要添加您自己的密码字母表: 1. 创建一个包含所需 Unicode 字符的 `.txt` 文件 2. 将其放在 `alphabets\` 文件夹中 3. 程序会在下次启动时自动检测到它 4. 实际字符数将显示在下拉菜单中 该程序支持任何包含 Unicode 字符的 UTF-8 或 UTF-8-BOM 编码的文本文件。
标签:DNS 反向解析, 一次性密码本, 加密算法, 安全工具库, 密码学, 对称加密, 手动系统调用, 自动化审计, 被动侦察, 逆向工具