嵌入式設備被抄襲已是一種普遍現(xiàn)象,特別是在國內(nèi),在沒有形成技術壁壘之前,如何防止產(chǎn)品被抄襲是一個不可回避的問題。
今天就來講講嵌入式設備,如何防止被抄襲?
常規(guī)設備
常規(guī)設備主要的防護手段有:
專利保護
加密保護代碼
授權校驗
持續(xù)更新和改進
(1)專利保護
對于一些比較重要的技術發(fā)明或是創(chuàng)新,應該盡快申請專利。雖然目前國內(nèi)對于知識產(chǎn)權保護的力度有限,但申請專利還是有用的,至少可以避免專利被別人提前申請,導致自己侵權。
(2)加密保護代碼
這里會涉及到加密與性能和成本的平衡,如果對設備成本不是很敏感,可以添加加密芯片;如果是要對程序進行加密,這可能會影響程序的執(zhí)行效率。
(3)授權校驗
在產(chǎn)品中引入授權驗證機制,例如使用加密密鑰或者授權證書,以驗證產(chǎn)品的合法性。這可以有效防止未經(jīng)授權的復制和使用。
(4)持續(xù)更新和改進
及時修復軟件中的漏洞和缺陷,持續(xù)進行功能改進和升級。這樣可以讓產(chǎn)品保持競爭優(yōu)勢,并減少被抄襲的動力。
嵌入式設備
對于嵌入式設備而言,主要涉及到結(jié)構(gòu)外觀,硬件電路,嵌入式軟件。除上面介紹的方法,還可以有下面幾種方式,可以增加被抄襲的難度
打磨關鍵芯片LOGO
關閉調(diào)試串口
flash 設置讀保護
對關鍵信息進行加密和混淆
(1)打磨關鍵芯片LOGO
在嵌入式系統(tǒng)中,不同的處理器,使用不同的交叉編譯工具,程序分區(qū)布局情況也不一樣,可以增加逆向工程分析難度
(2)關閉調(diào)試串口
正常產(chǎn)品,在量產(chǎn)的時候都應該關閉調(diào)試串口,有兩個目的:
避免調(diào)試串口有信號干擾,影響系統(tǒng)穩(wěn)定性。
調(diào)試串口一般都會把程序的一些調(diào)試和系統(tǒng)信息打印出來,別人可以從這些信息入手進行逆向分析。
(3)flash 設置讀保護
有一些MCU,在它的燒錄器中是可以設置讀保護的,也就是使用工具無法直接讀取MCU里面的程序。
常規(guī)的flash也有保護機制,但是保護等級很弱,可以增加加密芯片的方式來避免程序被直接拷貝。但是會影響程序的效率以及增加設備成本。
(4)對關鍵信息進行加密和混淆
在嵌入式系統(tǒng)中,受限于flash容量大小影響,一般都會對執(zhí)行程序進行格式轉(zhuǎn)換,再壓縮。運行的時候,先解壓,再進行格式轉(zhuǎn)換,最后再運行。
在這里可以增加一個步驟,就是加密和混淆,先對關鍵信息進行加密,然后再轉(zhuǎn)換,之后再壓縮,這樣可以大大增加逆向分析的難度。
君正程序破解
下面以君正廣發(fā)的方案進行分析:
君正的執(zhí)行程序是放置在根文件系統(tǒng)上,根文件系統(tǒng)掛載上之后,先進行一些初始化設置,然后就直接運行在根文件系統(tǒng)的執(zhí)行程序。
拿到一個君正T系列官方的固件,如果要進行破解,基本的流程應該如下:
找到根文件系統(tǒng)的位置
解壓根文件系統(tǒng)
恢復文件系統(tǒng)格式
找到可執(zhí)行程序
對可執(zhí)行程序進行反編譯等操作
(1)找到根文件系統(tǒng)的位置
這里涉及到根文件系統(tǒng)的起始位置和大小。
一般而言,根文件系統(tǒng)會是在一個獨立的分區(qū),而分區(qū)信息是可以在boot的參數(shù)中去獲取,同時可以獲取到根文件系統(tǒng)的類型等信息
對于君正官方的固件,可以在boot中找到bootargs,bootcmd等信息:

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

