吴忠躺衫网络科技有限公司

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

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

3天內不再提示

介紹一種比較流行的程序加密方式

TopSemic嵌入式 ? 來源:TopSemic嵌入式 ? 2023-04-21 09:07 ? 次閱讀

把程序加密,無疑是一個防小人的好辦法。我們這里介紹一種比較流行的加密方式,它利用芯片里的唯一識別碼,為每一個MCU單獨授權,這樣即使程序被讀出,也沒有辦法在其它的MCU上運行。我們講一下它的工作原理,以及一款可以實現加密量產,可以授權燒寫次數的工具。

一種流行的加密方法

poYBAGRB4gCART1zAACRBmkPMh0524.jpg

如上圖中所示,MCU中一般都有一個UDID(Unique Device IDentifier),這個唯一識別碼,每一個MCU都是不一樣的,燒寫工具可以讀出這個UDID,然后通過算法,計算出一個授權(License),燒寫MCU程序(APP)時,連同這個授權碼一起寫入Flash。當MCU上電運行時,也讀取自己的UDID,然后通過同一算法,計算出授權碼,并和工具寫入的授權碼做對比,如果不相同就拒絕執行下面的程序。下面舉個例子。

poYBAGRB4hCAACd4AACMh4K8nC8011.jpg

如圖,三個MCU的UDID分別為1,3,5。通過一種算法計算出1和3的授權碼分別為0和4。從1和3號讀出的程序,寫入5號是無法運行的。因為我們會發現,程序用5計算出的授權碼,不等于0也不等于4,無法通過比對,程序無法繼續運行。

那么我們能根據1和3的已知信息,反推出算法嗎?可以試試看,經過一番猜測,我們發現一個算法,(UDID–1)*2 對于1號和3號MCU完全適用。我們不由得一陣興奮!經過計算(5-1)*2=8,我們把8寫入5號MCU的授權地址,然后發現程序并沒有運行???

怎么回事?因為算法是猜測的。我們完全可以反推出另外一種算法:(UDID-1)*(UDID-1)。對于1和3也是適用的,但對于5,結果是16。

對于簡單的數字尚且如此,而UDID一般長度有16個字節,用戶再混入自己的密鑰數字,用加減乘除,異或等運算計算出授權,想要逆向推測出算法還是很難的。如果想要進一步增加安全性,可以采用更高級別的加密算法。

為了增加逆向分析的難度,還可以在用戶程序中綜合采取一些措施。比如:不直接讀取UDID和授權碼,而是用兩個地址運算生成讀取地址;使用inline內聯函數;多次校驗并延時觸發等。

加密算法

對稱加密

加密和解密使用同一密鑰。所以發送端和接收端都要對密鑰嚴格保密。對稱加密好處是運算速度快。常用的有DES,3DES,AES,以及我國的SM1。

poYBAGRB4iKAKB4OAABn-fMbAOw174.jpg

非對稱加密

它的密鑰分為公鑰和私鑰,公鑰是公開的,但是從公鑰無法推導出私鑰。非對稱加密的好處是,只需要保密私鑰就行了。其缺點是消耗資源比較多,運算速度慢。常用的有RSA,ECC以及我國的SM2。

pYYBAGRB4jSAdhI8AABiTudrXzg364.jpg

反過來,我們也可以用私鑰加密,然后用公鑰解密,這種方式通常用來完成簽名的驗證。把MCU的UDID讀出來,用私鑰加密生成授權碼,和應用程序一起寫入MCU的Flash,然后MCU的應用程序就可以用公鑰完成授權碼的驗證。采用非對稱加密算法的好處是,即使算法是公開的,公鑰也是公開的,別人只要沒有獲得私鑰,就沒辦法為其它MCU生成授權碼。

加密算法的安全性

首先想個問題,如果我們給家里裝個防盜門,是越堅固的越好嗎?好像沒毛病。但仔細一想還真不是這樣,我們大多數家里安裝的,并不一定是市場上最好最貴的。

