新聞中心

        EEPW首頁 > 網絡與存儲 > 設計應用 > Flash型單片機的加密與解密

        Flash型單片機的加密與解密

        作者:清華大學 工程物理系 陳萌萌 時間:2005-04-19 來源: 收藏

        2005年4月A版

        摘要:隨著Flash型的普及,加密的技術已經有了較大的變化。本文以HCS12系列為例,介紹一種典型的加解密機制,并著重討論使用密碼加解密的方法以及相應的用戶接口程序設計思路。
        關鍵詞:Flash型單片機;加密;解密;密碼

        本文引用地址:http://www.104case.com/article/5105.htm

        引言
            廠商利用單片機進行產品開發時,都會關心其代碼和數據的保密性。考慮到用戶在編寫和調試代碼時所付出的時間和精力,代碼的成本是不言而喻的。
            早期的單片機,代碼是交給芯片制造商制成掩膜ROM。有兩種加密的機制,一是徹底破壞讀取代碼的功能,無論是開發者還是使用者都永遠無法讀取其中的內容。從安全上來說,這種方式很徹底,但是已經無法檢查ROM中的代碼了。另一種方法是不公開讀取方法,廠商仍可以讀取代碼。這種方式留有檢查代碼的可能性,但是并不能算是一種真正的“加密”,被破解的可能性是存在的。
            客觀地講,一方面希望加密很徹底,而另外一方面又希望留有檢查代碼的可能,這是相互矛盾的要求。
            自Flash技術得到廣泛應用以來,各類單片機制造商紛紛采用了多種不同的芯片加密方法,對比掩膜ROM芯片來說,Flash ROM在線可編程特性使得芯片的加密和解密方式變得更加靈活和可靠。在Flash型單片機中,芯片的加密和解密工作都是通過對Flash ROM的編程來完成的,由于用戶程序可以在線地改寫ROM的內容,可以編寫一套加密和解密的小程序,隨用戶程序下載到芯片中,通過運行該程序,在線修改Flash ROM的內容,對芯片進行加密和解密,使整個的加解密過程更為簡單靈活。
            Freescale公司的HCS12單片機采用的加解密思路有一定的典型性,我們對此作了一些研究,現以MC9S12DP256單片機為例,介紹Flash型單片機的加密解密方法。

        BDM程序調試接口
            Freescale公司的很多單片機都借用一種被稱為后臺調試模式(Background Debug Mode,BDM)作為下載和調試程序的接口。
            BDM是一種單線調試模式,芯片通過一個引腳與編程器進行通信。在HCS12系列單片機中,內部都置有標準的BDM調試模塊。
        該模塊的有三種作用:
        1) 對內部存儲器的讀寫。將用戶程序下載到目標芯片中或是將存儲器中的數據讀出。
        2) 對單片機工作方式和資源進行配置。部分涉及到單片機工作方式和資源配置的寄存器只能在特殊模式下由編程器發送BDM命令來修改。
        3) 程序調試。利用BDM模塊可以讀寫內存和CPU內部寄存器,調試程序。
            在HCS12單片機未加密的狀態下,使用BDM硬件命令可以將Flash ROM中的程序讀出或將新的程序寫入。BDM命令可以由獨立的硬件系統來送出,我們一般稱此類系統為BDM編程器。
            BDM編程器的時序協議是公開的,任何人都可以根據協議設計硬件、編寫程序,實現BDM編程器的功能。使用BDM接口,編程器可以很容易的訪問到目標系統的存儲器,這給程序調試和燒寫帶來了很大的方便,然而,便利的對外接口也給盜用者留下了可乘之機。
            在帶有BDM模塊的單片機中引入數據保密機制并非HCS12系列的首創,先前的HC12系列單片機的D家族中,就已經引入了屏蔽Lockout BDM讀寫的機制,可惜,該機制在單片機的擴展工作模式下存在著漏洞。相比之下,HCS12系列單片機中的保密機制更加完善,無論在BDM模式下或是擴展模式下,都可以屏蔽外部對Flash ROM的讀寫。

        兩種加密解密方法
            在HCS12系列單片機中,加密可以分成兩種方法:完全加密和使用密碼的加密。這兩種加密的方法根據用戶的需求,使用的場合也有所不同。



        關鍵詞: 單片機

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 上杭县| 武穴市| 元江| 象山县| 保德县| 连江县| 西藏| 霍山县| 吴堡县| 兴国县| 丰都县| 尖扎县| 和平区| 宜丰县| 福安市| 淄博市| 新津县| 常宁市| 遂川县| 宁津县| 洪泽县| 江城| 新竹县| 措勤县| 广饶县| 新绛县| 仲巴县| 绍兴县| 巴林左旗| 玉树县| 金寨县| 西畴县| 金华市| 筠连县| 忻州市| 监利县| 陇西县| 大同市| 盱眙县| 扶沟县| 崇左市|