侧信道攻击的基本原理
通常,密码算法(或密码方案)在实际应用中都会实现在具体的硬件平台上,形成密码模块、密码芯片、密码系统等,从而完成所需的密码功能,用于满足特定的信息安全需求。这些具备密码功能的模块(芯片或系统)统称为密码实现,它们均实现在特定的数字电路中,而数字电路单个基本单元只有0和1两种状态。我们以装不同水量的玻璃杯发声不同为例说明如何利用数字电路的状态特征进行密码破解。如下左图中ABCD四个杯子中水量不同,仅通过区分敲击四个杯子所发出声音的不同即可轻易分辨出ABCD中的单个杯子。因此,可以用右图中“空杯”和“满杯”来分别模拟数字电路中的“0”和“1”,数字电路执行操作的过程可以看作杯子中水不断清空和装满的过程。因而显然,0à1和1à0两种状态变换需要花更多的“时间”和“能量”,也会产生其他潜在“影响”。换句话说,如果我们能够有效检测和测量这种“时间”和“能量”的变化,就能够推断出所执行的操作(或数据),即推断出密码实现运行过程中的操作(或数据),从而能够进行密码破解。这类通过密码实现运行过程中的“时间”、“能量”或其他类似信息进行密码分析的方法称为侧信道攻击。
数字电路状态特征与侧信息的对应关系
侧信道攻击(Side Channel Attack)又称侧信道密码分析,由美国密码学家P.C. Kocher于上世纪九十年代末期提出,是一种针对密码实现(包括密码芯片、密码模块、密码系统等)的物理攻击方法。这种攻击方法的本质上是利用密码实现在执行密码相关操作的过程中产生的侧信息来恢复出密码实现中所使用的密钥。其中,这里的侧信息(Side Channel Information)指除了攻击者通过除主通信信道以外的途径获取到的关于密码实现运行状态相关的信息,典型的侧信息包括密码实现运行过程中的能量消耗、电磁辐射、运行时间等信息。
侧信道攻击典型案例
2013年12月,以色列特拉维夫大学的计算机安全专家Daniel Genkin 和Eran Tromer等公布了使用三星Note2手机从30厘米远的地方(手机麦克风对准风扇出风口)“听译”出计算机中的PGP程序密钥的方法。
2014年8月,以色列特拉维夫大学的计算机安全专家Eran Tromer等公布了一种通过用手触碰笔记本电脑的外壳就能得到这台计算机上存储数据的安全密钥的方法,该团队测试了广泛使用的高安全标准的解密算法,并成功恢复了4096位RSA密钥和3072位ElGamal密钥。
2015年8月,来自上海交通大学的Yu Yu教授展示了通过侧信道攻击方法(能量分析攻击)攻击并克隆3G/4G手机卡的攻击方法。该研究团队成功分析了八个从各种运营商和制造商获得的3G/4G(UMTS / LTE) SIM卡。
2016年2月,来自以色列特拉维夫大学(Tel Aviv University)和以色列理工学院(Technion)的一组研究人员发现了从一墙之隔的物理隔离设备上窃取数据的新方法。该方法仅用3.3秒即可恢复出15厘米厚墙体(金属墙筋加固)另一侧的笔记本上运行的GnuPG(OpenPGP的一种实现)的密钥。
2016年10月,来自以色列特拉维夫大学(Tel Aviv University)研究团队采用电磁攻击分析了苹果iOS系统中多种常用密码库的安全性,发现了多个可被侧信道攻击方法利用的实现弱点,并成功恢复了OpenSSL、CommonCrypto库中ECDSA实现的密钥。