加密算法也沒有絕對的安全。理論上只有一次一密,也就是采用跟明文長度一樣密鑰,而且只使用一次,才是絕對的安全。所以我們采用什么算法,要根據我們的實際需要。在一定時間長度內,如果破解的代價遠大于所獲得的價值,我們就認為是安全的。還有就是盡可能使用長一些的密鑰,跟蹤密碼學的最新動態。

安全單片機和普通單片機

對于任何加密方式,密鑰的存儲是安全的關鍵。對于普通的單片機,現在一般在Flash區都會有保護字節,可以設置成編程后無法讀出。密鑰存儲在里面,通過常規手段是無法讀到的。但是對于非常規手段,這種安全性就不夠了。

但是對于非常規手段,就無效了。比如把MCU的外殼溶解掉,然后暴露出內部的硅片,這樣就可以直接觀察,修改里面存儲的內容。所以對于安全等級高的應用,比如金融等,也要求MCU具有更高級別的安全防范措施。這種MCU會把密鑰存儲在一小塊兒RAM里,用電池供電。為了保證存儲在RAM里的密鑰不被非法讀走,采取各種防范措施。比如芯片外部有探測引腳,一旦發現外部電路被破壞,馬上銷毀密鑰。在芯片內部,用金屬絲網包住關鍵區域,一旦被破壞,也會銷毀密鑰。同時這種MCU內部也會集成隨機數生成,硬加密算法模塊等,加速加解密的運算速度。

采用哪種單片機,也要根據實際需要來決定。

加密量產工具

創芯工坊的Power Writer,是一款挺實用的量產燒錄工具。它可以通過MCU的唯一識別碼,對每一個MCU生成單獨的授權。加密算法有消耗資源特別少的向量矩陣加密,也有加密級別更高的ECDSA橢圓數字簽名算法,還支持用戶使用自己的算法。除此之外,他還能授權燒寫的MCU個數,燒寫MCU的UDID范圍等。用戶可以把程序上傳到云端,客戶聯網在線獲得授權,進行芯片燒錄,也可以把程序加載進燒寫器,用戶采用離線燒錄。



審核編輯:劉清

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

    關注

    10

    文章

    1642

    瀏覽量

    148683
  • AES
    AES
    +關注

    關注

    0

    文章

    104

    瀏覽量

    33274
  • DES
    DES
    +關注

    關注

    0

    文章

    64

    瀏覽量

    48289
  • ECC
    ECC
    +關注

    關注

    0

    文章

    97

    瀏覽量

    20642
  • MCU芯片
    +關注

    關注

    3

    文章

    253

    瀏覽量

    11629

原文標題:辛辛苦苦的勞動成果,如何上把鎖?

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

