AT88SC0104C加密原理
1. 加密晶片的功能和基本原理.
加密晶片主要用來保護燒進Flash裡面的程式即使被盜版者讀走, 在非法板上也不能執行, 從而達到保護自己勞動成果的目的.
本文主要內容:
一. 加密晶片的工作原理
二. DVS專案中配置區的暫存器配置
三. 介面描述
四. DES和自定義演算法.
一. 加密晶片的工作原理.
1. 硬體連線
AT88SC0104C的封裝外型和內部結構模組圖如下:
AAAAAAAAAAAAAAAAAA
不能拷圖~~~~~~
AAAAAAAAAAAAAAAAAA
連線好電源和地後, 將SDA和SCL與主控HOST的GPIO連線好就可以了.
2. AT88的工作模式和工作機制
AT88SC的工作模式有三種, 標準, 認證和加密三種模式, 標準模式下可以將該晶片視為一個常用的EEPROM來訪問. 不過訪問時序要按招它自己的Write/Read User Zone命令來讀寫資料. 認證模式則要複雜的多, 討論認證模式之前要先研究下這個加密晶片的演算法F2.
F2演算法的輸入是一個系統產生的隨機數Q0, 還有從加密晶片0x50,0x60,x070,x080位置讀出來的8個位元組的密文Ci和一個種子Gc, 晶片內部一共四組使用者訪問區, 因此對應著四組訪問暫存器AR和密碼暫存器PR, 以及四組密碼暫存器CryptogramCi和四組密文種子Gc.
它的輸出是一個八位的新密文Q1, 主機在呼叫F2時生成Q1, 同時將Q0和Q1用Verify Authentication命令送給AT88, AT88收到認證命令後內部根據儲存在密文區的Ci值和種子Gc做同樣的運算生成Q2, 同時生成一個金鑰Sk, 然後Q2與Q1作對比, 如果結果一直說明認證成功, 它用Q2更換掉密文區的Ci, 同時生成新的密文更新Session Encryption Key配置區.
第三中模式是加密模式, 它是在認證的基礎上在利用Sk替代Gc再做一次F2運算, 並將結果用Verify Encryption命令送給AT88,如果這次運算成功, 晶片內部會啟動加密機制, 對總線上傳輸的資料進行加密\解密.
3. 訪問使用者資料區.
以AT88SC0104為例, 它的資料儲存區分成四個分割槽, 每個資料區有32位元組容量. 大小為4*32=128B=1028b
先看使用者區相關的幾個配置暫存器
AR: 訪問暫存器,
PM1 |
PM0 |
AM1 |
AM0 |
ER |
WLM |
MDF |
PGO |
Bit7 |
Bit0 |
PM1-PM0: 用來設定使用者區的讀寫是否需要密碼.
AM1-AM0:用來設定使用者區的訪問是否需要認證.
ER,WLM,WDF, PGO請參考NDA文件
PR:
AK1 |
AK0 |
POK1 |
POK0 |
res |
PW2 |
PW1 |
PW0 |
Bit7 |
Bit0 |
AK1-AK0:選擇四個種子中的一個作為認證的輸入.
POK1-POK0:雙向認證時使用
PW2-PW0:選擇8套密碼之一作為驗證密碼.
設定好AR暫存器後就可以通過下面的命令步驟來對使用者區讀寫.
1. SetUserZone
2. 如果需要認證加密啟動認證命令
3. 讀寫資料
4. 傳送checksum
具體可以參考我的程式碼.
二. DVS專案中AT88SC0104的配置.
加密晶片的使用階段包含三個階段.
1.開發階段
這個階段主要用來除錯程式碼, 這個時候要非常注意不要隨便的訪問某些暫存器, 因為超過某些次數暫存器如AAC, PAC的計數次數之後, 這個片子會被鎖死, 這樣unlock配置區會失敗. 所以除錯時要非常小心..
DVS專案中主要用ATSC88來進行認證, 我把所有的種子都設成一個值, AR0-3 PR0-3也設成一樣, 這樣就可以用一個種子訪問整個128位元組空間.
AR PR分別設成認證不需要密碼模式, 見下面的程式碼
data[0]=0xDF;//ARnormal authentication, encrypted required
data[1]=0x23;//PR
cm_WriteConfigZone(0x20, data, 2, 0);
data[1]=0x63;//
cm_WriteConfigZone(0x22, data, 2, 0);
data[1]=0xa3;//
cm_WriteConfigZone(0x24, data, 2, 0);
data[1]=0xe3;//
cm_WriteConfigZone(0x26, data, 2, 0);
NC設成0xff 0xff 0xff 0xff 0x00 0x00 0x00然後每出廠一個NC值加一.
其它比如Ci Sk等暫存器可以用預設值, 因為在晶片工作起來之後它們時動態變化的.
DCR暫存器要用它的預設值0xFF, 對訪問出錯次數進行限制. 但是在除錯階段可以設成0x0F.
最重要的一個暫存器時種子Gc, 它是根據Nc用自定義的演算法和一個金鑰運算得出的, 這組暫存器對於整個加密晶片非常關鍵, 因為熔斷後它是不可讀的, 只能通過自定義演算法算出.
2. 熔斷階段
完成上邊的配置後就可以用熔斷命令對晶片進行熔斷操作. ****這裡要非常注意一定要確認自定義演算法是否唯一能夠算出Gc.*****
3. 出廠階段.
做好熔斷後就可以將加密晶片焊到板上了.
三. 介面描述.
對於應用層, 只能看到下面四個介面:
int SE_Load_Data(int zone, puchar data, uchar len);
int SE_Save_Data(int zone, puchar data, uchar len);
int SE_Auth_Done()
int SE_Auth_Init();
int SE_Auth_Init();
這個函式主要完成硬體GPIO的初始化, 並且對AT88SC的時序和型別進行測試.
int SE_Auth_Done()
這是個認證函式, 每呼叫一次, 主機會發起一次加密認證操作.
int SE_Load_Data(int zone, puchar data, uchar len);
int SE_Save_Data(int zone, puchar data, uchar len);
這兩個函式時用來讀寫使用者區資料, 他採用的時加密認證, 沒有密碼, 對時序加密.
四. 自定義演算法
void des_GcCal(uchar *Ncc, uchar *Key, uchar *dataO);
這是DES演算法的變種, 它的輸入是Ncc---從晶片內部讀出的卡號.
Key---加密金鑰, 這組資料用來對Ncc加密, 整個DVS專案採用一個相同的私鑰來加密所有Ncc. 這樣得到的dataO就是種子Gc.
這個演算法可以公開, 但是Key需要保密. 後記: 其實這裡面有很多東西我沒有弄清楚的, 比如AR暫存器裡面有個ER位的用法, 我把它設成0之後就出現問題了,
還有AM1-AM0都為00時的雙向認證模式. 除錯這顆晶片要特別小心, 不然很容易把它鎖死廢掉了.
相關推薦
AT88SC0104C加密原理
1. 加密晶片的功能和基本原理. 加密晶片主要用來保護燒進Flash裡面的程式即使被盜版者讀走, 在非法板上也不能執行, 從而達到保護自己勞動成果的目的. 本文主要內容: 一. 加密晶片的工作原理 二. DVS專案中配置區的暫存器配置 三
簡述加密原理
image 加密 alt mage logs .cn 簡述 原理 log 簡述加密原理
android黑科技系列——分析某直播App的協議加密原理以及調用加密方法進行協議參數構造
輸出結果 防護 返回 不能 定義類 多個 類型 所在 文件中 一、前言 隨著直播技術火爆之後,各家都出了直播app,早期直播app的各種請求協議的參數信息都沒有做任何加密措施,但是慢慢的有人開始利用這個後門開始弄刷粉關註工具,可以讓一個新生的小花旦分分鐘變成網紅。所以介於
淺談遠程登錄時,ssh的加密原理
回車 直接 phrase 允許 輸入密碼 tar continue 兩種 left 登錄方式主要有兩種: 1、基於用戶密碼的登錄方式: 加密原理: 當服務器知道用戶請求登錄時,服務器會把自己的公鑰發給用戶,ssh會將服務器的公鑰存放在客戶端的~/.ssh/
http加密原理
加密算法 私鑰 支持 列表 如果 是否 通信 log 解密 HTTPS原理 客戶端向服務器發送請求 服務器向客戶端發送自己的證書 客戶端驗證證書的有效性(是否是可信用機構CA頒發的證書,如果不是則提出警告)並對比裏面信息是否正確,不通過則立刻斷開連接 向服務器端發送自己的
淺談常用視頻加密原理及加密的幾種應用形式
課程 所有 客戶 直接 無限 最終 技術 網頁 現在 一、視頻加密視頻加密是對某些自有版權的視頻進行加密處理,用戶只有在一定的條件下才能獲得視頻的觀看權。比如對於教育視頻加密後,只有學員才能觀看,每個學員都有自己的唯一賬號。或者說設定在一定的時間內可以無限次觀看,還有就是不
phpcms v9 sys_auth函式加密原理
基本原理 假設變數$a,$b,$c=$a^$b(變數a異或變數b), 所以我們有$a=$b^$c , $b=$a^$c 以上是異或邏輯的應用,(題外話:如何在不使用第3個變數的情況下,交換變數$a,$b的值呢?) 迴歸正題: 瞭解了下的內容後
AES內部加密原理
0x01 AES概述 高階加密標準(Advanced Encryption Standard,縮寫:AES),在密碼學中又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。經過五年的甄
zip偽加密原理及操作
原理:一個zip檔案由三部分組成:壓縮原始檔資料區+壓縮原始檔目錄區+壓縮原始檔目錄結束標誌。 例項 壓縮原始檔資料區: 50 4B 03 04:這是標頭檔案標記(0x04034b50) 14 00:解壓檔案所需 pkware 版本 00 00:全域性方式位標記(
詳細瞭解加密狗的加密原理
在當今中國市場上最主要的加密鎖品牌有: 1、美國彩虹公司(也是最早做硬體加密的公司)的國產品牌“加密狗”、美國品牌“聖天諾軟體加密鎖”; 2、阿拉丁的“HASP”系列加密鎖; 3、德國威博公司的“WBU-KEY”加密鎖; 4、深思洛克的“深思加密鎖”; 5、藍宇風公
離散對數和橢圓曲線加密原理
序言 現代公鑰加密系統中,常用的加密演算法除了RSA還有離散對數加密和橢圓曲線加密。這兩者原理比較相似,在這裡一併介紹。 離散對數問題 我們在中學裡學的對數問題是指, 給定正實數aa和axax,求xx。也就是計算x=logaaxx=lo
數字證書原理,公鑰私鑰加密原理
文中首先解釋了加密解密的一些基礎知識和概念,然後通過一個加密通訊過程的例子說明了加密演算法的作用,以及數字證書的出現所起的作用。接著對數字證書做一個詳細的解釋,並討論一下windows中數字證書的管理,最後演示使用makecert生成數字證書。如果發現文中有錯誤的地方,或
md5加密原理簡單解釋
本文將通過漫畫的形式來通俗易懂的講述什麼是MD5加密演算法(Message Digest Algorithm MD5(中文名為訊息摘要演算法第五版)),MD5加密演算法的底層原理以及MD5加密演算法的破解演算法方法。 摘要雜湊生成的正確姿勢是什麼樣呢?分三步: 1.收集相關
openssl加密原理
SSL是SecureSocketLayer(安全套接層協議)的縮寫,可以在Internet上提供祕密性傳輸。Netscape公司在推出第一個Web瀏覽器的同時,提出了SSL協議標準,目前已有3.0版本。SSL採用公開金鑰技術。其目標是保證兩個應用間通訊的保密性和可靠性,可在伺服器端和使用者端同時實現支援。目前
md5加密原理!!!【轉】
MD5簡介 MD5的全稱是Message-Digest Algorithm 5,在90年代初由MIT的電腦科學實驗室和RSA Data Security Inc發明,經MD2、MD3和MD4發展而來。 Message-Digest泛指位元組串(Message)的Hash變
MD5加密原理和Java實現
MD5加密演算法為現在應用最廣泛的雜湊演算法之一,該演算法廣泛應用於網際網路網站的使用者檔案加密,能夠將使用者密碼加密為128位的長整數。資料庫並不明文儲存使用者密碼,而是在使用者登入時將輸入密碼字串進行MD5加密,與資料庫中所儲存的MD5值匹配,從而降低密碼資料庫被盜取
客戶端與伺服器互動使用AES+RSA混合加密原理詳解
前言 最近維護公司APP應用的登入模組,由於測試人員用Fiddler抓包工具抓取到了公司關於登入時候的明文登入資訊。雖然使用的是HTTPS的方式進行http請求的,但還是被Fiddler抓到了明文內容。因此,需要對之前未加密的登入資訊進行加密。在網上搜到一篇關於AES
RSA 非對稱加密原理(小白也能看懂哦~)
RSA 加密原理 步驟 說明 描述 備註 1 找出質數 P 、Q - 2 計算公共模數 N = P * Q - 3 尤拉函式 φ(N) = (P-1)(Q-1) - 4
[轉]Base64加密原理及程式碼實現
Base64是一種加料置位加密法,那為什麼叫base64呢?因為無論明文是什麼(比如漢字,特殊符號等),加密後的密文都只會變成字母A-Z、a-z和0-9 和+和/這64個字元,被他加密體後積一般會變成原來的4/3。 Base64的標準在RFC2045裡的24頁可以看到。
Java實現SSH模式加密原理及程式碼
一、SSH加密原理 SSH是先通過非對稱加密告訴服務端一個對稱加密口令,然後進行驗證使用者名稱和密碼的時候,使用雙方已經知道的加密口令進行加密和解密,見下圖: 解釋:SSH中為什麼要使用非對稱加密,又使用對稱加密,到底有什麼用處?到底安全不安全?既然後來又使用了對稱加密,開始的時候為什麼還要用非對稱加密?