CN113032739A - 一种软件代码版权保护方法 - Google Patents
一种软件代码版权保护方法 Download PDFInfo
- Publication number
- CN113032739A CN113032739A CN202110317911.7A CN202110317911A CN113032739A CN 113032739 A CN113032739 A CN 113032739A CN 202110317911 A CN202110317911 A CN 202110317911A CN 113032739 A CN113032739 A CN 113032739A
- Authority
- CN
- China
- Prior art keywords
- chip
- serial number
- authentication
- software
- unique serial
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000008569 process Effects 0.000 claims abstract description 11
- 238000013475 authorization Methods 0.000 claims abstract description 8
- 238000004519 manufacturing process Methods 0.000 claims description 26
- 238000004891 communication Methods 0.000 claims description 9
- 230000006870 function Effects 0.000 abstract description 6
- 238000011161 development Methods 0.000 description 5
- 238000005336 cracking Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/73—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/72—Signcrypting, i.e. digital signing and encrypting simultaneously
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种软件代码版权保护方法,基于芯片具有唯一的序列号且不可被更改,在所述芯片的ROM boot中增加一个所述唯一序列号的认证代码和对所述唯一序列号进行认证的公钥;进行软件版权授权流程和软件版权认证流程。本发明一种软件代码版权保护方法然后在芯片ROM boot中增加一个软件版权认证的软件代码功能,ROM boot中的代码不可篡改,具有安全可信根;同时是一种基于密钥认证的认证方法,芯片BOOT里的认证程序用存储在ROM中的公钥对其自身唯一序列号的签名值进行验证,确保认证安全性;并且不会增加硬件成本。
Description
技术领域
本发明涉及软件代码保护领域,具体涉及一种软件代码版权保护方法。
背景技术
嵌入式系统作为飞速发展的新兴领域,其产品的知识产权的安全性正在被越来越多的用户和厂商所看重。
产品开发商在产品在生产和销售过程中,因为一些主控芯片的软件代码都需要存储在外部非易失性存储上,比如norflash,SPI flash。不法商很容易通过外部手段截取到这部分软件代码并进行复制,进而复制整个产品非法进行销售,赚取利润。
核心模块软件供应商(比如AI算法,人脸算法,指纹算法等等)会提供给产品终端开发商进行二次开发,但会对其卖出的每一个产品按卖出数量收取版权费用,但如何防止产品终端开发商或其它不法渠道商非法复制,赚取非法利润,需要提供版权保护的方案。
众所周知,产品开发商选用的芯片出厂有一个唯一的序列号,产品开发商对每一个序列号进行身份认证,如果是合法的,软件代码就正常执行;如果非法,则异常退出,产品功能不可用。
针对软件代码源码全部由产品开发商掌控,但用于生产的软件二进制代码却很容易被复制的情况,不法商将非法获取的软件二进制代码通过反汇编,只需要破解读唯一序列号的函数,又因为这些代码都是存储在外部存储器里,代码通过通用编程器很容易篡改代码,不法商只需要篡改读唯一序列号的函数,替换成一个合法序列号就可以复制产品了。另外一种破解方法是修改唯一序列号判断合法的分支语句,不管唯一序列号是否合法,都从合法的分支语句进入。
另外一种情况,核心模块软件供应商(比如AI算法,人脸算法,指纹算法等等)会提供给产品终端开发商进行二次开发,本身模块软件会以lib库或bin的方式提供。这个模块算法会基于芯片唯一序列号进行身份认证和绑定,也容易被上面的方法破解而被不法商进行复制销售,非法套利。
如何在不增加芯片模块的成本的前提下,解决上述问题,申请号为:202010270867.4,公开号为:CN111475815A,名为《一种用于芯片的代码保护方法》的中国发明专利提出了以下方案:“一种用于芯片的代码保护方法,所述用于芯片的代码保护方法包括以下步骤:采用非对称的加密方法对唯一标识芯片的识别码进行加密生成密文并将密文和识别码写入芯片中;启动芯片时,对密文进行解密后与识别码进行匹配验证;若验证通过则芯片启动成功,否则芯片启动失败。所述采用非对称的加密方法对唯一标识芯片的识别码进行加密生成密文并将密文和识别码写入芯片中包括以下步骤:定义芯片具有一个唯一标识芯片的识别码;采用RSA加解密算法生成对应的公钥和私钥;使用私钥对唯一标识芯片的识别码进行加密生成密文;将密文保存到芯片Flash中。所述公钥保存在芯片Flash中。在进行芯片固件开发时,把解密算法放在固件开发的程序的Lib库中,确保这部分代码在固件启动时会被运行到。”
但是,上述专利方案存在以下缺陷:1、其公钥是保存在芯片flash中,在实际产品版权保护中,其存在的安全漏洞在于,不法商将自己的公钥写到芯片flash中,用自己的私钥对唯一序列号进行签名从而达到复制产品软件代码进行非法获利的破解方法;2、解密算法是放在固件开发的程序的Lib库中,不法商可以跟踪代码执行,找到解密算法的位置,然后进行替换和修改这个解密算法的返回结果始终为解密正确进行破解,这个从技术角度是可以实现破解的,只是难度大小不同而已,;另外更进一步,该专利没有提供安全可信的运行环境,如何保证这部分代码在固件启动时会被运行到并且代码执行逻辑不被修改,所以是存在被非法篡改的隐患的。
发明内容
本发明的目的是:提供一种软件代码版权保护方法,克服上述缺陷。
为了实现上述目的,本发明提供如下的技术方案:
一种软件代码版权保护方法,基于芯片具有唯一的序列号且不可被更改,在所述芯片的ROM boot中增加一个所述唯一序列号的认证代码和对所述唯一序列号进行认证的公钥;进行软件版权授权流程和软件版权认证流程;
软件版权授权流程步骤如下:
步骤一:生产工具通过所述芯片提供的通信接口读取芯片唯一的序列号;
步骤二:生产工具对读取到的所述芯片唯一的序列号进行杂凑运算,运算结果记做Hash1,生产工具用私钥进行签名,得到签名值;
步骤三:生产工具通过通信接口将签名值写回所述芯片;
步骤四:所述芯片将所述签名值写到ROM Boot代码正常启动能验签的指定外部存储器位置;
软件版权认证流程步骤如下:
步骤五:所述芯片从ROM开始启动,执行片外存储器license认证;
步骤六:ROM中的软件版权认证代码从所述片外存储器获取包含所述芯片的唯一序列号的签名值;
步骤七:用固化在ROM code中的公钥对包含所述芯片的唯一序列号的签名值验签,获取包含所述芯片的唯一序列号的Hash值,即为Hash1;
步骤八:ROM中的软件版权认证代码直接从芯片1读取唯一序列号,用杂凑算法计算读取到的这个唯一序列号的Hash值,记做Hash2;
步骤九:执行Hash1与Hash2比较;
步骤十:如Hash1与Hash2相同,则认证成功,跳转至片外存储器继续执行;如Hash1与Hash2不同,则认证失败,打印失败信息,芯片复位。
进一步的,在步骤一中,所述生产工具具体为PC电脑或者定制烧录器;所述通信接口具体包括USB、UART以及SPI;使用芯片出厂时的8个字节长度的wafer ID作为芯片唯一的序列号。
进一步的,在步骤二中,杂凑运算选用国际通用SHA 256杂凑算法;生产工具在用私钥进行签名时,同时进行数据加密。
进一步的,在步骤五中,ROM采用的是掩膜生产工艺,是只读存储器。
本发明的有益效果为:
1、以唯一序列号进行身份认证和绑定方案,不够安全的实质问题因为代码存放在外部存储器上,进行身份认证的代码可能会被篡改,缺乏安全可信根。本方案在每一颗芯片出货需要保证有唯一的ID号且不可再被修改,然后在芯片ROM boot中增加一个软件版权认证的软件代码功能,ROM boot中的代码不可篡改,也就是这个代码运行逻辑不可更改,也就有了身份认证的安全可信根;
2、对芯片的唯一序列号进行的合法身份认证本质上是一种基于方法的认证方法,一旦方法被破解,则所有的产品生产都破解。本方案是基于现代密码公私钥非对称算法进行的身份认证,是一种基于密钥认证的认证方法。私钥由产品供应商保管,且不用对外公开,授权的时候只需要对每一个产品里的芯片唯一序列号进行签名,签名值是公开的,另外公钥是公开的,已固化到芯片ROM中,不能篡改;每颗芯片BOOT里的认证程序用存储在ROM中的公钥对其自身唯一序列号的签名值进行验证,确保认证安全性;
3、本方案是软件代码解决方案,不会增加芯片的面积,也就不会增加硬件成本。
附图说明
图1为本发明一种软件代码版权保护方法的软件版权授权流程示意图。
图2为本发明一种软件代码版权保护方法的软件版权认证流程的流程图。
图中:1、芯片;2、生产工具。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明作进一步的详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参考图1和图2,一种软件代码版权保护方法,基于芯片1具有唯一的序列号且不可被更改,在所述芯片1的ROM boot中增加一个所述唯一序列号的认证代码和对所述唯一序列号进行认证的公钥;生产工具2中含有私钥,私钥一定要安全保存且不可非法导出,在具体应用时,考虑到数据安全,选择一个定制的加密UKey来实现;此实例中非对称算法我们选用国际通用RSA非对称算法,加密UKey存储RSA算法的私钥,且保证不可导出;另外,只有合法用户才可以把需要签名的数据(加密数据)写入到UKey中进行签名(加密),RSA算法的私钥在UKey里对需要签名的数据(加密数据)进行签名(加密),签名结果(加密结果)返回给生产工具2。
软件版权授权流程步骤如下:
步骤一:生产工具2通过所述芯片1提供的通信接口读取芯片1唯一的序列号;
步骤二:生产工具2对读取到的所述芯片1唯一的序列号进行杂凑运算,运算结果记做Hash1,生产工具2用私钥进行签名,得到签名值;
步骤三:生产工具2通过通信接口将签名值写回所述芯片1;
步骤四:所述芯片1将所述签名值写到指定的外部存储器位置,这个存储器位置必须是ROM Boot代码正常启动时能对这个签名值进行合法性验证的指定位置;
软件版权认证流程步骤如下:
步骤五:所述芯片1从ROM开始启动,执行片外存储器license认证;
步骤六:ROM中的软件版权认证代码从所述片外存储器获取包含所述芯片1的唯一序列号的签名值;
步骤七:与RSA私钥配对的RSA公钥在芯片生产的时间已经固化在ROM中,ROM中的软件版权认证代码读取这个公钥,然后对包含所述芯片1的唯一序列号的签名值验签,获取包含所述芯片1的唯一序列号的Hash值,即为Hash1;
步骤八:ROM中的软件版权认证代码直接从芯片1读取唯一序列号,用杂凑算法计算读取到的这个唯一序列号的Hash值,记做Hash2;
步骤九:ROM中的软件版权认证代码执行Hash1与Hash2比较;
步骤十:如Hash1与Hash2相同,表示写到指定的外部存储器位置的芯片1的唯一序列号的签名值是合法的,则认证成功,跳转至片外存储器继续执行用户应用代码;如Hash1与Hash2不同,表示写到指定的外部存储器位置的芯片1的唯一序列号的签名值是非法的,则认证失败,打印失败信息,芯片1复位。
在步骤一中,所述生产工具2具体为PC电脑或者定制烧录器;所述通信接口具体包括USB、UART以及SPI;使用芯片出厂时的8个字节长度的wafer ID作为芯片1唯一的序列号。
在步骤二中,杂凑运算选用国际通用SHA 256杂凑算法;生产工具2在用私钥进行签名时,同时进行数据加密。
在步骤五中,ROM采用的是掩膜生产工艺,是只读存储器。
在步骤七中,签名值验签同时解密数据,所获得的Hash值即为步骤二中签名之前的Hash1。
在步骤八中,杂凑运算与步骤二中同为国际通用SHA 256杂凑算法。
本实施例中,软件版权认证代码固化在ROM中,软件版权认证代码一定被执行到且代码执行逻辑不可被篡改;公钥固化在ROM中,不能被非法替换;与公钥对应的私钥保存在UKey中,不可导出,由软件代码授权方保管。这一套完整的方案有效的防止了不法商复制软件代码进行非法套利的问题。
在本发明中,除非另有明确的规定和限定,术语“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
上述实施例用于对本发明作进一步的说明,但并不将本发明局限于这些具体实施方式。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应理解为在本发明的保护范围之内。
Claims (4)
1.一种软件代码版权保护方法,基于芯片具有唯一的序列号且不可被更改,其特征在于:在所述芯片的ROM boot中增加一个所述唯一序列号的认证代码和对所述唯一序列号进行认证的公钥;进行软件版权授权流程和软件版权认证流程;
软件版权授权流程步骤如下:
步骤一:生产工具通过所述芯片提供的通信接口读取芯片唯一的序列号;
步骤二:生产工具对读取到的所述芯片唯一的序列号进行杂凑运算,运算结果记做Hash1,生产工具用私钥进行签名,得到签名值;
步骤三:生产工具通过通信接口将签名值写回所述芯片;
步骤四:所述芯片将所述签名值写到ROM Boot代码正常启动能验签的指定外部存储器位置;
软件版权认证流程步骤如下:
步骤五:所述芯片从ROM开始启动,执行片外存储器license认证;
步骤六:ROM中的软件版权认证代码从所述片外存储器获取包含所述芯片的唯一序列号的签名值;
步骤七:用固化在ROM code中的公钥对包含所述芯片的唯一序列号的签名值验签,获取包含所述芯片的唯一序列号的Hash值,即为Hash1;
步骤八:ROM中的软件版权认证代码直接从芯片1读取唯一序列号,用杂凑算法计算读取到的这个唯一序列号的Hash值,记做Hash2;
步骤九:执行Hash1与Hash2比较;
步骤十:如Hash1与Hash2相同,则认证成功,跳转至片外存储器继续执行;如Hash1与Hash2不同,则认证失败,打印失败信息,芯片复位。
2.根据权利要求1所述的一种软件代码版权保护方法,其特征在于:在步骤一中,所述生产工具具体为PC电脑或者定制烧录器;所述通信接口具体包括USB、UART以及SPI;使用芯片出厂时的8个字节长度的wafer ID作为芯片唯一的序列号。
3.根据权利要求2所述的一种软件代码版权保护方法,其特征在于:在步骤二中,杂凑运算选用国际通用SHA 256杂凑算法;生产工具在用私钥进行签名时,同时进行数据加密。
4.根据权利要求3所述的一种软件代码版权保护方法,其特征在于:在步骤五中,ROM采用的是掩膜生产工艺,是只读存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110317911.7A CN113032739A (zh) | 2021-03-25 | 2021-03-25 | 一种软件代码版权保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110317911.7A CN113032739A (zh) | 2021-03-25 | 2021-03-25 | 一种软件代码版权保护方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113032739A true CN113032739A (zh) | 2021-06-25 |
Family
ID=76473537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110317911.7A Withdrawn CN113032739A (zh) | 2021-03-25 | 2021-03-25 | 一种软件代码版权保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113032739A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896569A (zh) * | 2022-05-18 | 2022-08-12 | 陈小娜 | 基于区块链的代码版权登记系统、方法及平台 |
-
2021
- 2021-03-25 CN CN202110317911.7A patent/CN113032739A/zh not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896569A (zh) * | 2022-05-18 | 2022-08-12 | 陈小娜 | 基于区块链的代码版权登记系统、方法及平台 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112035152B (zh) | 一种SoC芯片固件升级的安全处理系统及方法 | |
EP1594030B1 (en) | Program update method and server | |
US11803366B2 (en) | Firmware updating system and method | |
US8751814B2 (en) | Device | |
US11829479B2 (en) | Firmware security verification method and device | |
US8855297B2 (en) | Device and authentication method therefor | |
US8966646B2 (en) | Software license management | |
US8516565B2 (en) | IC chip, information processing apparatus, system, method, and program | |
US20120272052A1 (en) | Method for generating a cryptographic key for a protected digital data object on the basis of current components of a computer | |
JP5639709B2 (ja) | 記憶装置における物理的識別子を生成する方法及び機械可読記憶媒体 | |
CN101281468A (zh) | 生成固件更新文件和更新固件的方法和设备 | |
CN107832589B (zh) | 软件版权保护方法及其系统 | |
CN105893837A (zh) | 应用程序安装方法、安全加密芯片及终端 | |
CN118051919B (zh) | 数据处理方法、芯片、电子设备以及存储介质 | |
KR101698211B1 (ko) | 저장 장치의 인증 방법, 기계로 읽을 수 있는 저장 매체 및 호스트 장치 | |
US8761389B2 (en) | Memory | |
CN113032739A (zh) | 一种软件代码版权保护方法 | |
US8762717B2 (en) | Authentication device | |
US20130336481A1 (en) | Device | |
CN117472465A (zh) | 一种片上系统安全启动方法、装置、电子设备及存储介质 | |
US9183159B2 (en) | Authentication method | |
JP2005293109A (ja) | ソフトウェア実行管理装置、ソフトウェア実行管理方法、及び制御プログラム | |
US8898463B2 (en) | Device | |
CN111695164B (zh) | 电子设备及其控制方法 | |
US20060136746A1 (en) | Security system for preventing unauthorized copying of digital data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210625 |