本技術(shù)涉及數(shù)據(jù)處理設(shè)備之間的數(shù)據(jù)的通信,并且特別地,但不排他地涉及在接收設(shè)備處驗(yàn)證這樣的數(shù)據(jù)的完整性。
背景技術(shù):
具有處理和通信能力的數(shù)據(jù)處理設(shè)備的數(shù)量不斷增長(zhǎng),這允許在不同的環(huán)境中,作為“物聯(lián)網(wǎng)”(IoT)的一部分的這樣的數(shù)據(jù)處理設(shè)備、對(duì)象和云服務(wù)之間的交互。
例如,家中的供熱系統(tǒng)可以從設(shè)置在家中的網(wǎng)絡(luò)(例如,網(wǎng)狀網(wǎng))中的各種溫度傳感器設(shè)備收集信息,并且基于收集的信息控制加熱器的激活;工廠污染監(jiān)測(cè)傳感器設(shè)備可以從工廠網(wǎng)絡(luò)中的各種化學(xué)傳感器收集信息,并且基于收集的信息經(jīng)由因特網(wǎng)安排維護(hù);電冰箱可以從電冰箱內(nèi)的產(chǎn)品收集信息,并且例如經(jīng)由用戶的智能手表或智能電話,向用戶更新存貨水平、保質(zhì)期等;而被配置為用于鎖上/解鎖門的門鎖設(shè)備可以與經(jīng)授權(quán)的設(shè)備(諸如與其配對(duì)的智能電話)通信,以驗(yàn)證經(jīng)授權(quán)的設(shè)備,以及當(dāng)經(jīng)授權(quán)的設(shè)備在其范圍內(nèi)時(shí),解鎖一扇或多扇門。
在IoT應(yīng)用中,這樣的數(shù)據(jù)處理設(shè)備(下文中被稱為“IoT設(shè)備”)可能具有最低安全能力,使得它們趨于易受到第三方的攻擊。例如,攻擊者可以使用欺詐設(shè)備,截獲去往IoT設(shè)備的消息并且修改/偽造信息,隨后將已經(jīng)修改/偽造的信息發(fā)送到IoT設(shè)備以便損害(compromise)IoT設(shè)備。附加地或者替代地,攻擊者可以將包括損壞數(shù)據(jù)的包發(fā)送到IoT設(shè)備,這可能導(dǎo)致IoT設(shè)備的故障。
代替試圖截獲消息,攻擊者可以替代地重復(fù)向IoT設(shè)備發(fā)送經(jīng)偽造的信息,使得IoT設(shè)備會(huì)試圖處理經(jīng)偽造的信息,使得IoT設(shè)備處的閃存周期被用盡或電池被耗盡,從而IoT設(shè)備將不能從真實(shí)的設(shè)備處接收其它消息。另外,重復(fù)地接收具有其中有錯(cuò)誤的包的消息的IoT設(shè)備可能重復(fù)地重新請(qǐng)求來自發(fā)送設(shè)備的更新信息,從而增加網(wǎng)絡(luò)上的擁塞。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)第一技術(shù),提供一種用于驗(yàn)證由數(shù)據(jù)處理設(shè)備接收到的消息中的數(shù)據(jù)的完整性的方法,所述消息包括多個(gè)包,所述方法包括:在所述設(shè)備處,接收來自第一資源的與所述消息相關(guān)聯(lián)的清單,所述清單包括對(duì)于所述多個(gè)包的多個(gè)組校驗(yàn)值;在所述設(shè)備處,接收來自第一資源或不同的資源的消息;產(chǎn)生對(duì)于所述多個(gè)包的第一滾動(dòng)散列進(jìn)程;從第一滾動(dòng)散列進(jìn)程導(dǎo)出對(duì)于所述多個(gè)包的沿一個(gè)或多個(gè)路徑的組的組校驗(yàn)值;基于或者響應(yīng)于導(dǎo)出的組校驗(yàn)值對(duì)應(yīng)于所述清單中的所述多個(gè)組校驗(yàn)值的確定,驗(yàn)證所述消息中的數(shù)據(jù)的完整性。
根據(jù)第二技術(shù),提供一種用于由數(shù)據(jù)處理設(shè)備驗(yàn)證消息的一部分中的數(shù)據(jù)的完整性的方法,所述部分包括多個(gè)包,所述方法包括:在所述設(shè)備處,接收來自第一資源的所述部分;產(chǎn)生對(duì)于所述多個(gè)包的滾動(dòng)散列進(jìn)程;從所述滾動(dòng)散列進(jìn)程導(dǎo)出對(duì)于所述多個(gè)包的沿第一路徑的組的組校驗(yàn)值;從所述滾動(dòng)散列進(jìn)程導(dǎo)出對(duì)于所述多個(gè)包的沿第二路徑的組的組校驗(yàn)值;基于或者響應(yīng)于導(dǎo)出的對(duì)于沿第一路徑的組的組校驗(yàn)值中的一個(gè)或多個(gè)對(duì)應(yīng)于導(dǎo)出的對(duì)于沿第二路徑的組的組校驗(yàn)值中的一個(gè)或多個(gè)的確定,驗(yàn)證所述消息的一部分中的數(shù)據(jù)的完整性。
根據(jù)第三技術(shù),提供一種從資源向一個(gè)或多個(gè)數(shù)據(jù)處理設(shè)備提供數(shù)據(jù)清單以用于驗(yàn)證與所述清單相關(guān)聯(lián)的消息的多個(gè)包中的數(shù)據(jù)的完整性的方法,所述方法包括:在所述資源處產(chǎn)生第一滾動(dòng)散列進(jìn)程;在所述資源處,從第一滾動(dòng)散列進(jìn)程導(dǎo)出對(duì)于所述多個(gè)包的沿一個(gè)或多個(gè)路徑的組的校驗(yàn)值;在所述清單中,提供所述清單中的所述組的校驗(yàn)值;在所述清單中,提供標(biāo)識(shí)所述組的數(shù)據(jù);向所述數(shù)據(jù)處理設(shè)備發(fā)送所述清單。
附圖說明
本技術(shù)通過舉例的方式在附圖中示出,在附圖中:
圖1示意性地示出與本技術(shù)一起使用的IoT設(shè)備的示例;
圖2示意性地示出在圖1的IoT設(shè)備的無線通信范圍內(nèi)的多個(gè)數(shù)據(jù)處理設(shè)備;
圖3a示意性地示出包括1至n個(gè)數(shù)據(jù)包的消息;
圖3b示意性地示出前向滾動(dòng)散列的產(chǎn)生;
圖3c示意性地示出圖3b的前向滾動(dòng)散列的兩個(gè)不同的提取樣本陣列;
圖3d示意性地示出與圖3a的消息相關(guān)聯(lián)的清單文檔的示例;
圖4a示意性地示出圖3a的消息;
圖4b示意性地示出后向滾動(dòng)散列的產(chǎn)生;
圖4c示意性地示出兩個(gè)驗(yàn)證路徑;
圖5a示意性地示出對(duì)于圖3a的消息的四種路徑;
圖5b示意性地更詳細(xì)示出了圖3d的數(shù)據(jù)清單;
圖6示意性地示出發(fā)送設(shè)備和接收設(shè)備之間的交互;
圖7a示意性地示出發(fā)送設(shè)備產(chǎn)生并且向一個(gè)或多個(gè)接收設(shè)備發(fā)送數(shù)據(jù)清單和相關(guān)聯(lián)的消息的示例方法;
圖7b示意性地示出接收設(shè)備處理數(shù)據(jù)清單并且驗(yàn)證消息的包的數(shù)據(jù)完整性的示例方法;以及
圖8示意性地示出在概念上以矩陣布置的多個(gè)包。
具體實(shí)施方式
圖1的IoT設(shè)備1的電路包括耦合到貯存元件4的處理元件2、通信電路6和輸入/輸出(I/O)電路8。
處理元件2可以包括被設(shè)置為通過執(zhí)行由程序的指令指定的算術(shù)、邏輯、控制和輸入/輸出(I/O)操作來執(zhí)行所述指令的處理電路2。
貯存元件4可以包括,例如,具有易失性(V)存儲(chǔ)器(例如,RAM)和非易失性(NV)存儲(chǔ)器5(例如,閃存或ROM)的存儲(chǔ)器電路4。存儲(chǔ)器電路4可以存儲(chǔ)由處理元件2執(zhí)行的程序以及數(shù)據(jù)(諸如證書)。這樣的證書可以包括密鑰材料,例如一個(gè)或多個(gè)密碼密鑰,所述一個(gè)或多個(gè)密碼密鑰對(duì)應(yīng)于在與其通信的遠(yuǎn)程設(shè)備上提供的一個(gè)或多個(gè)密碼密鑰,以用于認(rèn)證/加密在它們之間發(fā)送的通信。
例如,在對(duì)稱密鑰加密方式中,密鑰材料可以包括用于加密/解密消息的相同密鑰,而在非對(duì)稱密鑰加密方式(例如,公鑰加密方式)中,密鑰材料可以包括一個(gè)或多個(gè)公鑰/私鑰對(duì),從而,具有私鑰的設(shè)備可以解密使用對(duì)應(yīng)的公鑰加密的消息,而具有私鑰的設(shè)備可以利用私鑰對(duì)消息進(jìn)行簽名,從而該簽名可以被具有對(duì)應(yīng)的公鑰的另一個(gè)設(shè)備驗(yàn)證。
通信電路6可以被設(shè)置為與遠(yuǎn)程設(shè)備(未在圖1中示出)通信。通信電路6可以使用無線通信7,諸如,例如,無線局域網(wǎng)(例如,WiFi)、短距離通信(諸如射頻識(shí)別(RFID)、近場(chǎng)通信(NFC))、或在無線傳感器網(wǎng)絡(luò)中使用的通信(諸如ZigBee、線程(Thread)、藍(lán)牙和/或藍(lán)牙低功耗(BLE))。另外,通信電路6可以使用蜂窩網(wǎng)絡(luò)(諸如3G或4G)。通信電路6還可以使用有線通信(未示出)(諸如光纖或金屬電纜)。通信電路6還可以使用兩種或多種不同的通信形式,諸如上述示例中的若干個(gè)的組合。
輸入/輸出(I/O)電路8可以包括感測(cè)來自周圍環(huán)境的輸入和/或例如使用蜂鳴器或發(fā)光二極管(未示出)向用戶提供輸出的感測(cè)電路。IoT設(shè)備1可以基于感測(cè)到的輸入產(chǎn)生操作數(shù)據(jù),由此該操作數(shù)據(jù)可以被存儲(chǔ)在存儲(chǔ)器電路4中,并且可以被處理器電路2處理。I/O電路8還可以包括允許用戶與IoT設(shè)備1交互的用戶接口(例如,按鈕)。另外,IoT設(shè)備1可以包括用于向用戶傳達(dá)消息或從用戶接收輸入的顯示器(例如,有機(jī)發(fā)光二極管(OLED)顯示器)。
IoT設(shè)備1還包括電源9。雖然可以使用任何適合的電源(例如AC或DC主電源;太陽能、風(fēng)能等),但是在圖1中,該電源是電池(例如,投幣鋰電池)。
應(yīng)當(dāng)想到,取決于IoT設(shè)備1的具體功能,IoT設(shè)備1可以包括未在這里描述的其他硬件/軟件組件。例如,IoT設(shè)備1可以是具有嵌入式全球定位系統(tǒng)(GPS)以捕獲和記錄用戶的移動(dòng)并且相應(yīng)地產(chǎn)生操作數(shù)據(jù)的健身手環(huán)。
圖2示意性地示出了在網(wǎng)絡(luò)10(例如,網(wǎng)狀網(wǎng)、星狀網(wǎng)等)中相互通信的多個(gè)IoT設(shè)備1,其中IoT設(shè)備1可以使用一種或多種合適的通信協(xié)議(諸如BLE、藍(lán)牙、ZigBee)相互通信,并且其中IoT設(shè)備1還可以與其他資源通信,其中其他資源可以被設(shè)置在網(wǎng)絡(luò)10中或者可以被設(shè)置在不同的網(wǎng)絡(luò)中(例如,在因特網(wǎng)上)。
在圖2中,示出了作為云服務(wù)器的資源12和14,其中IoT設(shè)備1被布置為與資源12/14通信,以用于交換消息或消息的部分。
云服務(wù)器12/14可以,例如,將包括固件更新、應(yīng)用、文檔等的消息20發(fā)送到一個(gè)或多個(gè)IoT設(shè)備1。在一些示例中,消息20可被作為廣播通信發(fā)送到所有IoT設(shè)備1,或者可以被例如作為單播/多播通信發(fā)送到特定的IoT設(shè)備1。此外,整個(gè)消息可以包括從不同的服務(wù)器12/14發(fā)送的一個(gè)或多個(gè)不同的部分。
雖然在圖2中被示出為云服務(wù)器,但是在替選的示例中,資源可以包括能夠執(zhí)行下文中描述的技術(shù)的任何適合的資源,諸如數(shù)據(jù)處理設(shè)備(例如,智能電話、平板電腦等)。
應(yīng)當(dāng)認(rèn)識(shí)到,可以設(shè)置沒有被具體描述的其他硬件/軟件以實(shí)現(xiàn)這樣的通信。這樣的硬件可以包括網(wǎng)關(guān)設(shè)備、路由器等。
為了證明消息中的數(shù)據(jù)的完整性,發(fā)送設(shè)備可以使用合適的變換函數(shù)(例如,SHA256、SHA512、CRC8、MD5等)變換整個(gè)消息20,以產(chǎn)生整個(gè)消息20的散列。
校驗(yàn)值(例如,校驗(yàn)字、校驗(yàn)和)可以從散列被導(dǎo)出,由此消息然后可以和與其聯(lián)結(jié)的導(dǎo)出的校驗(yàn)值一起發(fā)送。為了驗(yàn)證接收到的消息中的數(shù)據(jù)的完整性,接收設(shè)備可以使用相同的函數(shù)來產(chǎn)生接收到的消息的散列,該散列可以被用作校驗(yàn)值。如果產(chǎn)生的校驗(yàn)值對(duì)應(yīng)于接收到的校驗(yàn)值,則可以得出消息中的數(shù)據(jù)的完整性沒有被損害(例如,數(shù)據(jù)在發(fā)送后不太可能被偽造、破壞或修改)。如果校驗(yàn)值不相匹配,則可以得出數(shù)據(jù)完整性被損害,由此接收設(shè)備可以重新請(qǐng)求傳輸整個(gè)消息。
在一些情況下,如果消息中的數(shù)據(jù)有效載荷太大以至于不能作為單個(gè)消息發(fā)送,該消息可以被劃分為較小的部分,其中部分可以和與消息的一部分(例如,要最后發(fā)送的部分)聯(lián)結(jié)的校驗(yàn)值分開發(fā)送。
應(yīng)當(dāng)認(rèn)識(shí)到,迄今為止,因?yàn)橄⒌某晒卧鞂⑿枰粽咛峁┠芴峁┢谕男r?yàn)值的包,增加對(duì)于整個(gè)消息的校驗(yàn)值的長(zhǎng)度可以提升安全性。對(duì)于大量的比特,例如,當(dāng)使用SHA256或SHA512來產(chǎn)生散列時(shí),獲得這樣的校驗(yàn)值可能難以實(shí)現(xiàn)。但是,增加校驗(yàn)值中的比特的數(shù)量將導(dǎo)致整體通信(整個(gè)消息+校驗(yàn)值)中的數(shù)據(jù)大小的增加,這可能影響網(wǎng)絡(luò)中(例如,在具有帶寬限制的網(wǎng)絡(luò)中)的通信的傳輸速度/數(shù)量。
在驗(yàn)證消息中的數(shù)據(jù)的完整性前,接收設(shè)備必須等到接收完整個(gè)消息,因?yàn)橹挥挟?dāng)接收到整個(gè)消息時(shí),接收設(shè)備才可以產(chǎn)生對(duì)應(yīng)的校驗(yàn)值。
另外,這樣的功能可能會(huì)增加網(wǎng)絡(luò)中的擁塞,其中,當(dāng)多個(gè)設(shè)備接收消息時(shí),基本上同時(shí)進(jìn)行數(shù)據(jù)完整性校驗(yàn)、識(shí)別錯(cuò)誤以及重新請(qǐng)求消息傳輸,然后資源將基本上同時(shí)接收到多個(gè)重新請(qǐng)求,并且可能變得過載并且發(fā)生故障。此外,網(wǎng)絡(luò)可能無法基本上同時(shí)處理大量的重新請(qǐng)求并且可能也發(fā)生故障。
圖3a示意性地示出了消息20,該消息20包括(n)個(gè)數(shù)據(jù)包22。應(yīng)當(dāng)認(rèn)識(shí)到,消息20可以是固件(例如,固件更新)、程序指令、文本文件、圖像文件、聲音文件等,或任何其他形式的數(shù)據(jù)(例如,傳感器數(shù)據(jù)),其中包22包括比特形式的數(shù)據(jù)(圖3a中未示出);圖3b示意性地示出了滾動(dòng)摘要/散列28(下文中被稱為“滾動(dòng)散列”)的產(chǎn)生;圖3c示意性地示出了被布置為陣列33的相應(yīng)的滾動(dòng)散列28的提取樣本,而圖3d示意性地示出了與消息20相關(guān)聯(lián)的數(shù)據(jù)清單30(下文中被稱為“清單”)的示例,其中清單包括與相關(guān)聯(lián)的消息有關(guān)的數(shù)據(jù)。清單30可以由發(fā)送設(shè)備產(chǎn)生。
在本示例中,使用合適的函數(shù)對(duì)消息20的每一個(gè)包22進(jìn)行變換以產(chǎn)生與其對(duì)應(yīng)的散列26??梢允褂煤线m的變換函數(shù)(例如,SHA256、SHA512、CRC8、MD5等)來進(jìn)行這樣的變換。相應(yīng)的包22的散列26在下文中被稱為“靜態(tài)散列”,其中特定的靜態(tài)散列26的值(S1、S2、S3-Sn)取決于用于產(chǎn)生該特定靜態(tài)散列26的包22的特征。
此外,產(chǎn)生了滾動(dòng)散列28的進(jìn)程或鏈,其中進(jìn)程中的特定的滾動(dòng)散列28的值取決于所有之前的包的滾動(dòng)散列的特性。
在本示例中,在從第一包(包1)至最后包(包n)的概念性的前向方向上的連續(xù)包(下文中被稱為“前向連續(xù)包”)的靜態(tài)散列被用來產(chǎn)生滾動(dòng)散列28的進(jìn)程(下文中被稱為“前向滾動(dòng)散列”)。
此外,秘密數(shù)據(jù)29可以被選擇性地用來有助于滾動(dòng)散列的產(chǎn)生,其中,例如,秘密數(shù)據(jù)29可以是隨機(jī)數(shù)或偽隨機(jī)數(shù)(例如,隨機(jī)數(shù)(nonce))或密鑰材料。
在圖3b的示意性示例中,第一滾動(dòng)散列(R1)對(duì)應(yīng)于第一包的靜態(tài)散列(S1)。
第二滾動(dòng)散列(R2)對(duì)應(yīng)于靜態(tài)散列(S2)、滾動(dòng)散列(R1)和秘密數(shù)據(jù)29的組合;而第三滾動(dòng)散列(R3)對(duì)應(yīng)于靜態(tài)散列(S3)和滾動(dòng)散列(R2)的組合。相似地,最終滾動(dòng)散列(Rn)對(duì)應(yīng)于靜態(tài)散列(Sn)和滾動(dòng)散列(Rn-1)的組合。在示例中,滾動(dòng)散列(Rn-1)是累積的,從而最終滾動(dòng)散列(Rn)優(yōu)選地對(duì)應(yīng)于整個(gè)消息20的散列。
在圖3b中,秘密數(shù)據(jù)29被描繪為與R1和S1組合以產(chǎn)生R2。但是,秘密數(shù)據(jù)29可以被用來直接或間接產(chǎn)生任何滾動(dòng)散列。例如,當(dāng)被用來直接產(chǎn)生滾動(dòng)散列時(shí),秘密數(shù)據(jù)29可以與滾動(dòng)散列組合以產(chǎn)生隨后的滾動(dòng)散列。
當(dāng)被用來間接產(chǎn)生滾動(dòng)散列時(shí),秘密數(shù)據(jù)29可以與一個(gè)或多個(gè)包和/或一個(gè)或多個(gè)靜態(tài)散列(當(dāng)其存在時(shí))組合,組合的結(jié)果被用來產(chǎn)生對(duì)于包的滾動(dòng)散列。
雖然靜態(tài)散列可以通過增加攻擊者偽造包以獲得特定的散列的難度來提高安全性,但是產(chǎn)生靜態(tài)散列不是必需的,并且在替代性的示例中,對(duì)于特定包的滾動(dòng)散列可以對(duì)應(yīng)于該包與先前包的滾動(dòng)散列的組合。
應(yīng)當(dāng)認(rèn)識(shí)到,對(duì)于特定包的滾動(dòng)散列對(duì)應(yīng)于該包或其靜態(tài)散列與來自先前包的滾動(dòng)散列的組合。此外,進(jìn)程中的滾動(dòng)散列還可以取決于秘密數(shù)據(jù)29或其他合適數(shù)據(jù)的值。組合靜態(tài)散列、包、一個(gè)或多個(gè)滾動(dòng)散列、秘密數(shù)據(jù)29和/或任何其他數(shù)據(jù)可以包含聯(lián)結(jié),其中對(duì)于進(jìn)程的下一個(gè)滾動(dòng)散列可以由作為結(jié)果的聯(lián)結(jié)的合適變換函數(shù)產(chǎn)生。
在產(chǎn)生對(duì)于每一個(gè)包22的前向滾動(dòng)散列28的情況下,可以將消息20從服務(wù)器12/14發(fā)送到IoT設(shè)備1(如圖2中所示)。
在一些示例中,前向滾動(dòng)散列28可以作為校驗(yàn)值被包括在清單30中的散列數(shù)據(jù)34中(如圖3d中所示)。靜態(tài)散列26(S1-Sn)也可以作為校驗(yàn)值被包括在散列數(shù)據(jù)34中。
清單30可以選擇性地由發(fā)送設(shè)備使用適當(dāng)?shù)拿荑€材料來簽名,以提供可驗(yàn)證的簽名32以證明清單30的源的真實(shí)性。應(yīng)當(dāng)認(rèn)識(shí)到,接收設(shè)備可以包括用于驗(yàn)證簽名的對(duì)應(yīng)的密鑰材料。如上所述,這樣的密鑰材料可以包括對(duì)稱的或非對(duì)稱的密碼密鑰對(duì)。
清單30還可以包括與消息相關(guān)的其他數(shù)據(jù)(諸如函數(shù)數(shù)據(jù)31),以通知接收設(shè)備關(guān)于哪個(gè)變換函數(shù)和/或哪個(gè)協(xié)議應(yīng)當(dāng)被用于產(chǎn)生靜態(tài)散列和/或滾動(dòng)散列(例如,SHA256、MD5、CRC8)等。此外,當(dāng)秘密數(shù)據(jù)被用于產(chǎn)生前向滾動(dòng)散列時(shí),秘密協(xié)議數(shù)據(jù)35可以被包括在清單30中,接收設(shè)備可以從該秘密協(xié)議數(shù)據(jù)35導(dǎo)出秘密數(shù)據(jù)。秘密協(xié)議數(shù)據(jù)35還可以提供接收設(shè)備為了產(chǎn)生正確的校驗(yàn)值而需要使用秘密數(shù)據(jù)的適當(dāng)操作的細(xì)節(jié)。
秘密協(xié)議數(shù)據(jù)35可以被發(fā)送設(shè)備例如使用適當(dāng)?shù)拿荑€材料(例如,接收設(shè)備的公鑰或?qū)ΨQ密鑰)來加密,其中該密鑰材料可以例如在制造時(shí)或在設(shè)備之間的配對(duì)操作期間,在發(fā)送設(shè)備和接收設(shè)備上提供。
清單還可以包括與資源相關(guān)的數(shù)據(jù),IoT設(shè)備應(yīng)當(dāng)接受來自該資源的消息/包,或IoT設(shè)備應(yīng)該在適當(dāng)時(shí)重新請(qǐng)求來自該資源的消息。因此,如果發(fā)送設(shè)備被損害,清單可以通知IoT設(shè)備關(guān)于消息的不同來源。
例如,可以使用不同的通信信道,或使用不同的通信協(xié)議,將清單30與相關(guān)聯(lián)的消息分離地發(fā)送作為離散的通信。附加地或者替代地,清單可以作為相關(guān)聯(lián)的消息的一部分被發(fā)送,例如其中清單被聯(lián)結(jié)到消息。替代地,清單可以在相關(guān)聯(lián)的消息之前或之后被發(fā)送。
在接收到消息和清單的情況下,接收設(shè)備可以使用清單中詳細(xì)描述的散列函數(shù)產(chǎn)生靜態(tài)散列和滾動(dòng)散列,并且將結(jié)果用作校驗(yàn)值。
在一些情況下,如果消息的尺寸太大以至于不能在單個(gè)通信中傳輸,該消息可以被分成較小的消息部分,每個(gè)消息部分包括一個(gè)或多個(gè)包。
因?yàn)榍鍐?0提供了對(duì)于消息中的每個(gè)單獨(dú)包的前向滾動(dòng)散列值,接收設(shè)備不需要等待整個(gè)消息的接收,并且一旦在接收設(shè)備處接收到清單30和消息的第一部分,接收設(shè)備就可以開始產(chǎn)生滾動(dòng)散列。
因此,如果在接收到整個(gè)消息前識(shí)別出包中的數(shù)據(jù)完整性的問題,接收設(shè)備不需要等待整個(gè)消息,并且可以開始驗(yàn)證已經(jīng)在接收設(shè)備處接收到的包中的數(shù)據(jù)的完整性。此外,因?yàn)榻邮赵O(shè)備可以在接收到整個(gè)消息前的不同時(shí)間識(shí)別出數(shù)據(jù)完整性的錯(cuò)誤,接收設(shè)備可以在不同時(shí)間重新請(qǐng)求來自發(fā)送設(shè)備或其他資源的包的發(fā)送。這樣的功能可以減少發(fā)送設(shè)備/其他資源上的處理負(fù)擔(dān),因?yàn)榭赡懿辉诨旧舷嗤臅r(shí)間產(chǎn)生并且從接收設(shè)備發(fā)送重新請(qǐng)求。
應(yīng)當(dāng)認(rèn)識(shí)到,清單30的尺寸可以與散列數(shù)據(jù)34中的校驗(yàn)值的尺寸成比例。例如,如果每個(gè)校驗(yàn)值包括256比特的滾動(dòng)散列,則對(duì)于具有20個(gè)包的消息,對(duì)應(yīng)的清單將包括至少5120比特(不包括靜態(tài)散列的校驗(yàn)值,或其中的任何其他數(shù)據(jù))。如上所述,IoT設(shè)備趨于具有有限的處理能力和存儲(chǔ)容量,并且,雖然這樣的校驗(yàn)值可以提供防止偽造的增加的安全性,但是相對(duì)大的消息或清單可能不適合于IoT設(shè)備。
因此,減小包括在清單中的散列數(shù)據(jù)34的尺寸可以是有益的。
一種用于減小包括在清單中的散列數(shù)據(jù)34的尺寸的技術(shù)可以是從滾動(dòng)散列提取比特樣本,由此從相應(yīng)的前向滾動(dòng)散列28產(chǎn)生提取樣本(E)。如圖3b和圖3c中所示,任何數(shù)量的比特可以從每一個(gè)相應(yīng)的前行滾動(dòng)散列28獲得并且被用作對(duì)于每個(gè)包的提取樣本。
圖3c示意性地示出了來自滾動(dòng)散列28的被布置為陣列33的提取樣本,其中對(duì)于第一提取樣本(E12),提取相應(yīng)的滾動(dòng)散列28的第一比特和第二比特作為校驗(yàn)值。
類似地,對(duì)于第二提取樣本(E45),提取相應(yīng)的前向滾動(dòng)散列28的第四比特和第五比特,而對(duì)于第三提取樣本(E8-11),提取相應(yīng)的前向滾動(dòng)散列28的比特8、9、10和11作為校驗(yàn)值。提取樣本可以作為校驗(yàn)值被包括在散列數(shù)據(jù)34中。此外,標(biāo)識(shí)滾動(dòng)散列數(shù)據(jù)中用來提供提取樣本的比特的數(shù)據(jù)也可以被包括在清單中,例如作為散列數(shù)據(jù)34的一部分。
與包括完整滾動(dòng)散列作為校驗(yàn)值的散列數(shù)據(jù)相比,包括相應(yīng)的滾動(dòng)散列的提取樣本(E)或該提取樣本的陣列作為校驗(yàn)值的散列數(shù)據(jù)34減小了尺寸。因此,相對(duì)應(yīng)的清單的尺寸也將減小。
作為示例,對(duì)于具有20個(gè)包的消息,并且按照每滾動(dòng)散列獲取2比特的提取樣本(E)作為對(duì)于每個(gè)包的校驗(yàn)值,相對(duì)應(yīng)的清單將包括至少40比特用于校驗(yàn)值(不包括靜態(tài)散列的校驗(yàn)值,或其中的任何其他數(shù)據(jù)(例如,標(biāo)識(shí)該比特的數(shù)據(jù)))。在替代性的示例中,提取樣本可以包括從包、靜態(tài)散列和/或秘密數(shù)據(jù)中提取的樣本。
如上所述,滾動(dòng)散列和/或提取樣本(E)可被用作用于驗(yàn)證數(shù)據(jù)的完整性的校驗(yàn)值。
此外,與單獨(dú)使用提取樣本(E)相比,組合靜態(tài)散列和提取樣本(E)作為校驗(yàn)值還可以提供改進(jìn)的數(shù)據(jù)完整性驗(yàn)證。在例示的示例中,消息的相應(yīng)包的提取樣本(E)和靜態(tài)散列被用作對(duì)于消息的相應(yīng)包的16比特校驗(yàn)值,其中校驗(yàn)值的14比特由靜態(tài)散列比特提供并且校驗(yàn)值的2比特由滾動(dòng)散列的提取樣本(E)提供。在本例示的示例中,靜態(tài)散列中存在無聲故障(silent failure)的概率為1:16384(即,214);與滾動(dòng)散列中存在無聲故障的概率1:4(即,22)組合,由此提供對(duì)于第一包的校驗(yàn)值的無聲故障的概率1:65536(即,216)。對(duì)于一些通信協(xié)議,該概率可能不能提供足夠的安全性。然而,由于如果先前的包發(fā)生無聲故障,對(duì)于接下來的包的校驗(yàn)值也具有1:4(22)的故障概率,則這提供了第一包中的無聲故障的組合概率為1:262144(即,218)。應(yīng)當(dāng)認(rèn)識(shí)到,由于滾動(dòng)散列,無聲故障的概率累積并且對(duì)于消息的每個(gè)相繼的包增加。無聲故障可以包括其中攻擊者通過偽造/猜測(cè)靜態(tài)散列值和/或滾動(dòng)散列值而獲得正確的值的故障。
應(yīng)當(dāng)認(rèn)識(shí)到,接收消息的一個(gè)或多個(gè)包和包括具有與包有關(guān)的校驗(yàn)值的散列數(shù)據(jù)的清單的設(shè)備允許接收設(shè)備在不需要等待接收到整個(gè)消息的情況下進(jìn)行一個(gè)或多個(gè)包的數(shù)據(jù)完整性的驗(yàn)證。此外,在數(shù)據(jù)完整性驗(yàn)證期間識(shí)別出包中的錯(cuò)誤的情況下,接收設(shè)備可以優(yōu)選地重新請(qǐng)求與故障最接近的包并且驗(yàn)證響應(yīng)于該重新請(qǐng)求而接收的任何包的數(shù)據(jù)完整性。因此,由于不需要設(shè)備一次重新請(qǐng)求整個(gè)消息,這樣的功能可以提供網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)的減少。
如果錯(cuò)誤在重新請(qǐng)求的包中始終存在,該設(shè)備可以從最近校驗(yàn)的包開始,朝向最早校驗(yàn)的包而向后地工作,重新請(qǐng)求包直至接收到無錯(cuò)誤的包。
提取樣本可以是對(duì)于特定應(yīng)用所需要的任何合適數(shù)量的比特。
此外,在一些示例中,清單中可能不包括散列函數(shù)和/或用于標(biāo)識(shí)用來提供提取樣本的滾動(dòng)散列數(shù)據(jù)的比特的數(shù)據(jù),并且接收設(shè)備可以被提供有標(biāo)準(zhǔn)或預(yù)設(shè)信息以允許接收設(shè)備產(chǎn)生正確的對(duì)于一個(gè)或多個(gè)包的散列函數(shù)和/或提取樣本。例如,可以使接收設(shè)備和發(fā)送設(shè)備相互同步(例如,通過UNIX時(shí)鐘),從而將使用在特定時(shí)間有效的標(biāo)準(zhǔn)或預(yù)設(shè)消息來產(chǎn)生特定的散列函數(shù)/提取樣本。
圖4a示意性地示出了消息20(圖3a中也示出了);圖4b示意性地示出由適當(dāng)?shù)脑O(shè)備產(chǎn)生滾動(dòng)散列38;而圖4c示意性地示出兩個(gè)驗(yàn)證路徑/路線(下文中被稱為“路徑”)。圖4中的兩個(gè)路徑被分別描述為“路徑1”和“路徑2”。將根據(jù)需要使用上面所使用的相同編號(hào)。
圖4b描述了例如由服務(wù)器12/14中的一個(gè)或多個(gè)或圖2的IoT設(shè)備1產(chǎn)生滾動(dòng)散列38,其中滾動(dòng)散列38或來自滾動(dòng)散列38的提取可以為了驗(yàn)證在它們之間交換的消息中的數(shù)據(jù)的完整性的目的而被用作校驗(yàn)值。
在本示例中,如先前所述,消息20的每一個(gè)包22被變換以產(chǎn)生靜態(tài)散列26。
如上所述,產(chǎn)生了滾動(dòng)散列38的進(jìn)程,其中進(jìn)程中的特定滾動(dòng)散列38的值取決于用于產(chǎn)生該特定靜態(tài)散列的所有先前包的特征。
在本示例中,沿從消息20的第一包(包n)到最后包(包1)的概念性的后向方向上的連續(xù)包(下文中被稱為“后向連續(xù)包”)被用于產(chǎn)生滾動(dòng)散列38的進(jìn)程(下文中被稱為“后向滾動(dòng)散列”)。應(yīng)當(dāng)認(rèn)識(shí)到,“第一”和“最后”不應(yīng)被限制為消息的實(shí)際的“第一”包或“最后”包。
如上所述,可以選擇性地使用秘密數(shù)據(jù)29來幫助后向滾動(dòng)散列38。
在本示例中,后向滾動(dòng)散列38的第一滾動(dòng)散列(Rn)對(duì)應(yīng)于第一包(n)的靜態(tài)散列(Sn)。然而,如上所述,在一些示例中,可以使用不同的變換函數(shù)來產(chǎn)生靜態(tài)散列和滾動(dòng)散列。圖4b中示出的第二滾動(dòng)散列(Rn-1)對(duì)應(yīng)于靜態(tài)散列(Sn-1)與滾動(dòng)散列(Rn)和秘密數(shù)據(jù)29的組合;而第三滾動(dòng)散列(Rn-2)對(duì)應(yīng)于靜態(tài)散列(Sn-2)和滾動(dòng)散列(Rn-1)的組合。相似地,最終滾動(dòng)散列(R1)對(duì)應(yīng)于靜態(tài)散列(S1)和滾動(dòng)散列(R2)的組合。在一些示例中,后向滾動(dòng)散列38的最終滾動(dòng)散列(R1)對(duì)應(yīng)于整個(gè)消息20的散列。
如上所述,各個(gè)后向滾動(dòng)散列可以作為校驗(yàn)值被包括在散列數(shù)據(jù)34中。附加地或者替代地,相應(yīng)后向滾動(dòng)散列(Rn–R1)的提取樣本(E)可以被提取并作為校驗(yàn)值被包括在散列數(shù)據(jù)中。
在產(chǎn)生對(duì)于每個(gè)包22的后向滾動(dòng)散列Rn–R1的情況下,可以將消息20從服務(wù)器傳送到IoT設(shè)備(如圖2中所示),其中接收設(shè)備可以產(chǎn)生與后向滾動(dòng)散列的校驗(yàn)值對(duì)應(yīng)的校驗(yàn)值,以用于驗(yàn)證消息的數(shù)據(jù)完整性。
雖然上述示例通常描述了使用前向滾動(dòng)散列或后向滾動(dòng)散列來驗(yàn)證消息中的數(shù)據(jù)的完整性,下列示例描述了使用前向滾動(dòng)散列和后向滾動(dòng)散列兩者(或來自其中的提取樣本)來驗(yàn)證消息中的數(shù)據(jù)的完整性。
圖4c示意性地示出對(duì)于消息20的兩個(gè)驗(yàn)證路徑或路線,其中路徑或路線(下文中被稱為“路徑”)被視為包括消息的一個(gè)或多個(gè)連續(xù)的組,而組包括一個(gè)或多個(gè)連續(xù)的包??缍缺灰暈榻M中的包的數(shù)量。沿特定路徑的組不需要具有相同的跨度。此外,特定組的對(duì)于組的校驗(yàn)值(例如,滾動(dòng)散列(或提取樣本)、靜態(tài)散列)被認(rèn)為是對(duì)于該特定組的最終包產(chǎn)生的校驗(yàn)值。
在圖4c的例示示例中,第一路徑(被描述為‘路徑1’)包括概念上沿消息20的從包1到包n的前向方向上的消息20的連續(xù)包22(在下文中被稱為“前向連續(xù)包”)的連續(xù)組。路徑1中的每個(gè)組包括一個(gè)包的跨度。
此外,第二路徑(被描述為‘路徑2’)包括沿消息20的從包n到包1的概念上的后向方向上的消息20的包22(在下文中被稱為“后向連續(xù)包”)的連續(xù)組。路徑2中的每個(gè)組也包括一個(gè)包的跨度。如上所述,每個(gè)前向連續(xù)包和后向連續(xù)包具有相應(yīng)的校驗(yàn)值。
在圖4c的例示示例中,提取樣本40是從沿路徑1的組中的包22的滾動(dòng)散列獲得的,而提取樣本42是從沿路徑2的組中的包22的滾動(dòng)散列獲得的。這樣的提取樣本可以隨后被用作校驗(yàn)值并且被包括在與消息20相關(guān)聯(lián)的清單中的散列數(shù)據(jù)內(nèi)。
當(dāng)接收到消息和相關(guān)聯(lián)的清單的情況下,接收設(shè)備可以產(chǎn)生對(duì)于消息的每個(gè)包的前向滾動(dòng)散列和后向滾動(dòng)散列,并且將提取樣本作為對(duì)于清單中標(biāo)識(shí)的相應(yīng)組的校驗(yàn)值。然后,接收設(shè)備可以比較該接收設(shè)備產(chǎn)生的校驗(yàn)值和在清單中的散列數(shù)據(jù)中指定的那些校驗(yàn)值。
應(yīng)當(dāng)認(rèn)識(shí)到,對(duì)于本示例,雖然攻擊者可能通過對(duì)每一個(gè)連續(xù)的2比特提取樣本進(jìn)行2比特猜測(cè)而成功地偽造路徑1中的組的包,但是偽造路徑2中的組的包可能更加難以實(shí)現(xiàn),因?yàn)榻邮赵O(shè)備基本上同時(shí)地產(chǎn)生并且校驗(yàn)對(duì)于路徑1和路徑2的提取樣本,并且因此,攻擊者將需要基本上同時(shí)地偽造兩條路徑上的包。
另外,雖然上文描述了兩個(gè)路徑,但是路徑的數(shù)量不限于兩個(gè),并且可以使用任何合適數(shù)量的路徑。此外,路徑不需要跟隨組的幾何進(jìn)程,并且路徑可以跟隨組的偽隨機(jī)進(jìn)程。此外,不需要所有路徑與每一個(gè)包相交,只要每一個(gè)包與至少一個(gè)路徑相交即可。
如圖5a的例示示例中示意性所示,描述了對(duì)于消息20的四個(gè)路徑(路徑1-4);而圖5b示意性地示出了消息20的清單30,其中清單30包括對(duì)于相關(guān)聯(lián)的消息20的散列數(shù)據(jù)34。將根據(jù)需要使用上面所使用的相同編號(hào)。
在圖5a的例示示例中,第一路徑‘路徑1’包括具有一個(gè)包的跨度的組,其中連續(xù)組包括消息20的從包1到包n的前向連續(xù)包;而第二路徑‘路徑2’包括具有一個(gè)包的跨度的組,其中連續(xù)組包括從包n到包1的后向連續(xù)包。
此外,第三路徑‘路徑3’包括具有四個(gè)包的跨度的組,其中每個(gè)連續(xù)組包括前向連續(xù)包;而第四路徑‘路徑4’包括具有七個(gè)包的跨度的組,其中每個(gè)連續(xù)組包括后向連續(xù)包。
應(yīng)當(dāng)認(rèn)識(shí)到,接收設(shè)備可以從不同的資源獲得消息20的部分。此外,接收設(shè)備可以隨機(jī)地或偽隨機(jī)地獲取來自不同設(shè)備的不同組的包。由此,通過設(shè)置不同路徑,對(duì)于截獲這樣的包以識(shí)別接收設(shè)備之前已經(jīng)獲得了哪些包的攻擊者而言,可能難以偽造這樣的包。
此外,與在相同方向上設(shè)置一個(gè)或零個(gè)路徑相比,在相同方向(例如,前向/后向)上設(shè)置兩個(gè)或多個(gè)路徑使得接收設(shè)備能夠更早地進(jìn)行數(shù)據(jù)完整性驗(yàn)證并且更早地識(shí)別包中的錯(cuò)誤。
用圖5a作為例示示例,如果接收設(shè)備接收消息20的包1-11,接收設(shè)備可以產(chǎn)生對(duì)于沿路徑1的所有組的校驗(yàn)值(從包1(路徑1;組1)直到并且包括包11(路徑1;組11))。此外,接收設(shè)備可以產(chǎn)生對(duì)于沿路徑3的前兩個(gè)組(即,分別包括包1-4(路徑3;組1)和包5-8(路徑3;組2)的那些組)的校驗(yàn)值。
此外,因?yàn)闈L動(dòng)散列對(duì)于在相同方向上的路徑是累積的,如果數(shù)據(jù)完整性沒有被損害,則分別對(duì)于(路徑1;組4和組8)的校驗(yàn)值應(yīng)該對(duì)應(yīng)于分別對(duì)于(路徑3;組1和組2)的校驗(yàn)值。如果校驗(yàn)值不對(duì)應(yīng),則那些組中的一個(gè)或多個(gè)包可能包括錯(cuò)誤。然后,接收設(shè)備可以重新請(qǐng)求包括錯(cuò)誤的組的包。在一些示例中,接收設(shè)備可以重新請(qǐng)求來自與其原始接收包的資源不同的一個(gè)或多個(gè)資源的包,并且通過這樣做,可以例如通過排除處理來識(shí)別攻擊者。
然而,將看到,接收設(shè)備無法在至少接收到包12之前產(chǎn)生對(duì)于沿路徑1或路徑3的任何其它組的校驗(yàn)值。此外,該接收設(shè)備無法在接收設(shè)備至少接收到包n之前產(chǎn)生對(duì)于沿路徑2的任何組的校驗(yàn)值,或者該接收設(shè)備無法在接收設(shè)備至少接收到包n至n-6之前產(chǎn)生對(duì)于沿路徑4的任何組的校驗(yàn)值。
圖5b示意性地示出了對(duì)于相關(guān)聯(lián)的消息20的清單30,其中,在本例示示例中,清單30包括與消息20的不同路徑(路徑1-4)有關(guān)的散列數(shù)據(jù)34。
在本例示示例中,散列數(shù)據(jù)34包括關(guān)于路徑(路徑1-4)、組、跨度和/或可以由接收設(shè)備導(dǎo)出的對(duì)于其中相應(yīng)包的校驗(yàn)值的具體配置的細(xì)節(jié)。
對(duì)于路徑1,每個(gè)組被示出包括從1至n的連續(xù)包,其中跨度(S)為1;而提取樣本(E)被視為1比特值(E2)。還提供了對(duì)于路徑1的校驗(yàn)值(CW)陣列。在本示例中,CW陣列包括由接收設(shè)備產(chǎn)生的、對(duì)于消息的相應(yīng)包的滾動(dòng)散列的提取樣本的期望值。
相似地,對(duì)于路徑2,每個(gè)組被示出包括從n至1的連續(xù)包,其中連續(xù)組之間的跨度(S)為1;而提取樣本(E)被視為包括2比特(E12)。還提供了對(duì)于路徑2的CW陣列。
對(duì)于路徑3,每個(gè)組被示出包括四個(gè)包,其中連續(xù)組之間的跨度(S)為4個(gè)包;而提取樣本(E)被示出為包括3比特(E124)。還提供了對(duì)于路徑3的(CW)陣列。
最后,對(duì)于路徑4,每個(gè)組被示出包括七個(gè)包,其中連續(xù)組之間的跨度(S)為7個(gè)包;而提取樣本(E)被示出為包括4比特(E5689)。還提供了對(duì)于路徑4的CW陣列。
雖然在圖5b中被描述為表格陣列,但是散列數(shù)據(jù)34可以被布置為任何合適的形式,使得該散列數(shù)據(jù)可以被接收設(shè)備處理。例如,散列數(shù)據(jù)34可以作為明文或作為接收設(shè)備可以解釋的語言的代碼被設(shè)置在清單中。
在一些示例中,散列數(shù)據(jù)34可以包括標(biāo)識(shí)符,接收設(shè)備可以使用例如在標(biāo)識(shí)符上設(shè)置的標(biāo)準(zhǔn)或預(yù)設(shè)信息,從標(biāo)識(shí)符確定路徑、組、和/或?qū)τ谙鄳?yīng)包的跨度的具體配置。例如,散列數(shù)據(jù)34可以包括計(jì)數(shù)器或UNIX值來指示接收設(shè)備應(yīng)該使用哪個(gè)標(biāo)準(zhǔn)或預(yù)設(shè)的具體配置。
如上所述,清單30還可以包括函數(shù)數(shù)據(jù)31,并且當(dāng)使用秘密數(shù)據(jù)產(chǎn)生滾動(dòng)散列時(shí),可以進(jìn)一步包括秘密協(xié)議數(shù)據(jù)35。此外,清單可以被發(fā)送設(shè)備密碼加密地簽名以提供該清單的可驗(yàn)證簽名32。
如上所述,清單30還可以包括與資源有關(guān)的數(shù)據(jù)或位置標(biāo)識(shí)符(例如IP地址),IoT設(shè)備應(yīng)該接受來自所述資源的消息/包,IoT設(shè)備在適當(dāng)時(shí)應(yīng)該重新請(qǐng)求來自所述位置標(biāo)識(shí)符的消息。
如上所述,秘密協(xié)議數(shù)據(jù)35可以被發(fā)送設(shè)備例如使用合適的密鑰材料(例如,公鑰或?qū)ΨQ密鑰)來加密。通過使用這樣的功能,可以以明文來傳輸清單30,但是其中清單30可以包括經(jīng)加密的秘密協(xié)議數(shù)據(jù)35。如果攻擊者確實(shí)獲得/截獲了清單,攻擊者將不能解密秘密協(xié)議數(shù)據(jù)35(除非也獲得了合適的密鑰材料),并且因此攻擊者將無法導(dǎo)出對(duì)產(chǎn)生正確的滾動(dòng)散列或正確的提取樣本所需要的秘密數(shù)據(jù)。
通過使用這樣的加密技術(shù),消息和相關(guān)聯(lián)的清單可以均經(jīng)由不安全的信道發(fā)送到接收設(shè)備,由此減少了與提供安全信道(例如SSL)相關(guān)聯(lián)的任何能源或處理開銷。截獲消息或清單的攻擊者將不能解密秘密協(xié)議數(shù)據(jù),并且因此,將不能導(dǎo)出對(duì)產(chǎn)生與清單中的那些校驗(yàn)值對(duì)應(yīng)的校驗(yàn)值所需要的秘密數(shù)據(jù)。由此,從這樣的攻擊者接收的任何包將不可能產(chǎn)生與相關(guān)聯(lián)的清單中的那些校驗(yàn)值對(duì)應(yīng)的所有校驗(yàn)值,并且這樣的包將導(dǎo)致任何數(shù)據(jù)完整性校驗(yàn)的失敗。
雖然在圖3b和圖4b中,第一滾動(dòng)散列R1被描述為對(duì)應(yīng)于第一包的靜態(tài)散列(S1),但是在一些示例中,可以使用隨機(jī)數(shù)(nonce)作為第一滾動(dòng)散列R1。通過使用作為隨機(jī)數(shù)(nonce)的R1,在其開始處具有共享包的消息將導(dǎo)致沿散列進(jìn)程的不同的滾動(dòng)散列。因此,盡管有共享包,但是滾動(dòng)散列的進(jìn)程將是不同的。這樣的功能對(duì)于包括共享包的不同消息(例如,包括具有共同引導(dǎo)裝載程序的固件映像的消息)可能是有用的。
另外,可以在清單中以明文、公共可見地發(fā)送這樣的隨機(jī)數(shù)(nonce),因?yàn)樵L問了清單并且識(shí)別了該隨機(jī)數(shù)的第三方將不能產(chǎn)生滾動(dòng)散列,因?yàn)榈谌綄⒉荒茉L問清單中的對(duì)產(chǎn)生滾動(dòng)散列進(jìn)程所需要的其他數(shù)據(jù)。
此外,在一些示例中,可以使用與從加密密鑰(例如,固件加密密鑰)等導(dǎo)出的密鑰材料組合的HMAC來產(chǎn)生滾動(dòng)散列。密鑰材料可以被包括在清單中,以允許接收設(shè)備產(chǎn)生滾動(dòng)散列。通過使用這樣的功能,潛在的攻擊者不可能預(yù)測(cè)包的修改的結(jié)果,并且因此,提高了修改一個(gè)或多個(gè)包的難度。
圖6示意性地示出了發(fā)送設(shè)備(被描述為服務(wù)器12)和接收設(shè)備(被描述為IoT設(shè)備1)之間的交互示例。應(yīng)當(dāng)認(rèn)識(shí)到,發(fā)送設(shè)備可以是任何合適的資源,而接收設(shè)備可以是能夠處理數(shù)據(jù)的任何合適的資源或設(shè)備。
在圖6中,服務(wù)器12向IoT設(shè)備1發(fā)送50清單。如上所述,清單可以包括諸如散列數(shù)據(jù)、秘密協(xié)議數(shù)據(jù)或函數(shù)數(shù)據(jù)的信息。然后,IoT設(shè)備1可以處理51清單,其中該設(shè)備可以例如從清單中的信息導(dǎo)出路徑、組、跨度、校驗(yàn)值和/或變換函數(shù)。IoT設(shè)備1可以驗(yàn)證與清單相關(guān)聯(lián)的任何簽名,以確定發(fā)送設(shè)備的真實(shí)性,和/或解密任何經(jīng)加密的數(shù)據(jù)(例如,秘密協(xié)議數(shù)據(jù))以導(dǎo)出對(duì)產(chǎn)生滾動(dòng)散列所需要的秘密數(shù)據(jù)。
然后,服務(wù)器12向接收設(shè)備1發(fā)送54與清單相關(guān)聯(lián)的消息的一個(gè)或多個(gè)包。該發(fā)送54可以響應(yīng)于來自IoT設(shè)備1的對(duì)包的請(qǐng)求53而發(fā)生。但是,在涉及多個(gè)IoT設(shè)備的點(diǎn)對(duì)點(diǎn)通信中,這樣的請(qǐng)求可能非常多,因此來自IoT設(shè)備的請(qǐng)求可能被最小化。因此,可以在發(fā)送清單后的一段定義時(shí)間段內(nèi)沒有接收到請(qǐng)求的情況下進(jìn)行發(fā)送50。
在接收到包的情況下,通過使用設(shè)置在清單中的信息或根據(jù)可能被設(shè)置在IoT設(shè)備1上的標(biāo)準(zhǔn)或預(yù)設(shè)信息,IoT設(shè)備1可以產(chǎn)生56滾動(dòng)散列和提取樣本以導(dǎo)出對(duì)于每個(gè)組的校驗(yàn)值。
此外,設(shè)備可以通過對(duì)比所產(chǎn)生的對(duì)于組的校驗(yàn)值和在清單中沿一個(gè)或多個(gè)路徑定義的那些校驗(yàn)值,進(jìn)行數(shù)據(jù)完整性驗(yàn)證60。
如果對(duì)于接收到的包沒有識(shí)別出錯(cuò)誤,如果尚未接收到整個(gè)數(shù)據(jù),IoT設(shè)備1可以請(qǐng)求其他包53,或等待來自服務(wù)器12或其他資源的這樣的其他包。在接收到這樣的包的情況下,IoT設(shè)備1可以重復(fù)步驟56-60直到接收到整個(gè)消息并且其數(shù)據(jù)完整性被驗(yàn)證。然后,IoT設(shè)備可以處理整個(gè)消息。例如,如果該消息是固件更新,則IoT設(shè)備可以覆寫該IoT設(shè)備上的現(xiàn)有固件。
然而,如果不能驗(yàn)證數(shù)據(jù)完整性(例如,組的校驗(yàn)值不匹配),IoT設(shè)備1可以發(fā)送62對(duì)一個(gè)或多個(gè)組中的被識(shí)別為具有錯(cuò)誤的包的重新請(qǐng)求。在接收到一個(gè)或多個(gè)包的情況下,IoT設(shè)備1可以重復(fù)如上所述的步驟56-60。
附加地或替代地,IoT設(shè)備1可以向除服務(wù)器12以外的不同資源發(fā)送62重新請(qǐng)求,IoT設(shè)備1從該不同資源接收原始包。例如,如果IoT設(shè)備1持續(xù)地從特定資源接收具有錯(cuò)誤的包,或如果從特定資源接收的包中的錯(cuò)誤的數(shù)量大于閾值,可能進(jìn)行對(duì)不同資源的重新請(qǐng)求。附加地或替代地,IoT設(shè)備1可以向受信任的資源發(fā)出如下告警消息:在從特定資源接收的包中接收到惡意包。
在替代性的示例中,可以在所有包都被接收設(shè)備發(fā)送之后或在包的發(fā)送期間/中間發(fā)送50清單。
另外,在一些實(shí)例中,除非IoT設(shè)備首先接收到清單,否則IoT設(shè)備可以不接受來自源的包。在其他示例中,除非源對(duì)清單進(jìn)行簽名(例如,利用私鑰或使用具有密鑰材料(例如,與IoT設(shè)備共享的密碼密鑰)的HMAC進(jìn)行簽名),否則IoT設(shè)備可以不接受來自源的包。
圖7a示例性地示出了發(fā)送設(shè)備產(chǎn)生并且將清單和相關(guān)聯(lián)的消息發(fā)送到接收設(shè)備的方法的示例,而圖7b示例性地示出接收設(shè)備處理清單并且驗(yàn)證相關(guān)聯(lián)的消息的包的數(shù)據(jù)完整性的方法的示例。
在步驟100,圖7a的方法開始。
在步驟102,發(fā)送設(shè)備產(chǎn)生清單。如上所述,該清單可以包括對(duì)于相關(guān)聯(lián)的消息的散列數(shù)據(jù),并且可以如先前所述進(jìn)一步包括函數(shù)數(shù)據(jù)、秘密協(xié)議數(shù)據(jù)和簽名。
在步驟104,發(fā)送設(shè)備向接收設(shè)備發(fā)送清單,并且在步驟106發(fā)送設(shè)備向接收設(shè)備發(fā)送相關(guān)聯(lián)的消息的包。這樣的發(fā)送可以作為廣播發(fā)送來進(jìn)行,并且可以被多個(gè)設(shè)備接收。應(yīng)當(dāng)認(rèn)識(shí)到,整個(gè)消息可以作為單個(gè)消息、或作為兩個(gè)或多個(gè)較小的部分被發(fā)送。當(dāng)包中的有效載荷過大以至于不能在單個(gè)消息內(nèi)發(fā)送時(shí),可以使用這樣的功能。此外,清單和相關(guān)聯(lián)的消息的發(fā)送順序可以變化。例如,清單可以在相關(guān)聯(lián)的消息之前或之后被發(fā)送。在一些示例中,可以在與消息基本相同的時(shí)間(例如作為相同通信的一部分)發(fā)送清單。
在步驟108,圖7a的步驟完成。
在步驟110,圖7b的步驟開始。
在步驟112,接收設(shè)備接收在圖7a的步驟104發(fā)送的清單,并且在步驟114,接收設(shè)備處理該清單,并且導(dǎo)出例如與組/路徑/提取樣本等有關(guān)的散列數(shù)據(jù)。此外,接收設(shè)備識(shí)別為產(chǎn)生靜態(tài)散列和/或前向滾動(dòng)散列/后向滾動(dòng)散列所需要的變換函數(shù);驗(yàn)證清單的簽名(如果存在簽名);和/或?qū)С雒孛軘?shù)據(jù)以產(chǎn)生滾動(dòng)散列(如果存在秘密協(xié)議數(shù)據(jù))。
在步驟116,接收設(shè)備接收與清單相關(guān)聯(lián)的消息的包,并且在步驟118,接收設(shè)備驗(yàn)證所有接收到的包的數(shù)據(jù)完整性。這樣的功能使得接收設(shè)備能夠在接收到整個(gè)消息前識(shí)別包中的錯(cuò)誤。
例如,接收設(shè)備可以接收128個(gè)包的消息中的前64個(gè)包。由此,接收設(shè)備可以產(chǎn)生對(duì)于接收到的64個(gè)包中的每一個(gè)包的靜態(tài)散列、前向滾動(dòng)散列和提取樣本,并且可以產(chǎn)生對(duì)于沿不同路徑的包的不同組校驗(yàn)值。由此,接收設(shè)備于是可以使用由此產(chǎn)生的校驗(yàn)值和清單中的散列數(shù)據(jù)的校驗(yàn)值來驗(yàn)證這樣的組中的數(shù)據(jù)的完整性。
在一些示例中,接收設(shè)備接收清單和消息的順序可以變化,其中,例如,接收設(shè)備在接收清單前接收消息(或消息的一部分)。在一些示例中,可以在基本上相同的時(shí)間接收清單和消息(例如作為相同通信的一部分)。
在步驟120,如果在驗(yàn)證數(shù)據(jù)完整性期間識(shí)別出錯(cuò)誤,則在步驟122,接收設(shè)備可以從發(fā)送設(shè)備或從其他資源重新請(qǐng)求一個(gè)或多個(gè)包,并且重復(fù)步驟116-120。
在步驟120,如果在驗(yàn)證數(shù)據(jù)完整性期間沒有識(shí)別出錯(cuò)誤,則在步驟124,接收設(shè)備可以確定是否接收到消息的所有包。在步驟126,如果接收設(shè)備確定需要其他包,則接收設(shè)備可以從發(fā)送設(shè)備或從其他資源請(qǐng)求其他包,對(duì)接收到的任何新包執(zhí)行步驟116到124。如果在步驟124,接收設(shè)備確定接收到要被校驗(yàn)的整個(gè)消息,接收設(shè)備可以在步驟128處理該消息。例如,如果消息包括固件更新,則接收設(shè)備可以利用該更新來更新該接收設(shè)備上的固件。
在步驟130,圖7b的處理完成。
圖8示意性地示出了多個(gè)包22,其中包22概念性地布置在矩陣70中。將根據(jù)需要使用上面所使用的相同編號(hào)。
矩陣70可以由一個(gè)或多個(gè)不同路徑來定義,其中路徑在矩陣中的任何方向上延伸。應(yīng)當(dāng)認(rèn)識(shí)到,雖然圖8中的矩陣70被描述為包括64個(gè)包的正方形,但是可以組織這些包使得這些包在概念上被布置為具有1-n個(gè)包的任何二維或三維形狀(例如,矩形、立方體、五邊形、菱形等)。
此外,路徑不需要跟隨幾何進(jìn)程,并且路徑可以跟隨偽隨機(jī)進(jìn)程。此外,不需要所有路徑與每一個(gè)包相交,只要每一個(gè)包與至少一個(gè)路徑相交即可。
通過對(duì)包進(jìn)行分組并且定義不同的路徑(例如圖8中描述的路徑1-5),并且提供對(duì)于沿特定路徑的每個(gè)組的校驗(yàn)值、從對(duì)于矩陣的相應(yīng)前向連續(xù)包或后向連續(xù)包的滾動(dòng)散列進(jìn)程導(dǎo)出的校驗(yàn)值,可以例如通過增加攻擊者必須偽造的比特/包的數(shù)量來提升對(duì)于設(shè)備之間交換的消息的安全性。
額外地或替代地,與使用例如整個(gè)滾動(dòng)散列作為校驗(yàn)值相比,通過使用滾動(dòng)散列的提取樣本,可以減少對(duì)于各個(gè)組的校驗(yàn)值的比特尺寸。
此外,如上所述,一些路徑可以提高接收設(shè)備較早地檢測(cè)到有錯(cuò)誤的包(或偽造的包)的能力。
如上所述,每一個(gè)路徑可以包括具有不同跨度的組。對(duì)于路徑1和2,組包括一個(gè)包的跨度。路徑3和4包括具有8個(gè)包的跨度的一個(gè)組,并且其他組包括56個(gè)包,而路徑5包括具有10個(gè)包的跨度的第一組和具有18個(gè)包的3個(gè)后續(xù)組。
在一些示例中,包和/或組的尺寸可能取決于所使用的通信協(xié)議。例如,對(duì)于BLE,最大包有效載荷是20字節(jié)。由此,通過將包的尺寸設(shè)置為20字節(jié),并且通過設(shè)置跨度等于1,滾動(dòng)散列(或提取樣本)可以被提供給使用特定協(xié)議的所有包。
在其他的示例中,包尺寸、組尺寸和/或跨度可以變化,使得滾動(dòng)散列(提取樣本)可以被提供給特定協(xié)議(例如,BLE/6LoWPan/3G/4G)的所有包。
產(chǎn)生第一滾動(dòng)散列進(jìn)程、導(dǎo)出組校驗(yàn)值和/或驗(yàn)證消息中的數(shù)據(jù)的完整性的步驟可以都在設(shè)備處進(jìn)行??商娲?,這些步驟可以在與該設(shè)備通信的一個(gè)或多個(gè)其他數(shù)據(jù)處理設(shè)備(例如,服務(wù)器)處進(jìn)行。
此外,設(shè)備可以同時(shí)接收清單和消息??商娲?,設(shè)備可以在與接收消息不同的時(shí)間(例如,之前或之后)接收清單。
所述的方法可以進(jìn)一步包括:產(chǎn)生對(duì)于多個(gè)包的第二滾動(dòng)散列進(jìn)程;從第二滾動(dòng)散列進(jìn)程導(dǎo)出對(duì)于沿一個(gè)或多個(gè)路徑的多個(gè)包的組的組校驗(yàn)值。
此外,沿第一路徑的組可以是前向連續(xù)組,而沿第二路徑的組可以是后向連續(xù)組。
前向連續(xù)組的跨度可以與后向連續(xù)組的跨度相等,其中前向連續(xù)組的跨度可以是一個(gè)包。
組校驗(yàn)值可以包括第一滾動(dòng)散列進(jìn)程或第二滾動(dòng)散列進(jìn)程的提取樣本比特,其中所述清單進(jìn)一步包括標(biāo)識(shí)用來提供提取樣本比特的相應(yīng)滾動(dòng)散列的比特的數(shù)據(jù),和/或其中第一滾動(dòng)散列進(jìn)程或第二滾動(dòng)散列進(jìn)程的相應(yīng)值可以取決于多個(gè)包中的一個(gè)或多個(gè)包的靜態(tài)散列。
第一滾動(dòng)散列進(jìn)程或第二滾動(dòng)散列進(jìn)程的相應(yīng)值可以取決于秘密數(shù)據(jù),其中所述方法進(jìn)一步包括:從所述清單中的秘密協(xié)議數(shù)據(jù)導(dǎo)出秘密數(shù)據(jù),并且其中所述方法可以進(jìn)一步包括:在所述設(shè)備處,解密秘密協(xié)議數(shù)據(jù)。
在一些示例中,秘密數(shù)據(jù)可以包括:隨機(jī)數(shù)或密碼密鑰。
該方法可以進(jìn)一步包括:校驗(yàn)第二設(shè)備的可驗(yàn)證簽名;進(jìn)一步基于或者響應(yīng)于所述可驗(yàn)證簽名對(duì)應(yīng)于期望的簽名的確定,驗(yàn)證消息中的數(shù)據(jù)的完整性。
所述方法可以進(jìn)一步包括:基于或者響應(yīng)于導(dǎo)出的組校驗(yàn)值不對(duì)應(yīng)于所述清單中的多個(gè)組校驗(yàn)值的確定,將對(duì)消息的一個(gè)或多個(gè)包的請(qǐng)求,從設(shè)備發(fā)送到第一資源或不同的資源。第一資源或不同的資源可以包括以下之一:服務(wù)器和數(shù)據(jù)處理設(shè)備。
在一些示例中,一個(gè)或多個(gè)路徑可以在清單中被定義,或者可以是在數(shù)據(jù)處理設(shè)備上提供的標(biāo)準(zhǔn)或預(yù)設(shè)路徑。
產(chǎn)生滾動(dòng)散列進(jìn)程、導(dǎo)出組校驗(yàn)值和/或驗(yàn)證數(shù)據(jù)的完整性的步驟可以都在設(shè)備處進(jìn)行??商娲兀@些步驟可以在與該設(shè)備通信的一個(gè)或多個(gè)其他數(shù)據(jù)處理設(shè)備(例如,服務(wù)器)處進(jìn)行。
沿第一路徑和第二路徑的組可以是前向連續(xù)組或后向連續(xù)組,其中沿第一路徑的組的跨度與沿第二路徑的組的跨度不同,其中沿第一路徑的組的跨度是一個(gè)包。
組校驗(yàn)值可以包括滾動(dòng)散列進(jìn)程的提取樣本比特,其中所述清單進(jìn)一步包括標(biāo)識(shí)用來提供提取樣本比特的相應(yīng)滾動(dòng)散列的比特的數(shù)據(jù)。
滾動(dòng)散列進(jìn)程的相應(yīng)值可以取決于多個(gè)包中的一個(gè)或多個(gè)包的靜態(tài)散列和/或秘密數(shù)據(jù)。
所述方法可以進(jìn)一步包括:基于或者響應(yīng)于導(dǎo)出的組校驗(yàn)值不對(duì)應(yīng)于所述清單中的多個(gè)組校驗(yàn)值的確定,將對(duì)部分中的一個(gè)或多個(gè)包的請(qǐng)求,從設(shè)備發(fā)送到第一資源或不同的資源。
所述的方法可以進(jìn)一步包括:在資源處產(chǎn)生第二滾動(dòng)散列進(jìn)程;在資源處,從第二滾動(dòng)散列進(jìn)程導(dǎo)出對(duì)于沿一個(gè)或多個(gè)路徑的多個(gè)包的組的校驗(yàn)值。
發(fā)送清單可以包括向一個(gè)或多個(gè)數(shù)據(jù)處理設(shè)備廣播所述清單,而該方法可以進(jìn)一步包括:向一個(gè)或多個(gè)數(shù)據(jù)處理設(shè)備發(fā)送相關(guān)聯(lián)的消息。
在一些示例中,第一路徑和/或第二路徑可以在清單中被定義,或可以由數(shù)據(jù)處理設(shè)備預(yù)設(shè)。
本領(lǐng)域技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,本技術(shù)可以采用完全硬件的實(shí)施形式、完全軟件的實(shí)施形式或組合了硬件和軟件方面的實(shí)施形式。
此外,本技術(shù)可以采用計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)程序產(chǎn)品被實(shí)施在具有在其上實(shí)施的計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)可讀介質(zhì)中。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是,例如但不限于,電、磁、光、電磁、紅外或半導(dǎo)體的系統(tǒng)、裝置或設(shè)備,或上述的任何合適的組合。
用于執(zhí)行本技術(shù)的操作的計(jì)算機(jī)程序代碼可以以一種或多種編程語言的組合來編寫,包括面向?qū)ο蟮木幊陶Z言和常規(guī)的過程式編程語言。該程序代碼可以全部在用戶計(jì)算機(jī)上執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行或全部在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后者的情況下,遠(yuǎn)程計(jì)算機(jī)可以通過任何類型的網(wǎng)絡(luò)連接到用戶計(jì)算機(jī)。代碼組件可以被實(shí)施為過程、方法等,并且可以包括可以采用任何抽象級(jí)別(從原生指令集的直接機(jī)器指令到高級(jí)編譯或解釋語言構(gòu)造)的指令或指令序列的形式的子組件。
本領(lǐng)域技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,盡管上文已描述了什么被認(rèn)為是最佳模式以及執(zhí)行本技術(shù)的合適的其他模式,但是本技術(shù)不應(yīng)該限于該說明書的優(yōu)選實(shí)施例中所公開的具體配置和方法。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,本技術(shù)具有廣泛的應(yīng)用,并且可以在不偏離所附權(quán)利要求的范圍的情況下對(duì)實(shí)施例進(jìn)行大范圍的修改。
本技術(shù)還可以被配置為:
(1)
一種用于驗(yàn)證由數(shù)據(jù)處理設(shè)備接收到的消息中的數(shù)據(jù)的完整性的方法,所述消息包括多個(gè)包,所述方法包括:
在所述設(shè)備處,接收來自第一資源的與所述消息相關(guān)聯(lián)的清單,所述清單包括對(duì)于所述多個(gè)包的多個(gè)組校驗(yàn)值;
在所述設(shè)備處,接收來自第一資源或不同的資源的消息;
產(chǎn)生對(duì)于所述多個(gè)包的第一滾動(dòng)散列進(jìn)程;
從第一滾動(dòng)散列進(jìn)程導(dǎo)出對(duì)于所述多個(gè)包的沿一個(gè)或多個(gè)路徑的組的組校驗(yàn)值;
基于或者響應(yīng)于導(dǎo)出的組校驗(yàn)值對(duì)應(yīng)于所述清單中的所述多個(gè)組校驗(yàn)值的確定,驗(yàn)證所述消息中的數(shù)據(jù)的完整性。
(2)
根據(jù)(1)所述的方法,進(jìn)一步包括:
產(chǎn)生對(duì)于所述多個(gè)包的第二滾動(dòng)散列進(jìn)程;
從第二滾動(dòng)散列進(jìn)程導(dǎo)出對(duì)于所述多個(gè)包的沿一個(gè)或多個(gè)路徑的組的組校驗(yàn)值。
(3)
根據(jù)前述各項(xiàng)中任一項(xiàng)所述的方法,其中沿所述一個(gè)或多個(gè)路徑中的第一路徑的組是前向連續(xù)組。
(4)
根據(jù)(2)或(3)所述的方法,其中沿所述一個(gè)或多個(gè)路徑中的第二路徑的組是后向連續(xù)組。
(5)
根據(jù)(4)所述的方法,其中所述前向連續(xù)組的跨度與所述后向連續(xù)組的跨度相等。
(6)
根據(jù)(5)所述的方法,其中所述前向連續(xù)組的跨度是一個(gè)包。
(7)
根據(jù)前述各項(xiàng)中任一項(xiàng)所述的方法,其中所述組校驗(yàn)值包括第一滾動(dòng)散列進(jìn)程或第二滾動(dòng)散列進(jìn)程的提取樣本比特。
(8)
根據(jù)(7)所述的方法,其中所述清單進(jìn)一步包括標(biāo)識(shí)用來提供所述提取樣本比特的相應(yīng)滾動(dòng)散列的比特的數(shù)據(jù)。
(9)
根據(jù)(7)或(8)所述的方法,其中第一滾動(dòng)散列進(jìn)程或第二滾動(dòng)散列進(jìn)程的相應(yīng)值取決于所述多個(gè)包中的一個(gè)或多個(gè)包的靜態(tài)散列。
(10)
根據(jù)前述各項(xiàng)中任一項(xiàng)所述的方法,其中第一滾動(dòng)散列進(jìn)程或第二滾動(dòng)散列進(jìn)程的相應(yīng)值取決于秘密數(shù)據(jù)。
(11)
根據(jù)(10)所述的方法,其中所述方法進(jìn)一步包括:
從所述清單中的秘密協(xié)議數(shù)據(jù)導(dǎo)出所述秘密數(shù)據(jù)。
(12)
根據(jù)(11)所述的方法,其中所述方法進(jìn)一步包括:
在所述設(shè)備處,解密所述秘密協(xié)議數(shù)據(jù)。
(13)
根據(jù)(11)或(12)所述的方法,其中所述秘密數(shù)據(jù)包括:
隨機(jī)數(shù)或密碼密鑰。
(14)
根據(jù)前述各項(xiàng)中任一項(xiàng)所述的方法,進(jìn)一步包括:
校驗(yàn)第一資源的可驗(yàn)證簽名;
進(jìn)一步基于或者響應(yīng)于所述可驗(yàn)證簽名對(duì)應(yīng)于期望的簽名的確定,驗(yàn)證所述消息中的數(shù)據(jù)的完整性。
(15)
根據(jù)前述各項(xiàng)中任一項(xiàng)所述的方法,所述方法包括:
基于或者響應(yīng)于導(dǎo)出的組校驗(yàn)值不對(duì)應(yīng)于所述清單中的所述多個(gè)組校驗(yàn)值的確定,將對(duì)所述消息的一個(gè)或多個(gè)包的請(qǐng)求,從所述設(shè)備發(fā)送到第一資源或不同的資源。
(16)
根據(jù)前述各項(xiàng)中任一項(xiàng)所述的方法,其中第一資源或不同的資源包括以下之一:服務(wù)器和數(shù)據(jù)處理設(shè)備。
(17)
根據(jù)前述各項(xiàng)中任一項(xiàng)所述的方法,其中所述一個(gè)或多個(gè)路徑在所述清單中被定義。
(18)
一種數(shù)據(jù)處理設(shè)備,被配置為執(zhí)行(1)至(17)中任一項(xiàng)所述的方法。
(19)
一種用于由數(shù)據(jù)處理設(shè)備驗(yàn)證消息的一部分中的數(shù)據(jù)的完整性的方法,所述部分包括多個(gè)包,所述方法包括:
在所述設(shè)備處,接收來自第一資源的與所述消息相關(guān)聯(lián)的清單,所述清單包括對(duì)于所述多個(gè)包的多個(gè)組校驗(yàn)值;
在所述設(shè)備處,接收來自第一資源或不同的資源的所述部分;
產(chǎn)生對(duì)于所述多個(gè)包的滾動(dòng)散列進(jìn)程;
從所述滾動(dòng)散列進(jìn)程導(dǎo)出對(duì)于所述多個(gè)包的沿第一路徑的組的組校驗(yàn)值;
從所述滾動(dòng)散列進(jìn)程導(dǎo)出對(duì)于所述多個(gè)包的沿第二路徑的組的組校驗(yàn)值;
基于或者響應(yīng)于導(dǎo)出的對(duì)于沿第一路徑的組的組校驗(yàn)值中的一個(gè)或多個(gè)對(duì)應(yīng)于導(dǎo)出的對(duì)于沿第二路徑的組的組校驗(yàn)值中的一個(gè)或多個(gè)的確定,驗(yàn)證所述消息的一部分中的數(shù)據(jù)的完整性。
(20)
根據(jù)(19)所述的方法,其中沿第一路徑的組是前向連續(xù)組。
(21)
根據(jù)(19)或(20)所述的方法,其中沿第二路徑的組是前向連續(xù)組。
(22)
根據(jù)(21)所述的方法,其中沿第一路徑的組的跨度與沿第二路徑的組的跨度不同。
(23)
根據(jù)(22)所述的方法,其中沿第一路徑的組的跨度是一個(gè)包。
(24)
根據(jù)(19)至(23)中任一項(xiàng)所述的方法,其中所述組校驗(yàn)值包括所述滾動(dòng)散列進(jìn)程的提取樣本比特。
(25)
根據(jù)(24)所述的方法,其中所述清單進(jìn)一步包括標(biāo)識(shí)用來提供所述提取樣本比特的相應(yīng)滾動(dòng)散列的比特的數(shù)據(jù)。
(26)
根據(jù)(24)或(25)所述的方法,其中所述滾動(dòng)散列進(jìn)程的相應(yīng)值取決于所述多個(gè)包中的一個(gè)或多個(gè)包的靜態(tài)散列。
(27)
根據(jù)(19)至(26)中任一項(xiàng)所述的方法,其中所述滾動(dòng)散列進(jìn)程的相應(yīng)值取決于秘密數(shù)據(jù)。
(28)
根據(jù)(19)至(27)中任一項(xiàng)所述的方法,所述方法包括:
基于或者響應(yīng)于導(dǎo)出的組校驗(yàn)值不對(duì)應(yīng)于所述清單中的所述多個(gè)組校驗(yàn)值的確定,將對(duì)所述部分中的一個(gè)或多個(gè)包的請(qǐng)求,從設(shè)備發(fā)送到第一資源或不同的資源。
(29)
根據(jù)(19)至(28)中任一項(xiàng)所述的方法,其中第一路徑和/或第二路徑在所述清單中被定義。
(30)
一種數(shù)據(jù)處理設(shè)備,被配置為執(zhí)行(19)至(29)中任一項(xiàng)所述的方法。
(31)
一種從資源向一個(gè)或多個(gè)數(shù)據(jù)處理設(shè)備提供數(shù)據(jù)清單以用于驗(yàn)證與所述清單相關(guān)聯(lián)的消息的多個(gè)包中的數(shù)據(jù)的完整性的方法,所述方法包括:
在所述資源處產(chǎn)生第一滾動(dòng)散列進(jìn)程;
在所述資源處,從第一滾動(dòng)散列進(jìn)程導(dǎo)出對(duì)于所述多個(gè)包的沿一個(gè)或多個(gè)路徑的組的校驗(yàn)值;
在所述清單中,提供對(duì)于所述組的校驗(yàn)值;
在所述清單中,提供標(biāo)識(shí)所述組的數(shù)據(jù);
在所述清單中,提供標(biāo)識(shí)所述一個(gè)或多個(gè)路徑的數(shù)據(jù);
向所述數(shù)據(jù)處理設(shè)備發(fā)送所述清單。
(32)
根據(jù)(31)所述的方法,所述方法進(jìn)一步包括:
在所述資源處產(chǎn)生第二滾動(dòng)散列進(jìn)程;
在所述資源處,從第二滾動(dòng)散列進(jìn)程導(dǎo)出對(duì)于所述多個(gè)包的沿一個(gè)或多個(gè)路徑的組的校驗(yàn)值;
(33)
根據(jù)(31)或(32)所述的方法,其中發(fā)送所述清單包括向所述一個(gè)或多個(gè)數(shù)據(jù)處理設(shè)備廣播所述清單。
(34)
根據(jù)(31)至(33)中任一項(xiàng)所述的方法,所述方法進(jìn)一步包括:
向所述一個(gè)或多個(gè)數(shù)據(jù)處理設(shè)備發(fā)送相關(guān)聯(lián)的消息。
(35)
一種承載代碼的非暫態(tài)數(shù)據(jù)載體,當(dāng)所述代碼在處理器上實(shí)施時(shí),使得所述處理器執(zhí)行(1)至(17)中任一項(xiàng)所述的方法。
(36)
一種承載代碼的非暫態(tài)數(shù)據(jù)載體,當(dāng)所述代碼在處理器上實(shí)施時(shí),使得所述處理器執(zhí)行(19)至(29)中任一項(xiàng)所述的方法。
(37)
一種承載代碼的非暫態(tài)數(shù)據(jù)載體,當(dāng)所述代碼在處理器上實(shí)施時(shí),使得所述處理器執(zhí)行(31)至(36)中任一項(xiàng)所述的方法。
(38)
一種基本上如上文參考附圖描述的方法。
(39)
一種基本上如上文參考附圖描述的數(shù)據(jù)處理設(shè)備。
(40)
一種基本上如上文參考附圖描述的數(shù)據(jù)清單。