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, 不可约多项式, 加密硬件, 反时序分析, 同步复位, 同步电路, 密码学加速器, 抗时序攻击, 时序侧信道防护, 有限域, 有限域乘法器, 椭圆曲线密码, 模约减, 硬件安全, 硬件描述语言, 综合