首页> 中国专利> 使用密码函数的计算机程序的自动证实装置及方法

使用密码函数的计算机程序的自动证实装置及方法

摘要

所述计算机程序的自动证实方法可存取一安全存储器及一非安全存储器,所述程序使用有至少一编码函数及至少一解码函数,它包括一验证步骤(E340),在所述验证步骤中验证:可从安全存储器读取数据并在非安全存储器中生成数据的任何函数为一编码函数;及由解码函数产生的任何数据存储在安全存储器中。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2007-09-19

    授权

    授权

  • 2005-09-14

    实质审查的生效

    实质审查的生效

  • 2005-07-20

    公开

    公开

说明书

技术领域

本发明涉及一计算机程序的自动证实(确认)装置及方法。

本发明尤其涉及可存取一安全存储器和一非安全存储器的计算机程序的自动证实方法,所述程序使用了至少一编码函数及至少一解码函数。

有利但非限制性地,本发明可应用于微电路卡的个人化。

背景技术

已知微电路卡个人化包括涉及敏感数据的处理步骤,即希望保护秘密数据不受任何侵入。

例如,所述处理包括以下各连续操作:

——接收编码输入数据;

——用安全密钥解码所述编码数据,所述解码操作的结果产生第一敏感数据;

——对所述第一敏感数据进行逻辑操作,例如移位,并获得第二敏感数据;及

——使用第二安全密钥对第二敏感数据编码。

在微电路卡个人化领域中,已知用于实施这类处理的不同解决方法,所述处理保护在处理过程中获得的敏感数据不受任何侵盗。

已知的第一种解决方法在于生产一种所谓“根卡(carte racine)”的专用微电路卡,以实施上述不同操作。

事实上,使用这样确定的根卡,可实现绝对安全,数据处理时,所述数据被临时存储在微电路卡的内部安全内存储器中。

但不幸地是,根卡只能实施预设处理。

这即意味着,要进行一新处理,必须开发用于所述处理的专用的卡掩码,这既需成本,开发时间也不容忽视。

为弥补所述缺陷,已知微电路卡个人化领域内的技术人员有时会采用安全平台,所述安全平台可对敏感数据进行不同类型的处理。

这类平台可由安全信息系统或特殊电子卡构成。

在此情况下,实施特别处理包括软件规范及开发的第一步骤,所述软件可实施所述处理的不同操作,并考虑到这些安全平台本身的特点。

在第二步骤中,这样开发的软件由所述平台的专家进行手工验证,专家验证是否在所述特别处理中,任何带有不良企图的第三者均无法存取到任何敏感数据。

尽管根卡可应用在众多领域中,但所述第二种解决办法还必需相对较长的开发时间,尤其因为程序的手工验证步骤必须由专门公司执行。

发明内容

本发明可解决上述问题。

本发明的目的尤其涉及可存取一安全存储器及一非安全存储器的计算机程序的自动证实方法,所述程序使用有至少一编码函数及至少一解码函数;所述证实方法包括一验证步骤,在所述验证步骤中验证:

——适合于从安全存储器读取数据并在非安全存储器中生成数据的任何函数为一编码函数;及

——由解码函数产生的任何数据被存储在安全存储器中。

在下文中,区分“安全存储器”即只有实施所述证实方法的验证器程序才可存取的存储器,与“非安全存储器”即尤其所述验证器程序的使用者或其它计算机程序可存取的存储器。

在第一实施方式中,所述安全及非安全存储器为分别对应不同物理元件的不同物理存储器。

在一最佳实施方式中,安全及非安全存储器为同一物理元件的不同寄存器区域,对所述存储器存取的管理及控制由本领域技术人员已知的软件加以保证,例如安全操作系统提供的底层存储器管理功能。

所述证实方法尤其具有优越性,因为和现有技术中的根卡及安全平台正相反,它可验证使用加密函数的任何计算机程序。

它尤其验证:适合于从安全存储器读取数据并在非安全存储器中生成数据的任何函数为一编码函数,这可保证只有编码数据被所述验证器程序的使用者或其它计算机程序存取。

根据本发明的证实方法还验证解码函数产生的任何数据,尤其是所有敏感数据,是否储存在安全存储器中。

