指纹数据

2024-10-16

指纹数据(精选7篇)

指纹数据 篇1

Rabin指纹算法[1]由美国哈佛大学教授拉宾(Rabin)提出,具有计算效率高、结果对任意数据呈现出均匀分布的特点,常用于进行快速比较并识别出重复数据,在很多领域有着广泛的应用。文献[2]利用通过计算邮件正文的Rabin指纹实现高速网络环境下的实时垃圾邮件检测。文献[3]基于Rabin指纹方法实现URL的去重,提高检索速度。文献[4]在对Web页面并行采集过程中利用Rabin指纹实现网页的识别。文献[5]利用改进的Rabin指纹算法实现对大规模分布式网络中恶意代码特征码的自动提取。

重复数据检测和删除技术能够消除存储系统中的冗余数据,降低用户的磁盘采购费用,减少在网络中传输的数据量,为企业和个人节约在人力、设备、资源、资金等方面的开销,带来良好的经济效益。Rabin指纹算法常用在基于内容分块(Content Defined Chunking,CDC)[6]的重复数据检测中,以便实现文件中数据的分块,在LBFS[7]、Pastiche[8]、Deep Store[9]等归档或存储系统中得到广泛应用。国内也对Rabin指纹在重复数据检测和删除中的应用进行了一些研究,文献[10]提出一种并行层次化的重复数据删除算法,文献[11]实现了一个基于重复数据删除的多用户文件备份系统,文献[12]实现了一个基于因果关系的数据去重结构CABDedupe,文献[13]提出了一种基于重复数据删除的Oracle数据库备份系统。

1 技术原理

CDC方法采取一个数据滑动窗口从文件的开头向尾部滑动,逐一计算出滑动窗口内数据块的Rabin指纹,如果指纹值跟某个预设的值相同,则将该窗口的开始位置作为数据块的分割点。当窗口滑动到文件末尾时,文件分块结束。对于划分的每一个数据块计算出其哈希值,以便进一步检测它是否重复数据块。CDC方法可以将数据更新对数据块边界划分的影响控制在更新位置附近的少数几个块内,保持其他数据块不变,适合应用于更新频繁的数据集。为了避免产生过大的块,一般要规定数据块大小的上限。为了避免产生过小的块,可以规定数据块大小的下限。

Rabin指纹的计算在有限域GF(2n)上进行。假设S[a1,a2,...,an]是包含n个二进制位的字符串,那么可以根据S构造相应的n-1次多项式(其中t是不定元):s(t)=a1tn-1+a2tn-2+...+an-1t+an(1

给定一个次数为k的多项式p(t)=b1tk+b2tk-1+...+bktk+bk+1,s(t)除以p(t)到余数r(t),则r(t)的次数为(k-1)。定义S的指纹r(t)如下:

对于图1中的连续字符串[X1,X2,...,Xw,Xw+1,Xw+2,...](每个字符为8个二进制位),滑动窗口宽度为w,任一字符Xi所代表的多项式为Xi(t),则以字符Xi为起点、宽度为w的窗口内字符串[Xi,Xi+1,...,Xw-i+1]的Rabin指纹值ri(t)为:

当窗口向前滑动一个字节,则以字符Xi+1为起点、宽度为w的滑动块字符串[Xi,Xi+1,...,Xi+w]的Rabin指纹值ri+1(t)为:

每当窗口向前移动1个字节,新窗口内的数据块的Rabin指纹值可根据旧指纹值、移出字符、移入字符迭代计算(其中t8和t8w是可以事先计算出的常数),只需再做1次加法、1次减法和2次乘法,计算时间复杂度为O(1)。有限域GF(2n)中的加法和减法实质上是按位异或运算,在C语言等高级编程语言可用一条位运算指令实现;但乘除法的计算过程较为复杂,当阶较小时(如n为8、16),可事先计算出乘法/除法的结果,以表格的形式保存在内存中,乘除法运算以查表代替,则运算时可以读取内存来代替一系列的复杂操作,从而大大加快计算速度。

2 Rabin算法实现数据分块的过程

使用Rabin算法实现数据分块的过程使用两个物理上相邻的内存缓冲区读写数据,如图2所示。第一个缓冲区的首地址为buf1,长度为滑动窗口宽度w;第二个缓冲区的首地址为buf2,长度为len2(len2=数据块容量的上限)。将需要进行分块的文件内容依次读到内存缓冲区,滑动窗口在缓冲区的左端向右端滑动,在这过程中依次计算出窗口内数据的Rabin指纹,与事先设定的常数x比对,以决定文件的分割点。

算法的伪代码如下:

3 实验结果

算法采用VC++6.0进行编程实现,在普通笔记本电脑上进行了验证。实验所用计算机的CPU为Intel双核,型号T6400,主频2GHz;硬盘容量为500G,转速为5400转;内存容量为2G,型号为DDR2-667。在硬盘中提取Word文档、程序源代码和BMP图像三类有代表性的文件,见表1所列。

实验中对表1中的数据集分别设置数据块大小的上限为64、256、512、1024、4096字节,下限为上限的一半,主要从重复数据检测率、磁盘利用率和数据处理速度的角度进行测试。使用SHA-1算法进行哈希值计算,如果两个数据块的哈希值相等则认为检测到重复数据。

3.1 重复数据检测率测试

重复数据检测率为算法执行后得到的数据总量与数据集中的原有数据总量的比值,用于衡量重复检测算法的消冗效果。

以文件类型为作为分类项目,对比数据块最大容量分别为64、256、512、1024、4096时的重复数据检测率,结果如图3所示。可见数据块越大,意味着检测粒度更粗,重复数据检测率将会下降,每类文件的在数据分块大小分别取不同值的表现排序基本是一致的。

3.2 磁盘利用率测试

磁盘利用率是数据实际容量与占用空间的比值,用于衡量磁盘空间的实际使用比例。磁盘空间是以簇为基本单位进行分配的(如在NTFS文件系统为4KB),比如某个数据块只有3000字节,但它实际上要占用4096字节的磁盘空间,因此这个数据块对磁盘空间的利用率只有73%。对于采用了重复数据删除技术的存储系统,由于很多数据块的容量可能不是簇的整数倍,造成磁盘空间无法完全利用,将会抵消重复数据删除的效果。

以文件类型为作为分类项目,对比数据块最大容量分别为64、256、512、1024、4096时的磁盘利用率,结果如图4所示。可见随着数据块的增大,磁盘利用率将会略有下降,由于数据块分块大小不一的原因,导致约有10%到15%的磁盘空间无法利用,一定程度上抵消了重复数据消冗的效果。

4 结论

实验仅在小数据集上进行,实际生产中使用的存储系统中的数据分块粒度会更大些,一般在4KB至128KB之间,但系统中的重复数据比例也将会更多,两方面产生的影响相互抵消,因此实验测试结果与实际存储环境不会有大太差距,实际上很多公开报道的重复数据删除系统的数据指标也与本实验结果相近。该文的工作结果具有实际指导意义。

以Rabin指纹作为数据块划分依据的重复数据检测方法适合应用于更新频繁的数据集,已被国内外很多存储系统所采用。近年来,随着数据信息的爆炸性增长,企业对存储的需求越来越大,已从前几年的TB级上升到PB级,甚至EB级。由于网络共享手段的日益普及,人们交流数据的机会大大增加,以网络硬盘为代表的网络存储系统中充斥着大量的重复数据。重复数据检测和删除技术的应用必将能带来巨大的效益。

指纹数据 篇2

数据泄露[1]是企业和云服务提供商面临的一个重要安全问题。在2012年,每个月有100多次数据泄露事件发生,有些事件的影响范围达上千万人。虽然采取了防火墙、IPS/IDS设备,但是由于zero-day攻击、应用层损坏、程序问题或错误配置,类似的数据泄露问题仍然时有发生。因此,有必要采取专门的安全层措施,以保护存储在云设备中的数据安全,防止数据泄露。

为了防止数据泄露,本文基于如下理念:在云网络中再设立一层防泄露(DLP)检测机制来保证敏感数据不会离开企业或云服务供应商的边界。这需要对离开网络的所有数据进行在线检查。为了获得更强的安全性,我们使用一种白名单机制,一项内容只有在确定的经过允许的白名单中才可以离开网络。理想情况下,这些检测必须精细化,管理员可以确定DLP检测时的文件白名单,因此降低了攻击者偷偷地将敏感数据传出网络边界的概率。

本文贡献如下:1)提出一种新的DLP机制,通过使用白名单,显著提高了数据传输的安全性。本文机制支持精细化数据访问控制:文件层级的访问控制,而不是网络或账户级别;2)提出一种基于文件指纹和Bloom滤波器的数据泄露检测算法。通过使用动态规划来计算最优检测位置,最大限度地降低了内存开销,支持高速部署。因此,系统使用本文算法后可以拓展至大量文件情况,且没有增加平均最大数据泄露量;3)基于多个真实文件集合展开实验(总文件量接近70 GB)。实验结果表明,使用Bloom滤波器后可将内存使用量降低50倍以上。对于一百万兆的数据,本文算法需要340 MB的内存就可实现1000比特的最差检测延时期望(即被泄露的数据量)。

1 相关工作