(2)解壓和恢復根文件系統(tǒng)
官方打包的操作方法是:
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 文件
如果要逆向操作,可以執(zhí)行下面命令:
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 文件中的內(nèi)容將被解包并恢復為原始的文件和目錄結(jié)構(gòu),這些文件和目錄將出現(xiàn)在當前工作目錄中。
通過etc/init.d/rcS 文件可以找到有啟動哪些程序,對應程序放置在什么位置,最后可以通過反匯編等信息得到想要的信息。
(四)如何防止被逆向破解
通過上面對君正官方的設計分析,對于內(nèi)行的專業(yè)工程師,還是比較容易被破解。那可以通過什么手段增加被破解的難度呢?
1.對整個根文件系統(tǒng)進行加密
加密分為對稱加密和非對稱加密,在嵌入式系統(tǒng)中,比較推薦使用對稱加密的算法,比如AES算法
編譯打包過程
選擇AES密鑰長度
生成密鑰
使用密鑰對文件進行加密
將加密的rootfs_camera.cpio.lzo 打包到固件包里
設備運行流程
kernel 在啟動過程中,會將根文件系統(tǒng)拷貝到內(nèi)存中,然后再進行解壓
在解壓之前,使用打包時的密鑰進行解密,之后再按原來流程繼續(xù)執(zhí)行
優(yōu)缺點
優(yōu)點是可以對整個文件系統(tǒng)進行加密,破解的難度會比較高
缺點是會影響啟動速度,如果對于快速啟動系統(tǒng),這種方式會有影響
2. 只對關鍵信息加密
對嵌入式系統(tǒng)而言,關鍵信息可以是:
某些關鍵算法庫
產(chǎn)品序列號等信息
算法模型文件等
加密和解密方式與上面根文件系統(tǒng)加密方式一樣,區(qū)別是在系統(tǒng)運行的不同階段進行解密操作
優(yōu)點是不會影響系統(tǒng)的啟動速遞
缺點是相對來說,比較容易被逆向分析
最后
所有的加密都有被破解的可能,實際設計產(chǎn)品應根據(jù)產(chǎn)品行業(yè)安全等級去設計不同等級的加密。不提倡大家去抄襲破解別人的設備,但也應合理地保護好自己的知識產(chǎn)權。
持續(xù)更新和改進自己的產(chǎn)品設計方案,讓自己的產(chǎn)品和方案形成技術壁壘,這就不會過度的擔心自己產(chǎn)品被抄襲了。
審核編輯:劉清
-
mcu
+關注
關注
147文章
18924瀏覽量
398033 -
FlaSh
+關注
關注
10文章
1748瀏覽量
155513 -
嵌入式設備
+關注
關注
0文章
121瀏覽量
17714 -
燒錄器
+關注
關注
3文章
258瀏覽量
29166
原文標題:嵌入式設備,如何防止被抄襲?
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
嵌入式系統(tǒng)安全設計原則
什么是嵌入式應用開發(fā)?
arm嵌入式主板優(yōu)缺點
嵌入式和FPGA的區(qū)別
嵌入式系統(tǒng)的定義和應用領域
嵌入式開發(fā)的關鍵點介紹
嵌入式實時操作系統(tǒng)的特點
嵌入式需要掌握哪些核心技能?
入行嵌入式應該怎么準備?
飛凌嵌入式RK3576多模態(tài)大模型圖像理解助手,讓嵌入式設備“看懂”世界
嵌入式工業(yè)顯示器如何提升自動化設備的操作效率??
Linux嵌入式和單片機嵌入式的區(qū)別?
嵌入式開發(fā)入門指南:從零開始學習嵌入式
飛凌嵌入式2025嵌入式及邊緣AI技術論壇圓滿結(jié)束
飛凌嵌入式「2025嵌入式及邊緣AI技術論壇」議程公布
講講嵌入式設備,如何防止被抄襲?
評論