根据第一特征,计算机程序还使用至少一非密码函数,所述函数在一逻辑函数、一随机数产生函数或一完整性控制函数中选择。

因此,证实方法可证实使用编码、解码函数及非密码函数的任何类型程序。

根据本发明的一最佳特征,计算机程序为源代码型,所述方法在验证步骤之前,预先包括把所述源代码编译为二进制脚本的一步骤,验证步骤根据这样产生的二进制脚本实施。

所述最佳实施方式可达到一辅助安全级别,因为它禁止了任何在验证步骤后对源代码进行的篡改。

例如,计算机程序为一敏感数据生成程序。

在一最佳实施方式中,计算机程序为一敏感数据转换程序。例如,它在入口处接收第一敏感数据如安全密钥,再对所述第一敏感数据进行解码操作及逻辑操作,编码后提供其它敏感数据如密码。

根据另一特别有利的特征,计算机程序使用的各函数与至少一操作模式相关,所述操作模式确定存取安全存储器和非安全存储器的至少一条规则,操作模式存储在验证步骤中使用的验证表中。

所述操作模式,当在进行特别处理的规范及开发步骤时,由程序员使用。

根据本发明,所述规则,尤其是把将产生的数据存储在安全存储器中强加到所有解码函数上。

在一最佳实施方式中,证实方法还包括:

——分配安全存储器及非安全存储器的分配步骤;

——一把二进制脚本的验证器程序载入工作存储器中的步骤,验证器程序可实施验证步骤;及

——把二进制脚本载入工作存储器里的一步骤。

所述不同步骤由一主程序实施,所述主程序因此确定了验证器程序为验证二进制脚本所使用的存储器环境。

因此,它不仅可应用在微电路卡个人化领域中,还可应用在多个领域中,如电信服务器中的电子商务。

本发明还提供一程序编译器,所述编译器实施前面清楚描述过的证实方法。

有利地是,所述程序编译器可在微电路卡个人化的软件链中使用。

本发明还提供了可存取一安全存储器和一非安全存储器的计算机程序的运行方法,所述程序使用至少一编码函数及至少一解码函数。

执行各函数前,根据本发明的运行方法实施前面简单描述过的一验证步骤。

根据所述运行方法,在执行程序的各函数之前,需验证所述函数是否可根据前面简要描述的验证步骤确保敏感数据的安全。

所述运行方法特别可靠,因为它禁止了在验证和函数操作之间任何篡改二进制脚本的可能。

显然,它还可应用在微电路卡个人化领域中。

更广泛地讲,它可实施来转换或产生敏感数据,例如电信领域中,以在电信服务器里产生密钥。

根据另一特征,本发明涉及一集成电路,所述集成电路可实施前面简要所述的证实方法或操作方法。

例如,所述集成电路可采用本领域技术人员了解的VHDL语言,进行模拟。

它还可实施为一可编程电子元件形式。

本发明还提出了一微电路卡及一计算机系统,所述系统包括前面简要描述过的一集成电路。

根据另一特征,本发明提出了一安全操作系统,所述系统实施前面简要描述过的证实方法。

相当有利地是,这类操作系统应用在微电路卡工业中,因为它可在所述微电路卡的软件层的更底层嵌入安全函数。

在微电路卡领域中,这类操作系统还可在所述卡上市后,保证加载的应用程序执行的安全(英文为“post-insurance”)。

本发明还提出一微电路卡及包括所述操作系统的一计算机系统。

相关地,本发明提出了可存取一安全存储器和一非安全存储器的计算机程序的自动证实装置,所述程序使用有至少一编码函数及至少一解码函数。

证实装置包括一验证器程序,所述验证器程序可进行如下检测:

——可从安全存储器中读取数据并在非安全存储器中生成数据的任何函数为一编码函数;及

——由解码函数产生的所有数据都存储在安全存储器中。

本发明还提出一计算机安全操作系统,所述系统包括:

——编译计算机程序为二进制脚本的编译装置;

——把二进制脚本载入工作存储器内的装置;

——分配安全存储器和非安全存储器分配装置;及

——如前面简略描述过的一证实装置。

编译器、操作方法、安全操作系统、微电路卡、证实装置及计算机系统固有的特殊优点及特征,和前面描述过的根据本发明的证实方法的相同,此处就不再重述了。