人们已经提出了多种基于网络的预防模型来解决数据泄露问题。例如,文献[2]对外传数据进行检测来防止内部数据泄露。它的主要思路是检测是否出现指定的关键词和数据模式,通过这些测试的所有数据都将被阻止。文献[3]使用基于相似度的内容分类器来检测与黑名单机密内容类似的其他内容,并且阻止其离开网络。文献[4]针对云存储中敏感数据的机密性保护问题,在基于属性的加密基础上提出了一种密文访问控制方法HCRE。其思想是设计一种基于秘密共享方案的算法,将访问控制策略变更导致的重加密过程转移到云端执行,从而降低权限管理的复杂度,实现高效的动态密文访问控制。实验分析表明,HCRE显著降低了权限管理的时间代价,而且没有向云端泄露额外的信息,保持了数据机密性。

另外还有,文献[5]针对用户在使用云计算时容易导致敏感数据外泄的问题,提出一种防泄露技术来保护用户数据,通过对HTTP消息的检测,可检测到用户和云服务之间的数据扩散,截获用户和云计算服务之间的文件传输并进行记录,严格执行数据扩散的预制策略。在文件被上传到云后控制文件的传播,让只有经过授权的用户可以访问。通过在Dropbox等真实云环境的应用和验证,证实了技术的有效性。文献[6]研究了云计算中大规模数据的安全传递问题,由于传递的数据信息量巨大,发生云空间不足,或者被外界恶意攻击的几率较高,容易发生数据泄漏、数据异常,造成海量数据传递的机密性和安全性不高的问题。为提高数据传递的安全性,提出一种多层防护的云计算安全数据传递方法,运用多层数据防护技术对海量数据传递时发生的异常进行检测,采用多点校验技术使得数据偏差幅度最小,保证数据的安全性,克服传统方法的缺陷。实验证明,利用改进方法能够大幅提高海量数据在传递过程的安全性,取得了令人满意的效果。文献[7]利用网络边界的一个代理进行DLP检查,它通过在哈希表中存储指纹来提高数据传输的安全性,但是该方法要消耗较多的内存。文献[8]使用基于信息流控制(或污点跟踪)的方法来防止程序泄露信息。这些方法虽然可能有效,但是它们需要整个程序重写甚至要求操作系统在客户端运行。

总的来说,以上方案还存在以下几个问题:1)攻击者仍然可以避免黑名单关键词来偷窃到其他信息。攻击者也可以对内容进行加密或转换,以逃避检测。由于合法内容也可能刚好包括类似的关键词,导致虚警率较高;2)由于该检测机制虚警率高,许多合法文件被错误拦截,同时为攻击人员掩盖关键词留下了安全漏洞。鉴于以上的不足,本文提出了一种改进的数据防泄漏方案,并通过仿真实验验证了该方案的有效性。

2 系统模型

我们的目标就是防止企业或云设备的敏感文件泄露到网络边界之外。网络管理员将该任务交给装备在网络边界处的DLP设备或软件系统,对所有外传数据进行检测,并拦截敏感数据的传输。在云计算背景下,连同其一起安装的还有防火墙、IDS和IPS,传输时需要经过机构VLSN的数据都需要通过这些防火墙、IDS和IPS。

本文系统以敏感文件(不得离开网络)和非敏感文件(由用户和网络管理员共同商议决定)的分类作为输入。以此输入为基础,本系统创建可以离开网络的文件白名单。任何将要离开网络的数据必须要通过白名单检测。

我们有两个重要设计目标:(1)它应该尽量早地发现并避免敏感数据泄露,即泄露开始点和泄露被发现点之间的间隔应该尽可能地小;(2)由于大多数企业和云数据中心存储数以百万计的文件(TB级别),系统可以拓展至大量文件情况。为了满足这些要求,本文系统从白名单内容中提取出签名,并且创建一个紧凑型指纹数据库。通过仔细选择这些签名,可以在检测延时和系统开销间进行折衷。图1描述了本文系统的架构。

该方案位于网络边界上,通过Bloom滤波器构建签名数据库来防止敏感数据流出网络。

本文模型假设合法用户可以通过执行HPPT、FTP等预先明确的协议来访问数据。只有这些协议被允许穿越网络边界进行数据传输。DLP系统可以从数据包中提取并检测有用负荷。我们假设终端主机可能被损坏,但是DLP系统在专用网关运行,不会被损坏。可能存在以下攻击:1)攻击者通过对白名单内容中的敏感数据进行混合来偷窃数据。由于白名单内容允许通过网络边界,所以敏感数据将会造成Bloom滤波器失效,进而被检测。2)攻击者通过加密、编码或其他手段来变换敏感数据,以将数据移出。这一攻击同样不会有效,因为这些经过变换的数据不是签名数据库的一部分,所以连接将被终止。3)攻击者可能会修改协议头部,使DLP系统无法正确识别协议而提取有效负荷,或者提取有效负荷的错误部分。然而,DLP系统可以检查协议字段的合法性,只允许合法协议通过。请注意,我们假设物理网络架构没有被损坏。例如,我们不得通过其他路由路径绕过DLP网关。我们不会通过非网络接口(比如USB接口)来处理数据复制问题。

3 指纹初步检测算法

现在对动态指纹检测进行简要描述。基本定义之后,首先简要描述指纹检测初步算法。虽然初步算法的内存和处理效率较低,但是可为下一节概率检测算法打下基础。

考虑一个数据库D,由n个二元字符串F1,F2,…,Fn构成。设l(Fj)表示字符串j的长度(比特数量)。设Fj[k]表示由字符串j前k个比特构成的字符串。二元字符串S以每次一个比特的速度输入系统,S的长度事先并不知晓。设S[k]表示S前k个比特构成的字符串。

定义1设有数据库D,如果存在Fj∈D满足如下条件,则认为二元字符串S为k位可行字符串:

换句话说,如果S的前k位比特与D中某个字符串的前k位相同,则认为S为k位可行。我们现在定义输入字符不可行点。

定义2设有数据库D,输入字符串S的不可行点I(S),定义为字符串S不是k位可行字符串的第一个位置k。

字符串S的不可行点是指字符串S与任何字符串Fj∈D均不匹配的第一个点。如果字符串S对部分k≤l(S)不是k位不可行,则称该字符串不可行。如果整个字符串是可行字符串,则定义字符串的不可行点无穷大,即S为l(S)位可行。总体来说,每位比特之后均检测字符串S是否可行并不现实。我们假设,通过一个确定性或概率性检测机制,对字符串进行周期性检测。如果字符串S的t比特到达后进行检测,则我们就可以知道S是不是t位可行。检测分为两种类型:

1)如果检测是确定性检测,则我们可以确切知道检测执行后,S是否是t位可行。

2)如果检测是概率性检测,且在t比特后检测S,则:

如果S为t位可行,则检测结论为它就是t位可行。

如果S不是t位可行,则我们只认为它以一定概率不为t位可行。这一概率称为检测概率。

由于我们只是周期性地检查字符串,所以在不可行点和不可行检测点间存在一个延时。即使是对确定性检测,这一延时也取决于字符串的不可行点。

定义3字符串S的检测延时表示为Δ(S),是指字符串为不可行的点到不可行被检测出来的点之间的距离。

对概率检测,检测延时期望为:

本文主要考虑概率检测,所以我们主要对检测延时的期望感兴趣。总体来说,对所有的Fj∈D,通过每个Fj[t]计算S[t]来检测每个t时S[t]是否具有可行性,这种做法并不现实。因为这一操作需要进行nt次比较,其中n是D中字符串的数量,而n和l(S)(及t)可能非常大。鉴于此,本文给出一种性能相当但处理量更小的方法,其基本思想是:创建数据库中子字符串的指纹,并将其与为输入字符串创建的指纹进行比较。此外,只需要在固定点1≤t1<t2<…<tp进行检查即可,而不需要每个比特到达之后对输入字符串进行检查,其主要步骤如算法1所示。

算法1直接指纹比对算法

Step1对每个字符串Fj∈D,计算所有tk≤l(Fj)时Fj[tk]的指纹。指纹可能是Fj[tk]128位的CRC。将该指纹表示为F[Fj[tk]]。

Step2 D中子字符串生成的所有指纹存储于指纹哈希表中。

Step3对所有的tk≤l(S),计算输入字符串S在S[tk]处的指纹。

Step4只要字符串S[tk]生成一个指纹F[S[tk]],它就被哈希到指纹哈希表中。如果F[S[tk]]将被哈希进的哈希表有一或多个元素,则对这些指纹进行比较,查看是否存在指纹匹配。

Step5如果对字符串S,在S[tk]处第一次没有指纹匹配,则认为字符串为tk位不可行。

由于字符串的指纹基于CRC,所以可以逐步计算指纹。这一方法的成功性和可行性取决于两个因素:

1)指纹长度:指纹必须足够长,使两个不同的字符串具有相同指纹的概率足够小。对大部分应用,128或256位的指纹应该足够。

2)哈希表大小:哈希表应该足够大,以避免出现太多冲突。如果冲突太多,必须进行多次比较,以确定是否存在指纹匹配。

指纹比较时间与指纹长度成正比。即使使用128位的指纹,比较开销也会非常大。此外,D中所有子字符串的指纹必须存储起来,这也增加了内存开销。对于实时应用而言,指纹直接比较方法的实用性有限,鉴于此,下面给出了一种概率方法,以确定S的不可行点。

4 基于概率的检测算法

