本應(yīng)用筆記詳細(xì)介紹了如何將DS28S60加密處理器與ChipDNA?配合使用。它描述了DS28S60所需的設(shè)置。然后,它描述了使用非對(duì)稱密鑰交換在主機(jī)和客戶端之間安全地生成共享對(duì)稱密鑰的分步方法。接下來,它將介紹如何使用對(duì)稱密鑰在主機(jī)和客戶端之間交換加密數(shù)據(jù)。最后,本文介紹了DS28S60使用ECDSA進(jìn)行雙向認(rèn)證過程的示例。
術(shù)語定義
讓我們看一下本應(yīng)用筆記中使用的術(shù)語:
設(shè)備或客戶端——包含DS28S60的設(shè)備。它需要與主機(jī)通信。例如,傳感器節(jié)點(diǎn)。
主機(jī)或遠(yuǎn)程對(duì)等體 - 需要與設(shè)備通信的實(shí)體。例如,應(yīng)用程序服務(wù)器。
頒發(fā)機(jī)構(gòu) - 使用頒發(fā)機(jī)構(gòu)密鑰對(duì)創(chuàng)建證書的受信任方,設(shè)備和遠(yuǎn)程對(duì)等方可以使用該證書作為系統(tǒng)的一部分相互驗(yàn)證。
圖 1 和圖 2 顯示了設(shè)備、客戶端和機(jī)構(gòu)如何在系統(tǒng)中的高級(jí)級(jí)別相互交互。
圖1.加密通道系統(tǒng)概述。
圖2.相互身份驗(yàn)證系統(tǒng)概述。
基本命令和設(shè)備出廠設(shè)置
在現(xiàn)場(chǎng)使用DS28S60之前,請(qǐng)先設(shè)置器件,以滿足安全需求。這涉及安裝和/或生成設(shè)備密鑰對(duì)、機(jī)密和證書。這是在工廠等安全位置完成的。
圖3.生成設(shè)備證書的頒發(fā)機(jī)構(gòu)。
DS28S60 設(shè)置步驟:
生成并安裝設(shè)備公鑰對(duì):
首先,使用生成 ECC-256 密鑰對(duì)命令為設(shè)備生成 ECDSA 密鑰對(duì)并將其安裝到密鑰對(duì) A 內(nèi)存塊。注意,與其讓DS28S60生成自己的密鑰對(duì),不如使用寫存儲(chǔ)器命令將其他地方創(chuàng)建的密鑰對(duì)寫入DS28S60。
接下來,使用 set 塊保護(hù)命令對(duì)密鑰對(duì)塊 A 進(jìn)行寫保護(hù),以便無法修改此密鑰對(duì)。
讓授權(quán)機(jī)構(gòu)為公鑰創(chuàng)建證書:
安裝器件密鑰對(duì)后,將公鑰連同DS28S60的ROM ID和MAN ID發(fā)送給機(jī)構(gòu),以便頒發(fā)機(jī)構(gòu)為密鑰對(duì)生成證書(圖3)。請(qǐng)注意,ROM ID和MAN ID是在Maxim制造過程中編程到器件中的數(shù)據(jù)元素。
將證書寫入DS28S60:
收到生成的證書后,將證書寫入用戶內(nèi)存頁。
將頒發(fā)機(jī)構(gòu)公鑰和特性數(shù)據(jù)寫入DS28S60:
將頒發(fā)機(jī)構(gòu)公鑰寫入頒發(fā)機(jī)構(gòu)密鑰 A 塊。請(qǐng)參考DS28S60用戶指南,了解器件存儲(chǔ)器圖和更多信息。寫入密鑰后,對(duì)頒發(fā)機(jī)構(gòu)密鑰 A 塊進(jìn)行寫保護(hù)以防止其被修改。
接下來,將任何特性數(shù)據(jù)寫入DS28S60。特征數(shù)據(jù)可以是應(yīng)用所需的任何數(shù)據(jù),例如測(cè)試信息、序列號(hào)、設(shè)備調(diào)整信息、制造日期等。根據(jù)需要使用盡可能多的頁面。
對(duì)已安裝的密鑰、機(jī)密和證書設(shè)置適當(dāng)?shù)谋Wo(hù):
寫入功能數(shù)據(jù)后,對(duì)設(shè)備證書和功能數(shù)據(jù)進(jìn)行寫保護(hù) (WP)。如果要素?cái)?shù)據(jù)需要不同的保護(hù),請(qǐng)將它們放在不同的內(nèi)存塊中。使用設(shè)置塊保護(hù)命令設(shè)置 WP 保護(hù)。
鎖定未使用的密鑰對(duì)塊和機(jī)密塊。
最后,將隨機(jī)生成的數(shù)據(jù)寫入每個(gè)未使用的密鑰和密鑰頁,并對(duì)它們進(jìn)行寫保護(hù)以防止它們被使用。
使用非對(duì)稱密鑰交換的加密通信
主機(jī)和設(shè)備各自生成一個(gè) ECDSA 密鑰對(duì),稱為臨時(shí)密鑰對(duì),用于設(shè)置加密通道。必須為每個(gè)通信會(huì)話生成新的臨時(shí)密鑰對(duì)。生成密鑰后,主機(jī)和設(shè)備使用 ECDHE 密鑰交換安全地計(jì)算共享密鑰,以便在后續(xù) AES-GCM 會(huì)話中進(jìn)行加密和解密。
加密通道創(chuàng)建步驟
圖4.主機(jī)和設(shè)備使用 ECDHE 算法計(jì)算共享密鑰。
主機(jī)生成其臨時(shí)密鑰對(duì)。
設(shè)備生成其臨時(shí)密鑰對(duì):
設(shè)備使用生成 ECC-256 密鑰對(duì)命令生成臨時(shí)密鑰對(duì)。
指定臨時(shí)密鑰 0 作為存儲(chǔ)位置。注意:如果DS28S60斷電,臨時(shí)密鑰存儲(chǔ)頁將丟失密鑰對(duì)。
主機(jī)請(qǐng)求并接收設(shè)備的臨時(shí)公鑰。
設(shè)備請(qǐng)求并接收主機(jī)的臨時(shí)公鑰。
主機(jī)使用 ECDHE 計(jì)算共享密鑰(圖 4)。
設(shè)備使用 ECDHE 計(jì)算共享密鑰(圖 4)。
向DS28S60發(fā)出密鑰交換命令以計(jì)算共享密鑰。
主機(jī)和設(shè)備現(xiàn)在可以使用 AES-GCM 發(fā)送加密數(shù)據(jù)并解密接收到的數(shù)據(jù)(圖 5)。
雙向身份驗(yàn)證
雙向身份驗(yàn)證有兩個(gè)階段。主機(jī)和設(shè)備使用頒發(fā)機(jī)構(gòu)創(chuàng)建的證書和頒發(fā)機(jī)構(gòu)的公鑰,在第一階段驗(yàn)證彼此的公鑰是否是系統(tǒng)的一部分(圖 6)。驗(yàn)證公鑰后,主機(jī)和設(shè)備將在第二階段驗(yàn)證它們是否各自擁有與已驗(yàn)證的公鑰相對(duì)應(yīng)的私鑰。這是通過交換使用其各自的私鑰生成的簽名并使用經(jīng)過驗(yàn)證的公鑰來驗(yàn)證簽名來實(shí)現(xiàn)的。圖 7 和圖 8 顯示了私鑰驗(yàn)證過程。
第 1 階段。公鑰驗(yàn)證
圖6.使用證書進(jìn)行公鑰驗(yàn)證的高級(jí)圖。
主機(jī)請(qǐng)求并接收設(shè)備的公鑰:
當(dāng)主機(jī)請(qǐng)求器件的公鑰時(shí),器件使用讀存儲(chǔ)器命令從DS28S60讀取公鑰兩次,讀取公鑰A x和y元件,然后將公鑰發(fā)送給主機(jī)。
主機(jī)請(qǐng)求并接收設(shè)備的證書和證書消息數(shù)據(jù):
當(dāng)器件收到對(duì)其證書的請(qǐng)求時(shí),它使用讀存儲(chǔ)器命令從DS28S60的用戶頁面讀取其證書,然后將其傳輸?shù)街鳈C(jī)。
設(shè)備請(qǐng)求并接收主機(jī)的公鑰:
當(dāng)設(shè)備請(qǐng)求并接收主機(jī)的公鑰時(shí),它會(huì)使用寫入內(nèi)存命令將其寫入公鑰 SA 塊。
設(shè)備請(qǐng)求并接收主機(jī)的證書和證書消息數(shù)據(jù)。
主機(jī)通過將證書、證書消息數(shù)據(jù)的 SHA-256 哈希和頒發(fā)機(jī)構(gòu)公鑰傳遞給 ECDSA 驗(yàn)證算法來驗(yàn)證設(shè)備的證書。
設(shè)備通過將證書、證書消息數(shù)據(jù)的 SHA-256 哈希和頒發(fā)機(jī)構(gòu)公鑰傳遞給 ECDSA 驗(yàn)證算法來驗(yàn)證主機(jī)的證書。
設(shè)備使用身份驗(yàn)證 ECDSA 證書命令指定密鑰的PUBKEY_SA,設(shè)置 ECDH = 0 和 WPE = 0,并將證書與證書數(shù)據(jù)一起傳遞以驗(yàn)證主機(jī)的證書。有關(guān)該命令的詳細(xì)信息,請(qǐng)參閱用戶指南。
第 2 階段。私鑰驗(yàn)證
圖7.私鑰驗(yàn)證步驟一:生成簽名。
主持人生成 32 字節(jié)質(zhì)詢,并請(qǐng)求設(shè)備使用質(zhì)詢和一些頁面數(shù)據(jù)生成簽名。
設(shè)備使用用于生成簽名的簽名和數(shù)據(jù)進(jìn)行響應(yīng):
設(shè)備收到質(zhì)詢后,將使用計(jì)算和讀取頁面命令通過特征數(shù)據(jù)頁面生成簽名。一旦生成簽名,器件將簽名與用于生成簽名的消息數(shù)據(jù)一起發(fā)送,即DS28S60的Rom ID、特征數(shù)據(jù)、特征數(shù)據(jù)頁碼和Man ID,命令字節(jié)(0xA5)。
設(shè)備生成 32 字節(jié)質(zhì)詢,并請(qǐng)求主機(jī)使用質(zhì)詢和一些數(shù)據(jù)生成簽名:
器件使用DS28S60上的讀取RNG命令產(chǎn)生32字節(jié)質(zhì)詢。生成質(zhì)詢后,設(shè)備會(huì)將質(zhì)詢發(fā)送給主機(jī),請(qǐng)求主機(jī)生成證書。
主機(jī)使用用于生成簽名的簽名和數(shù)據(jù)進(jìn)行響應(yīng):
主持人使用以下格式使用質(zhì)詢和一些數(shù)據(jù)生成簽名:質(zhì)詢||數(shù)據(jù)。主持人將質(zhì)詢以及用于生成簽名的數(shù)據(jù)發(fā)送到設(shè)備。
圖8.私鑰驗(yàn)證第二步:主機(jī)和設(shè)備驗(yàn)證彼此的簽名。
主機(jī)使用 ECDSA 驗(yàn)證算法驗(yàn)證設(shè)備的簽名,方法是向設(shè)備提供設(shè)備的公鑰、帶有質(zhì)詢和簽名的數(shù)據(jù)的 SHA-256 哈希。
設(shè)備使用 ECDSA 驗(yàn)證算法驗(yàn)證主機(jī)的簽名,方法是向主機(jī)提供主機(jī)的公鑰、帶有質(zhì)詢和簽名的數(shù)據(jù)的 SHA-256 哈希:
一旦設(shè)備收到簽名和數(shù)據(jù),它將數(shù)據(jù)附加到發(fā)送到主機(jī)的質(zhì)詢中,使用DS28S60驗(yàn)證簽名命令指定公鑰SA,并將消息用作ECDSA輸入參數(shù)。
推薦的內(nèi)場(chǎng)流量
現(xiàn)在,構(gòu)建塊已經(jīng)介紹完畢,讓我們討論如何將它們組合在一起。設(shè)置步驟在安全的受信任位置(如工廠)中完成。設(shè)置完成后,設(shè)備在現(xiàn)場(chǎng),主機(jī)已啟動(dòng)并運(yùn)行,設(shè)備和主機(jī)首先使用上述步驟建立加密通道。建立加密通道后,設(shè)備和主機(jī)將相互進(jìn)行身份驗(yàn)證,以確保它們是同一系統(tǒng)的一部分。一旦他們成功地相互驗(yàn)證,他們就開始相互通信。
總結(jié)
本應(yīng)用筆記介紹了DS28S60作為需要相互認(rèn)證和安全加密通信通道的系統(tǒng)的一部分設(shè)置和使用所需的命令和步驟。
審核編輯:郭婷
-
處理器
+關(guān)注
關(guān)注
68文章
19259瀏覽量
229649 -
主機(jī)
+關(guān)注
關(guān)注
0文章
993瀏覽量
35114
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論