一种基于静态加密存储动态解密运行的代码保护方法技术

技术编号:8347995 阅读:234 留言:0更新日期:2013-02-21 01:40
本发明专利技术涉及一种基于静态加密存储动态解密运行的代码保护方法,步骤如下:第一步:芯片复位启动后程序指针跳转于静态存储体内直接运行明文代码,执行代码保密性要求不高的应用操作;第二步:当需调用与密文代码相关的函数库时,当前运行的代码会把密文代码读取解密于动态存储体的代码运行区;第三步:程序指针跳转于动态存储体的代码运行区,运行解密所得代码函数;第四步:运行完解密所得代码函数后程序指针跳转回静态存储体清除动态存储体内代码运行区的数据,继续代码运行;第五步:当需再次调用与密文代码相关的函数库时,重复第二、三、四步骤。本发明专利技术有益的效果是:关键代码以密文方式进行静态存储,实现代码实时动态解密运行,解决嵌入式芯片的代码容易被剖片读取破译问题。

【技术实现步骤摘要】

本专利技术涉及MCU、MPU、DSP,ARM等嵌入式编程芯片领域,尤其是。
技术介绍
在现在日益信息化的社会中,计算机和网络已经全面渗透到日常生活的每一个角落。对于我们每个人,需要的已经不再仅仅是那种放在桌上处理文档,进行工作管理和生产控制的计算机“机器”;各种各样的新型嵌入式系统设备在应用数量上已经远远超过通用计算机,任何一个普通人可能拥有从大到小的各种使用嵌入式技术的电子产品,小到mp3,PDA等微型数字化产品,大到网络家电,智能家电,车载电子设备。而在工业和服务领域中,使用嵌入式技术的数字机床,智能工具,工业机器人,服务机器人也将逐渐改变传统的工业和服务方式。广而化之,可以认为凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。作为系统核心的微处理器又包括三类微控制器(MCU)、数字信号处理器(DSP)、嵌入式微处理器(MPU)。所以有人简单的说"嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。"还有人认为嵌入式系统就是"以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统"。应该说后者从功能应用特征上比较好的给出了嵌入式系统的定义,嵌入式的概念的分析根本上应该从应用上加以切入。从狭义上讲,我们更加强调那些使用嵌入式微处理器构成独立系统,具有自己的操作系统并且具有某些特定功能的系统,这里的微处理器专指32位以上的微处理器。按照这种定义,典型的嵌入式系统有使用x86的小型嵌入式工控主板,在各种自动化设备,数字机械产品中有非常广阔的应用空间;另外一大类是使用Intel,Motorola等专用芯片构成的小系统,它不仅仅在新兴的消费电子和通讯仪表等方面获得了巨大的发展应用空间,而且甚至有趋势取代传统的工控机。现在大家更加清楚的看到嵌入式技术的春天已经来了。但是,对于嵌入式来说,代码的安全性对企业越来越重要,如何防止他人读取嵌入式芯片里面的代码,保护自身程序的安全,和保护自己的利益呢,对嵌入式开发来说至关重要。现有的技术方案如图I所示,硬件上通过SPI、I2C等串行芯片挂接一款滚动码编码芯片,软件上在嵌入式应用代码上根据设计者意愿增加一段动态密码验证段,当代码运行到密码验证段时主控芯片会向滚动码编码芯片发送一个动态密钥请求,然后主程序根据滚动码编码芯片反馈回来的动态密钥进行校验,密钥校验通过则程序继续执行,密钥校验不通过则程序停止后续流程并进行报错提示。该方案主要是基于滚动码的特性,通过代码与滚动码芯片绑定的方式进行嵌入式代码防抄板保护。经滚动码编译芯片生成的验证密码每次都会有变化,传输时可有效防止通讯数据复制重发破解。上述技术方案的不足在于1、需外加一款滚动码编码芯片(如基于KEELOQ原理的3HCS300、HCS301等),既增加器件成本,又增加电路制板面积,而且还会增加生产故障检测率。2、代码未进行加密,剖片读取后进行反汇编编译可轻易解析代码功能。3、动态密码校验只是参差与代码段,反汇编后可以通过注销“密码验证”代码段的方式进行嵌入式代码快速抄板破解。
技术实现思路
本专利技术的目的正是要解决上述技术存在的不足,而提供。关键代码以密文方式进行静态存储,实现代码实时动态解密运行,解决嵌入式芯片的代码容易被剖片读取破译问题。本专利技术解决其技术问题采用的技术方案这种基于静态加密存储动态解密运行的代码保护方法,该方法步骤如下第一步芯片复位启动后程序指针跳转于静态存储体内直接运行明文代码,执行代码保密性要求不高的应用操作(即不需要保密的应用操作);第二步当需调用与密文代码相关的函数库时,当前运行的代码会把密文代码读取解密于动态存储体的代码运行区;第三步程序指针跳转于动态存储体的代码运行区,运行解密所得代码函数;第四步运行完解密所得代码函数后程序指针跳转回静态存储体清除动态存储体内代码运行区的数据,继续代码运行;第五步当需再次调用与密文代码相关的函数库时,重复第二、三、四步骤。所述的动态存储体分成数据区与代码运行区两部分,数据区用于暂存代码运行时的中间数据,代码运行区用于暂存并运行静态存储器中的密文代码解密后的代码。所述的静态存储体分成明文代码与密文代码两部分,明文代码是指芯片复位启动后能够直接运行的代码,密文代码是指需由明文代码运行后搬运解密到动态存储体的代码运行区方能运行的代码。本专利技术有益的效果是关键代码以密文的形式进行存储,密文与明文夹杂存储于同一存储器内,可有效防止代码被静态剖片破解。2、当明文代码运行到需要密文代码时才把密文代码解压于RAM中运行,运行完后马上删除。由于密文代码被解密于RAM中运行只占用极少的时间,再加上RAM—旦断电数据就丢失,可以有效降低代码破译风险。附图说明图I是现有技术系统方框示意图;图2是本专利技术的系统方框示意图。具体实施例方式下面结合附图和实施例对本专利技术作进一步说明这种基于静态加密存储动态解密运行的代码保护方法,该方法步骤如下第一步芯片复位启动后程序指针跳转于静态存储体3内直接运行明文代码31,执行代码保密性要求不高的应用操作;第二步当需调用与密文代码32相关的函数库时,当前运行的代码会把密文代码32读取解密于动态存储体2的代码运行区22 ;第三步程序指针跳转于动态存储体2的代码运行区22,运行解密所得代码函数;第四步运行完解密所得代码函数后程序指针跳转回静态存储体3清除动态存储体2内代码运行区22的数据,继续代码运行;第五步当需再次调用与密文代码相关的函数库时,重复第二、三、四步骤。如图2所示,芯片存储体I :包含动态存储体及静态存储体两部分;所述的动态存储体2分成数据区21与代码运行区22两部分,数据掉电丢失,如SRAM、SDRAM等;数据区21用于暂存代码运行时的中间数据,代码运行区22用于暂存并运行静态存储器3中的密文代码32解密后的代码。所述的静态存储体3分成明文代码31与密文代码22两部分,数据掉电不丢失,如FLASH、EEPROM等;明文代码31是指芯片复位启动后能够直接运行的代码,密文代码32是指需由明文代码31运行后搬运解密到动态存储体2的代码运行区22方能运行的代码。功效特点I.无需额外增加硬件成本,可广泛应用于可在RAM中运行代码的系统平台。2.关键代码以密文方式存储,提升代码安全性,可以有效解决外挂代码存储器的代码破译问题。 3.加解密方式可以由系统应用开发者灵活设计,可以采用一些自定义非标准模式增加不确定因素,提高代码破译难度。4.密文代码可以根据开发者灵活设计,根据需求分段分时驻留运行于RAM,提高时效性,降低动态运行破译风险。5.方案商的关键代码可以以密文库的方式进行安全授权。术语解释RAM:Random Access Memory 随机存储器SRAM: Static RAM静态随机存储器SDRAM: Synchronous Dynamic RAM 动态随机存储器FLASH:闪存,一种不挥发性内存EEPROM:ElectricalIy Erasable Programmable Read-Only Memory,电可擦可编程只读存储器,掉电后数据不丢失SPI: Serial Peripheral Interface,串行外设接口I2C: Inter 一 Integra本文档来自技高网
...

【技术保护点】
一种基于静态加密存储动态解密运行的代码保护方法,其特征在于:该方法步骤如下:第一步:芯片复位启动后程序指针跳转于静态存储体(3)内直接运行明文代码(31),执行代码保密性要求不高的应用操作;第二步:当需调用与密文代码(32)相关的函数库时,当前运行的代码会把密文代码(32)读取解密于动态存储体(2)的代码运行区(22);第三步:程序指针跳转于动态存储体(2)的代码运行区(22),运行解密所得代码函数;第四步:运行完解密所得代码函数后程序指针跳转回静态存储体(3)清除动态存储体(2)内代码运行区(22)的数据,继续代码运行;第五步:当需再次调用与密文代码相关的函数库时,重复第二、三、四步骤。

【技术特征摘要】

【专利技术属性】
技术研发人员:黄权杨敬涛
申请(专利权)人:杭州晟元芯片技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1