论文部分内容阅读
随着信息化浪潮的兴起,各类密码设备广泛地应用于金融、通信、政府等领域。应用中执行安全功能的硬件、软件或固件的组合,通常称为密码模块。不同于密码算法,密码模块的攻击者可能从实现角度入手,对其安全应用构成威胁。因此,在目前国内外的安全认证工作中,实现分析一直是密码模块安全评估中的重要一环。然而,以往的密码工程实践表明,高安全认证等级的密码模块可能仍存在严重的安全隐患。产生该问题的根源在于当前实现分析的安全模型:根据Kerckhoffs原则,现有的实现分析研究多基于白盒模型,需密码模块的生产商提供完整的密码方案、实现方式、安全论证;所有认证工作均在厂商提供的方案或“原型”设备上进行。尽管白盒分析为最坏条件下的安全评估提供了便利,考虑到实际应用中的密码模块“产品”可能与“原型”有所差异,“原型评估”的结果不一定能够准确反映密码模块产品在应用中的安全性。为弥补这一缺陷,本文考虑更适合评估密码模块产品的“灰盒模型”:仅允许分析者控制密码服务接口,测量实时泄露信息;不能得到密码模块内部的处理方法和实现方式。尽管在分析力度上不及白盒模型,此类分析可以快速测试实际密码模块产品的安全性,有效地排查密码应用中的安全隐患。 本文重点研究适用于“灰盒模型”的密码模块安全测评方案。考虑到密码模块的生产商通常不公开其设计细节,本文首先从算法和实现方式两个角度给出了密码模块逆向分析的方法与技术;在此基础上,从设备层泄露分析和应用层逻辑分析两个角度提出了部分适用于灰盒模型的实现分析方法。本文的主要研究成果如下: 1.为更好地进行安全评估,研究中首先考虑了未知密码算法的逆向分析方法。针对未知分组密码的整体结构和线性部件,设计了一类基于线性拟合分析的逆向分析方法。相对于已有的逆向分析方法,该方法通用性更强,适用于大多数常见分组密码算法,且对于算法实现的限制较少。利用智能IC卡运行中产生的能量迹,本文实验完整验证了该方法在实际应用中的有效性和实用性。 2.为了恢复未知分组密码的非线性部件,本文设计了一种基于独立分量分析的新型分析方法。由于该方法直接恢复密码运算的中间状态而不需猜测密钥,对于一些传统密钥恢复攻击不适用的应用场景,本文的分析方法能取得较好的效果。研究中将此技术分别用于非线性层以及完整轮函数的恢复中,并用实测实验证实了方法的有效性。与基于线性拟合分析的逆向分析结合,可进一步构造“灰盒模型”下适用的密码算法逆向分析方案,以较低的代价有效恢复未知密码算法。 3.在“灰盒模型”的限制下,本文进一步研究了如何评估密码模块运行中产生的实时泄露。除逆向分析外,基于独立分量分析的侧信道分析技术同样可用于传统的密钥恢复攻击。实验表明,该方法不仅可以用于构造常见的密钥区分器,而且可用于部分传统侧信道分析无法分析的场景。在部分掩码方案中,该方法可利用其泄露特点构造观测,恢复随机掩码,进而攻破相应的防护方案。考虑到此方法带来的威胁,在未来的掩码设计和实现中,应避免相关泄露的产生,以免留下安全隐患。 4.对于实践中发现的一些特殊实现形式,本文从应用层逻辑出发,分析了可能引入的安全隐患。特别的,针对逆向分析中出现的几类非标准实现,分别给出了特定条件下的实现分析:对于PKCS#v1.5随机填充可预测的问题,本文讨论了其安全隐患,基于相关消息攻击给出了有效的攻击范例。对于实验中PKCS#1v1.5的多种填充格式检查,针对各自的实现特点,设计了相应的分析算法。实验结果表明,无论使用哪种实现方式,均不能抵御填充格式攻击;对于其中的某些非标准实现方式,攻击的复杂度远低于标准实现。