一种基于电子记录关联签名的电子证据取证系统的制作方法

文档序号:6425223阅读:480来源:国知局
专利名称:一种基于电子记录关联签名的电子证据取证系统的制作方法
技术领域
本发明属于信息安全的消息鉴别(message authentication)与抗抵赖 (non-repudiation)技术领域,特别地,是一种基于电子记录关联签名的电子证据取证系统。
背景技术
记录包括各类文件、订单、合同、协议、操作日志等。记录的重要特性之一是能作为证据。电子记录即记录的电子存在形式。但是,由于电子记录本身的特点,其作为有效的法律证据还有许多问题有待解决,比如,由于电子记录易于伪造和篡改,因此,如何确定其原发性、真实性(即是否是真实存在的)和完整性(是否被伪造),如何确定、证实其源发者(是谁产生、提交的)、参入者(记录的产生过程中有谁参入了),并使得记录的源发者、 参入者无法抵赖该记录由其产生、有其参入,都是需要解决的重要问题。确定电子记录的原发性、真实性和完整性属于消息鉴别的问题,确定、证实其源发者、参入者使其无法抵赖其行为属于抗抵赖问题。目前,对于电子数据,解决这两个问题的最有效手段是数字签名 (digital signature)。数字签名是建立在公开密钥加密技术基础上的一种安全技术,它能鉴别和保证电子数据的原发性、真实性和完整性,并提供抗抵赖的证据。而公开密钥加密技术又是建立在公开密钥加密算法基础上的。公开密钥加密算法又称为非对称密钥加密算法,它使用一对密钥进行信息加密、解密,其中一个不公开,称为私钥,由密钥对的拥有者(或实体)安全保存,可用于数字签名(或信息解密);另一个公开发布,称为公钥,任何人都可通过一定的途径获得,可用于数字签名的验证(或信息加密)。基于公开密钥算法的数字签名技术,其原理简单地说是这样的签名者先计算要签名的数据的HASH值(散列值),即获取要签名的电子数据的数字指纹(又称为消息摘要, Message Digest),然后,签名者用其私钥加密该散列值,该加密结果称为签名数据;验证者如果要验证某个签名数据是否为该签名者对相关数据的签名,则他先用签名者的公钥解密签名数据,然后,用同样的散列算法计算相关数据的散列值,之后,将解密后的数据与刚才计算得到的散列值相比较,如果相等,则说明签名数据确实是签名者使用其私钥对相关数据的签名,否则,或者这个签名数据是伪造的,或者,相关的数据已被篡改。数字签名具有如下特性1)只有私钥的拥有者才能对数据签名,而任何人都可以用公钥验证签名的有效性;2)对原数据的任何修改,都使得签名验证失败,从而能鉴别和保证数据的完整性,确定数据的真实性,及发现针对被签名数据的任何篡改;幻签名值无法伪造,即其他人都无法伪造私钥拥有者的数字签名而能被公钥验证通过,换言之,如果某个数字签名被公钥验证通过,是有效的,那么,就可以确定这个签名一定是由私钥拥有者实施的,数据一定来自于、产生于私钥拥有者,从而能确定数据的原发性及源发者(或参入者),实现抗抵赖的目的。目前最常用的非对称密钥加密算法有RSA、DSA算法等,而椭圆算法(elliptic curve cryptography, ECC)是最近出现的、获得广泛重视的一种非对称密钥加密算法。非对称加密技术真正要获得应用,还必须解决公钥的安全发布问题。为了实现公钥的安全、可靠发布,防止假冒,人们提出了公开密钥基础设施安全技术体系,即 Public Key Infrastructure (PKI) 在 PKI 中,由一个称为证书认证机构(Certification Authority, CA)的实体通过一个证书认证系统(称为CA系统)为公开密钥对的拥有者签发数字证书(简称证书)。数字证书是一组电子信息,它上面有公钥、公钥拥有者名称(即主体名,Subject Name)、证书签发者名称(Issuer Name,即证书认证机构)、证书序列号、证书密钥用途等信息,并由证书认证机构的私钥数字签名,该签名的有效性可经证书认证机构的公钥验证(证书认证机构的公钥也是通过一种特定的、称为CA证书的公钥证书发布, 并可通过一定的安全途径获得)。通过数字证书可实现公钥(或公开密钥对)与密钥对拥有者(私钥)的有效绑定,以及公钥的安全发布。有了数字证书后,就能安全地实现电子数据的数字签名和签名验证任何人都可以通过一定的安全途径产生一个公开密钥对,然后向CA认证机构申请、签发一张包含有公钥及公钥拥有者信息的数字证书,然后用证书对应的私钥对数据签名;任何其他人都可以通过公开途径安全地获得签名者的证书,然后用证书上的公钥验证数字签名的有效性。目前,包括中国在内的许多国家都颁布了电子签名法,从而在法律上确定了数字签名的法律有效性和地位。因此,通过电子记录的数字签名,能够解决电子记录作为证据在原发性、真实性和完整性,以及抗抵赖能力等方面面临的问题,从而使得电子记录能够成为真正有效的法律证据。虽然,通过对电子记录的数字签名,能使得其成为有效的法律证据,但在实际应用中,对单个记录签名往往是不够的,因为,在实际法律诉讼、司法实践中,人们往往需要证据链,即需要一组相互之间存在关联关系的电子记录(证据)。比如,在电子病历应用中,针对某个病人的一组电子医嘱往往是相互关联的,后一个医嘱通常是在前一个医嘱上开出的, 甚至是对前一个医嘱的改变,而且,一组医嘱通常又是与一组化验单相关联的(并在基础上开出的),因此,在出现医患纠纷,进行责任界定时,仅看单个医嘱是不够的,还需要查看关联的医嘱、化验单。为此,所有的电子医嘱、化验单都需要作为记录(证据)保存起来,而且这些保存的记录之间需要通过一定的方式关联起来,从而形成一个证据链,在必要的时候能够获取这个证据链,证明证据链的存在,并且对证据链中的任何一个记录都能验证其原发性、真实性,确定其源发者、参入者,对证据链中任何一个记录的修改、伪造、删除都能被发现。要做到这一点,通常的电子记录数字签名技术就不再适用,而本发明的系统就是要解决这一问题。在实际应用中,由于用途、对象、目的的不同,使得电子记录的内容、表现形式千差万另I」。在本发明中,将用于同一目的、针对同一用户群的一组包含有相同信息内容的电子记录对象(object)的集合,称为一个电子记录类(Class)。根据电子记录内容的组织结构、表现形式的不同,将电子记录划分成三种类型(type):表单型(Form)记录、文件型(File)记录和表单+文件(Form+File)型记录。表单型(Form)记录,由多个记录字段(field)组成, 每个字段的数据为数值型(如字串、整数等)。表单型(Form)记录通常对应于在数据库表中存放的记录,这里的每个记录字段与数据库表中的一个数据字段对应(且由它存储),它可以用namel = valuel&name2 = value2... “名值对”的形式表示,其中的“name”对应记录和(或)数据库记录表中一个字段名(或ID) ,“value”对应字段中存放的值。由于“名值对”也是人机界面中称为表单(Form)的输入/输出数据的格式,因此,这种形式的记录在本发明中称为i^orm型记录。对于文件(File)型记录,一个记录对应一个文件(文档),如 Word文档、PDF文档。对于表单+文件(Form+File)类型的记录,其有些记录字段存放数值型数据(与i^orrn记录类似),而另一些字段与文件对应或者直接存放文件的内容,或者存放文件的位置指示(如获取文件的统一资源定位符,Uniform Resorce Locator, URL)。