附图说明

本发明的其它特征及优点将在后文参照附图,以非限制性方式举例加以描述中更清楚地体现出来:

——图1示出了根据本发明的一语法表;

——图2示出了根据本发明的一验证表;

——图3为示出根据本发明的一主程序主要步骤的方框图;

——图4为示出根据本发明的一验证方法主要步骤的方框图;及

——图5示出了包括根据本发明的一证实装置的计算机系统。

另外,本描述还附有以下附录:

——附录A:计算机程序示例,所述程序可采用根据本发明的证实方法证实,并可由根据本发明的一执行方法执行;

——附录B:编译附录A中的计算机程序后获得的二进制码。

可由根据本发明的一自动证实方法进行证实、并由根据本发明的一实施方法执行的源代码型计算机程序示例P,在附录A中给出。

所述计算机程序P包括一系列操作,各种操作分别执行解码函数、编码函数或非密码函数。

开发这类计算机程序时,对各操作来说,开发者须遵守存储在语法表TS中的一语法,图1示出了其一种实施例。

更准确地讲,各操作包括:

——函数的标识符;

——变元表;及

——表示操作结束的一字符,如字符“;”。

因此,行a1所示的第一操作为一解码操作,所述操作使用了由标识符DES-1标识的解码函数DES-1,所述函数使用了三个变元:

——INPUT,包含待解码数据的八字节地址段;

——KEY,密钥的参考值,所述参考值以L字符串形式被存储;及

——OUTPUT,八字节地址段,其中存储解码函数的结果。

有利地是,在上述实施方式中,程序员不仅不知道密钥,也不了解字符串形式的参考KEY。所述实施方式可避免程序员的任何侵盗行为。

同样,行a2所示的第二操作为一完整性控制操作,所述操作使用了可由标识符CHECKSUM-XOR标识的完整性控制函数CHECKSUM-XOR,所述函数包括两个变元:

——INPUT,八字节地址段,所述地址段包括将被操作的逻辑函数的输入数据;及

——OUTPUT,八字节地址,逻辑函数的结果需存储在所述地址上。

最后,行a3所示的第三操作为一编码操作,所述编码操作使用了标识符DES标识的编码函数DES,所述函数使用了三个变元:

——INPUT,包含待编码数据的八字节地址段;

——KEY,密钥的参考值,所述参考值以L字符串形式被存储;及

——OUTPUT,八字节地址段,编码函数的结果需存储在所述地址段上。

另外,各函数与一操作模式相关,所述操作模式确定了至少一个存取存储器的规则,操作模式存储在图2所示的验证表中。

图2中示出了根据本发明的一张验证表。

对各编码、解码函数及逻辑函数而言,验证表TV中包括的行和所述函数的操作模式一样多,各操作模式确定了存取安全存储器MS及非安全存储器MNS的规则。

例如,编码函数DES包括4种操作模式,因为在此处所描述的实施方式中,所有编码函数均被允许在安全存储器及非安全存储器中读写,并无特别限制。

相反,可看到,在验证表TV的最后两行中,解码函数DES-1只有两种操作模式,根据本发明,所有解码函数只被允许在安全存储器MS里产生数据。

现参照图3描述一主程序,所述主程序实施根据本发明的计算机程序P的自动证实方法及执行方法。

证实方法包括附录A的计算机程序P预先编译步骤E300,所述编译步骤生成一二进制脚本EXE。

现参照附录B描述所述编译步骤生成的二进制脚本EXE。

为简化描述,二进制脚本EXE的字节集中在行b1至b20中。

数据EXE的前两字节(行b1)对应二进制脚本的大小,即十六进制表示法的6C。

紧接的字节(行b2)对应计算机程序P的操作数量,即为3。

集中在行b3至b8中的字节为第一操作(行a1,附录A)编译所生成的字节。

同样,集中在行b9至b13中的字节为第二操作(行a2,附录A)编译所生成的字节。

最后,集中在行b14至b19中的字节为第三操作也是最后操作(行a3,附录A)编译所生成的字节。

在所述各组中:

——第一行(行b3、b16及b14)由代表字节数的一十六进制表示法的字节表示,所述字节由相应操作的编译所产生,即对函数DES-1、CHECKSUM_XOR和DES来说,分别等于24、16和24;

