一种文件安全检测方法

文档序号:6439397阅读:204来源:国知局
专利名称:一种文件安全检测方法
技术领域
本发明涉及计算机安全领域,尤指一种文件安全检测方法。
背景技术
文件是计算机系统中数据的宿主,几乎所有的软件项目都离不开文件。因此,文件系统的安全、稳定非常重要。对于文件安全,就当前各个文件系统而言,不同平台的系统实现方式各不相同,都不能同时、统一地满足文件的安全要求。现有技术中,程序员一般根据文件所在系统平台的特性给予不同的实现方法,比如,在Windows2000下,应用程序的相关数据、配置文件如果不是放在“My document”下面,一般Guest用户都可以对文件进行读、写操作。UNIX操作系统对文件的权限进行了严格的规定,但是往往程序员必须为应用程序添加多个有读写权限的使用者,随着多用户对文件的操作,程序员不能得知程序是否被误破坏过。
每个操作系统对每个文件都有相关的“文件描述块”来记录文件的基本属性,比如文件的读写属性、文件长度、文件名。根据这些,我们只能获取当前的文件属性,但不能知道文件是否被修改、破坏过。例如,当文件发生下列情况时,一般不会察觉文件破损(文件长度发生变化)、文件被意外破坏(文件长度内容发生变化)、文件属性变动(可读可写属性)以及文件非授权读写访问等。这些情况往往会使软件项目变得不安全,但是我们却无法察觉。
由于“文件描述块”存在于文件系统描述文件的数据结构中,各个文件系统存在差异,文件系统通过读取这些数据结构来获取文件的属性。这些文件属性不是存放在具体的文件当中,而是存在于文件所在的文件系统中,当一个文件被拷贝到另外一个文件系统时,这些属性将要丢失掉。因为不同的操作系统有不同的文件系统,而不同的文件系统对文件安全的实现是不同的。基本上,这些文件系统不能提供统一、相对完整的文件安全解决方案。

发明内容
本发明提供一种文件安全检测方法,可以在不同平台系统中检测出文件是否被非法修改过。
本发明方法包括A给文件添加文件头,将文件的属性信息加入该文件头中并随文件保存;B系统打开文件时,读取文件头中保存的属性信息,同该文件的当前属性信息进行比较,如果一致,则报告当前文件未被修改;否则,报告文件已被修改。
所述属性信息包括随文件内容修改而变化的一项或多项文件属性。
所述属性信息还包括不随文件内容修改而变化的一项或多项文件属性。
所述步骤B中读取文件头中保存的属性信息是通过标准的文件读取函数来实现的。
根据本发明的上述方法,还在所述文件头中加入与文件属性和/或文件内容相关的校验码。
在文件头中加入校验码包括如下步骤a对文件数据部分进行计算得出数据部分校验码,加入到文件头中;b对加入了数据部分校验码的文件头中内容进行计算,得出文件头部分的校验码,加入到文件头中。
系统打开文件时,使用与生成校验码所采用方法相对应的方法计算出当前文件的校验码,并同文件头中保存的校验码进行比较。
所述校验码生成方法为累计校验和方法或循环冗余校验方法。
根据本发明的上述方法,还包括在文件保存后进行加密的步骤;系统打开该文件时,进行相应的解密操作。
根据本发明的上述方法,还包括对加密文件进行压缩的步骤;系统打开该文件时,进行相应的解压缩操作。
采用本发明的方法,可以在不同平台系统中准确检测出文件是否被非法修改过;另外,本发明通过在文件属性信息中加入校验码,系统打开文件时,需要使用相同的校验方法对当前文件计算出相应的校验码来进一步确保文件的安全性。


