|
學(xué)嵌入式用神馬電腦_英創(chuàng)信息技術(shù)的整機(jī)產(chǎn)品安全性分析,
英創(chuàng)公司自2001年開(kāi)始推出嵌入式工控主板產(chǎn)品至今,已有十一歷史。無(wú)數(shù)的客戶采用了英創(chuàng)的工控主板作為其產(chǎn)品的核心平臺(tái),從而以更低的開(kāi)發(fā)代價(jià)、更短的開(kāi)發(fā)時(shí)間,把產(chǎn)品推向市場(chǎng)。隨著客戶的廣泛應(yīng)用,英創(chuàng)公司也在客戶規(guī)模化采購(gòu)中獲得收益。因此我們自然希望英創(chuàng)客戶的產(chǎn)品能在市場(chǎng)上始終保持其獨(dú)特的競(jìng)爭(zhēng)優(yōu)勢(shì),相應(yīng)地,提供必要的技術(shù)手段,保護(hù)客戶基于英創(chuàng)主板的技術(shù)投入(主要體現(xiàn)在客戶的應(yīng)用程序),也變成了我們技術(shù)服務(wù)的重要方面之一。
英創(chuàng)的工控主板是作為一種通用的產(chǎn)品在市場(chǎng)上銷售的,客戶采用作為基本的平臺(tái),并在其上開(kāi)發(fā)自己的應(yīng)用程序,最終構(gòu)成自己的產(chǎn)品。這里有一種擔(dān)心存在,那就是競(jìng)爭(zhēng)對(duì)手是否會(huì)直接拷貝客戶應(yīng)用程序,然后購(gòu)買相同的主板,從而很容易形成與其競(jìng)爭(zhēng)的產(chǎn)品。本文試圖從多個(gè)方面分析基于英創(chuàng)主板的產(chǎn)品安全性問(wèn)題,幫助客戶對(duì)其產(chǎn)品的安全性能有一個(gè)比較全面綜合的評(píng)估。就我們對(duì)這十多年客戶產(chǎn)品應(yīng)用的情況來(lái)看,采用英創(chuàng)主板的產(chǎn)品的安全性是非常高的,這主要是由于客戶的產(chǎn)品通常都具有以下的壁壘:
1、市場(chǎng)先機(jī)的壁壘:
工業(yè)控制領(lǐng)域的市場(chǎng)都是比較專業(yè)性的市場(chǎng),隨著市場(chǎng)競(jìng)爭(zhēng)越發(fā)激烈,根據(jù)具體的需求,快速搭建產(chǎn)品并進(jìn)入市場(chǎng)已成為當(dāng)今產(chǎn)品開(kāi)發(fā)的趨勢(shì)。越來(lái)越多的客戶采用英創(chuàng)的工控主板,也正是基于這樣的市場(chǎng)要求。作為希望通過(guò)模仿對(duì)手的競(jìng)爭(zhēng)者來(lái)說(shuō),當(dāng)看到產(chǎn)品時(shí),表示客戶的產(chǎn)品已經(jīng)進(jìn)入市場(chǎng),已經(jīng)獲得了市場(chǎng)的先機(jī)。這種市場(chǎng)先機(jī)所形成的壁壘將大大的阻礙單純的模仿行為。
2、產(chǎn)品價(jià)格的壁壘:
絕大多數(shù)采用英創(chuàng)工控主板的客戶,都是生存在充分競(jìng)爭(zhēng)的市場(chǎng)經(jīng)濟(jì)環(huán)境、且為非壟斷性的企業(yè)。充分的市場(chǎng)競(jìng)爭(zhēng),往往就意味著產(chǎn)品只能保持正常的收益,而非暴利。如果再考慮到當(dāng)前“國(guó)進(jìn)民退”的大環(huán)境,則收益水平會(huì)更低。但這樣的薄利水平對(duì)競(jìng)爭(zhēng)者來(lái)說(shuō),則是一種很高的壁壘。
3、整機(jī)生產(chǎn)的壁壘:
采用英創(chuàng)主板的產(chǎn)品,都是以整機(jī)形式進(jìn)入市場(chǎng)的。作為整機(jī)產(chǎn)品,往往需要滿足很多現(xiàn)場(chǎng)的應(yīng)用需求,包括元器件的選型,PCB布局,現(xiàn)場(chǎng)設(shè)備安裝,電磁兼容性問(wèn)題的處置等等。這些“know-how”問(wèn)題,不是簡(jiǎn)單的模仿能夠獲得的。因此整機(jī)產(chǎn)品所體現(xiàn)的技術(shù)水準(zhǔn)是對(duì)競(jìng)爭(zhēng)者的第一層技術(shù)壁壘。
4、主板與程序的綁定:
讓客戶應(yīng)用程序與英創(chuàng)主板綁定的方法,是防止客戶應(yīng)用程序被拷貝的最基本的方法。具體操作是:英創(chuàng)在為客戶提供的主板中,燒寫入一個(gè)客戶指定的唯一ID號(hào),而客戶的應(yīng)用程序?qū)⑾騉S提交這個(gè)ID號(hào)進(jìn)行認(rèn)證。若認(rèn)證成功,應(yīng)用程序?qū)⒗^續(xù)正常運(yùn)行,否則系統(tǒng)將停止運(yùn)行,導(dǎo)致應(yīng)用程序也無(wú)法運(yùn)行。具體的調(diào)用形式為:
if(!KernelIoControl(IOCTL_HAL_CUSTOMER_ID_READ,
&dwUserID, // 輸入32-bit User ID號(hào)
sizeof(dwUserID), // dwUserID的變量長(zhǎng)度
NULL, 0, // 無(wú)需返回
NULL))
{
printf(“User ID authentication failed\r\n”);
}
競(jìng)爭(zhēng)者若想直接使用客戶應(yīng)用程序,需要有很強(qiáng)的程序逆向工程的能力,才能修改exe文件使之跳過(guò)認(rèn)證代碼。這樣的“能力”從經(jīng)營(yíng)來(lái)看,就是成本,就是壁壘。
5、利用平臺(tái)保護(hù)機(jī)制:
客戶還可考慮把應(yīng)用中已成熟的關(guān)鍵算法、關(guān)鍵通訊流程寫成獨(dú)立的API函數(shù),如BOOL UserCoreFunc(…),然后把這些關(guān)鍵API函數(shù)加上認(rèn)證,并構(gòu)成獨(dú)立的動(dòng)態(tài)連接庫(kù)DLL文件,把這個(gè)DLL交英創(chuàng)直接封裝到系統(tǒng)內(nèi)核中。利用內(nèi)核的防拷貝功能,來(lái)達(dá)到保護(hù)應(yīng)用程序的目的。DLL中的加密認(rèn)證形式為:
BOOL UserCoreFunc1(….)
{
if(! KernelIoControl(IOCTL_HAL_CUSTOMER_ID_READ,…))
{
printf(“User ID authentication failed\r\n”);
return FALSE;
}
// 調(diào)用真正的關(guān)鍵函數(shù)
return UserCoreFunc(….);
}
盡管采用該方法能夠獲得更好的保護(hù),但客戶程序的靈活性降低了。因此,需慎重考慮該方法的應(yīng)用。
總的來(lái)說(shuō),由于嵌入式系統(tǒng)的專業(yè)性,其產(chǎn)品的抗模仿的能力還是非常強(qiáng)的。這么多年來(lái)我們還沒(méi)有得到客戶反映他們的產(chǎn)品被模仿的案例。在所購(gòu)產(chǎn)品的客戶中,只有少數(shù)客戶需要主板與應(yīng)用程序綁定,也說(shuō)明了由市場(chǎng)、價(jià)格、產(chǎn)品硬件本身等因素所構(gòu)成的壁壘是非常高的。 |
|