——第二行(行b4、b10及b15)由一字节构成,所述字节由相应函数的标识符的编译所产生,即对函数DES-1、CHECKSUM_XOR和DES来说,分别等于22、53和21;

——第三行(行b5、b11及b16)由等于相应函数的变元数的一字节构成,即对函数DES-1、CHECKSUM_XOR和DES来说,分别为3、2和3;

——第四行(行b6、b12及b17)由相应函数第一变元的编译产生的字节构成;

——第五行(行b7、b13及b18)由相应函数第二变元的编译产生的字节构成;

——第六行(行b8及b19)由相应函数第三变元的编译产生的字节构成。

在此处所描述的实施方式中,变元编译首先生成表示存储区的第一字节,所述存储区内进行涉及所述变元的读或写操作。

在此处所描述的实施例中,使用了四个存储区:

——非安全输入区,IN_BUF,由字节01(行b6)表示;

——非安全输出区,OUT_BUF,由字节02(行b19)表示;

——计算安全区,PRIVATE,由字节04(行b8、b12及b13)表示;及

——密钥存储安全区,由字节05(行b7及b18)表示。

变元编译再产生代表变元大小的第二字节。在此处所描述的实施例中,当变元为一地址时,所述大小为8字节,或变元为由12个字符“CIPHER.TEST1”构成的密钥KEY时,为12字节(十六进制表示法0C)。

变元编译最后产生代表所述变元值的字节组。

在此处所描述的实施例中,地址段在程序P中使用符号ZONE/DECALAGE/LONGUEUR表示,其中:

——ZONE表示包括所述地址段的存储区类型,所述类型的存储区在非安全输入区IN-BUF、非安全输出区OUT-BUF、计算安全区PRIVATE及安全密钥存储区中选择;

——DECALAGE,表示所述地址段的开始相对于所述区的开始的偏移(英文为“offset”);及

——LONGUEUR,表示地址段的大小。

根据所述符号,逻辑操作CHECKSUM-XOR(行a2,附录A)的第二变元(OUTPUT=[PRIVATE/08/01])表示:所述逻辑操作的结果必须存储在计算安全区PRIVATE里,在从所述区的第八字节开始延伸一字节的一范围内。

在此处所描述的实施方式中,二进制脚本以一字节组结束(行b20),所述字节组对应于从构成所述脚本的至少部分字节而获得的密码签名。

编译步骤E300之后为步骤E305,在所述步骤中,主程序接收:

——一方面,计算机程序P的输入数据,所述输入数据可包括安全密钥;及

——另一方面,在编译步骤E300中生成的二进制脚本EXE。

在此处所描述的实施方式中,安全密钥存储在密钥存储安全区中。

接收步骤E305之后为步骤E310,在所述步骤中,主程序动态分配安全存储器MS和非安全存储器MNS。

本领域技术人员了解所述分配步骤,例如,所述分配步骤可采用malloc()系统函数来实施。

无论如何,所述分配步骤E310可获得第一地址指针BUFF-MNS及第二地址指针BUFF-MS,所述第一指针BUFF-MNS指向非安全存储器,所述第二地址指针指向安全存储器。

在此处所描述的实施方式中,这样分配的非安全存储器MNS又分成两区:

——非安全输入区,IN_BUF;及

——非安全输出区,OUT_BUF。

安全存储器MS也分为两区:

——计算安全区,PRIVATE;及

——密钥存储安全区。

在同一步骤E310中,在一最佳实施方式里,还分配有一工作存储器MT,所述存储器由指示符BUFF-EXE定位,所述工作存储器中包含步骤E305中接收到的二进制脚本EXE。

存储器分配步骤310后为二进制脚本完整性验证步骤E315。

例如,所述步骤E315可验证二进制脚本EXE的密码签名,如前面参照附录B行b20所描述的。

所述脚本完整性验证操作步骤E315可增强检验方法的安全性。

脚本完整性验证操作步骤E315之后为步骤E320,在所述步骤中,可获得计算机程序P的操作数量N,所述操作数量N存储在和工作存储器MT同名的一寄存器里。

在此处所描述的实施方式中,操作数量N为二进制脚本EXE的第三字节(行b2)。

