CN113238711B - 一种电子数据取证领域中高效的哈希计算方法 - Google Patents
一种电子数据取证领域中高效的哈希计算方法 Download PDFInfo
- Publication number
- CN113238711B CN113238711B CN202110414737.8A CN202110414737A CN113238711B CN 113238711 B CN113238711 B CN 113238711B CN 202110414737 A CN202110414737 A CN 202110414737A CN 113238711 B CN113238711 B CN 113238711B
- Authority
- CN
- China
- Prior art keywords
- data
- read
- hash
- task
- reading
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 37
- 239000000463 material Substances 0.000 claims abstract description 40
- 238000000034 method Methods 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 2
- 238000004422 calculation algorithm Methods 0.000 abstract description 38
- 241000124818 Bucephala Species 0.000 description 13
- 238000007906 compression Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 9
- 238000002474 experimental method Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 230000006837 decompression Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000011835 investigation Methods 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000001010 compromised effect Effects 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 238000011842 forensic investigation Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于数字取证技术领域,公开了电子数据取证领域中一种高效的哈希计算工具,通过多线程实现快速将硬盘中的检材数据解压缩并读取到内存中;使用Producer和Consumer同步多个不同线程所读取的镜像数据块的顺序,并将其有序推入固定大小的队列;对读取到内存的数据块进行有序哈希,并计算检材镜像的完整哈希值。对比目前被广泛应用的取证软件的哈希计算效率,本专利的效率可提高10%至99%,且检材镜像的容量越大,其计算哈希的效率越高。同时本发明作为高效哈希计算工具,不仅支持目前常用的算法系列SHA和MD,更支持Blake、RIPEMD、WHIRLPOOL等更为安全的算法。
Description
技术领域
本发明属于数字取证技术领域,尤其涉及一种电子数据取证领域中高效的哈希计算方法。
背景技术
根据美国联邦调查局的调查统计,刑事案件的数据量以平均每年35%的速度在递增。并且涉及民事案件或内部调查的电子取证大多数都涉及TB级数据集。另一方面,在取证过程中需要对取证的检材进行压缩,以提高大容量压缩镜像的传输效率。然而在压缩以及解压缩和传输的过程中,电子数据的完整性很有可能会遭到破坏。随着检材数据集的不断增长,迫切需要一种高效的散列值计算方法来保护电子数据的完整性,以确保电子证据在法庭上的有效性。为了以自动化的方式研究和调查计算机犯罪案件,国内外涌现出了各种各样优秀的电子取证产品。计算机取证工具大致可分为以下几类:文件系统分析工具、注册表分析工具、数据库取证工具和移动设备取证工具等。本专利专注于研究针对传统文件系统的取证工具,尤其是它们面对电子取证检材的散列值计算功能。Guide Software公司研发的Encase、AccessData公司开发的FTK和德国X-Ways公司推出的X-Ways Forensics是国际上权威的文件系统取证软件,然而它们仅支持计算检材镜像的MD5和SHA-1值。并且大多数软件在打开镜像的同时会直接计算嫌疑人镜像的MD5和SHA-1值,当取证镜像足够大时,会严重影响调查人员的调查进展。国内功能强大、且被应用广泛的取证软件有厦门市美亚柏科信息股份有限公司的取证大师FMP和上海弘连网络科技有限公司的火眼证据分析软件GoldenEyes。以上所述的取证产品在深入了解取证调查工作流程和维护证据完整性方面表现突出并被国内众多取证专家用于调查工作。但是其计算大容量检材散列值的效率还有待提高。
为保障电子证据在传输过程中的完整性,需要在传输之前和接收之后分别计算取证检材的哈希值。为了减少传输及下载文件的时间,取证专家在传输证据之前会先压缩证据以保证带宽够用。尤其是目前涉及民事案件或内部调查的案件已经到达TB级数据集。Jesse Kornblum将spamsum算法引入计算机取证领域,并研发工具Ssdeep,用以快速发现同源的类似文件。然而它在大多数情况下计算散列值效率还有待改进,基于此一种基于上下文触发哈希技术的存储哈希和重哈希思想的改进算法又被提出,它利用分段哈希算法识别传统哈希方法无法识别的类文件,提高了其速度和相似性检测性能。国内常用的取证软件FMP、GoldenEyes等计算检材镜像哈希值的性能较低,严重影响取证人员处理海量案件的效率。故而本发明提出了一种高效的哈希计算工具Fast Hashing C alculator,可将哈希效率提高三倍以上。且检材镜像的容量越大,哈希效率增长越明显。
通过上述分析,现有技术存在的问题及缺陷为:
(1)现有软件计算电子取证检材镜像的散列值种类不足。
(2)现有技术中大多数取证软件从磁盘解压并读取检材镜像数据和计算哈希是同时进行,且二者争夺同一个CPU资源,使得计算电子取证检材镜像的哈希值速度较慢,严重影响取证专家处理海量案件的效率。
解决以上问题及缺陷的难度为:本发明引入了大多数取证软件暂不支持的哈希算法,如Blake、RIPEMD等系列算法等;同时提出了Fast Hashing Calculator算法大大提高了计算检材镜像哈希值的效率。本算法需要动态调整读取块大小、并行读写数。同时还需使用多线程同步来控制读取块顺序以满足哈希计算的要求。
解决以上问题及缺陷的意义为:本发明提高了计算检材镜像的效率,从而大大减少验证检材传输过程以及压缩过程完整性的时间,显著提高了取证专家计算哈希值的性能,尤其是在处理大容量检材时。且引入了多种哈希算法。
发明内容
针对现有技术存在的问题,本发明提供了电子数据取证领域中高效的哈希计算方法。
本发明实现方式如下,所述电子数据取证领域中高效的哈希计算方法,包括:
步骤一,通过多线程实现快速将硬盘中的检材数据解压缩并读取到内存中,以此来提高读取镜像数据块的效率;
步骤二,使用Producer和Consumer同步不同线程所读取的相同大小的镜像数据块的顺序,并将其有序推入队列,来满足多线程读取的数据块有序哈希的条件;
步骤三,对于读取到内存的数据块进行有序哈希并计算整个检材镜像的哈希值,从而验证传输及压缩过程镜像的完整性。
更进一步,所述步骤一中,负责多线程解压缩并将硬盘中的检材数据读取到内存的任务具体过程为:
1)创建任务管理器,负责创建磁盘数据解压并读取相同块大小的检材镜像的任务。2)到3)表示将分配多个线程从磁盘读取数据块,其中检材镜像的总大小为disk_size,而每个线程读取镜像的块大小表示为block_size;4)基于多线程同步将多个数据块有序入队5)将任务有序出队进行哈希计算。
每个线程包含三个参数,其中i表示读取数据块的序列号,event为同步原语,buf代表每个任务的所使用的缓冲区大小。从任务的偏移量位置开始读取块大小,放入任务的缓冲区,并设置一个触发事件,指示缓冲区已被读取。
使用生产者池Producer和消费者池Consumer来控制读取数据任务的顺序,其中生产者池和消费者池解压缩并读取数据的具体过程为:
首先,Producer使用read()方法对镜像数据进行解压缩和读取,同时需要设置任务的event原语。
然后,Consumer从任务生成器的队列中按照顺序获取任务,此进程将一直循环直到队列为空为止;
根据队列的先进先出即FIFO特性,Peek函数将获取当前队列的第一个值;
当多个线程在不同块上读取时,通过多线程同步按顺序读取数据。每次计算并更新当前已读取数据块的哈希值。
本发明的另一目的在于提供一种实施所述电子数据取证领域中高效的哈希计算方法,所述电子数据取证领域中高效的哈希计算方法的架构分配多个CPU进行解压缩和读取,并将解压缩读取的速度与哈希速度做适配。
本发明的另一目的在于提供一种接收用户输入程序存储介质,所存储的计算机程序使电子设备执行所述电子数据取证领域中哈希的高效计算方法,包括下列步骤:
步骤一,通过多线程实现快速将硬盘中的检材数据解压缩并读取到内存中,以此来提高读取镜像数据块的效率;
步骤二,使用Producer和Consumer同步不同线程所读取的相同大小的镜像数据块的顺序,并将其有序推入队列,来满足多线程读取的数据块有序哈希的条件;
步骤三,对于读取到内存的数据块进行有序哈希并返回整个检材镜像的完整哈希值,从而验证传输及压缩过程镜像的完整性。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:在数字取证领域,为了保证电子数据在传输前后以及压缩过程中的完整性,需要对检材镜像进行哈希计算来检验数据的完整性。通过对目前流行的计算机取证软件的哈希计算工具进行分析,发现这些软件的计算效率不是很出色。为了提高散列值计算的效率,本发明提出了一套新的算法-Fast Hashing Calculator,并提出了一种新的哈希架构,通过动态调整读取数据块大小和并行读写数来加速哈希效率。同时本发明不仅支持SHA系列算法和MD系列算法,而且支持Blake、RIPEMD等系列算法。
与目前针对传统文件系统取证的最为流行的数字取证软件的哈希计算功能相比,在相同性能的硬盘上计算哈希时,其效率可提高10%到99%。且电子取证检材镜像的容量越大,其散列效率越突出。
附图说明
图1是本发明实施例提供的电子数据取证中高效的哈希计算方法流程图。
图2是本发明实施例提供的电子数据取证中Fast Hashing Calculator的CPU分配架构示意图;
图中:1、磁盘;2、内存;3、CPU;4、解压器;5、queue队列;6、hashing器。
图3是本发明实施例提供的FMP和GoldenEyes的CPU分配架构示意图。
图4是本发明实施例提供的MD5对输入的512位块的处理过程示意图。
图5是本发明实施例提供的SHA-1对输入512位块的处理过程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种电子数据取证领域中高效的哈希计算方法,下面结合附图对本发明作详细的描述。
本发明提供的数字取证中哈希的高效方法业内的普通技术人员还可以采用其他的步骤实施,图1的本发明提供的电子数据取证领域中高效的哈希计算方法仅仅是一个具体实施例而已。
如图1所示,本发明实施例提供的数字取证中哈希的高效方法,包括:
S101:通过多线程实现快速将硬盘中的检材数据解压缩并读取到内存中,以此来提高读取镜像数据块的效率;
S102:使用Producer和Consumer同步不同线程所读取的相同大小的镜像数据块的顺序,并将其有序推入队列,来满足多线程读取的数据块有序哈希的条件;
S103:对于读取到内存的数据块进行有序哈希并计算整个检材镜像的哈希值,从而验证传输及压缩过程镜像的完整性。
本发明实施例提供的S101中,负责创建通过多线程实现快速将硬盘中的检材数据解压缩并读取到内存中的任务具体过程为:
1)创建任务管理器,负责创建磁盘数据解压并读取相同块大小的检材镜像的任务。2)到3)表示分配多个线程从磁盘读取数据块,其中检材镜像的总大小为disk_size,而每个线程读取镜像的块大小为block_size;4)基于多线程同步将多个数据块有序入队5)将任务有序出队并计算哈希。
本发明实施例提供的S102中,具体过程为:
使用生产者池Producer和消费者池Consumer来控制读取数据任务的顺序,其中生产者池和消费者池解压缩并读取数据的具体过程为:
首先,Producer使用read()方法对镜像数据进行解压缩和读取,同时需要设置任务的event原语。
然后,Consumer从任务生成器的队列中按照顺序获取任务,此进程将一直循环直到队列为空为止;
根据队列的先进先出即FIFO特性,Peek函数将获取当前队列的第一个值;
当多个线程在读取不同块时,通过多线程同步按顺序读取数据。每次计算并更新当前已读取数据块的哈希值。
如图2所示,本发明实施例提供的电子数据取证领域中一种高效计算哈希的方法设置有磁盘1,磁盘1与内存2连接,内存2与CPU3连接,CPU3与解压器4连接,解压器4与队列queue 5连接,队列queue 5与哈希计算器6连接。
下面结合具体实施例对本发明的技术方案作详细的描述。
信息完整性依赖于数据指纹来保证电子证据的唯一性,即散列算法将任意长度的数据映射到有限长度。散列函数通过将数据压缩成由随机字母和数字组成的不可逆摘要来减小数据的大小。散列算法包括以下:MD5、SHA-1、SHA-2、RIPEMD-160和BIAKE等。
2004年王晓云教授找到MD5和SHA-1快速碰撞的方法,破解了MD5和SHA-1算法。谷歌和CWIAmsterdam在2017年构建出了具有相同SHA-1的不同文件,意味着SHA-1算法不再安全。SHA-2、RIPEMD-160和BLAKE目前被世界密码界认为是安全的,很可能之后会被用于电子数据取证领域。在后面将介绍MD5、SHA-1和SHA-2散列算法的原理以及安全性分析,以了解它们的计算复杂度以及在取证领域的实用性。
如图4所示,MD5是Message-DigestAlgorithm 5,与MD2、MD3和MD4属同一系列。其输入可变长度的信息会被处理成固定128位长度的输出。首先将输入信息按每512位分组,每组又分为十六个32位的子分组。然后进行多次计算之后生成四个32位的子分组,这些子分组级联为128位的散列输出。MD5对于输入512位数据块的具体处理方式如图4所示。
对哈希函数的攻击主要来自于碰撞攻击,破解MD5其实就是在寻找特殊的碰撞。对于H(m)=H,若能找到一个m'满足H(m')=H的条件,则认为m和m'为一对碰撞。根据2-block的碰撞差分链和王晓云等人推导的相应条件,任何人都可以构造出MD5碰撞实例。尽管MD5是目前MD系列应用最为广泛的哈希算法,但MD5值在验证电子证据完整性方面已不再可靠,证据的完整性会依赖于SHA-1和SHA-2。
如图5所示,SHA是美国国家标准与技术研究院发布的作为美国联邦信息处理标准(FIPS)的一系列哈希算法的总称,包括SHA-0、SHA-1、SHA-2和SHA-3。目前在计算机取证领域最流行的是SHA-1和SHA-256。
其数据的预处理与MD5相同,即预处理后的明文长度为512位的整数倍。SHA-1的原始消息长度不能超过2的64次方,这与SHA-1生成的信息摘要是一致的。图5显示了SHA-1的处理过程比MD5更安全,因为它的摘要比MD5长32位,且比MD5多16步,记录单元长度比MD5长32位。由实验结果可知,SHA-1计算效率比MD5慢25%。
在2017年谷歌宣布与CWIAmsterdam合作,构造出两个SHA-1值相同但内容不同的PDF文件,意味着SHA-1算法被攻破。SHA-2作为SHA-1的改进算法,可被分为以下标准算法:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256。SHA-256为任意长度的消息生成256位的消息摘要并且内部状态为256位。总而言之,MD5和SHA-1的碰撞并不意味着这两种算法完全失效,找到具有特定意义的碰撞与为电子证据找到碰撞案例确有所不同。
此算法用Python语言实现,之所以选用python实现是因为Python语言的哈希基于计算哈希速度最快的OpenSSL库。而且Python函数调用的性能损耗仅为60纳秒,对哈希性能的影响微乎其微。在取证调查过程中,镜像的容量越大,函数调用对计算哈希的速度影响就越小,从而确保时间消耗都用于散列值计算,而不是Python的函数调用。图3是取证大师FMP和火眼证据分析软件GoldenEyes的CPU分配架构。和大多取证软件一样,它们将各种哈希计算工具集成到工具库中,且分配单核CPU来进行电子数据的读写和散列值计算,从而造成对CPU资源的争抢。当处理较大容量的压缩镜像时,会导致哈希计算过程等待时间过长,从而大大增加取证人员的时间成本。
基于此,本发明提出了一种CPU分配架构。如图2所示,本架构采用多个CPU对检材镜像的数据块进行解压缩并读取,使得哈希计算进程不用等待从磁盘读取数据块的进程。
Fast Hashing Calculator算法流程:
算法1代表任务生成器,负责创建对多个数据块解压缩并从磁盘读取数据块的任务。具体步骤如下,第1行创建全局队列。第2行到第8行表示for循环,其中disk_size是镜像文件的总大小,而block_size是每个线程读取镜像的数据块大小,此时读取的数据块大小已经和并行读写数做好适配。其中每个任务包含三个参数,i表示读取数据块的序号,event作为同步原语,buf表示每个任务的缓冲区大小。第5行将任务放入生产者池,下一行将任务放入队列。
如算法2所述,使用Producer和Consumer来确保读取数据任务的有序性。生产者池用于解压缩并读取数据,然后将数据推入队列。第1-7行代表生产者算法,第8-17行为消费者的算法,其中read()的作用是对镜像数据进行解压缩和读取。它包含两个参数,i*block_size是当前读取任务的偏移量,而block_size为算法1中所描述的块大小。
第3-5行:从线程池中获取任务。从任务的偏移量位置读取块大小,并将其放入任务的缓冲区。最后设置一个触发事件,表示缓冲区已被读取。此过程将循环直到队列为空为止。
第9行:初始化参数readed,该参数表示已被读取的数据块。
第11行:根据队列的先进先出特性(FIFO),peek()将获取当前队列的第一个值。
第12-15行:当多个线程读取不同数据块时,无法保证线程的读取顺序。因此,需要多线程同步来保证Consumer按顺序读取数据。Consumer将一直处于等待状态直到前一个块被读取。每次读取一块新的数据块,计算的哈希值就会被更新,任务结束的线程就会出列。最后将得到整个镜像的完整散列值。通过多次实验证明,该算法设置块大小为512Mib、并行读写数为3时性能最佳。一般情况下,并行读写数越高,解压缩和读取数据块的性能越好。但并行数过大时内存会转换为随机读写模式。为满足散列速度最高的要求,线程数和队列长度需满足一定的关系:队列长度=线程数+3。本算法分配三个CPU来解压缩和读取数据块,并且采用队列的形式在保证线程同步的同时提高CPU利用率。以此来减少验证电子数据完整性的时间消耗,大大方便了取证专家的调查工作。
下面结合具体实验对本发明的技术方案作进一步的描述。
实验设计:
为了评估FMP、GoldenEyes和Fast Hashing Calculator的性能,本发明通过比较不同大小和不同压缩比的镜像,其哈希计算的统计结果如表1、2、3所示。其中FMP和GoldenEyes版本为V6.1.71124和V4.8.0,本实验采用2.60GHz的Inter(R)Core(TM)i7-9750H CPU,高读写性能的1TB的三星PM981A SSD硬盘。在实验中,镜像的压缩大小从500MB到150GB,镜像的实际大小为10G B到466GB。
实验结论及分析:
在本实验中,对Fast Hashing Calculator、FMP和GoldenEyes所计算MD5、SHA-1、SHA-256效率进行比较。第一列是取证镜像的压缩大小,第二列表示其实际大小,压缩比列表示前两列之比。时间(GE)和时间(FMP)代表取证软件GoldenEyes和FMP计算哈希所消耗的时间,时间(FHC)代表为本发明计算散列值所需时间。后两列分别表示相对于GE和FMP,FHC算法计算哈希所提高效率的百分比。
表1可以看出Fast Hashing Calculator计算MD5的速度比GoldenEyes高12%到69%,当把镜像压缩大小作为单独变量时,会比FMP提高23%到66%。
表2显示了关于FMP、GoldenEyes和Fast Hashing Calculator算法计算不同大小镜像的SHA-1值所消耗的总时间。Fast Hashing Calculator计算SHA-1的性能比GoldenEyes高6%到61%,比FMP高9%到67%。
表1 MD5计算效率比较情况
表2 SHA-1计算效率比较情况
表3 SHA-256计算效率比较情况
从表3中可以看出,Fast Hashing Calculator比其他软件的计算效率要高得多。在计算SHA-256时,Fast Hashing Calculator比GoldenEyes高23%到51%,比FMP高50%到9%。总而言之,Fast Hashing Calculator在计算MD5时比GoldEneyes平均提高43%,比FMP平均提高45%。在计算SHA-1时,Fast Hashing Calculator比GoldenEyes平均提高32%,比FMP平均提高26%。当计算SHA-256时,Fast Hashing Calculator平均比GoldenEyes提高34%,比FMP提高63%。总体而言,GoldEneyes在计算散列时通常比FMP表现更好。结果表明,随着镜像压缩比的增加,计算散列值的效率提高得越明显。在镜像压缩比相同的情况下,镜像的实际大小越大,计算散列值的效率越低,且散列值计算效率与CPU和磁盘读写负载有关。
本发明为一种提高计算机取证领域哈希计算效率的工具,通过调整块大小和并行CPU数量的大小,使哈希速度达到单核计算的上限。此外,它不仅支持SHA和MD系列算法等流行算法,还支持Blake、RIPEMD等最新哈希算法。本发明提出的方案是传统文件系统取证中计算哈希的一个很好的选择。对于不同压缩比的大容量取证镜像,可以大大提高其散列效率。
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
Claims (4)
1.一种电子数据取证领域中高效的哈希计算方法,其特征在于,所述电子数据取证领域中高效的哈希计算方法,包括:
通过多线程实现快速将硬盘中的检材数据解压缩并读取到内存中;
使用Producer和Consumer同步不同线程所读取的相同大小的镜像数据块的顺序,并将其有序推入队列;
对于读取到内存的数据块进行有序哈希并返回整个检材镜像的完整哈希值;
通过多线程实现快速将硬盘中的检材数据解压缩并读取到内存的任务具体过程为:
1)创建任务管理器,负责创建对磁盘数据解压并读取相同块大小的检材镜像的任务;2)到3)表示分配多个线程使其同时从磁盘读取多个数据块,其中检材镜像的总大小为disk_size,而每个线程读取镜像的块大小为block_size;4)基于多线程同步保证多个数据块有序入队5)将任务有序出队进行哈希计算;
所述每个线程包含三个参数,其中i表示读取数据块的序列号,event为同步原语,buf代表每个任务的所使用的缓冲区大小;从任务的偏移量位置开始读取块大小,将其放入任务的缓冲区,并设置一个触发事件,指示缓冲区已被读取;
使用生产者池Producer和消费者池Consumer来控制读取数据任务的顺序,其中生产者池和消费者池解压缩并读取数据的具体过程为:
首先,Producer使用read()方法对镜像数据进行解压缩和读取,同时需要设置任务的event原语;
然后,Consumer从任务生成器的队列中按照顺序获取任务,此进程将一直循环直到队列为空为止;
根据队列的先进先出即FIFO特性,Peek函数将获取当前队列的第一个值;
当多个线程在不同块上读取时,通过多线程同步按顺序读取数据;每次计算并更新当前已读取数据块的哈希值。
2.如权利要求1所述电子数据取证领域中高效的哈希计算方法,其特征在于,每读取一个数据块,计算的哈希值就会更新,所涉及的数据块就会出列,直到得到整个检材镜像的完整散列值。
3.一种实施如权利要求1~2任意一项所述电子数据取证领域中高效的哈希计算方法,其特征在于,所述电子数据取证领域中高效的哈希计算方法的架构设置会分配多个CPU进行解压缩和读取,并将解压缩读取的速度与哈希速度做适配。
4.一种接收用户输入程序存储介质,所存储的计算机程序使电子设备执行权利要求1~2任意一项所述电子数据取证领域中哈希的高效计算方法,包括下列步骤:
步骤一,通过多线程实现快速将硬盘中的检材数据解压缩并读取到内存中;
步骤二,使用Producer和Consumer同步不同线程所读取的相同大小的镜像数据块的顺序,并将其有序推入队列;
步骤三,对于读取到内存的数据块进行有序哈希并返回整个检材镜像的完整哈希值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110414737.8A CN113238711B (zh) | 2021-04-17 | 2021-04-17 | 一种电子数据取证领域中高效的哈希计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110414737.8A CN113238711B (zh) | 2021-04-17 | 2021-04-17 | 一种电子数据取证领域中高效的哈希计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113238711A CN113238711A (zh) | 2021-08-10 |
CN113238711B true CN113238711B (zh) | 2024-02-02 |
Family
ID=77128522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110414737.8A Active CN113238711B (zh) | 2021-04-17 | 2021-04-17 | 一种电子数据取证领域中高效的哈希计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113238711B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116702225B (zh) * | 2023-06-08 | 2024-07-02 | 重庆亲笔签数字科技有限公司 | 基于哈希并行计算快速验证电子档案文件的方法、系统、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678571A (zh) * | 2013-12-09 | 2014-03-26 | 中国科学院深圳先进技术研究院 | 应用于单台多核处理器主机的多线程网络爬虫执行方法 |
CN106991011A (zh) * | 2017-03-30 | 2017-07-28 | 武汉大学 | 一种针对大数据任务处理的基于cpu多线程与gpu多粒度并行及协同优化的方法 |
CN109214180A (zh) * | 2017-06-30 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 一种内存代码的校验方法及装置 |
CN110362348A (zh) * | 2018-04-09 | 2019-10-22 | 武汉斗鱼网络科技有限公司 | 一种队列存取数据的方法、装置及电子设备 |
CN112667414A (zh) * | 2020-12-23 | 2021-04-16 | 平安普惠企业管理有限公司 | 基于消息队列的消息消费方法、装置、计算机设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10430336B2 (en) * | 2017-04-24 | 2019-10-01 | Exten Technologies, Inc. | Lock-free raid implementation in multi-queue architecture |
-
2021
- 2021-04-17 CN CN202110414737.8A patent/CN113238711B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678571A (zh) * | 2013-12-09 | 2014-03-26 | 中国科学院深圳先进技术研究院 | 应用于单台多核处理器主机的多线程网络爬虫执行方法 |
CN106991011A (zh) * | 2017-03-30 | 2017-07-28 | 武汉大学 | 一种针对大数据任务处理的基于cpu多线程与gpu多粒度并行及协同优化的方法 |
CN109214180A (zh) * | 2017-06-30 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 一种内存代码的校验方法及装置 |
CN110362348A (zh) * | 2018-04-09 | 2019-10-22 | 武汉斗鱼网络科技有限公司 | 一种队列存取数据的方法、装置及电子设备 |
CN112667414A (zh) * | 2020-12-23 | 2021-04-16 | 平安普惠企业管理有限公司 | 基于消息队列的消息消费方法、装置、计算机设备及介质 |
Non-Patent Citations (2)
Title |
---|
A_Fairness-driven_Active_Queue_Management_Algorithm_with_Hash_Table_and_Circular_Buffer;Siqiao Hu;《2020 Chinese Control And Decision Conference(CCDC)》;第2502-2506页 * |
基于共享存储的MPP数据库连接执行研究;孙庆鑫;雷迎春;龚奕利;;计算机工程(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113238711A (zh) | 2021-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8938603B2 (en) | Cache system optimized for cache miss detection | |
US8276154B2 (en) | Hash partitioning streamed data | |
CN109255057B (zh) | 区块生成方法、装置、设备及存储介质 | |
US20140324890A1 (en) | Data Driven Parallel Sorting System and Method | |
US20120047514A1 (en) | Scheduling system and method of efficiently processing applications | |
US10152420B2 (en) | Multi-way set associative cache and processing method thereof | |
US20150095292A1 (en) | Data fragmentation tuning and candidacy persistence | |
CN110069557B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN108427575B (zh) | 全流水结构sha-2消息扩展优化方法 | |
US10216645B2 (en) | Memory data transfer method and system | |
CN109101662B (zh) | 区块生成方法、装置、设备及存储介质 | |
CN113238711B (zh) | 一种电子数据取证领域中高效的哈希计算方法 | |
US10049113B2 (en) | File scanning method and apparatus | |
CN112256599A (zh) | 一种数据预取方法、装置及存储设备 | |
CN103995863A (zh) | 一种重复数据删除的方法及装置 | |
US8830714B2 (en) | High speed large scale dictionary matching | |
CN110990897A (zh) | 一种文件指纹的生成方法及装置 | |
CN110958212B (zh) | 一种数据压缩、数据解压缩方法、装置及设备 | |
CN111459937B (zh) | 数据表关联方法、装置、服务器及存储介质 | |
CN107426331A (zh) | 一种基于JavaScript的文件上传方法及装置 | |
Collange et al. | Using graphics processors for parallelizing hash-based data carving | |
US11582133B2 (en) | Apparatus and method for distributed processing of identical packet in high-speed network security equipment | |
CN110955461B (zh) | 计算任务的处理方法、装置、系统、服务器和存储介质 | |
US20210055976A1 (en) | Processing of a message stream | |
Gonzales et al. | Digital Forensics Compute Cluster (DFORC2)–A New High Speed Distributed Computing Capability for Digital Forensics |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |