世界上萬物中的矛盾都是同時存在的,沒有牢不可破的盾牌。ATMEL公司的AVR系列微控制器也是如此。隨著AVR系列微控制器應用的普及化和在各行各業的大量應用,AVR系列微控制器也被一些專業從事破解的工作者(下文以“芯片黑客”稱呼)進行了長期的研究,因此已經從過去“不可以破解”的神壇上走了下來,破解的費用也已經從過去的天價降到了今天“青菜和蘿卜”的價格。其實對其它公司的微控制器也同樣如此,應用面廣了、客戶群多了、研究的“芯片黑客”多了,終究有一天會被“芯片黑客”找到能有效攻擊的“長矛”的。
在實際應用中我們還必須使用這些價廉物美的微控制器,不能因為哪一天會被“芯片黑客”破解而因噎廢食。但是如果解決這個矛盾呢?我們一般可以采取哪些方法,以保護自己的知識產權和提高盜版者的破解成本。
最官方的說法當然是利用法律武器來對付盜版者,此種方法就需要進行軟件版權注冊,另外還需要在程序中植入一些可以有效標識版權的信息。此法理論上可行,但實際操作中頗為困難。比如說“芯片黑客”將你的相關標識版權的信息修改了,怎么辦?另外,對于微控制器中“嵌入式軟件”,相關的費用也是一個大問題。
因此除了我們要有法律保護意識之外,還有必要采取一些簡便易行的技術手段來保護自已的嵌入式軟件。
1、 對軟件中標識版權的信息,采取一些加密算法進行保護,這樣“芯片黑客”們在沒有分析清楚相關的算法之前,是無法修改你的版權信息的。這種方法適用于有顯示或特定途徑輸出信息的產品。
2、 利用芯片本身的一些物理特征,阻止盜版程序的運行。阻止盜版程序的運行,推薦不要在檢測到盜版后立即起作用;而應當充分利用AVR EEPROM的功能,保存運行的次數或時間,在運行到足夠的時間后才阻止程序運行。這樣做,可以使盜版者可能面對比較大的返修和售后服務成本,從而提高破解成本。
3、 在程序中加入一些代碼完整性校驗,如算術累加和、CRC等。這樣做既可以防止“芯片黑客”修改你的代碼,同時又可以在自己的程序中檢查代碼是否完整,提高自己產品的可靠性。在校驗數據量比較大時,一般推薦使用CRC16,用戶可以根據ROM的富余情況和運算速度的要求,可以分別選擇查表法或計算法來實現。
4、 在PCB上放置一些專用的加密IC(如ATMEL的AT88SC系列安全存儲器),以保護自己的軟件。AT88SC是使用銀行卡的技術制造的安全存儲器,可以自由定制唯一的序列號,可以分為多個存儲塊,而各存儲塊還可以設定不同的訪問權限,AT88SC和MCU之間的數據交換,可以實現全密文通信,因此有很高的安全性。此種方法成本比前面的三種略高(其實對一個有正常利潤的產品是可以忽略不計的),但安全性也高。因為AT88SC本身有很高的安全性,盜版者目前無法克隆;而且一旦克隆,你很快就可以發現是誰盜了你的版,因為你可以在相應的AT88SC中保存一些只有你自己才可以“讀懂”的特殊信息。
在實際應用中,應該綜合上面的一些方法才會取得比較好的效果,并且要多采取一些變化措施。另外其中一些方法是需要特殊的工具支持的,雙龍公司愿意和您交流相關的方法和心得,并且在相關的特殊工具方面進行支持。 |