收藏 人收藏

    評論

    相關推薦

    一種有效的可轉換的認證加密方案

    一種有效的可轉換的認證加密方案:針對般的認證加密方案存在著當簽名者否認簽名時,接收者不能使任何驗證者證實簽名者的誠實性等問題,提出了一種
    發表于 06-14 00:19

    詳細介紹Flash型單片機的加密解密方法

    MC9S12DP256單片機為例,介紹Flash型單片機的加密解密方法。  BDM程序調試接口  Freescale公司的很多單片機都借用一種被稱為后臺調試模式(Background
    發表于 10-21 19:59

    請問怎樣去設計一種CPLD加密電路?

    本文介紹一種基于計算機總線的CPLD加密電路的設計方案。
    發表于 04-29 06:16

    請問怎樣去設計一種FPGA加密認證系統?

    加密問題是怎樣提出的?DS28E01芯片及其加密原理是什么?怎樣去設計一種FPGA加密認證系統?
    發表于 04-29 06:53

    怎樣去設計一種加密短消息通信系統?

    加密短消息通信系統是由哪些部分組成的?怎樣去設計一種基于RTX51 TINY的加密短消息通信系統?
    發表于 06-04 07:01

    比較流行的復位方式

    現在比較流行的復位方式是這樣的:但我們都知道對于結構緊湊型硬件來說,多個電阻都是沒必要的。在沒有手動復位需求的場合,能不能刪掉按鍵與R24,僅保留104電容?通過閱讀stm32 pd
    發表于 08-11 08:42

    介紹藍牙通信的另一種方式--BLE

    今天我們介紹藍牙通信的另一種方式--BLE(Bluetooth Low Energy,藍牙低功耗)。什么是BLE在《無線通信3:HC05/HC06經典藍牙B...
    發表于 12-13 06:50

    介紹在單片機裸機環境下編寫AT指令程序一種方式

    單片機裸機環境下編寫AT指令程序一種方式。2.程序設計首先串口底層的收發程序不在這里詳細介紹
    發表于 01-17 06:49

    介紹一種基于硬件的安全模塊

    英飛凌科技開發了一種基于硬件的安全模塊,通過其全新的 OPTIGA TPM 2.0 保護聯網汽車與汽車制造商之間的通信,該模塊是一種可信平臺模塊 (TPM),制造商可以在其中整合敏感的安全密鑰以分配
    發表于 02-11 07:41

    介紹一種STM32數據傳輸方式SPI

    之前介紹了STM32數據傳輸的一種方式IIC,這次我將進行另外一種數據傳輸方式SPI。
    發表于 02-17 06:02

    一種基于PKI的安全公文簽名加密解決方案

    討論了基于 PKI 的簽名加密技術基本原理,詳細介紹了電子公文簽名加密方式,并將其應用到企業內網Intranet 和Internet 中的信息交換,提出了
    發表于 08-15 09:54 ?18次下載

    一種基于Net Framework文件加密方案的構建

    本文介紹一種簡明高效的文件加密方案,先用兩對稱加密算法組合加密明文,再用公鑰
    發表于 01-09 14:55 ?19次下載

    加密場景下的一種測試方法

    加密場景下的一種測試方法
    發表于 09-07 11:07 ?3次下載
    <b class='flag-5'>加密</b>場景下的<b class='flag-5'>一種</b>測試方法

    一種動態選擇加密方法

    對數據進行加密一種保證數據安全性的有效措施,但現有的數據加密方式般是選定某種加密算法,用該
    發表于 11-08 10:54 ?2次下載
    <b class='flag-5'>一種</b>動態選擇<b class='flag-5'>加密</b>方法

    區塊鏈是一種新的、先進的存儲和交換信息的方式

    無論如何,人們很快就清楚地認識到,加密貨幣只是應用分布式記分類賬技術的一種可能方式。區塊鏈實際上是一種新的、先進的存儲和交換信息的方式,如果
    發表于 09-27 11:14 ?2133次閱讀
    大发888怎么提款| 百家乐官网怎么才会赢| 百家乐官网园游戏77sonci...| 做生意开店铺风水大全| 天津水果机定位器| 百家乐官网关键词| 百家乐分析绿色版| 澳门博彩娱乐有限公司| 百家乐官网大转轮真人视讯| 永利百家乐娱乐平台| 罗源县| 百家乐娱乐城地址| 百家乐注册| 太阳城百家乐群| 大发888官| 澳门赌百家乐官网心法| 买百家乐程序| 宁南县| 百家乐真人荷官| 现金网开户送彩金| 上海百家乐官网的玩法技巧和规则 | 百家乐官网长庄投注| 百家乐老千| 金城百家乐官网玩法平台| 百家乐园云顶娱乐主页| 沙雅县| 百家乐扑克发牌器| 开阳县| 视频百家乐信誉| 至尊百家乐官网下载| 爱赢百家乐的玩法技巧和规则| 百家乐官网投注方法投资法| 重庆百家乐的玩法技巧和规则 | 百家乐官网如何写路| 百家乐直杀| 真钱百家乐官网游戏排行| 赌神网百家乐的玩法技巧和规则| 百家乐官网平台开户哪里优惠多 | 百家乐板路| 百家乐官网3珠路法| 大发888娱乐城官方lm0|