MKhizerButt/Galois-Field-Multiplier

GitHub: MKhizerButt/Galois-Field-Multiplier

一个针对 GF(2^3) 的同步 SystemVerilog 乘法器,旨在密码硬件中实现常数时间以抵御时序攻击。

Stars: 0 | Forks: 0

# 同步 $GF(2^3)$ 乘法器用于安全硬件 本仓库包含一个在 $GF(2^3)$ 上的有限域乘法器 SystemVerilog 实现,专为 AES 或椭圆曲线密码学等密码学应用设计。该设计使用原始多项式进行模约简,并采用同步电路实现。 ## 📁 项目结构 * GF_Multiplier.sv:可综合的 SystemVerilog 模块。 * test_GF_Multiplier.sv:全面测试所有输入组合的测试平台。 ## 🧮 数学背景 伽罗瓦域(有限域)运算是现代对称密码算法的基础。在 $GF(2^3)$ 中,元素表示为二次多项式。 * 加法:使用按位异或(XOR)执行。 * 乘法:执行标准多项式乘法,随后使用原始多项式(例如 $x^3 + x + 1$)进行模约简,以确保结果保持在域内。 ## 🛠️ 实现细节 该电路设计为同步电路,包含全局时钟和异步低电平复位信号。 ### 设计方法 1. 部分积(Partial Products):计算两个 3 位输入的乘积。 2. 模约简(Modular Reduction):由于原始乘积可达 $x^4$,设计使用条件异或(基于不可约多项式)将结果约简回 3 位域元素。 3. 流水线/延迟(Pipeline/Latency):当前实现在中间结果寄存器(inter_c1, inter_c2)中管理约简步骤,需要数个时钟周期以产生稳定的输出。 ### 硬件规范 * 输入:a[2:0]、b[2:0]、clock、reset * 输出:c[2:0] * 使用的原始多项式:$x^3 + x + 1$(通过约简逻辑实现) ## 🛡️ 安全分析:时序攻击 在安全硬件中,一个关键问题是设计是否容易受到时序分析攻击。 该设计是否易受攻击? * 答案:否。 * 原因:本实现中的操作与时钟同步。无论输入值($a$ 或 $b$)如何,结果始终在固定数量的时钟周期内传播到输出。因为执行时间与秘密数据(操作数)无关,攻击者无法通过测量计算完成时间来推断输入。 ## 🚀 使用方法 1. 克隆本仓库。 2. 将文件加载到你的 HDL 模拟器(例如 ModelSim、Vivado 或 Icarus Verilog)。 3. 运行测试平台以观察 $8 \times 8$ 输入矩阵的验证结果。
标签:AES, ASIC, ECC, FPGA, GF(2^3), RTL, SystemVerilog, x^3 + x + 1, 不可约多项式, 加密硬件, 反时序分析, 同步复位, 同步电路, 密码学加速器, 抗时序攻击, 时序侧信道防护, 有限域, 有限域乘法器, 椭圆曲线密码, 模约减, 硬件安全, 硬件描述语言, 综合