itu-itis24-yeterb24/Time-Based-Side-Channel-Attacks-on-String-Comparison-Algorithms
GitHub: itu-itis24-yeterb24/Time-Based-Side-Channel-Attacks-on-String-Comparison-Algorithms
针对不安全字符串比较函数实现基于时间的旁路攻击演示,并提供常量时间比较的安全修复方案。
Stars: 0 | Forks: 0
# SEC 211E - 密码学基础
## 项目 3:基于时间的旁路攻击
**姓名:** Berra Deniz Yeter
**学号:** 150240426
**院校:** 伊斯坦布尔理工大学
### 概述
本项目演示了针对易受攻击的字符串比较算法的基于时间的旁路攻击。它使用高分辨率 CPU 硬件计数器(`cntvct_el0`)和统计噪声过滤(最小周期逻辑)来逐字符提取一个 16 字符的机密密码。此外,还提供了一个在数学上对这类攻击安全的常量时间比较实现。
### 目录内容
- `attack_code.c`:针对不安全的字符串比较函数的旁路攻击实现。
- `secure_code.c`:使用按位异或(XOR)和或(OR)操作的安全的常量时间字符串比较函数实现。
- `report.pdf`:涵盖漏洞分析、方法论和实验结果的详细项目报告。
- `presentation.pdf`:项目演示所使用的幻灯片。
### 环境要求
- 代码使用特定于 ARMv8-A 架构的内联汇编(`mrs %0, cntvct_el0`)来读取虚拟计数器。
- 专为在运行 macOS 的 **Apple Silicon(M 系列)** 处理器上编译和执行而设计。
### 编译和执行
**1. 编译并运行易受攻击的攻击脚本:**
```
gcc attack_code.c -o attack
./attack
```
**2. 编译并运行安全的常量时间脚本:**
```
gcc secure_code.c -o secure
./secure
```
### 注意事项
- 该攻击通过每个字符执行目标函数 10,000 次并选取绝对最小执行周期,过滤掉了操作系统上下文切换产生的噪声。
- `secure_code.c` 证明了常量时间范式(constant-time paradigms)的有效性,因为无论输入字符如何,执行时间都保持一致,从而有效地缓解了旁路漏洞。
标签:ARMv8, 侧信道攻击, 客户端加密, 密码学, 常数时间实现, 手动系统调用, 时间侧信道