如上节所示,直接指纹比较方法存在计算量大、内在开销大的问题。我们通过概率检测来降低这两方面的开销。对指纹比对,我们有一组整数1≤t1<t2<…<tp,且字符串只在这些点检测。与直接指纹比较方法不同的是,我们对这些检测点均关联一个Bloom滤波器(BF)[9],与tk关联的BF表示为B[tk]。概率检测的主要步骤如算法2所示。

算法2概率检测算法

Step1对每个字符串Fj∈D,计算Fj[tk]的指纹且对所有的tk有tk≤l(Fj)。对指纹匹配,我们可以使用基于CRC的指纹。将该指纹表示为F[Fj[tk]]。

Step2将指纹哈希进BF B[tk]。

Step3对所有的tk≤l(S),输入字符串S的指纹和S[tk]指纹进行比较。

Step4当字符串S[tk]生成一个指纹F[S[tk]]时,将其哈希进BF B[tk]。如果BF表明F[S[tk]]不在BF中,则我们可以确定S为tk位不可行。

与直接指纹比较方法相比,该方法大大降低了内存和处理量开销。由于指纹不需被存储,因此内存量与指纹长度无关。当在某个tk处计算出字符串S的指纹时,它将被哈希进BF B[tk]中。在该点,确定相关比特是否为0的检测只需进行一次。没有涉及指纹匹配。然而,概率检测存在的问题是它可能导致虚警,即有些情况下,S为tk位不可行,但是由于BF中的B[tk]冲突,我们可能认为存在指纹匹配。因此,需要仔细选择B[tk]中的比特数量。

4.1 定位Bloom滤波器

本节将给出概率检测的一些属性,这些属性有助于确定如何部署BF。假设有k个检测点t1,t2,…,tk。已知字符串S,定义l1=t1且lj=tj-tj-1,其中j=2,3,…,k且lk+1=l(S)-tk。请注意,lk+1=l(S)-tk表示lk+1=l(S)-tk和tj两次检测间的比特数量。考虑到一个字符串的检测延时为字符串成为不可行字符串到不可行被检测出来之间的间隔。一般来说,检测延时取决于字符串从哪个点开始成为不可行字符串。由于我们是周期性地检测字符串,所以用θ(S,k)表示字符串S在比特k处成为不可行字符串时的检测延时。因为我们使用的是概率检测策略,所以θ(S,k)是一个随机变量。因此,E[θ(S,k)]表示字符串S在比特k处成为不可行字符串时的检测延时期望值。最差期望泄露表示为maxkE[θ(S,k)]。我们规定,最坏期望检测延时应该小于δ。换句话说,希望提出一种消耗内存最小的概率检测机制,以保证:

下面将定义检测点的检测概率,这对确定内存分配具有重要作用。

定义4检测点tk处的检测概率定义为在tk处为不可行的字符串可以被检测出来的概率。我们将tk处的检测概率表示为pk。

请注意,任一检测点的检测概率将取决于在该检测点分配给BF的比特数量。已知字符串S,考虑tk≤l(S)时字符串的最后一个检测点tk。由于tk后字符串没有被检测,所以:

由于希望实现maxkE[θ(S,k)]≤δ,于是设置lk+1=δ。从技术角度来说,lk+1≤δ,但是使用等式关系,因为这是最宽松的条件。现在考虑字符串在tk-1后才变为不可行字符串时的检测延时期望。在对tk检查时不可行性以概率pk被检测出来:

由于对min maxkE[δ(S,k)]有兴趣,所以生成pk使E[δ(S,tk-1+1)]=δ。于是,lk+(1-pk)δ=δ。为了求解pk,我们有lk=pkδ。请注意,如果在间隔lk内的任意点,字符串变得不可行,则检测延时只会降低。如果不可行比特在lk-2检测之后设置,则检测延时期望将为:

同时,我们希望该值等于δ。

将lk=pkδ和lk+1=δ代入上式并化简,有lk-1=pk-1δ。持续进行上述步骤,将会发现:

现在得到了检测点和检测概率之间的关系。同时,可以确定为了达到所要求的检测概率,需要多少个比特。

4.2 实现检测概率所需要的比特

假设需要确定到底需要多少个比特才能实现检测概率p。假设有b个比特和h个哈希函数的BF滤波器。如果数据库中有n个字符串,则基于h个哈希函数的BF滤波器的检测概率为:

已知p,并且需要确定哈希数量h,以实现内存量b的最小化。为了求解式(2)中的b,我们有:

本文不是对h微分,而是使用与文献[10]类似的方法,设置将h值代入式(3),有:

请注意,当已知哈希最优数量时,上式右侧将实现最小化,对应的最小内存量为:

式中,已经假设了哈希数量可以为分数。在计算实际内存量时,必须要考虑最优哈希数量必须为整数这一事实。有一种特殊情况就是哈希数量为1(h=1)。此时,p和b间的关系为:

总体来说,δ值确定后,式(1)将检测概率表示为一个滤波器部署位置的函数,式(4)给出了为了实现预期检测概率,D中每个字符串需要的最小比特数量。在下面两节,将讨论到底应该在什么地方进行检测,以实现内存需求量最小化。检测位置取决于数据库中字符串长度l(Fj)的分布。在讨论一般化情况前,首先讨论数据库中所有字符串长度相同这一特殊情况。

5 字符串长度相同时的检测概率

假设考虑的情况中,数据库有n个字符串,每个字符串的长度为L。对概率检测,必须要确定如下事项:1)检测数量;2)检测位置;3)每次检测时分配的比特数量。

假设δ表示最差检测延时期望。假设使用k个检测点(待定)。根据式(1),有:

由于所有字符串的长度为L:

这表明:

因为所有字符串的长度相同,可以假设所有的pj具有相同的数值比如p。假设使用k个检测点,每个检测点的检测概率为p。在上式中设置pi=p,为了求解p,有:

为了实现该检测概率所需要的比特数量已经在式(3)中给出:

比特总数量为我们希望选择合适的k使B最小化。如前文所述,上面B式只是近似表达式,因为它假设使用的哈希数量可以为分数。然而很明显,B是关于k的一个递减函数。当k较大时,p将变小,只有唯一的最优哈希函数。对单一的哈希函数,我们知道,实现给定检测概率需要的内存量在式(5)中给出,因此,使用单一哈希函数,可以将内存量计算为已知δ后,希望确定检测点的数量,使B最小化。就B对k微分,然后设置为0来求解k值,可得将其代入B表达式,可得最小内存量为因为在上一近似表达式中已经假设了于是有log B+logδ≈log(e Ln)。现在开始考虑数据库中字符串长度不一这一普遍情况。此时,因为字符串的数量随检测点而变,所以不能假设所有pj相同。首先根据讨论字符串长度相同时获得的一些结论,研究一种启发式算法;然后,提出一种基于最优动态规划的内存量最小化算法。

5.1 等距检测启发式算法

当所有字符串的长度均为L时,最差检测延时期望为δ,每次检测的检测概率为因为最优值为则每次检测时的比特数量为L。当字符串长度不同时,使用如下启发式策略:

1)设置每个滤波器的检测概率为这表明,对所有的j均有于是所有检测的间隔均为

2)对应的检测点数量为

3)每次检测j的比特数量为

于是,检测需要的比特总量为:

请注意:

其中,M是数据库所有字符串的比特总量。很明显,这表明需要的比特总量为:

或者:

式(6)给出了一种简单的经验法则,可用于确定字符串长度不同时需要的内存量。在下节,将提出一种基于动态规划的算法,用于确定字符串长度不同时需要的比特最优数量。在评估部分将会证明,上文提出的启发式算法可以有效近似几乎所有检测问题的最优解。

5.2 基于动态规划的最优算法

如上文所述,因为检测概率是检测位置的函数,所以字符串长度不同时难度很大。考虑到N(t)为长度超过t个比特的字符串数量。如果希望得到位置t处的检测概率p,则需要的比特数量为:

于是,更应该确定N(t)在什么位置变小。这必须与最大最差检测延时期望δ做出折衷。我们必须确定最优检测位置及每个检测位置BF滤波器的比特数量。由此提出了一种动态规划算法来确定最优比特数量。

算法3 Optimal Filter Placement()

该算法的主要特点如下:

1)算法对比特t维护一个状态值f(t),表示直到t比特(不包括)的比特最优数量。

2)使用辅助变量p(t)来重新计算动态规划算法。p(t)值表示在比特t右侧将要执行检测的最近位置。

3)算法从lmax开始反向运行至第1个比特。开始时对所有的1≤t≤lmax,有f(t)=0。我们知道lk+1=δ,于是设置上一次检测为lmax-δ。同时设置f(lmax-δ)=0且p(lmax-δ)=。

4)f(t)表示了直到t比特的最优比特数量:

其中,第一项表示滤波器位于位置t时,位置t+g需要的比特数量。请注意,此时滤波器间的距离为g;从式(1)可知位置t+g的检测概率为在t+g处有N(t+g)个字符串。因此,t+g需要的比特数量为第二项f(t+g)表示从t+g开始需要的比特最小数量。g的数值不得大于δ,因为如果大于δ,则会导致最差检测延时期望大于δ。

5)设下式表示实现数值最小化时的位置:

设置p(t)=t+g*。当BF滤波器的位置和检测概率已知时,便可以很轻松地确定哈希数量及BF需要的比特数量。请注意,动态规划算法的运行时间为O(lmaxδ),因为对每个比特,必须要计算δ个数量的最小值且共有lmax个比特。

