具体可见:https://sites.google.com/view/cache-ql
本文首先基于实际应用场景中的需求,提出了如下8个设计侧信道分析工具的需求:
支分析软件的执行轨迹和真实场景下收集的侧信道记录;
支持完全确定的和具有随机性的侧信道记录;
可以分析程序的可执行文件;
支持定性和定量分析;
可以定位侧信道泄漏;
支持多种形式的隐私数据,包括密钥和用户的隐私输入(例如图片);
支持对软件的整个执行周期进行分析;
可以检测到显式和隐式的信息流。
通过这8个需求,本文作者首先评估了已有的侧信道分析工具,如下图所示:
在此基础上,作者设计并实现了CacheQL。CacheQL的主要功能为侧信道泄漏的定量和定位。
隐私泄漏的定量可以通过隐私信息和侧信道之间的互信息来刻画。然而,互信息一般无法直接计算,已有的方法通过采样来近似获取互信息,但通常有着较大的开销,且误差较高。在本文中,作者首先将互信息的计算转换成估计条件概率,这大大降低了计算的开销,同时提升了计算结果的准确率,也在一定程度上缓解覆盖率带来的问题。具体的转换过程可参考原文的第四部分。
本文通过分摊上一步中定量的结果,来实现侧信道的定位,也即,将软件的整条执行轨迹泄漏的信息,分摊到每一个程序指令上。如果一个指令分摊到的信息泄漏大于零,那么该指令便泄漏了隐私信息。本文作者首先将整条执行轨迹的信息泄漏过程,看作是所有指令的合作游戏,其中,每条指令是该游戏的参与者。相应的,信息泄漏的分摊,则通过使用Shapley value刻画每个参与者在游戏中的贡献来完成。但是,Shapley value的计算代价为软件执行轨迹长度的指数级,且这些执行轨迹的长度一般可以达到百万的数量级。本文的作者利用侧信道在执行轨迹中是稀疏的这一特性(即只有少数的指令存在侧信道泄漏),将Shapley value的计算代价降低到了一个近似常数的开销。具体过程可参考原文的拓展版的第六部分。
下图为CacheQL定量分析的,不同的商用加密软件在不同的设置下,不同执行阶段的信息泄漏情况。
其中SDA和SCB分别指代隐私相关的数据访问和控制分枝。可以看到,这些加密软件的预处理阶段存在着大量的信息泄漏。
下图展示了CacheQL在Libgcrypt初始化大数的阶段定位出来的侧信道泄漏。
下图展示了OpenSSL中大数的整个生命周期(包括初始化和运算)中存在的侧信道泄漏。
https://arxiv.org/pdf/2209.14952.pdf
个人主页:https://yuanyuan-yuan.github.io/
还没有评论,来说两句吧...