那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

單片機4大硬件加密方法解析

5RJg_mcuworld ? 來源:YXQ ? 2019-08-06 15:16 ? 次閱讀

我們知道,研究一套可行實用的單片機系統肯定要花大量的人力和物力。為了使所研制的系統不被別人所剽竊,保護知識產權,通常在單片機系統設計時,都要進行加密設計。加密設計一般有硬件加密和軟件加密。而硬件加密的方法很多,可以采用PAL、GAL等芯片CPUROM之間的地址線或數據線按一定密鑰規律進行交換,這樣就把原程序頁號打亂,起到加密作用。但這里探討的是幾種簡單的硬件加密技術。

1.硬件加密設計步驟

1.1 根據具體項目和任務,設計目標程序并在未加密情況下調試成功。

1.2 設計硬件加密電路。

1.3 對調試好的軟件按硬件電路進行加密翻譯,不同的硬件加密電路翻譯出來的軟件不同。

1.4 將加密翻譯后的軟件寫進EPROM。

這樣,剽竊者將得到的EPROM里的程序進行反匯編后,不在是原來的程序,甚至是邏輯關系混亂毫無價值的代碼。從而保護了原設計者的利益。

2. 硬件加密電路的設計

為方便說明硬件加密原理和軟件加密翻譯方法,先列舉一例題,以下論述均以該例子為研究對象。

例1 比較兩個無符號數的大小,設兩個無符號數事先分別存在RAM里的30H和31H單元,若(30H)里的數大,則累加器的A.0~A.3為高電平;若(31H)里的數大,則累加器的A.4~A.7為高電平;若兩數相等,則累加器的A.2~A.5為高電平。試設計匯編程序實現。

該例題所設計的原程序、機器代碼和存儲單元如下:

2.1 硬件加密方法一

將數據線中某幾根線換位,如圖1所示。將圖中數據線D1、D2交叉,這樣單片機系統執行的實際代碼就與EPROM中存儲的代碼完全不同了。若將例1的程序存入EPROM ,那么存入的實際代碼就要做相應的加密翻譯,以使單片機從EPROM中所取的代碼正確。

加密翻譯后在EPROM中實際存的代碼和反匯編的結果如下:

P2.0~P2.4P0.3~P0.7P0.2P0.1P0.0ALEPSENCPU8031

74LS373

A8~A12A3~A7A2A1A0 2764OE CED3~D7D2D1

2.2 硬件加密方法二:

將CPU和EPROM間的地址換位,如圖2所示,將地址線A0、A1換位交叉,這樣單片機系統程序存在EPROM中的代碼不變,但存儲順序完全打亂。若將例1的程序存入EPROM時,為保證單片機的正常工作,要將存儲代碼的順序按硬件電路要求做相應的改變,即進行加密翻譯,加密翻譯后EPROM中存儲的實際代碼和反匯編的結果如下:

從反匯編的結果看,既是剽竊者取出EPROM里的程序代碼,反匯編后也得不到原來的程序了。

2.3 硬件加密方法三

將CPU和EPROM間的數據線某些位經過三態反相器求反。如圖3所示,將數據線D0、D1分別求反后送CPU,這樣存在EPROM里的程序和原來的程序就不同了。若將例1的程序按硬件加密電路進行軟件加密翻譯后,存在EPROM里的實際代碼和反匯編后結果如下:

P2.0~P2.4P0.2~P0.7P0.1P0.0 ALEPSENCPU8031

74LS373

A8~A12A2~A7A1A0 2764OE CE D2~D7D1D0

可見經硬件加密后,存在EPROM里的代碼與原來代碼完全不同。

2.4 硬件加密方法四

將CPU和EPROM間的地址線的某些位求反。如圖4所示,將地址線A0、A1求反,這樣存在EPROM里的代碼內容不變,但代碼的存儲順序要按硬件電路相應改變。若仍以例1為例,將該程序代碼加密后,存在EPROM里的代碼和反匯編后的結果如下:

A8~A12A2~A7A1A0OE CE2764D2~D7D1D0

P2.0~P2.4P0.2~P0.7P0.1P0.0 ALEPSENCPU8031

74LS373

