<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x
    查看: 14058|回復: 11
    打印 上一主題 下一主題

    菜農友情為STM32設計一種通用加密方法之原理

    [復制鏈接]
    跳轉到指定樓層
    樓主
    發表于 2010-8-20 02:29:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    關鍵詞: 菜農 , 設計 , 友情 , 原理
    今天連續看了兩篇關于加密方面的帖子,感覺自己應該友情奉獻一回了~~~

    設想一種加密辦法,大家看看可行嗎?
    關于STM32F器件電子簽名以及加密問題-請指點

    今日方知STM32的UID為96位即12個字節,以前知道STM32內嵌CRC32.
    網上在線CRC演算工具http://www.hotpower.org/HotAjax/HotPower_HotAjax.html




    HotAjax(曾用名HotWC3)早已支持STM32的CRC32,點擊crc32_stm32可選擇之。
    其權值=0x04C11DB7,初值=0xFFFFFFFF,出值=0x00000000

    1.STM32F器件電子簽名 發現沒有規則 不是我們想像的 96位 從0 一直加到96位的
    那么這個STM32F器件電子簽名 不規則我覺得是不可能的,一個批次應該有規則的。
    還請懂ST的指點。
    2.有規則就沒第二個問題了,沒規則 如何加密呢? 比如我只想要某些ID能用這套程序;蚴瞧渌用芩惴,如何應用?

    道理很簡單,它一定是ST內部連續的序列碼(肯定小于96位)經過一定校驗算法得到(固定)96位的不連續的唯一ID.此ID通過逆運算可證實為ST合法產品。
    這個校驗算法肯定不是單向散列函數,這和數字簽名有很大區別。

    本友情算法是利用96位ID和CRC32對芯片加密,這就要求有相應的ISP軟件的支持或每個ID對應一個HEX文件。

    1.利用96位ID和輔助ID 32位共128位經過CRC32運算后得到校驗和為32位數0。
    2.將此0“滿世界”的相異或、或、加、減等不變的運算實現“無縫隙加密”。

    要實現這兩個基本原理,首先STM32應該具備IAP函數能夠在ISP和IAP過程中都能讀出此唯一ID.(這個需要香主解釋)
    ISP軟件在讀出ID后再向某4個字節即32位寫入輔助ID,程序運行后即可實現2個基本原理。

    例如UID=0x0123456789ABCDEF12345678
    經過CRC32運算后,得到校驗和=0x30F4B6E6
    將此校驗和作為輔助ID寫入HEX文件的某個位置(每個Hex文件的不同處,即4個字節不同,若想更深層次的可多層次CRC即多組輔助ID)。


    運行時將動態讀入的UID()函數+輔助ID共128位進行CRC32的運算,結果必為0
    即CRC32(0x0123456789ABCDEF1234567830F4B6E6)=0x00000000



    假使UID和輔助ID不配對,即非法拷貝,那么CRC32的結果幾乎不可能為0(CRC32有碰撞的威脅)

    試想用一個非零的數到處異或等運算將會發生什么???天才知道其后果。
    假若將其對GPIO的輸出異或會發生些什么???切記加密絕不能用分支比較判斷,應該用其運算結果到處亂搞。
    而多層次的CRC加密就是要防止解密者惡意修改源程序中的關鍵CRC運算,防止將其結果強行設置為0。

    這就是菜農友情奉獻的加密原理。

    同理可進行多層次的加密,試想有26層的CRC32運算的嵌套又會發生些什么???
    這是俺92年成功破解美國福祿克加密狗后為美國人留下的感慨~~~

    如果你能讓反匯編止步在這26層CRC32嵌套之間,那麼他就別想把此UID對應的HEX克隆到其他機子上玩~~~

    菜農通訊工具:

    新浪網頁版:http://t.sina.com.cn/hotpower
    新浪手機版:http://t.sina.cn/hotpower

    網 易微 博:http://t.163.com/hotpower
    騰訊QQ:    1270688699

    菜農郵箱:     HotPower@163.com
    菜農導航: http://www.hotpage.net.cn/


    沙發
    發表于 2010-8-20 09:29:07 | 只看該作者
    好文。
    板凳
    發表于 2010-8-20 10:33:33 | 只看該作者
    mark
    地板
    發表于 2010-8-20 14:37:52 | 只看該作者
    看不懂,但友情支持一把,呵呵   
    地下室
    發表于 2010-8-20 19:42:02 | 只看該作者
    這種方法我以前想過,不過要先有程序把UID讀出來,然后再根據算法把得到輔助ID,再把他寫進去。
    有兩種方法可以實現:
    1。寫兩遍hex,第一遍寫計算出輔助ID的hex,讓他運行后把輔助ID寫進去,第2遍寫真正的應用程序寫進去,應用程序上電或運行過程中校驗UID和輔助ID是否匹配。
    2。自己開發程序下載軟件,在下程序之前讀出芯片的UID,計算得到輔助ID,然后把輔助ID和應用程序寫進去?墒侨绻恢佬酒南螺d協議,就很難搞了,比如STC芯片的。
    6
     樓主| 發表于 2010-8-20 22:09:43 | 只看該作者
    和香水城斑竹及網友的討論見:http://bbs.21ic.com/icview-190954-1-1.html
    7
    發表于 2010-8-24 18:34:14 | 只看該作者
    xiexie分享!
    8
     樓主| 發表于 2010-8-24 20:04:15 | 只看該作者
    stc的isp很好破解,網上下載個串口攔截軟件即可。
    俺不玩stc這種垃圾芯片了,所以俺不破解它。
    9
    發表于 2010-8-24 20:44:28 | 只看該作者
    謝謝樓主。!好文。
    10
    發表于 2010-8-24 20:44:55 | 只看該作者
    謝謝樓主。!好文。
    11
    發表于 2010-8-24 21:46:41 | 只看該作者
    謝謝分享。
    12
    發表于 2010-9-4 09:17:03 | 只看該作者
    mark
    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