6 算法部署

本节对指纹比对和Bloom滤波器算法的部署展开详细讨论。由于指纹比对算法易于分析,所以没有对其进行实际部署,而只是给出简要设计。我们已经部署了Bloom滤波器算法,并在下文详细讨论。

6.1 指纹比对算法

该算法首先需要生成所有文件的指纹。为了使检测延时为L个字节,需要对所有文件每L个字节生成一个指纹。用“渐进”策略生成这些指纹,每个指纹覆盖从开始一直到文件当前位置的所有内容。实现方法如下:

对一份给定文件,将其分为n段,每段有L个字节。设CRCi为第i段的128位校验和。第一个校验和CRC1以0作为种子整数,并且覆盖文件的第一段。校验和CRCi+1以CRCi作为种子整数,根据长度为L字节的第(i+1)段计算校验和。于是,文件前i+1段任何一处发生数据变化,都会造成CRCi+1改变。所有n段的指纹可以放入哈希表,以便在运行期间查询。所有文件可以共享相同的哈希表,为部署提供便利。

当数据流到达时,系统可以对数据的每L个字节逐步计算CRC校验和,然后查询哈希表以确定是否存在匹配的指纹。如果找到了对应的指纹,则数据流可以继续。否则,数据流必须丢弃。

6.2 基于Bloom滤波器的算法

这一算法的部署分为3个步骤:预处理,滤波器构建和在线检测。

预处理首先针对当前文件集合生成文件大小分布。然后,对给定的目标检测延时,运行动态规划算法,以计算最优滤波器部署策略,包括滤波器位置、哈希函数数量和滤波器大小。将在下节证明,目标检测延时和Bloom滤波器需要的内存总量之间往往存在直接的映射关系。

滤波器构建在这一步中,根据计算出来的最优滤波器配置来构建Bloom滤波器。对Bloom滤波器,使用基于CRC的哈希函数。总体来说,Bloom滤波器可能需要多个哈希函数。通过在数据末尾增加多个随机数然后计算与每个哈希函数对应的新的CRC的方法,可以实现这一点,如文献[11]所示。然后使用CRC模m运算来将CRC的值映射为Bloom滤波器的一个比特指数,其中m是滤波器的比特数量。对所有文件重复这一步骤,直到插入所有密钥。

在线检测滤波器构建完毕后,系统便可以进行在线检测。在这一步中,将对数据流进行处理,并且持续计算CRC校验和。然后,在事先明确的每个位置,执行Bloom滤波器检验。如果Bloom滤波器的测验结果表明存在匹配,则数据流可以继续。否则,数据流必须丢弃。为了尽量降低小型文件的泄露,规定在释放最后一个报文前必须在数据流末尾执行一次检验。通过这种方法可以保证包含在单个报文中的小型文件总可被检测。

7 性能评估

7.1 实验配置

基于3个真实文件集合(总大小达70 GB)来评估本文算法(如表1所示)。从先前文献[12,13]中获得txt和html文件。简单来说,从社交书签网站del.icio.us 454K名用户的(公开)书签中获得txt文件。在截取之后,每名用户的书签存储在一个单独的txt文件中。通过从一小组随机用户开始执行广度优先搜索(BFS)来获得这些用户。通过Wikipedia.org网站页面前500次修改内容获得html文件(Wikipedia只保存每个页面的前500次修改)。仍然从一小组随机选择的常用页面开始执行广度优先搜索(BFS)来获得这些页面。通过“Google”、“Microsoft”、“Medicine”等关键词Google搜索并且将搜索结果限制为docx、jpg、pdf等文件类型来获得混合型文件。最后,将7 KB个私人mp3文件混入到混合型文件中。

在Bloom滤波器实验中,对所有文件集合执行上节描述的3个部署步骤。在最后一步中,为了模拟数据泄露,随机选择了1000份文件,然后在每份文件中选择一个字节作为“坏字节”,并且更改它的数值。于是,对每份文件,向每个Bloom滤波器位置逐步计算CRC,并且检测该指纹在滤波器位置是否存在。如果检测失败,则认为存在坏字节。检测位置和“坏字节”位置间的差值就是被泄露的字节数量(检测延时)。

7.2 实验结果

我们将在本节给出评估结果。图2给出了3个文件集合文件大小的互补累积分布(CCDF)。因为所有分布在开始时下降很快且尾部较长,所以在这里以对数标度展现x和y坐标。与所预期类似,txt文件集合与其他两种文件集合相比,包括的小型文件的比例更高。Html集合包含更多的中型体积文件(10 KB~5 MB)。混合型文件加入了许多mp3文件,所以主要包括大型体积文件。

指纹匹配VS Bloom滤波器图3给出了不同检测延时期望时,Bloom滤波器和指纹匹配方法的内存使用量。x和y坐标均为对数坐标。很明显,Bloom滤波器对所有文件集合均将内存使用量降低了50倍左右。例如,对数据量达36.8 GB的混合型文件集合,Bloom滤波器实现1000字节的检测延时期望,只需要12 MB内存。请注意,本文的指纹匹配算法与文献[7]中的Glavlit算法类似,其主要区别在于,Glavlit使用160比特的SHA-1指纹,而不是本文指纹匹配算法的128位CRC。所以我们认为,Glavlit消耗的内存量将多于本文CRC指纹算法。

Bloom滤波器算法的最优哈希函数数量始终为1。因此,每次检测时,两种算法均需要计算一个哈希函数。指纹匹配算法需要查询哈希表以定位和匹配指纹。Bloom滤波器算法需要检测滤波器比特数组中的一个比特。此外,哈希表可能存在冲突,额外造成CPU高速缓存未命中及内存访问延迟问题。于是,Bloom滤波器的开销始终只是一个比特的内存访问,因此具有很大优势。

我们还观察到,当以对数为标度的检测延时上升时,以对数为标度的内存量呈线性下降。换句话说,无论部署了多少个检测点,内存大小和检测延时乘积保持不变。这一点对指纹匹配和Bloom滤波器算法均成立。原因如下:在指纹匹配算法中,检测点以固定间隔配置,且间隔长度等于检测延时。对每个检测点,每个文件存储了一个128位的指纹。于是,当检测延时期望增长α倍时,滤波器数量下降α倍。即使是对不同的检测延时,仍可保持每个滤波器的大小相同。式(6)对3个文件集合同样成立,通过实验也证明了这一点。由于篇幅所限,没有给出相关图形。

实际平均检测延时基于动态规划生成的滤波器部署结果来构建Bloom滤波器,通过实验仿真来测试泄露检测效果。实验覆盖txt、html和混合型3种文件集合。然而,由于实验结果类似,这里只给出html文件的实验结果。

图4给出了html文件的检测延时期望和实际检测延时比较结果。可以发现,实际检测延时总是低于期望检测延时。这是因为,在计算检测延时期望时假设了“坏字节”刚好加在上一滤波器之后,但是在仿真实验中,坏字节插入位置是从均匀分布中随机选择而得。

图5给出了html文件集合不同检测位置时1000个采样点的实际检测延时。所有情况下的检测延时期望均为200字节。虽然按照均匀分布随机采样文件和测试位置,但是测试位置倾向集中于对应的文件大小范围内。对所有文件集合,1000个采样的检测延时均值总是小于检测延时期望值,这与前文解释一致。最大检测延时大约是平均值的6倍。

与其他位置相比,开始附近的测试位置(图中左侧)的检测延时较小,具体原因与前文阐述相同,这些数据点主要对应于小体积文件。除此之外,其他测试位置范围的检测延时无明显偏差。

吞吐量评估基于Linux平台gprof技术进行初步的性能研究,以评估泄露检测步骤的吞吐量。实验平台为Intel(R)Xeon(R)E5420 CPU(2.50 GHz),6 MB L2高速缓存及16 GB内存。我们已经使用了单核及小部分内存。检测步骤的主要开销包括两个部分:(1)到达数据流的CRC计算;(2)所有检测点的Bloom滤波器检测。图6给出了html文件集合检测不同延时期望时检测步骤的吞吐量。这里,吞吐量计算为该步骤总执行时间内被处理的总数据量的比例。

总体来说,吞吐量大约为1~3 Gbps。请注意,这一结果以未经优化的代码为基础。我们认为,通过CRC汇编码计算和多核支持等优化技术,可以获得进一步的性能提升。

8 结语

指纹数据 篇3

1 EXCEL 基础

Excel是微软公司的办公组件之一,主要用于进行各种数据处理、统计分析和辅助决策 ,包含了很多的公式函数用于计算,同时还提供了类似数据库技术的数据处理功能,功能十分强大。

1.1 函数基础

函数是Excel中具有一个独立功能的算法或算法的组合,其实就是一种已经定义好的计算方法“模块”[1]。Excel的函数有很多个,功能也各异,对指纹考勤数据进行统计主要用到下列几个函数模块。

1) And函数

语法结构:And(Logical1,Logical2),用来检查是否所以参数均为true,如果所有参数均为真,则返回真。

2) Countif函数

语法结构:Countif(range,criteria),用来计算某个区域中满足给定条件的单元格数目。第一个参数range代表要计算其中非空单元格数目的区域,其中range指定的范围只能是一个连续的区域[2]。第二个参数criteria可以是以数字、表达式或文本形式定义的条件。