发明内容
本发明提出了一种基于电子记录关联签名的电子证据取证系统,它不但能实现通常的数字签名所具有的功能,而且能将相互关联的电子记录通过技术手段关联起来,并据此实现电子记录的关联取证、关联验证,从而产生具有抗抵赖能力的证据链。本发明的系统包含如下模块或组件记录签名模块面向各类电子记录的应用系统提供数字签名功能(包括普通签名和记录关联签名),其具体形态可以是动态库、静态库(如C\C++库、COM组件)、类包(如 Java类包、C#类包等)、或一个提供签名功能的服务系统等。记录验证与取证模块对电子记录进行签名验证,并基于电子记录关联签名进行电子记录的关联搜索、关联取证,以形成面向电子记录的证据链。记录配置管理模块对所涉及的电子记录类(class)的名称(name)、标识 (identifier,ID)、类型(type)、内容(content)、签名(signature)以及存储(storage)和获取(retrieval)方式等进行描述、设定,以便“记录验证与取证模块”能自动实现对电子记录的签名验证、关联搜索和关联取证。记录配置信息表示、存储“记录配置管理模块”设定的、关于电子记录类的、与电子记录签名及签名验证、搜索及取证有关的信息。电子记录应用系统使用记录签名模块、对电子记录进行签名的应用。记录数据库保存应用系统的电子记录的数据库系统。记录验证与取证模块同记录数据库可以位于同一个物理场所、同一个网络内,也可以位于不同物理场所、不同网络内。对于前一种情况,记录验证与取证模块可直接访问记录数据库;对于后一种情况,记录验证与取证模块可通过网络协议和网络服务接口(如 http, WebServices等)访问外部记录数据库。记录签名模块和记录验证与取证模块中的数字签名采用的是加密消息语法, Cryptographic Message Syntax (CMS,参见RFC385W中定义的签名格式。但需注意的是, 在CMS中,签名的数据(SignedData)是指一个数据类型,而在本说明书中签名的数据是指 SignedData类型的数据。记录配置信息的主要用途和目的是为记录验证与取证模块提供记录签名验证以及关联取证方面的相关信息。记录配置信息的内容包括但不限于,每个要处理的记录类(class)的名字(name)、唯一标识(ID)、类型(type)(如R)rm表单型、File文件型、 Form+File表单+文件型)、记录的获取方法和协议等。对于R)rm表单型记录,其记录配置信息还可以包括,记录类包含的字段及字段的数值类型,记录类对应于数据库中的哪几张数据库表(一个记录的不同字段可能分散存放在不同的数据库表中),它们是怎样对应的(如记录的哪个字段对应于哪个数据表的哪个字段),以及这些数据库表之间是怎样关联起来的从而能作为一个逻辑整体对其进行操作(增、删、查、改)。对于R)rm+File型记录, 配置信息除了包含i^orm类型记录所具有的那些配置信息外(如包含的字段及其名称、字段数值类型等),还包括哪些字段是文件字段,以及文件字段存储的是文件内容还是文件的位置指示(即文件获取统一资源定位符URL)等描述信息。对于R)rm型和R)rm+File型记录,对记录数字签名的方式通常是将要签名部分的字段内容以“名值对”的形式表示出来,然后对“名值对”形式的内容进行签名(计算HASH 值、使用私钥加密),因此,对于i^orm型和R)rm+File型记录,记录配置信息还包括,哪个字段是存放“签名的数据”的签名字段(该种字段可有多个),以及哪些记录字段包含在该签名字段的签名内容中(一个签名字段的签名内容可包含、嵌套其他签名字段),及这些包含在签名内容中的记录字段在计算签名HASH值(散列值)时的顺序(即出现在“名字对”中的顺序)是怎样的等。而对于File文件类型的记录(如PDF、Word、Excel)的数字签名, 许多具体应用往往采用其专有的签名方法、方案,因此,除了标准的数字签名方式、方案外 (如标准的PDF文档签名),“记录验证与取证模块”是无法知道数字签名数据在文档内存放的位置以及签名覆盖的文档内容范围,因而就无法从文档中获取签名数据,并针对签名覆盖的内容进行签名验证。为了解决这一问题,本发明对于文件型的记录类,在记录配置信息中可指定该文件型记录类对应的签名验证模块或组件(如动态库、类包等),供“记录验证与取证模块”调用,完成签名验证,以及从文件记录中获取签名数据,以供记录关联取证使用。在本发明中,与当前签名记录相关联的记录称为“关联记录”;而记录“关联签名” 即对一个记录的签名,不但覆盖了该记录本身的内容,而且覆盖了与其相关联的“关联记录”的内容。为了在一个记录的数字签名中加入与之相关联的记录的信息,本发明自定义了一个称为“关联记录信息”(CorrelatedRecordInfo)的多值(multiple values)属性类型(Attribute Type),并为该属性类型分配一个对象标识OID (Object Identifier),以及为该属性类型规定了一个属性值(Attribute Value)数据结构(一个这样的数据结构对应一个这种属性类型的单个属性值),用于存放与当前签名记录相关联的一个其他记录(也即关联记录)的信息。具体地,该属性值数据结构包含如下数据字段DRecordClassID (记录类标识),其值是与当前签名记录相关联的关联记录的记录类标识(ID);2) RecordSearchKeys (记录搜索键),可选字段,面向i^orm表单型和表单+文件 (Form+File)型关联记录,其值是以名值对的形式表示的(即namel = valuel&name2 = value2...)、能从记录数据库唯一查找到该关联记录的记录搜索条件;3)ReCOrdHaShValue (记录散列值),其值是与当前签名记录相关联的关联记录的散列值;4) RecordHashedFieldsList (记录散列计算字段列表),可选字段,面向表单型和表单+文件型关联记录,其值是一个关联记录的记录字段列表,表示对关联记录进行散列计算时所覆盖的记录字段及字段顺序(即关联签名所覆盖的关联记录的内容);5) HashAlgorithm(散列算法),其值表示计算记录关联签名时,与当前记录相关联的关联记录的散列值的计算算法;
6)ReCOrdRetrievalURL (记录获取统一资源定位符),对于文件型的关联记录这是必选字段,其值表示关联记录的获取方式、协议和位置,而对于表单型和表单+文件型的关联记录,这是可选字段。对于记录搜索键RecorcKearchKeys中存放的名值对而言,其中的一个“name” 对应一个记录字段名(或记录字段ID),”&”表示逻辑“与”,“namel = valuel&name2 = value2...,,即表示搜索条件(namel = valuel)并且(name2 = value2)...。在从记录数据库中搜索、查找对应的关联记录时,这个搜索条件将转换成数据库查询语句的查询条件。另外,对于i^orm表单型关联记录和表单+文件(Form+File)型关联记录,如果该记录可以通过网络服务查询获得(如通过http协议),则“关联记录信息”属性值中可以包含 RecordRetrievalURL字段,该字段给出了查询、获取相应记录的方法、协议、位置和参数,这时“关联记录信息”属性值可以不包含RecordkarchKeys字段。对于通常的、非关联的数字签名调用,记录签名模块按通常的方式对记录签名。对于记录关联签名调用,调用方提交的请求中除了有待签名的记录数据外,还包括与该记录相关联的其他记录的、可用于生成“关联记录信息”(CorrelatedRecordlnfo)属性值的信息。对于记录关联签名调用,记录签名模块按如下步骤进行操作Si.计算待签名记录的签名内容的散列值;S2.将与当前待签名记录相关联的每个关联记录的有关信息存放到一个相应的 “关联记录信息”属性类型的属性值数据结构中;S3.将步骤S2中产生的所有关联记录的“关联记录信息”属性值数据,按 ASN. 1 (Abstract Syntax Notation One) ^ SET Tj^j&^j DER(Distinguished Encoding Rules)编码,最后生成多值“关联记录信息”属性类型的属性值;S4.将与签名内容相符合的Content Type (内容类型)属性、其值为Sl产生的记录散列值的Message Digest (消息摘要)属性、以及其值是由步骤S3产生的“关联记录信息”属性,加入到“加密消息语法” (CMS)规定的“签名的数据”(即SignedData类型的数据)中的签名私钥对应的“签名者信息”(signeHnfo)中的“签名的属性”(signedAttrs) 字段中;S5.按“加密消息语法” (CMS)中规定的方法,产生包含“签名的属性”的数字签名。Content Type (内容类型)属性的值是一个对象OID (0b ject Identif ier),用于指示被签名的数据内容的类型,在电子记录中其值通常是1.2. 840. 113549. 1. 7. 1 (对应于 Data类型),但也可能是其他值。在本发明中,对于R)rm+File类型的记录,若某个记录字段是文件字段,且该字段中存放的是文件位置指示(文件获取URL),那么,即使该字段是在数字签名覆盖的内容中, 该字段对应的文件内容也不包含在签名计算时记录的散列值中,而只有其位置指示(URL) 包含在散列值计算中。在这种情况下,若要将文件内容包含在数字签名中,则需要将对应的文件当作一个单独的、与当前记录相关联的文件型记录,然后通过本发明的记录关联签名将文件内容包含在当前记录的签名数据中。在这种情况下,对表单+文件(Form+File)类型记录的数字签名验证,若文件本身中又包含有签名,则对其签名的验证是按照文件型关联记录本身的签名验证来执行的。“记录验证与取证模块”提供两种针对电子记录的签名验证调用,一是通常的记录签名验证调用,二是记录签名验证及关联取证调用。无论是哪种调用,调用接口至少需提供两种数据一是包含数字签名的电子记录本身的数据,二是记录所对应的记录类标识。对于通常的记录签名验证调用,即仅针对记录本身原发性、完整性的数字签名验证,“记录验证与取证模块”按通常的数字签名验证方式对记录的(一个或多个)数字签名进行验证。对于针对某个记录的签名验证与关联取证调用,“记录验证与取证模块”不但要针对该记录本身的内容进行数字签名验证,而且要设法获取该记录的关联记录,验证关联记录是否是原始的关联记录(即进行“关联验证”),并对获取的每一关联记录不断地重复执行签名验证与关联取证这一过程,直到所有与当前待验证取证记录直接或间接相关联的所有记录都被获取并完成验证。这样,验证、关联取证最后返回的结果,不但包含有最初要验证取证的记录及其数字签名验证结果,而且以链状数据结构返回所有与该要验证取证的记录直接或间接相关联的记录及其数字签名验证结果,以及记录间关联关系的验证结果。该链状数据结构中的每个节点数据结构(记录数据对象)对应一个记录,存放有该记录的信息及验证结果(如是否被篡改),以及指向到该记录的关联记录对应的节点数据结构的链接(即指向关联记录对应的节点数据对象的指针或引用)。这样,执行本发明的记录验证与关联取证过程,将最终产生一个通过关联签名链接起来的记录链(证据链)。进行记录的签名验证与关联取证时需要注意的一点是,一个记录可能有多个“加密消息语法”(CMS)中规定的“签名的数据”(即SignedData类型的数据),而每个“签名的数据”又可能包含多个 “签名者信息”(signeHnfo)(即多个签名)。“记录验证与取证模块”对记录进行签名验证与关联取证的具体操作过程如下Al.初始化一个用于存放记录验证与关联取证结果的链状数据结构,该初始链状结构仅包含一个节点,对应于将要验证取证的记录,然后,以该记录作为验证与关联取证对象,转入下一步;A2.取出当前待验证取证记录中的下一个未经本过程检验的“签名的数据”,若再没有“签名的数据”可取,则返回存放验证与关联取证结果的链状数据结构。否则,转入下
一步;A3.获取“签名的数据”中的下一个未经本过程验证的“签名者信息”(signeHnfo),若再没有“签名者信息”可取,转入步骤A2 ;否则,转入下一步;A4.对获取的未经本过程验证的该“签名者信息”,先按通常的签名验证方法对该签名者的数字签名是否有效进行验证并将结果保存在验证与取证结果链状数据结构中的、 对应于当前正在验证取证的记录的节点数据结构中,然后转入下一步;A5.检查正在验证的“签名者信息”是否包含有“签名的属性”(signedAttrs),若没有,转入步骤A3 ;否则,转入下一步;A6.检查“签名者信息”中的“签名的属性”(signedAttrs)中是否包含“关联记录信息”属性,若没有,转入步骤A3 ;否则,获取该“关联记录信息”属性并转入下一步;A7.针对当前正在验证取证的记录,并基于步骤A6中获取的“关联记录信息”属性,以及之前验证、取证执行过程中产生的链状数据结构,执行“记录关联取证与关联验证” 子过程,执行完成后,转入步骤A3 ;在以上步骤A2,“记录验证与取证模块”按如下方式获取下一个未经检验的“签名的数据”(即SignedData类型的数据)根据调用接口中传入的当前正在验证取证的记录的记录类标识,查看记录配置信息,确定当前正在验证取证的记录的类型(type),若是文件型记录,则“记录验证与取证模块”调用记录配置信息中指定的该记录类对应的特定的签名验证模块或组件,或根据文件的扩展名(即文件类型)调用其相应的缺省的签名验证模块或组件,获取并返回下一个未经检验的“签名的数据”,或返回“再无数据”的结果提示;若是表单型记录或表单+文件型记录,则“记录验证与取证模块”根据记录配置信息中对该记录类的描述信息,确定哪些字段是记录签名字段,获取并返回下一个未经检验的记录签名字段,或返回“再无数据”提示。在以上步骤A4,对记录签名数据“签名者信息”(SigneHnf0)的通常数字签名验证按如下方式进行根据调用接口中传入的当前正在验证取证的记录的记录类标识,查看记录配置信息,确定当前正在验证取证的记录的类型(type),若是文件型记录,则“记录验证与取证模块”调用记录配置信息中指定的对应记录类的签名验证模块或组件,或根据文件的扩展名 (即文件类型)调用其相应的缺省的签名验证模块或组件,对记录签名进行验证;若是表单型记录或表单+文件型记录,则“记录验证与取证模块”根据当前记录对应的记录类的配置信息,确定当前“签名者信息”对应(所在)的记录签名字段的签名数据覆盖了哪些记录字段以及这些记录字段在散列值计算中的顺序(即签名散列计算时,覆盖的记录字段以及这些字段的顺序),然后,依据这些信息,计算、验证数字签名是否正确。在以上步骤A7,“记录验证与取证模块”按如下步骤执行“记录关联取证和关联验证”子过程。Bi.取出“关联记录信息”(CorrelatedRecordlnfo)多值属性中的下一个未经本子过程处理的属性值,若再没有属性值可取,返回链状数据结构结果。否则,转入下一步;B2.根据步骤Bl取出的“关联记录信息”属性值中的“记录类标识”(RecordClassID)字段的值,查看记录配置信息,判断对应记录类的类型,若是表单 (Form)或表单+文件(Form+File)型,则转入步骤B8 ;否则,对应记录类的类型是文件 (File)型,转入下一步;B3.利用“关联记录信息”属性值中“记录获取统一资源定位符”(RecordRetrievalURL)字段给出的协议、方法和地址,获取对应的文件型关联记录,如果获取失败,则在链状数据结构中的对应于当前正在验证取证的记录的节点数据结构中标识获取失败的原因(如连接失败、记录不存在),然后转入步骤Bl ;否则,转入下一步;B4.创建一个链状数据结构中的节点数据结构,将步骤B3获取的关联记录的信息保存在该节点数据结构中(该节点称为关联记录节点),并在当前正在验证取证的记录对应的节点数据结构中设置一个指向到该关联记录节点数据结构的链接(如设置一个指向到关联记录节点数据对象的指针或引用),即在返回验证与取证结果的链状数据结构中增加一个从当前正在验证取证的记录节点到关联记录节点的链接;B5.根据步骤Bl取得的“关联记录信息性值中的“散列算法”(HashAlgorithm) 字段中给出的算法,计算获取的文件记录的散列值;B6.将步骤B5中计算的散列值与“关联记录信息”属性值中“记录散列值”(RecordHashValue)字段的值进行比较,若相等,则在链状数据结构中对应于该关联记录的节点数据结构中标识该关联记录未篡改,否则,标识为已篡改;B7.以步骤B3获取的关联记录为验证和关联取证对象,进一步执行从步骤A2到 A7的记录验证与关联取证过程,执行完成后,转入步骤Bl ;B8.检查步骤Bl中取得的“关联记录信息”属性值中是否包含“记录获取统一资源定位符”(RecordRetrievalURL)字段,若没有,转入步骤BlO ;否则,转入下一步;B9.利用“记录获取统一资源定位符”(RecordRetrievalURL)字段给出的协议、方法和地址,获取对应的关联记录,如果获取失败,则在链状数据结构中的对应于当前正在验证取证的记录的节点数据结构中标识获取失败的原因(如连接失败、记录不存在),然后转入步骤Bl ;否则,转入步骤B12 ;B10.根据步骤Bl取得的“关联记录信息”属性值中的“记录类标识”(RecordClassID)字段的值,在记录配置信息中找到对应记录类的配置信息;Bll.以步骤Bl中获取的“关联记录信息”属性值中的“记录搜索键”(RecordkarchKeys)字段的内容为查询条件,用步骤BlO从记录配置信息中获得的记录查询、获取方法,从本地或远端记录数据库中查询、获取对应的关联记录,如果获取失败, 则在链状数据结构中的对应于当前正在验证取证的记录的节点数据中标识获取失败的原因(如连接失败、记录不存在),然后转入步骤Bl ;否则,转入下一步;B12.创建一个链状数据结构中的节点数据结构,将获取的关联记录的信息保存在该节点数据结构中(该节点为关联记录节点),并在当前正在验证取证的记录对应的节点数据结构中设置一个指向该关联记录节点数据结构的链接,即在返回验证与取证结果的链状数据结构中增加一个从当前正在验证取证的记录节点到关联记录节点的链接;B13.使用“关联记录信息”属性值中“散列算法”(HashAlgorithm)字段给出的算法,按“关联记录信息”属性值中的“记录散列计算字段列表”(RecordHashedFieldsList) 字段给出的记录字段顺序,对获取的关联记录进行散列运算;B14.将步骤B13计算获得的关联记录散列值与“关联记录信息”属性值中的“记录散列值”(RecordHashValue)字段的值进行比较,若相等,则在链状数据结构中该关联记录对应的节点数据结构中标识该记录未篡改,否则,标识为已篡改;B15.以步骤B9或步骤Bll中获取的关联记录为验证与关联取证对象,进一步执行步骤A2到步骤A7的记录验证与关联取证过程,执行完成后,转入步骤Bl ;以上步骤B6和B14即是进行记录的关联验证,若两个散列值相等,说明当前获取的关联记录确实是与正在验证取证的记录相关联的原始关联记录,否则,当前获取的所谓关联记录是一个已被篡改或伪造的关联记录。在以上B11,“记录验证与取证模块”按如下方法,从记录数据库中获取对应的关联记录根据记录配置信息确定记录数据库是在本地还是远端,若是在远端,利用记录配置信息中的给出查询协议、方法和地址,将“关联记录信息”(CorrelatedRecordlnfo)属性值中“记录搜索键”(RecordkarchKeys)字段的内容转化为对应的查询条件,从远端记录数据库查询、获取对应的记录;否则,以“记录搜索键”(RecordkarchKeys)字段的内容为查询条件,结合记录配置信息中给出的记录类与本地记录数据库表之间对应关系的描述、以及数据库表之间关联关系的描述,形成具体的数据库查询请求(如SQL请求或其他适合的查询请求),连接本地数据库查找、获取对应的关联记录。从上面描述可以看到,整个记录验证与关联取证过程包括三部分,第一部分是初始化,包括步骤Al ;第二部分是记录验证,包括步骤A2-A6,第三部分是关联取证与验证(验证包括关联记录的关联关系验证及关联记录本身的签名验证),包括步骤A7以及B1-B15。 而第三部分中,B1-B15存在对步骤A2-A7的递归执行(对应于子程序、方法的递归调用) 一个记录可包含一个到多个关联签名,对每个关联签名都要执行关联取证与验证,而关联取证获得到的每个关联记录本身又可能包含一个到多个关联签名,又需进一步地进行关联取证与验证,不断地重复这一过程,直到所有的关联记录都被获取、验证。基于以上关联取证过程,最终的链状记录数据结构可能不是一个简单的链,而是一个树,甚至是一个网。为了避免在以上记录验证与关联取证过程中出现环路(looping),即由于记录之间的直接或间接的相互关系,导致对某些记录的无休止的循环验证、关联取证,“记录验证与取证模块” 在对获取的关联记录进行验证和进一步取证前,先在存放验证与取证结果的链数据结构中查看该记录是否已存在且已完成验证和关联取证,若是,则不再对该记录进行进一步的验证和关联取证,否则,继续针对该记录进行验证和关联取证。从前面介绍,可以看到通过电子记录关联签名可达到如下技术效果1、将两个记录关联起来,便于关联取证以获取证据链;2、证明两个记录关联关系的存在,从而证明证据链的存在。通过以上记录验证与关联取证过程,我们可以得到如下结果1)获得与待验证记录直接或间接相关联的所有其他记录,或者,发现被丢失、删除的关联记录;2)通过记录关联签名,检验、确认获取的关联记录是否是关联签名时的原始记录 (是否被篡改、伪造);3)得到每个记录(包括待验证的记录及所有与其直接或间接相关联的记录)的数字签名有效性的验证结果(即记录是否伪造、篡改)。这些结果具有如下司法举证方面的意义1.确定、证明相关记录的原发性、真实性、完整性,以及相关记录产生的源发者、参入者;2.发现、确认被篡改、被伪造的记录;3.获得相关记录的证据链;4.发现证据链中被篡改、伪造、删除的记录。本发明具有如下创新及特点1)提出了一种基于电子记录关联签名的电子证据取证系统,该系统通过电子记录关联签名将一个记录同与其相关联的其他记录关联起来;基于这种记录关联签名,不但能确定记录本身内容的原发性、真实性、完整性,而且能据此进行记录的关联取证,获取面向电子记录的证据链。2)通过对记录类的配置管理技术,本发明的系统能适用于不同类别(class)、不同类型(type)的记录,具有通用性。


