嵌入式設備被抄襲已是一種普遍現象,特別是在國內,在沒有形成技術壁壘之前,如何防止產品被抄襲是一個不可回避的問題。
今天就來講講嵌入式設備,如何防止被抄襲?
常規設備
常規設備主要的防護手段有:
專利保護
加密保護代碼
授權校驗
持續更新和改進
(1)專利保護
對于一些比較重要的技術發明或是創新,應該盡快申請專利。雖然目前國內對于知識產權保護的力度有限,但申請專利還是有用的,至少可以避免專利被別人提前申請,導致自己侵權。
(2)加密保護代碼
這里會涉及到加密與性能和成本的平衡,如果對設備成本不是很敏感,可以添加加密芯片;如果是要對程序進行加密,這可能會影響程序的執行效率。
(3)授權校驗
在產品中引入授權驗證機制,例如使用加密密鑰或者授權證書,以驗證產品的合法性。這可以有效防止未經授權的復制和使用。
(4)持續更新和改進
及時修復軟件中的漏洞和缺陷,持續進行功能改進和升級。這樣可以讓產品保持競爭優勢,并減少被抄襲的動力。
嵌入式設備
對于嵌入式設備而言,主要涉及到結構外觀,硬件電路,嵌入式軟件。除上面介紹的方法,還可以有下面幾種方式,可以增加被抄襲的難度
打磨關鍵芯片LOGO
關閉調試串口
flash 設置讀保護
對關鍵信息進行加密和混淆
(1)打磨關鍵芯片LOGO
在嵌入式系統中,不同的處理器,使用不同的交叉編譯工具,程序分區布局情況也不一樣,可以增加逆向工程分析難度
(2)關閉調試串口
正常產品,在量產的時候都應該關閉調試串口,有兩個目的:
避免調試串口有信號干擾,影響系統穩定性。
調試串口一般都會把程序的一些調試和系統信息打印出來,別人可以從這些信息入手進行逆向分析。
(3)flash 設置讀保護
有一些MCU,在它的燒錄器中是可以設置讀保護的,也就是使用工具無法直接讀取MCU里面的程序。
常規的flash也有保護機制,但是保護等級很弱,可以增加加密芯片的方式來避免程序被直接拷貝。但是會影響程序的效率以及增加設備成本。
(4)對關鍵信息進行加密和混淆
在嵌入式系統中,受限于flash容量大小影響,一般都會對執行程序進行格式轉換,再壓縮。運行的時候,先解壓,再進行格式轉換,最后再運行。
在這里可以增加一個步驟,就是加密和混淆,先對關鍵信息進行加密,然后再轉換,之后再壓縮,這樣可以大大增加逆向分析的難度。
君正程序破解
下面以君正廣發的方案進行分析:
君正的執行程序是放置在根文件系統上,根文件系統掛載上之后,先進行一些初始化設置,然后就直接運行在根文件系統的執行程序。
拿到一個君正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. 只對關鍵信息加密
對嵌入式系統而言,關鍵信息可以是:
某些關鍵算法庫
產品序列號等信息
算法模型文件等
加密和解密方式與上面根文件系統加密方式一樣,區別是在系統運行的不同階段進行解密操作
優點是不會影響系統的啟動速遞
缺點是相對來說,比較容易被逆向分析
最后
所有的加密都有被破解的可能,實際設計產品應根據產品行業安全等級去設計不同等級的加密。不提倡大家去抄襲破解別人的設備,但也應合理地保護好自己的知識產權。
持續更新和改進自己的產品設計方案,讓自己的產品和方案形成技術壁壘,這就不會過度的擔心自己產品被抄襲了。
審核編輯:劉清
-
mcu
+關注
關注
146文章
17123瀏覽量
350995 -
FlaSh
+關注
關注
10文章
1633瀏覽量
147944 -
嵌入式設備
+關注
關注
0文章
110瀏覽量
16955 -
燒錄器
+關注
關注
3文章
184瀏覽量
26279
原文標題:嵌入式設備,如何防止被抄襲?
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論