《3-11736-计时攻击防护策略.pdf》由会员分享,可在线阅读,更多相关《3-11736-计时攻击防护策略.pdf(25页珍藏版)》请在三个皮匠报告上搜索。
1、1黄显明 博士20230615计时攻击防护策略及其在安全芯片中的应用计时攻击防护策略及其在安全芯片中的应用Timing Attack Countermeasures and Its Application in Security Chips2Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023计时攻击概述1计时攻击的防范策略2测试与验证3总结4演讲内容演讲内容3Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023计时攻击
2、概述1计时攻击的防范策略2测试与验证3总结4演讲内容演讲内容4一个简单的心理实验一个简单的心理实验 要求测试人员随意地把$28和$10分别放入如下两口不同颜色的锅中$28$10$10$28 然后请测试人员根据他的实际放入情况进行一个简单运算:蓝锅内的金额*10+橙锅内的金额*7 最后请测试人员告诉他的计算结果是奇数还是偶数。计算结果足以判断每个锅中的金额吗?5实验分析实验分析实际上28 7+10 10=296计算结果是偶数 10 7+28 10=350计算结果也是偶数 通过观测测试人员计算时所花费的时间长短来进行判断,对一般人来说,计算28 7+10 10=296 一定要比计算10 7+28
3、10=350 需要花费更长的时间。通过分析运算时间就可以从侧面推断出隐藏的放入状态。6Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023观测攻击观测攻击例如:功耗分析、计时攻击操纵攻击操纵攻击例如:物理修改,探测逻辑攻击逻辑攻击例如:协议误用,缓冲区溢出微芯片领域的攻击分类微芯片领域的攻击分类半侵入式攻击半侵入式攻击例如:激光错误注入,电源尖峰7Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023 半导体世界里,微控制
4、器的功耗会随代码序列和处理的数据集而变化,通过功耗信息的采集,结合检查处理时间的差异,可以在不安全的系统中恢复出机密信息。业界称之为计时攻击。一个不安全的微控制器系统,表现出由于不安全的硬件或软件而导致的数据依赖性。可以区分出加法、乘法和乘幂运算,甚至较大的值也可以与较小的值区分开。如果不保证对特定值的测试以及程序代码中随后的依赖分支的安全,则会出现相同的问题。一个最简单的计时攻击的例子 电影中经常出现的按位破解密码的场景-在紧张的情况下,主角用笔记本连接到系统,然后出现刷密码的界面,然后滚动密码,然后看到从左到右,密码一个个被确定,最后到完全匹配正确。某个函数负责比较用户输入的密码和存放在系
5、统内密码是否相同,如果该函数是从第一位开始比较,发现不同就立即返回。那么通过计算返回的速度就知道了大概是哪一位开始不同的,密码破解复杂度会成千上万倍甚至百万千万倍的下降。最简单的防护策略是:“发现错误的时候并不立即返回,而是设一个标志位,直到完全比较完两个字符串再返回”。计时攻击概述计时攻击概述8Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023一个最简单的计时攻击的例子一个最简单的计时攻击的例子PIN-VerifyGet PIN1.Digit ok?3.Digit ok?2.Digit ok?4.Dig
6、it ok?Return OKReturn FALSEYesYesYesYesNoNoNoNoPIN-VerifyGet PIN1.Digit ok?3.Digit ok?2.Digit ok?4.Digit ok?Return OKReturn FALSEYesYesYesYesNoNoNoNoSet DummyClear ERROR-FLAGSet ERROR-FLAGSet DummySet ERROR-FLAGSet DummySet ERROR-FLAGSet DummySet ERROR-FLAGERROR-FLAGset?YesNo9Copyright Infineon Tech
7、nologies AG 2023.All rights reserved.15 6月 2023 如果想在银行卡内进行PIN比较,以下将是一个简洁实现:将PIN码输入卡片并与参考值进行比较 如果比较正确,返回“正确”如果比较不正确,则增加“无效尝试”计数器 如果计数器3 返回 “再试一次”否则 “不允许进一步尝试”对芯片卡来说,相比于第二步回答正确,第四步的回答错误尝试由于增加了额外的计数器写入操作和计数器比较,所需的时间稍长,攻击者(在用一些卡片学习之后)可能做到只是在两个时间点之间切换电源,这意味着“无效尝试”计数器永远不会增加,攻击者将可以进行无限次尝试。因此,更好的实施方式是:将PIN码
8、输入卡中并增加“无效尝试”计数器 做比较;如果PIN正确,则将计数器设置为0并回答“正确”如果比较不正确并且计数器3回答“再试一次”否则“不再尝试”此实现确保在任何切换电源的情况下,攻击者的尝试次数不超过3次 计时攻击预防对策对于实现安全芯片和整个应用系统的安全具有重要意义。计时攻击示例计时攻击示例10Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023计时攻击概述1计时攻击的防范策略2测试与验证3总结4演讲内容演讲内容11Copyright Infineon Technologies AG 2023.Al
9、l rights reserved.15 6月 2023 计时攻击和功耗分析攻击(SPA和DPA)彼此之间有着非常密切的联系。如果微控制器的抗功耗分析防护不足,则有关时间依赖性的信息也可能会通过这些侧信道泄漏攻击者可能会测量重要功耗曲线之间的计时值 在密码学中,计时攻击是侧信道攻击的一种,攻击者通过分析执行密码算法所花费的时间来尝试破坏密码系统。密码芯片中的每个逻辑操作都需要花费时间才能执行,并且时间可能会因输入而有所不同。通过精确测量每个操作的时间,攻击者可以向后推导至输入。通过计时信息查找密钥可能比使用已知的明文-密文对的密码分析要容易得多。计时信息与密码分析结合在一起可以提高信息泄漏的比
10、率。在智能卡应用行业,很早就存在一种计时攻击方法,就是测量智能卡对身份验证挑战做出响应所花费的时间。攻击程序“TimeIt”和“SigPro”被用于某些付费电视卡。如果应答的发送速度明显快于平均响应时间,则会找到有效密钥。计时攻击的演进计时攻击的演进12Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023 Kocher计时攻击RSA算法 利用了简单的平方乘算法中密钥位为1 比 密钥位为0 时多执行一个模乘运算的特点,以及由此造成的加密时间与密钥的相关关系 1998年6月,在分析了300000个计时测试之后,
11、确定出了512位的RSA密钥。此攻击的总时间仅仅只有几分钟。2003年,Boneh和Brumley演示了基于SSL的Web服务器上基于网络的计时攻击,该攻击成功地在数小时内恢复了服务器私钥。该演示导致了后期盲化技术在SSL实现中的广泛部署和使用。盲化技术实现的目的就是为了消除密钥和加密时间之间的相关性。计时攻击的演进计时攻击的演进13Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023 计时数据相关性的可能来源 非本地内存访问,在具有数据高速缓存Cache的CPU上运行的软件会由于内存查找Cache而表现出
12、与数据相关的计时变化。有条件的跳转。现代CPU试图通过猜测来推测性地执行过去的跳转。猜测错误(在本质上是随机的机密数据中并不罕见)会导致CPU尝试回溯,因此可测得的延迟很大。一些“复杂的”数学运算,取决于实际的CPU硬件 整数除法几乎总是非恒定时间。当除数或除数较小时,CPU使用微码循环,该循环使用不同的代码路径。恒定时间防范策略 计时攻击在设计阶段通常被忽略,因为它们非常依赖于实现,并且可能在编译器优化中无意被引入。避免计时攻击就涉及对恒定时间函数的设计恒定时间函数的设计和对最终可执可执行代码的测试行代码的测试。可以以减少或消除与数据相关的计时信息的方式(恒定时恒定时间算法间算法)来实现许多
13、密码算法例如:考虑一种实现,对子例程的每次调用总是在精确的x秒内返回,其中x是在每个可能的授权输入上执行该例程所花费的最长时间。这样的实现中,算法的计时不会泄漏相关数据信息。但缺点是,所有执行所用的时间变成了函数最坏情况下的执行时间。计时攻击的通用防范策略计时攻击的通用防范策略14Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023 随机化 动态掩码经常被用于随机化。原始值将与选定的随机数进行异或XOR运算以获得掩码值。然后,将在系统中利用所选的随机数和掩码值。最后,两个值可以再次进行异或运算,并再次产生出
14、原始值。原始值O,所选随机数R,因此O XOR R=S,而S是掩码。在系统内将传输R和S。如果需要,S XOR R结果返回O。模运算扩展。原始值O可以扩展为乘以模数n的整数倍。O mod m=(O+(n*m)mod m。以带有12小时指针的时钟示例。如果显示1h或13h或25h或.,指针将显示在相同的方向如果在此系统中使用25,则模数运算的结果将与使用1或13时获得的结果相同。但观察者似乎总是观察到不同的值(一次1,一次25,另一次13,)。因此,n可以是随机整数值,并且每次计算都会产生不同的外观。虚拟计算 虚拟计算采用与所需计算相同的计算方式,且利用了随机且无用的数据和密钥。假设需要执行许多
15、计算,并且有4个虚拟计算(A,B,C和D)和1个所需的计算(r)。由此可获得以下序列:ABCDr,ABCrD,ABrCD,ArBCD,rABCD,而A,B,C和D的数据并不重要(因为不携带任何有用数据)。攻击者尝试仅观察r的计算。如果攻击者始终观察到第一个计算,他将在四种情况下观察到A且仅在一种情况下观察到r。因此,攻击结果弱了1:5。如果攻击者将观察第二、第三、第四或第五位置,也是如此。由于随机性和不可区分性,攻击者无法为每次计算选择正确的观察位置(r的计算)。结论是,虚拟计算可以减少发生侧信道攻击的风险。此外,还可以验证虚拟计算以进行正确的计算(已知答案测试),从而检测故障注入攻击。计时攻
16、击的通用防范策略计时攻击的通用防范策略15Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023 任何情况下,针对安全攻击的对策都将是软件和硬件功能的结合。所有与安全性相关的算法和程序代码都必须设计为与时间无关的。安全芯片将配备基于硬件的安全防范策略,以最佳方式协助软件达到高系统安全性的目标。安全芯片通过提供特殊的独立于时间的命令执行来阻止计时攻击。这些命令在系统时钟周期的相同计数内执行,与输入参数无关。MUL或DIV指令的执行时间通常取决于它们的操作数。可将MUL和DIV指令实现设计为固定的执行时间用来防止
17、计时攻击。例如,通常MUL a,b被实现为ADDING a的b次方(就像在一年级)。所以如果b比较大,时间就长;如果b比较小,时间就短。独立于时间的实现将总是运行一个循环,直到b值的最大值,然后要么加a,要么不加(0)。内部时钟发生器以及计时抖动可以抵抗计时攻击。内部时钟模式保证系统以恒定时钟运行,不依赖于外部接口。时间抖动模糊了真正的执行时间。高速缓存对执行的计时有影响,可以用作针对计时攻击的对策。高速缓存中条目锁定可获得更恒定的快速时序。在非对称算法(如SM2)的实现中,运算流程中加入了对敏感数据的随机数掩码;采用Montgomery Powering Ladder安全策略,这是一个在固定
18、时间内完成运算的算法级对策。因此它是抗计时攻击的。对称算法(如SM4)通过特殊的CPU硬件电路锁定了在密钥扩展、加密和解密过程中的保留敏感数据,S盒也被锁定,对S盒-box的访问就不会有计时攻击的危险;敏感数据掩码在不同块中也不同,可很好地防御计时攻击。安全芯片中的计时攻击防范策略安全芯片中的计时攻击防范策略16Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023 随机化被用来掩盖真正的操作 随机执行时间 多重并行处理 虚拟计算 防范策略可在软件中完成,但最好有硬件支持 平衡处理被用来减少数据依赖性 恒定时
19、间的指令 均衡的功率消耗 带有预充电的双轨逻辑 防范策略主要通过软件-硬件组合来实现 例如,带有软件库的加固协处理器安全芯片中的计时攻击防范策略安全芯片中的计时攻击防范策略17Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023计时攻击概述1计时攻击的防范策略2测试与验证3总结4演讲内容演讲内容18Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023 以某款安全芯片为测试对象,特别地,测试对象配备的专用软件可以支持SM2
20、/4算法的验证测试。测试的目的是至少验证所需的安全级别,以便根据应用程序的国际最新水平承受计时分析攻击。因此,它被用作产品生产发布的批准标准。测试将验证SM2/4算法实现对计时攻击(密码运算的时间与密钥值不存在显著的关联)采取的防护措施是否有效。测试方法及目的测试方法及目的19Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023 使用SM2算法对7组数据签名10次并计算所需时间的均值测试记录测试记录数据数据1随机明文,随机明文,32字节字节数据数据200000000000000000000000000000
21、00000000000000000000000000000000000数据数据3111111111数据数据42222222222222222222222222222222222222222222222222222222222222222数据数据5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF数据数据6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
22、AAAAAAAAAAA数据数据70123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF20Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023 使用SM4算法对7组数据加密10次并计算所需时间的均值测试记录测试记录明文明文1随机明文,随机明文,16字节字节明文明文200000000000000000000000000000000明文明文31111111111明文明文4222222222222
23、22222222222222222222明文明文5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF明文明文6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA明文明文70123456789ABCDEF0123456789ABCDEF21Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023 测试显示出与测试功能的处理没有计时相关性,在各种密码运算过程中,对不同数据计算所使用的时间无明显差异,未发现计时攻击风险点。因此,测试通过。安全芯片对计时攻击采取的防护措施有效。测试结论测试结
24、论22Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023计时攻击概述1计时攻击的防范策略2测试与验证3总结4演讲内容演讲内容23Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023 目前,针对计时攻击的安全防护策略已被设计出来并进行了测试不仅用数学建模和仿真测试,而且采用真实产品综合来测试。安全芯片提供了针对计时攻击的多种对策,并已在国际通用准则CC认证中证明了其有效性。符合保护框架PP0084的实现就包括了针对计时攻击的保护。作为针对安全挑战的合理方案,计时防护策略正在为信息安全应用项目打下持久的安全基础。结束语结束语24Copyright Infineon Technologies AG 2023.All rights reserved.15 6月 2023 通过异或操作来比较每一位,如果每一位都相等,两个字符串肯定相等,最后存储累计异或值的变量必定为 0 比较两个字符串是否相等(来自JDK8)safeEqual Java Play Framework彩蛋彩蛋25