图1为本发明系统的结构图。图2为本发明返回记录验证与关联取证结果的链状数据结构示意图。图3为本发明记录验证与关联取证子程序流程图。图4a、图4b为本发明记录关联取证与关联验证子程序流程图。
具体实施例方式下面结合附图对本发明作进一步的详细描述。采用本发明的系统包含如下模块或组件(如图1所示)记录签名模块向各类电子记录的应用系统提供数字签名功能,包括记录关联签名功能。记录验证与取证模块对电子记录进行签名验证,并基于记录关联签名进行电子记录的关联搜索、关联验证,以产生面向电子记录的证据链。记录配置管理模块对所涉及的电子记录类的名称、标识、类型、内容、签名、存储和获取方式等进行描述、设定,以便“记录验证与关联取证模块”能自动实现相关电子记录的签名验证及关联搜索、关联验证。记录配置信息表示、存储“记录配置管理模块”设定的、与电子记录签名及签名验证、记录关联搜索取证有关的关于电子记录类的信息。电子记录应用系统调用本发明的“记录签名模块”对电子记录进行签名的各类特定应用。记录数据库用于保存应用系统的电子记录。“记录签名模块”的具体实现方式,与具体的应用及应用环境有关,它可以是动态库、静态库(如C/C++库、Windows COM组件)、类包(如Java类包、C#类包等)、或一提供签名功能的服务系统等。相应地,模块、系统的开发实现可以采用C/C++、J2EE、C#. NET等技术和平台。“记录签名模块”对普通签名功能的实现可直接利用现有的众多支持“加密消息语法”Cryptographic Message Syntax标准(CMS,参见RFC3852)标准的加密API和工具包,如Windows CryptoAPI, OpenSSL、各种Java加密类包。“记录签名模块”对关联签名的实现,可在现有支持CMS的加密模块(即前面所说的加密API和工具包)的基础上扩展实现。现有的支持CMS的加密模块,都支持在“签名者信息”(signeHnfo)中加入“签名的属性”(signedAttrs)这一字段,对此,只需在“签名的属性”中加入本发明定义的“关联记录信息”(CorrelatedRecordInfo)属性即可实现记录关联签名。同样地,“记录验证与取证模块”的具体实现,可以是动态库、静态库(如C/C++库、 Windows COM组件)、类包(如Java类包、C#类包等)或单独的取证服务系统。类似地,模块、系统的开发实现可以采用C/C++、J2EE、C#. NET等技术和平台。现有的支持CMS的加密模块,都能对带有“签名的属性”(SignedAttrs)的数字签名数据(即SignedData类型的 “签名的数据”)进行验证,并提供接口提取“签名的属性”的内容。因此,“记录验证与取证模块”可以使用这些模块进行签名验证,并进一步提取“签名的属性”中的“关联记录信息” 属性(它是本发明自定义的多值属性),然后,据此“关联记录信息”属性实现记录的关联取证、关联验证。对于发明内容中提到的、针对某个文件型记录类的专门签名验证模块,需要根据具体的情况,或者使用已有的标准文件签名验证模块、组件,或者开发相应的文件签名验证模块、组件(C/C++库、Java或C#类等),以便完成签名验证、从文件记录中获取“签名的数据”(即SignedData类型的数据),并在此数据的中进一步地提取“关联记录信息”属性进行关联取证。“记录配置管理模块”的具体实现可以是一个单独的系统,也可以是可单独工作的一个子系统。它就是一个针对记录类配置信息的信息管理系统,系统的开发实现可以采用 C/C++、J2EE、C#. NET等技术和平台。“记录配置信息”的表示、存储,既可以采用数据库,也可以采用XML文档。“记录数据库”取决于应用系统,它既可以是可通过SQL语句访问的关系数据库系统,也可以是可通过网络服务协议、服务接口访问、获取记录的数据库系统,或者通过其他手段访问的数据库系统。在数字签名的“签名的属性”(signedAttrs)中加入的“关联记录信息”(CorrelatedRecordInfo)属性,是以下通用属性类型(参见 RFC3852,Cryptographic Message Syntax)的一个具体属性类型
Attribute = SEQUENCE { attrType OBJECT IDENTIFIER,
attrYalues SET OF AttributeYalue }
AttributeYalue : : = ANY具体地,当在这个数据类型的具体数据中,若attrType的值等于本发明自定义的 “关联记录信息” (CorrelatedRecordInfo)属性类型对应的OID (这个OID是一个本发明自定义的、全局唯一的对象ID),则后面的attrValues的值就是“关联记录信息”属性的多值属性值(确切地说它是一个“关联记录信息”属性值的集合)。发明内容中所述的步骤A1-A7的记录验证与关联取证过程,将返回一个链状数据结构,存放要验证取证的记录及签名验证结果,以及所有与该验证取证记录直接或间接相关联的所有其他记录,以及针对它们的验证结果,该链状数据结构的一种可能具体实现如图2所示。这里,一个记录数据结构,是链状数据结构中的一个节点,对应一个记录,存放有该记录的相关信息及验证结果(如是否被篡改);每个节点记录数据结构有一个长度可变的链状数据结构(具体地,可以是C/C++语言中的指针链,Java中的List结构等),用于指向(链接到)与该记录关联的一系列其他记录(即关联记录)的记录数据结构;除此之外,每个节点记录数据结构还有另一个长度可变的链状数据结构,用于指向(链接到)一系列的称为“签名者信息及验证结果”的数据结构,每个这样的数据结构对应于记录中的一个 “签名者信息”(signeHnfo)并存放对应的签名验证结果(一个记录可能有多个“签名者信息 )ο记录验证与关联取证过程中的步骤A2-A7,可用一个子程序(如C/C++中的子程序)或方法(如Java类或C#类的方法)来实现,传递给该子程序或方法的参数包括初始链状数据结构、当前要验证取证的记录。调用该子程序或方法时传入的初始链状数据结构, 或者仅包含有最初要验证取证的那个记录,或者,还包含有通过前期的关联取证获得的、与最初要验证取证的记录直接或间接相关联的其他记录。该子程序或方法将根据针对当前要验证取证的记录的验证与关联取证结果,更新、扩展链状数据结构,然后返回更新、扩展后的链状数据结构。步骤A2-A7的具体实施对应的子程序或方法称为“记录验证与关联取证子程序”,其具体流程如图3所示。记录验证与关联取证过程在步骤A7要进一步调用执行一个称为“关联取证与关联验证”的子过程,该关联取证与关联验证子过程对应的步骤B1-B15,也可用一个子程序 (如C/C++子程序)或方法(如Java类或C#类的方法)来实现,传递给该子程序或方法的参数包括一个保存之前验证与关联取证结果的初始链状数据结构、当前正在验证取证的记录(也即要关联取证的记录),以及步骤A7中所说的当前验证取证记录中的正在验证、关联取证的“签名者信息”(SignecHnfo)中的“关联记录信息”(CorrelatedRecordlnfo)属性的多值属性值数据。该子程序或方法将根据关联取证、关联验证结果,更新、扩展该链状数据结构,并针对每个获得的关联记录,递归调用前面步骤A2-A7对应的子程序或方法,进一步进行记录验证和关联取证。步骤B1-B15对应的子程序或方法称为“记录关联取证与关联验证子程序”,其具体流程如图4a、图4b所示。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
权利要求
1.一种基于电子记录关联签名的电子证据取证系统,该系统包括如下实体或组件 记录签名模块向各类电子记录的应用系统提供包括记录关联签名在内的数字签名功能;记录验证与取证模块对电子记录进行签名验证,并基于电子记录关联签名展开电子记录的关联搜索、关联验证,并对关联搜索获取的关联记录不断地重复签名验证、关联搜索、关联验证这一过程,最终产生面向电子记录的证据链;记录配置管理模块对所涉及的电子记录类的名称、标识、类型、内容、签名、存储和获取方式等进行描述、设定,以便记录验证与取证模块能自动实现相关电子记录的签名验证、 以及关联搜索、关联验证;记录配置信息表示、存储由记录配置管理模块设定的、与电子记录签名及签名验证、 记录关联搜索取证有关的、关于电子记录类的信息;电子记录应用系统调用记录签名模块对电子记录进行签名的各类应用; 记录数据库面向应用系统保存电子记录的数据库系统。记录签名模块和记录验证与取证模块的密码功能遵从加密消息语法(Cryptoraphic Message Syntax)标准,在加密消息语法标准中签名的数据(SignedData)是指一个数据类型,以下所述的签名的数据是指SignedData类型的数据;记录验证与取证模块提供两种针对电子记录的签名验证调用,一是通常的记录签名验证调用,二是记录签名验证与关联取证调用;无论是哪种调用,调用接口至少需提供两种数据一是包含数字签名的电子记录本身的数据,二是记录所对应的记录类标识;该系统的电子记录从记录内容的组织、表现形式来说,分为表单(Form)、文件(File) 和表单+文件(Form+File)三种类型,在记录配置信息中,对于表单型记录类的描述、设置信息包括记录具有的字段及字段的数值类型,记录类与数据库表的对应关系,记录字段与数据库表字段之间的对应关系,以及一个记录类所对应的多张数据库表之间的关联关系等,从而使得这些数据库表能作为一个逻辑整体对其进行增、删、查、改操作;对于表单+文件型记录,配置信息除了包含表单型记录所具有的那些配置信息外,还包括哪些字段是文件字段,以及文件字段存储的是文件内容还是文件的位置指示的描述信息,位置指示的形式是统一资源定位符(Uniform Resource Locator, URL);对于表单型和表单+文件型记录,记录配置信息还包括,哪个字段是存放签名的数据的签名字段,以及哪些记录字段包含在该签名字段的签名内容中,及这些包含在签名内容中的记录字段在计算签名散列(HASH) 值时的顺序是怎样的;对于文件型的记录类,记录配置信息中指定该文件记录类对应的签名验证模块或组件。
2.根据权利要求1所述的一种基于电子记录关联签名的电子证据取证系统,其特征在于记录签名模块和记录验证与取证模块除了实现加密消息语法标准中定义的数据格式外,还支持在签名的数据中的签名者信息(signeHnfo)的签名的属性(signedAttrs)字段中加入一个称为关联记录信息(CorrelatedRecordlnfo)的多值属性类型的属性,用于存放与当前签名记录相关联的关联记录的信息,从而使得对一个记录的签名不但覆盖了该记录本身的内容,而且覆盖了与其相关联的关联记录的内容,也即实现记录关联签名;关联记录信息属性类型的单个属性值是一个包含如下字段的数据结构1)记录类标识(RecordClassID)其值是与当前签名记录相关联的关联记录的记录类标识;2)记录搜索键(RecordkarchKeys)可选字段,面向表单型和表单+文件型关联记录, 其值是以名值对的形式表示的、能从记录数据库中唯一查找到该关联记录的记录搜索条件;3)记录散列值(RecordHashValue)其值是与当前签名记录相关联的关联记录的散列值;4)记录散列计算字段列表(RecordHashedFieldsList),可选字段,面向表单型和表单 +文件型关联记录,其值是对关联记录进行散列计算时所覆盖的记录字段及字段顺序的记录字段列表;5)散列算法(HashAlgorithm),其值表示计算记录关联签名时关联记录的散列值的计算算法;6)记录获取统一资源定位符(RecordRetrievalURL),对于文件型的关联记录这是必选字段,其值表示关联记录的获取方式、协议和位置,而对于表单类型和表单+文件类型, 这是可选字段。
3.根据权利要求1所述的一种基于电子记录关联签名的电子证据取证系统,其特征在于对于通常的、非关联的数字签名调用,记录签名模块按通常的方式对记录签名;而对于记录关联签名调用,调用方提交的请求数据中除了待签名的记录外,还包括与该记录关联的其他记录的、可用于生成关联记录信息属性值的信息,接收到记录关联签名调用后,记录签名模块按如下步骤进行记录关联签名操作第一步.计算待签名记录的签名内容的散列值;第二步.将与当前待签名记录相关联的每个关联记录的有关信息存放到一个相应的关联记录信息属性类型的属性值数据结构中;第三步.将第二步中产生的所有关联记录的关联记录信息属性值数据,按 ASN. 1 (Abstract Syntax Notation One) Φ W SET ^ ζ ^τ DER(Distinguished Encoding Rules)编码,最后生成多值关联记录信息属性类型的属性值;第四步.将与签名内容相符合的内容类型(Content Type)属性、其值为第一步产生的记录散列值的消息摘要属性、以及其值是由第三步产生的关联记录信息属性,加入到加密消息语法标准规定的签名的数据中的签名私钥对应的签名者信息中的签名的属性字段中;第五步.按加密消息语法标准中规定的方法,产生包含签名的属性的数字签名。
4.根据权利要求3所述的一种基于电子记录关联签名的电子证据取证系统,其特征在于在所述的电子记录关联签名中,对于表单+文件类型的记录,若某个记录字段是文件字段,且该字段中存放的是文件位置指示,那么,即使该字段是数字签名覆盖的内容,该字段对应的文件内容也不包含在签名计算时该记录的散列值计算中,而只有位置指示包含在散列值计算中;若要将文件内容包含在该记录的数字签名中,则将对应的文件当作一个单独的、与当前记录关联的文件型记录,然后通过所述的记录关联签名方法,将文件内容包含在当前待签名记录的签名数据中。
5.根据权利要求1所述的一种基于电子记录关联签名的电子证据取证系统,其特征在于记录验证与取证模块针对某个记录进行签名验证与关联取证时,调用返回的结果,不但包含有最初要验证取证的记录及其数字签名验证结果,而且以链状数据结构返回所有与该要验证取证的记录直接或间接相关联的所有其他记录及其数字签名验证结果,以及这些记录间关联关系的验证结果。该链状数据结构中的每个节点数据结构对应一个记录,存放有该记录的信息及相关验证结果,以及指向其关联记录对应的节点数据结构的链接,链接的形式是指向关联记录对应的节点数据结构的指针或引用。
6.根据权利要求1所述的一种基于电子记录关联签名的电子证据取证系统,其特征在于对于通常的记录签名验证调用,即仅针对记录本身原发性、完整性的数字签名验证,记录验证与取证模块按通常的数字签名验证方式对记录的数字签名进行验证;而对于针对某个记录的签名验证与关联取证调用,记录验证与取证模块按如下过程对待验证取证记录实施数字签名验证与关联取证步骤1.初始化一个用于存放记录验证与关联取证结果的链状数据结构,该初始链状结构仅包含一个节点,对应于将要验证取证的记录,然后,以该记录作为验证与关联取证对象,转入下一步;步骤2.取出当前待验证取证记录中的下一个未经本过程检验的签名的数据,若再没有签名的数据可取,则返回存放验证与关联取证结果的链状数据结构,否则,转入下一步;步骤3.获取签名的数据中的下一个未经本过程验证的签名者信息,若再没有签名者信息可取,转入步骤2 ;否则,转入下一步;步骤4.对获取的未经上述过程验证的该签名者信息,先按通常的签名验证方法对该签名者的数字签名是否有效进行验证并将结果保存在验证与取证结果链状数据结构中的、 对应于当前正在验证取证的记录的节点数据结构中,然后转入下一步;步骤5.检查正在验证的签名者信息中是否包含有签名的属性,若没有,转入步骤3 ;否则,转入下一步;步骤6.检查该签名者信息中的签名的属性中是否包含关联记录信息属性,若没有,转入步骤3 ;否则,获取该关联记录信息属性并转入下一步;步骤7.针对当前正在验证取证的记录,并基于步骤6中获取的关联记录信息属性,以及之前验证、取证执行过程中产生的链状数据结构,执行记录关联取证与关联验证子过程, 执行完成后,转入步骤3。
7.根据权利要求6所述的一种基于电子记录关联签名的电子证据取证系统,其特征在于在步骤2中,记录验证与取证模块按如下方式获取下一个未经检验的签名的数据根据调用接口中传入的当前正在验证取证的记录的记录类标识,查看记录配置信息, 确定当前正在验证取证的记录的类型,若是文件型记录,则记录验证与取证模块调用记录配置信息中指定的该记录类对应的特定的签名验证模块或组件,或根据文件的扩展名调用其相应的缺省的签名验证模块或组件,获取并返回下一个未经检验的签名的数据,或返回再无数据的结果提示;若是表单型记录或表单+文件型记录,则记录验证与取证模块根据记录配置信息中对该记录类的描述信息,确定哪些字段是记录签名字段,获取下一个未经检验的记录签名字段,或返回再无数据提示。
8.根据权利要求6所述的一种基于电子记录关联签名的电子证据取证系统,其特征在于在步骤4中,对记录签名数据签名者信息的通常数字签名验证按如下方式进行根据调用接口中传入的当前正在验证取证的记录的记录类标识,查看记录配置信息,确定当前正在验证取证的记录的类型,若是文件型记录,则记录验证与取证模块调用记录配置信息中指定的对应记录类的签名验证模块或组件,或根据文件的扩展名调用其相应的缺省的签名验证模块或组件,对记录签名进行验证;若是表单型记录或表单+文件型记录, 则记录验证与取证模块根据对应记录类的配置信息,确定签名者信息对应的记录签名字段中的数字签名所覆盖的记录内容,即覆盖的记录字段以及这些记录字段在散列值计算中的顺序,然后,依据这些信息,计算、验证数字签名是否正确。
9.根据权利要求6所述的基于电子记录关联签名的电子证据取证系统,其特征在于 在所述步骤7中所述的记录关联取证和关联验证子过程为步骤A.取出关联记录信息多值属性中的下一个未经本子过程处理的属性值,若再没有属性值可取,返回链状数据结构结果;否则,转入下一步;步骤B.根据步骤A取出的关联记录信息属性值中的记录类标识字段的值,查看记录配置信息,判断对应记录类的类型,若是表单型或表单+文件型记录,则转入步骤H ;否则,对应记录类的类型是文件型,转入下一步;步骤C.利用关联记录信息属性值中记录获取统一资源定位符字段给出的协议、方法和地址,获取对应的文件型关联记录,如果获取失败,则在链状数据结构中的、对应于当前正在验证取证的记录的节点数据结构中标识获取失败的原因,然后转入步骤A ;否则,转入下一步;步骤D.创建一个链状数据结构中的节点数据结构,将步骤C获取的关联记录的信息保存在该节点数据结构中,该节点称为关联记录节点,并在当前正在验证取证的记录对应的节点数据结构中设置一个指向到该关联记录节点数据结构的链接,即在返回验证与取证结果的链状数据结构中增加一个从当前正在验证取证的记录节点到关联记录节点的链接;步骤E.根据步骤A取得的关联记录信息属性值中的散列算法字段中给出的算法,计算获取的文件记录的散列值;步骤F.将步骤E中计算的散列值与关联记录信息属性值中记录散列值字段的值进行比较,若相等,则在链状数据结构中对应于该关联记录的节点数据结构中标识该关联记录未篡改,否则,标识为已篡改;步骤G.以步骤C获取的关联记录为验证和关联取证对象,进一步执行所述从步骤2到步骤7的记录验证与关联取证过程,执行完成后,转入到步骤A ;步骤H.检查步骤A中取得的关联记录信息属性值中是否包含记录获取统一资源定位符字段,若没有,转入步骤J ;否则,转入下一步;步骤I.利用该记录获取统一资源定位符字段给出的协议、方法和地址,获取对应的关联记录,如果获取失败,则在链状数据结构中的对应于当前正在验证取证的记录的节点数据结构中标识获取失败的原因,然后转入步骤A ;否则,转入步骤L ;步骤J.根据步骤A取得的关联记录信息属性值中的“记录类标识”字段的值,在记录配置信息中找到对应记录类的配置信息;步骤K.以步骤A中获取的关联记录信息属性值中的“记录搜索键”字段的内容为查询条件,用步骤J从记录配置信息中获得的记录查询、获取方法,从本地或远端记录数据库中查询、获取对应的关联记录,如果获取失败,则在链状数据结构中的对应于当前正在验证取证的记录的节点数据中标识获取失败的原因,然后转入步骤A ;否则,转入下一步;步骤L.创建一个链状数据结构中的节点数据结构,将获取的关联记录的信息保存在该节点数据结构中,并在当前正在验证取证的记录对应的节点数据结构中设置一个指向该关联记录节点数据结构的链接,即在返回验证与取证结果的链状数据结构中增加一个从当前正在验证取证的记录节点到关联记录节点的链接;步骤M.使用关联记录信息属性值中“散列算法”字段给出的算法,按关联记录信息属性值中的记录散列计算字段列表字段给出的记录字段顺序,对获取的关联记录进行散列运算;步骤N.将步骤M计算获得的关联记录的散列值与关联记录信息属性值中的记录散列值字段的值进行比较,若相等,则在链状数据结构中该关联记录对应的节点数据结构中标识该记录未篡改,否则,标识为已篡改;步骤0.以步骤I或步骤K中获取的关联记录为验证与关联取证对象,进一步执行所述从步骤2到步骤7的记录验证与关联取证过程,执行完成后,转入步骤A。
10.根据权利要求9所述的一种基于电子记录关联签名的电子证据取证系统,其特征在于在所述步骤K中,记录验证与取证模块按如下方法,从记录数据库中获取对应的关联记录根据记录配置信息确定记录数据库在本地还是远端,若是在远端,利用记录配置信息中的给出查询协议、方法和地址,将关联记录信息属性值中记录搜索键字段的内容转化为对应的查询条件,从远端记录数据库查询、获取对应的记录;否则,以记录搜索键字段的内容为查询条件,结合记录配置信息中给出的记录类与本地记录数据库表之间对应关系的描述、及数据库表之间关联关系的描述,形成具体的数据库查询请求,连接本地数据库查找、 获取对应的关联记录。
全文摘要
本发明涉及一种基于电子记录关联签名的电子证据取证系统,该系统包括记录签名模块、记录验证与取证模块、记录配置管理模块、记录配置信息、电子记录应用系统和记录数据库。该系统通过在加密消息语法(Cryptographic Message Syntax)标准中定义的签名的数据(SignedData)中的签名的属性(signedAttrs)中加入本发明定义的关联记录信息属性(CorrelatedRecordInfo),实现了一种电子记录关联签名。通过该电子记录关联签名可将存在关联关系的电子记录通过技术手段关联起来,并在据此实现电子记录的关联取证、关联验证,从而产生具有抗抵赖能力的证据链。
文档编号G06F17/30GK102195781SQ20111014266
公开日2011年9月21日 申请日期2011年5月30日 优先权日2011年5月30日
发明者刘旭, 唐志红, 杨浩, 罗盛, 龙毅宏 申请人:北京天威诚信电子商务服务有限公司, 武汉理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1