DSP程序构造的加密体制

发布者:精品古钱斋最新更新时间:2007-04-30 来源: 深圳电子技术网关键字:算法  数据  写入  代码 手机看文章 扫描二维码
随时随地手机看文章
  目前,DSP以其卓越的性能、独有的特点,已经成为通信、计算机、消费类电子产品等领域的基础器件。同时,随着对知识产权的重视,在利用DSP进行产品设计时,如何保护自己的成果,防止破译者窃取,也成为设计者工作在一个重要方面[1,2]。如果产品大批量生产,那么可以利用掩膜技术等工艺将操作程序及数据写入芯片,使它们不能被读出,达到保护的效果。对于还没有形成规模的产品,使用这样的方法就会使成本大大增加。因此,本文提出一种方法,利用3DES、Geffe发生器和MD5等算法,构造一种加密体制,来保护DSP程序。

  1 加密原理及硬件结构

  1.1 加密原理

  该体制的加密原理可分为2个层次。首先是对程序的初始保护,就是把程序写入DSP芯片之前,对源代码进行加密处理,然后将密文写放入芯片。这样芯片中就不存在明文形式的源代码。当要运行该程序时,就从微狗中取出密钥进行解密,再继续运行。第2个层次就是在DSP程序运行过程中的连续保护。它的处理对象是一些重要参数或变时,通过“加锁”,让它们一直以密文形式存在于程序中。只有需要使用这些数据时,才从微狗内取出密钥进行解密。使用结束后,仍旧“加锁”保

护,使之仍然是密文形式。

  1.2 硬件结构

  在这种加密体制中,需要1片微狗实现密钥管理。如果原来的DSP系统中已经存在带有加密位的EPLD、CPLD或单片机,就可以利用以有资源进行设计,把它们作为微狗,完全不需要额外的硬件支持。否则,不妨用1片单片机完成微狗功能。这是由其良好的性价比决定的。

  2 工作过程和密钥管理

  根据加密原理,该体制的工作过程同样分为2个层次。首先,是初始程序保护,它以程序整体为处理对象。然后,是基于数据的连续保护。保护对象是一些重要参数事变量。它保证了加密贯穿程序运行的整个过程。在工作过程中,密钥管理非常关键,可以说,该体制的安全与否就体现在密钥管理上。

  2.1 初始程序保护

  初始程序保护使用的加密算法是3DES算法,加密结束后,销毁密钥,同时将密文写入芯片。这样芯片内就不存在程序的明文形式,可以防止别人通过简单的反汇编得到程序源代码。开始运行DSP程序时,就在DSP监控程序的控制下,从微狗内取出相应的密钥,解密恢复出源代码。

  微狗主要实现密钥管理功能。内部密钥的生成机制和主程序完全相同。把主程序以密文形式写入DSP芯片时,通过监控程序告知微狗,微狗内部同时生成对应密钥K0;主程序开始运行时,再在监控程序控制下,从微狗内取出密钥K0,解密,得到明文形式源代码。

  可是,由于只有1个密钥,破译者完全可以通过截取DSP和微狗之间的通信数据,很容易地得到密钥。一旦得到密钥,这种保护体制也就形同虚设了。因此,我们又采取了基于数据驱动的连续保护。

  2.2 基于数据驱动的连续保护

  所谓基于数据驱动的连续保护,即是对程序中重要的参数或变量进行加密处理。由于这些参数或变量在程序运行时需要反复使用。故而通过对它们的保护,就可以使加密贯空程序的整个运行过程。

  譬如对滤波器系数ap的保护,将其加密,即“加锁”,同时销毁密钥。在求ap+1时,需要用到ap,就向监控程序发出申请,在它的控制下,从微狗中取出对应密钥,开销,恢复ap,进行运算。运算结束后,再将ap和ap+1“加锁",保存,继续执行DSP主程序。这样不停地“加锁”、“开锁”,使得在同一时刻DSP主程序中都存在密文。

  此时微狗中密钥的生成必须和DSP主程序中的加密处理“同步”,即主程序的加密密钥要和微狗内生成的对应密钥相同。这个可以由DSP监控程序利用DSP内部的中断程序协调实现。使用密钥Ki对某参数或变量加密结束后,通过中断告诉监控程序加密完成,然后锁毁该密钥。继续执行DSP程序时,若需要使用该参数或变量,就向监控程序发出要求,在监控程序的控制下,从微狗中取出对应密钥Ki,解密。其具体过程如图1所示。

  其中,a、b为主程序和DSP监控程序之间的数据交换,包括彼此呼叫与应答;c为DSP监控程序对微狗的控制,发出某种命令;d是主程序在DSP监控程序的控制下,从微狗内取出相应的密钥。

  微狗将生成的密钥依次排列,然后等待主程序取密钥。不论是初始程序保护还是基于数据的连续保护,都只受监控程序的控制。这样可以保证主程序获得正确密钥。

  加入连续保护后,破译者要想得到源代码,必须跟踪程序的整个运行过程。这样,对于破译者而言,所花费的代价等于自己独立写一套程序,显然也失去了破译的必要。

  2.3 细节处理

  除了上述保护措施,还可以使用一些编程技巧,在细节上小心谨慎,写出让人“眼花缭乱”的程序,否则,破译者很可能不必完全跟踪,就能够获取源程序。因为目的是要迷惑别人,所以就得尽量破坏程序的可读性。譬如打乱程序的正常顺序,使其显得杂乱无章;适时适地插入无用代码,增强干扰;使参数变量的命名晦涩难懂,绝对不能有key、digest等诸如此类可以望文生义的名称。总之,要让破译者对获取的内容不知所云,以增加其还原源程序的难度。

  3 相关算法及密钥生成机制

  该体制的加密算法是3DES,是个对称算法。其安全性可以说完全体现在密钥上。因此,如何产生一个“安全”的密钥至为关键。在密钥的生成机制中,用到了Geffe发生器和MD5算法。

  3.1 相关算法[3]

  (1)3DES算法

  数据加密标准DES(Data Encryption Standard)产生于20世纪70年代。经过20多年的使用,目前仍是一个世界内的加密标准。这说明它的安全性相当高。它是一个分组加密算法,以64位分组对数据加密。密钥K的长度也是64位,可以是任意数。DES算法是对称的,加密与解密使用相同的算法与密钥(除了密钥的编排顺序不同)。因而可以说,DES算法的保密性完全依赖于密钥K。

  目前对DES的破译,最有效的是穷举功击。之所以说DES已经不太安全,是因为其密钥短。以现今的运算技术来说,计算量已经不算很大。

