关于侧信道攻击


侧信道攻击——是一种利用计算机不经意间释放出的信息信号(如功耗,电磁辐射,电脑硬件运行声)来进行破译的攻击模式:例如,黑客可以通过计算机显示屏或硬盘驱动器所产生的电磁辐射,来读取你所显示的画面和磁盘内的文件信息;或是,通过计算机组件在执行某些程序时需要消耗不同的电量,来监控你的电脑;亦或是,仅通过键盘的敲击声就能知道你的账号和密码。

2017年一段昆明小学生“听声音”徒手解开ofo共享单车密码锁的视频流传于网络,视频中该小学生通过不断扭动密码盘来尝试解锁,仅用17秒便成功解开了车锁,这种是通过声音信号的侧信道来推测密码组成。
另一种侧信道是通过图像的隐蔽信道来传递机密信息,越南战争中美国战俘Jeremiah Denton在1966年由北越组织的采访中发送莫尔斯电码,翻译出来就是-/- - -/.-. /- /. . - /.-. /. TORTURE(虐待)。

调节转盘通过内部机械声打开保险柜

所谓侧信道,就是与主信道相对的,加密信息通过主信道进行传输,但在密码设备进行密码处理时,就像图2展示的一样,会通过侧信道泄露一定的功耗、电磁辐射、热量、声音等信息,泄露的这些信息又随着设备处理的数据及进行的操作的不同而有差异(比如输入0输出0肯定比输入1输出0耗能少,少了由1到0的转化过程;条件分支指令肯定比算术运算指令耗能少,这是由其硬件决定的)。攻击者就通过分析信息之间的这种差异性来得出设备的密钥等敏感信息。即本质上是利用了设备能量消耗的数据依赖性和操作依赖性。

水杯注水的"时间”、水杯里的水有多少又为“能量"

通常我们设计算法的时候,我们考虑的是输入和输出。我们不会考虑程序运行时发生的其他事情。"密歇根大学的计算机科学家、侧信道攻击的主要研究者Daniel Genkin说:"但计算机不是在纸面上运行的,而是在物理上运行。当你从纸上转移到物理时,就会有各种各样的物理效应的计算:时间、能量、声音。侧信道攻击利用其中的一种效应来获取更多的信息,并搜集算法中的秘密。

局限性:

1.干扰源:接收声音信号时一旦遇到噪音,信号将会严重失真
2.速度慢:每次只能传输一个字符,遇到几M的文件将会传输非常久,进一步增加了不确定性。

攻击类型:
● 错误攻击

考虑篡改设备上的密码系统,观察密码设备的一些错误操作,期望从错误行为的结果中推导出秘密参数。

● 时间攻击

利用密码系统的密钥与运行时间的关系来进行攻击的方法,与其它侧信道攻击相比,这种攻击方法几乎不需要什么特殊设备。

● 能量攻击

通过分析密码设备的能量消耗获得其密钥。常见的有SPA和DPA等攻击方式。

● 电磁攻击

通过高精度电磁探头多次采集目标产品工作时电磁辐射强度变化,再辅助以信号处理方式重建信号,利用DPA思想推演目标产品的密钥。

● 其他

故障攻击、基于缓存的攻击、基于扫描的攻击、光学辐射攻击、基于频率的攻击、组合攻击、声音攻击等。


事件:
熔断漏洞(CVE-2017-5754)漏洞,幽灵漏洞包括边界检查绕过(CVE-2017-5753)和分支目标注入(CVE-2017-5715)还有英特尔CPU曝出严重漏洞,SGAxe攻击:从SGX Enclave中窃取敏感数据(CVE-2020-0549)和CrossTalk攻击:从CPU核心窃取信息(CVE-2020-0543)

现代CPU为加快执行速度,在执行分支语句时,会依据以前的执行路径进行预测执行,如果预测执行的路径正确,则可加快执行速度,即使预测执行的路径错误,也不会降低执行速度。

攻防世界MISC有一道侧信道初探的题目



