System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种软件加密算法制造技术_技高网

一种软件加密算法制造技术

技术编号:40395807 阅读:6 留言:0更新日期:2024-02-20 22:24
本发明专利技术涉及软件加密相关技术领域,尤其涉及一种软件加密算法,包括以下三个阶段:一、取密码阶段;二、验证密码阶段;三、其他补强措施阶段。该一种软件加密算法,通过在取密码和验证密码阶段增加加密机制的方式使得攻击者更难找到需要分析和攻击的点,提高整个程序的安全性,在取密码阶段可以采用间接地址读取密码,取密码包括取在芯片固定地址的唯一ID和取保存在指定地址的密码,一定要避免直接读取具有芯片唯一ID专用地址或者特定孤立空间的地址,在密码计算和判定跳转部分,计算部分分散到各个初始化函数中,避免集中函数化,当我们需要面对攻击者,反而需要避免我们的源码所生成的汇编代码集中化,这样会太容易解读。

【技术实现步骤摘要】

本专利技术涉及软件加密相关,尤其涉及一种软件加密算法


技术介绍

1、单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器cpu、随机存储器ram、只读存储器rom、多种i/o口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,单片机(mcu)一般都有内部程序区和数据区。为了防止有人尝试破解获取单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。单片机攻击者利用调试工具,利用单片机芯片设计上的漏洞或软件缺陷,通过硬件和软件方法,就可以从芯片中提取关键信息,获取单片机内程序这就叫单片机解密。目前常见的破解方式有:软件方式:监听关键通信接口,整理出通讯协议,直接复刻。硬件方式:通过一定的异常工作条件,比如脉冲刺激。甚至开封装盖,调整读保护使得单片机处于非读保护状态。从而获取,全部程序信息。若内部程序还有软加密,则进一步做反汇编分析程序跳转,找出加密代码,替换或者跳过加密部分。从而实现解密,若是没有在单片机芯片的程序中设置一些加密防护的措施,那么芯片中的程序很容易就会被攻击破解,程序的防破解性能太低,因而需要一种软件加密算法来加强对程序的保护。

2、大多数现有的芯片程序,密码的位置在程序flash空间中的位置一般都是鹤立鸡群的存在。若是让攻击者定位到了特征地址,那么他就知晓了这一代码段是获取唯一uid和密码用的,那么仔细分析这一区域的前后程序就可以从取密码这里突破了。破解方便就可以是,改变唯一uid的获取地址,自己定义一个uid的地址,把可用的uid写入这里,密码部分不变,都不需要去看验证密码阶段的代码,整个程序就已经被破解掉了,因为密码验证每次都可以通过,在验证密码时,集中的密码处理,关键的if判定影响程序的走向,这些特征,使得攻击者极其容易察觉。稍加分析,攻击者就能知道,这就是密码的验证阶段,在之前的代码则是密码的计算阶段。那么只要经过少量的尝试,那么攻击者则可以改写这一判断阶段,让程序始终能够沿着正确的流程去运行。整个程序就被破解掉了。

3、因此,在编写单片机芯片的程序时,需要在取密码和验证密码的阶段添加加密算法,使得攻击者更难找到需要分析和攻击的点,使程序没有薄弱点,提升了整个程序的安全性。

4、本
技术实现思路

5、本专利技术提供一种软件加密算法,包括以下三个阶段:

6、一、取密码阶段;

7、二、验证密码阶段;

8、三、其他补强措施阶段;

9、优选的,所述阶段一具体实现如下:不管是芯片程序与内部的唯一uid做得匹配验证,还是与外部专用加密芯片的匹配验证,总是需要获取这个被判据的两个密码,一个一般是唯一uid本身,一个是内部用来存储的加密后的密码,这两个密码在程序flash空间中的位置一般都是鹤立鸡群的存在,在取密码阶段可以采用间接地址读取密码,其次取出值不采用原值保存,直接用算式进行转化。

10、优选的,所述阶段二具体实现如下:当我们取到了密码,很多人在程序的一开始,初始化前或者初始化后,就会有一个密码计算和验证阶段,如果经过计算后的密码与原来存储的密码一致时,程序才会进一步运行,否则会进入死循环,或者大幅降低主循环的循环长度,跳过关键步骤,可以将计算部分分散到各个初始化函数中,避免计算过程函数化,还有判定和跳转过程要避免采用相等判定。