3) If函数

语法结构:If(Logical_test,Value_if_true, Value_if_false),用来判断一个条件是否满足,如果满足返回第一个值,不满足则返回另外一个值。第一个参数Logical_test,可以是任何一个可判断为TRUE或FALSE的数值或表达式,第二个参数value_if_true,是当Logical_test为TRUE时的返回值。如果忽略,则返回TRUE,其中EXCEL 2003最多可以嵌套7层,EXCEL 2007之后,IF最多可以嵌套64层[3]。

1.2 Excel的数据处理

Excel中的数据处理包括数据排序、数据筛选、数据分类汇总以及数据透视表等功能。数据的排序可以升序、降序、自定义排序;数据筛选则可以自动筛选、自定义筛选、高级筛选,其中自动筛选一般适合单一条件,自定义筛选适合符合条件(与、或),高级筛选功能最强,可以多字段,并可以采用复合条件;数据分类汇总,可以根据关键字进行分类和汇总;数据透视表,可以对多个字段,从不同角度和不同视角进行汇总,且汇总后的表格可以进行编辑和套用格式等[4]。

2 考勤数据分析

某部为加强办公秩序方便员工打卡,在办公楼前东西两侧安装两部指纹机,规定上午08:30之前打卡,为正常签到,晚于08:30打卡算迟到,上午考勤即为无效考勤,下午16:00之后打卡为正常下班,早于16:00打卡即为早退,亦下午考勤无效。机关每月集中进行一次数据采集,并统计和备份员工当月有效的考勤数据,用于当月和当年的考评。

数据采集后的考勤表实际是一张EXCEL数据清单[5],如图1所示。

对数据清单进行数据处理时需要把清单看做是一个数据库,数据清单中的行相当于数据库中的记录,行标题相当于记录名;列相当于数据库中的字段,列标题相当于数据库中的字段名,字段的数据类型则是对应的单元格格式类型。EXCEL中单元格的格式有很多种,但最终可以把数据类型归纳为数值、文本、日期时间以及逻辑型数据四类[6]。考勤清单中,标题栏的“部门名称”、“姓名”、“职工编号”、“指纹登记号”、“刷卡日期”、“刷卡时间”为字段,数据类型分别是文本型、文本型、数值型、数值型和日期时间型。每个人每天的打卡数据则为记录。

对两部卡机的数据清单合并(字段、记录格式相同,只需简单的全选、复制粘贴即可合并)后进行数据分析,发现个人用户存在有时候上午和下午分别在不同卡机上打卡,且由于卡机原因,有时会有重复记录的情况,如下图所示。

考勤数据的统计其实就是对F列中当天有价值数据的统计,需要对数据进行清洗。对于表中重复的记录,数据处理时必须删除相同记录;同一天的不同卡机上产生的不同数据记录则需要保留;F列字段中的数据则需要进行有价值数据提取,即数据抽取;整个考勤数据的具体处理流程如图3所示。

3 指纹数据处理统计

3.1 记录的数据清洗

数据清洗是在数据仓库、数据库中去除冗余、清除噪音、消除错误和不一致数据的过程,包括对数据的删除、添加、分解、重组等[7],是将多余重复的数据筛选清除,将缺失的数据补充完整,并将错误的数据纠正或删除。EXCEL中对重复项的删除方法可以有菜单操作、排序删除以及筛选删除三种方法,但对重复记录的删除则需要排序、公式、筛选相结合,具体操作步骤如下。

STEP 1:对记录通过姓名和刷卡时间排序,如图4所示。通过排序,可以快速排列相同记录以及个人同一天内的不同卡机考勤记录,便于判断哪些记录重复要筛除,哪些记录保留,图2所示。

STEP 2:添加G列,设置字段名为“筛重”,用于判断筛选出每条不重复的记录。对于考勤记录表中重复的记录去重可以利用内置的IF函数进行判断,返回值为文本型数据“重复”或“不重复”。

在G2单元格中添加公式=IF(AND(E2=E1,C2=C1,F2=F1),"重复","不重复"),经过排序之后,个人同一天的相同记录以及不同卡机产生的记录都有序的排在一起,只需判断下一条记录的职工编号、刷卡时间、刷卡记录这三个字段是否一样即可判断记录是否与上一条记录重复,如果重复返回值为重复,否则返回不重复。

STEP 3:利用公式的复制,向下拖动填充柄,判断每条记录是否与上一条记录重复。

STEP 4:利用数据筛选功能,对记录进行“无重复”数据筛选,筛选出真正的需要统计的有效记录表。

3.2 记录的回收

筛选出不重复的记录之后,并不能直接进行数据处理。因为筛选实际只是把重复的记录隐藏,如图7所示。要数据处理则需要将真正的记录提取出来,回收到一张新的数据表中。具体步骤如下:

STEP 1:选中要复制的区域;

STEP 2:点击菜单:编辑—定位—定位条件—可见单元格—确定,图8所示;

STEP 3:复制粘贴至Sheet2,.此时Sheet2中就是我们真正需要进行处理的有效记录。

3.3 字段的数据抽取

最终的数据统计是统计F列字段中的有效数据。筛选后的有效记录并不是真正的“数据”,对于指纹数据有价值的数据是个人每天每次符合规则的数据,即上午“08:30”之前的一次有效数据,与下午“16:00”以后的一次有效数据,需要把价值数据抽取出来。数据抽取,是指保留原数据表中某些字段的部分信息,组合为一个新字段。可以是截取某一字段的部分信息(字段分列);也可以是将某几个字段合并为一个新字段(字段合并);还可以是将原数据表没有但其他数据表中有的字段有效地匹配过来(字段匹配)。对F列中的指纹“价值数据”进行抽取是截取字段中的部分信息,即字段分列。

STEP 1:选中F列,对考勤数据时间以“;”进行分列,返回至H到L列,完成对有效数据的抽取,如图9所示。

3.4 数据统计

Step 1:由于在筛选后的无重复记录表中考勤统计只要统计出每个人每天上午08:30之前有效的一次考勤与当天下午04:30之后的一次考勤,则需要判断并计算出08:30之前的重复打卡次数,04:00之后得重复打卡次数以及中间时段的无效打卡次数。添加字段M列为无效考勤次数,N列上午重复次数,O列为下午重复次数字段,P列为全天有效考勤次数字段,由于打卡次数的统计返回值是一个数值型,所以把相应返回列的单元格格式设置为数值型。

无效的打卡数据计算公式为=COUNTIF(H2:L2,">08:30")-COUNTIF(H2:L2,">=16:00"),即可计算出08:30至16:00之间打了多少次无效卡,而上午重复的打卡次数公式为=IF(COUNTIF(H2:L2,"<=08:30")>1,COUNTIF(H2:L2,"<=08:30")-1,0),即判断只要在08:30(包含)之前打卡次数大于1就有重复,此时返回在08:30(包含)之前的打卡次数减1(上午有效的重复打卡计数),否则返回0,也就是上午并没有重复打卡。下午16:00之后的重复打卡亦是同理,具体公式为IF(COUNTIF(H2:L2,">=16:00")>1,COUNTIF(H2:L2,">=16:00")-1,0)。

Step 2:计算出P列当天有效的打卡次数,具体公式为=COUNTIF(H2:L2,"<=08:30")+COUNTIF(H2:L2,">=16:00")-N2-O2,即统计出全天合乎条件的打卡次数,减去上午和下午的重复次数。

Step 3:利用公式的复制,向下拖动填充柄,判断每条记录中当天有效的考勤次数。

Step 4:最后根据个人唯一的ID号,用数据透视表(将“姓名”拖至行字段,“全天有效打卡”拖至列字段)统计出当月个人的有效打卡次数。

4 小结

指纹数据 篇4

关键词:指纹特征,手指乳突线花纹类型,终生不变

在指纹检验和指纹鉴定中, 经常发现现场指纹与捺印指纹存有差异的现象。差异常出现的情景是现场指纹或捺印指纹出现疤痕、皱纹、乳突线断线、乳突线缺损、纹线粗糙、汗孔位置偏移、汗孔边沿缺损、乳突线变细、犁沟变宽……。

2005年10月25日在一起盗窃案的指纹鉴定中, 发现现场指纹与犯罪嫌疑人XXX的指纹同一, 但存有差异。差异是犯罪嫌疑人XXX的捺印指纹乳突线发生了变化。指纹乳突线出现脱皮、皱纹、乳突线缺损、断线反应。但指纹的特征总和与指纹的特定性没有发生变化, 可认定同一。

