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

这篇具有很好参考价值的文章主要介绍了嵌入式开发,如何防止设备被抄袭?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

(一)常规设备

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

  • 专利保护
  • 加密保护代码
  • 授权校验
  • 持续更新和改进

(1)专利保护

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

(2)加密保护代码

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

(3)授权校验

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

(4)持续更新和改进

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

(二)嵌入式设备

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

  • 打磨关键芯片LOGO
  • 关闭调试串口
  • flash 设置读保护
  • 对关键信息进行加密和混淆

(1)打磨关键芯片LOGO

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

(2)关闭调试串口

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

  • 避免调试串口有信号干扰,影响系统稳定性。
  • 调试串口一般都会把程序的一些调试和系统信息打印出来,别人可以从这些信息入手进行逆向分析。

(3)flash 设置读保护

有一些MCU,在它的烧录器中是可以设置读保护的,也就是使用工具无法直接读取MCU里面的程序。常规的flash也有保护机制,但是保护等级很弱,可以增加加密芯片的方式来避免程序被直接拷贝。但是会影响程序的效率以及增加设备成本。

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

在嵌入式系统中,受限于flash容量大小影响,一般都会对执行程序进行格式转换,再压缩。运行的时候,先解压,再进行格式转换,最后再运行。在这里可以增加一个步骤,就是加密和混淆,先对关键信息进行加密,然后再转换,之后再压缩,这样可以大大增加逆向分析的难度。

(三)君正T系列程序破解

下面以君正广发的方案进行分析:
君正的执行程序是放置在根文件系统上,根文件系统挂载上之后,先进行一些初始化设置,然后就直接运行在根文件系统的执行程序。拿到一个君正T系列官方的固件,如果要进行破解,基本的流程应该如下:

  • 找到根文件系统的位置
  • 解压根文件系统
  • 恢复文件系统格式
  • 找到可执行程序
  • 对可执行程序进行反编译等操作

(1)找到根文件系统的位置

这里涉及到根文件系统的起始位置和大小。一般而言,根文件系统会是在一个独立的分区,而分区信息是可以在boot的参数中去获取,同时可以获取到根文件系统的类型等信息。对于君正官方的固件,可以在boot中找到bootargs,bootcmd等信息:
嵌入式开发,如何防止设备被抄袭?
通过上面可以知道rootfs的大小为6048K,起始位置为5728K = 0X598000
嵌入式开发,如何防止设备被抄袭?

