CN1189901A - 使得固化程序能够改变的方法和装置 - Google Patents

使得固化程序能够改变的方法和装置 Download PDF

Info

Publication number
CN1189901A
CN1189901A CN97190456A CN97190456A CN1189901A CN 1189901 A CN1189901 A CN 1189901A CN 97190456 A CN97190456 A CN 97190456A CN 97190456 A CN97190456 A CN 97190456A CN 1189901 A CN1189901 A CN 1189901A
Authority
CN
China
Prior art keywords
code
address
sequence
territory
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN97190456A
Other languages
English (en)
Other versions
CN1109296C (zh
Inventor
阿扎达利·那索
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CP8 Technologies SA
Bull CP8 SA
Original Assignee
Bull CP8 SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bull CP8 SA filed Critical Bull CP8 SA
Publication of CN1189901A publication Critical patent/CN1189901A/zh
Application granted granted Critical
Publication of CN1109296C publication Critical patent/CN1109296C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3552Downloading or loading of personalisation data

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Storage Device Security (AREA)
  • Circuits Of Receivers In General (AREA)
  • Communication Control (AREA)

Abstract

能对一个固化程序进行改变的方法本发明涉及一种代码序列的编制装置,它包含有一个集成电路(10)能编制代码序列,另外一方面有一个第一存储器(12)包含一个主程序以及可能其他的可由此集成电路编制的代码序列,另一方面有一个不会丢失信息的可编程序的第二存储器(11)可能包含此集成电路可编制的代码序列,以及一个第三工作存储器(14),装置的特征在于,第二存储器(11)中包含的一个定位表包含有至少一个域,此域包含有码参考的一个数据:第一种方法(INS_INT)可以:-检验码的一个参考的存在,-在工作存储器中存入和该码参考有关的地址的数据,并放置一个跳转指示DI,第二类方法(INS_ORT)可以:-检测跳转指示DI,-向工作存储器AD_SAUT的内容指出的地址进行一次跳转。

Description

使得固化程序能够改变的方法和装置
本发明涉及计算机程序,特别是那些装入在微电路存贮器,更一般地说是装入在配有集成电路的便携装置中的程序。该装置至少包括一个中央处理器,一个程序只读存储器,一个可编程的非易失存贮器及一个工作存贮器。此非易失存贮器可存放数据和代码,中央处理器可通过自身来执行此代码。
在此类装置中,就目前而言,是将两种类型非常不同的程序放在一起,一种是在集成电路制造时装入的,并且是不能改变的,另一种是根据需要,在装置正常使用时由外部装入的。
今天,微电路已能从技术上满足各种需求。尽管如此,“掩膜”(mask)的实现,也就是只读存贮器中的程序依然很贵,而且这笔投资会使许多只希望购买几千个卡的“小”客户望而却步。一种可考虑的解决办法是使用已有的掩膜,并在可编程存贮器中再加入客户需求的功能。
在可编程存贮器中装入和执行附加代码的可能性带来了如下优点,它能很容易地给现有的程序加入新的功能,或使该程序适应特殊的需求。
法国专利FR 2655 170记载了一种便携式电子装置,它能将代代码序列注入到非易失存贮器中。可编程非易失存贮器包括一个专门部分用于包括一个代代码序列,该部分被分为一个指示区,一个代代码序列的数据区及一整体控制特征区。一个测试指令在只读存贮器中被启动,以读出和测试指示区,并在合适的时候实现跳转。因此,对应于每一跳转指令的一位于可编程存贮器的内存区必须与一测试指令相联系。
法国专利申请2667 417可公开了一种微处理器卡,以在可编程存贮器中存放多个程序,在卡中,被称作过滤指令与每一在可编程存贮器中的保留编程相关联,以构成一可由存贮在卡上只读存贮器中过滤指令执行的可访问的子程序代码地址存贮装置。每一过滤指令必须知道包含位于可编程存贮器中相关代码的地址的存储区地址,它只能一次性地固定存取等级。
上面所举的两种解决方案带来了下述问题。
对于希望装入许多跳转指令的所属技术领域的技术人员,必须在只读存贮器程序中及在可编程存贮器特定区域内多次执行跳转指令。如果大量此类指令必须被放入到主程序中,那么它在只读存贮器中所占据的总空间就会严重地影响到程序所用的空间。另外,在可编程非易失存贮器中,即使不装入子程序,也要为指针保留空间,它所占据的无用空间并不是可忽略不计的。最后,在写入后,子程序就不能再改变了。总之,该种解决方案只适用于非常有限数目的跳转指令及几个子程序,无论如何,大量跳转指令和子程序的问题并未解决。
本发明的目的是提供一种能够改变现有芯片卡功能,且没有前述专利中缺点的方法和装置,它尤其可使得多次调用子程序。实际上,根据本发明的装置带来如下优点,易于程序工作,使用较少的代码存储器,减少所用存储器的尺寸,可改变或允许各种修改,优化执行时间。
为此目的,存贮器中代代码序列的执行设备包括一能够执行代代码序列的集成电路,及,一方面一含有主程序及可由集成电路执行的其它代代码序列的第一存贮器,另一方面,一包含可能由集成电路执行的代代码序列的第二存贮器,及第三工作存贮器,其特征是在第二存贮器中有一定位表,它至少有一包含下述装置第一装置(INS_INT)的代码参考数据的域,它允许
-检测代码参考的存在,
-在工作存贮器中存贮与代码参考相关的地址数据,及设置跳转指针DI,并且,
包括第二装置(INS_ORT)的代码参考数据的区域,允许
-检查改变的指针及
-依据由工作存贮器中内容指向的地址执行跳转。
根据另一特点,在三个存贮器之一中与代码参考相关联的代代码序列地址数据从代码参考开始计算。
根据另一特点,一个第二域包含存在三个存贮器之一的一个代代码序列的地址数据单元。
根据另一特点,该设备在可编程存贮器的可被保护的区域内有一用于确定第一地址的信息,及用于第一检验装置的可能查找方向。
根据另一特点,定位表有一附加的域,用于指出表中下一地址,在表中有与下一代码参考相对应的信息。
根据另一特点,定位表有一附加域,通过与检验总合的计算装置提供的结果相比较,使得能够保证前述域和/或相连的代代码序列的完整性。
根据另一特点,第二装置有一能在多个第二装置可以执行跳转到同一序列地址时,在工作存贮器中存入返回地址的装置。
根据另一特点,该设备有防止附加代码写入的CA1装置及防止卡更新的PC1装置。
本发明另一目的是提供一种新功能的记录方法。
此目的由在前述要求中任何一个的设备中写入新代码来实现,其特征是它包括:
-接收一个写指令;
-检查构成代码参考A、B、C的一个第一域及代表与代码参考相关联地址的一个第二区域AD_lod_A,AD_Cod_B,AD_Cod_C的存在;
-检查构成定位表AD_TAB地址的第一地址值是一致的;
-检查没有ECA标志活动;
-检查由第一域提供的参考不在表中;
-设置在受保护的可编程存贮区内ECA标志为活动状态;
-接收并写入与新代码相对应的信息;
-检查操作正确进行并更新定位表;
-设置ECA标志为无效状态。
根据另一特征,更新定位表的操作包括在定位表中用与定位表对应的要写入代码前面的代码定位字相对应的地址上写入下一地址域。
本发明的其它特点和优点可以通过下述设备和方法的一个实施例来更加清晰地描述,其中所参照的附图为:
-图1是使用管理定位表的一个处理方法的变化例的卡的可编程存贮器的一个划分。
-图2是卡的只读存贮器的一个划分例子;
-图3是在主程序中,在主程执行过程中的询问指令序列及随后的定位指令序列;
-图4是一个可能的查询及定位指令序列的例子;
-图5是一个包含分枝指令代代码序列执行算法的例子;
-图6是包括了定位表和代代码序列区的可编程存贮器划分构造的例子;
-图7是包括了定位表和代代码序列区的可编程存贮器划分构造的第二个实施例;
-图8是一个构成定位指令的代代码序列执行流程图的例子;
-图9是一个构成序列写入指令域的例子;
-图10是由写入指令触发的记录序列执行的流程图;
-图11是使本发明设备与方法能够应用的微电路存贮器的构成部件。
本发明通过图11描述的微处理器卡为例,将在下面详细说明。
微处理器卡有一能够执行指令序列的微处理器或集成电路型的中央处理单元(10),一工作存贮器RAM(14),一包含主程序的非易失存贮器ROM(12),一包含数据的可编程并可由中央处理单元执行的EPROM,EEPROM或FRAM非易失存贮器(11),及通过一链接(15)接触或不接触地与读器对话的进口/出口装置(13)。程序在制造时被刻入到ROM中,因而以后不能被改变。
可编程存贮器(11)被分成几个部分,如图1所示。第一部分(110)的系统区包含有外部不可读的系统信息,允许检查有效性(可靠性和/或完整性)及存贮在存贮器其余部分数据组或信息(指针…)的位置。标明为第二部分的(111)数据区可由外部存取及用作存贮用户的数据。一标明为第三部分(112)的定位表包含了一定位表,它由相同的单元构成,每一单元由几个域构成,包括两个主域:第一个是代码:“A”、“B”…的参考数据单元,第二个是与存贮在存贮器的第四部分(113)的相应的代代码序列的起始地址AD_Cod_A,AD_Cod_B等。标明为第4部分代代码序列包含了能被主程序调用的代代码序列。要注意,在本发明的变化例中,定位表或代代码序列可被载入到工作存贮器(RAM)中,而不是EEPROM中。
被称作AD_TAB的定位表起始地址被存贮在系统区,一个标明为SENS的第二数据单元决定指针按那个方向读此表,或是按地址增加地方向,或是按地址减小的方向。因而AD_TAB和SENS值的地址可以是本发明中存贮在ROM中的程序所知的唯一数据。这对于以字节存贮大小或定位表的最大单元数(TaTa)是有益的。
这里是一个使用发明方法说明跳转进程的优点的例子。主程序可以是包含能够执行信息的加密/解密式某些确认功能的算法,比如D.E.S(数据加密标准)。用另一种算法代替此算法,或完全改变其执行,以使其,例如更快,是有益的。算法代码在操作系统的ROM存贮器中构成了一块,此代码不能被改变,它能在主程序的不同地方被调用。
参看图2更易了解此例,还有其它内容的包含主程序的ROM存贮器被分为3个部分。第一部分在加电后实现卡的初始化:工作存贮器的测试,卡状态的读入,响应复位的字节的发送。第二部分包括一应用程序,它根据终端的要求执行不同指令。(第一部分代码总是在第二部分之前执行)。第一部分和第二部分构成了主程序。第三部分包括“睡眠”代码,其作用在后面解释。
我们想修改功能的被称为ALGO-1的算法被装在应用部分。在此例子中,此算法在代码的5个不同部分被调用。新的算法被预先装入到可编程存贮器的代代码序列部分,定位表已被更新,其代代码序列的执行地址是AD_Cod_A。
加电时,主程序执行初始化部分,在这部分有到ALOG_1的第一个跳转,记作“APPEL_0”,可以注意到,在这里不会有跳转发生,因而此跳转也不会由任何跳转指令限制。在这部分还有一个询问指令序列:INS_INT_A,它是编程者特别置此部分的,以保证在执行应用程序部分之前至少执行一次。在此例子中,与此询问指令序列相关联的代码参考是“A”,它被写入主程序中。在第一时期,询问指令在系统区中查找定位表AD_TAB的地址。然后,从此地址开始,按照“SENS”的值在地址增加或减小方向上,读取表中每一个单元。将与代码参考相对应的第一域的值与“A”值相比较。如果在定位表的第一域中找到“A”值,相应的第二域(AD_Cod_A)的值被读入和存贮在工作存贮器(RAM)的寄存器AD_SAUT中,并且工作存贮器中的跳转指示(DI)放置于有效位置。
当DI处于无效时,子程序ALGO_1由在主程序中的APPEL_0,APPEL_1,APPEL_4调用5次。对于APPEL_1,APPEL_2和APPEL_3,在跳转指示DI有效的时候,将实现向可位于只读存贮器或可编程存贮器中程序ALGO_2的跳转,这是因为编程者在每一有效跳转到在ALGO_1中的指令APPEL_1,APPEL_2,APPEL_3前的主程序中实施了定位指令:INS_ORT_1,INS_ORT_2和INS_ORT_3。如图3所示,定位指令包括测试跳转指示是否有效。如果跳转指示未活动,主程序继续其通常过程,并执行ROM中算法,例如执行向ALGO_1的跳转APPEL_1。如果跳转指示DI活动,定位指令将使程序跳转到由寄存器AD_SAUT的内容指向的地址。预先存在寄存器AD_SAUT中的AD_Cod_A的值被装入到中央处理单元的程序计数器中,在被装入地址的代代码序列被执行。另一方面,如编程者希望,子程序ALGO_1由APPEL_4在没有任何跳转的可能下被调用,因为没有任何跳转指令与其相关联。
要注意到,定位和询问指令表达式是由一系列可由中央处理单元执行的基本指令集构成的宏指令。
当指针保持在活动的情况下,同一定位指令可被执行无限多次,跳转总是按AD_SAUT中存贮的地址执行。同样地,如图2所示,有同一代码参考“A”的多个定位指令“INS_ORT_1”,INS_ORT_2,INS_ORT_3可在主程序中执行,它们的执行产生同样的效果。在此情况下,特别要注意的是主程序的返回地址,例子中返回指令的实现将在下面介绍。
在一般规则下,编程者必须要考虑在所有定位指令之前至少要有一个询问指令序列被执行。如果该指令序列只被执行一次,一个用于使跳转指示DI无效的跳转指示DI的擦除指令将被代代码序列所执行。因此,在返回主程序后,在执行以下的定位指令时,不会执行任何跳转。
在这个例子的说明下,显示出了公开询问指令和跳转指令的第一个优点。代码中较难制造,因而较贵的询问指令序列只装入程序中一次。那些在存贮器中非常短的及较便宜的定位指令序列,在需要的时候装入可编程存贮器的空间中。
跳转指示DI可非常有效地由寄存器AD_SAUT的特定值所取代。如果寄存器中包含一个“零”值,它不是一个对于一给定部件的非易失存贮器的有效地址,这意味着主程序不进行任何跳转。同样,如果存贮器AD_TAB中有一与定位表起始值不一样的值(比如“零”值),可以认为没有任何序列可用,因而不会有任何的跳转。
如图4所示,可在主程序中引入几个询问指令(INS_INT_A,INS_INT_B)。每一此种指令在可编程存贮器中有其自己的参考代码并在程序存贮器中在定位表的诸初始化值中查找该码的存在。如果此代码值在表中,与其相并的代代码序列的地址被装入到工作寄存器AD_SAUT中。因此,一个询问指令的执行将擦除和更换前一询问指令在寄存器AD_SAUT中更新的值。
如果前一询问指令在寄存器中更新跳转地址,而如果有一不同参考代码的第二询问指令被执行,并且没有在定位表中找到其参考代码,只需擦除前面的AD_SAUT的值即可,因而取消所有跳转,直到下一询问指令。如果保留前面的值从而保留跳转,也属本发明的范围。
在定位表中写入代码参考的第二个优点是,此表中只包含有用的数据,它们只涉及主程序中希望的有效跳转。因而无论怎样,其尺寸是优化的,并增加了存贮空间。
有利地,可以在主程序中存放不被主程序调用的代代码序列。在本发明的设备的帮助下,可以给每一序列一对应的代码参考,并与序列起始地址一起存放在定位表中。因此,可以在便携式设备的可编程存贮器中激活此“睡眠”代码。
有利地,可以通过定位指令为同一代代码序列定义多个入口点,并使其对应不同的参考代码。同样,几个序列,比如“A”,“B”和“C”可以组成一个单一序列,并与参考代码“A”及其入口点AD_Cod_A一起写入可编程存贮器,其它两个代码参考及其入口点接着写入。一个允许此操作的定位表的例子将在较后的位置描述(图7)。
参照图5,将描述询问指令的执行。此指令的入口参数是与将在下一定位指令执行时的代代码序列相对应的参考代码的值,被标记为“X”,在此例中,此值是“X”。在第1步,执行询问指令序列的主程序在系统区在地址@读AD_TAB的内容,对于ROM中的程序,@是已知的,AD_TAB是定位表的起始地址。第2步,询问指令序列检测字读。如果字读无效,那么在定位表中不存在任何可用于执行的跳转代码。询问指令序列被终止,并且跳转指示DI无效(步骤10)。如果字读有效,询问指令序列在第3步,在工作存贮器用所读值AD_TAB更新一指针,比如AD_SAUT。然后到第4步,询问指令序列依据此指针读入指向表中的一单元。询问序列的第5步,与代码参考相对应的域的值与作为输入参数所提供的参考代码值“X”相比较。如果两值相同,询问序列在第8步将跳转指示DI置为有效状态。借助于指针,询问序列在第9步从定位表中读出紧挨在参考代码后的地址值“AD_Cod_X”。此值被存入到工作存贮器RAM中的寄存器AD_SAUT中。如果两参考代码的值不同,在第6步,指针被更新以指示定位表中下一参考代码。此更新要考虑表中每一单元的大小,如果,例如,表是由32比特的诸个字构成,为寻址字节(8比特)指针值要增长4。询问序列在第7步测试指针寻址的可编程存贮器的字是否还在定位表中。此测试与表的组织有关,下面将举几个例子。如果所指示的字不在表中,询问指令序列将被中止,而跳转指示DI将由第10步置于无效状态。如果指示的字还在定位表中,询问序列回到第4步。
在询问指令序列终末,跳转指示DI总是被设置,如果是有效状态,A_SAUT右的值有效。有利地,询问指令序列可由编写主程序的程序员以子程序的方式写入,并且一方面,对于入口参数:在表中查找参考代码,如“X”,及可能的返回地址,另一方面,对于出口参数,就是一个指定是否必须实施跳转的跳转指示DI。在初始化时,可以执行读定位表,及在工作存贮器中存入所有与存在的参考代码相对应的地址,这可以避免在每一询问指令扫描表及不存在的代码。
图6表示定位表的一个例子。此表由32位的定位字组成。例如,一个字的第一域包含有参考代码。例如两个随后的字的第二域,包含有代码序列开头的地址于不丢失信息的存储器中。最后一域,例如为一个字,为任选的,可以包含一个校验和的码(CHK_A),能够查对前面两个域或附加的代码序列的数值的完整。在此定位表中,单元间相互连接跟随。当后面的字为未用过的时,即达到表的结束。在系统区读出的数值SENS表示表指针记录器移动的方向:经由增大或变小的地址。图6中是选择的增大地址的方向。
当包含有大量单元时,这种表的排列是很有利的。事实上,这些单元的参考  代码能依一定的次序分类,因而表中的这些单元的编排能按增大的参考“A”、“B”、“C”、“D”、“E”、…或减小的参考“Z”、“Y”、“X”、“W”、…进行。表的字的划分尺度是确定的。划分尺度或者储存在系统区的一个区域(图1的TATA)内,或者在初始化时对表进行一次预先读出。在寻找一个一定的参考代码时于是可以使用tri算法。例如,在AD_TAB中包含的数值上加上先行确定的表的字数目的一半,用处于表中央的单元的地址对记录指针进行初始化,之后被记录指针读出的参考代码和要寻找的参考代码进行比较,结果指针向前或向后移动,然后指向余下的一个待探寻区域的中央。这种机制在寻找表中代码的一个参考时能节省时间。这样,如果表中有n个有序单元,典型的寻找方式从一个单元到下一个单元平均要读n/2个单元才能找好。而前面指出的寻找法则读(log n)个单元便可找到。当n很大时这是一个优点。
如果扫描过整个表后表中没有一个被读的数值有被找的参考“A”,则从主程序向代代码序列“A”的跳转便不能实现,工作存储器中的一个跳转指示DI此时被置于无效状态。
这种安排迫使程序员从初次写入一列代码时必需预见到定位表的划分尺度,使得在AD_TAB的数值后面留有足够的存储空间以完成此表并最后写入其他序列的代码。
实现定位表的一个不同办法可以只包含代码的参考。这时询问指令程序将运用一种以代码的参考作为进入参数的算法计算跳转的地址。
图7表示定位表的另一个例子,它使程序员能不必预知存储器TATA中对应其划分尺度的信息、或对表作一次预读出以确定其划分尺度。此表包含有比前面更多的三域:参考代码的数值、代码序列开头地址和校验和(Check Sum)更多一域的定位字。这个增加的域比如占有第四或第五个字,它包含有定位表中随后单元的地址值。此表以如下方式读出:对应第一代代码序列的定位字位于地址AD_TAB处,参考代码为“A”且该序列在地址AD_Cod_A处开始,后面的定位字位于地址AD_TT2处。处于这个地址AD_TT2处的为对应于第二个代代码序列的字,它有“B”作参考代码,且在地址AD_Cod_B处开始。下一个字位于地址AD_TT3处,如此不断。当随后的定位字的地址值例如是“NULL”时表便达到结束。在此例子中要注意:参考代码“C”和“D”的序列属于同一块。该块事实上有两个进入点:AD_Cod_C和AD_Cod_D。可以把一列或几列代码、或这些序列的部份写入可编程存储器的数据区中。这时,建议将其输入一个如主程序的应用部分那种区分和了解清楚的区域中,或者有时可能出于安全考虑停止由外部对其进行读。
下面将通过图8对一列定位指令的进程予以说明。在阶段11,定位序列检验跳转指示DI。如果无效,主程序继续在序列中。如果跳转指示DI起作用,经返回地址储存进入主程序,序列继续进到阶段12。这次存储是任选的,因为在所有方式中是序列决定了返回进入主程序或别处的地址。如果能有几个定位指令序列都调用同一个代码序列,则储存每个定位指令序列各自特有的返回地址使能回到引起跳转发生的指令附近是有意思的。此存储可在一个工作寄存器AD_RET或堆中进行。在后一情况,存储在可编程存储器中的此代代码序列被看作一个子程序,它用例如一个叫“从子程序返回”(“RTS”)的特征码作为结尾。之后在阶段13,此定位序列以向先前的询问序列储存于工作存储寄存器AD_SAUT中的地址处开始的代代码序列的一次跳转而结束。
下面将说明新的代码序列的写入和定位表的更新。
代码序列的一个写指令ECR_SEQ_E由输入输出装置(13)从外部送至卡处。此指令的数据分解为几个域,如图9所示。指令ECR_SEQ_E包含:
-在第一域中有参考代码:“A”、“B”、…,
-在第二域中有序列开端的地址,
-在任选的第三域中有序列划分尺度,即要写入的字数目,
-在任选的第四域中为序列,即要写入的字。
当代码序列已被写入不丢失信息的存储器(FRAM、EPROM、EEPROM或ROM)中时第三和第四域无用。
图10表示一个程序方框图,说明一个新序列E的写指令ECRSEQ_E的执行程序PEN R的展开。在阶段21,指令被送至卡上且指令的前面两个域被进行分析。一旦被送至卡的这种指令被认可,写管理程序能检验出AD_TAB中的数值为一致的。如果相反,定位表不能运转,便不可能将一个新的代码序列写入且指令被中断。
在阶段211如果一个标志ECA为无效,程序仍然继续在此阶段,否则程序的执行便被中断。
在阶段22写程序会查对一个同样的参考是否已写入。如果该表已包含有一个代码的参考和这收到的一个相同,该指令即被中断。本发明这种特有的检查较之前述的以往技术表现出真正的优越性,因为它能不致错误地写入两个有着同一个参考的两列代码。在阶段23此写管理程序在不丢失信息的存储器上使一个标志:ECA_en_cours(Ecriture de Code Additionnel en cours)恢复有效,其意思是对一个新序列的写正在进行。之后在阶段24,程序PENR检验待写入码的字数目。如果数目为零,则没有一个新的代码序列要写入且只有一个新的码参考要补入表中。这是在ROM上激活“睡眠”码或从一个入口点向一个已经写入可编程序存储器中的代码序列进行补加的情况。
如果待写入码的字数目不为零,卡便按照阶段25的接收方式更新。字被收到,按照选择的方式可以是解密的或是原信号,之后在ECR_SEQ_E指令的第二域中规定的该序列开端的地址处被自动写入中。在所有这些情况下,写地址应该是未用过的,否则指令被中断并将标志ECA_en_cours激活,其结果是将卡最终关闭,除了以下叙述的重写机制的情况不是这样。一旦收到的各个代码和被写入的相应序列的字由程序(PENR),在阶段26检验是否写入进行得正确。做到这点的一个方法是从写入的字数值及其地址出发精心拟制一个校验和(CheckSum)计算法或一个标记。在阶段27,程序(PENR)检测被写的码的有效性。如果写入进行得不好,指令即中断并将标志ECA_en_cours激活。
如果写入进行得正确或没有代码序列要写入,在阶段28,程序PENR便将定位表更新,同时写入新的定位字。在图6描述的表的图解中此新的定位字在最后一个字之后立即写入。程序PENR依照SENS中指出的方向进展、从地址AD_TAB起开始扫过表格而确定出最后一个单元。写入定位字第三域中的校验和(CheckSum)可以由外部不加区别地送去或由卡计算出。这个校验和(CheckSum)可以是简单的总数或字的异“或”(XOR)类型或密码类型,可以在表中的字上携带或插入和此字有联系的代码序列。在图7描述的表的图解中,新字被写入表的各序列和定位字的区域的一个未用过的地方。程序PENR也应该改变在表最后一域前面的第三域,使它包含此新的代码序列“E”的地址AD_Cod_E。
在程序PENR的阶段29,当所有操作进行都对时,标志ECA_en_cours被恢复为无效。这个的主要结果是使定位表和各序列成为有效的。如果指令的执行不正确,则程序PENR向外部送出的出错信息会把错误类别通知用户。
应该记下为写入AD_TAB或SENS的内容的特殊情况。事实上,前面的叙述只对一个已经开始的定位表有效。要提醒的是,AD_TAB包含定位表开头的地址,以及如果此表如图6所述那样编制的话,域SENS表示的是在此表中扫描的方向。
使用图9中叙述的数据格式可以为写入AD_TAB以及或者SENS的内容而提供一个特殊的码参考。始终参考图9,对于此特殊参考,域AD_Cod_A无效,而含有该序列码的域包含有要放到AD_TAB及可能SENS中的内容。
另一个做法,也是对于输入全部数据(代码序列、定位表的单元、…)有效的方法,为使用如下格式:
开始写的地址    字数目    数据
这种方法的根本优点是附加代码设计者负责可以写入不管怎么样的数据。
为了识别一个操作系统或它的某些特征只要在加电卡时由卡送去识别字便可。加电是在能够和一张卡对话前必不可少的一次操作。分析定位表的指针AD_SAUT和表本身,操作系统能够以内部方式建立它对复位到零的反应。
从卡外部送来的一个代码序列的无效指令INS_INA_C的目的是由它的处理程序(PINA)使对应于一定的参考代码例如C的一次跳转失效。一个最初做的方法是擦除和此代码有关的所有数据:定位表中的单元和对应的整个序列,然后把定位表更新。第二个更快的实施方法是改变定位表中有待由另一个数值例如“NULL”去取消的代码序列所对应的参考代码。此代码不再存在,没有一个询问指令能将工作存储器AD_SAUT更新以执行此序列。最后一个方法是用一个不可能的地址值例如“NULL”去代替定位表中的地址值,或者继续将调用程序引向一个“返回控制”的简单的代码序列。这最后一个实施办法对于被写入ROM中的代码序列是十分合适的,此睡眠码因此能很容易就被激活或无效。
写入从卡外部来的重写INS_REG的目的是经由其处理程序PREG擦除一个或几个代码序列或表的一些单元或,一般说,一数据集。几个方法都是可能的:一个存储空间的开端和结尾的地址被送至卡,而此空间的所有字均被擦除。这个有点“粗”的方法应该小心使用,以免使不该擦除的序列变得不能使用。另一个方法是在卡上确定要擦除的参考代码的码和存在可编程序存储器中的这些代码序列,在一次这样的指令之后,此程序应确定对应表单元的地址,然后擦除这些单元并确定代码序列开头和结尾处的地址,最后擦除内容。寻找这些地址然后将表更新的方法取决于定位表的结构,见图6图7。此方法对熟练技术人员不成问题,因而没有必要解释。
最后一个指令REC_ESP_VRG能使表和代码序列容易更新,为寻找未用过空间。此指令不带特殊数据、被送至卡,它能够由此指令的处理程序PREV把可编程序存储器(11)的未用过的空间和这些空间中每个的开头和结尾处的地址送到外面。希望添加代代码序列的用户在这个指令后检验可用空间是否足够,并确定出此代码序列和其存贮地址的关系。
在一个可以核查该附加代码序列的完整的不同实现方案中,在定位指令序列中正要实现跳转前,在定位表的每一个单元中这时需要提供两个增补域:
一个说明和该单元有关的附加代码序列的划分尺度的第一增补域,和一个正确含有初始化的校验和(CheckSum)的第二个增补域。
如果计算出的校验和(CheckSum)和开始的不同,则操作系统停止执行,发出一个适当状态的字。此法的好处是在新的代码序列每次执行之前都要进行一次校验,但增加有关指令的执行时间,可以在第一次执行时限于进行此校验。
此第二个方法在于提供一个专门指指令,对可编程序存储器的一个区域进行一次校验和(CheckSum)的计算,并将计算值和提供的或预先写入域CHK_X中的数值进行比较。这样系统管理员可定期激活此指令以查明一切良好。
一个支持写和执行附加码的操作系统可通过可编程序存储器上如下的阻断符而受到控制以降低其容量:
-CAI:附加码阻断,
在整个写前由操作系统检测,
-RCI:卡重写阻断,这些阻断符从管理上看是与管理卡的操作系统的阻断符(lock)相似的。在整个重写前由操作系统检测。
这种容量的一个利用是改变EEPROM(11)上的附加码然后将阻断符RCI和CAI定位,以便使添加的码固定。
当然,本发明毫不限于上述实施例,而是相反,包括构成如同其组合一样精确描述的方法的同样技术的的所有方法,如果它们的实现是在本发明的宗旨下,并在下面权利要求的范围里使用。

Claims (10)

1.在一个存储器中执行代码序列的装置,包括一个执行代码序列的集成电路(10),一个存储器(12)含有一个主程序以及可能可由此集成电路执行的其它代码序列,或许可能含有此集成电路可执行的代码序列的一个非易失可编程序的第二存储器(11),以及一个第三个工作存储器(14),其特征在于,第二存储器(11)中包含有一个定位表,该表包含有至少一个域,该域包含有第一装置INS INT的代码参考数据单元的使得以下成为可能:
-检验代码参考的存在,
-在工作存储器中存入和该代码参考有关的地址数据单元,并设置一个跳转指示DI,
第二装置(INS_ORT)的代码参考数据单元可以:
-检测跳转指示DI,以及
-向工作存储器AD_SAUT的内容指出的地址进行一次跳转。
2.按照权利要求1的装置,其特征在于,在三个存储器之一中包含的一个代码序列的和代码参考相联的地址数据单元为从该代码参考计算得的。
3.按照权利要求1的装置,其特征在于,一个第二域包含有在三个存储器之一中包含的一个代码序列的地址数据单元。
4.按照权利要求1的装置,其特征在于,它在可编程序存储器(11)的一个可被保护的区域中装有一个数据单元(AD_TAB),可确定第一地址以及或许第一类检验装置所用的搜索的方向(SENS)。
5.按照权利要求1的装置,其特征在于,定位表有一个增补域(AD_TT),指示对应后面的代码参考的信息在表中的地址,即随后的地址。
6.按照权利要求1的装置,其特征在于,此定位表有一个增补域(CHK),通过与由校验和计算装置提供的结果的比较比较可保证以前的域和/或附加代码序列的完整。
7.按照权利要求1的装置,其特征在于,当为向同一个序列地址执行一次跳转有几个第二装置可用时,此第二种装置包括在一次跳转之后在工作存储器(AD_RET)上存储一个返回地址的装置。
8. 按照权利要求1的装置,其特征在于,它包括有阻止写一个附加代码的装置CAI和阻止卡的一次重写的装置RCI。
9.在按照权利要求4的一个装置中写一个新码的方法,其特征在于它:
-接收一个写指令;
-检验一个构成代码参考A、B、C…的第一域和表示和代码参考相联系的地址AD_Cod_A、AD_Cod_B、AD_Cod_C…的一个第二域的存在;
-检验没有一个标志ECA有效;
-检验第一地址(AD_TAB)的数值为一致的;
-核查第一域提供的参考在表中不存在;
-将标志ECA放入被保护的可编程序存储器的处于激活态的区域中;
-接收和写入对应于新代码的信息;
-检验操作执行正确以及将定位表更新;
-将标志ECA置于非激活态。
10.按照权利要求9的方法,其特征在于,将表更新的操作包括在定位表中的下一个地址域写入或被写入码的前面的码的定位字对应的地址。
CN97190456A 1996-04-30 1997-04-29 使得固化程序能够改变的方法和装置 Expired - Fee Related CN1109296C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR96/05454 1996-04-30
FR9605454A FR2748134B1 (fr) 1996-04-30 1996-04-30 Procede et dispositif permettant a un programme fige de pouvoir evoluer

Publications (2)

Publication Number Publication Date
CN1189901A true CN1189901A (zh) 1998-08-05
CN1109296C CN1109296C (zh) 2003-05-21

Family

ID=9491735

Family Applications (1)

Application Number Title Priority Date Filing Date
CN97190456A Expired - Fee Related CN1109296C (zh) 1996-04-30 1997-04-29 使得固化程序能够改变的方法和装置

Country Status (12)

Country Link
US (1) US6275982B1 (zh)
EP (1) EP0838053B1 (zh)
JP (1) JP3592335B2 (zh)
KR (1) KR19990028574A (zh)
CN (1) CN1109296C (zh)
AU (1) AU2779697A (zh)
BR (1) BR9702294A (zh)
CA (1) CA2225786A1 (zh)
DE (1) DE69729622T2 (zh)
FR (1) FR2748134B1 (zh)
NO (1) NO317558B1 (zh)
WO (1) WO1997041510A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108446242A (zh) * 2018-03-07 2018-08-24 珠海昇生微电子有限责任公司 一种固化代码的替换方法及系统

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434738B1 (en) * 1999-04-22 2002-08-13 David Arnow System and method for testing computer software
WO2001014965A1 (en) * 1999-08-24 2001-03-01 Koninklijke Philips Electronics N.V. Data processing apparatus with non-volatile memory for both program and data
US7266842B2 (en) * 2002-04-18 2007-09-04 International Business Machines Corporation Control function implementing selective transparent data authentication within an integrated system
FR2928754B1 (fr) * 2008-03-13 2012-05-18 Sagem Securite Carte a circuit integre ayant un programme d'exploitation modifiable et procede de modification correspondant
JP5824849B2 (ja) * 2011-04-22 2015-12-02 ソニー株式会社 情報処理装置および情報処理方法
US20140006867A1 (en) * 2012-06-29 2014-01-02 National Instruments Corporation Test Executive System With Process Model Plug-ins
US20160132251A1 (en) * 2014-11-11 2016-05-12 Wisconsin Alumni Research Foundation Operating method of storage device and data writing method for writing data into storage device

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01273136A (ja) * 1988-04-26 1989-11-01 Oki Electric Ind Co Ltd オペレーティングシステムのファームウェア化方式
US5615349A (en) * 1990-09-04 1997-03-25 Mitsubishi Denki Kabushiki Kaisha Data processing system capable of execution of plural instructions in parallel
US5202923A (en) 1989-11-30 1993-04-13 Kabushiki Kaisha Toshiba Portable electronic device capable of registering subprograms
FR2667417B1 (fr) * 1990-10-02 1992-11-27 Gemplus Card Int Carte a microprocesseur concue pour recevoir des programmes multiples en memoire programmable.
FR2668274B1 (fr) * 1990-10-19 1992-12-31 Gemplus Card Int Circuit integre a securite d'acces amelioree.
FR2676294B1 (fr) * 1991-05-06 1993-07-16 Gemplus Card Int Procede de verrouillage pour carte a memoire.
TW261687B (zh) * 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
KR950003013B1 (ko) * 1992-03-30 1995-03-29 삼성전자 주식회사 틀림정정회로를 가지는 이이피롬
FR2700040B1 (fr) * 1992-12-31 1995-02-17 Gemplus Card Int Carte à puce avec données et programmes protégés contre le vieillissement.
US5829013A (en) * 1995-12-26 1998-10-27 Intel Corporation Memory manager to allow non-volatile memory to be used to supplement main memory
US5901330A (en) * 1997-03-13 1999-05-04 Macronix International Co., Ltd. In-circuit programming architecture with ROM and flash memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108446242A (zh) * 2018-03-07 2018-08-24 珠海昇生微电子有限责任公司 一种固化代码的替换方法及系统

Also Published As

Publication number Publication date
EP0838053B1 (fr) 2004-06-23
EP0838053A1 (fr) 1998-04-29
AU2779697A (en) 1997-11-19
BR9702294A (pt) 1999-07-20
CA2225786A1 (en) 1997-11-06
NO976126D0 (no) 1997-12-29
KR19990028574A (ko) 1999-04-15
NO976126L (no) 1998-02-27
US6275982B1 (en) 2001-08-14
CN1109296C (zh) 2003-05-21
FR2748134B1 (fr) 1998-06-26
JP3592335B2 (ja) 2004-11-24
DE69729622D1 (de) 2004-07-29
JPH10510652A (ja) 1998-10-13
WO1997041510A1 (fr) 1997-11-06
NO317558B1 (no) 2004-11-15
DE69729622T2 (de) 2005-07-07
FR2748134A1 (fr) 1997-10-31

Similar Documents

Publication Publication Date Title
CA2420986C (en) Non-volatile memory control method
US8281411B2 (en) Security memory device and method for making same
JP5457496B2 (ja) 携帯型データ記憶媒体のメモリ管理
JP2679805B2 (ja) ディジタルコンピュータシステムのメモリ管理システム
WO2016199166A1 (en) Potentate: a cryptography-obfuscating, self-policing, pervasive distribution system for digital content
CN108829342B (zh) 一种日志存储方法、系统及存储装置
US6928456B2 (en) Method of tracking objects for application modifications
CN1109296C (zh) 使得固化程序能够改变的方法和装置
JP2723231B2 (ja) ソフトウェア権利管理制御方法
GB2146149A (en) Secure copy method and device for stored programs
US6898555B2 (en) Method for indicating the integrity of use-information of a computer program
US7207066B2 (en) Method for protecting a microcomputer system against manipulation of data stored in a storage arrangement of the microcomputer system
US7293266B2 (en) Plurality of loader modules with a CO- ordinator module where selected loader module executes and each loader module execute
JPH01152589A (ja) 携帯可能なデータ担体
US20050149270A1 (en) Componentware creating method, apparatus and recording medium
JP2009524879A (ja) プロテクトされたアプリケーションプログラムとシェルコードとの結合
Heising et al. A semi-automatic storage allocation system at loading time
JP3471838B2 (ja) 循環順編成ファイルの管理方法
JP2001356916A (ja) メモリブロック化コンパイラ及びプログラム実行方法
KR20090072620A (ko) 메모리 해킹 차단 방법 및 시스템
JPS6125261A (ja) ソフトウエアプロダクト保護方式
JPH1139210A (ja) フラッシュメモリのメモリ制御装置
KR20000003162A (ko) 효율적인 플래시 메모리 운용 방법
JP2765620B2 (ja) 回線接続情報の管理方式及び装置
CN116302013A (zh) 车辆ecu的刷写方法、装置、ecu及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1036145

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: CP8 TECHNOLOGY CO.,LTD.

Free format text: FORMER OWNER: BULL CP8

Effective date: 20050812

C41 Transfer of patent application or patent right or utility model
C56 Change in the name or address of the patentee

Owner name: BULL CP8

Free format text: FORMER NAME OR ADDRESS: CP 8 TRANSAC

CP03 Change of name, title or address

Address after: French Lou Weitz Don Nass

Patentee after: BULL CP8

Address before: French Lou Weitz Don Nass

Patentee before: CP8 TRANSAC

TR01 Transfer of patent right

Effective date of registration: 20050812

Address after: French Rowan F Nass

Patentee after: CP8 TECHNOLOGIES

Address before: French Lou Weitz Don Nass

Patentee before: Bull CP8

C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20030521

Termination date: 20140429