依据指纹人各不同、各指不同、终身不变的特性。指纹终生不变是针对指纹特征总和而言的, 即指具体指纹的特定性而言。是指手指乳突线花纹类型、具体形态、各个细节特征的形状、数量、位置、和相互关系所构成的特征综合始终不变。事物的特定性和稳定性是自然界和人类社会的普遍规律。指纹终生不变, 是这个普遍规律的一个具体表现。指纹终身不变的一个重要原因在于表皮和真皮组织的生理功能的特点。真皮组织的真皮乳突层, 在正常的内分泌控制下, 表现出极为稳定的状态, 成纤维细胞无增殖功能, 因而乳突层不改变其形态, 乳突层的乳突线花纹结构亦不会改变。由于真皮乳突线花纹的稳定性, 因而覆盖、嵌入真皮乳突上的表皮指纹, 也就不改变其结构, 显示出纹型、形态和纹线细节特征的稳定性。真皮结缔组织无增殖功能, 只起支撑作用, 使其真皮乳突具有稳定性。这是指纹终身不变的极其重要的原因。当然真皮乳突层不是绝对不变的。当内分泌发生变化, 或者某些疾病, 会引起真皮乳突层的纤维细胞出现增殖。局部的乳头增殖, 对于指纹无影响, 仅会对乳突层的局部、小范围、个别特征, 引起一些新的细小变化。在这里有必要指出指纹“不变”的相对性。正如终身不变定义所述的, 指纹终生不变是针对指纹特征总和而言的, 即指具体指纹的特定性而言。唯物辩证法认为, 物质的运动是永恒的, 绝对的, 运动是物质存在的形式。物质的运动反映为量变到质变, 质变到量变。量变过程中, 事物的性质处于相对静止状态。因其处于相对静止状态, 所以能为人们所认识。所说指纹终身不变就是指的指纹的相对静止性。从指纹形成胚胎期到人的出生, 再经人生的各阶段、直至死亡之后高度腐败, 指纹完全消失为止的全过程中, 指纹终身不变就具有相对性。可见指纹是在变化中长成的。出生后, 纹线逐渐长大, 到老年又逐渐萎缩变细。死后又腐烂消失。这说明指纹经历着量变——质变的过程。指纹的质变阶段, 对指纹宏观特征和微观特征都发生决定性作用。这俩种质变对于鉴定是无意义的。对指纹鉴定有重要意义的时, 是人出生至死后尸体腐烂前这一阶段的变化;指纹局部小范围内、个别特征、引起一些新的细小的变化;特殊情况下指纹全局范围内特征的变化。

指纹特征变化有生理变化、病理变化、严重外伤三种情况。

事实证明当人处在青壮年时期, 手指由于肌肉丰满, 皮肤弹性大, 乳突线间的距离小。但到了一定的年龄阶段, 因为生理机能开始衰退, 手指皮肤皱缩, 纹线变细, 犁沟增大。从指纹形成之日起纹线的粗细和光滑程度, 处于不断的变化之中。可是, 从指纹的宏观特征来讲, 纹线密度、光滑程度的变化。这好比一个人的外貌照片由一寸放大到五寸, 同样是一个人那样, 只是大小的变化。光滑程度的变化, 虽然对指纹宏观特征无影响, 但对指纹的微观特征——汗孔特征的影响是很大的。纹线光滑程度的改变, 直接因素之一是汗孔位置的偏移。汗孔由乳突线的中央移至乳突线的边沿部分, 形成乳突线的缺损, 其纹线印痕反映为不光滑, 变得粗糙。汗孔位置偏移的结果, 还改变了部分汗孔的原有形态, 形成汗孔边沿缺损。汗孔位置和形态的改变, 是真皮乳突层和表皮生理改变引起的。到了一定年龄的阶段因为生理机能开始衰退, 手指皮肤皱缩, 纹线变细, 犁沟增大, 因此真皮层比较细小的的乳头形态即显露出来。由此可见, 指纹终生不变, 是说的指纹特征总和关系不变, 至于汗孔特征, 则不是终生不变的, 有些汗孔的位置和形态会发生一些变化。这种纹线形态的局部变化, 并不改变指纹的原有结构, 不改变指纹特征的总和关系。

指纹的病理变化, 溃疡为表皮以至真皮组织的溃烂所致的组织缺损, 愈后留下大片瘢痕, 原有的乳突线花纹结构遭受不同程度的破坏。萎缩为发育正常的皮肤各层或各层组织的细胞缩小或减少。表皮萎缩多由上皮细胞减少造成。表皮仅留下很少的一层细胞, 乳突线消失, 皮肤扁平、变薄。真皮萎缩是整个真皮组织厚度减小。坏死是皮肤部分组织或细胞死亡。造成指纹结构彻底破坏, 呈现一片颗粒状区域。增值是由于同化作用增强而引起结缔组织的增加。乳头向上增值, 使皮肤高低不平。皮肤病变会使皮肤溃疡、组织坏死、表皮或真皮萎缩, 使指纹局部或全部消失, 不得复生。外伤引起的指纹特征改变, 有局部的或全部性的。如伤及真皮乳突层, 结缔组织受到破坏, 汗腺也将受到破坏, 从而破坏了指纹结构。指纹大面积的病变、损伤, 其瘢痕表面光滑, 没有或缺少乳突线。所属汗腺也减少或者消失。这种大面积的指纹病变和外伤, 而且是本质的全局性的根本改变。可是对于全部手指手掌的乳突线花纹结构来说, 仍然是局部范围的改变, 是手指手掌的乳突线花纹量变中的一种质变。所以说这种改变现象同指纹终身不变的特性是没有冲突的。

至于小面积的或者线状的表皮浅层的炎症和外伤, 愈后表皮指纹仍可因生长层细胞分裂而得到复原。伤及真皮, 部分乳突头破坏, 当缔结组织重新弥合后, 将导致表皮指纹受伤处的乳突线向着伤口中心聚集, 改变伤口附近乳突线流向和伤口处原有的乳突线细节特征, 从而形成疤痕。这种小范围的损伤, 不但不会造成指纹全局性的特征变化, 反而以其疤痕的位置、形态、大小的特征, 补充道原有的特征关系中去。疤痕一经形成, 也具有终生不变的性质。综上所述, 指纹具有各人各指不同和终生不变的基本属性。这两大属性构成了指纹学的生理学基础。它为指纹特征的应用, 提供了科学依据。

参考文献

[1]弗朗西斯.高尔顿.指纹学.

指纹细化算法研究 篇5

1 细化算法

指纹识别一般只关心指纹纹线的端点和分叉点, 细化的目的是去除无用的信息, 突出端点和分叉点, 减小后续指纹识别的难度。

1.1 Hilditch细化算法

Hilditch算法是一种通用的细化算法, 像素为1的区域是需要细化的部分, 像素为0的区域是背景。Hilditch算法可描述如下:

设P为被检测的像素, f (P) 为像素P的灰度值, ni (n=1, 2, …, 8) 的位置如图所示。

设集合I={1}表示需要细化的像素子集, 集合N={g|g-m燮0}表示背景像素子集, 集合R={-m}表示在第m次减薄时, I中被减掉的像素。

当对图像进行细化处理时, 根据图像细化的减薄条件, 对扫描的像素进行判断, 如果所扫描的像素同时满足图像细化的减薄条件, 就可以将该像素去除。直到经过m次后, 图像上的像素均不能同时满足减薄条件时, 细化处理结束。

1.2 形态学细化算法

形态学细化算法使用如图所示的结构元素, 共有8个, (a) 和 (b) 为原始结构元素, 其它6个可由这两个分别旋转90度、180度、270度得到。

1.3 快速并行细化算法

该算法选取3×3的窗口进行判断, 如图所示, 算法步骤如下:

(1) 第一次处理:从东南边界和西北角进行剥离, 满足式错误!未找到引用源。) 中 (a) 、 (b) 、 (c) 、 (d) 的点为可剥离点;

(2) 第二次处理:从西北边界和东南角进行处理, 满足式错误!未找到引用源。) 中 (a) 、 (b) 、 (c') 、 (d') 的点为可剥离点;

(3) 反复进行这两项子处理, 直至没有可剥离的点为止。

1.4 OPTA细化算法

OPTA算法是一种典型的基于模板的图像细化算法, 该算法的核心是通过应用消除和保留这两套模板, 来达到对原图像细化的目的, 在此算法基础上, 又提出优化的OPTA细化算法。

1.5 合成细化算法

快速细化算法细化后纹线较宽, OPTA算法细化后有毛刺、分叉处不能彻底细化。为了解决这些问题, 可以将两种算法的优势结合起来, 提高细化效果。具体步骤如下:

(1) 使用快速细化算法进行初步细化, 细化后指纹纹线具有一定的宽度。

(2) 对初步细化后的图像再使用改进的OPTA算法进一步细化。

2 实验及比较

这里使用C#2.0编程对预处理算法进行比较, 各步处理效果如下:

图4中 (b) ~ (g) 为6种细化算法的处理效果, 比较结果总结如表1所示。

可以看出, 合成细化算法在处理效果上明显优于其它细化算法。但合成细化算法分别使用了两种独立的细化算法, 运行速度会受到一定的影响。不过, OPTA算法可以采用索引表法进行匹配, 以提高匹配的速度, 读者可根据实际情况选择指纹图像细化的方法。

摘要:指纹图像细化是指纹预处理技术中的一个重要环节, 研究指纹细化对提高指纹识别的性能有重要意义, 对指纹常用细化算法进行测试比较。

关键词:指纹细化,OPTA算法,合成算法

参考文献

[1]何东宇, 蔡远利.基于方向图的指纹预处理方法研究[J].计算机工程与应用, 2004, 14.[1]何东宇, 蔡远利.基于方向图的指纹预处理方法研究[J].计算机工程与应用, 2004, 14.

[2]苑玮琦, 郑潇.基于连续方向图的指纹图像滤波[J].激光与红外, 2006, 8.[2]苑玮琦, 郑潇.基于连续方向图的指纹图像滤波[J].激光与红外, 2006, 8.

[3]苑玮琦, 夏义勇.方向滤波指纹图像二值化[J].仪器仪表学报, 2003, 8.[3]苑玮琦, 夏义勇.方向滤波指纹图像二值化[J].仪器仪表学报, 2003, 8.

