0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式开发,如何防止设备被抄袭?

Dp1040 来源:liwen01 2023-08-31 16:50 次阅读

前言:

在国内做产品设计开发,很难避免不被抄袭,被仿照。在没有形成技术壁垒之前,如何防止产品被抄袭是一个不可回避的问题。

一、常规设备

常规设备主要的防护手段有:

  • 专利保护

  • 加密保护代码

  • 授权校验

  • 持续更新和改进

1、专利保护

对于一些比较重要的技术发明或是创新,应该尽快申请专利。虽然目前国内对于知识产权保护的力度有限,但申请专利还是有用的,至少可以避免专利被别人提前申请,导致自己侵权。

2、加密保护代码

这里会涉及到加密与性能和成本的平衡,如果对设备成本不是很敏感,可以添加加密芯片;如果是要对程序进行加密,这可能会影响程序的执行效率。

3、授权校验

在产品中引入授权验证机制,例如使用加密密钥或者授权证书,以验证产品的合法性。这可以有效防止未经授权的复制和使用。

4、持续更新和改进

及时修复软件中的漏洞和缺陷,持续进行功能改进和升级。这样可以让产品保持竞争优势,并减少被抄袭的动力。

二、嵌入式设备

对于嵌入式设备而言,主要涉及到结构外观,硬件电路,嵌入式软件。除上面介绍的方法,还可以有下面几种方式,可以增加被抄袭的难度。

  • 打磨关键芯片LOGO

  • 关闭调试串口

  • flash 设置读保护

  • 对关键信息进行加密和混淆

1、打磨关键芯片LOGO

嵌入式系统中,不同的处理器,使用不同的交叉编译工具,程序分区布局情况也不一样,可以增加逆向工程分析难度。

2、关闭调试串口

正常产品,在量产的时候都应该关闭调试串口,有两个目的:

  • 一是,避免调试串口有信号干扰,影响系统稳定性;

  • 二是,调试串口一般都会把程序的一些调试和系统信息打印出来,别人可以从这些信息入手进行逆向分析。

3、flash设置读保护

有一些MCU,在它的烧录器中是可以设置读保护的,也就是使用工具无法直接读取MCU里面的程序。

常规的flash也有保护机制,但保护等级很弱,可以增加加密芯片的方式来避免程序被直接拷贝,但会影响程序的效率以及增加设备成本。

4、对关键信息进行加密和混淆

在嵌入式系统中,受限于flash容量大小影响,一般都会对执行程序进行格式转换,再压缩。运行的时候,先解压,再进行格式转换,最后再运行。

在这里可以增加一个步骤,就是加密和混淆,先对关键信息进行加密,然后再转换,之后再压缩,这样可以大大增加逆向分析的难度。

三、君正T系列程序破解

下面以君正广发的方案进行分析:

君正的执行程序是放置在根文件系统上,根文件系统挂载上之后,先进行一些初始化设置,然后就直接运行在根文件系统的执行程序。

拿到一个君正T系列官方的固件,如果要进行破解,基本的流程应该如下:

  • 找到根文件系统的位置

  • 解压根文件系统

  • 恢复文件系统格式

  • 找到可执行程序

  • 对可执行程序进行反编译等操作

1、找到根文件系统的位置

这里涉及到根文件系统的起始位置和大小。

一般而言,根文件系统会是在一个独立的分区,而分区信息是可以在boot的参数中去获取,同时可以获取到根文件系统的类型等信息。

对于君正官方的固件,可以在boot中找到bootargs,bootcmd等信息:

68c04e76-47c1-11ee-97a6-92fbcf53809c.png

通过上面可以知道,rootfs的大小为6048K,起始位置为5728K = 0X598000。

6902b7b6-47c1-11ee-97a6-92fbcf53809c.png

2、解压和恢复根文件系统

官方打包的操作方法是:


		

find . | cpio -H newc -o > ../rootfs_camera.cpio lzop -9 -f rootfs_camera.cpio -o rootfs_camera.cpio.lzo

find . | cpio -H newc -o > ../rootfs_camera.cpio

