牛飞斐,张若箐,杨亚涛,李子臣,
(1.河南理工大学 计算机科学与技术学院,河南 焦作454003;2.西安电子科技大学通信工程学院,陕西 西安710071;3.北京电子科技学院 通信工程系,北京100070)
计算机取证是将计算机调查和分析技术应用于对潜在的、有法律效力的证据的确定与获取上[1]。目前国内外对计算机取证技术的研究已经涉及到各方各面,包括计算机取证模型设计、计算机日志挖掘等,而计算机日志作为监视计算机每天运行状况的专属管家,其完整安全性具有至关重要的作用。
近年来对计算机日志完整性的研究越来越多,而利用传统的SHA-1等Hash函数生成的Hash数据可以高效地检验两个数据对象(文件、数据块)是否完全相同,在潜在证据快速搜索,数据相似性判断方面有突出的应用[2,3]。文献[4]提出一种基于哈希树的数据完整性检测方法,该方法在同步存储其相应数量级校验信息前提下,可以使用户以常量网络通信量、计算量,极大概率的正确检测数据完整性,但是服务器端计算量较大。文献[5]借鉴纠错编码思想提出一种基于细粒度完整性检测新方法,设计了可指示单个错误的组合指示码,实现对大量Hash数据压缩而保持其检测方法强度不变。文献[6]在此基础上进行了改进,利用Steiner三连系表达的特殊组合,实现数据对象间的交叉检测,设计的指示码可指示2个错误。文献[7]将此方法应用到手机取证中,将手机内存镜像数据划分为不同粒度数据对象,保证取证镜像过程的安全可靠性。文献[5-7]在一定程度上均可实现数据完整性检测,但是方法设计局限性大,仅适合低错误率情况,而对于计算机中大量数据或日志,面对的很可能是大面积篡改,那么该方法便不能满足,本文结合以上知识扬长辟短,设计一种简单的基于哈希函数的检测方法,计算简单且效率较高,选用SHA1作为该模型算法基础,且引入基于可信硬件的可信第三方,进一步提高模型整体安全性能。
总体框架:模型设计主要包括两个模块,日志完整性检测模块LIDM(log integrity detection module)和可信第三方模块TTPM(trusted third party modules)。日志完整性检测模块又包含8个小模块,分别是随机数产生器,负责数据初始化随机数产生和签名密钥的产生;算法器负责日志唯一标志符生成;加密器即签名,可实现日志唯一标识符签名,被可信第三方进行身份认证;异或门用来计算日志是否完整,实时时钟用来记录日志标识符存储在检测模块中时间,进行定时优化,保证检测效率;另外还有两个寄存器R1、R2和一个存储扩展器,寄存器R1用来存储源日志哈希值即唯一标识符;R2存储被修改后日志新标识符,同时也存储异或门的异或结果,异或值通过外部接口发给主机;存储扩展器用来存储被实时时钟定时清理的已过时的日志唯一标识符,当然存储时间也有限制,超过时间限制后便自动清除,在时间期限内可被检测模块自由调用,以供完整性检测利用。日志完整性检测模块同时提供一个外部接口,以嵌入式PCI卡的方式插入主机,可接收/发送给主机信息。
可信第三方需要存储日志完整性检测模块发送来的机要信息,包括日志唯一标识符签名、初始化随机数、日志信息的第一个和最后一个唯一标识符,如果这些信息不能被安全保存,那么机要信息便没有任何用处,因此可信第三方安全性要求更高,本设计中引入一个安全性更高效率更快的可信第三方,称为隐式可信第三方[8],采用可信硬件实现。两个模块的传送采用安全套接层协议SSL 实现。图1给出了该模型总体设计图。
图1 总体模型
Hash检测是计算机取证分析的重要手段之一[2,9],本文设计日志完整性检测模块中,主要利用Hash算法设计完成。
计算机内部每天都产生大量日志信息,日志长度大小均各不相同,分析处理起来也不太方便,通过哈希函数将每条日志内容映射为一个固定大小的字符串,即是每条日志的唯一标识符,算法模块便主要是唯一标识符的产生,它也是以下设计的基础。具体执行过程主要分为两种情况:
(1)第一个唯一标识符生成
当主机中日志第一次进入检测模块时,检测模块中随机数产生器会生成一个随机大数m,同第一条日志一起经过算法器SHA1 运算,生成第一条日志对应唯一标识符。假设第一条日志用l1表示,那么其计算公式可表示为H1=SHA1(m+l1),该结果将存入寄存器R1中,并生成该日志序列号0,表示第一条日志唯一标识符。
(2)第n个唯一标识符的生成
第一个唯一标识符产生以后,接着生成第二个、第三个、第n个唯一标识符。第二个标识符基于第一条日志标识符结果与本条日志内容哈希计算而来,第三个唯一标识符是基于第二条日志唯一标识符与本条日志内容哈希计算而来,依次类推,那么第n个唯一标识符则是基于第n-1条日志标识符与第n条日志内容计算而来。假设用n表示源日志条数,用li表示第i 条日志,Hi表示第i 条日志哈希结果,那么第二条、第三条、第n条日志唯一标识符可分别表示如下
这样每条日志在算法器的作用下均生成与之对应的哈希结果,并将结果依次存入寄存器R1中,序号从0开始顺序标记,保证所有日志逻辑上关联,一旦一条日志有所改动,那么整条日志唯一标识符序列均产生变化。但是寄存器R1并不是一直存储这些标识符,如果R1存储空间达到饱和,而又有新日志产生并要生成标识符,这时候检测模块就会根据实时时钟的期限规定,让R1中的唯一标识符序列每隔3个月自动清理一次,为新日志腾出空间,同时优化算法速度,被清理的信息不是直接删除,而是存入检测模块中的存储扩展块中,因为有些信息有可能会与新日志有关联,可作为司法取证证据,存储扩展块会将这些信息保留至1年后才会自动删除,这在一定期限内既保证了日志信息的完整性,也解决了存储扩展块空间溢出问题。(注:实时时钟以主机系统时钟为标准)。图2是日志唯一标识符的具体产生过程。
算法器的设计为日志生成可供完整性检测的标识符序列,数字签名模块则保证了标识符的身份不可伪造性,从而使传送到可信第三方信息安全性得到进一步保护,本部分设计以2.1为基础,假设检测模块为发送方A,可信第三方为接收方B,数字签名过程如下所述:
(1)首先A 由随机数产生器产生一个大数k,作为加密私钥pvk。
(2)然后数字签名模块首先接收算法器内第一条日志唯一标识符H1和主机内第一条日志源l1+m,日志摘要信息在密钥pvk下加密封装,得到签名结果SIG1=Epvk(SHA1(m+l1))。
(3)封装后,A 将(2)中签名结果、日志源、公钥pubk一起发送给接收方B。
(4)B首先将日志源l1+m 经过哈希函数作用,生成新的摘要信息,即新日志唯一标识符,然后用自己公钥pubk对签名结果解密,得到摘要原文。
(5)将新摘要信息H′1=SHA1(l1+m)与公钥解密后摘要Dpubk(SHA1(l1+m))比较,若相同则证明可信第三方接收到的信息是A 发送过来的,无伪造和篡改,否则不是A 发来的,拒绝接收。发送完毕第一条数字签名后,接着按照同样方法发送第二个、第三个,直到寄存器R1中现存信息全部发送一遍为止,这里接收发B 即可信第三方只存储数字签名、日志唯一标识符、公钥,而不存储日志源。
在日志完整性检测模块中,有一个异或门,它就是用来检测日志是否完整的。当主机源日志条目遭到修改、删除等不法操作行为后,异或门就利用自身简单运算,判断日志完整性及修改位置。
若源日志发生记录有异常行为,为了确定日志是否完整如初,可将被认为修改过的日志l′i送入日志完整性检测模块,在算法器计算下,产生一系列新的日志唯一标识符,按顺利依次存入寄存器R2,然后调用寄存器R1中内容,在异或门作用下,分别依次逐条异或,并将异或值不为零的标识符信息送入R2中,R2中存储的新日志唯一标识符被覆盖,新信息(结果不为零的日志唯一标识符和其对应序号)通过外部接口,利用主机系统显示,被修改或删除日志准确位置即可找到,检测完成。图3是异或门的工作过程。
图3 异或门工作过程
该模型设计可信第三方有两个作用:一备份,防止攻击者攻击日志完整性检测模块,导致数据变化而不可用。二身份认证,完整性检测模块发送来的重要信息,只有可信第三方本身拥有对它的访问权限,因为只有可信第三方知道如何解密数字签名。
鉴于以上两种作用,可信第三方需要具备以下能力:
首先,安全性能高;其次,具有一些基本密码学能力,比如签名验证、哈希计算等;然后能提供一定接口,用以接收运算输入,且有有限特殊命令集,可获得公钥;最后可信第三方必须保证不可被其它任何非自身机构或者厂商篡改,如若被改,将自行销毁。
本文设计的可信第三方是通过可信硬件实现,是一种安全性更高的隐式可信第三方[8],目前市场上已经出现的IBM4764安全协处理器[10],可满足上述要求,它是由IBM生产的一款可编程安全子系统,通过PCI-X 与服务器联接。IBM4764内置加密引擎,可执行预置算法,也可用户自己写入算法。IBM4764内置热学传感器可检测各类物理攻击,当发现攻击时会将密钥清零,永不再用。
本文在哈希函数的基础上完整实现了计算机日志完整性检测模型设计,下面对它的安全性进行分析。假设敌手可获得源日志操作权限,可对其内容进行任意操作。另外假设敌手知悉日志检测模块的一切活动,可对它进行更改、毁坏或删除,且不被发现。同时假设日志完整性检测模块与可信第三方的通信过程安全可靠,可信方中存储信息安全可靠。在这种情况下,该模型可保证以下安全:
(1)保证日志完整性。上文第一种假设情况下,敌手获得日志权限后,根据自己的需求对日志随意更改,日志内容变得不再可信,然而完整性检测模块中记录有所有源日志对应唯一标识符,只要将现在的日志送入完整性检测模块,与里面已经存储的日志唯一标识符异或运算,即可知道源日志是否已经被更改,哪些位置的日志被更改,从而保证日志完整性。例如,如果敌手篡改了源日志M 中几条日志内容,但不知道具体篡改的位置,若用H′i代表篡改后日志,q表示篡改后日志初始化随机数,l′1表示篡改后第一条日志内容,共n条日志记录,那么被篡改后第i条日志,经过哈希计算后可用H′i=SHA1(SHA1…SHA1(q+l′1))+i)表示,通过完整性检测模块,计算H1⊕H′1,H2⊕H′2,…Hn⊕H′n,若哪个结果不为0,则证明是哪条日志被更改,日志位置便也能轻易找到。
(2)身份不可伪造性。完整性检测模块中的唯一标识符都是经过签名认证的,如果敌手想要伪装成检测模块发送方发给第三方,那么就必须提供签名私钥pvk和被签名内容Hi=SHA1(SHA1…(SHA1(m+li))+i)的值,而敌手如果试图通过Hi-1或者Hi+1推导出签名密钥,在计算上是不可行的。因此,可信第三方就保证了发送方身份的唯一性、不可伪造性,也进一步保证了日志信息的完整性。
(3)数据容灾性。上文第二种假设条件下,若日志完整性检测模块依附的系统突然断电或者被攻击,那么模块中存放的所有信息便不能利用,然而已经安全传送到可信第三方服务器进行存储的信息包括源日志信息数字签名SIGi=Epvk(SHA1(SHA1…(SHA1(m+l1))+li))(E 表示加密,pvk为私钥)、公钥pubk、日志唯一标识符SHA1(SHA1…(SHA1(m+l1))+li)等信息完整,满足Dpubk(SIGi)=SHA1(SHA1…(SHA1(m +l1))+li),(D 表示解密),通过源日志数字签名结果与可信第三方保存签名结果进行比较,可以继续检测源日志完整性。
Hash函数中主要的几种算法分别是CRC32、SHA 系类和MD5,下面分别对他们进行性能比较分析,具体环境以及数据要求可参见文献[11],不同算法间对CPU 的平均使用时间和CPU 利用率的结果如图4所示。
图4 不同算法性能比较
从图4 中我们可以看出,在同样的配置中,CRC32、MD5和SHA1处理文件的速度都很快,但是从安全性级别来说,当然计算复杂度大的算法更加安全,但也更加消耗时间,因此折中考虑,SHA1 无论在处理速度还是安全性方面都比较好,这也是本文选择它的原因。
检测模块所需日志是基于一个既有日志集,即测试前首先在主机上面建立一个数据集,数据集是基于本主机3种主要类型日志的。3 种类型日志默认大小均为512KB,平均约为近3个月记录,将日志默认大小改为1G,分别选取其中不同大小日志,以系统日志、安全日志、应用程序日志的先后顺序存入主机上已经建好的测试test文件中。test文件包含9个不同日志数目的测试文件,分别从500条日志到128000条日志大小不等。测试环境:Windows XP OS,CPU Intel Pentium4Xeon 1.7G。
为了评估日志完整性检测模块LIDM 的日志哈希计算与数字签名对主机操作系统性能影响,将日志写入模块过程分为2个阶段:①日志读写阶段:主机系统读取测试文件,即LIDM 模块通过外部接口读入test文件数据,PCI接口采用PCI-EX16,支持双向数据传输,每向数据传输带宽高达4GB/S,因此该阶段延时将会很小;②日志计算阶段:日志生成唯一标识符和签名阶段;该阶段主要是算法运行,所需时间相对较长;图5是日志完整性检测模块性能图。
图5 日志完整性检测模块性能
日志完整性检测模块LIDM 的读写与普通主机系统读写日志情况相同,由于外部接口带宽高,传输速度非常快,在小容量的日志情况下时间可以忽略,从图中可以看出第一阶段费时很小,且波动不大,日志数目7000条以前时间基本波动在0.06s左右,对系统性能几乎没有造成影响。日志计算阶段主要完成日志唯一标识符的生成与数字签名,从图5中可以看到随着日志不断增大,时间呈线性增长,然而对于计算机日志来说,3种主要类型日志默认大小均为512KB,约1000—4000条日志不等,而检测模块性能测试10000条日志读取与计算时间几乎相等,100000条日志所用时间约为3.5s,因此计算开销整体不大,不会较大的影响系统正常性能,一般系统都可接受。
文章设计了一个完整的日志检测模型,该模型主要包括两大模块。其中日志完整性检测模块主要利用哈希函数生成一系列供异或门检测利用的唯一标识符序列,通过检测结果可以确知日志是否完整,通过标识符序列号可确定哪些位置被篡改,同时利用数字签名技术进一步保证日志唯一标识符的防伪造性。另一个模块可信第三方,利用可信硬件大大提高了可信第三方安全性能,且可保证检测模块受到攻击或者离线检测情况下依然可以正常运行。通过模块性能分析,证实文中设计方案安全可靠,不会大幅度影响系统性能,效率较好。
[1]Judd,Robbins.An explanation of computer forensics[EB/OL].http://www.computerforensics.net/foren sics.htm,2010.
[2]Kornblum J.Identifying almost identical files using cont ext triggered piecewise hashing [J].Digital Investigation,2006,3 (s1):91-97.
[3]Chen Long,Wang guoyin.An efficient piecewise hashing met hod for computer forensics[C]//Adelaide,Aus ralia:International Work Shop on Know ledge Discovery and Data Mining,2008:635-638.
[4]Yan Xiangtao,Li Yifa.A wew remote data integrity checking scheme for cloud storage with privacy preserving [C]//Proceedings of IEEE 14th International Conference on Communication Technology,2012.
[5]CHEN Long,WANG Guoyin.An integrity check method for fine-grained data [J].Journal of Software,2009,20 (4):902-909 (in Chinese).[陈龙,王国胤.一种细粒度数据完整性检验方法 [J].软件学报,2009,20 (4):902-909.]
[6]CHEN Long,TIAN Jian.An integrity check method for finegrained data based on Steiner triple system [J].Journal of Chongqing University of Posts and Telecommunications(Natural Science Edition),2011,23 (5):631-634 (in Chinese).[陈龙,田健.基于Steiner三连系的细粒度数据完整性检验方法 [J].重庆邮电大学学报 (自然科学版),2011,23 (5):631-634.]
[7]ZHAO Yajie,CHEN Long.Fine-grained data integrity check methods for cell phone forensics [J].Computer Engineering and Design,2012,33 (11):4092-4094 (in Chinese).[赵亚杰,陈龙.面向手机取证的细粒度数据完整性检测方法 [J].计算机工程与设计,2012,33 (11):4092-4094.]
[8]AN Yubao.Research on the key technologies of data integrity protection in cloud storage[D].Beijing:Beijing University of Posts and Telecommunications,2012:46-47 (in Chinese).[安玉宝.云存储中数据完整性保护关键技术研究 [D].北京:北京邮电大学,2012:46-47.]
[9]Chad Steel.Windows forensics:The field guide for conducting corporate computer investigations [M]. WU Yu,TANG Hong,CHEN Long,transl.Beijing:Science Press,2007(in Chinese).[Steel C.Windows取证:企业计算机调查指南[M].吴渝,唐红,陈龙,译.北京:科学出版社,2007.]
[10]IBM.IBM 4764 PCI-X cryptographic coprocessor[EB/OL].http://www-03.ibm.com/security/cryptocards/pcixcc/overperformance.shtml,2011.
[11]Missall.Efficiency of the test data digest algorithm [EB/OL].http://missall.iteye.com/blog/252319,2008(in Chinese).[Missall.数据摘要算法的测试效率[EB/OL].http://miss-all.iteye.com/blog/252319,2008.]