CN1952948A - 程序代码确认系统及方法 - Google Patents
程序代码确认系统及方法 Download PDFInfo
- Publication number
- CN1952948A CN1952948A CNA2005101138804A CN200510113880A CN1952948A CN 1952948 A CN1952948 A CN 1952948A CN A2005101138804 A CNA2005101138804 A CN A2005101138804A CN 200510113880 A CN200510113880 A CN 200510113880A CN 1952948 A CN1952948 A CN 1952948A
- Authority
- CN
- China
- Prior art keywords
- program code
- decision circuitry
- identification sequences
- controller
- message
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供一种确认一程序代码的计算机系统及方法。此计算机系统包含一存储器,供储存一程序代码与一认证序列,其中认证序列根据一预定算法而对应于一原始程序代码;一控制器,与存储器连结,供根据程序代码而执行一应用程序;以及一判断电路,用以接收程序代码与认证序列,且根据预定算法对程序代码进行运算而产生一运算结果;其中,判断电路藉认证序列及运算结果,而产生一判断结果,并依判断结果传送一判断讯息至控制器。
Description
技术领域
本发明涉及一种程序代码验证的系统及方法,特别是涉及一种使用判断电路以判断程序代码完整性的系统及方法。
背景技术
由于科技的进步,擅自复制软件或是其它的数字媒体已经不是一件困难的事,也使得这种情形越来越普遍。举例来说,当一系统厂商针对一处理器而撰写一程序代码后,将此程序代码存于一存储器中而出售给其客户,例如一硬件经销商。此硬件经销商分别向硬件制造商及系统厂商购买硬件及硬件所对应的程序代码。然而,当程序代码缺乏保护时,硬件经销商可能只购买数套程序代码,而在未经系统厂商的同意下,擅自复制此程序代码,造成系统厂商的巨额损失。
目前,已有许多方法用来防止这类数字数据盗拷的问题。例如,台湾专利公开号588243,发明名称为“认证系统及方法”,披露了一种用以保护存储器中所储存数据的方法,其系通过一微控制器执行运算程序而确认一密码,确认后才能对存储器中的数据进行存取。然而,使用微控制器进行运算程序时,会造成系统功率的大量消耗,且密码本身就是要被防止窜改的对象。
针对有保护机制的程序,可以利用修改程序内容去避开保护机制。虽然可以利用多重的保护机制,拖延破解的时间,但如果不能即早检测程序已遭修改,做出主动防范的行动,完全破解是迟早的问题。所以能立刻检测程序的完整性,是更有效的方法。
因此,有必要提供一种程序代码验证的系统方法,以有效地解决程序代码被擅改或复制的问题。
发明内容
鉴于现有技术所存在的问题,本发明提供了一种程序代码验证系统及方法。
根据本发明的一方面,提供了一种用以判断一程序代码是否与原始程序代码相同的系统及方法,其判断方法是使用一判断电路,判断对应于原始程序代码的一认证序列与对应于程序代码的一运算结果,其中,认证序列是由对原始程序代码进行一预定算法而得,而运算结果是由对程序代码进行此预定算法而得。
根据本发明的另一方面,提供了一种使用一判断电路以确认一程序代码的系统及方法,此判断电路可判断程序代码的完整性,且程序代码中会检测此判断电路是否存在,其中此判断电路利用一硬线逻辑(hardwire logic)。
附图说明
图1示出了本发明一实施例的一计算机系统;
图2示出了本发明一实施例的程序代码的运算及处理示意图;以及
图3示出了本发明一程序代码确认方法的流程图。
附图符号说明
100、计算机系统 110、存储器
120、微控制器 130、判断电路
200、原始程序代码 210、散列摘要
220、认证序列 230、240、金钥
300、程序代码
具体实施方式
本发明披露了一种程序代码确认系统及其方法。为了使本发明的叙述更加详尽与完备,可结合图1至图2进行下面的描述。
参考图1,图1示出了本发明一实施例的一计算机系统100,用以判断一程序代码300是否与一原始程序代码200(示于图2)相同,其中,原始程序代码200针对一微控制器120而撰写,供微控制器120执行某种应用程序。此计算机系统100包含一存储器110、一微控制器120及一判断电路130,其中判断电路130例如为一硬线逻辑(hard wire logic)结构。存储器110用以储存程序代码300及认证序列220,其中认证序列220是藉由对原始程序代码200(示于图2)进行一算法而得。理想上,存储器110中的程序代码300应等于原始程序代码200(示于图2),然而由于程序代码300有被盗改或复制的可能,因此程序代码300亦可能不同于原始程序代码200。根据本发明的一实施例,可确保程序代码的完整性及原始性。判断电路130使用序列界面(Serial Interface)而与微控制器120相互沟通,用以判断程序代码300的完整性与合法性,且当认证序列220为一加密讯息时,判断电路130可包含一用以解密的金钥(key)240。值得一提的是,本领域的技术人员应了解,本发明所提出的计算机系统100虽以此实施例说明,但本发明的计算机系统100的结构并不限于此,举例来说,计算机系统100可包含其它储存装置或中央处理器等等,或是判断电路130可直接与存储器110连接。
当微控制器120一开始运作,判断电路130可通过微控制器120而读取存储器110中的程序代码300及认证序列220。然而,在另一实施例中,判断电路130亦可与存储器110连结而直接读取存储器110中的程序代码300及认证序列220。接着,判断电路130对程序代码300进行一运算,此运算是根据对原始程序代码200(示于图2)所进行而得认证序列220的运算而实施,且此运算程序内建于判断电路130中。判断电路130根据运算的结果,与从存储器110传送来的认证序列220做比较,而判断出程序代码300与原始程序代码200是否相同,若相同,则判断电路130传送一讯息使微控制器120正常运作。若否,则判断电路130传送一讯息,用以中止微控制器120的动作。
图2显示原始程序代码200与认证序列220间的对应关系,即原始程序代码200的运算及处理过程。首先,撰写一原始程序代码200,供图1的微控制器120根据原始程序代码200而执行应用程序。接着,对原始程序代码200进行散列(hash)运算,得到一个信息摘要(digest)210,再以一金钥230对此信息摘要210进行加密而得到原始程序代码200的认证序列220。此认证序列220接着传送到图1中的计算机系统100而储存于存储器110或其它类似的储存单元,供后续认证程序使用。然而,对原始程序代码200的运算并不限于上述,举例来说,只对原始程序代码200进行散列运算而得认证序列220,或是不经散列运算而只以一金钥230对原始程序代码200而得认证序列220等运算过程皆包含在本发明的范围内。
理想的情况下,图2的原始程序代码200及认证序列220皆储存于存储器110中,供图1的计算机系统100使用。然而,由于程序代码有被擅改或非法拷贝的可能,而使得计算机系统100所使用的存储器110中的程序代码300与原始程序代码200不同,或是使得程序代码300为非法的版本。本发明提供了一种计算机系统及方法,用以判断程序代码300是否与原始程序代码200相同,以确保程序代码的完整性与合法性。
当微控制器120一启动而开始根据程序代码300执行一应用程序时,系统100便开始执行对程序代码300的认证程序。在此实施例中,认证序列220系原始程序代码200经hash运算后再以金钥230加密而得。首先,程序代码300及认证序列220传送至判断电路130,而在传送过程中,微控制器120可进一步对所有传送至判断电路130的数据进行加密,其中此加密运算可例如为数据加密标准(Data Encryption Standard(DES))加密或是国际数据加密算法(International Data Encryption Algorithm(IDEA))加密等等,这样的方式已可防止有心者对微控制器120与判断电路130间数据交换的窥探。在使用DES对所有传送至判断电路130的数据(包括程序代码300及认证序列220)加密的情况下,判断电路130先对所收到的数据进行第一次解密。接着,当判断电路130确定收到的是认证序列220后,即以金钥240对认证序列220进行第二次解密,而得到原始程序代码200的信息摘要210,其中金钥240内建于判断电路130中且与金钥230互相对应,分别用以解密与加密,一般而言,金钥240等同于金钥230。接着,对程序代码300进行散列(hash)运算,而得到程序代码300的信息摘要(未示于图中)。再来,比较信息摘要210与程序代码300的信息摘要,若两者相同,则判断程序代码300与原始程序代码200相同,且判断电路130依此判断结果而回传一讯息至微控制器120,供微控制器120正常运作。反之,若信息摘要210与程序代码300的信息摘要不同,则判断程序代码300与原始程序代码200不相同,且判断电路130依此判断结果而回传一讯息至微控制器120,以中断微控制器120的运作。其中,对于判断电路130依判断结果而回传的讯息,也可进行加密运算,再将加密后的讯息传至微控制器120。亦即,判断电路130与微控制器120两者之间的交换讯息皆经过进一步的加密,以加强程序代码的防盗性。需注意的是,针对判断电路130与微控制器120之间交换讯息所进行的加密及解密运算(例如DES),可使用金钥240,亦可使用其它不同的内建金钥(未示于图中)来进行。
在本发明的另一实施例中,认证序列220是原始程序代码200经散列运算而得,而并无以金钥230加密的步骤,即认证序列220本身即为原始程序代码200的信息摘要210。在此实施例中,判断电路130接收到程序代码300及认证序列220后,对程序代码300进行散列(hash)运算而得到程序代码300的信息摘要,并藉由比较程序代码300的信息摘要与认证序列220是否相同,而判断程序代码300与原始程序代码200是否相同。接着,判断电路130如前述依据判断结果而动作。
在本发明的又一实施例中,认证序列220直接以金钥230加密原始程序代码200而得,而并无经过散列运算的步骤。在此实施例中,判断电路130接收到程序代码300及认证序列220后,以金钥240对认证序列220进行解密,而得到原始程序代码200,并比较程序代码300与原始程序代码200是否相同。接着,判断电路130如前述依据判断结果而操作。
除了上述以判断电路130来判断程序代码300与原始程序代码200是否相同之外,微控制器可120根据程序代码300而进一步的检测判断电路130是否存在,并依检测结果产生一检测讯息。若检测结果为判断电路130不存在,则检测讯息供中断微控制器120的运作,反之,若检测到判断电路130的存在,则检测讯息不影响微控制器120的正常运作。
在本发明中,判断电路判断微控制器的程序代码的完整性,且微控制器通过程序代码而检测判断电路的存在与否。藉由以一个判断电路搭配一个程序代码的方式,不但可确保程序代码不被擅改,而且可确保程序代码不被非法复制。此外,本发明的判断电路可采硬线(hard-wire)形式,不内置微处理器来执行其它程序,因而可达省电且安全的效果。
图3根据本发明,示出了一程序代码确认方法的流程图。首先,在步骤S302启动一计算机系统,使得一微控制器依据存储器中的程序代码而执行一应用程序。接着在步骤S304中,微控制器依据程序代码而检测一判断电路是否存在,若否,则进行到步骤S306,中断控制器的运作。若判断电路存在,则进行到步骤S308,传送存储器中的程序代码及认证序列至判断电路。其中,认证序列是依前述的运算过程而对应于一原始程序代码。接着,在步骤S310中,判断电路对所接收的程序代码进行一运算,此运算对应于原始程序代码与认证序列之间的运算过程。在步骤S312中,判断电路将其运算结果与认证序列比较。若比较结果为不同,则进行到步骤S314,中断微控制器的运作。若比较结果相同,则进行到步骤S316,微控制器正常运作并完成程序代码的确认。使用此种机制,在更新系统100新软件版本,也无需更改任何硬件配置。
以上所述仅为本发明的较佳实施例而已,并非用以限定本发明的权利要求;凡其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在本发明的权利要求的范围内。
Claims (30)
1.一种计算机系统,用以确认一原始程序代码与一程序代码是否相同,该计算机系统包含:
一存储器,供储存该程序代码与一认证序列,其中该认证序列根据一预定算法而对应于该原始程序代码;
一控制器,与该存储器连结,供根据该程序代码而执行一应用程序;以及
一判断电路,与该控制器连结,该判断电路接收该程序代码与该认证序列,而根据该预定算法对该程序代码进行运算而产生一运算结果;
其中,该判断电路藉该认证序列及该运算结果,而产生一判断结果,并依该判断结果传送一判断讯息至该控制器。
2.如权利要求1所述的计算机系统,其中该控制器根据该程序代码而检测该判断电路是否存在,而产生一检测结果,并依该检测结果产生一检测讯息。
3.如权利要求2所述的计算机系统,其中若该控制器检测该判断电路不存在,该检测讯息使该控制器停止执行该应用程序。
4.如权利要求1所述的计算机系统,其中该预定算法包含一散列算法,该认证序列是根据该散列运算对该原始程序代码进行运算而产生;
其中,若该判断电路判断该认证序列与该运算结果相同,则代表该原始程序代码与该程序代码相同。
5.如权利要求1所述的计算机系统,其中该预定算法包含一散列算法及使用一第一金钥的一密码算法,该认证序列为该原始程序代码经散列运算后,由该第一金钥加密而得;
其中,该判断电路以对应该第一金钥的一第二金钥解密该认证序列而得一比对序列,若该判断电路判断该比对序列与该运算结果相同,则代表该原始程序代码与该程序代码相同。
6.如权利要求5所述的计算机系统,其中该控制器进一步加密该认证序列为一密文,并将该密文传送至该判断电路,该判断电路将该密文解密后而获得该认证序列。
7.如权利要求6所述的计算机系统,其中该控制器使用一第三金钥对该认证序列进行数据加密标准加密,该判断电路以对应该第三金钥的一第四金钥对所接收的该密文解密。
8.如权利要求1所述的计算机系统,其中该判断电路利用硬线逻辑执行该预定算法。
9.如权利要求1所述的计算机系统,其中若该判断电路判断该程序代码与该原始码不相同,则该判断电路传送该判断讯息使该控制器停止执行该应用程序。
10.如权利要求1所述的计算机系统,其中在该判断电路与该控制器之间相互传送的讯息,在传输前先经过加密。
11.一种程序代码确认方法,包含以下步骤:
(a)以一预定算法对一原始程序代码进行运算而产生一认证序列;
(b)提供一程序代码;
(c)利用一判断电路根据该预定算法对该程序代码进行运算而产生一运算结果;以及
(d)该判断电路藉该认证序列及该运算结果来判断该程序代码与该原始程序代码是否相同,并依判断结果传送一判断讯息。
12.如权利要求11所述的方法,其中在步骤(c)之前,还包含:
检测该判断电路是否存在,而产生一检测结果,并依该检测结果产生一检测讯息。
13.如权利要求12所述的方法,检测该判断电路是否存在的步骤还包含:
若该控制器检测该判断电路不存在,该检测讯息使该程序代码无法被执行为一应用程序。
14.如权利要求11所述的方法,其中该预定算法包含一散列算法,该认证序列是根据该散列算法对该原始程序代码进行运算而产生;
其中,在步骤(d)中,若判断该认证序列与该运算结果相同,则代表该原始程序代码与该程序代码相同。
15.如权利要求11所述的方法,其中该预定算法包含一散列算法及使用一第一金钥的一密码算法,该认证序列为该原始程序代码经散列运算后,由该第一金钥加密而得;
其中,在步骤(d)中,该判断电路以对应该第一金钥的一第二金钥解密该认证序列而得一比对序列,若该判断电路判断该比对序列与该运算结果相同,则代表该原始程序代码与该程序代码相同。
16.如权利要求15所述的方法,其中步骤(a)还包含
加密该认证序列为一密文;以及
在步骤(d)中,该判断电路将该密文解密后而获得该认证序列。
17.如权利要求16所述的方法,其中在步骤(a)中使用一第三金钥对该认证序列进行数据加密标准加密,而在步骤(d)中该判断电路以对应该第三金钥的一第四金钥对所接收的该密文解密。
18.如权利要求11所述的方法,其中步骤(c)中,该判断电路利用硬线逻辑执行该预定算法。
19.如权利要求11所述的方法,还包含以下步骤:
若该判断电路判断该程序代码与该原始码不相同,该判断讯息使该程序代码无法被执行为一应用程序。
20.如权利要求11所述的方法,其中步骤(d)还包含:
该判断电路在传送该判断讯息前,进一步将该判断讯息加密。
21.一种用以确认一原始程序代码与一程序代码是否相同的判断电路,该判断电路用以接收该程序代码与一认证序列,而根据一预定算法对该程序代码进行运算而产生一运算结果;
其中,该程序代码储存于一存储器中,供与该存储器连结的一控制器执行一应用程序,以及该认证序列储存于该存储器中且根据该预定算法而对应于该原始程序代码;
其中,该判断电路藉该认证序列及该运算结果来判断该程序代码与该原始程序代码是否相同,而产生一判断结果,并依该判断结果传送一判断讯息至该控制器。
22.如权利要求21所述的判断电路,其中该控制器根据该程序代码而检测该判断电路是否存在,而产生一检测结果,并依该检测结果产生一检测讯息。
23.如权利要求22所述的判断电路,其中若该控制器检测该判断电路不存在,该检测讯息使该控制器停止执行该应用程序。
24.如权利要求21所述的判断电路,该预定算法包含一散列算法,该认证序列根据该散列运算对该原始程序代码进行运算而产生;
其中,若该判断电路判断该认证序列与该运算结果相同,则代表该原始程序代码与该程序代码相同。
25.如权利要求21所述的判断电路,其中该预定算法包含一散列算法及使用一第一金钥的一密码算法,该认证序列为该原始程序代码经散列运算后,由该第一金钥加密而得;
其中,该判断电路以对应该第一金钥的一第二金钥解密该认证序列而得一比对序列,若该判断电路判断该比对序列与该运算结果相同,则代表该原始程序代码与该程序代码相同。
26.如权利要求25所述的判断电路,其中该控制器进一步加密该认证序列为一密文,并将该密文传送至该判断电路,该判断电路将该密文解密后而获得该认证序列。
27.如权利要求26所述的判断电路,其中该控制器使用一第三金钥对该认证序列进行数据加密标准加密,该判断电路以对应该第三金钥的一第四金钥对所接收的该密文解密。
28.如权利要求21所述的判断电路,其中该判断电路利用硬线逻辑执行该预定算法。
29.如权利要求21所述的判断电路,其中若该判断电路判断该程序代码与该原始码不相同,则该判断电路传送该判断讯息使该控制器停止执行该应用程序。
30.如权利要求21所述的判断电路,其中在该判断电路与该控制器之间相互传送的讯息,在传输前先经过加密。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2005101138804A CN1952948A (zh) | 2005-10-21 | 2005-10-21 | 程序代码确认系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2005101138804A CN1952948A (zh) | 2005-10-21 | 2005-10-21 | 程序代码确认系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1952948A true CN1952948A (zh) | 2007-04-25 |
Family
ID=38059289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005101138804A Pending CN1952948A (zh) | 2005-10-21 | 2005-10-21 | 程序代码确认系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1952948A (zh) |
-
2005
- 2005-10-21 CN CNA2005101138804A patent/CN1952948A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6343280B2 (en) | Distributed execution software license server | |
CN1327357C (zh) | 用于验证的系统和方法 | |
CN101853352B (zh) | 程序执行设备 | |
CN100452075C (zh) | 软件保护装置数据传输过程的安全控制方法及其设备 | |
CN107659632A (zh) | 一种文件加解密方法、装置及计算机可读存储介质 | |
CN102163268B (zh) | 在执行期间验证软件代码的完整性的方法和设备 | |
US5875248A (en) | Method of counterfeit detection of electronic data stored on a device | |
CN110995720B (zh) | 加密方法、装置、主机端及加密芯片 | |
CN114785503B (zh) | 密码卡及其根密钥保护方法、计算机可读存储介质 | |
CN102111753A (zh) | 一种手机软件加密方法 | |
CN101770559A (zh) | 数据保护装置和方法 | |
CN100349399C (zh) | 一种基于加密算法技术的软件防盗版方法 | |
JP2009080772A (ja) | ソフトウェア起動システム、ソフトウェア起動方法、及びソフトウェア起動プログラム | |
CN1559026A (zh) | 防止非法使用信息的方法和装置 | |
JP2008287488A (ja) | データ分散保存装置 | |
CN101883357A (zh) | 一种终端与智能卡之间的相互认证方法、装置及系统 | |
US20080104396A1 (en) | Authentication Method | |
CN101556638A (zh) | 数据处理设备 | |
CN101403985B (zh) | 一种对软件保护装置中的软件许可进行备份的方法 | |
CN114817956A (zh) | 一种usb通信对象验证方法、系统、装置及存储介质 | |
CN111611603B (zh) | 一种sata接口的安全量产控制设备 | |
WO2007059701A1 (fr) | Procede de cryptage systeme par micro-ordinateur mono-circuit polyvalent d'appoint | |
CN108363912A (zh) | 一种程序代码的密保方法及装置 | |
CN101251885A (zh) | 一种保护mcu内软件程序安全的方法及装置 | |
CN1952948A (zh) | 程序代码确认系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20070425 |