国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種密鑰協(xié)商方法

      文檔序號:7855016閱讀:181來源:國知局
      專利名稱:一種密鑰協(xié)商方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于信息安全技術(shù)領(lǐng)域,尤其涉及發(fā)起方和響應(yīng)方通信過程中進行密鑰協(xié)商的方法。
      背景技術(shù)
      密鑰協(xié)商是一種密鑰建立技術(shù),系統(tǒng)中的兩個或多個參與方共同提供信息,各自推導(dǎo)出一個任何一方不能預(yù)先確定結(jié)果的共享密鑰,特別是隨著通信環(huán)境的日益復(fù)雜、信息技術(shù)的不斷發(fā)展和計算能力的不斷提高,通信環(huán)境中的攻擊手段也不斷發(fā)展,使得很多密鑰協(xié)商方法都存在不同程度的安全隱患。傳統(tǒng)的密鑰協(xié)商方法有采用RSA方式,RSA方式是一種基于證書的密鑰協(xié)商方法,該方法通過為用戶簽發(fā)證書將用戶身份和公鑰綁定,使用證書前,需向簽發(fā)證書的數(shù)字證書認證中心驗證證書的有效性,以確定對方身份的有效性。該驗證包括驗證CA簽名、驗證CA簽名的過程可能涉及到證書鏈、CA交叉認證;驗證是否被加入證書撤回目錄;驗證是否在有效期內(nèi)。這一系列的驗證操作需要耗費很多存儲和處理器資源,尤其是對于移動終端有限的處理能力以及移動網(wǎng)絡(luò)有限的傳輸速度,資源耗費更加突出。

      發(fā)明內(nèi)容
      針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明的目的在于提供一種安全性高的密鑰協(xié)商方法,通信雙方可以在不共享任何秘密的情況下協(xié)商出一個會話密鑰。本發(fā)明采取的技術(shù)方案是一種密鑰協(xié)商方法,包括以下步驟,步驟SI :等待接收上位機下發(fā)指令;步驟S2 :檢查接收到的所述指令的指令類型;當(dāng)所述指令為協(xié)商密鑰參數(shù)命令時,執(zhí)行步驟S3;當(dāng)所述指令為計算會話密鑰命令時,執(zhí)行步驟S4-S8;步驟S3 :根據(jù)所述指令確定自身ECC密鑰對的存儲位置和自身ID ;生成自身臨時ECC密鑰對,向上位機返回包含自身臨時ECC公鑰的第一命令響應(yīng),然后返回執(zhí)行步驟SI ;步驟S4 :根據(jù)所述指令獲取對方ECC公鑰、對方臨時ECC公鑰、對方ID,根據(jù)所述指令得到自身ECC密鑰對和自身ID ; 步驟S5 :檢查是否存在自身臨時ECC密鑰對,是則執(zhí)行下一步,否則返回接收命令錯誤響應(yīng);步驟S6 :獲取自身臨時ECC密鑰對,根據(jù)密鑰交換算法對所述對方ECC公鑰、所述對方臨時ECC公鑰、所述對方ID以及所述自身ECC密鑰對、所述自身臨時ECC密鑰對、所述自身ID進行計算生成會話密鑰并存儲;步驟S7 :清除自身臨時ECC密鑰對;步驟S8 :向上位機返回協(xié)商結(jié)果響應(yīng)。 上述步驟2具體包括
      步驟201 :檢查接收到的所述指令是否完整,如果完整,繼續(xù);否則,向上位機返回事先約定的錯誤碼;步驟202 :根據(jù)所述指令的第二字節(jié)判斷指令類型;如果所述指令的第二字節(jié)是第一預(yù)設(shè)值,則所述指令為協(xié)商密鑰參數(shù)命令;如果所述指令的第二字節(jié)是第二預(yù)設(shè)值,則所述指令為計算會話密鑰命令。所述檢查接收到的所述指令是否完整具體為步驟201-1 :判斷所述指令的總 長度是否超過預(yù)設(shè)長度,如果是,繼續(xù);否則,所述指令不完整;步驟201-2 :從所述指令的預(yù)設(shè)位置提取數(shù)據(jù)域長度;步驟201-3 :從所述指令的最低位開始提取指定長度數(shù)據(jù),判斷是否與第二特征串相符,是則繼續(xù),否則所述指令不完整;步驟201-4 :驗證所述指令的所述預(yù)設(shè)位置之后所述指定長度數(shù)據(jù)之前的數(shù)據(jù)長度是否與所述數(shù)據(jù)域長度的值相符,如果是,所述指令完整,否則,所述指令不完整。上述步驟S3中所述生成自身臨時ECC密鑰對并存儲在RAM中具體為生成一個符合預(yù)設(shè)數(shù)值范圍的隨機數(shù)作為臨時ECC私鑰,根據(jù)所述臨時ECC私鑰與橢圓曲線算法中的基點計算得到臨時ECC公鑰,并將所述臨時ECC公鑰和私鑰作為自身臨時ECC密鑰對存儲在RAM中。上述步驟S3中所述第一命令響應(yīng)的數(shù)據(jù)域包括自身臨時ECC密鑰對的密鑰位長度、自身臨時ECC公鑰、密鑰協(xié)商句柄。所述密鑰協(xié)商句柄為一串隨機數(shù)或者是一個預(yù)設(shè)地址。上述步驟S3中向上位機返回所述第一命令響應(yīng)之前還包括設(shè)置可協(xié)商標(biāo)志位,相應(yīng)的,步驟S5為檢查是否存在可協(xié)商標(biāo)志位,是則執(zhí)行下一步,否則返回接收命令錯誤響應(yīng);步驟S8之前還包括清除所述可協(xié)商標(biāo)志位。上述步驟S4中所述根據(jù)所述指令獲取對方ECC公鑰、對方臨時ECC公鑰、對方ID具體為根據(jù)所述指令的數(shù)據(jù)域的第9-第12字節(jié)確定對方ECC密鑰對的密鑰位長度,在第12字節(jié)后連續(xù)取位長等于兩倍的所述對方ECC密鑰對的密鑰位長度上的數(shù)據(jù),得到所述對方ECC公鑰;根據(jù)所述指令的數(shù)據(jù)域中所述對方ECC公鑰位置之后的四個字節(jié)確定對方臨時ECC密鑰對的密鑰位長度,從所述對方臨時ECC密鑰對的密鑰位長度之后連續(xù)取位長等于兩倍的所述對方臨時ECC密鑰對的密鑰位長度上的數(shù)據(jù),得到所述對方臨時ECC公鑰;
      從所述指令的數(shù)據(jù)域中所述對方臨時ECC公鑰之后連續(xù)取4個字節(jié)上的數(shù)據(jù)得到對方ID長度,從所述對方ID長度對應(yīng)的字節(jié)之后連續(xù)取等于對方ID長度值個字節(jié)上的數(shù)據(jù),得到所述對方ID,并將所述對方ID記錄在非易失性存儲器中。上述步驟S4中所述根據(jù)所述指令得到自身ECC密鑰對和自身ID具體為根據(jù)所述指令的數(shù)據(jù)域的前4個字節(jié)確定自身ECC密鑰對的存儲位置,根據(jù)所述存儲位置獲取自身ECC密鑰對;從所述指令的數(shù)據(jù)域的所述對方ID對應(yīng)的字節(jié)之后連續(xù)取4個字節(jié)上的數(shù)據(jù)得到自身ID長度,從所述自身ID長度對應(yīng)的字節(jié)之后連續(xù)取等于自身ID長度值個字節(jié)上的數(shù)據(jù),得到所述自身ID,并將所述自身ID記錄在非易失性存儲器中。所述步驟S5之前還包括設(shè)備生成自身臨時ECC密鑰對并存儲在RAM中。上述步驟S8所述返回的協(xié)商結(jié)果響應(yīng)中包括對方臨時ECC密鑰對的密鑰位長度、對方臨時ECC公鑰、會話密鑰ID?;蛘呱鲜霾襟ES4中所述根據(jù)所述指令得到自身ECC密鑰對和自身ID具體為判斷所述指令的數(shù)據(jù)域的前4個字節(jié)是否對應(yīng)所述自身ECC密鑰對的存儲位置,是則根據(jù)所述存儲位置獲取所述自身ECC密鑰對,否則報錯;判斷非易失性存儲器中是否存儲有自身ID,是則獲取所述自身ID,否則報錯。上述步驟S8所述返回的協(xié)商結(jié)果響應(yīng)中包括會話密鑰ID。
      所述會話密鑰ID是步驟S6中所述計算生成的會話密鑰的存儲位置,所述會話密鑰ID的位長為4個字節(jié)。步驟S3所述確定自身ECC密鑰對的存儲位置具體為步驟103-1 :根據(jù)所述指令的數(shù)據(jù)域的前2個字節(jié)檢索應(yīng)用ID,如果檢索到所述應(yīng)用ID,繼續(xù);否則,報錯;步驟103-2 :根據(jù)所述指令的數(shù)據(jù)域的第3和第4字節(jié)檢索容器ID,如果檢索到所述容器ID,繼續(xù);否則,報錯;步驟103-3 :根據(jù)所述應(yīng)用ID和容器ID找到所述存儲位置。步驟S6中所述計算生成會話密鑰的過程具體為在自身臨時ECC公鑰滿足已知橢圓曲線的條件下,調(diào)用密碼雜湊函數(shù),將自身ID長度值、自身ID、第一參數(shù)、第二參數(shù)、第三數(shù)值、自身ECC公鑰順序拼接得到自身雜湊值,將對方ID長度值、對方ID、第一參數(shù)、第二參數(shù)、第三數(shù)值、對方ECC公鑰順序拼接得到對方雜湊值,將自身臨時ECC私鑰與第一整數(shù)相乘再與自身ECC私鑰相加得到第一數(shù)值,將對方臨時ECC公鑰與第二整數(shù)相乘再與對方ECC公鑰相加得到第二數(shù)值,第一數(shù)值與第三參數(shù)相乘并取整后乘以第二數(shù)值得到第三數(shù)值,調(diào)用密鑰派生函數(shù)將第三數(shù)值、對方雜湊值、自身雜湊值順序拼接得到所述會話密鑰。步驟S6中所述密鑰交換算法采用E⑶H算法。本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是相對傳統(tǒng)的密鑰協(xié)商方法,本發(fā)明具有速度快,資源少,安全性高等特點。


      圖I是實施例2提供的一種密鑰協(xié)商方法流程圖;圖2是實施例3提供的密鑰協(xié)商方法中生成密鑰協(xié)商參數(shù)命令的處理流程圖;圖3是實施例4提供的密鑰協(xié)商方法中產(chǎn)生協(xié)商數(shù)據(jù)并計算會話密鑰命令的處理流程圖;圖4是實施例5提供的密鑰協(xié)商方法中計算會話密鑰命令的處理流程圖。
      具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。一種密鑰協(xié)商方法,包括發(fā)起方智能密鑰設(shè)備生成密鑰協(xié)商參數(shù)的過程、響應(yīng)方智能密鑰設(shè)備產(chǎn)生協(xié)商數(shù)據(jù)并計算會話密鑰的過程以及發(fā)起方智能密鑰設(shè)備計算會話密鑰的過程。實施例I和實施例2以密鑰協(xié)商方法中設(shè)備協(xié)商產(chǎn)生會話密鑰的過程為重點進行說明,實施例3、4、5分別側(cè)重介紹了實施例2基礎(chǔ)上智能密鑰設(shè)備作為發(fā)起方生成密鑰協(xié)商參數(shù)的過程、智能密鑰設(shè)備作為響應(yīng)方時計算會話密鑰的過程以及作為發(fā)起方時計算會話密鑰的過程。實施例I本實施例提供的一種密鑰協(xié)商方法,包括以下步驟I.等待接收密鑰協(xié)商的指令;2.檢查接收到的所述指令的指令類型;、
      3.根據(jù)所述指令執(zhí)行密鑰協(xié)商操作并返回相應(yīng)的響應(yīng);4 返回步驟I。步驟2具體為步驟201 :檢查接收到的指令是否完整。如果完整,繼續(xù);否則,向上位機返回事先約定的錯誤碼;步驟202 :根據(jù)指令的第二字節(jié)判斷指令類型;具體地,在本實施例中,判斷方法為(不分先后)步驟202-1 :如果指令的第二字節(jié)是預(yù)先約定的Ox 82,則所述指令為協(xié)商密鑰參數(shù)命令。步驟202-2:如果指令的第二字節(jié)是預(yù)先約定的Ox 85,則所述指令為計算會話S鑰命令。其他情況即當(dāng)指令的第二字節(jié)為其他數(shù)值時為其他命令,對這些命令的處理不在本方案范圍內(nèi)。步驟3具體為如果所述指令是協(xié)商密鑰參數(shù)命令,則執(zhí)行步驟301-304,如果所述指令是計算會話密鑰命令,則執(zhí)行步驟305-309 ;如果所述指令是其他命令,則進行相應(yīng)處理;步驟301 :生成臨時密鑰對并存儲在RAM中;具體地,生成符合預(yù)設(shè)數(shù)值范圍的第一隨機數(shù)作為臨時ECC私鑰,根據(jù)臨時ECC私鑰與橢圓曲線算法中的基點計算得到臨時ECC公鑰。步驟302 :設(shè)置可協(xié)商標(biāo)志位;步驟303 向主機返回第一命令響應(yīng)。所述第一命令響應(yīng)的數(shù)據(jù)域包括自身臨時ECC密鑰對的密鑰位長度、自身臨時ECC公鑰、密鑰協(xié)商句柄等信息。所述密鑰協(xié)商句柄為一串隨機數(shù)或者是一個預(yù)設(shè)地址。步驟304 :解析所述命令獲得對方ECC公鑰、對方臨時ECC公鑰、對方ID ;步驟305 :判斷是否能夠協(xié)商密鑰,是則繼續(xù),否則返回接收錯誤命令響應(yīng);本實施例中,具體地通過檢查是否存在可協(xié)商標(biāo)志位來判斷是否能夠協(xié)商密鑰。當(dāng)步驟302缺省時,本步驟還可以通過檢查RAM中是否存在臨時密鑰對來判斷是否能夠協(xié)商密鑰。步驟306 :獲取預(yù)存的自身ECC密鑰對、自身臨時ECC密鑰對及自身ID,根據(jù)密鑰交換算法對解析獲得的對方ECC公鑰、對方臨時ECC公鑰、對方ID以及預(yù)存的自身ECC密鑰對、自身臨時ECC密鑰對、自身ID進行計算生成會話密鑰并存儲。具體地,根據(jù)密鑰交換算法計算會話密鑰過程為在自身臨時ECC公鑰滿足橢圓曲線的條件下,調(diào)用密碼雜湊函數(shù),將自身ID長度值、自身ID、第一參數(shù)、第二參數(shù)、第三數(shù)值、自身ECC公鑰順序拼接得到自身雜湊值,將對方ID長度值、對方ID、第一參數(shù)、第二參數(shù)、第三數(shù)值、對方ECC公鑰順序拼接得到對方雜湊值,將自身臨時ECC私鑰與第一整數(shù)相乘再與自身ECC私鑰相加得到第一數(shù)值,將對方臨時ECC公鑰與第二整數(shù)相乘再與對方ECC公鑰相加得到第二數(shù)值,第一數(shù)值與第三參數(shù)相乘并取整后乘以第二數(shù)值得到第三數(shù)值,調(diào)用密鑰派生函數(shù)將第三數(shù)值、對方雜湊值、自身雜湊值順序拼接得到會話密鑰。 本實施例中,所述密鑰交換算法可優(yōu)選為ECDH算法。步驟307 :清除RAM中存儲的臨時密鑰對;
      步驟308 :清除可協(xié)商標(biāo)志位;當(dāng)步驟302缺省時本步驟也可以缺省。步驟309 :向主機返回協(xié)商結(jié)果響應(yīng)。實施例2本實施例描述的一種密鑰協(xié)商方法,如圖I所示,包括以下步驟步驟I :智能密鑰設(shè)備接收上位機發(fā)送的命令;步驟2 :對所述命令進行解析,確定首部預(yù)定長度數(shù)據(jù)、數(shù)據(jù)域長度值和數(shù)據(jù)域;本實施例中,具體地,步驟2中對所述命令進行解析具體還包括驗證所述命令是否完整的過程,驗證所述命令是否完整的過程在實施例3、4中將進行詳細描述。步驟3 :判斷所述首部預(yù)定長度數(shù)據(jù)是否與第一預(yù)設(shè)字符串相符,是則執(zhí)行步驟4,否則判斷所述首部預(yù)定長度數(shù)據(jù)是否與第二預(yù)設(shè)字符串相符,是則執(zhí)行步驟7,否則判斷所述首部預(yù)定長度數(shù)據(jù)是否與第三預(yù)設(shè)字符串相符,是則執(zhí)行步驟11,否則給上位機返回錯誤信息;本實施例中,在執(zhí)行步驟3之前還包括判斷是否能夠協(xié)商密鑰,是則繼續(xù),否則返回接收錯誤命令響應(yīng);本實施例中,具體地通過檢查是否存在可協(xié)商標(biāo)志位來判斷是否接收到正確的命令,進行密鑰協(xié)商。本實施例中具體地,判斷所述命令的前兩個字節(jié)是否為Ox 80 82,是則執(zhí)行步驟4,否則判斷是否為Ox 80 85,是則執(zhí)行步驟7,否則判斷是否為Ox 00 85,是則執(zhí)行步驟11,否則返回錯誤信息。步驟4 :根據(jù)所述命令的數(shù)據(jù)域確定密鑰對的存儲位置、會話密鑰算法、ID ;其中,所述密鑰對包括自身ECC公鑰和私鑰。步驟5:智能密鑰設(shè)備生成第一隨機數(shù),將所述第一隨機數(shù)作為自身臨時ECC私鑰,根據(jù)ECC橢圓曲線的基點和臨時ECC私鑰相乘計算出自身臨時ECC公鑰;步驟6 :智能密鑰設(shè)備生成第一命令響應(yīng)返回給上位機,返回執(zhí)行步驟I ;所述第一命令響應(yīng)的數(shù)據(jù)域包括臨時ECC密鑰對的密鑰位長度、臨時ECC公鑰、密鑰協(xié)商句柄等信息。所述密鑰協(xié)商句柄為一串隨機數(shù)或者是一個預(yù)設(shè)地址。步驟7 :根據(jù)所述命令的數(shù)據(jù)域確定密鑰對的存儲位置、會話密鑰算法、對方ECC公鑰、對方臨時ECC公鑰、自身ID、對方ID ;
      具體地,根據(jù)響應(yīng)方密鑰對的存儲位置查找到密鑰對,即自身ECC公鑰和私鑰。步驟8 :智能密鑰設(shè)備生成第二隨機數(shù),將所述第二隨機數(shù)作為自身臨時ECC私鑰,根據(jù)ECC橢圓曲線的基點和臨時ECC私鑰計算生成自身臨時ECC公鑰;步驟9 :智能密鑰設(shè)備計算生成會話密鑰;本實施了具體的,根據(jù)密鑰交換算法,對自身ECC公鑰和私鑰、自身臨時ECC公鑰和私鑰、自身ID、對方ID、對方ECC公鑰、對方臨時ECC公鑰進行計算生成會話密鑰。步驟10 :智能密鑰設(shè)備生成第二命令響應(yīng),并將所述第二命令響應(yīng)返回給上位機,返回執(zhí)行步驟I ;步驟11 :判斷所述命令的數(shù)據(jù)域的前4個字節(jié)是否對應(yīng)密鑰對的存儲位置,是則 繼續(xù),否則出錯;具體地,根據(jù)密鑰對的存儲位置查找到自身密鑰對,即自身ECC公鑰和私鑰。步驟12 :判斷所述命令的數(shù)據(jù)域的第5-第8字節(jié)是否與所述密鑰協(xié)商句柄一致,是則繼續(xù),否則出錯;步驟13 :從所述命令的數(shù)據(jù)域獲取對方ECC公鑰、對方臨時ECC公鑰、對方ID ;步驟14:智能密鑰設(shè)備計算生成會話密鑰;本實施例具體的,根據(jù)密鑰交換算法,對自身ECC公鑰和私鑰、自身臨時ECC公鑰和私鑰、自身ID、對方ID、對方ECC公鑰、對方臨時ECC公鑰進行計算生成會話密鑰。步驟15 :智能密鑰設(shè)備生成第三命令響應(yīng),并將所述第三命令響應(yīng)返回給上位機,協(xié)商結(jié)束。本實施例中具體地,第三命令響應(yīng)為協(xié)商成功或協(xié)商失敗的響應(yīng)。實施例3在實施例2的基礎(chǔ)上,當(dāng)所述首部預(yù)定長度數(shù)據(jù)與第一預(yù)設(shè)字符串相符時,發(fā)起方智能密鑰設(shè)備生成密鑰協(xié)商參數(shù)的過程如圖2所示,其中發(fā)起方用上位機表示,該過程包括以下步驟步驟101 :發(fā)起方智能密鑰設(shè)備接收上位機發(fā)送的生成密鑰協(xié)商參數(shù)命令;本步驟還包括發(fā)起方智能密鑰設(shè)備根據(jù)預(yù)先約定的格式判斷所述命令是否為ECC生成密鑰協(xié)商參數(shù)命令,判斷方法具體為如果所述生成密鑰協(xié)商參數(shù)命令首部預(yù)定長度的數(shù)據(jù)與第一特征串相符,則所述生成密鑰協(xié)商參數(shù)命令為ECC生成密鑰協(xié)商參數(shù)命令;如果與上述第一特征串不符,則所述生成密鑰協(xié)商參數(shù)命令不是ECC生成密鑰協(xié)商參數(shù)命令,其處理方式不在本專利范圍之內(nèi),在此不再贅述。具體地,在本實施例中,所述預(yù)定長度為4,所述第一特征串為十六進制串80 82 00 00步驟102 :驗證所述命令是否完整;驗證方法具體為步驟102-1 :判斷所述命令的總長度是否超過預(yù)設(shè)長度。如果是,繼續(xù);否則,所述命令不完整。所述命令的高位端前四個字節(jié)指示命令的類型,第5個字節(jié)至第7個字節(jié)為長度域,后續(xù)的其余字節(jié)為數(shù)據(jù)域和響應(yīng)報文數(shù)據(jù)長度域,其中長度域的值指示后續(xù)數(shù)據(jù)域的字節(jié)數(shù),響應(yīng)報文數(shù)據(jù)長度域的值指示第一命令響應(yīng)的數(shù)據(jù)域的字節(jié)數(shù)。優(yōu)選地,在本實施例中,所述預(yù)設(shè)長度為10。所述命令的高位端四個字節(jié)依次為0x80 ,0x82,0x00、0x00,用于表示所述命令為ECC生成密鑰協(xié)商參數(shù)命令。步驟102-2 :從所述命令的預(yù)設(shè)位置提取數(shù)據(jù)域長度;上述預(yù)設(shè)位置為所述命令的第6和第7字節(jié)。進一步地,在本實施例中,還進行如下判斷如果第5字節(jié)的數(shù)據(jù)不為預(yù)先約定的0,則所述命令數(shù)據(jù)不完整。優(yōu)選地,在本實施例中,長度即字節(jié)數(shù)。將第6字節(jié)的數(shù)據(jù)作為數(shù)據(jù)域長度的高字節(jié),第7字節(jié)的數(shù)據(jù)作為數(shù)據(jù)域長度的低字節(jié),疊加后得到數(shù)據(jù)域長度的值。 例如,第6字節(jié)為0x12,第7字節(jié)為0x34,則所述數(shù)據(jù)域長度的值為0xl234(即十進制數(shù)4660)。步驟102-3 :從所述命令的最低位開始提取指定長度數(shù)據(jù),判斷是否與第二特征串相符,是則繼續(xù),否則所述命令不完整;本實施例中具體地,所述指定長度為3個字節(jié),所述第二特征串為00 00 00;本實施例中所述第二特征串的值表示第一命令響應(yīng)的數(shù)據(jù)域的字節(jié)數(shù)未知。步驟102-4 驗證所述命令的所述預(yù)設(shè)位置之后所述指定長度數(shù)據(jù)之前的數(shù)據(jù)長度是否與所述數(shù)據(jù)域長度的值相符,如果是,所述命令完整,否則,所述命令不完整;以下步驟均以所述預(yù)設(shè)位置之后所述第二特征串之前的數(shù)據(jù)即所述命令的數(shù)據(jù)域DATA為操作對象。步驟103 :根據(jù)所述命令的數(shù)據(jù)域確定發(fā)起方密鑰對的存儲位置;所述發(fā)起方密鑰對是指發(fā)起方ECC公鑰和私鑰;所述命令的數(shù)據(jù)域的前4個字節(jié)用于確定所述存儲位置。具體地,在本實施例中,確定所述存儲位置的方法具體為步驟103-1 :根據(jù)所述命令的數(shù)據(jù)域的前2個字節(jié)檢索應(yīng)用ID,如果檢索到所述應(yīng)用ID,繼續(xù);否則,報錯;步驟103-2 :根據(jù)所述命令的數(shù)據(jù)域的第3和第4字節(jié)檢索容器ID.如果檢索到所述容器ID,繼續(xù);否則,報錯;步驟103-3 :根據(jù)所述應(yīng)用ID和容器ID找到所述存儲位置。所述ECC生成密鑰協(xié)商參數(shù)命令的數(shù)據(jù)域中包含所述存儲位置的地址信息,即所述存儲位置所屬的應(yīng)用及容器的ID號,根據(jù)上述ID號從相應(yīng)的存儲位置獲取發(fā)起方密鑰對。步驟104 :根據(jù)所述命令的數(shù)據(jù)域確定會話密鑰算法;具體為從所述命令的數(shù)據(jù)域的第5-第8字節(jié)獲取會話密鑰算法標(biāo)識,根據(jù)所述會話密鑰算法標(biāo)識來檢索生成會話密鑰所使用的算法,如果檢索到對應(yīng)的算法,繼續(xù);否貝U,報錯。本實施例中,根據(jù)所述會話密鑰算法標(biāo)識查找到的算法是密鑰交換算法,具體為一種基于ECC的密鑰交換算法,優(yōu)選為ECDH算法。步驟105 :從所述命令的數(shù)據(jù)域獲取發(fā)起方的ID ;具體為
      步驟105-1 :從所述命令的第9-第12字節(jié)提取發(fā)起方的ID長度值;步驟105-2 :驗證所述命令的第12字節(jié)之后的數(shù)據(jù)長度是否與所述發(fā)起方的ID長度值相符。如果是,繼續(xù),否則,報錯。步驟105-3 :將所述命令的第12字節(jié)之后的數(shù)據(jù)作為發(fā)起方的ID記錄在非易失性存儲器中。步驟106 :發(fā)起方智能密鑰設(shè)備生成發(fā)起方臨時ECC密鑰對;具體為發(fā)起方智能密鑰設(shè)備生成第一隨機數(shù),將所述第一隨機數(shù)作為發(fā)起方臨時ECC私鑰,計算得到發(fā)起方臨時ECC公鑰。步驟107 :發(fā)起方智能密鑰設(shè)備生成第一命令響應(yīng),并將所述第一命令響應(yīng)發(fā)送給上位機。 所述第一命令響應(yīng)的數(shù)據(jù)域包括發(fā)起方臨時ECC密鑰對的密鑰位長度、發(fā)起方臨時ECC公鑰、密鑰協(xié)商句柄。具體地,獲取所述第一命令響應(yīng)的數(shù)據(jù)域的高位端四個字節(jié)得到所述發(fā)起方臨時ECC密鑰對的密鑰位長度,在所述四個字節(jié)之后一次是發(fā)起方臨時ECC公鑰的X坐標(biāo)值和Y坐標(biāo)值,緊跟其后的是密鑰協(xié)商句柄,所述密鑰協(xié)商句柄為一串隨機數(shù)或者是一個預(yù)設(shè)地址。實施例4在實施例2的基礎(chǔ)上,當(dāng)所述首部預(yù)定長度數(shù)據(jù)與第二預(yù)設(shè)字符串相符時,響應(yīng)方向響應(yīng)方智能密鑰設(shè)備下發(fā)命令,即進入所述響應(yīng)方智能密鑰設(shè)備產(chǎn)生協(xié)商數(shù)據(jù)并計算會話密鑰的過程,如圖3所示,所述響應(yīng)方用圖中所述上位機表示,則所述過程具體包括步驟201 :響應(yīng)方智能密鑰設(shè)備接收上位機發(fā)送的產(chǎn)生協(xié)商數(shù)據(jù)并計算會話密鑰命令;在步驟201之前包括所述上位機接收發(fā)起方發(fā)送的密鑰協(xié)商參數(shù),具體的,所述密鑰協(xié)商參數(shù)包括發(fā)起方臨時ECC公鑰、發(fā)起方ID、發(fā)起方ECC公鑰,所述發(fā)起方臨時ECC公鑰是發(fā)起方從接收到第一命令響應(yīng)中獲取的。步驟202 :驗證所述命令是否完整,是則繼續(xù),否則出錯;驗證方法具體為步驟202-1 :判斷所述命令的總長度是否超過預(yù)設(shè)長度。如果是,繼續(xù);否則,所述命令不完整。所述命令的高位端前四個字節(jié)指示命令的類型,第5個字節(jié)至第7個字節(jié)為長度域,后續(xù)的其余字節(jié)為數(shù)據(jù)域和響應(yīng)報文數(shù)據(jù)長度域,其中長度域的值指示后續(xù)數(shù)據(jù)域的字節(jié)數(shù),響應(yīng)報文數(shù)據(jù)長度域的值指示第二命令響應(yīng)的數(shù)據(jù)域的字節(jié)數(shù)。優(yōu)選地,在本實施例中,所述預(yù)設(shè)長度為10。所述命令的高位端四個字節(jié)依次為0x80 ,0x84,0x00、0x00,用于表示所述命令為產(chǎn)生協(xié)商數(shù)據(jù)并計算會話密鑰命令。步驟202-2 :從所述命令的預(yù)設(shè)位置提取數(shù)據(jù)域長度;上述預(yù)設(shè)位置為所述命令的第6和第7字節(jié)。進一步地,在本實施例中,還進行如下判斷如果第5字節(jié)的數(shù)據(jù)不為預(yù)先約定的0,則所述命令數(shù)據(jù)不完整。優(yōu)選地,在本實施例中,長度即字節(jié)數(shù)。將第6字節(jié)的數(shù)據(jù)作為數(shù)據(jù)域長度的高字節(jié),第7字節(jié)的數(shù)據(jù)作為數(shù)據(jù)域長度的低字節(jié),疊加后得到數(shù)據(jù)域長度的值。
      例如,第6字節(jié)為0x12,第7字節(jié)為0x34,則所述數(shù)據(jù)域長度的值為0xl234(即十進制數(shù)4660)。步驟202-3 :從所述命令的最低位開始提取指定長度數(shù)據(jù),判斷是否與第二特征串相符,是則繼續(xù),否則所述命令不完整;本實施例中具體地,所述指定長度為3個字節(jié),所述第二特征串為00 00 00;本實施例中所述第二特征串的值表示第二命令響應(yīng)的數(shù)據(jù)域長度未知。
      步驟202-4 :驗證所述命令的所述預(yù)設(shè)位置之后所述指定長度數(shù)據(jù)之前的數(shù)據(jù)長度是否與所述數(shù)據(jù)域長度的值相符,如果是,所述命令完整,否則,所述命令不完整;步驟203 :根據(jù)所述命令的數(shù)據(jù)域確定響應(yīng)方密鑰對的存儲位置;所述響應(yīng)方密鑰對是指響應(yīng)方ECC公鑰和私鑰;所述命令的數(shù)據(jù)域的前4個字節(jié)用于確定所述存儲位置。具體地,在本實施例中,確定所述存儲位置的方法同實施例一中步驟103-1至103-3所述,在此不再贅述。所述產(chǎn)生協(xié)商數(shù)據(jù)并計算會話密鑰命令的數(shù)據(jù)域中包含所述存儲位置的地址信息,即所述存儲位置所屬的應(yīng)用及容器的ID號,根據(jù)上述ID號從相應(yīng)的存儲位置獲取響應(yīng)方密鑰對。步驟204 :根據(jù)所述命令的數(shù)據(jù)域確定會話密鑰算法;具體為所述命令的數(shù)據(jù)域的第5-第8字節(jié)用于標(biāo)識所述會話密鑰算法標(biāo)識,根據(jù)所述會話密鑰算法標(biāo)識來檢索生成會話密鑰所使用的算法,如果檢索到對應(yīng)的算法,繼續(xù);否則,報錯。步驟205 :從所述命令的數(shù)據(jù)域獲取發(fā)起方ECC公鑰;具體為步驟205-1 :根據(jù)所述命令的數(shù)據(jù)域的第9-第12字節(jié)確定發(fā)起方ECC密鑰對的密鑰位長度;所述ECC密鑰對的密鑰位長度以比特為單位,所占比特位數(shù)等于兩倍的發(fā)起方ECC公鑰位長度。步驟205-2 :在第12字節(jié)后連續(xù)取位長等于兩倍的所述發(fā)起方ECC密鑰對的密鑰位長度上的數(shù)據(jù),得到發(fā)起方ECC公鑰。優(yōu)選地,在本實施例中,所述發(fā)起方ECC公鑰的前一半內(nèi)容為所述發(fā)起方ECC公鑰的X坐標(biāo),后一半內(nèi)容為所述發(fā)起方ECC公鑰的Y坐標(biāo)。步驟206 :從所述命令的數(shù)據(jù)域獲取發(fā)起方臨時ECC公鑰;具體為步驟206-1 :根據(jù)所述命令的數(shù)據(jù)域的發(fā)起方ECC公鑰之后的四個字節(jié)確定發(fā)起方臨時ECC密鑰對的密鑰位長度;所述發(fā)起方臨時ECC密鑰對的密鑰位長度以比特為單位,所占比特位數(shù)等于兩倍的發(fā)起方臨時ECC公鑰位長度。步驟206-2 :從所述發(fā)起方臨時ECC密鑰對的密鑰位長度之后連續(xù)取位長等于兩倍的所述發(fā)起方臨時ECC密鑰對的密鑰位長度上的數(shù)據(jù),得到發(fā)起方臨時ECC公鑰。優(yōu)選地,在本實施例中,所述發(fā)起方臨時ECC公鑰的前一半內(nèi)容為所述發(fā)起方臨時ECC公鑰的X坐標(biāo),后一半內(nèi)容為所述發(fā)起方臨時ECC公鑰的Y坐標(biāo)。
      步驟207 :從所述命令的數(shù)據(jù)域獲取發(fā)起方的ID ;具體為步驟207-1 :從所述命令的數(shù)據(jù)域中發(fā)起方臨時ECC公鑰之后連續(xù)取4個字節(jié)上的數(shù)據(jù)得到發(fā)起方的ID長度;步驟207-2 :從所述發(fā)起方的ID長度對應(yīng)的字節(jié)之后連續(xù)取等于發(fā)起方的ID長度值個字節(jié)上的數(shù)據(jù)得到發(fā)起方的ID ;并將所所述發(fā)起方的ID記錄在非易失性存儲器中。步驟208 :從所述命令的數(shù)據(jù)域獲取響應(yīng)方的ID ;具體為步驟208-1 :從所述命令的數(shù)據(jù)域中發(fā)起方的ID對應(yīng)的字節(jié)之后連續(xù)取4個字節(jié)上的數(shù)據(jù)得到響應(yīng)方的ID長度; 步驟208-2 :從所述響應(yīng)方的ID長度對應(yīng)的字節(jié)之后連續(xù)取等于響應(yīng)方的ID長度值個字節(jié)上的數(shù)據(jù)得到響應(yīng)方的ID ;并將所所述響應(yīng)方的ID記錄在非易失性存儲器中。步驟209 :響應(yīng)方智能密鑰設(shè)備生成響應(yīng)方臨時ECC密鑰對;具體為響應(yīng)方智能密鑰設(shè)備生成第二隨機數(shù),將所述第二隨機數(shù)作為響應(yīng)方臨時ECC私鑰,計算得到響應(yīng)方臨時ECC公鑰。步驟210 :響應(yīng)方智能密鑰設(shè)備計算生成響應(yīng)方會話密鑰;具體為,響應(yīng)方智能密鑰設(shè)備根據(jù)密鑰交換算法對發(fā)起方ECC公鑰、發(fā)起方臨時ECC公鑰、發(fā)起方的ID以及響應(yīng)方ECC密鑰對、響應(yīng)方臨時ECC密鑰對、響應(yīng)方的ID計算生成響應(yīng)方會話密鑰并存儲。步驟211 :響應(yīng)方智能密鑰設(shè)備生成第二命令響應(yīng),并將所述第二命令響應(yīng)發(fā)送給上位機。所述第二命令響應(yīng)的數(shù)據(jù)域包括響應(yīng)方臨時ECC密鑰對的密鑰位長度、響應(yīng)方臨時ECC公鑰、會話密鑰ID。具體地,將所述第二命令響應(yīng)的數(shù)據(jù)域的高位端前四個字節(jié)設(shè)置為所述響應(yīng)方臨時ECC密鑰對的密鑰位長度,在所述四個字節(jié)之后設(shè)置響應(yīng)方臨時ECC公鑰的X坐標(biāo)和Y坐標(biāo),緊跟其后的是會話密鑰ID,所述會話密鑰ID是響應(yīng)方智能密鑰設(shè)備計算生成的會話密鑰的存儲位置,所述會話密鑰ID的位長為4個字節(jié)。實施例5在實施例2的基礎(chǔ)上,當(dāng)所述首部預(yù)定長度數(shù)據(jù)與第三預(yù)設(shè)字符串相符時,發(fā)起方向發(fā)起方智能密鑰設(shè)備下發(fā)命令,即進入所述發(fā)起方智能密鑰設(shè)備計算會話密鑰的過程,如圖4所示,所述發(fā)起方用圖中所述上位機表示,則所述過程具體包括步驟301 :發(fā)起方智能密鑰設(shè)備接收上位機發(fā)送的計算會話密鑰命令;在步驟301之前包括所述上位機接收響應(yīng)方發(fā)送的協(xié)商數(shù)據(jù),具體的,所述協(xié)商數(shù)據(jù)包括響應(yīng)方臨時ECC公鑰、響應(yīng)方ID、響應(yīng)方ECC公鑰。步驟302 :驗證所述命令是否完整,是則繼續(xù),否則出錯;驗證方法具體為步驟302-1 :判斷所述命令的總長度是否超過預(yù)設(shè)長度。如果是,繼續(xù);否則,所述命令不完整。所述命令的高位端前四個字節(jié)指示命令的類型,第5個字節(jié)至第7個字節(jié)為長度域,后續(xù)的其余字節(jié)為數(shù)據(jù)域和響應(yīng)報文數(shù)據(jù)長度域,其中長度域的值指示后續(xù)數(shù)據(jù)域的字節(jié)數(shù),響應(yīng)報文數(shù)據(jù)長度域的值指示第三命令響應(yīng)的數(shù)據(jù)域的字節(jié)數(shù)。優(yōu)選地,在本實施例中,所述預(yù)設(shè)長度為10。所述命令的高位端四個字節(jié)依次為0x80 ,0x86,0x00、0x00,用于表示所述命令為計算會話密鑰命令。步驟302-2 :從所述命令的預(yù)設(shè)位置提取數(shù)據(jù)域長度;上述預(yù)設(shè)位置為所述命令的第6和第7字節(jié)。進一步地,在本實施例中,還進行如下判斷如果第5字節(jié)的數(shù)據(jù)不為預(yù)先約定的0,則所述命令數(shù)據(jù)不完整。優(yōu)選地,在本實施例中,長度即字節(jié)數(shù)。將第6字節(jié)的數(shù)據(jù)作為數(shù)據(jù)域長度的高字節(jié),第7字節(jié)的數(shù)據(jù)作為數(shù)據(jù)域長度的低字節(jié),疊加后得到數(shù)據(jù)域長度的值。 步驟302-3 :從所述命令的最低位開始提取指定長度數(shù)據(jù),判斷是否與第二特征串相符,是則繼續(xù),否則所述命令不完整;本實施例中具體地,所述指定長度為3個字節(jié),所述第二特征串為00 00 04;本實施例中所述第二特征串的值表示第三命令響應(yīng)的數(shù)據(jù)域的長度為4個字節(jié)。步驟302-4 :驗證所述命令的所述預(yù)設(shè)位置之后所述指定長度數(shù)據(jù)之前的數(shù)據(jù)長度是否與所述數(shù)據(jù)域長度的值相符,如果是,所述命令完整,否則,所述命令不完整;以下步驟均以所述預(yù)設(shè)位置之后所述第二特征串之前的數(shù)據(jù)即所述命令的數(shù)據(jù)域DATA為操作對象。步驟303 :判斷所述命令的數(shù)據(jù)域的前4個字節(jié)是否對應(yīng)所述發(fā)起方密鑰對的存儲位置,是則繼續(xù),否則出錯;步驟304 :判斷所述命令的數(shù)據(jù)域的第5-第8字節(jié)是否與發(fā)起方密鑰協(xié)商句柄一致,是則繼續(xù),否則出錯;步驟305 :從所述命令的數(shù)據(jù)域獲取響應(yīng)方ECC公鑰;步驟306 :從所述命令的數(shù)據(jù)域獲取響應(yīng)方臨時ECC公鑰;步驟307 :從所述命令的數(shù)據(jù)域獲取響應(yīng)方的ID ;上述步驟305-307中獲取響應(yīng)方ECC公鑰、響應(yīng)方臨時ECC公鑰及響應(yīng)方的ID的細節(jié)與步驟205-207原理相同,在此不再贅述。步驟308 :發(fā)起方智能密鑰設(shè)備計算生成發(fā)起方會話密鑰;具體地,發(fā)起方智能密鑰設(shè)備根據(jù)密鑰交換算法對響應(yīng)方ECC公鑰、響應(yīng)方臨時ECC公鑰、響應(yīng)方的ID及發(fā)起方ECC公鑰和私鑰、發(fā)起方臨時ECC公鑰和私鑰、發(fā)起方的ID進行計算生成發(fā)起方會話密鑰并存儲。步驟309 :發(fā)起方智能密鑰設(shè)備生成第三命令響應(yīng),并將所述第三命令響應(yīng)發(fā)送給上位機。所述第三命令響應(yīng)的數(shù)據(jù)域包括四個字節(jié)長度的會話密鑰ID,所述會話密鑰ID是發(fā)起方智能密鑰設(shè)備計算生成的會話密鑰的存儲位置。以上所述,僅為本發(fā)明的具體實施方式
      ,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以權(quán)利要求的保護范圍為準(zhǔn)。
      權(quán)利要求
      1.一種密鑰協(xié)商方法,其特征是包括以下步驟, 步驟Si:等待接收上位機下發(fā)指令; 步驟S2 :檢查接收到的所述指令的指令類型; 當(dāng)所述指令為協(xié)商密鑰參數(shù)命令時,執(zhí)行步驟S3;當(dāng)所述指令為計算會話密鑰命令時,執(zhí)行步驟S4-S8; 步驟S3 :根據(jù)所述指令確定自身ECC密鑰對的存儲位置和自身ID ;生成自身臨時ECC密鑰對,向上位機返回包含自身臨時ECC公鑰的第一命 令響應(yīng),然后返回執(zhí)行步驟SI ; 步驟S4 :根據(jù)所述指令獲取對方ECC公鑰、對方臨時ECC公鑰、對方ID,根據(jù)所述指令得到自身ECC密鑰對和自身ID ; 步驟S5 :檢查是否存在自身臨時ECC密鑰對,是則執(zhí)行下一步,否則返回接收命令錯誤響應(yīng); 步驟S6 :獲取自身臨時ECC密鑰對,根據(jù)密鑰交換算法對所述對方ECC公鑰、所述對方臨時ECC公鑰、所述對方ID以及所述自身ECC密鑰對、所述自身臨時ECC密鑰對、所述自身ID進行計算生成會話密鑰并存儲; 步驟S7 :清除自身臨時ECC密鑰對; 步驟S8 :向上位機返回協(xié)商結(jié)果響應(yīng)。
      2.根據(jù)權(quán)利要求I所述的一種密鑰協(xié)商方法,其特征是所述步驟2具體包括 步驟201 :檢查接收到的所述指令是否完整,如果完整,繼續(xù);否則,向上位機返回事先約定的錯誤碼; 步驟202 :根據(jù)所述指令的第二字節(jié)判斷指令類型; 如果所述指令的第二字節(jié)是第一預(yù)設(shè)值,則所述指令為協(xié)商密鑰參數(shù)命令;如果所述指令的第二字節(jié)是第二預(yù)設(shè)值,則所述指令為計算會話密鑰命令。
      3.根據(jù)權(quán)利要求2所述的一種密鑰協(xié)商方法,其特征是 所述檢查接收到的所述指令是否完整具體為 步驟201-1 :判斷所述指令的總長度是否超過預(yù)設(shè)長度,如果是,繼續(xù);否則,所述指令不完整; 步驟201-2 :從所述指令的預(yù)設(shè)位置提取數(shù)據(jù)域長度; 步驟201-3:從所述指令的最低位開始提取指定長度數(shù)據(jù),判斷是否與第二特征串相符,是則繼續(xù),否則所述指令不完整; 步驟201-4 :驗證所述指令的所述預(yù)設(shè)位置之后所述指定長度數(shù)據(jù)之前的數(shù)據(jù)長度是否與所述數(shù)據(jù)域長度的值相符,如果是,所述指令完整,否則,所述指令不完整。
      4.根據(jù)權(quán)利要求I所述的一種密鑰協(xié)商方法,其特征是步驟S3中所述生成自身臨時ECC密鑰對并存儲在RAM中具體為生成一個符合預(yù)設(shè)數(shù)值范圍的隨機數(shù)作為臨時ECC私鑰,根據(jù)所述臨時ECC私鑰與橢圓曲線算法中的基點計算得到臨時ECC公鑰,并將所述臨時ECC公鑰和私鑰作為自身臨時ECC密鑰對存儲在RAM中。
      5.根據(jù)權(quán)利要求I所述的一種密鑰協(xié)商方法,其特征是步驟S3中所述第一命令響應(yīng)的數(shù)據(jù)域包括自身臨時ECC密鑰對的密鑰位長度、自身臨時ECC公鑰、密鑰協(xié)商句柄。
      6.根據(jù)權(quán)利要求5所述的一種密鑰協(xié)商方法,其特征是所述密鑰協(xié)商句柄為一串隨機數(shù)或者是一個預(yù)設(shè)地址。
      7.根據(jù)權(quán)利要求I所述的一種密鑰協(xié)商方法,其特征是所述步驟S3中向上位機返回所述第一命令響應(yīng)之前還包括設(shè)置可協(xié)商標(biāo)志位,相應(yīng)的,步驟S5為檢查是否存在可協(xié)商標(biāo)志位,是則執(zhí)行下一步,否則返回接收命令錯誤響應(yīng);步驟S8之前還包括清除所述可協(xié)商標(biāo)志位。
      8.根據(jù)權(quán)利要求I所述的一種密鑰協(xié)商方法,其特征是步驟S4中所述根據(jù)所述指令獲取對方ECC公鑰、對方臨時ECC公鑰、對方ID具體為 根據(jù)所述指令的數(shù)據(jù)域的第9-第12字節(jié)確定對方ECC密鑰對的密鑰位長度,在第12字節(jié)后連續(xù)取位長等于兩倍的所述對方ECC密鑰對的密鑰位長度上的數(shù)據(jù),得到所述對方ECC公鑰; 根據(jù)所述指令的數(shù)據(jù)域中所述對方ECC公鑰的位置之后的四個字節(jié)確定對方臨時ECC 密鑰對的密鑰位長度,從所述對方臨時ECC密鑰對的密鑰位長度之后連續(xù)取位長等于兩倍 的所述對方臨時ECC密鑰對的密鑰位長度上的數(shù)據(jù),得到所述對方臨時ECC公鑰; 從所述指令的數(shù)據(jù)域中所述對方臨時ECC公鑰之后連續(xù)取4個字節(jié)上的數(shù)據(jù)得到對方ID長度,從所述對方ID長度對應(yīng)的字節(jié)之后連續(xù)取等于對方ID長度值個字節(jié)上的數(shù)據(jù),得到所述對方ID,并將所述對方ID記錄在非易失性存儲器中。
      9.根據(jù)權(quán)利要求I所述的一種密鑰協(xié)商方法,其特征是步驟S4中所述根據(jù)所述指令得到自身ECC密鑰對和自身ID具體為 根據(jù)所述指令的數(shù)據(jù)域的前4個字節(jié)確定自身ECC密鑰對的存儲位置,根據(jù)所述存儲位置獲取自身ECC密鑰對; 從所述指令的數(shù)據(jù)域中所述對方ID對應(yīng)的字節(jié)之后連續(xù)取4個字節(jié)上的數(shù)據(jù)得到自身ID長度,從所述自身ID長度對應(yīng)的字節(jié)之后連續(xù)取等于自身ID長度值個字節(jié)上的數(shù)據(jù),得到所述自身ID,并將所述自身ID記錄在非易失性存儲器中。
      10.根據(jù)權(quán)利要求8或9所述的一種密鑰協(xié)商方法,其特征是步驟S5之前還包括設(shè)備生成自身臨時ECC密鑰對并存儲在RAM中。
      11.根據(jù)權(quán)利要求8或9所述的一種密鑰協(xié)商方法,其特征是步驟S8所述返回的協(xié)商結(jié)果響應(yīng)中包括對方臨時ECC密鑰對的密鑰位長度、對方臨時ECC公鑰、會話密鑰ID。
      12.根據(jù)權(quán)利要求I所述的一種密鑰協(xié)商方法,其特征是步驟S4中所述根據(jù)所述指令得到自身ECC密鑰對和自身ID具體為 判斷所述指令的數(shù)據(jù)域的前4個字節(jié)是否對應(yīng)所述自身ECC密鑰對的存儲位置,是則根據(jù)所述存儲位置獲取所述自身ECC密鑰對,否則報錯; 判斷非易失性存儲器中是否存儲有自身ID,是則獲取所述自身ID,否則報錯。
      13.根據(jù)權(quán)利要求12所述的一種密鑰協(xié)商方法,其特征是步驟S8所述返回的協(xié)商結(jié)果響應(yīng)中包括會話密鑰ID。
      14.根據(jù)權(quán)利要求13所述的一種密鑰協(xié)商方法,其特征是會話密鑰ID是步驟S6中所述計算生成的會話密鑰的存儲位置,所述會話密鑰ID的位長為4個字節(jié)。
      15.根據(jù)權(quán)利要求I所述的一種密鑰協(xié)商方法,其特征是所述確定自身ECC密鑰對的存儲位置具體為 步驟103-1 :根據(jù)所述指令的數(shù)據(jù)域的前2個字節(jié)檢索應(yīng)用ID,如果檢索到所述應(yīng)用ID,繼續(xù);否則,報錯;步驟103-2 :根據(jù)所述指令的數(shù)據(jù)域的第3和第4字節(jié)檢索容器ID,如果檢索到所述容器ID,繼續(xù);否則,報錯; 步驟103-3 :根據(jù)所述應(yīng)用ID和容器ID找到所述存儲位置。
      16.根據(jù)權(quán)利要求I所述的一種密鑰協(xié)商方法,其特征是步驟S6所述計算生成會話密鑰的過程具體為在自身臨時ECC公鑰滿足已知橢圓曲線的條件下,調(diào)用密碼雜湊函數(shù),將自身ID長度值、自身ID、第一參數(shù)、第二參數(shù)、第三數(shù)值、自身ECC公鑰順序拼接得到自身雜湊值,將對方ID長度值、對方ID、第一參數(shù)、第二參數(shù)、第三數(shù)值、對方ECC公鑰順序拼接得到對方雜湊值,將自身臨時ECC私鑰與第一整數(shù)相乘再與自身ECC私鑰相加得到第一數(shù)值,將對方臨時ECC公鑰與第二整數(shù)相乘再與對方ECC公鑰相加得到第二數(shù)值,第一數(shù)值與第三參數(shù)相乘并取整后乘以第二數(shù)值得到第三數(shù)值,調(diào)用密鑰派生函數(shù)將第三數(shù)值、對方雜湊值、自身雜湊值順序拼接得到所述會話密鑰。
      17.根據(jù)權(quán)利要求I所述的一種密鑰協(xié)商方法,其特征是所述密鑰交換算法采用ECDH算法。
      全文摘要
      本發(fā)明公開了一種密鑰協(xié)商方法,屬于信息安全領(lǐng)域,所述方法包括,根據(jù)接收到的指令判斷指令類型,根據(jù)不同的指令類型從所述指令中獲取協(xié)商密鑰所需參數(shù),當(dāng)通信雙方都具備了協(xié)商密鑰所需參數(shù)對方ECC公鑰、對方臨時ECC公鑰、對方ID以及自身ECC密鑰對、自身臨時ECC密鑰對、自身ID時,根據(jù)密鑰交換算法計算生成會話密鑰。本發(fā)明提供的方法是一種安全性高的密鑰協(xié)商方法,通信雙方可以在不共享任何秘密的情況下協(xié)商出一個會話密鑰,具有速度快,資源少,安全性高等特點。
      文檔編號H04L29/06GK102724211SQ20121022500
      公開日2012年10月10日 申請日期2012年6月29日 優(yōu)先權(quán)日2012年6月29日
      發(fā)明者于華章, 陸舟 申請人:飛天誠信科技股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1