图1是本发明方法的流程图;图2是本发明文件头及文件数据示意图。
具体实施例方式
下面结合附图对本发明的方法做进一步阐述。参见图1,本发明方法包括如下步骤步骤1在初始文件数据内容确定后,给文件添加一文件头(例如使用C++程序语言编写),将文件的属性信息加入到文件头中,将文件头随文件保存。所述属性信息包括随文件内容修改而变化的一项或多项文件属性或不随文件内容修改而变化的一项或多项文件属性,如图2所示,以下属性信息可以加入到文件头中文件类型用以检测文件是否是非本程序类型;文件名长度及文件名检测文件名有没有被修改;文件读写执行属性用以检测文件可读写属性的变化;文件头版本文件头可以根据需要而升级;文件中数据版本程序员可以根据需要而升级;数据长度文件数据有没有被修改过。
步骤2为了更加准确的判断文件是否被非法修改过,文件头中还可以包括文件数据部分的校验码和文件头部分的校验码,分别用来检测文件数据部分和文件头部分是否被非法修改过。
在进行校验码计算时,由程序员指定使用的校验码生成方法。如累计校验和方法、CRC(循环冗余校验)方法等。默认的校验码是累计校验和方法,程序员可以选择是否使用累计校验和方法或者CRC校验方法。当然也可以提供自己的校验方法。但是需要传入校验方法的函数指针。例如Asvoid GetlongCheckSum(void*pBuf,unsigned long Len,unsignedlong*pCheckSum);声明类型是typedef void Func Type_CheckSum(void*,unsigned long,unsigned long*);参数1表示需要算校验和的buf指针,参数2表示需要算校验和的字节长度,参数3是校验和结果。程序员可以使用下面的函数,从而实现文件头不包括校验码void GetlongCheckSum(void*pBuf,unsigned long Len,unsigned long*pCheckSum){pCheckSum=0;}。
在进行校验计算时,由于文件数据部分的校验码是文件头的一部分,应先算出文件数据部分的校验码,然后再算文件头部分的校验码。
当文件头中的信息添加完后,将文件头作为文件的一部分同文件一起保存。这样,不管在哪个操作系统平台下,都能够获取该文件头的信息。
步骤3文件保存后,还可以指定是否对文件进行加密。加密方法可以用E1、E2加密方法,也可以根据公共的接口,扩展、使用自己的加密方法。加密完成后,可以对该文件进行压缩,缩小文件占用的存储空间,也作为文件保密的一种手段。压缩可以使用常用压缩方法,当然,程序员也可以扩展自己的压缩方法。
步骤4程序员再次打开该文件时,如果想检测该文件是否被非法修改过,若文件经过了加密和压缩的话,先是解压缩和解密。打开文件的解压缩、解密方法必须和原先的压缩方法和加密方法对应,否则无法打开该文件。
步骤5获取文件头中保存的文件属性信息和文件的当前属性信息。实现获取文件头中的属性信息的时候,应使用strict ANSI C/C++、Use the iostreamlibrary from the ANSI Standard C++library、Use the Standard template library fromthe ANSI Standard C++library(严格的美国国家标准化组织提供的标准化C++语法、标准输入输出流函数库、标准模板库),否则是不能实现跨平台目的的。例如使用int_cdecl stat(const char*,struct stat*);获取文件属性。
若该文件头中包括校验码,则打开文件时还应该指定曾使用过的校验码方法,分别算出文件数据部分校验码和文件头部分校验码。
步骤6然后将文件的当前属性信息和计算出的校验码同文件头中记载的历史属性信息一一进行比较,如果比较结果一致,则判定文件没有被修改过,否则,报告文件已经被修改。
当然,程序员本人如果需要修改文件,在完成文件内容的修改后,需要重新生成文件头信息。
以下是1.0版本文件C++文件头程序结构举例struct S_T2100_BCKUP_FILE_HEAD{unsigned chara_ucMagicSign[16];unsigned longulHeadChecksum;unsigned longulFileVer;unsigned longulDateLen;unsigned longulDataChecksum;unsigned longulFileAttrib;unsigned short usHeadVer;unsigned short usFileNameLen;unsigned charucReserved[12];}通过本发明的方法,可以在不同平台系统中准确检测出文件是否被非法修改过,从而确保文件在跨平台中的稳定、安全。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
1.一种文件安全检测方法,其特征在于包括以下步骤A给文件添加文件头,将文件的属性信息加入该文件头中并随文件保存;B系统打开文件时,读取文件头中保存的属性信息,同该文件的当前属性信息进行比较,如果一致,则报告当前文件未被修改;否则,报告文件已被修改。
2.如权利要求1所述的方法,其特征在于所述属性信息包括随文件内容修改而变化的一项或多项文件属性。
3.如权利要求2所述的方法,其特征在于所述属性信息还包括不随文件内容修改而变化的一项或多项文件属性。
4.如权利要求1所述的方法,其特征在于所述步骤B中读取文件头中保存的属性信息是通过标准的文件读取函数来实现的。
5.如权利要求1所述的方法,其特征在于还在所述文件头中加入与文件属性和/或文件内容相关的校验码。
6.如权利要求5所述的方法,其特征在于在文件头中加入校验码包括如下步骤a对文件数据部分进行计算得出数据部分校验码,加入到文件头中;b对加入了数据部分校验码的文件头中内容进行计算,得出文件头部分的校验码,加入到文件头中。
7.如权利要求6所述的方法,其特征在于系统打开文件时,使用与生成校验码所采用方法相对应的方法计算出当前文件的校验码,并同文件头中保存的校验码进行比较。
8.如权利要求6所述的方法,其特征在于所述校验码生成方法为累计校验和方法或循环冗余校验方法。
9.如权利要求1所述的方法,其特征在于还包括在文件保存后进行加密的步骤;系统打开该文件时,进行相应的解密操作。
10.如权利要求9所述的方法,其特征在于还包括对加密文件进行压缩的步骤;系统打开该文件时,进行相应的解压缩操作。
全文摘要
本发明公开了一种文件安全检测方法,包括步骤给文件添加文件头,将文件的属性信息加入该文件头中并随文件保存;系统打开文件时,读取文件头中保存的属性信息,同该文件的当前属性信息进行比较,如果一致,则报告当前文件未被修改;否则,报告文件已被修改。运用本发明的方法,可以在不同平台系统中准确检测出文件是否被非法修改过,确保文件稳定、安全。
文档编号G06F1/00GK1770051SQ20041009200
公开日2006年5月10日 申请日期2004年11月4日 优先权日2004年11月4日
发明者潘峰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1