它是使用cpio命令将当前文件及其子文件打包成rootfs_camera.cpio文件,使用的是newc文件格式。

lzop -9 -f rootfs_camera.cpio -o rootfs_camera.cpio.lzo

它是使用lzop命令,将rootfs_camera.cpio压缩成rootfs_camera.cpio.lzo文件。

如果要逆向操作,可以执行下面命令:


		

lzop -d rootfs_camera.cpio.lzo cpio -i < rootfs_camera.cpio

lzop -d rootfs_camera.cpio.lzo

rootfs_camera.cpio.lzo文件解压到当前目录:

cpio -i < rootfs_camera.cpio

rootfs_camera.cpio文件中的内容将被解包并恢复为原始的文件和目录结构,这些文件和目录将出现在当前工作目录中。

通过etc/init.d/rcS文件可以找到有启动哪些程序,对应程序放置在什么位置,最后可以通过反汇编等信息得到想要的信息。

四、如何防止被逆向破解?

通过上面对君正官方的设计分析,对于内行的专业工程师,还是比较容易被破解。那可以通过什么手段增加被破解的难度呢?

1、对整个根文件系统进行加密

加密分为对称加密和非对称加密,在嵌入式系统中,比较推荐使用对称加密的算法,比如AES算法。

编译打包过程:

  • 选择AES密钥长度

  • 生成密钥

  • 使用密钥对文件进行加密

  • 将加密的rootfs_camera.cpio.lzo打包到固件包里

设备运行流程:

  • kernel 在启动过程中,会将根文件系统拷贝到内存中,然后再进行解压

  • 在解压之前,使用打包时的密钥进行解密,之后再按原来流程继续执行。

优缺点对比:

  • 优点是可以对整个文件系统进行加密,破解的难度会比较高;

  • 缺点是会影响启动速度,如果对于快速启动系统,这种方式会有影响。

2、只对关键信息加密

对嵌入式系统而言,关键信息可以是:

  • 某些关键算法库

  • 产品序列号等信息

  • 算法模型文件等

加密和解密方式与上面根文件系统加密方式一样,区别是在系统运行的不同阶段进行解密操作。

  • 优点是不会影响系统的启动速递;

  • 缺点是相对来说,比较容易被逆向分析。

结语:

所有的加密都有被破解的可能,实际设计产品应根据产品行业安全等级去设计不同等级的加密。不提倡大家去抄袭破解别人的设备,但也应合理地保护好自己的知识产权。

持续更新和改进自己的产品设计方案,让自己的产品和方案形成技术壁垒,这就不会过度的担心自己产品被抄袭了。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5068

    文章

    19014

    浏览量

    303175
  • FlaSh
    +关注

    关注

    10

    文章

    1621

    浏览量

    147742
  • 嵌入式开发
    +关注

    关注

    18

    文章

    1022

    浏览量

    47510
  • 代码
    +关注

    关注

    30

    文章

    4742

    浏览量

    68343

原文标题:嵌入式开发,如何防止设备被抄袭?