11、优选的,所述阶段三具体实现如下:当程序被攻击者获取到了之后,反汇编分析每个节点的意图,一旦有一处被破解,则整个加密就失效了,因此我们有必要对加密过程做一些额外的操作,使得攻击者,在攻破一处后,程序仍然运行不正常,使得攻击者怀疑自己是否修改到了关键地方,从而产生更强的防破解效果,可以将写入密码隐藏到常量区,还可以将密码的验证和跳转过程扯平,避免一头过多。

12、本专利技术的有益效果是:该一种软件加密算法,不管是芯片程序与内部的唯一uid做得匹配验证,还是与外部专用加密芯片的匹配验证,总是需要获取这个被判据的两个密码,一个一般是唯一uid本身,一个是内部用来存储的加密后的密码,这两个密码在程序flash空间中的位置一般都是鹤立鸡群的存在,在取密码阶段可以采用间接地址读取密码,其次取出值不采用原值保存,直接用算式进行转化,取密码,包括取在芯片固定地址的唯一id和取保存在指定地址的密码,一定要避免直接读取具有芯片唯一id专用地址或者特定孤立空间的地址,若是stm32,芯片唯一id的地址一般为0x1fff_xxxx,而密码一般是存在某一独立扇区的,开始或者末尾,数据一般只有十几个字节,在程序代码段中搜索是否有0x0800_xx00这类地址,若是防范意识不够,则攻击者能很容易地找到需要分析的相关代码段位置,采用间接读取地址的方法,则可以将这些关键地址,转换成与其差异较大的算式形式,如0x1fff_xxxx可以表示为((0x2)<<28)-0xyyyy,而0x0800_xx00可以表示为((0x1)<<27)+((0xxx)<<16),其次,取出值不采用原值保存,直接用算式进行转化,使用函数的返回值或者全局变量,指代获取到的值,并采用一定的可逆或者不可逆的算法,对其进行转化保存,这样在取密码的阶段,程序的安全性得到了极大的提高。


技术实现思路

本文档来自技高网...

【技术保护点】

1.一种软件加密算法,其特征在于:包括以下三个阶段:

2.根据权利要求1所述的一种软件加密算法,其特征在于:所述阶段一具体实现如下:不管是芯片程序与内部的唯一UID做得匹配验证,还是与外部专用加密芯片的匹配验证,总是需要获取这个被判据的两个密码,一个一般是唯一UID本身,一个是内部用来存储的加密后的密码,这两个密码在程序Flash空间中的位置一般都是鹤立鸡群的存在,而我们在取密码阶段可以采用间接地址读取密码,其次取出值不采用原值保存,直接用算式进行转化。

3.根据权利要求1所述的一种软件加密算法,其特征在于:所述阶段二具体实现如下:当我们取到了密码,很多人在程序的一开始,初始化前或者初始化后,就会有一个密码计算和验证阶段,如果经过计算后的密码与原来存储的密码一致时,程序才会进一步运行,否则会进入死循环,或者大幅降低主循环的循环长度,跳过关键步骤,而我们可以将计算部分分散到各个初始化函数中,避免计算过程函数化,还有判定和跳转过程要避免采用相等判定。

4.根据权利要求1所述的一种软件加密算法,其特征在于:所述阶段三具体实现如下:当程序被攻击者获取到了之后,反汇编分析每个节点的意图,一旦有一处被破解,则整个加密就失效了,因此我们有必要对加密过程做一些额外的操作,使得攻击者,在攻破一处后,程序仍然运行不正常,使得攻击者怀疑自己是否修改到了关键地方,从而产生更强的防破解效果,我们可以将写入密码隐藏到常量区,还可以将密码的验证和跳转过程扯平,使得攻击者无法分析此处是否是破解关键点。

...

【技术特征摘要】

1.一种软件加密算法,其特征在于:包括以下三个阶段:

2.根据权利要求1所述的一种软件加密算法,其特征在于:所述阶段一具体实现如下:不管是芯片程序与内部的唯一uid做得匹配验证,还是与外部专用加密芯片的匹配验证,总是需要获取这个被判据的两个密码,一个一般是唯一uid本身,一个是内部用来存储的加密后的密码,这两个密码在程序flash空间中的位置一般都是鹤立鸡群的存在,而我们在取密码阶段可以采用间接地址读取密码,其次取出值不采用原值保存,直接用算式进行转化。

3.根据权利要求1所述的一种软件加密算法,其特征在于:所述阶段二具体实现如下:当我们取到了密码,很多人在程序的一开始,初始化前或者初始化后,就会有一个密码计算和验证阶段,如果经过计...

【专利技术属性】
技术研发人员:刘官奇
申请(专利权)人:深圳驰越科技有限公司
类型:发明
国别省市:

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

1