打开后有俩张图片,貌似是根据第一张图片的代码意思去解密第二张图片信号波动隐藏的信息
在第一张图片中k代表密钥 𝒌=(𝑘i-1, …, 𝑘o),将最终结果的O递归到密钥算法矩阵R,在for循环里有个if条件判断语句,判断每轮密钥替换是否为1,如果为1,则将每两轮的矩阵R再加上功耗消耗的P,重新递归到新一轮的矩阵R,不进入if条件判断则能量消耗会少一些,不再增加功耗消耗P。


最后的flag为:flag:SCTF{0110111010}

<think>嗯,用户想了解PHP中与侧信道攻击相关的安全问题及防护措施。首先,我需要明确侧信道攻击的定义和常见类型,比如时间攻击、缓存攻击、错误信息泄露等。然后,结合PHP的特性,分析哪些地方容易受到这些攻击,例如比较字符串时的时间差异,或者通过错误信息获取敏感数据。 接下来,我需要回忆PHP中有哪些内置函数或常见做法可能导致侧信道漏洞。比如,使用==进行字符串比较可能存在时间差,或者错误处理不当暴露路径信息。然后,查找相关的防护措施,比如使用hash_equals()代替普通比较,或者禁用错误回显。 还要考虑用户提到的引用内容,虽然引用1和3主要涉及浏览器漏洞和安全存储,但可能可以关联到PHP中的安全实践,比如安全存储密钥或防止信息泄露。引用2关于OAuth的安全性分析,可能与身份验证中的侧信道防护有关,但需要具体联系到PHP的实现。 另外,用户要求生成相关问题,我需要确保问题涵盖攻击类型、防护函数、实际案例等,帮助用户深入理解。同时,注意使用正确的中文表达,避免术语混淆,并按照系统指令正确使用LaTeX格式,比如变量用$...$包裹。 最后,检查回答结构是否清晰,分点说明攻击类型和对应措施,引用相关文献,并确保所有建议基于PHP的最佳实践,比如官方文档推荐的方法。可能还需要提及配置调整,如错误报告设置和使用最新版本的PHP以获得安全更新。</think>### PHP侧信道攻击安全防护措施 #### 一、常见PHP侧信道攻击类型 1. **时间侧信道攻击** - 字符串比较漏洞:普通字符串比较函数(如`==`)执行时间与输入长度相关,攻击者可利用时间差推断敏感信息 - 密码验证漏洞:`md5()`/`sha1()`等哈希函数在等长输入时可能产生可检测的时间差 *防护方案:使用`hash_equals()`进行恒定时间比较[^3]* 2. **错误信息侧信道** - 数据库错误暴露表结构 - 文件操作错误泄露服务器路径 *防护方案:设置`display_errors = Off`并记录到安全日志* 3. **缓存攻击(Cache-timing)** - 通过监测CPU缓存访问模式推断加密密钥 - 常见于未使用恒定时间算法的加密操作 #### 二、关键防护技术 1. **恒定时间算法实现** ```php // 正确做法:使用openssl扩展的恒定时间函数 if (openssl_compare($secret, $user_input) === 0) { // 验证通过 } ``` 2. **密码安全处理** - 必须使用`password_hash()`和`password_verify()` - 禁止手动实现加密逻辑(如自行拼接盐值) 3. **内存安全防护** ```php // 敏感数据使用安全内存区域 sodium_memzero($secret_key); // 显式清除内存 ``` 4. **错误处理强化** ```ini ; php.ini配置 expose_php = Off log_errors = On error_log = /var/log/php_errors.log ``` #### 三、进阶防御策略 1. **使用Libsodium扩展** - 提供抗侧信道攻击的加密原语 - 支持`\Sodium\crypto_pwhash()`等安全函数 2. **请求时间随机化** ```php usleep(random_int(100, 300)); // 添加随机延迟干扰时间分析 ``` 3. **代码流混淆** ```php // 通过控制流平坦化增加逆向难度 $check_steps = [false, true]; shuffle($check_steps); foreach ($check_steps as $step) { if ($step) validate_session(); } ``` #### 四、开发规范建议 1. 禁用危险函数:`eval()`, `exec()`, `system()`等 2. 所有加密操作必须通过OpenSSL/Libsodium扩展实现 3. 会话管理使用`session_regenerate_id(true)`定期刷新 4. 使用准备好的语句防止SQL注入:`PDO::prepare()`
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值