Harpuneet-Singh/CS641_Course_Project
GitHub: Harpuneet-Singh/CS641_Course_Project
一个应用密码学课程项目,实现了 AES-128 加解密流水线、单表密码频率分析以及相关性功耗分析侧信道攻击。
Stars: 0 | Forks: 0
# 应用密码学 (CS641) 课程项目
本仓库包含了我针对印度理工学院坎普尔分校(IIT Kanpur)CS641 应用密码学课程的实现代码和报告,该课程由 Udaya Parampalli 教授(墨尔本大学)授课。
## 概述
### 1. 单表密码分析 (`Monoalphabetic_Cryptanalysis.ipynb`)
针对单表替换密码的频率分析攻击。我使用了二元/三元组统计以及迭代密钥恢复技术,对未知的英文密文进行了解密。
### 2. AES-128 实现 (`AES_128_Implementation.ipynb`)
在 Python 中从零开始构建的完整 AES-128 加密与解密流水线,未使用任何外部加密库。
我的实现内容包括:
- 用于 MixColumns 的 `GF(2^8)` 伽罗瓦域算术运算
- 完整的 Rijndael 密钥扩展方案
- AES 全部四种轮操作(SubBytes、ShiftRows、MixColumns、AddRoundKey)
- 带有字节级填充的 CBC(Cipher Block Chaining,密码块链接)模式加密与解密
### 3. 相关性功耗分析 (`Correlation_Power_Analysis.ipynb`)
针对 AES 硬件实现的侧信道攻击。我使用了统计方法,从物理功耗轨迹中提取了秘密的加密密钥。
该攻击的工作原理如下:
- 利用中间 SubBytes 输出的汉明重量(Hamming Weight)来建立理论功耗模型
- 计算假设功耗值与实际测量轨迹之间的皮尔逊相关系数(Pearson correlation coefficient)
- 分别从 8 位 AES-128 和 32 位 AES-256 解密实现中,逐字节恢复完整的轮密钥
## 仓库结构
```
├── Monoalphabetic_Cryptanalysis.ipynb # Frequency analysis attack
├── AES_128_Implementation.ipynb # Complete AES-128 pipeline + CBC mode
├── Correlation_Power_Analysis.ipynb # CPA side-channel attacks
├── docs/
│ ├── AES_128_Implementation_Report.pdf
│ └── Correlation_Power_Analysis_Report.pdf
└── README.md
```
## 报告
`docs/` 文件夹包含了这两次作业的详细理论分析和书面解答,包括安全性证明和数学推导。
标签:AES, NoSQL, Python, 侧信道攻击, 密码学, 手动系统调用, 教学项目, 无后门, 相关性功耗分析, 逆向工具