[4]黄铁英, 姜昱明.一种快速手写汉字细化算法[J].计算机工程, 2004, 10.[4]黄铁英, 姜昱明.一种快速手写汉字细化算法[J].计算机工程, 2004, 10.

DNA指纹技术及其应用 篇6

每个人体细胞内含有23对染色体, 它们大小各异。遗传信息贮存于染色体内的DNA分子中。DNA中脱氧核苷酸排列方式叫序列, 即一级结构。DNA序列中存在三种类型:单拷贝序列、中等程度重复序列和高度重复序列。重复序列就是一种序列在DNA分子中重复出现几百次、几千次、几万次甚至百万次, 它们占DNA总序列的3%~4%。每个重复序列在300个核苷酸长度之内。

由于高度重复序列经超离心后, 以卫星带出现在主要DNA带的邻近处, 所以也被称为“卫星DNA”。卫星DNA中的重复序列单元则称为“小卫星DNA”。“小卫星DNA”具有高度的可变性, 不同个体彼此不同。但“小卫星DNA”中有一小段序列则在所有个体中都一样, 称为“核心序列”。如果把核心序列串联起来作为分子探针, 与不同个体的DNA进行分子杂交, 就会呈现出各自特有的杂交图谱, 它们与人的指纹一样, 具有专一性和特征性, 因人而异, 因此被称作“DNA指纹” (DNA fingerprint) 。

二、DNA指纹的特点

1.特异性:

研究表明, 两个随机个体具有相同DNA图形的概率仅为3×10-11, 两个同胞个体具有相同图谱的概率也仅仅为二百万分之一 (即2×10-6) 。如果同时用两种探针进行比较, 两个个体完全相同的概率小于5×10-19。全世界人口约50亿, 即5×109。因此, 除非是同卵双生子女, 否则几乎不可能有两个人的DNA指纹的图形完全相同。

2.遗传性:

DNA是人的遗传物质, 其特征是由父母遗传的, DNA指纹区带遵循简单的孟德尔遗传方式。分析发现, DNA 指纹图谱中几乎每一条带纹都能在其双亲之一的图谱中找到, 只有0.4%的可能性, 子女中的一条带在其父母中的图中不能找到 (基因突变的结果) 。

3.稳定性:

即同一个体无病变的不同组织, 如血液、 肌肉、毛发、精液等产生的DNA指纹图形完全一致。

4.多位点性:

高分辨率的DNA指纹图通常由15~30 条带组成, 看上去就像挂号信上的条码签一样。DNA指纹区中的绝大多数区带是独立遗传的。因此, 一个DNA指纹探针能同时检测基因组中数十个位点的变异性。

三、DNA指纹技术的工作原理

1.将送检的各种生物学检样, 如毛发、血痕、精斑、人体组织或白骨等, 把其中所含的DNA 提取出来。

2.选用与探针配对的限制性核酸内切酶, 在长链DNA 位置上加以切割, 将相对分子质量很大的DNA 长链切短成许多长度不同的小片段。

3.在胶板尺寸较长的凝胶电泳仪中, 对完全酶解后的DNA 片段进行电泳, 各酶切片段就会按其长度大小在电场中进行分离。

4.先用碱性溶液使凝胶板中分离开的双链DNA 片段变性为单链片段, 然后将凝胶板夹在尼龙膜中, 使这些单链DNA 片段印溃、转移并永久性地固定在尼龙膜上。

5.让放射性DNA探针与尼龙膜上的单链DNA片段进行分子杂交。

6.用放射性胶片与尼龙薄膜叠放, 尼龙膜上的放射性探针便会发出X 射线使胶片曝光, 从而使杂交有探针的长度不同的DNA片段位置显影在胶片上。这样的特征 DNA片段条状图谱, 便是所谓的DNA指纹 (如下图) 。

四、DNA指纹技术的应用

DNA指纹用途很广泛, 下面介绍其在法医学中的主要作用:

1.在刑事案件中的应用

在法医学上, 如果确定某人是嫌疑犯, 则可提取其血样或毛发的DNA, 做出DNA指纹, 然后由犯罪现场残留的血、精液、唾液、痰液、毛发、骨骼或其他肉体成分提取的DNA指纹相对照。若两者一样, 则称其指纹相配, 证明该嫌疑犯就是作案的罪犯, 反之则否。通常进行上述指纹相配的签定叫“配型”工作。

2.在亲子鉴定中的应用

自从杰弗里斯等人于1985年首次对一起移民纠纷中的母子关系作出肯定鉴定以来, 用DNA 指纹术进行亲子鉴定已有20多年的历史了。代表性的报道有:在一起无名尸的鉴定过程中, 专家们将提取到的腐尸残血中的DNA, 和假定受害人双亲的DNA进行DNA指纹鉴定后, 成功地对这具无名尸的人身作出了鉴定。在常规血清学检验不能对亲子关系作出肯定结论的情况下, 采用DNA 指纹术便可轻易地作出结论。

3.事故受难者残骸鉴定

在空难、火灾、地震等灾难事故中, 单纯依靠法医学和常规法血清学检验, 是很难对所有遇难人员的残骸加以区分的。因此, 在常规手段行不通时, 采用DNA 指纹技术已成为最佳选择。

4.人种、性别鉴定

研究表明, DNA 指纹术可在相当大程度上用于人种鉴定, 并测出白种人和非洲黑人的DNA多态片段及它在特定范围内的出现频率, 具有种属代表性。有人对长达20年的陈旧血迹中的降解DNA进行了性别鉴定, 并在人、兽的区分鉴定中取得成功。

相关演练

1.现有一长度为3000碱基对 (bp) 的线性DNA分子, 用限制性核酸内切酶酶切后, 进行凝胶电泳, 使降解产物分开。用酶H单独酶切, 结果如图甲。用酶B单独酶切, 结果如图乙。该DNA分子的结构及其酶切图谱是 ( )

2.DNA指纹技术正发挥着越来越重要的作用。请回答下列有关DNA指纹技术的问题:

(1) DNA探针寻找基因所用的原理是______。

(2) 用DNA做亲子鉴定时, 小孩的条码一半与其生母相吻合, 另一半与其生父相吻合, 原因是_______。

(3) 如图为通过提取某小孩和其母亲, 以及待测定的三位男性的DNA, 进行DNA指纹鉴定, 部分结果如图所示。则该小孩的真正生物学父亲是_____。

(4) 已知除了一卵双生双胞胎外, 每个人的DNA是独一无二的, 就好像指纹一样, 这说明了_______。

(5) 为什么用DNA做亲子鉴定, 而不用RNA?_______。

3.Huntington舞蹈病 (HD) 是以神经系统变性为主要特征的一种人类遗传病, 该病的遗传基础为IT15基因内 (CAG) n三核苷酸异常扩展性重复, 临床表现为进行性加重的舞蹈样不自主运动 (不能控制的痉挛) 和智能障碍。研究表明, Huntington基因中 (CAG) n重复的多少与发病严重程度、发病的早晚成正相关。下图甲为一个Huntington舞蹈病家族的遗传系谱图, 图乙为Huntington舞蹈病的发病机理示意简图。请据图作答:

(1) 该病的遗传方式不可能是______, 理由是______。如果Ⅲ-11表现型正常, 则该病的遗传方式最可能是______。

(2) 遗传早现是指一些遗传病 (通常为显性遗传病) 在连续几代的遗传中, 发病年龄提前并且病情严重程度增加。Huntington舞蹈病存在明显的遗传早现现象, 则与图甲所述家系中的Ⅰ-2相比, Ⅳ-9个体的IT15最显著的特点是________。

(3) 由图乙可知, Huntington舞蹈病的主要致病机理为_______。

参考答案

1.A 提示:用代入验证法。根据图甲确定酶H只有1个切点, 根据图乙确定酶B有2个切点。

2. (1) 碱基互补配对原则 (2) 孩子的每一对同源染色体必定一条来自母亲, 一条来自父亲 (3) B (4) DNA分子具有多样性和特异性 (5) 因为基因在DNA上, 而不是在RNA上, 且DNA具有特异性

3. (1) 伴X染色体和伴Y染色体遗传 若是伴X染色体遗传, Ⅰ-2患病, Ⅱ-8也应患病;Ⅱ-6患病, Ⅲ-12应患病;Ⅱ-6患病, Ⅲ-13却正常 (其他合理答案也可) 常染色体隐性遗传 (2) 基因内 (CAG) n三核苷酸异常扩展性重复程度较高 (3) 突变蛋白 (多聚Q) 进入细胞核后, 不能调节细胞内正常的转录过程, 而是相互聚集, 形成核内包涵体, 导致神经元变性、死亡

玛咖HPLC指纹图谱研究 篇7

目前玛咖种植地广泛, 颜色众多, 市售产品混乱, 真伪产品难以区分, 且研究玛咖时缺乏活性成分对照品。玛咖与其他天然植物一样成分复杂, 中药指纹图谱技术能提供丰富的鉴别信息, 较为全面地反映植物药所含化学成分的种类与数量, 进而对药品质量进行整体描述和评价[4]。金文闻[5]对玛咖的红外指纹图谱、薄层指纹图谱以及气相指纹图谱进行了研究, 指出了其图谱特征。HPLC具有操作简便、图谱稳定性和可靠性高的特点, 采用其对玛咖进行分析目前尚未见报道。本试验以原产地秘鲁玛咖为对照, 研究了秘鲁、丽江、会泽、格萨拉 (四川攀枝花) 四个产地的HPLC图谱, 并与形态和功效与玛咖相似的植物材料 (圆根萝卜和西洋参) 进行对比, 初步建立玛咖的HPLC指纹图谱, 并在此基础上对市售无商标的10批玛咖进行指纹图谱分析。

