论文部分内容阅读
智能卡作为一种安全的数据存储与处理媒介,在日常生活中的应用越来越广泛。与此同时,智能卡尤其是Java卡平台自身所面临的安全威胁也与日俱增。虽然自从最新的Java卡3.0规范发布以来,Java卡的安全特性进得到了进一步的提升,增加了强制片上字节码检验的功能,使传统的基于静态修改字节码的逻辑攻击对智能卡的安全已经不能再构成危害,然而逻辑攻击在结合了最初应用于密码攻击领域的故障攻击之后所形成的联合攻击,对智能卡的安全形成了更为严峻的挑战。在研究了大量关于智能卡联合攻击的攻击案例并总结了两类具有代表性的联合攻击——针对字节码和针对操作数栈的联合攻击之后,对它们已经存在的防御方法进行了分析,指出了已有防御方法的局限性与不足之处,并在此基础上分别提出了改进后的防御措施:针对字节码的攻击大多依赖于对空指令的利用,因此采用了空指令白名单的方法,可以从根本上限制以空指令为突破口的攻击;针对操作数栈的攻击除了以操作数栈的内容作为攻击对象之外,还可以对操作栈栈顶指针以及栈帧和局部变量进行攻击,因此对这些数据也需要进行保护。为了对改进后的防御措施的效果进行分析,设计了一个智能卡故障攻击的仿真软件,以仿真实验的形式对实现了改进后的防御方法的Java卡虚拟机进行了验证,并通过对实验数据的分析,指明了改进后的防御措施相比已有防御方法的优势所在。实验表明,改进之后的防御方法能更好的保护智能卡的运行时安全,使智能卡面对联合攻击时有更好的几率检测出故障的发生,并在智能卡的运行时开销与安生性之间达到一个平衡。