前言
在学习CISSP密码学时了解到侧信道攻击(又称边信道攻击、旁路攻击side-channel attack),攻击者通过测量功耗、辐射排放以及进行某些数据处理的时间,借助这些信息倒推处理过程,以获得加密秘钥或敏感数据。本文将从实践角度尝试一种侧信道攻击方法,主要关注特殊场景下的信息泄漏方式。
相关案例
首先通过2个案例来直观了解下侧信道,2017年一段昆明小学生“听声音”徒手解开ofo共享单车密码锁的视频流传于网络,视频中该小学生通过不断扭动密码盘来尝试解锁,仅用17秒便成功解开了车锁,这种是通过声音信号的侧信道来推测密码组成。
另一种侧信道是通过图像的隐蔽信道来传递机密信息,越南战争中美国战俘Jeremiah Denton在1966年由北越组织的采访中发送莫尔斯电码,翻译出来就是-/- - -/.-. /- /. . - /.-. /. TORTURE(虐待),这一信息很快被海军情报局的专家注意到,北越则要等到消息登上美国媒体才发现,面临舆论压力。下图是当时的影像资料动态图:
理论基础
关注侧信道攻击需要了解侧信道信息泄漏通用模型和通信原理的相关知识。
侧信道信息泄漏模型:
侧信道主要存在于信息发送方和信息接受方,比如我们使用手机通讯软件进行聊天,虽然传输过程是加密的,但如果聊天的两个人手机被肩窥(乘扶梯、排队等场景),那么就会存在信息泄漏的风险,因此侧信道信息泄漏本质上还是属于终端的安全。
通信原理
侧信道通常是不稳定的,面临太多干扰和不可控因素,为保证信道稳定,我们需要学习通信原理的相关知识。通信的基本过程如下:
信源:消息的发出者
信宿:消息的接收者
信源编码器:消息的重组单元
信道编码器:消息抗毁能力的单元
信道:消息的传输媒介
干扰源:毁坏传输信道的各种因素
信道译码器:消息的毁坏检测单元
信源译码器:消息的还原单元
看到通信信道建立的关键过程,我们的理论知识已基本完备,接下来就是如何尝试在特定场景稳定的侧信道攻击。
实践应用
模拟场景
这里我们假设的场景是:通过某种方式接触到1台类似哑终端电脑,仅保留基本外设,操作系统安全补丁齐全,普通用户权限,对外通信功能(usb拷贝、网卡、蓝牙、红外)全部禁用,硬盘有物理保护并进行全盘加密,那么如何获取这台电脑上的机密文件呢?
选定侧信道
我们可以尝试建立侧信道,绕过看似天衣无缝的安全防护体系。分析下可以利用的外设,鼠标,键盘、音箱、显示器,能向外传递信息的数据就是显示器和音箱,首先考虑拍照,拍照可以获取图像数据,依靠视力辨别部分信息,无法获取完整文件,信息传输严重失真。其次联想到摩尔斯电码,这是一种古老的通讯方式,通过滴滴答答的声波传递摩尔斯电码,然后通过接受设备翻译对应电码。理论上可行,将文件流信息编码转换成对应的摩尔斯码,根据分贝数值区分长短码,然后翻译出对应的原文。示例如下:
但是这种方式有2个局限性:
1.干扰源:接收声音信号时一旦遇到噪音,信号将会严重失真
2.速度慢:每次只能传输一个字符,遇到几M的文件将会传输非常久,进一步增加了不确定性。
因此需要寻找一种抗干扰能力强,单次传输信息量大的侧信道。这时考虑到二维码,首先是单次传输信息容量:双色单层(如黑白)的一般是几K的容量,彩色(8色)单层的能够达到几百k 的容量,但是二维码携带的信息越多,抗干扰能力越差。
考虑普通显示设备色域、分辨率、亮度、校准准确度的问题,还有扫码设备摄像头像素的问题,选用常见的双色单层(黑白)二维码是最适合的,即便是低端的720p分辨率的显示器,500万像素主摄的智能手机可以轻松建立侧信道。
下面需要根据通信原理的知识设计稳定的通信信道,通信过程如下:
信源:任意格式文件
信源编码器:7z压缩+base64编码
信道编码器:数据分组生成二维码
信道:动态二维码
干扰源:重复接收+信号不对齐
信道译码器:二维码解析成分组数据
信源译码器:base64解码+7z解压缩
信宿:sdcard
发送端通过将原文件进行编码分割转换成二维码图片集,二维码在固定时间间隔变换展示,接受端设置同样的采样时间间隔,最后把采样到的片段信息进行组合就可以解码得到原文件,这样就可以建立稳定的侧信道。
编码实现
首先是实现信源编码器,通过将压缩文件的数据流转换为base64,然后再对base64消息进行分段,每段消息再经信道编码器,组成连续的动态二维码gif,完成信道编码过程。这里使用python语言实现,关键代码如下:
接收器需要用到二维码识别设备,使用最常见的android手机即可,那么就需要开发一个apk,这里使用java语言实现。
首先动态二维码经过信道译码器转换成base64消息,完成信道译码过程。关键代码如下:
然后base64消息经过信源译码器得到文件流,文件流再保存到SD卡,即可完成信源译码过程。关键代码如下:
以下是编码完进行测试时发现的问题及对应解决办法:
1.消息包丢失:手抖导致相机对焦失败,可以通过降低采样频率,选用有防抖功能的相机来解决。
2.重复发包:多次重复扫码,可以通过对同一采样间隔的消息去重来解决
3.包顺序错乱:由于二维码无法标识消息序号,开始传输时无法准确同步。通过循环扫码,识别压缩包文件头信息,排列出正确的包顺序来解决包顺序错乱问题。
最终效果如下图所示,通过连续扫码实现“隔空取物”:
总结
本文通过模拟特定场景下的侧信道攻击,可以实现非网络传输,非硬件破解的“隔空取物”。侧信道信息泄漏非常隐蔽,现有的防信息泄漏的安全工具DLP难以防御侧信道的攻击。因此建议对一些敏感岗位人员禁止携带智能设备,同时在终端监控工具上进行调整,实时检测设备音频、图像等潜在的侧信道传输载体,保护关键机密信息。