嵌入式設(shè)備被抄襲已是一種普遍現(xiàn)象,特別是在國(guó)內(nèi),在沒(méi)有形成技術(shù)壁壘之前,如何防止產(chǎn)品被抄襲是一個(gè)不可回避的問(wèn)題。
今天就來(lái)講講嵌入式設(shè)備,如何防止被抄襲?
常規(guī)設(shè)備
常規(guī)設(shè)備主要的防護(hù)手段有:
專(zhuān)利保護(hù)
加密保護(hù)代碼
授權(quán)校驗(yàn)
持續(xù)更新和改進(jìn)
(1)專(zhuān)利保護(hù)
對(duì)于一些比較重要的技術(shù)發(fā)明或是創(chuàng)新,應(yīng)該盡快申請(qǐng)專(zhuān)利。雖然目前國(guó)內(nèi)對(duì)于知識(shí)產(chǎn)權(quán)保護(hù)的力度有限,但申請(qǐng)專(zhuān)利還是有用的,至少可以避免專(zhuān)利被別人提前申請(qǐng),導(dǎo)致自己侵權(quán)。
(2)加密保護(hù)代碼
這里會(huì)涉及到加密與性能和成本的平衡,如果對(duì)設(shè)備成本不是很敏感,可以添加加密芯片;如果是要對(duì)程序進(jìn)行加密,這可能會(huì)影響程序的執(zhí)行效率。
(3)授權(quán)校驗(yàn)
在產(chǎn)品中引入授權(quán)驗(yàn)證機(jī)制,例如使用加密密鑰或者授權(quán)證書(shū),以驗(yàn)證產(chǎn)品的合法性。這可以有效防止未經(jīng)授權(quán)的復(fù)制和使用。
(4)持續(xù)更新和改進(jìn)
及時(shí)修復(fù)軟件中的漏洞和缺陷,持續(xù)進(jìn)行功能改進(jìn)和升級(jí)。這樣可以讓產(chǎn)品保持競(jìng)爭(zhēng)優(yōu)勢(shì),并減少被抄襲的動(dòng)力。
嵌入式設(shè)備
對(duì)于嵌入式設(shè)備而言,主要涉及到結(jié)構(gòu)外觀,硬件電路,嵌入式軟件。除上面介紹的方法,還可以有下面幾種方式,可以增加被抄襲的難度
打磨關(guān)鍵芯片LOGO
關(guān)閉調(diào)試串口
flash 設(shè)置讀保護(hù)
對(duì)關(guān)鍵信息進(jìn)行加密和混淆
(1)打磨關(guān)鍵芯片LOGO
在嵌入式系統(tǒng)中,不同的處理器,使用不同的交叉編譯工具,程序分區(qū)布局情況也不一樣,可以增加逆向工程分析難度
(2)關(guān)閉調(diào)試串口
正常產(chǎn)品,在量產(chǎn)的時(shí)候都應(yīng)該關(guān)閉調(diào)試串口,有兩個(gè)目的:
避免調(diào)試串口有信號(hào)干擾,影響系統(tǒng)穩(wěn)定性。
調(diào)試串口一般都會(huì)把程序的一些調(diào)試和系統(tǒng)信息打印出來(lái),別人可以從這些信息入手進(jìn)行逆向分析。
(3)flash 設(shè)置讀保護(hù)
有一些MCU,在它的燒錄器中是可以設(shè)置讀保護(hù)的,也就是使用工具無(wú)法直接讀取MCU里面的程序。
常規(guī)的flash也有保護(hù)機(jī)制,但是保護(hù)等級(jí)很弱,可以增加加密芯片的方式來(lái)避免程序被直接拷貝。但是會(huì)影響程序的效率以及增加設(shè)備成本。
(4)對(duì)關(guān)鍵信息進(jìn)行加密和混淆
在嵌入式系統(tǒng)中,受限于flash容量大小影響,一般都會(huì)對(duì)執(zhí)行程序進(jìn)行格式轉(zhuǎn)換,再壓縮。運(yùn)行的時(shí)候,先解壓,再進(jìn)行格式轉(zhuǎn)換,最后再運(yùn)行。
在這里可以增加一個(gè)步驟,就是加密和混淆,先對(duì)關(guān)鍵信息進(jìn)行加密,然后再轉(zhuǎn)換,之后再壓縮,這樣可以大大增加逆向分析的難度。
君正程序破解
下面以君正廣發(fā)的方案進(jìn)行分析:
君正的執(zhí)行程序是放置在根文件系統(tǒng)上,根文件系統(tǒng)掛載上之后,先進(jìn)行一些初始化設(shè)置,然后就直接運(yùn)行在根文件系統(tǒng)的執(zhí)行程序。
拿到一個(gè)君正T系列官方的固件,如果要進(jìn)行破解,基本的流程應(yīng)該如下:
找到根文件系統(tǒng)的位置
解壓根文件系統(tǒng)
恢復(fù)文件系統(tǒng)格式
找到可執(zhí)行程序
對(duì)可執(zhí)行程序進(jìn)行反編譯等操作
(1)找到根文件系統(tǒng)的位置
這里涉及到根文件系統(tǒng)的起始位置和大小。
一般而言,根文件系統(tǒng)會(huì)是在一個(gè)獨(dú)立的分區(qū),而分區(qū)信息是可以在boot的參數(shù)中去獲取,同時(shí)可以獲取到根文件系統(tǒng)的類(lèi)型等信息
對(duì)于君正官方的固件,可以在boot中找到bootargs,bootcmd等信息:
通過(guò)上面可以知道rootfs的大小為6048K,起始位置為5728K = 0X598000
(2)解壓和恢復(fù)根文件系統(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 命令將當(dāng)前文件及其子文件打包成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 文件解壓到當(dāng)前目錄
cpio -i < rootfs_camera.cpio
rootfs_camera.cpio 文件中的內(nèi)容將被解包并恢復(fù)為原始的文件和目錄結(jié)構(gòu),這些文件和目錄將出現(xiàn)在當(dāng)前工作目錄中。
通過(guò)etc/init.d/rcS 文件可以找到有啟動(dòng)哪些程序,對(duì)應(yīng)程序放置在什么位置,最后可以通過(guò)反匯編等信息得到想要的信息。
(四)如何防止被逆向破解
通過(guò)上面對(duì)君正官方的設(shè)計(jì)分析,對(duì)于內(nèi)行的專(zhuān)業(yè)工程師,還是比較容易被破解。那可以通過(guò)什么手段增加被破解的難度呢?
1.對(duì)整個(gè)根文件系統(tǒng)進(jìn)行加密
加密分為對(duì)稱加密和非對(duì)稱加密,在嵌入式系統(tǒng)中,比較推薦使用對(duì)稱加密的算法,比如AES算法
編譯打包過(guò)程
選擇AES密鑰長(zhǎng)度
生成密鑰
使用密鑰對(duì)文件進(jìn)行加密
將加密的rootfs_camera.cpio.lzo 打包到固件包里
設(shè)備運(yùn)行流程
kernel 在啟動(dòng)過(guò)程中,會(huì)將根文件系統(tǒng)拷貝到內(nèi)存中,然后再進(jìn)行解壓
在解壓之前,使用打包時(shí)的密鑰進(jìn)行解密,之后再按原來(lái)流程繼續(xù)執(zhí)行
優(yōu)缺點(diǎn)
優(yōu)點(diǎn)是可以對(duì)整個(gè)文件系統(tǒng)進(jìn)行加密,破解的難度會(huì)比較高
缺點(diǎn)是會(huì)影響啟動(dòng)速度,如果對(duì)于快速啟動(dòng)系統(tǒng),這種方式會(huì)有影響
2. 只對(duì)關(guān)鍵信息加密
對(duì)嵌入式系統(tǒng)而言,關(guān)鍵信息可以是:
某些關(guān)鍵算法庫(kù)
產(chǎn)品序列號(hào)等信息
算法模型文件等
加密和解密方式與上面根文件系統(tǒng)加密方式一樣,區(qū)別是在系統(tǒng)運(yùn)行的不同階段進(jìn)行解密操作
優(yōu)點(diǎn)是不會(huì)影響系統(tǒng)的啟動(dòng)速遞
缺點(diǎn)是相對(duì)來(lái)說(shuō),比較容易被逆向分析
最后
所有的加密都有被破解的可能,實(shí)際設(shè)計(jì)產(chǎn)品應(yīng)根據(jù)產(chǎn)品行業(yè)安全等級(jí)去設(shè)計(jì)不同等級(jí)的加密。不提倡大家去抄襲破解別人的設(shè)備,但也應(yīng)合理地保護(hù)好自己的知識(shí)產(chǎn)權(quán)。
持續(xù)更新和改進(jìn)自己的產(chǎn)品設(shè)計(jì)方案,讓自己的產(chǎn)品和方案形成技術(shù)壁壘,這就不會(huì)過(guò)度的擔(dān)心自己產(chǎn)品被抄襲了。
審核編輯:劉清
-
mcu
+關(guān)注
關(guān)注
146文章
16885瀏覽量
349920 -
FlaSh
+關(guān)注
關(guān)注
10文章
1614瀏覽量
147655 -
嵌入式設(shè)備
+關(guān)注
關(guān)注
0文章
110瀏覽量
16925 -
燒錄器
+關(guān)注
關(guān)注
3文章
176瀏覽量
26191
原文標(biāo)題:嵌入式設(shè)備,如何防止被抄襲?
文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論