(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. 只对关键信息加密

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

  • 某些关键算法库
  • 产品序列号等信息
  • 算法模型文件等

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

  • 优点是不会影响系统的启动速递
  • 缺点是相对来说,比较容易被逆向分析

结尾

所有的加密都有被破解的可能,实际设计产品应根据产品行业安全等级去设计不同等级的加密。不提倡大家去抄袭破解别人的设备,但也应合理地保护好自己的知识产权。
持续更新和改进自己的产品设计方案,让自己的产品和方案形成技术壁垒,这就不会过度的担心自己产品被抄袭了。文章来源地址https://www.toymoban.com/news/detail-476080.html

---------------------------End---------------------------
如需获取更多内容
请关注 liwen01 公众号
嵌入式开发,如何防止设备被抄袭?
         

到了这里,关于嵌入式开发,如何防止设备被抄袭?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正点原子嵌入式linux驱动开发——Linux 网络设备驱动

    网络驱动是linux里面驱动三巨头之一 ,linux下的网络功能非常强大,嵌入式linux中也常常用到网络功能。前面已经讲过了字符设备驱动和块设备驱动,本章就来学习一下linux里面的 网络设备驱动 。 本次笔记中讨论的都是有线网络! 提起网络,一般想到的硬件就是“网卡”。在

    2024年01月17日
    浏览(55)
  • 在嵌入式Linux设备上使用Flutter开发图形界面(试水)

    链接: https://www.bilibili.com/video/BV1qE411N7aC/?spm_id_from=333.880.my_history.page.clickvd_source=0c443477abedebf2fdf7abecef55405d 我是跟着这个视频安装 Docker Desktop for Windows + 启用k8s k8s网址 https://github.com/AliyunContainerService/k8s-for-docker-desktop 主要步骤参照 https://www.toradex.com/zh-cn/blog/zai-qian-ru-shi-linux-sh

    2024年02月21日
    浏览(33)
  • LabVIEW开发航空电子设备嵌入式诊断半物理仿真系统

    LabVIEW开发航空电子设备嵌入式诊断半物理仿真系统 航电集成系统是现代战争飞机的重要组成部分,包括惯性导航系统、飞行控制系统、机电管理系统和任务计算机等子系统。战机的作战性能与航电系统息息相关,可以说,没有高性能的空电系统,战斗机就没有机会实现高性

    2024年02月16日
    浏览(37)
  • 嵌入式Linux系统中的设备驱动开发:从设备树到驱动实现

    大家好,今天给大家介绍 嵌入式Linux系统中的设备驱动开发:从设备树到驱动实现 ,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全! 可进群免费领取。 在嵌入式Linux系统中,设备驱动是连接硬件设备和操作系统之间的桥梁。

    2024年02月19日
    浏览(44)
  • 嵌入式Linux:如何进行嵌入式Linux开发?

    目录 1、裸机开发 2、SDK开发 3、驱动开发 3.1、字符设备驱动 3.2、块设备驱动 3.3、网络设备驱动 4、应用开发 嵌入式Linux开发主要有四种方式:裸机开发、SDK开发、驱动开发和应用开发。 裸机开发通常指在没有操作系统支持的环境中直接在硬件上运行程序的开发。这种开发方

    2024年01月25日
    浏览(62)
  • 嵌入式Linux驱动开发——解决/sys/bus/spi/devices下没有对应的spi设备文件

    最近在学习Linux驱动开发中SPI总线的驱动框架,但在修改完设备树添加完对应的spi设备节点后,理应在/sys/bus/spi下会有对应的spi设备,我的目录下面没有。 无spi设备 然后我查看了/proc/device-tree,发现有对应的spi设备节点,我就先没有过多理会这个问题。 /proc/device-tree下有对应

    2024年02月16日
    浏览(34)
  • 韦东山嵌入式Liunx入门驱动开发一(Hello 驱动编程、GPIO基础知识、LED驱动、总线设备驱动模型)

    本人学习完韦老师的视频,因此来复习巩固,写以笔记记之。 韦老师的课比较难,第一遍不知道在说什么,但是坚持看完一遍,再来复习,基本上就水到渠成了。 看完视频复习的同学观看最佳! 基于 IMX6ULL-PRO 参考视频 Linux快速入门到精通视频 参考资料 :01_嵌入式Linux应用

    2024年04月25日
    浏览(56)
  • 在嵌入式开发中如何提高自己的代码水平

      在开始学习嵌入式系统或者单片机系统的时候,大多数人的学习方法都是自己找视频教程或书本自己学,有的人也许会掏钱报个培训班什么的跟着老师学。   当自己慢慢的可以独立写代码的时候,就会觉得已经学会了。特别是自己能独立完成一些简单的项目之后感觉自

    2024年02月09日
    浏览(23)
  • 【嵌入式Linux内核驱动】04_Jetson nano GPIO应用 | 驱动开发 | 官方gpiolib、设备树与chip_driver

    0.暴露给应用层 应用 解决调试目录为空的问题 调试信息 1.最简读写文件(在/SYS下) 设备树 验证测试 编译文件 驱动 of_get_named_gpio_flags //获取设备树节点的属性 gpio_is_valid //判断是否合法 devm_gpio_request //申请使用gpio,并调用设置pinctrl device_create_file //根据设备树节点属性,创建

    2024年02月07日
    浏览(45)
  • 可移动嵌入式设备

      可移动嵌入式设备是数据客户端的一种表现形式。软件的代码编写之后是运行在服务器之上,   服务器的数据为客户端提供服务的模式为服务器客户端模式,server2client 架构。服务器可以是大型的机器,也可以是小型机,主要看数据处理量和用户量的大小。一台计算机其实

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包