不过,如果增加密钥的长度,其安全性也可以相应地增强。3DES正是基于这样的原理。加密时,使用2个不同的密钥K1和密钥K2对1个分组进行3次加密。也就是说,先用密钥K1加密,然后用密钥K2解密,最后用密钥K1加密;解密时则先用密钥K1解密,然后用密钥K2加密,最后用密钥K1解密。

  计算式如下:

C=E1(D2(E1(P)))  (1)

P=D1(E1(D1(C)))  (2)

  其中,P为明文,C为密文。Ei()为加密函数,Di()为解密函数。

  (2)Geffe发生器

  Geffe发生器是一种密钥序列发生器,利用线性反馈移位寄存器LFSR(Linear Feedback Shift Register)产生序列密码。LFSR的输出就是m序列,是一个伪随机序列。Geffe发生器使用了3个LFSR,以非线生方式组合。其中,2个LFSR作为复合器的输入,第3个LFSR控制复合器的输出。使用相关攻击,Geffe发生器的破译并不难,故而不能直接将它作为3DES算法的密钥,因此这里对其作取摘要处理。

  (3)MD5算法

  MD5(Message Digest)算法是由MIT的密码专家,RSA算法的发明人之一Ron Rivest设计发明的一种认证算法标准。MD5算法完成于1992年,它可以对任意长的报文输入,得到1个128位的输出。该算法可以保证2条不同的报文产生相同的摘要的可能性很小,并且由给定的摘要反向求其对应的报文极端困难。因此将摘要作为密钥既可以保证随机性,安全性也能提高了不少。

  3.2 密钥的生成机制

  无论从3DES算法本身,还是从该体制的加密原理来讲,密钥的生成机制都至关重要。因此,必须保证使用的密钥是安全的。其安全性体现为两个方面:一是密钥本身是随机的;一是密钥的管理机制。

  密钥的生成过程如下:先由Geffe发生器得到一随机序列,然后通过MD5算法取摘要,得到的128比特数据就是密钥K1和密钥K2组合。由Geffe发生器及MD5算法原理可以看出,这样产生的密钥是随机的。

  由该体制的工作过程可以看出,密钥的管理是安全的。这是由于在主程序内,加密结束后,随即将密钥销毁,主程序内不保留密钥;使用密钥时,通过监控程序从微狗内获取。微狗和DSP是物理分开的,保证了密钥存放的安全。

  4 结果分析

  严格地说,这种方法并不属于加密,只是一种保护手段——利用几个简单的,结合DSP和单片机的特点,构造一种保护体制。甚至其效果究竟如何,可以从2个方面分析。

  4.1 安全性分析

  既然是一种保护方法,那么安全性是最重要的指标。由这种体制的加密原理及工作过程,可以看出安全性可以保护。3DES算法,无论从理论上还是实践上,都是一种相当好的加密算法。虽然利用穷举攻击,该算法最终可以破译,但需要2 112次穷举,所花费的代价实在太大,可以说得不偿失。因此,只要保证密钥的安全,可以认为这种保护体制是完全的。而从密钥的生成过程和管理机制来讲,密钥是安全的。

  4.2 性能分析[4~6]

  这种保护方法的速度很快,因为3DES算法要是混乱和扩散的组合,只使用了标准的算术和逻辑运算。Geffe发生器和MD5算法用到的也主要是逻辑运算,用DSP或者单片机实现非常方便。譬如对于TMS320VC5402来说,Geffe发生器产生64字的伪随机序列需要296 544个周期,MD5处理64个字长的消息需要用3400个周期,所花费的时间分别为2965ms和0.003ms。

  因此,我们只是利用了一些简单的算法,结合DSP和1片微狗,构造出1个DSP程序保护体制,以小代价获得了好的效果,还是很值得的。

