资讯中心
News Center
虚拟化:侧信道攻击案例
发布时间:2020-10-13文章来源:明辰智航

具体实例:一个真实的在线医疗系统

     在线医疗是一个很私人的信息服务系统,它由信誉好的企业研发,并且在数据传输的过程中采用了HTTPS协议对用户的信息进行了加密传输。一旦登陆,用户可以建立自己的健康档案,包括症状、用药、疗程等内容,甚至还可以寻找医生。在研究中发现,入侵者可以完全可以推断出一个用户服用的药物,疗程以及他寻找的医生的类型。


如上图所示,是该医疗系统的添加病例的页面。此时用户所选择的是症状标签,用户可以在这个界面中键入自己的症状,在键入的过程中,系统会帮助用户弹出一个小的提示窗口。对于其他的用药、疗程等标签,输入的状态也是一样的。

     而这标签栏的设计,就已经会泄露用户当前填写记录的类型信息了,因为点击每个标签,就会产生一个Web数据流向量:(1515±1 ->, 266±1 -><- 583±1, <- x),这里x的值分别是4855,30154, 20567, 1773, 27572299,代表着症状(Conditions),用药(Medications),过敏(Allergies),疗程(Procedures),测试结果(Test Result)和免疫接种(Immunizations)(其中±代表着不同用户操作时产生的流量大小的差异)。

     当用户键入信息时,提示列表就会在输入框的下面出现。这个输入框大约有十条记录,会对键入的内容及时的更新。如上图所示的提示列表是键入“ac”后的结果。可怕的是,这个自动提示会引发对用户信息的灾难性的泄露,因为攻击者可以通过匹配提示信息响应包的大小推断出用户输入的内容。更明确的,每个击键都会产生如下的Web数据流向量:(253±1 ->,<- 581,<- x),x能够精确地指示出提示列表的大小,并且对于所有的用户来说都是一样的。

    随后收集了在症状记录填写时,英文中的所有26个字母在作为第一个字母之后的x值,在[273,519]之间。除了字母“h”“m”对应的x值相同外,其他的均不相同。但是随后他们证实了,当输入的字母增加时,就可以消除类似上面“h”“m”的歧义,进而推测出用户的输入,也就获得到用户十分敏感的医疗隐私数据了。

防范方法

     针对样例中根据数据包大小不同的攻击手段,简单有效地手段就是对应答的数据包进行填充处理,可以参考两种填充的思想。一种是将数据包填充到接近的Det大小的整数倍,另一种方法是填充增加(0Det)大小。但是这样的填充,还是可以根据接收到的数据包的大小推断出输入内容的集合,当差异度增大时或许依旧可以推断出用户输入的内容。更加有效安全的做法,就是根据具体的Web应用的特点分析可能造成的侧信道攻击的潜在威胁加以防范了。

推荐阅读:

  明辰智航云安网络与虚拟化性能管理系统


返回