若未配置脚本完整性验证操作步骤E315,操作数量获取步骤E320可在前述存储器分配步骤E310后执行。

操作数量N获取步骤E320之后为一检测E325,在所述检测中,可验证工作存储器MT的寄存器N的内容是否为0。

若不为0,检测E325的结果为负。

所述检测之后为步骤E330,在所述步骤中,可在二进制脚本中获得计算机程序P第一操作所使用的函数的标识符。

在附录B所示实施例中,这样获得的标识符等于22,表示函数DES-1(行b4)。

所述步骤E330之后为步骤E335,在所述步骤中,可在二进制脚本里获得所述函数的变元。

事实上,变元获取步骤E335包括:

——第一子步骤,在此过程中,在图1的语法表TS中搜索函数的各变元的行及大小;及

——第二子步骤,在此过程中,读取二进制脚本里的相应字节数。

函数变元获取步骤E335之后为步骤E340,所述步骤调用验证在步骤E330及E335过程中所标识的函数的过程。

现参照图4描述验证过程的主要步骤E400至E440。

在证实方法的第一步骤E400中,根据图2的验证表,获得安全存储器及非安全存储器存取规则,所述规则在步骤E330的所识别的函数操作模式中确定。

规则获取步骤E400之后为检测E410,在所述检测中,可验证所述规则是否得到遵守。

实际上,所述验证步骤验证:

——根据所述规则,必须在安全存储器里实施的所有读写操作在指示符BUFF_MS指定的地址段内执行;及

——必须在非安全存储器里进行的所有读写操作在指示符BUFF_MNS指定的地址段内执行。

例如,浏览附录B的行b14至b19,可看到函数DES(行b15)实施:

——由计算安全区PRIVATE(字节04,行b17)的前9个字节构成的地址段中的读取操作;及

——由非安全输出区OUT-BUF(字节02,行b19)的前10个字节构成的地址段中的读取操作,根据验证表TV,所述存储器存取符合函数DES的第二操作模式。

当所有存储器存取规则均符合时,检测E410的结果为正。

于是,所述检测之后为步骤E420,在所述步骤中,执行在处理过程中的操作。

相反,如果至少有一条存取规则未被遵守,检测E410的结果为负。

于是,所述检测之后为步骤E430,在所述步骤中,删除非安全输出区OUT-BUF里的内容。

输出存储器删除步骤E430之后为步骤E440,所述步骤向计算机程序P的程序员发出出错通知。

无论如何,步骤E420和E440之后均结束根据本发明的验证操作。

所述步骤之后为证实检测E345,现参照图3描述所述证实检测。

在所述证实检测E345中,验证前面参照图4所描述的验证过程结束于执行操作(步骤E420)还是出错通知步骤(步骤E440)。

当验证过程正常结束,即由操作执行步骤E420结束时,检测结果E345为正。

因而,所述检测之后为步骤E350,在此步骤中,删减一单元的寄存器N的内容。

步骤E350之后为已描述过的检测E325,在所述检测中验证寄存器N中是否有值0。

当所述检测结果为负时,执行已描述过的步骤E330,在所述步骤中,在二进制脚本EXE中读取构成计算机程序P第二操作的函数的标识符。

因此,步骤E325至E350形成一循环,在所述循环中,如果计算机程序P符合所有存储器存取规则,所述程序的所有操作得到证实并被执行。

反之,当验证过程结束后为出错通知,检测E345的结果为负。

因而,所述检测之后为后文将要描述的步骤E355。

当计算机程序P的所有操作被由步骤E325至E350构成的循环的证实时,检测E325的结果为正。

在此情况下,检测E325之后为步骤E355,在所述步骤中,把输出区OUT-BUF中的内容传输给主程序的用户,或处理输出数据的另一计算机程序。

步骤E355之后为释放并删除在步骤E310时分配的存储器的步骤E360。

所述步骤E360结束根据本发明的主程序。

图5简略示出了一计算机系统,所述计算机系统包括根据本发明的一证实装置。

首先,所述计算机系统包括一编译器,所述编译器可根据源代码型计算机程序P,产生如前面所定义的一二进制脚本EXE。