关键字:算法  数据  写入  代码 引用地址:DSP程序构造的加密体制

上一篇:DSP程序构造的加密体制
下一篇:基于CPLD的数字滤波抗干扰电路设计

推荐阅读最新更新时间:2024-05-02 20:35

STM32F1x通过 IP 地址进行 GPRS 数据传输
一、所使用的模块为UNV-SIM800 V3.92( UNV 是全球鹰标识,V3.92 是硬件版本号)是全球鹰通讯推出的一款高性能工业 GSM/GPRS 模块。 (一)、其内嵌 TCP/IP 协议,可以实现 SMS,彩信,基站定位, GPRS 传输数据等功能。 (二)、UNV-SIM800 开发板 TTL 电平接口,以及供电VMCU 为 TTL 电平串口电压匹配端,不是 SIM800 板供电接口。VMCU 是用来控制SIM800 开发板的串口的输出的高电压值,不是给系统供电的管脚。当外部系统为5V 系统时,VMCU 要接 5V,如:与STC89C51 或 arduino 通信时,VMCU 要接 5V;当外部系统为 3.3V 系
[单片机]
STM32F1x通过 IP 地址进行 GPRS <font color='red'>数据</font>传输
如何在Linux下为STM32 MCU构建代码
步骤1:安装必需的软件 首先,安装必需的软件。 为ARM安装gcc编译器: gcc编译器包含用于编译,链接和构建MCU的构建代码的工具。安装以下三个软件包: gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi sudo apt-get install gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi 安装STM32CubeMX STM32CubeMX是用于生成C项目的基于Java的工具。借助此工具可以配置使用过的MCU的所有部分,例如USART,I2C,SPI,GPIO,
[单片机]
如何在Linux下为STM32 MCU构建<font color='red'>代码</font>
时间片轮转算法在单片机程序设计中的应用
传统的单任务编程思想对于明显的顺序控制要求编程简单、思路清晰、开发周期短;但对于任务较多、控制功能复杂的问题时,却难以满足要求。因此,有必要对传统的单任务设计思想进行改进。时间片轮转算法是实现多任务调度的一种常用算法。在这种算法中,系统将所有的任务按顺序排成一个队列,每次调度时把CPU分配给队首的任务,并令其执行一个时间片,构成微观上轮流运行、宏观上并执行的多任务效果。作者在基于单片机的分级分布式控制系统 程控对讲系统的用户控制器程序中引入多任务机制,采用时间片轮转算法极大地改善了程序结构,实现了对32个独立用户的有效控制。这种程序设计思想也可以到其它以单片机为核心的分级分布控制系统软件设计中。 1 系统组成 程控对讲系统是一
[电源管理]
时间片轮转<font color='red'>算法</font>在单片机程序设计中的应用
代码是数字化转型的万能药吗?
低代码开发是一种可视化应用开发方法。通过低代码开发,即使是不懂编程的业务人员也能够通过图形用户界面,使用可视化建模和拖放式组件来创建企业应用。对于现代企业而言,需要根据快速变化的工作环境而做出调整,当快速应变能力与数字化转型相结合时,低代码开发便有了施展空间,由于其具有简单高效的特点,近年来越来越得到业界追捧。 但即便如此,低代码仍然有一些壁垒,从而影响在行业中的普及,对此西门子Mendix公司中国区总经理王炯表示,“业界已经普遍接受了低代码的概念,但是有些人可能采纳程度快一些,有些人慢一些,我们现在要做的就是加速低代码的进程,让更多客户可以从中受益。” 西门子低代码加速在华进程 Mendix公司 2005年在荷兰成立
[嵌入式]
关注三大公共云的数据隐私问题
在云迁移的时候,我们最关注的问题莫过于数据隐私问题,据市场统计可知,向云转移预计会在未来五年带来1万亿美元的直接或间接支出,就是说,对于企业那就是一笔巨大的开销。用户的隐私永远都是企业的首要问题,说到如何打消客户的这些顾虑,以便扩大业务,云服务提供商确实面临挑战。 数据隐私问题在2016年的受关注度达到了空前的高度,这主要归因于这几个因素:苹果公司与FBI围绕加密的iPhone展开了旷日持久的争论,欧洲出台了新法规,以及人们一直担忧美国国家安全局和政府访问爱德华·斯诺登披露的个人信息。 JD·谢里(JD Sherry)是总部位于丹佛的解决方案提供商Op TI v Security公司的副总裁,他说:“毫无疑问,数据隐私是向
[网络通信]
中移动15亿元打造(保定)数据中心 助力雄安新区快速崛起
作为通信行业的主导运营商,中国移动不断完善通信信息基础设施建设,在移动互联网、云计算、大数据、物联网领域积极布局,培育创新发展能力。其中,落户河北保定的数据中心,是中国移动在京津冀一体化大背景下全国IDC战略布局的重要组成部分,也是目前华北地区规模最大的数据中心。 总投资约15亿元的中国移动(河北保定)数据中心,以“立足保定、服务河北、支撑全国”为目标,预计今年9月底建成并投入使用,届时将满足8000个机架的装机需求,提供800G的出口带宽接入能力,着力打造河北乃至全国的互联网内容和云计算资源聚集地。 投资15亿元 规模建设支撑京津冀一体化战略 在京津冀协同发展的大背景下,在“互联网+”时代,保定作为首都功能疏散和京津
[网络通信]
如何在Python或MATLAB环境中使用ACE快速评估数据转换器
如何在Python或MATLAB环境中使用ACE快速评估数据转换器 摘要 评估板(EVB)及其配套软件具有即插即用功能,可轻松评估ADI产品的性能。其图形用户界面(GUI)提供了直观的方式,可进行手动配置并与该设备通信。但是,在更复杂的产品中,如果不能自动处理这些重复性任务,那么在评估所有可用功能的同时,扫描产品的所有附加功能可能会变得非常耗时。 文中说明了如何记录宏,以及如何无需开发复杂的软件控制器代码,也能在Python®和MATLAB®环境中使用宏来自动处理某些评估任务。本文以ADI的AD7380和AD7606C-16为例自动处理所有用户交互,用于扫描不同的配置,发起转换,然后导出结果。通过使用这些示例,来自动
[模拟电子]
如何在Python或MATLAB环境中使用ACE快速评估<font color='red'>数据</font>转换器
labview编程技巧-----chart 如何不连续显示数据
chart的内部数据结构是一个FIFO缓冲区,默认长度是1024,它即可可以输入单点数据也可以输入数组类型数据,即可以显示单条曲线,也可以同时显示多条曲线. 以单条曲线为例,有的时候,需要根据外部要求决定是否显示采集的数据,比如按钮,开关等 有两种方法可以满足这个要求: 一:在WHILE循环中加CASE结构,决定是否显示. 当BOOLEAN=TRUE时,CHART更新,当BOOLEAN=FALSE时,CHART停止不动,X轴点数不增加,如果采用时间显示,似乎采集处于停止状态,当BOOLEAN 由FALSE--- TURE时,延续上一次的曲线. 二:一直保持CHART的更新状态,在BOOLEAN=FALSE时,仅仅不显
[测试测量]
labview编程技巧-----chart 如何不连续显示<font color='red'>数据</font>
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved