发明内容
本发明的目的在于设计一种智能卡安全文件系统的生成方法,提高数据存储器的利用率,在改善文件系统的健壮性、可扩展性和可操控性的同时,构建同层目录之间、同层文件之间,以及不同层目录与文件之间的“防火墙”功能,适应智能卡各种大小数据存储器空间需求,满足不同具体应用要求的智能卡操作系统中的文件系统功能。
本发明采用以下技术方案:
一种智能卡安全文件系统的生成方法,包括如下步骤:
步骤1,智能卡接收到预初始化命令,对智能卡数据存储器区域进行初始化检验,并根据命令中的参数决定创建目录控制项和文件控制项的数量;
步骤2,创建相应数量的空的目录控制项和空的文件控制项,构建起各自独立的空目录控制项链表和空文件控制项链表;所述空目录控制项链表和空文件控制项链表为一维顺序的空目录控制项链表和空文件控制项链表,空目录控制项链表和空文件控制项链表各自独立;
步骤3,在空目录控制项链表和空文件控制项链表的基础上,创建目录和文件,构建目录与目录之间的隶属关系,以及文件从属于目录的关系,构建具体应用的目录控制项链表和文件控制项链表;根据具体应用要求创建目录和文件,本发明可适用不同的智能卡安全文件系统;
步骤4,进行相应的目录与文件的选择与删除操作。
作为优选,所述目录控制项包括目录控制项首地址(DCFA)、目录标识符(DirID)、同级目录指针(PDP)、下级目录链首指针(NDLHP)、下级目录链尾指针(NDLTP)、目录剩余空间首地址(DRSHA)、文件链首指针(FLHP)、文件链尾指针(FLTP)、目录数据首地址(DDHA)、目录申请空间(DAS)、目录其他控制参数(DOCP)和CRC校验码。
作为优选,所述目录标识符由2字节组成,同级目录中目录标识符和目录其他控制参数中的目录名是唯一的;同级目录指针指向同级目录的目录控制项首地址构成同级目录控制项的前后关系;下级目录链首指针和链尾指针分别指向本目录第一个和最后一个子目录控制项的首地址,同级目录指针、下级目录链首指针和链尾指针共同构成本目录的子目录控制项链表;文件链首指针和链尾指针分别指向本目录下第一个和最后一个文件的文件控制项首地址,文件链首指针、文件链尾指针与文件控制项中的文件链指针共同构成本目录下文件控制项链表;目录申请空间为本目录下所有文件数据存储空间之和,目录剩余空间首地址为已分配给创建文件和目录后还余下的文件数据存储空间首地址,目录创建时目录剩余空间首地址等于目录数据首地址。
上述各指针和地址根据存储器寻址方式和智能卡性能确定其长度;其他控制参数包括目录名长度、目录名、目录创建权限、目录删除权限、目录访问权限和目录创建时间等,根据目录的具体应用需要确定其参数数量和各参数的长度。
作为优选,所述文件控制项包括文件控制项首地址(FCFA)、文件标识符(FID)、文件链指针(FLP)、文件类型(FT)、文件数据首地址(FDFA)、文件存储空间(FSS)、读操作权限(RP)、写操作权限(WP)、文件其他控制参数(FOCP)和CRC码;所述文件标识符为文件名,由2字节组成,它是查找文件的唯一参数,同一目录下的文件标识符不能相同;文件链指针指向本目录下的下一个文件控制项首地址,构成本目录下所有文件控制项的前后关系;文件数据首地址指向本文件数据在数据存储空间的第一个字节地址,也是文件访问智能卡数据存储器的上界;文件存储空间定义了文件需要存储的数据量,与文件数据首地址结合规定了文件访问智能卡数据存储器的下界;文件类型规定文件存储数据的结构。
读操作权限和写操作权限规定对文件数据进行读写操作时,智能卡操作系统所处的安全状态。其他控制参数根据文件功能与类型不同进行定义,如记录数、记录号、记录指针、删除权限、终止权限、记录长度、创建时间、最后修改时间等。
作为优选,所述目录的创建方法为:
第一步,接收创建目录命令,检测相关参数和命令序列是否符合规定,若创建命令不符合规定,则禁止创建目录,否则执行下一步;
第二步,从当前目录的下级目录链首指针指示的目录控制项开始,到下级目录链尾指针指示的目录控制项为止,查找所要创建的目录标识符或目录名是否存在,若存在则创建目录终止,否则执行下一步;
第三步,从目录控制项链表首地址开始,依次查找第一个出现的空目录控制项,若目录控制项链表中无空控制项,则禁止创建目录,否则待创建的新目录控制项存在,执行下一步;
第四步,判断当前目录数据首地址加当前目录申请空间是否大于或等于当前目录剩余空间首地址加新目录申请空间,即DDHA+DSA
≥DRSHA+XDSA,若判断结果为假,则说明当前目录剩余空间小于创建目录的申请空间,禁止创建目录,否则执行下一步;
第五步,新目录中的目录数据首地址等于当前目录控制项中目录剩余空间首地址,即XDDHA
= DRSHA,修改当前目录的剩余地址空间,即DRSHA = DRSHA+XDAS;
第六步,判断当前目录下级目录链表指针是否为空,若为空则创建的子目录为该目录下的第一个子目录,当前下级目录链首指针和尾指针均指向新目录控制项首地址,即NDLHP=XDCFA
、NDLTP=XDCFA;若不为空,则下级目录链尾指针指向的目录控制项中的同级目录指针指向新目录控制项首地址,然后下级目录链尾指针指向新目录控制项首地址,即NDLTP→PDP=XDCFA,NDLTP=XDCFA;
第七步,新目录控制项依据创建命令写入其他相关参数,并使新建目录控制项与数据存储空间绑定在一起;
第八步,修改过目录控制项参数的各控制项重新计算CRC码,并覆盖原有对应控制项,目录创建结束。
作为优选,所述文件控制项的创建方法具体为:
第一步,接收创建文件命令,检测相关参数和命令序列是否符合相关规定,若创建命令不符合相关规定,则禁止创建文件,否则执行下一步;
第二步,从当前目录的文件链首指针指示的文件控制项开始,到文件链尾指针指示的文件控制项为止,查找所要创建的文件标识符是否存在,若存在则创建文件终止,否则执行下一步;
第三步,从文件控制项链表首地址开始,依次查找第一个出现的空文件控制项,若文件控制项链表中无空文件控制项,则禁止创建文件,否则,新文件控制项存在,执行下一步;
第四步,判断本目录控制项中目录数据首地址加上目录申请空间是否大于等于目录剩余空间首地址加上新文件的文件存储空间,即DDHA+DAS≥DRSHA+XFSS,若前述判断为假,则当前目录剩余地址空间小于新创建文件的文件存储空间,禁止创建文件,否则执行下一步;
第五步,新文件控制项中的文件数据首地址等于目录控制项中的目录剩余空间首地址,即XFDFA=DRSHA,修改当前目录的目录剩余地址空间,即DRSHA = DRSHA +XFSS;
第六步,判断当前目录文件链尾指针是否为空,若为空则创建的文件为该目录下的第一个文件,当前目录文件链首指针和链尾指针均指向新文件控制项首地址,即FLHP=XFCFA、FLTP=XFCFA;若不为空,则文件链尾指针指示的文件控制项中的文件链指针指向新文件控制项首地址,然后文件链尾指针也指向新文件控制项首地址,即FLTP→FLP=XFCFA、FLTP=XFCFA;
第七步,新文件控制项依据创建命令写入相关参数,并使新建文件控制项与数据存储器空间绑定在一起;
第八步,当前目录控制项和修改参数的各文件控制项重新计算CRC码,并覆盖原有对应控制项,文件创建正常结束。
作为优选,目录的选择方法为:
根目录选择采用默认方式,第一个目录控制项中存放根目录的相关信息,且为文件系统的根;除根目录外,任何一个目录一定是另一个目录的子目录或同级目录,任何一个文件一定是某一目录下的文件,根据目录与目录的相互隶属关系,采用目录标识符或者目录名,从当前目录控制项的NDLHP指针指向的目录控制项开始,到NDLTP指针指向的目录控制项终止,在其目录链表中查找相同目录标识符或者目录名;若查找到相同目录标识符或者目录名,则被选择的目录存在,将选中目录控制项中的各参数作为目录访问条件,且该目录成为当前目录,否则所要选择的目录不存在于当前目录的子目录中。
作为优选,文件的选择方法具体为:
当选择某一目录后,则可进行相应的文件选择;以当前目录控制项中文件链首指针开始,到文件链尾指针终止,依次将各文件控制项中的文件标识符与选择文件命令中给出的文件标识符相比较,若相等则所要选择的文件存在并选中该文件,将文件控制项中的相关控制参数作为文件访问控制条件,否则所要选择的文件不存在于当前目录下。
作为优选,目录的删除方法具体为:
第一步,选择要删除的目录,并判断该目录是否包含下级目录或是否为同层目录的最后一个目录,若不是则禁止执行删除目录操作,否则执行下一步;
第二步,依据文件链首指针和文件链尾指针,依次修改各文件控制块为空,即将文件控制项中除文件控制项首地址外其余各控制参数设置为FFH,并重新计算CRC校验码;
第三步,以目录控制块中目录数据首地址为起始地址,对偏移量为目录申请空间大小的数据存储区执行擦除操作,擦除该目录下所有文件存储的数据;
第四步,释放该目录申请的数据存储空间,即将该目录申请的存储器空间(SDAS)释放给父目录的目录剩余空间首地址(PDRSHA),即PDRSHA=PDRSHA-
SDAS;
第五步,释放子目录控制项和文件控制项,依据下级目录链首指针和下级目录链尾指针,将下级目录链尾指针指向被删除目录的上一个目录控制项首地址,且上个目录的同级目录设置为空,即NDLTP
=被删除子目录的上一个DCFA,NDLTP→PDP=空;同时将删除目录的控制项除DCFA外其余各参数设置为FFH,并重新计算所有修改过参数的目录控制项的CRC校验码,至此,该目录删除完毕。
作为优选,文件删除方法具体为:
第一步,选择要删除的文件,并判断该文件是该目录的最后一个文件,若不是则禁止执行删除文件操作,否则执行下一步;
第二步,释放文件占用的数据存储空间,以文件控制项中文件首地址为起始地址,文件存储空间为偏移量,对文件存储的数据存储空间进行擦除操作,并将文件存储空间释放到目录的剩余空间地址中,即DRSHA=DRSHA
- 删除文件的FSS;
第三步,释放文件控制项,依据目录控制项中文件链首指针和文件链尾指针,修改文件链尾指针指向被删除文件的上一个文件控制项,同时上一个文件控制项中的文件链指针设置为空,即FLTP=被删除文件的上一个文件控制项首地址,TLTP→FLP=空;被删除文件的文件控制项除FCFA外其余各参数设置为FFH,所有修改过的目录控制项和文件控制项重新计算CRC校验码,至此,目录下最后一个文件删除完成。
本发明具有如下积极效果:
本发明实现了满足智能卡文件系统不同应用功能管理需求,且灵活构建多级目录与任意数量文件的前提下,增强智能卡文件系统的安全性和提高智能卡数据存储器的利用率。
本发明通过集中动态设置目录控制项和文件控制项的参数,在数据存储器空间允许的前提下能满足智能卡多级目录隶属关系和任意文件数量的需要,提高了文件系统的安全性、灵活性、可扩展性和可操控性,便于文件系统控制参数的备份。文件数据存储空间的管理粒度以智能卡CPU的字长为最小单位,改善了文件系统的查找与读写速度,提高了数据存储器的利用率,同时构建起不同应用之间、各文件之间的“防火墙”功能,能有效抵御存储器溢出攻击对文件系统安全性的威胁。
具体实施方式
如图1所示,目录控制项由目录控制项首地址(DCFA)、目录标识符(DirID)、同级目录指针(PDP)、下级目录链首指针(NDLHP)、下级目录链尾指针(NDLTP)、目录剩余空间首地址(DRSHA)、文件链首指针(FLHP)、文件链尾指针(FLTP)、目录数据首地址(DDHA)、目录申请空间(DAS)、目录其他控制参数(DOCP)和CRC校验码组成。
目录标识符由2字节组成,根目录标识符规定为3F00,目录标识符是查找目录是否存在的参数之一,每个目录必须有一个目录标识符,且同级目录的目录标识符不能相同。同级目录指针指向同级目录的目录控制项,当该指针为空时表明该目录控制项是同级目录控制链中最后一个,因此,根目录的目录控制项中同级目录指针永远为空。下级目录链首指针指向该目录的第一个下级目录控制项的首地址,该指针为空时,表明该目录没有下级目录。下级目录链尾指针指向本目录最后一个下级目录控制项的首地址,下级目录链尾指针指向的目录控制项中的同级目录指针一定为空。文件链首指针指向本目录下第一个文件的文件控制项首地址,文件链尾指针指向本目录下最后一个文件的文件控制项首地址,目录申请空间为本目录下所有文件数据存储空间之和,目录剩余空间首地址为已分配给创建文件和目录后还余下的文件数据存储区首地址,该目录在未创建任何目录和文件时,目录剩余空间首地址等于目录数据首地址(DRSHA=DDHA),目录下第一个文件控制项中的文件数据首地址为该文件数据在数据存储空间首地址,也是本目录的目录数据首地址,上述指针和地址根据存储器寻址方式和智能卡性能确定其长度。其他控制参数包括目录名长度和目录名、目录创建权限、目录删除权限、目录访问权限、目录创建时间等,根据目录的具体应用需要确定其参数数量和各参数的长度,2字节的CRC校验码是对目录控制项前面所有字节运算得到的校验码。
如图2所示,文件控制项由文件控制项首地址(FCFA)、文件标识符(FID)、文件链指针(FLP)、文件类型(FT)、文件数据首地址(FDFA)、文件存储空间(FSS)、读操作权限(RP)、写操作权限(WP)、文件其他控制参数(FOCP)和CRC码组成。其中,文件标识符由2字节组成,它是查找文件的唯一参数即文件名,同一目录下的文件标识符不能相同。文件链指针指向本目录下的下一个文件控制项首地址,构成本目录下所有文件控制项的前后关系。文件数据首地址指向本文件数据在数据存储空间的第一个字节地址,也是文件访问智能卡数据存储器的上界。文件存储空间定义了文件需要存储的数据量,与文件数据首地址结合规定了文件访问智能卡数据存储器的下界,文件访问智能卡数据存储器的上界与下界共同构成了同层文件之间数据访问的“防火墙”。文件类型规定文件存储数据的结构,一般有二进制文件、定长记录文件、变长记录文件、循环文件、密钥文件等类型。读操作权限和写操作权限规定对文件数据进行读写操作时,智能卡操作系统所处的安全状态。其他控制参数根据文件功能与类型不同进行定义,如记录数、记录号、记录指针、删除权限、终止权限、记录长度、创建时间、最后修改时间等。2字节的CRC校验码是对文件控制项前面所有字节运算得到的校验码。
本发明基于目录控制项和文件控制项,通过构建目录与目录之间的隶属关系以及文件从属于目录的方法,完成智能卡操作系统中文件系统组织与管理。卡预初始化时,根据目录数量和文件数量,在文件控制区创建相应数量的目录控制项表和文件控制项表,为创建具体应用的目录控制链表和相应的文件控制链表做准备,同时也是构建目录与目录之间、目录与文件之间隶属关系的基础。
如图3所示,文件隶属于目录,目录控制项中的文件链首指针和链尾指针分别指向本目录下第一个文件和最后一个文件的文件控制项首地址,而隶属于该目录的所有文件控制项通过第一个文件控制项的文件链指针依次指向下一个文件的文件控制项首地址。因而,通过目录控制项中的文件链首指针、文件链尾指针与文件控制项中的文件链指针,将目录下的所有文件链接在一起,即通过目录控制项和该目录下的文件控制项,能定位该目录下的每一个文件,而实现对指定文件的快速查找。文件控制项通过文件数据首地址和文件存储空间两个参数与智能卡的数据存储器地址相关联,这两个参数唯一确定了某文件数据在智能卡数据存储中的起始地址和存储空间大小,也构成了文件与文件之间数据访问控制的“防火墙”。
在目录下创建文件时,首先判断目录下没有同名文件存在并查找到一个空的文件控制项,然后判断目录剩余空间能否满足文件数据存储空间的需要,若目录剩余空间小于文件数据存储空间,则禁止该目录下本次文件的创建;否则,在该目录下创建一个文件,若创建的文件为该目录的第一个文件,则目录控制项中的文件链首指针和文件链尾指针同时指向文件控制项的首地址,其他文件创建时文件链尾指针指向的文件控制项的文件链指针指向创建文件控制项首地址,然后文件链尾指针指向创建文件控制项的首地址;文件数据首地址等于目录剩余空间首地址,同时将目录控制项中的目录剩余空间首地址加上文件存储空间,形成创建新的下一个文件时的目录数据存储空间首地址,即DRSHA=DRSHA+FSS,也是判断是否满足下一个文件数据存储空间的参数之一。将更新后的目录控制项和新组建的文件控制项写回到原来对应控制项存储区,目录下的一个文件创建完成。
如图4所示,目录控制项链表构建了智能卡操作系统中根目录(MF)下各级目录之间的隶属关系,根目录没有同级目录只有下级目录,根目录下的任何一个目录都可有同级目录和下级目录,某一目录若有同级目录,则该目录的同级目录指针指向同级目录控制项的首地址,同级目录指针构成的链表即为该目录的全部同级目录。某一目录若有下级目录,则该目录的下级目录链首指针和链尾指针分别指向本目录下第一个和最后一个目录控制项的首地址,下级目录链首指针、链尾指针和下级目录各控制项中的同级目录指针共同构成的链表即为该目录的全部下级目录。且目录控制项中的目录数据首地址和目录申请空间规定了目录下所有文件数据在智能卡数据存储中的起始地址和存储空间,限制了整个目录下所有文件数据存储空间的大小,也构成了目录与目录之间、目录与不同目录文件之间数据访问控制的“防火墙”。而各目录下的基本工作文件则如图3所示构成相应文件控制项链表,若目录下无任何基本工作文件和子目录,则该目录为空目录,此种情况一般只存在于文件系统初始化创建期间。
在当前目录下创建第一个子目录时,首先判断目录下没有同目录标识符的目录存在并查找空目录控制项,将下级目录链首指针和下级目录链尾指针都指向该目录控制项,然后将当前目录控制项和新建目录控制项中的其它参数依据创建目录规则填写相应控制参数,最后将当前目录控制项和新建目录控制相关参数覆盖原有控制参数即可。则该目录控制项即为当前目录下所创建的子目录,并且当前目录所创建的其它目录均为当前目录的子目录,而所创建的各子目录之间均互为同级目录,因此创建第二个当前目录的下级目录时,将当前目录的下级目录链尾指针指向的目录控制项的同级目录指针和当前目录的下级目录链尾指针都指向新创建的空目录控制项首地址,其它工作流程与创建第一个目录工作流程相同。
本发明包括如下步骤:
步骤1,智能卡接收到预初始化命令,对智能卡数据存储器区域进行初始化检验,并根据命令中的参数决定创建目录控制项和文件控制项的数量;
步骤2,创建相应数量的空的目录控制项和空的文件控制项,构建起各自独立的一维顺序空目录控制项链表和一维顺序空文件控制项链表;
步骤3,在空目录控制项链表和空文件控制项链表的基础上,根据具体应用要求创建目录和文件,构建目录与目录之间的隶属关系,以及文件从属于目录的关系,构建具体应用的目录控制项链表和文件控制项链表;
步骤4,进行相应的目录与文件的选择与删除操作。
(1)、目录控制项和文件控制项的建立方法
创建如图1、图2所示的目录控制项和文件控制项时,智能卡首先接收相应的卡预初始化命令,对卡中数据存储器区域进行初始化检验,即将整个数据存储区进行擦除和正确性检查。然后根据命令中的参数决定创建目录控制项和文件控制项的数量,创建相应数量的空目录控制项和空文件控制项,构建起一维顺序空目录控制项链表和一维顺序空文件控制项链表。
一个目录控制项占用64个字节,空目录项中的目录控制项首地址填写该目录控制项在智能卡数据存储器中的首地址,目录控制项中的其余参数设置成全FFH,并计算得到相应的CRC校验码。一个文件控制项占用32字节,空文件控制项中的文件控制项首地址填写该文件控制项在智能卡数据存储器中的首地址,文件控制项中的其余参数设置成全FFH,并计算得到相应的CRC校验码。可依据实际控制项中参数的多少来决定各控制项的长度,并将智能卡中的数据存储区划分成文件管理参数区、目录与文件控制项区和文件数据存储区;最后在文件管理参数区记录第一个目录控制项首地址、第一个文件控制项首地址、文件数据存储区首地址、文件数据存储区的首地址和存储容量、目录控制项的数量和文件控制项的数量等相关控制参数,至此,空的一维顺序目录控制项链表和空的一维文件控制项链表创建完成。
(2)、目录和文件的创建方法
创建目录时必须先创建根目录,然后在根目录下创建相关应用目录和基本工作文件。为了减少删除文件与目录管理开销,规定当前目录的所有基本工作文件创建完成后,才能开始创建当前目录下的子目录,即基本工件文件的存储空间在所有子目录之前。创建目录时通过创建目录命令得到相应控制参数,如目录标识符、目录申请空间、目录名、其它控制参数等,为描述清晰,待创建的目录与文件控制项称为新目录控制项和新文件控制项,新目录和新文件控制项中各参数前加“X”,目录创建过程如下:
第一步,接收创建目录命令,检测相关参数和命令序列是否符合相关规定,若创建命令序列不满足相关规定,则禁止创建目录,否则执行下一步。
第二步,从当前目录的下级目录链首指针指示的目录控制项开始,到下级目录链尾指针指示的目录控制项为止,查找所要创建的目录标识符或目录名是否存在,若存在则创建目录终止,否则执行下一步。
第三步,从目录控制项链表首地址开始,依次查找第一个出现的空目录控制项,若目录控制项链表中无空控制项,则禁止创建目录,否则待创建的新目录控制项存在,执行下一步。
第四步,判断当前目录数据首地址加当前目录申请空间是否大于或等于当前目录剩余空间首地址加新目录申请空间,即DDHA+DSA
≥DRSHA+XDSA,若判断结果为假,则说明当前目录剩余空间小于创建目录的申请空间,禁止创建目录,否则执行下一步。
第五步,新目录中的目录数据首地址等于当前目录控制项中目录剩余空间首地址,即XDDHA = DRSHA,修改当前目录的剩余地址空间,即DRSHA = DRSHA+XDAS。
第六步,判断当前目录下级目录链表指针是否为空,若为空则创建的子目录为该目录下的第一个子目录,当前下级目录链首指针和尾指针均指向新目录控制项首地址,即NDLHP=XDCFA
、NDLTP=XDCFA;若不为空,则下级目录链尾指针指向的目录控制项中的同级目录指针指向新目录控制项首地址,然后下级目录链尾指针指向新目录控制项首地址,即NDLTP→PDP=XDCFA,NDLTP=XDCFA。
第七步,新目录控制项依据创建命令写入其他相关参数,并使新建目录控制项与数据存储空间绑定在一起。
第八步,修改过目录控制项参数的各控制项重新计算CRC码,并覆盖原有对应控制项,目录创建正常结束。
文件必须创建在某一存在的目录下,创建文件时通过创建文件命令得到相应控制参数,如文件标识符、文件申请空间、读权限、写权限、其它控制参数等,其文件创建过程如下:
第一步,接收创建文件命令,检测相关参数和命令序列是否符合相关规定,若创建命令序列不满足相关规定,则禁止创建文件,否则执行下一步。
第二步,从当前目录的文件链首指针指示的文件控制项开始,到文件链尾指针指示的文件控制项为止,查找所要创建的文件标识符是否存在,若存在则创建文件终止,否则执行下一步。
第三步,从文件控制项链表首地址开始,依次查找第一个出现的空文件控制项,若文件控制项链表中无空控制项,则禁止创建文件,否则,新文件控制项存在,执行下一步。
第四步,判断本目录控制项中目录数据首地址加上目录申请空间是否大于等于目录剩余空间首地址加上新文件的文件存储空间,即DDHA+DAS≥DRSHA+XFSS,若前述判断为假,则当前目录剩余地址空间小于新创建文件的文件存储空间,禁止创建文件,否则执行下一步。
第五步,新文件控制项中的文件数据首地址等于目录控制项中的目录剩余空间首地址,即XFDFA=DRSHA,修改当前目录的目录剩余地址空间,即DRSHA = DRSHA +XFSS。
第六步,判断当前目录文件链尾指针是否为空,若为空则创建的文件为该目录下的第一个文件,当前目录文件链首指针和链尾指针均指向新文件控制项首地址,即FLHP=XFCFA、FLTP=XFCFA;若不为空,则文件链尾指针指示的文件控制项中的文件链指针指向新文件控制项首地址,然后文件链尾指针也指向新文件控制项首地址,即FLTP→FLP=XFCFA、FLTP=XFCFA。
第七步,新文件控制项依据创建命令写入相关参数,并使新建文件控制项与数据存储器空间绑定在一起。
第八步,当前目录控制项和修改参数的各文件控制项重新计算CRC码,并覆盖原有对应控制项,文件创建正常结束。
(3)、目录与文件的访问与删除方法
根目录选择采用默认方式,第一个目录控制项中存放根目录的相关信息,且为文件系统的根。除根目录外,任何一个目录一定是另一个目录的子目录或同级目录,任何一个文件一定是某一目录下的文件,因此,根据目录与文件的相互隶属关系,采用目录标识符或者目录名,从当前目录控制项的NDLHP指针指向的目录控制项开始,到NDLTP指针指向的目录控制项终止,在其目录链表中查找相同目录标识符或者目录名;每条目录选择命令确定当前目录的下级目录链表中是否存在要选择的目录,若查找到相同目录标识符或者目录名,则选择的目录存在,将选中目录控制项中的各参数作为目录访问条件,且该目录成为当前目录,依据该方案能方便的确定当前目录下的所要选择的目录是否存在。
当选择某一目录后,则可进行相应的文件选择。以当前目录控制项中文件链首指针开始,到文件链尾指针终止,依次将各文件控制项中的文件标识符与选择文件命令中给出的文件标识符相比较,若相等则所要选择的文件存在并选中该文件,将文件控制项中的相关控制参数作为文件访问控制条件,只有满足访问控制条件时,才能对文件数据进行读出与写入操作。否则将禁止对文件数据进行读出与写入操作,以确保文件数据存储的安全性。上述文件选择方案能快速查找当前目录下所要选择文件是否存在,在查找各文件时与文件所存储的数据完全隔离,确保文件数据的存储安全。
为了以最小的管理开销实现目录与文件的删除功能,达到删除目录与文件后不进行存储空间的数据搬移,规定删除文件时只能在文件链表的尾端进行,删除目录下的子目录时也只能在目录链表的尾端进行。
目录删除时要同时删除该目录下的所有文件控制链表和该目录所申请的数据存储空间,其目录删除过程如下:
第一步,选择要删除的目录,并判断该目录是否包含下级目录或是否为同层目录的最后一个目录,若不是则禁止执行删除目录操作,否则执行下一步。
第二步,依据文件链首指针和文件链尾指针,依次修改各文件控制块为空,即将文件控制项中除文件控制项首地址外其余各控制参数设置为FFH,并重新计算CRC校验码。
第三步,以目录控制块中目录数据首地址为起始地址,对偏移量为目录申请空间大小的数据存储区执行擦除操作,擦除该目录下所有文件存储的数据。
第四步,释放该目录申请的数据存储空间,即将该目录申请的存储器空间(SDAS)释放给父目录的目录剩余空间首地址(PDRSHA),即PDRSHA=PDRSHA
- SDAS。
第五步,释放子目录控制项和文件控制项,依据下级目录链首指针和下级目录链尾指针,将下级目录链尾指针指向被删除目录的上一个目录控制项首地址,且上个目录的同级目录设置为空,即NDLTP
=被删除子目录的上一个DCFA,NDLTP→PDP=空;同时将删除目录的控制项除DCFA外其余各参数设置为FFH,并重新计算所有修改过参数的目录控制项的CRC校验码,至此,该目录删除完毕。
文件删除时要同时删除该文件所占用的数据存储空间和文件控制项,其文件删除过程如下:
第一步,选择要删除的文件,并判断该文件是该目录的最后一个文件,若不是则禁止执行删除文件操作,否则执行下一步。
第二步,释放文件占用的数据存储空间,以文件控制项中文件首地址为起始地址,文件存储空间为偏移量,对文件存储的数据存储空间进行擦除操作,并将文件存储空间释放到目录的剩余空间地址中,即DRSHA=DRSHA-删除文件的FSS。
第三步,释放文件控制项,依据目录控制项中文件链首指针和文件链尾指针,修改文件链尾指针指向被删除文件的上一个文件控制项,同时上一个文件控制项中的文件链指针设置为空,即FLTP=被删除文件的上一个文件控制项首地址,TLTP→FLP=空;被删除文件的文件控制项除FCFA外其余各参数设置为FFH,所有修改过的目录控制项和文件控制项重新计算CRC校验码,至此,目录下最后一个文件删除完成。
本发明在目录控制项中通过同级目录指针、下级目录链首指针和链尾指针构建不同隶属关系的目录控制项链表,通过目录控制项中的文件链首指针、文件链尾指针和文件控制项中的文件链指针构建本目录下所有工作文件的文件控制项链表,目录申请空间规定了本目录内所有文件数据访问的边界;在文件控制项中文件链指针指向同级目录工作文件的控制项首地址,文件数据首地址则指向该文件数据在智能卡数据存储器中的首地址,文件申请空间则表明该文件占用数据存储空间的大小,也是该文件访问控制的边界,即文件访问的上界为文件首地址,下界为文件首地址+文件申请存储空间,因而智能卡数据存储器的管理粒度最小为字节。通过目录控制项和文件控制项中的控制参数,构建起智能卡文件管理系统中上下级目录之间、同级目录之间、目录与文件之间、文件与文件之间的隶属关系,并将目录申请空间与各文件数据存储空间划分在数据存储区连续空间范围中,各文件控制项与数据存储器存在唯一的一种映射关系,从而可方便实现访问控制时的边界检测功能,有效防止存储器溢出攻击模式对文件系统的安全威胁,构建文件系统的逻辑访问映射到智能卡物理储存储器访问时各目录与目录之间、目录与文件之间、文件与文件之间的“防火墙”功能。
智能卡预初始化时,根据具体应用要求规划目录控制项和文件控制项数量,在数据存储区中动态开辟文件管理区,集中建立指定数量的目录控制项和文件控制项;控制项首地址存储该控制项在智能卡数据存储区的首地址,控制项中其余所有的指针、地址和相关参数设置成空即全FFH无效状态,该控制区属于智能卡内部控制管理区,外部命令不能对其进行任何操作,可方便对其进行备份,从而保护控制区的安全而增强文件系统的健壮性。
智能卡初始化时,根据具体应用需要创建相关应用目录和目录之间的隶属关系,为各应用目录申请该目录下所有文件数据存储空间,并制定该目录相关的访问控制规则,然后,在指定目录下创建工作文件,规定工作文件的类型、访问控制规则、与数据存储空间绑定在一起。至此,相对于某一具体应用的智能卡文件系统构建完成。
对智能卡工作文件进行操作前,需先选中该文件,选择文件从选择目录开始,智能卡的根目录为系统上电时默认选择目录,依据文件所在目录的隶属关系,依次选择相关目录,然后在指定目录下选择指定工作文件即可。目录选择时,依据目录标识符或者目录名,以根目录控制项的目录链首指针和链尾指针为查找的起始和终止地址,查找指定目录标识符或者目录名是否存在;若所选择的目录存在,则依据选择目录的安全控制机制构建该目录的访问控制策略则查找结束,否则给出目录不存在的错误码。依据目录的隶属关系,能遍历其整个文件系统查找指定目录。找到指定目录后,依据文件标识符从目录控制项中的文件链首指针开始,依次查找该目录文件链下的各文件控制项,若找到指定文件标识符则将该文件控制参数作为智能卡当前的工作文件控制参数,构建起该文件的访问控制策略,为文件的访问控制做好了准备,选择文件正常结束。若查找到文件链尾指针仍未找到指定文件标识符,则返回文件不存在的错误码。
对文件进行读写操作时,首先应根据文件访问控制规则,检测相关安全状态是否满足文件访问控制要求,其次检测读写操作的空间是否超越文件数据存储空间的上下边界,在满足上述安全要求和其他规定的前提下,可将待存储的文件数据写入到文件数据存储区,或者从文件数据存储空间读出指定的相关数据。
本发明包括目录控制项和文件控制项的建立、目录和文件的创建,即目录控制链表和文件控制链表的创建、目录与文件的查找与删除操作等方法。本发明所指的高效安全的文件系统应用于智能卡操作系统中,在我国有极其广泛的应用,如银行IC卡、社会保障卡、SIM卡、市民卡、身份证、居民健康卡等智能卡操作系统中,是智能卡操作系统的核心功能之一。