文章出处:【微信号:玩点嵌入式,微信公众号:玩点嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式开发圣经

    嵌入式系统开发圣经:嵌入式开发圣经
    发表于 03-25 13:08 88次下载

    基于ARM的嵌入式开发

    基于ARM的嵌入式开发:华清远见/孙天泽基于ARM的嵌入式开发内容有:ARM简介,基于ARM的嵌入式产品,ARM架构,基于ARM的嵌入式开发
    发表于 10-04 08:49 83次下载

    嵌入式开发

    嵌入式开发就是指在嵌入式操作系统下进行开发嵌入式Linux是以Linux为基础的嵌入式作业系统。这里提供了
    发表于 12-20 13:21
    <b class='flag-5'>嵌入式开发</b>

    嵌入式开发入门_学嵌入式开发需要看哪些书籍

    现在嵌入式开发越来越吃香,很多人都想要学习却不知道要从何下手。本文分析了学习嵌入式软件开发需要具备哪些基本知识和技能,开发学习的基本步骤,并给出了各种参考资料及网站,同时小编还推荐了学
    的头像 发表于 04-04 10:25 2.5w次阅读

    嵌入式开发好学吗_嵌入式开发职业发展方向是什么

    本文首先来了解一下嵌入式前景及薪资待遇,其次解答了嵌入式开发好学不好学的问题,最后阐述了嵌入式开发必会知识以及嵌入式开发职业的四大发展方向,具体的跟随小编一起来了解一下。
    的头像 发表于 05-18 16:41 9119次阅读

    嵌入式开发的产品有哪些_嵌入式开发的流程

    本文主要阐述了嵌入式开发的产品,其次介绍了嵌入式开发的流程。
    发表于 08-31 15:38 1.1w次阅读

    嵌入式开发(一):嵌入式开发新手入门

    本篇文章整理下嵌入式开发中一些入门的基础技能,都是根据以往的工程经验整理,适用于之前没做过嵌入式开发的新手。嵌入式开发流程一般如下,一般是在PC机的Windows系统下安装Ubuntu虚拟机,搭建
    发表于 10-14 10:58 79次下载
    <b class='flag-5'>嵌入式开发</b>(一):<b class='flag-5'>嵌入式开发</b>新手入门

    嵌入式开发资料免费分享

    嵌入式开发资料免费分享嵌入式工程师经验分享:如何学习嵌入式开发截取文档部分学习嵌入式工程师经验分享的资料分享给大家,文档上从、嵌入式系统的概
    发表于 10-21 11:07 47次下载
    <b class='flag-5'>嵌入式开发</b>资料免费分享

    嵌入式开发Linux入门

    调试器嵌入式开发的流程步骤1:开发引导加载程序步骤2:内核实现步骤3:创建模块(设备驱动程序)步骤4:创建应用程序步骤5(最后一步):系统调整结束语导语近年来,“嵌入式
    发表于 11-02 14:36 31次下载
    <b class='flag-5'>嵌入式开发</b>Linux入门

    python做嵌入式开发_Python和嵌入式的区别是什么?可以做嵌入式开发吗?

    从概念上来说,嵌入式和Python的区别还是比较明显的,嵌入式是一个开发领域,而Python则是一门编程语言。下面就来和大家说一说嵌入式和Python这两个之间的区别。
    发表于 11-02 20:21 14次下载
    python做<b class='flag-5'>嵌入式开发</b>_Python和<b class='flag-5'>嵌入式</b>的区别是什么?可以做<b class='flag-5'>嵌入式开发</b>吗?

    嵌入式开发培训学什么?嵌入式开发板知识讲解

    嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等。另外,用c,c++或汇编开发;用高级处理器,arm7,a
    发表于 11-02 20:21 16次下载
    <b class='flag-5'>嵌入式开发</b>培训学什么?<b class='flag-5'>嵌入式开发</b>板知识讲解

    嵌入式开发 ---必看图书

    1.《linux驱动设备驱动开发详解》 基于linux4.0 是目前主流的 嵌入式开发用的系统 整个开发流程很详细,是嵌入式开发的入门之选,
    发表于 11-03 13:06 12次下载
    <b class='flag-5'>嵌入式开发</b> ---必看图书

    Linux系统的嵌入式开发是什么

    嵌入式开发听起来很高大上,但其实它就在我们身边。   嵌入式开发是指将操作系统、应用程序或数据存储在嵌入式设备中,如手机、平板电脑、智能家居等。   随着物联网时代的到来,
    的头像 发表于 10-12 15:40 1705次阅读

    讲讲嵌入式设备,如何防止抄袭

    嵌入式设备抄袭已是一种普遍现象,特别是在国内,在没有形成技术壁垒之前,如何防止产品
    的头像 发表于 10-23 10:48 588次阅读
    讲讲<b class='flag-5'>嵌入式</b><b class='flag-5'>设备</b>,如何<b class='flag-5'>防止</b><b class='flag-5'>被</b><b class='flag-5'>抄袭</b>?

    嵌入式开发,如何防止设备抄袭呢?

    嵌入式开发,如何防止设备抄袭呢? 嵌入式开发是指将微型电脑、微处理器、传感器等硬件
    的头像 发表于 10-29 16:33 857次阅读