可見將EPROM里的代碼反匯編后,仍得不到原程序。

總結

堅持不懈的嘗試突破保護機制的破解團體和不斷引入新的安全防范方案的制造商之間的斗爭是沒有盡頭的。 “道高一尺,魔高一丈”,又或是“邪不壓正”,將不停的在兩派之間上演。其實軟件加密原理很簡單,就是利用單片機IC廠商,為每片出廠芯片的某一特殊全球唯一識別參數,即ID號做為密鑰,對程序進行加密。如果以本ID號的程序燒到另一ID號的芯片中,程序中經軟件加密過的部分的功能將完全失效。

要解密上述經軟件加密過的程序,唯一的途徑,就是反匯編程序,分析單片機反匯編后的匯編程序,將程序中軟件加密相關的密鑰去掉,然后編譯得到新的程序。這項工作需要的不只是耐心,更多的是專業知識與經驗。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638609
  • 硬件加密
    +關注

    關注

    0

    文章

    5

    瀏覽量

    9145

原文標題:這4大硬件加密方法,在單片機中你會用了嗎?

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    單片機Debug與仿真區別

    單片機的開發是一個復雜的過程,涉及到硬件設計、軟件開發和測試等多個環節。為了確保單片機能夠按照預期工作,開發者需要使用Debug和仿真技術來檢測和修正代碼中的錯誤。 Debug(調試) Debug
    的頭像 發表于 12-19 09:47 ?287次閱讀

    如何優化單片機項目的功耗

    在現代電子設計中,功耗優化已成為一個不可忽視的重要議題。對于單片機(MCU)項目而言,功耗不僅關系到產品的能效比,還直接影響到電池壽命和熱管理。 硬件層面的功耗優化 1. 選擇合適的單片機 選擇一個
    的頭像 發表于 11-01 14:16 ?511次閱讀

    單片機編程語言有哪些選擇

    常用的單片機編程語言,以及它們的特點和應用場景: 1. C語言 特點 :C語言是一種通用的編程語言,以其高效性和靈活性而聞名。它提供了豐富的庫函數和直接的硬件訪問能力,非常適合用于單片機編程。 應用 :C語言是
    的頭像 發表于 11-01 14:13 ?954次閱讀

    單片機系統設計流程及注意事項

    單片機系統設計是一個涉及硬件和軟件的綜合過程,它要求設計者不僅要有扎實的電子技術基礎,還要具備一定的編程能力和系統分析能力。 單片機系統設計流程 1. 需求分析 明確功能 :確定單片機
    的頭像 發表于 11-01 14:12 ?775次閱讀

    單片機調試常見問題與解決方法

    燒錄到單片機時,燒錄軟件顯示無法與單片機通信。 解決方法: 檢查單片機的電源是否正常,確保電源電壓在規定的范圍內。 檢查燒錄線的連接是否正確,包括數據線和地線。 確認燒錄軟件是否選擇了
    的頭像 發表于 11-01 14:11 ?1222次閱讀

    如何實現51單片機與PC的串行通信

    的詳細步驟和方法硬件連接 首先,我們需要將51單片機與PC的串行接口連接起來。通常,我們使用RS-232接口進行連接。RS-232接口是一種常用的串行通信接口,它使用9個引腳進行
    的頭像 發表于 10-21 11:35 ?1289次閱讀

    單片機怎么寫入程序

    程序通常涉及以下幾個步驟: 選擇單片機和開發環境 : 確定項目需求,選擇合適的單片機型號。 安裝相應的開發環境,如Keil、IAR、MPLAB等。 硬件連接 : 將單片機連接到開發板或
    的頭像 發表于 10-21 11:21 ?935次閱讀

    單片機的中斷機制

    單片機的中斷機制是一種重要的處理方式,它允許單片機在執行主程序的過程中,能夠暫停當前任務,轉而處理外部或內部緊急事件。這種機制極大地提高了系統的響應速度和處理能力,使得單片機在各種應用領域中得到廣泛應用。以下是對
    的頭像 發表于 10-17 18:03 ?971次閱讀

    單片機WiFi模塊怎樣連接手機APP

    單片機WiFi模塊連接到手機APP通常涉及以下幾個步驟: 選擇單片機和WiFi模塊 :選擇合適的單片機(如Arduino, ESP32等)和WiFi模塊(如ESP8266, ESP32等)。
    的頭像 發表于 09-10 15:31 ?1301次閱讀

    單片機燒錄程序的線比單片機上的少還能燒錄嗎

    的存儲器通常分為兩類:ROM(只讀存儲器)和RAM(隨機存取存儲器)。ROM用于存儲程序代碼,而RAM用于存儲程序運行過程中的數據。燒錄過程就是將程序代碼寫入ROM中。 單片機燒錄方法 單片機燒錄的
    的頭像 發表于 09-02 09:54 ?613次閱讀

    單片機燒錄程序的基本步驟是什么

    單片機燒錄程序是單片機開發過程中非常重要的一步,它涉及到將編寫好的程序代碼通過一定的方式傳輸到單片機內部的存儲器中,使單片機能夠按照預定的邏輯執行任務。 一、
    的頭像 發表于 09-02 09:47 ?1439次閱讀

    單片機boot0和boot1怎么設置

    單片機的啟動模式通常包括從內部ROM啟動、從外部ROM啟動、從外部Flash啟動等。 不同的啟動模式對應不同的Boot0和Boot1設置。 Boot0和Boot1的設置方法 Boot0和Boot1通常通過硬件
    的頭像 發表于 08-22 09:50 ?3055次閱讀

    藍牙模塊如何實現單片機和手機端數據互傳

    藍牙模塊實現單片機和手機端數據互傳的過程可以分為以下幾個步驟: 硬件準備 : 確保你有一個支持藍牙通信的單片機開發板,如Arduino、Raspberry Pi等。 準備一個兼容的藍牙模塊,如
    的頭像 發表于 07-24 17:59 ?2894次閱讀
    藍牙模塊如何實現<b class='flag-5'>單片機</b>和手機端數據互傳

    如何系統、科學地自學單片機

    的自學單片機呢?自學單片機需要一定的計劃和方法,以下是具體的步驟和建議。如何系統、科學地自學單片機?學習電子基礎知識:理解電路原理、數字電子技術、模擬電子技術等基礎
    的頭像 發表于 03-28 08:03 ?1199次閱讀
    如何系統、科學地自學<b class='flag-5'>單片機</b>?

    單片機如何通過代碼控制硬件:一名工程師的分享

    今天跟大家聊聊單片機是怎樣通過代碼來操控硬件的。作為一名單片機工程師,我們平時的工作就像是給單片機編寫“指令集”,讓它按照我們的意圖去驅動各種硬件
    的頭像 發表于 03-06 14:46 ?1625次閱讀
    <b class='flag-5'>單片機</b>如何通過代碼控制<b class='flag-5'>硬件</b>:一名工程師的分享
    尊龙百家乐娱乐平台| 至尊娱乐城| 百家乐庄家怎样赚钱| 真人百家乐海立方| 同花顺百家乐官网的玩法技巧和规则| 新世纪百家乐官网现金网| 百樂坊娱乐| 明升国际娱乐 | 赌球网址| 威尼斯人娱乐代理注| 百家乐前四手下注之观点| 百家乐赌神| 博彩百家乐龙虎| 永利高百家乐怎样开户| 百家乐有免费玩| 永利高百家乐会员| 百家乐是否有路子| 百家乐最低压多少| 百家乐怎么玩能赢钱| 百家乐神仙道官网| 百家乐庄家出千内幕| 属猪属蛇做生意怎么样| 百家乐单双打法| 百家乐太阳城球讯网| 百家乐单注技巧| 百家乐哪家有优惠| 网上百家乐官网的玩法技巧和规则 | 圣安娜百家乐官网包杀合作| HG百家乐官网大转轮| 电子百家乐官网假在线哪| 打百家乐纯打庄的方法| 百家乐注册18元体验金| 惠来县| 百家乐官网园zyylc| 百家乐官网发牌靴遥控| 网上百家乐官网指| 最好的百家乐官网博彩网站 | 吴旗县| 互博百家乐官网现金网| 百家乐官网论坛香港马会| 百家乐官网专用桌子|