文章横幅PC版
文章横幅iPad版
文章横幅手机版

传统密钥防护方案

TIME:2019-03-21 10:43  click: 171 次 来源: 未知

面对直接攻击和间接攻击的密钥安全问题,研究人员也提出了许多相应的解决方案。

针对直接攻击的防护方案

针对从内存中直接读取密钥的软件攻击,首先应通过恶意代码检测和及时修补漏洞提高计算机系统的代码安全性。其次,可以将密钥运算服务从传统的用户空间转移到内核空间,密钥数据就能得到操作系统内核访问控制更为严格的保护, 从而有效抵御针对用户进程的攻击。再者,减少内存中的密钥副本数量,只保留唯一的密钥数据对象,能有效提高密钥攻击难度;还可以将同一台计算机中的密钥拆分成多个片段存储在内存中,只在计算时重组,减少有效攻击时间。

虽然上述方案提高了软件攻击的难度, 但是不能有效抵抗DMA攻击和Cold Boot 攻击等物理攻击。针对物理攻击,当前代表性的解决方案主要有以下两类:

主动式地清除密钥。为了防止攻击者获得在运行的计算机后对全盘加密系统发起Cold Boot 攻击从而获得内存中的密钥, Leo Dorrendorf 提出监控用户与系统的交互情况,当发现没有用户交互时,及时进入保护模式,清除内存中的密钥。在保护模式中, 为了保证系统继续正常运行, 该方案采取两级密钥设计(每一个文件对应不同的二级密钥,二级密钥由主密钥保护);在清除密钥时,保留已打开文件的对应二级密钥,并阻塞新的文件打开请求。Mimosa方案利用硬件事务内存机制,使得密码运算过程中只有密码服务线程自身能访问到密钥明文,所有来自其他线程的密钥访问(可能是软件攻击或DMA 攻击)都会触发CPU的硬件动作, 自动清除包括密钥数据在内所有的敏感数据。

针对间接攻击的防护方案

侧信道攻击的防御方案,可以分为两类: 一是通过减少能量、噪声等信息的泄露来增加侧信道攻击的难度;二是降低外泄信息与密钥之间的联系,增加攻击者利用侧信道分析密钥的难度。前者如Quisquater等人提出的,通过金属降低辐射及采用低能耗设计、异步机制和双路逻辑等方案来减少信息泄露。

为了减少外泄信息与密钥之间的联系,可以使用算法层面和实现层面的方法。随机化(randomization)是算法层面防御侧信道攻击的重要方法之一:在加解密运算的过程中,引入随机参数对密码运算步骤进行可逆变换,使外泄的侧信道信息同时与密钥和随机参数相关,在计算结果输出前,再消去随机参数的影响。

典型方案包括RSA Blinding和ECC Randomization。秘密分享和门限密码学也可用于防护侧信道攻击,将密钥拆分为多份,分别进行计算后再合成结果, 增加了攻击者使用能量、噪声侧信道攻击提取密钥信息的难度。实现层面上,在运行时间短的分支中加入NOP等不影响密码运算结果的指令, 使各分支运行时间基本相等以消除时间侧信道。

 

上一篇:密钥直接攻击方式分类 下一篇:密钥间接攻击