cyberaionics/Kyber-KEM

GitHub: cyberaionics/Kyber-KEM

基于第一性原理从零实现 Ring-LWE 格密码系统的教学项目,展示 NIST 标准 CRYSTALS-Kyber 的核心数学原理。

Stars: 0 | Forks: 0

# Baby-Kyber:基于第一性原理的 Ring-LWE 密码系统 ![Python](https://img.shields.io/badge/Python-3.10%2B-blue) ![Cryptography](https://img.shields.io/badge/Domain-Post--Quantum_Cryptography-success) ![Status](https://img.shields.io/badge/Status-Active_Development-orange) ## 概述 本代码库包含一个基于 **Ring-Learning With Errors (Ring-LWE)** 困难问题的后量子密码学 公钥加密方案的从零开始实现。 作为一个教育研究项目,本项目有意避免使用高级密码学库或优化的数学模块(如 NumPy),旨在展示对多项式环算术、随机噪声分布和基于格的密码机制的基础理解。该架构紧密镜像了 NIST 标准化的 **CRYSTALS-Kyber** 算法的基础逻辑。 ## 数学基础 该方案的安全性依赖于在多项式环上区分带噪声线性方程与均匀随机数的困难性。 * **环:** 算术运算在多项式环 $\mathcal{R}_q = \mathbb{Z}_q[X] / (X^n + 1)$ 上进行。 * **参数:** 映射到 Kyber-512 规范: * 维度 ($n$):256 * 模数 ($q$):3329 * **负循环性质:** 多项式乘法依赖于回绕性质,其中 $X^n \equiv -1 \pmod q$。 ## 项目架构 系统分为多个模块化组件,将代数引擎与密码协议分离: * `config.py`:全局参数 ($n, q$) 和系统常量。 * `poly.py`:核心代数引擎。处理逐元素的加法/减法以及带模归约的 $O(n^2)$ 多项式乘法。 * `kyber.py`:*(进行中)* 实现公钥基础设施 (PKI): * **KeyGen:** 生成秘密向量和计算带噪声的公开矩阵。 * **Encrypt:** 将消息编码映射到多项式中的高/低能量状态。 * **Decrypt:** 剥离随机噪声并恢复明文比特的纠错逻辑。 ## 算法复杂度与优化 目前,多项式乘法是使用标准的教科书方法实现的,时间复杂度为 $O(n^2)$。 为了满足竞争性算法环境中所需的严格效率标准,项目的下一阶段将用 **Number Theoretic Transform (NTT)** 替换此方法,将乘法时间复杂度降低到 $O(n \log n)$。这对于在实际部署中防御计时旁路攻击至关重要。 ## 未来路线图:系统级移植 虽然 Python 用作数学原型,但高性能密码学需要严格的内存控制和恒定时间执行。本项目的未来迭代将包括: 1. **裸机 C 翻译:** 将代数引擎移植到纯 C99,利用仅栈内存分配来模拟嵌入式硬件约束。 2. **内核级集成:** 探索将此 PQC 逻辑集成为 Linux Kernel Module,以测试高性能、低延迟的密码学握手。 *为量子信息安全领域的研究与探索而开发。*
标签:CRYSTALS-Kyber, Kyber-512, NIST标准化, PQC, Python, Ring-LWE, 从零实现, 公钥加密, 同态加密基础, 后量子密码学, 多项式环算术, 密码学教育, 数学原理, 无后门, 格密码学, 离散数学, 算法实现, 网络信息安全, 零依赖