rshreya20/timing-side-channel-attack

GitHub: rshreya20/timing-side-channel-attack

一个演示计时旁路攻击原理的教学项目,展示如何通过密码验证的时间差异恢复密钥,并提供安全实现对照。

Stars: 0 | Forks: 0

# 计时旁路攻击演示 本项目演示了针对易受攻击身份验证系统的**计时旁路攻击**。 它展示了攻击者如何通过分析密码验证过程中的**响应时间差异**来恢复秘密密码。 ## 项目概述 在许多系统中,密码是**逐个字符**比较的。 如果每个正确字符之后都会发生延迟,系统就会通过**计时差异**无意中泄露信息。 攻击者可以通过以下方式利用这一点: - 发送多个密码猜测 - 测量身份验证系统的响应时间 - 根据较长的响应时间推断正确的字符 - 逐步重构整个密码 本项目模拟了该攻击,并演示了如何**缓解该漏洞**。 ## 演示的关键概念 - 旁路攻击 - 计时攻击 - 密码认证漏洞 - 安全的常量时间比较 - 自动化攻击脚本 - 安全缓解技术 ## 项目结构 SIDE_CHANNEL_PRJCT │ ├── password_checker.py ├── attack_script.py ├── secure_password_checker.py ├── vulnerable_server.py ├── timing_attack.py ├── timing_graph.py └── timing_results.txt ## 文件说明 ### password_checker.py - 模拟**易受攻击的身份验证系统** - 按顺序比较密码字符 - 在每个正确字符后引入延迟 - 造成计时旁路漏洞 ### attack_script.py - 执行**本地计时攻击** - 测量不同密码猜测的执行时间 - 逐个字符恢复密码 ### secure_password_checker.py - 演示**安全实现** - 使用常量时间比较(`hmac.compare_digest`) - 防止计时泄露 ### vulnerable_server.py - 实现**基于 Flask 的登录 API** - 模拟现实世界中易受攻击的 Web 身份验证系统 ### timing_attack.py - 向易受攻击的服务器发送自动化的 **HTTP 请求** - 测量响应时间 - 利用计时差异推断正确的密码字符 ### timing_graph.py - 可视化计时泄露 - 生成图表,显示响应时间如何随着正确字符的增加而增加 ### timing_results.txt - 存储攻击期间收集的计时测量数据 ## 攻击原理 1. 攻击者向系统发送多个密码猜测。 2. 系统逐个比较字符并产生延迟。 3. 如果匹配的字符越多,响应时间就越长。 4. 攻击者测量响应时间。 5. 攻击者识别导致最长延迟的字符。 6. 重复此过程,直到恢复完整密码。 ## 安全缓解措施 为了防止计时攻击: - 使用**常量时间比较函数** - 避免逐个字符的密码检查 - 实施适当的身份验证框架 安全比较示例: ``` import hmac hmac.compare_digest(user_input, real_password) ```
标签:CWE-208, Flask, hmac, Python, T1059, Web安全, 侧信道攻击, 安全漏洞演示, 密码学, 密码安全, 恒定时间比较, 手动系统调用, 攻击脚本, 无后门, 时序攻击, 时间延迟分析, 网络安全实验, 蓝队分析, 身份验证绕过, 逆向工具, 防御缓解