计算机系统还包括一安全操作系统(英文即Operating System)。所述安全操作系统包括一安全存储器MS及一非安全存储器MNS的分配装置。

事实上,在一最佳实施方式中,所述分配装置为本领域技术人员已熟知的软件函数,例如函数malloc()。所述分配函数以公知方式返回一地址指针,所述地址指针限定安全MS及非安全MNS存储器地址段的起始。

在图5所示实施例中,安全MS及非安全MNS存储器的地址指针分别为BUFF-MS及BUFF-MNS。

在一最佳实施方式中,二进制脚本EXE存储在工作存储器MT中,所述工作存储器由前面所述的分配装置所分配,由地址指针BUFF-EXE定位。

在所述的实施例中,二进制脚本EXE实际上由计算机系统的加载装置,例如PCI总线,加载到工作存储器中。

在另一实施方式中,二进制脚本EXE存储在一非易失存储器中,在其证实时被加载。

因此,计算机系统包括一证实装置,所述证实装置包括适于验证二进制脚本EXE有效性的一验证器程序。

一般地,计算机系统的验证器程序适于执行前面参照图3、4所描述的证实方法及执行方法。

更准确地讲,验证器程序可验证:从安全存储器MS读取数据及在非安全存储器中产生数据的所有函数是否为一编码函数。

它还可验证:由一解码函数产生的所有数据是否存储在安全存储器MS中。

验证器程序尤其可浏览存储在工作存储器MT中的二进制脚本EXE,定位对应于在编译后编码、解码及逻辑函数的标识符及变元的指令。

所述定位步骤的实施在于比较二进制脚本EXE的十六进制数据与前面参照图1所述语法表TS中的信息。

一旦函数的所述标识符及变元被确定,计算机系统的验证器程序可验证:前面参照图2所描述的存储在验证表TV中的存取规则是否被遵守。

为此,为存储器中进行的各读或写操作在二进制脚本EXE中确定存储地址,所述操作必须在所述地址实施。

它再确定所述操作是在安全存储器MS还是在非安全存储器MNS中进行,这可通过比较为此操作确定的位置与地址指针BUFF-MS及BUFF-MNS的值而实现。

一旦识别出所述存储器,计算机系统的验证器程序可验证:读或写操作是否符合处理过程中的函数类型的存取规则。

在另一实施方式中,证实方法植入安全操作系统中。有利地是,所述操作系统可应用在微电路卡中。

                                        附录

ANNEXE A

/*a1*/  DES-1(INPUT=[IN_BUF/00/08],KEY=″CIPHER.TEST1″,OUTPUT=[PRIVATE/00/08]);

/*a2*/  CHECKSUM_XOR(INPUT=[PRIVATE/00/08],OUTPUT=[PRIVATE/08/01]);

/*a3*/  DES(INPUT=[PRIVATE/00/09],KEY=″CIPHER.TEST1″,OUTPUT=[OUT_BUF/00/10]);

ANNEXE B

/*b1*/ 006C                                   /*  脚本大小  */

/*b2*/ 03                                     /*   操作数量     */

/*b3*/ 24                                     /*  指令DES-1大小     */

/*b4*/ 22                                     /*  指令DES-1标识符      */

/*b5*/ 03                                     /*     变元数     */

/*b6*/ 01  08 0000000000000008                /*INPUT*/

/*b7*/ 05  0C 4349504845522E5445535431        /*KEY*/

/*b8*/ 04  08 0000000000000008                /*OUTPUT*/

/*b9*/ 16                                     /*   指令CHECKSUM_XOR大小      */

/*b10*/53                                     /*  指令CHECKSUM_XOR标识符        */

/*b11*/02                                     /*   变元数       */

/*b12*/04  08 0000000000000008                /*INPUT*/

/*b13*/04  08 0000000800000001                /*OUTPUT*/

/*b14*/24                                     /*  指令DES大小    */

/*b15*/21                                     /* 指令DES标识符       */

/*b16*/03                                     /*  变元数         */

/*b17*/04  08 0000000000000009                /*INPUT*/

/*b18*/05  0C 4349504845522E5445535431        /*KEY*/

/*b19*/02  08 0000000000000010                /*OUTPUT*/

/*b20*/1425283678895422                       /*     密码签名         */

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号