1 材料与试剂

1.1 仪器

P200-高效液相色谱仪 (大连依利特分析仪器有限公司) ;SHIMADZU-UV-1700型紫外可见分光光度计 (日本岛津) , SY360超声波提取器 (上海宁商超声仪器有限公司) ;Millipore超纯水器 (美国MILIPORE公司) ;ESJ120-4电子天平 (沈阳龙腾电子有限公司) 。

1.2 药品与试剂

秘鲁黄玛咖购自上海中智科技应用发展公司 (秘鲁玛咖进口商) ;丽江黄玛咖购自丽江格林恒信生物科技开发有限公司 (产地丽江) ;会泽黄玛咖购自云南禾农食品开发有限公司 (产地会泽) , 格萨拉黄玛咖购自和润农业开发有限公司 (产地格萨拉) ;西洋参购自一心堂医药公司;圆根萝卜采自盐边县格萨拉乡农田。此外, 从昆明、成都、攀枝花市场上购买不同产地的商品玛咖。

色谱甲醇 (成都科龙化工有限公司) , 实验用水为超纯水, 其余试剂为分析纯 (成都科龙化工有限公司) 。

2 方法

2.1 供试品溶液制备

精密称取秘鲁、丽江、会泽、格萨拉黄玛咖, 西洋参和圆根萝各1g (过60目) , 加入甲醇30mL, 超声提取30min (40Hz, 40℃) , 共提取3次, 过滤, 定容至100mL。

2.2 色谱条件

色谱柱:CS-120-5-C18-AP (5μm, 4.6mm×50mm) ;流动相:甲醇-水 (25∶75) ;流速:0.8mL/min;柱温:25℃;检测波长:210nm;进样量:20μL;时间:30min。

2.3 实验方法建立

2.3.1 检测波长选择

分别以甲醇、95%乙醇、水为溶剂, 按照“2.1”项下提取秘鲁玛咖, 得到的溶液在紫外分光光度计上进行波长扫描, 对190~800nm范围内的色谱图进行分析比较, 结果在210nm波长下峰数最多, 峰型较好, 因此确定检测波长为210nm。

2.3.2 提取溶剂选择

以甲醇、95%乙醇、水为溶剂制备供试品溶液, 以“2.2”项下色谱条件进样测定。结果以乙醇为提取溶剂, 得到的指纹图谱各峰分离度差、基线不平稳。水为提取溶剂的指纹图谱峰数少;以甲醇为提取溶剂得到的峰数多、峰面积大, 各峰分离良好, 因而确定提取溶剂为甲醇。

2.3.3 流动相选择

笔者先以乙腈和水作为流动相, 不论如何调整比例, 均得不到个数较多的色谱图。换为甲醇和水后, 随水的比例增大, 色谱峰变多, 但峰型拖尾, 加入适量磷酸后峰型变好, 最后确定流动相为甲醇-水 (25∶75) , 磷酸调节pH=4.8。

3 方法学考察

3.1 精密度实验

取同一批秘鲁玛咖供试品溶液, 在“2.1”项下色谱条件下连续进样6次, 记录指纹图谱。结果表明各色谱峰相对保留时间RSD<0.2%, 相对峰面积RSD<1.7%, 符合指纹图谱的要求。

3.2 稳定性实验

取同一批秘鲁玛咖供试品溶液, 分别于放置0、2、4、8、12、24h后进样, 记录指纹图谱。结果表明各色谱峰相对保留时间RSD<0.2%, 相对峰面积RSD<3.0%, 表明供试品溶液在24h内稳定。

3.3 重现性实验

取同一批秘鲁玛咖供试品6份, 按照“2.1”项下制备方法, 分别制取供试品溶液, 进样测定指纹图谱。结果表明各色谱峰相对保留时间RSD<0.2%, 相对峰面积RSD<4.0%。

4 结果

4.1 玛咖指纹图谱共有峰、参照峰标定

按照上述优化的条件, 对6个样品提取液进样测定, 得到各自的指纹图谱, 见图1。将6个指纹图谱数据输入《中药色谱指纹图谱相似度评价系统 (2004A版) 》, 确定玛咖共有峰18个, 其占总峰面积91.43%;4个玛咖样品的指纹图谱及图谱数据显示, 保留时间tR=12.46~12.50min的色谱峰 (标记为S) 为各种玛咖的共有峰, 也是区别于圆根萝卜和西洋参的特征峰;其中S峰面积最大, 与相邻色谱峰分离良好, 可作为玛咖的参照峰;结果还显示4种产地的玛咖指纹图谱相差不大。

4.2 相似度

计算各个样品的相似度, 数据处理采用Waters Pater Sach相似度软件, 计算原理为夹角余弦法[6]。以共有峰的峰面积计算相似度, 其中4个产地的玛咖相似度为95.5%~98.7%, 与西洋参和圆根萝卜的相似度相差很大, 可作为玛咖具有专属性的指纹图谱。

4.3 玛咖指纹条形码建立

由相似度计算结果可知:当以4个产地的玛咖样品共有峰面积均值为对照时, 4个玛咖样品的相似度均大于0.9, 表明整体上相似, 故可以4个样品共有峰为基础采用均值法建立玛咖的对照指纹图谱。绘制对照品指纹图谱时, 以参照峰S为基准, 以各共有峰的相对保留时间为横坐标, 以相应峰号的相对峰面积为纵坐标, 绘制玛咖对照指纹条形码, 见图2。

4.4 适用性考察

采用本试验优化的提取方法和测定条件, 结合建立的玛咖指纹条形码, 对市场上购买的10批产品进行检验, 结果见表1。由表1中可知, 一级和二级商品玛咖块根或切片, 无论是何种产地、何种皮色, 其相似度都在90%以上;四级黄玛咖块根和黄玛咖须根的相似度只有72.1~83.8%;玛咖叶的相似度只有65.3%;市场上的玛咖粉末相似度在80%以下。品质越好的玛咖相似度越高, 品质越差的玛咖和玛咖须根、玛咖叶的相似度越低。建议在质量标准中确定相似度阈值不低于80%为合格产品, 高于90%为优质产品。

5 讨论

有文献[7]报道了玛咖活性成分, 如玛咖酰胺、玛咖烯、生物碱等, 但因含量低, 目前尚缺乏活性成分对照品, 给玛咖质量标准研究带来困难。我国玛咖产业都致力于生产粗加工产品以获取短期利润, 目前市场充斥着大量以玛咖为原料的保健食品, 成分明确、疗效明显的玛咖深加工产品较少[8]。同时, 我国玛咖种植地广泛, 颜色众多, 厂家参差不齐, 市售产品混乱, 质量无法得到保证。因此玛咖质量标准建立尤为重要。

本试验对供试品溶液制备、色谱条件进行优化, 建立玛咖指纹图谱。结果表明, 玛咖指纹图谱中主要峰群整体一致, 与西洋参和圆根萝卜相差很大, 同时标定玛咖特征峰。以共有峰的峰面积计算相似度, 4个产地的玛咖相似度大于0.9, 表明不同产地的玛咖差异不大。本试验还考察了方法的适用性, 对市场上购买的10批产品进行检验, 根据结果建议玛咖等级的制定标准, 相似度>0.90可判定为优质玛咖, 相似度<0.80为不合格产品。

本试验首次建立的商品玛咖HPLC指纹图谱分析方法具有较好的精密度、稳定性和重复性, 符合指纹图谱研究的技术要求。同时标定的玛咖特征峰S附近杂峰少, 峰面积大, 纯度高, 下一阶段实验可进一步分离提取, 有望鉴定其结构, 制备标准品, 为玛咖质量标准建立提供依据。

参考文献

[1]OCHOA C, UGENT D.Maca (Lepidium meyenii Walp.;Brassicaceae) :A nutritious root crop of the central Andes[J].Economic Botany, 2001, 55 (3) :344-345.

[2]余龙江, 金文闻, 吴元喜, 等.玛咖的植物学及其药理作用研究概况[J].天然产物研究与开发, 2002, 14 (5) :71-74.

[3]肖培根, 刘勇, 肖伟.玛咖——全球瞩目的保健食品[J].国外医药·植物药分册, 2001, 16 (6) :236-237.

[4]李强, 杜思邈, 张忠亮, 等.中药指纹图谱技术进展及未来发展方向展望[J].中草药, 2013, 44 (22) :3095-3104.

[5]金文闻.药食两用植物玛咖 (Lepidium meyenii) 的功效物质研究[M].武汉:华中科技大学, 2006.

[6]刘欣, 胡芳弟, 封士兰, 等.大黄药材指纹图谱研究[J].分析测试技术与仪器, 2004, 10 (3) :140-144.

[7]余龙江, 金文闻, 李为.南美植物玛咖的研究进展[J].中草药, 2003, 34 (2) :7-9.

上一篇:初中历史教学新方法下一篇:农业的发展