【技术实现步骤摘要】
本专利技术涉及计算机安全领域,具体涉及一种运行时程序安全关键数据的完整性验证方法及装置。
技术介绍
在计算机系统中,可假设处理器芯片可以防御各类物理攻击,是安全可信的。但是位于处理器之外的内存和片外总线可能遭受物理攻击。攻击者可以破坏内存中的数据,也可以破坏在总线上传输的数据。例如其他连接在片外总线上,可以直接对内存进行读写的主设备,都可以成为攻击者。如图I所示,位于处理器之外的内存和片外总线可能遭受物理攻击的攻击类型主要有三类欺骗攻击(a),换位攻击(b)和重放攻击(C)。欺骗攻击指的是攻击者将某个内存数据块用伪造的数据块(被篡改的数据)代替;换位攻击指的是攻击者使 用地址A的数据块〈Data §2>替换地址B的数据块〈Data §4> ;重放攻击指的是攻击者用地址A之前的旧数据〈Data (@4,tl) >替换地址A当前存储的数据〈Data (@4,t2) >。针对单处理器的内存完整性验证,国际上有很多研究,现有工作都是基于上述假设,认为处理器是可信的,信任边界包括处理器内部的计算和存储单元,即处理器和片上cache。现有技术的内存完整性保护方法主要有如下几种 I、最直接的内存完整性保护方法的步骤如下 第一步,对整个片外存储器的内容计算摘要值。第二步,将计算得到的摘要值存储在可信区域中(如处理器芯片中)。第三步,当从内存中读出数据块的时候,重新计算整个内存的摘要值,和处理器上保存的摘要值进行比较,如果相等,数据完整性未被篡改,如果不相等,则数据已被篡改。第四步,当数据写入内存时,如果经过处理器确认修改合法,则可以执行,同时 ...
【技术保护点】
一种运行时程序安全关键数据的完整性验证方法,其特征在于实施步骤如下:1)在程序中指明待保护的安全关键变量,在编译程序时为安全关键变量生成对应的安全关键数据集合,在加载程序时将程序的虚拟地址空间分为保护区域和非保护区域、将安全关键数据集合加载至所述保护区域内,为所述程序的保护区域中的每一个虚拟页构造完整性验证树,并将所述完整性验证树的根验证值保存在处理器中;2)当处理器发出读写操作向内存写入程序数据时,更新保存在处理器中的根验证值;在处理器片上高速缓存的读写操作从内存中读取程序数据时,生成新的完整性验证树的根验证值,并将新的根验证值与保存在处理器中的根验证值进行比较,如果两者相等则判定安全关键数据集合未被篡改,否则判定安全关键数据集合已经被篡改。
【技术特征摘要】
1.一种运行时程序安全关键数据的完整性验证方法,其特征在于实施步骤如下 1)在程序中指明待保护的安全关键变量,在编译程序时为安全关键变量生成对应的安全关键数据集合,在加载程序时将程序的虚拟地址空间分为保护区域和非保护区域、将安全关键数据集合加载至所述保护区域内,为所述程序的保护区域中的每一个虚拟页构造完整性验证树,并将所述完整性验证树的根验证值保存在处理器中; 2)当处理器发出读写操作向内存写入程序数据时,更新保存在处理器中的根验证值;在处理器片上高速缓存的读写操作从内存中读取程序数据时,生成新的完整性验证树的根验证值,并将新的根验证值与保存在处理器中的根验证值进行比较,如果两者相等则判定安全关键数据集合未被篡改,否则判定安全关键数据集合已经被篡改。2.根据权利要求I所述的运行时程序安全关键数据的完整性验证方法,其特征在于,所述步骤I)的详细执行步骤如下 I. I)编程时在程序中通过编译指导语句显式指明待保护的安全关键变量; I. 2)初始化安全关键数据集合为空,将编译指导语句显式指明的安全关键变量加入所述安全关键数据集合,对所述安全关键数据集合中的每一个安全关键变量进行引用-定值分析,然后将每一个安全关键变量的定值集合合并到所述安全关键数据集合中,直至所述安全关键数据集合中不再增加新的安全关键变量为止; I.3)在生成可执行文件时构造用于存放安全关键数据集合的新数据段; I.4)在操作系统加载程序的可执行文件时,将程序对应的虚拟地址空间分为保护区域和非保护区域,为所述新数据段在保护区域内分配虚拟页,并将所述安全关键数据集合分别加载至程序的保护区域内的虚拟页中; I.5)为程序对应保护区域中的每一个虚拟页构造完整性验证树,并将所述完整性验证树的根验证值保存在处理器中。3.根据权利要求2所述的运行时程序安全关键数据的完整性验证方法,其特征在于,所述步骤I. 5)的详细执行步骤如下 I.5. I)将程序对应保护区域中的每一个虚拟页以缓存行大小或者缓存行大小的2倍划分为多个数据块,使每一个虚拟页按照缓存行对齐,其中η为整数; I.5. 2)对多个数据块采用哈希函数生成一级哈希值,然后根据预设的完整性验证树的叶子节点数量对多个一级哈希值作为一组进行合并生成二级哈希值、对多个二级哈希值作为一组进行合并生成三级哈希值,依次类推进行迭代,最终得到哈希树的根哈希值即为完整性验证树的根验证值; I.5. 3)将所述完整性验证树的根验证值保存在处理器中。4.根据权利要求3所述的运行时程序安全关键数据的完整性验证方法,其特征在于所述步骤I. 5. 3)中将完整性验证树的根验证值保存在处理器中时,每一个根验证值的地址ADDR为ADDR=BA+S*(N-I),其中BA为程序的虚拟地址空间中保护区域的基地址,S为每一个根验证值所占用的存储空间大小,N为根验证值在处理器中的存储编号。5.根据权利要求4所述的运行时程序安全关键数据的完整性验证方法,其特征在于...
【专利技术属性】
技术研发人员:王蕾,邓宇,王永文,窦强,李姗姗,孙彩霞,张承义,高军,黄立波,倪晓强,隋兵才,陈微,赵天磊,
申请(专利权)人:中国人民解放军国防科学技术大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。