本發(fā)明涉及用于避免對(duì)數(shù)據(jù)傳輸?shù)牟倏v的一種方法和一種裝置。
背景技術(shù):
de102009002396a1描述了一種用于借助消息認(rèn)證碼(messageauthenticationcode)對(duì)在車輛中的數(shù)據(jù)傳輸進(jìn)行操縱保護(hù)的方法。
在車輛中例如通過(guò)控制器局域網(wǎng)絡(luò)(controllerareanetwork)或flexray數(shù)據(jù)總線進(jìn)行傳輸?shù)南⑴鋫溆行r?yàn)和、例如用于循環(huán)冗余校驗(yàn)(cyclicredundancycheck)的校驗(yàn)和。安全關(guān)鍵的消息在接收方一側(cè)依據(jù)該校驗(yàn)和來(lái)檢驗(yàn)。
該校驗(yàn)和也可以通過(guò)消息認(rèn)證碼來(lái)補(bǔ)充或者代替。
借助軟件和/或特定地針對(duì)所述軟件適配的硬件來(lái)實(shí)現(xiàn)所述檢驗(yàn)。
為了防止操縱,可以根據(jù)最小權(quán)限的安全范例(所謂的“principleofleastprivilege(最小權(quán)限原則)”)的原則來(lái)開(kāi)發(fā)軟件和/或硬件。在此,在整個(gè)系統(tǒng)之內(nèi),每個(gè)模塊、也就是說(shuō)每個(gè)處理器或每個(gè)程序都只獲得對(duì)如下信息或資源的訪問(wèn)權(quán),所述信息或資源對(duì)于滿足相應(yīng)的目的是必要的。
如果將特定的硬件模塊用于檢驗(yàn)消息認(rèn)證碼,那么最小權(quán)限的安全范例可能由于如下情況而被違反:特定的硬件模塊也可被用于生成消息認(rèn)證碼。由此,對(duì)于消息的有危害的接收方來(lái)說(shuō)也可能以最初的發(fā)送方的名義來(lái)發(fā)送具有有效的消息認(rèn)證碼的失真的消息。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了按照獨(dú)立權(quán)利要求所述的用于對(duì)數(shù)據(jù)傳輸進(jìn)行操縱保護(hù)的一種方法和一種裝置。
由此,在接收方一側(cè)滿足最小權(quán)限的安全范例。在特定的硬件模塊中,在安全檢驗(yàn)失敗時(shí)的錯(cuò)誤反應(yīng)是多余的。不需要使用根據(jù)汽車安全完整性等級(jí)(automotivesafetyintegritylevel)評(píng)定的硬件來(lái)避免對(duì)數(shù)據(jù)傳輸?shù)牟倏v,。
其它的優(yōu)點(diǎn)由從屬權(quán)利要求的主題和下面的描述以及附圖中得到。
附圖說(shuō)明
實(shí)施例在附圖中被示出并且在隨后的描述中予以闡述。
圖1示意性地示出了用于處理所接收到的消息的方法,
圖2示意性地示出了用于處理所接收到的消息的另一方法,
圖3示意性地示出了用于進(jìn)行數(shù)據(jù)傳輸?shù)难b置。
具體實(shí)施方式
該方法的第一部分110借助軟件來(lái)執(zhí)行,該軟件例如在計(jì)算單元上實(shí)施。在下文,該計(jì)算單元也被稱為中央處理單元,cpu(centralprocessingunit)。
該方法的第二部分120借助特定的硬件模塊來(lái)執(zhí)行。所述特定的硬件模塊在下文也用hsm來(lái)表示。
在所述兩個(gè)部分之間的界限在圖1中被顯示為虛線。
在本例中,使用消息認(rèn)證碼、尤其是基于密碼的消息認(rèn)證碼(公知為cmac),作為消息認(rèn)證碼(公知為mac)的實(shí)現(xiàn)形式。在對(duì)cmac的執(zhí)行方面,尤其是參閱nist特刊(specialpublication)800-38b。原則上,該方法能被應(yīng)用于所有的mac變型方案。
為了處理消息,該方法具有如下步驟。
在步驟131中,由cpu接收消息。該消息包括cmac。該消息例如包括安全關(guān)鍵的信號(hào)。
緊接著,實(shí)施步驟132。
在步驟132中,由cpu將消息轉(zhuǎn)交給hsm。在本例中,為此設(shè)置接口、尤其是數(shù)據(jù)總線,用于在所述cpu與所述hsm之間進(jìn)行數(shù)據(jù)傳輸。
緊接著,實(shí)施步驟133。
在步驟133中,在hsm中計(jì)算檢驗(yàn)cmac,尤其是值cmac_c。
緊接著,實(shí)施步驟134。
在步驟134中,在hsm中將所接收到的cmac與所述檢驗(yàn)cmac進(jìn)行比較。尤其是,將被包含在該消息中的cmac與所述值cmac_c進(jìn)行比較。
在一致時(shí),實(shí)施步驟135。否則實(shí)施步驟136。
在步驟135中,將輸出參量的值設(shè)置到如下值,所述值用信號(hào)通知所接收到的cmac與所述檢驗(yàn)cmac一致。例如,將結(jié)果變量設(shè)置到值“ok”。
緊接著,實(shí)施步驟137。
在步驟136中,將輸出參量的值設(shè)置到如下值,所述值用信號(hào)通知所接收到的cmac與所述檢驗(yàn)cmac不一致。例如,將結(jié)果變量設(shè)置到值“wrong”。
緊接著,實(shí)施步驟137。
在步驟137中,將檢驗(yàn)的結(jié)果和所述檢驗(yàn)cmac轉(zhuǎn)交給cpu。尤其是,將值cmac_c和結(jié)果變量轉(zhuǎn)交給cpu。為此,設(shè)置接口、尤其是數(shù)據(jù)總線,用于在所述hsm與所述cpu之間進(jìn)行數(shù)據(jù)傳輸。
如在圖1中所示,該接口可以具有用于所述結(jié)果變量的第一區(qū)域138和用于所述值cmac_c的第二區(qū)域139。
緊接著,實(shí)施步驟140。
在步驟140中,在cpu中檢驗(yàn)已經(jīng)由hsm執(zhí)行過(guò)的檢驗(yàn)的結(jié)果。如果在hsm中的檢驗(yàn)已經(jīng)得出所接收到的cmac與所述檢驗(yàn)cmac不一致,那么實(shí)施步驟141。否則實(shí)施步驟142。
在步驟141中,觸發(fā)錯(cuò)誤反應(yīng)。例如,用錯(cuò)誤登記“error”來(lái)寫錯(cuò)誤存儲(chǔ)器。
緊接著結(jié)束該方法。
在步驟142中,將在該消息中由cpu接收的cmac與已經(jīng)由hsm轉(zhuǎn)交的檢驗(yàn)cmac進(jìn)行比較。例如,將來(lái)自該消息的cmac與所述值cmac_c進(jìn)行比較。
可以設(shè)置對(duì)刷新計(jì)數(shù)器(freshnesscounter)的檢驗(yàn),以便確保如下消息應(yīng)當(dāng)在該時(shí)間點(diǎn)予以比較,所述消息的cmac與所述值cmac_c進(jìn)行比較。
緊接著實(shí)施步驟143。
在步驟143中,使來(lái)自該消息的數(shù)據(jù)準(zhǔn)備用于進(jìn)一步使用。例如將所述數(shù)據(jù)從該消息中提取出來(lái)。
緊接著實(shí)施步驟144。
在步驟144中,由cpu輸出所述數(shù)據(jù)??商鎿Q地,所述數(shù)據(jù)也可以在cpu上運(yùn)行的其它程序部分中使用。例如,將所述數(shù)據(jù)存儲(chǔ)到輸出存儲(chǔ)器中。
緊接著結(jié)束該方法。
可替換地或附加地,在步驟141中已經(jīng)觸發(fā)了錯(cuò)誤反應(yīng)之后,也可以使用該消息、尤其是已經(jīng)利用該消息被接收到的數(shù)據(jù)。
在本例中執(zhí)行所述步驟中的某些步驟,使得滿足預(yù)先給定的汽車安全完整性等級(jí)。為此,使用按照iso26262標(biāo)準(zhǔn)的版本(即汽車安全完整性等級(jí))的執(zhí)行方案,所述iso26262標(biāo)準(zhǔn)的版本在本申請(qǐng)的時(shí)間點(diǎn)是公知的。
在本例中,對(duì)于其它步驟不使用該標(biāo)準(zhǔn)。這些步驟在本例中可能滿足其它質(zhì)量要求。在本例中,這些步驟131、140、141、142、143和144必須按照預(yù)先給定的汽車安全完整性等級(jí)來(lái)執(zhí)行,以便盡可能避免操縱。也存在如下可能性:在相對(duì)應(yīng)地低的要求的情況下相對(duì)應(yīng)地不使被提到的步驟的全部都執(zhí)行。
優(yōu)選地,只有當(dāng)步驟134已經(jīng)成功時(shí),才在步驟137中將在步驟133中所計(jì)算出的檢驗(yàn)cmac轉(zhuǎn)交給cpu。否則,有利地,將無(wú)效的檢驗(yàn)cmac、例如值0轉(zhuǎn)交給cpu。
由此,只要所述檢驗(yàn)cmac只有事先在步驟132中已經(jīng)轉(zhuǎn)交了具有一致的cmac的消息時(shí)才離開(kāi)hsm,就滿足最小權(quán)限的安全范例。
圖2描述了所述處理的另一方法。如在事先依據(jù)圖1所描述的方法中那樣,具有相同的流程的步驟在圖2中用相同的附圖標(biāo)記來(lái)表示。所述附圖標(biāo)記在下文中不再一次予以闡述。
現(xiàn)在實(shí)施步驟235,而不是步驟135。
現(xiàn)在實(shí)施步驟236,而不是步驟136。
現(xiàn)在實(shí)施步驟237,而不是步驟137。
在步驟235中,將輸出參量的值設(shè)置到與所述檢驗(yàn)cmac一致的值。
例如,將結(jié)果變量設(shè)置到所述檢驗(yàn)cmac的值、尤其是已經(jīng)由hsm計(jì)算出的值cmac_c。
在步驟236中,將輸出參量的值設(shè)置到對(duì)應(yīng)于根據(jù)可能cmac的格式的值,但是既不與所接收到的消息的cmac一致,也不與由hsm計(jì)算出的檢驗(yàn)cmac一致、尤其是不與所述值cmac_c一致。例如使用值cmac_c_wrong。
在步驟237中,將檢驗(yàn)的結(jié)果、例如檢驗(yàn)值轉(zhuǎn)交給cpu。尤其是將值cmac_c或值cmac_c_wrong轉(zhuǎn)交給cpu。
這意味著,步驟237已經(jīng)如下地被優(yōu)化了,與cmac_c或cmac_c_wrong一起僅僅還有一個(gè)返回值被轉(zhuǎn)交給cpu。在此,根據(jù)在步驟134中的檢驗(yàn)結(jié)果,所述返回值或者對(duì)應(yīng)于從步驟133計(jì)算出的檢驗(yàn)cmac,或者對(duì)應(yīng)于錯(cuò)誤的cmac、也就是說(shuō)cmac_c_wrong。
借此,與之前已經(jīng)描述過(guò)的方法相比,一方面取消了在接口上的第一區(qū)域138。另一方面,取消了步驟140、也就是說(shuō)對(duì)結(jié)果變量的檢驗(yàn)。因此,失敗的檢驗(yàn)同樣被識(shí)別并且觸發(fā)相對(duì)應(yīng)的錯(cuò)誤反應(yīng)。
例如,在步驟235、236、237中使用下面的策略來(lái)確定cmac_c或cmac_c_wrong。
在檢驗(yàn)成功時(shí),將檢驗(yàn)cmac、尤其是cmac_c轉(zhuǎn)交給cpu。
在檢驗(yàn)不成功時(shí),計(jì)算出錯(cuò)誤的cmac、尤其是值cmac_c_wrong并且將其轉(zhuǎn)交給cpu。
同時(shí),適用下面的條件:
(b1)cmac_c_wrong不同于在所接收到的消息中的cmac,
(b2)cmac_c_wrong不同于所述檢驗(yàn)cmac。
第一條件b1是功能安全(safety)的要求,以便確保在步驟142中的檢驗(yàn)失敗。
第二條件b2是信息安全(security)的要求,以便滿足最小權(quán)限的安全范例。
用于cmac_c_wrong的計(jì)算方法被選擇為使得兩個(gè)條件b1和b2都被滿足并且在此尤其是不可能回推出所述檢驗(yàn)cmac、尤其是所述值cmac_c。
附加地,要發(fā)送的消息可以配備有刷新計(jì)數(shù)器,以便可以從功能安全(safety)(例如由于損壞的hw引起的數(shù)據(jù)幀凍結(jié)(daten-frame-freeze))的角度以及從信息安全(security)(重放攻擊(replay-attack))的角度確保數(shù)據(jù)的實(shí)時(shí)性。
本發(fā)明例如被用在如下消息的受保護(hù)的總線通信中,所述消息具有安全相關(guān)的內(nèi)容。
圖3示出了一種裝置,所述裝置包括馬達(dá)控制設(shè)備310和制動(dòng)控制設(shè)備320,它們可以通過(guò)上面描述的類型的方法進(jìn)行通信。馬達(dá)控制設(shè)備310包括第一收發(fā)器311、第一cpu312和第一特定硬件313。制動(dòng)控制設(shè)備320包括第二收發(fā)器321、第二cpu322和第二特定硬件323。收發(fā)器311、321或cpu312、322被構(gòu)造用于借助所描述的方法之一進(jìn)行通信。該方法的第一部分110例如相應(yīng)地借助軟件來(lái)執(zhí)行,所述軟件在相應(yīng)的cpu312、322上實(shí)施。
該方法的第二部分120例如借助特定的硬件模塊在相應(yīng)的特定硬件313、323中執(zhí)行。優(yōu)選地,hsm是硬件模塊。該硬件模塊包含或者使用例如一個(gè)或多個(gè)硬件外圍設(shè)備,以便實(shí)施上面所描述的功能。
該硬件模塊也可以至少部分地設(shè)計(jì)為如下處理器,所述處理器實(shí)施軟件以便呈現(xiàn)相應(yīng)的功能。
例如,隨機(jī)數(shù)發(fā)生器可以被安放在硬件模塊的硬件中或者作為所述硬件模塊的外圍硬件來(lái)安放。該隨機(jī)數(shù)發(fā)生器例如可以通過(guò)附加的處理器來(lái)實(shí)現(xiàn),軟件在所述附加的處理器上實(shí)施。
在硬件模塊中的步驟、尤其是步驟133、134、135、136、235、236也可能會(huì)以軟件來(lái)實(shí)施。
收發(fā)器311、321例如能通過(guò)數(shù)據(jù)總線330、例如控制器局域網(wǎng)絡(luò)或者flexray來(lái)彼此連接。其它控制設(shè)備同樣可以使用該方法。