本申請(qǐng)總體涉及計(jì)算機(jī)安全技術(shù),并且具體地涉及通過(guò)以匿名方式使用來(lái)自通道的用戶的審計(jì)查詢來(lái)驗(yàn)證通道的安全性從而建立可以防止中間人攻擊的安全的數(shù)據(jù)交換通道。
背景技術(shù):
在密碼學(xué)和計(jì)算機(jī)安全中,中間人(mitm)攻擊是下述攻擊:攻擊者可以秘密地截取并且可能將改變,在直接彼此通信或經(jīng)由不破壞數(shù)據(jù)通信的安全性的第三方而間接彼此通信的雙方之間交換的數(shù)據(jù)。中間人(mitm)攻擊對(duì)于人們接受由不同供應(yīng)商提供的在線數(shù)據(jù)托管服務(wù)而言是巨大挑戰(zhàn),這是因?yàn)闆](méi)有技術(shù)可以保障服務(wù)供應(yīng)商自身不能夠訪問(wèn)其托管的數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的目的在于提供一種安全的數(shù)據(jù)交換通道,該安全的數(shù)據(jù)交換通道通過(guò)讓來(lái)自通道的用戶以匿名的方式提交審計(jì)查詢來(lái)驗(yàn)證通道的安全性,從而可以防止中間人攻擊。
根據(jù)本申請(qǐng)的第一方面,提供了一種用于驗(yàn)證第一客戶端、第二客戶端和服務(wù)器之間的數(shù)據(jù)交換通道的方法,所述服務(wù)器分別通信地耦接至第一客戶端和第二客戶端。在第一客戶端通過(guò)數(shù)據(jù)交換通道與第二客戶端交換對(duì)信息項(xiàng)的更新序列之后,第一客戶端、第二客戶端和服務(wù)器中的每一個(gè)保存對(duì)信息項(xiàng)的更新序列歷史的相應(yīng)拷貝。為了驗(yàn)證數(shù)據(jù)交換通道的安全性,第一客戶端向服務(wù)器發(fā)送安全審計(jì)查詢,該安全審計(jì)查詢包括由第一客戶端和第二客戶端共享的審計(jì)標(biāo)識(shí)符。接下來(lái),第一客戶端從服務(wù)器接收查詢響應(yīng),該查詢響應(yīng)包括由服務(wù)器保存的對(duì)更新序列歷史的拷貝。第一客戶端然后將查詢響應(yīng)中的更新序列歷史與由第一客戶端保存的對(duì)應(yīng)的更新序列歷史的拷貝進(jìn)行比較。當(dāng)查詢響應(yīng)中的更新序列歷史與由第一客戶端保存的更新序列歷史不同時(shí),第一客戶端將該數(shù)據(jù)交換通道標(biāo)記為不安全,并且終止通過(guò)該數(shù)據(jù)交換通道與第二客戶端交換對(duì)信息項(xiàng)的另外的更新。
根據(jù)本申請(qǐng)的第二方面,第一客戶端包括一個(gè)或更多個(gè)處理器、存儲(chǔ)器以及存儲(chǔ)在存儲(chǔ)器中的多個(gè)程序模塊,所述多個(gè)程序模塊當(dāng)由所述一個(gè)或更多個(gè)處理器執(zhí)行時(shí)執(zhí)行上述多個(gè)操作。
根據(jù)本申請(qǐng)的第三方面,存儲(chǔ)在與具有一個(gè)或更多個(gè)處理器的第一客戶端結(jié)合使用的非暫態(tài)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品包括多個(gè)程序模塊,所述多個(gè)程序模塊當(dāng)由所述一個(gè)或更多個(gè)處理器執(zhí)行時(shí)執(zhí)行上述多個(gè)操作。
附圖說(shuō)明
為提供對(duì)實(shí)施方式的進(jìn)一步理解,附圖在本文中被合并且構(gòu)成說(shuō)明書的一部分,示出了所描述的實(shí)施方式并且與描述一起用以說(shuō)明基本原理。相同附圖標(biāo)記指代相應(yīng)部件。
圖1是根據(jù)本申請(qǐng)的一種說(shuō)明性實(shí)施方式的客戶端-服務(wù)器計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境的框圖;
圖2是示出了根據(jù)本申請(qǐng)的一種說(shuō)明性實(shí)施方式的計(jì)算設(shè)備的部件的框圖;
圖3a至圖3j是示出了根據(jù)一種說(shuō)明性實(shí)施方式的通過(guò)服務(wù)器在第一客戶端與第二客戶端之間進(jìn)行的不同數(shù)據(jù)交換場(chǎng)景的框圖;
圖4是根據(jù)一種說(shuō)明性實(shí)施方式的在兩個(gè)客戶端與服務(wù)器之間進(jìn)行的數(shù)據(jù)交換的流程圖;以及
圖5a至圖5c是根據(jù)一種說(shuō)明性實(shí)施方式的第一客戶端驗(yàn)證數(shù)據(jù)交換通道的流程圖。
具體實(shí)施方式
現(xiàn)在詳細(xì)參考附圖中示出的實(shí)施方式和示例。在以下詳細(xì)描述中,闡述了許多非限制性具體細(xì)節(jié)以輔助理解本文中呈現(xiàn)的主題。但是對(duì)于本領(lǐng)域普通技術(shù)人員而言明顯的是,可以在不偏離權(quán)利要求的范圍的情況下使用各種替選方案并且可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐本主題。現(xiàn)在參照附圖,提供了可以實(shí)現(xiàn)說(shuō)明性實(shí)施方式的數(shù)據(jù)處理環(huán)境的示例性框圖。應(yīng)當(dāng)理解的是,這些附圖僅為示例性的并且并不意在對(duì)可以實(shí)現(xiàn)不同實(shí)施方式的環(huán)境斷定或隱含任何限制??梢詫?duì)所描繪的環(huán)境進(jìn)行許多修改。
圖1描繪了根據(jù)本申請(qǐng)的一種說(shuō)明性實(shí)施方式的客戶端-服務(wù)器計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境的框圖。網(wǎng)絡(luò)環(huán)境10包括網(wǎng)絡(luò)14,網(wǎng)絡(luò)14是用于在網(wǎng)絡(luò)環(huán)境10內(nèi)連接在一起的各種計(jì)算設(shè)備與計(jì)算機(jī)服務(wù)器之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)14可以包括諸如有線通信鏈路、無(wú)線通信鏈路或光纖線纜的連接。
在所描繪的示例中,服務(wù)器15和服務(wù)器16與存儲(chǔ)單元17一起連接至網(wǎng)絡(luò)14。此外,客戶端11、客戶端12以及客戶端13連接至網(wǎng)絡(luò)14??蛻舳?1、客戶端12以及客戶端13可以采用以下形式:膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、平板計(jì)算機(jī)、移動(dòng)電話(例如智能電話)、多媒體播放設(shè)備、導(dǎo)航設(shè)備、教育用設(shè)備(例如小孩的學(xué)習(xí)玩偶)、游戲站、或控制設(shè)備(例如,家用或工業(yè)控制器)。在所描繪的示例中,服務(wù)器15和服務(wù)器16向客戶端11、客戶端12以及客戶端13提供諸如文件、圖像和應(yīng)用等的數(shù)據(jù)。網(wǎng)絡(luò)環(huán)境10可以包括未示出的另外的服務(wù)器、客戶端以及其他設(shè)備。
在所描繪的示例中,網(wǎng)絡(luò)環(huán)境10是因特網(wǎng),其中,網(wǎng)絡(luò)14表示對(duì)使用協(xié)議中的一套傳輸控制協(xié)議/網(wǎng)際協(xié)議(tcp/ip)來(lái)彼此通信的網(wǎng)絡(luò)和網(wǎng)關(guān)的世界范圍的集合。因特網(wǎng)的核心是主節(jié)點(diǎn)或主機(jī)計(jì)算機(jī)之間的高速數(shù)據(jù)通信線的主干網(wǎng),其包括路由數(shù)據(jù)包的上千商業(yè)、政府、教育和其他計(jì)算機(jī)系統(tǒng)中的數(shù)十個(gè)。網(wǎng)絡(luò)環(huán)境10還可以被實(shí)現(xiàn)為多個(gè)不同類型的網(wǎng)絡(luò),例如,局域網(wǎng)(lan)或廣域網(wǎng)(wan)。注意,圖1意在作為示例,而并非作為對(duì)不同說(shuō)明性實(shí)施方式的架構(gòu)限制。
在一些實(shí)施方式中,服務(wù)器15與其他服務(wù)器側(cè)部件如服務(wù)器16或存儲(chǔ)單元17交換大量數(shù)據(jù)包以對(duì)客戶端11、客戶端12以及客戶端13中的一個(gè)或更多個(gè)客戶端處的終端用戶提供服務(wù)。圖2是示出了根據(jù)本申請(qǐng)的一種說(shuō)明性實(shí)施方式的用作客戶端的計(jì)算設(shè)備的部件的框圖。在該說(shuō)明性示例中,計(jì)算設(shè)備30包括通信構(gòu)造102,其提供處理器104、存儲(chǔ)器106、持久存儲(chǔ)裝置108、通信單元110、輸入/輸出(i/o)單元112以及顯示器114之間的通信。在一些實(shí)施方式中,計(jì)算設(shè)備30可以采用以下形式:膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、平板計(jì)算機(jī)、智能電話等。
處理器104用以執(zhí)行用于可以被加載至存儲(chǔ)器106中的軟件程序的指令。取決于特定實(shí)現(xiàn)方式,處理器104可以是一個(gè)或更多個(gè)處理器的集合或者可以是多處理器核。此外,可以使用主處理器與次級(jí)處理器存在于單個(gè)芯片上的一個(gè)或更多個(gè)異構(gòu)處理器系統(tǒng)來(lái)實(shí)現(xiàn)處理器104。作為另一說(shuō)明性示例,處理器104可以是包含同一類型的多個(gè)處理器的對(duì)稱式多處理器系統(tǒng)。
在這些示例中,存儲(chǔ)器106可以是隨機(jī)存取存儲(chǔ)器或任何其他合適的易失性或非易失性存儲(chǔ)設(shè)備。持久存儲(chǔ)裝置108可以取決于特定實(shí)現(xiàn)方式而采用各種形式。例如,持久存儲(chǔ)裝置108可以包含一個(gè)或更多個(gè)部件或設(shè)備,如硬盤驅(qū)動(dòng)器、閃存、可重寫光盤、可重寫磁帶或以上的某種組合。持久存儲(chǔ)裝置108使用的介質(zhì)還可以是可移除的。例如,可移除硬盤驅(qū)動(dòng)器可以用于持久存儲(chǔ)裝置108。
通信單元110提供用于與其他服務(wù)器或計(jì)算設(shè)備進(jìn)行通信。通信單元110可以通過(guò)對(duì)物理通信鏈路和無(wú)線通信鏈路中之一或二者的使用來(lái)提供通信。
輸入/輸出單元112允許與可以連接至計(jì)算設(shè)備30的其他設(shè)備對(duì)數(shù)據(jù)進(jìn)行輸入和輸出。例如,輸入/輸出單元112可以通過(guò)鍵盤和鼠標(biāo)來(lái)提供對(duì)用戶輸入的連接。此外,輸入/輸出單元112可以將輸出發(fā)送至打印機(jī)。顯示器114提供向用戶顯示信息的機(jī)構(gòu)。
用于操作系統(tǒng)和應(yīng)用或程序的指令被存儲(chǔ)在持久存儲(chǔ)裝置108中。這些指令可以被加載至存儲(chǔ)器106中以供處理器104執(zhí)行。以下描述的不同實(shí)施方式的處理可以由處理器104使用計(jì)算機(jī)實(shí)現(xiàn)的指令來(lái)執(zhí)行,這些計(jì)算機(jī)實(shí)現(xiàn)的指令可以位于存儲(chǔ)器中例如存儲(chǔ)器106中。這些指令被稱為程序代碼(或模塊)、計(jì)算機(jī)可用程序代碼(或模塊)或計(jì)算機(jī)可讀程序代碼(或模塊),其可以由處理器104中的處理器讀取和執(zhí)行。不同實(shí)施方式中的程序代碼(或模塊)可以實(shí)施在不同物理或有形計(jì)算機(jī)可讀介質(zhì)如存儲(chǔ)器106或持久存儲(chǔ)裝置108上。
程序代碼/模塊118以功能形式位于能夠選擇性地移除的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)116上,并且可以被加載在或傳送至計(jì)算機(jī)設(shè)備30用于由處理器104執(zhí)行。程序代碼/模塊118和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)116構(gòu)成計(jì)算機(jī)程序產(chǎn)品。在一個(gè)示例中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)116可以為有形形式,例如被插入在或放置在作為持久存儲(chǔ)裝置108的一部分的驅(qū)動(dòng)器或其他設(shè)備中的光盤或磁盤,用于傳送到存儲(chǔ)設(shè)備例如作為持久存儲(chǔ)裝置108的一部分的硬盤驅(qū)動(dòng)器上。以有形形式,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)116還可以采用連接至計(jì)算設(shè)備30的持久存儲(chǔ)裝置的形式,如硬盤驅(qū)動(dòng)器、拇指驅(qū)動(dòng)器或閃存。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)116的有形形式也可以稱為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在一些實(shí)例中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)116不能夠從計(jì)算設(shè)備30移除。
在一些其他實(shí)施方式中,程序代碼/模塊118可以通過(guò)至通信單元110的通信鏈路以及/或者通過(guò)至輸入/輸出單元112的連接來(lái)從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)116傳送至計(jì)算設(shè)備30。在說(shuō)明性示例中,通信鏈路和/或連接可以是物理的或無(wú)線的。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)116還可以采用非有形介質(zhì)的形式,例如包含程序代碼/模塊的通信鏈路或無(wú)線傳輸。
針對(duì)計(jì)算設(shè)備30示出的不同部件并不旨在對(duì)可以實(shí)現(xiàn)不同實(shí)施方式的方式提供架構(gòu)性限制。不同說(shuō)明性實(shí)施方式可以以下述計(jì)算機(jī)系統(tǒng)來(lái)實(shí)現(xiàn),該計(jì)算機(jī)系統(tǒng)包括除針對(duì)計(jì)算設(shè)備30示出的部件以外或代替這些部件的部件。圖2中所示的其他部件可以根據(jù)示出的說(shuō)明性示例來(lái)變化。
作為一個(gè)示例,計(jì)算設(shè)備30中的存儲(chǔ)設(shè)備是可以存儲(chǔ)數(shù)據(jù)的任何硬件裝置。存儲(chǔ)器106、持久存儲(chǔ)裝置108以及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)116是為有形形式的存儲(chǔ)設(shè)備的示例。在另一示例中,總線系統(tǒng)可以用于實(shí)現(xiàn)通信構(gòu)造102并且可以包括一個(gè)或更多個(gè)總線,例如系統(tǒng)總線或輸入/輸出總線??梢允褂锰峁┯糜谠诟浇又量偩€系統(tǒng)的不同部件或設(shè)備之間傳輸數(shù)據(jù)的任何合適類型的架構(gòu)來(lái)實(shí)現(xiàn)總線系統(tǒng)。此外,通信單元可以包括用于發(fā)送和接收數(shù)據(jù)的一個(gè)或更多個(gè)設(shè)備,例如調(diào)制解調(diào)器或網(wǎng)絡(luò)適配器。此外,存儲(chǔ)器例如可以是存儲(chǔ)器106或在可以存在于通信構(gòu)造102中的接口和存儲(chǔ)控制器集線器中找到的高速緩存。
在計(jì)算機(jī)網(wǎng)絡(luò)安全的上下文中,網(wǎng)絡(luò)環(huán)境10可以被進(jìn)一步簡(jiǎn)化成通信地耦接至兩個(gè)客戶端的服務(wù)器,并且兩個(gè)客戶端經(jīng)由服務(wù)器通過(guò)數(shù)據(jù)交換通道來(lái)彼此交換數(shù)據(jù)。圖3a至圖3j是示出了根據(jù)一種說(shuō)明性實(shí)施方式的通過(guò)服務(wù)器在第一客戶端與第二客戶端之間進(jìn)行的不同數(shù)據(jù)交換場(chǎng)景的框圖。
如圖3a所示,第一客戶端310的用戶想要與第二客戶端320的用戶安全地通信。例如,這兩個(gè)用戶可以在研究同一文檔。在兩個(gè)用戶中的一個(gè)用戶將其編輯輸入在文檔中之后,該用戶想要通過(guò)服務(wù)器340與另一客戶端處的另一用戶共享修改后的文檔。在從服務(wù)器340接收到修改后的文檔之后,另一用戶可以通過(guò)服務(wù)器340輸入其改變并且將進(jìn)一步修改的文檔返回至第一用戶。如上所指出,該過(guò)程中的挑戰(zhàn)在于:第一客戶端310和第二客戶端320處的用戶可能不信任管理服務(wù)器340的一方。換言之,兩個(gè)用戶有合理的擔(dān)心:服務(wù)器340處的那方可能發(fā)起中間人攻擊來(lái)監(jiān)視他們的通信。
本申請(qǐng)的一方面在于引入一種用于在第一客戶端310、第二客戶端320(一側(cè))以及服務(wù)器(另一側(cè))之間建立安全的數(shù)據(jù)交換通道的協(xié)議。該協(xié)議包括兩個(gè)步驟:(i)在第一客戶端310與第二客戶端320之間建立獨(dú)有通道;以及(ii)在這樣的通道中實(shí)現(xiàn)安全驗(yàn)證機(jī)制以使得服務(wù)器340不能夠監(jiān)視在該通道上的通信。
在涉及服務(wù)器340的數(shù)據(jù)交換通道以外,在第一客戶端310的用戶與第二客戶端320的用戶之間還存在帶外數(shù)據(jù)交換通道(在線或離線),以使得兩個(gè)用戶可以與彼此交換一些簡(jiǎn)單信息。例如,第一客戶端310的用戶可以呼叫第二客戶端320的用戶以傳遞信息。第一客戶端310處的用戶可以使用即時(shí)消息收發(fā)(im)來(lái)向第二客戶端320的用戶傳遞信息。第一客戶端310處的用戶可以向第二客戶端320處的用戶發(fā)送蝸牛郵件(snail-mail)。
步驟1:在第一客戶端310與第二客戶端320之間建立獨(dú)有通道。
當(dāng)?shù)谝豢蛻舳?10的用戶想要經(jīng)由服務(wù)器340與第二客戶端320的用戶安全地通信時(shí),第一客戶端310的用戶需要建立獨(dú)有通道。在一些實(shí)施方式中,該通道由獨(dú)有統(tǒng)一資源定位符(url)來(lái)標(biāo)識(shí),以使得第一客戶端310和第二客戶端320二者將使用該獨(dú)有url來(lái)在其之間進(jìn)行通信。假設(shè)第一客戶端310的用戶想要發(fā)起通道,則該用戶需要選擇群名稱(g)并且因此成為該組的發(fā)起者。url是通過(guò)兩個(gè)因素來(lái)唯一地確定:群發(fā)起者(第一客戶端310的用戶)以及群名稱(g)。在一些實(shí)施方式中,url=h(第一客戶端310,g),其中h()是散列函數(shù),其使用以下輸入來(lái)創(chuàng)建獨(dú)有散列:群發(fā)起者(第一客戶端310的用戶)以及群名稱(g)。
如圖3b所示,一旦第一客戶端310的用戶選擇群名稱(g),則該用戶使用帶外通道來(lái)向第二客戶端320的用戶通知群名稱(g)。例如,第一客戶端310的用戶可以呼叫第二客戶端320的用戶來(lái)告知該用戶其選擇的群名稱。注意,群名稱為公共信息。帶外通道不需要是安全的。唯一的要求是帶外通道必須可信以使得第二客戶端320的用戶可以接收到實(shí)際的群名稱。
在本申請(qǐng)中,第一客戶端310使用服務(wù)器340來(lái)與第二客戶端320建立安全的數(shù)據(jù)交換通道,用于在兩個(gè)客戶之間進(jìn)行將來(lái)數(shù)據(jù)交換。第一客戶端310經(jīng)由服務(wù)器340向第二客戶端320發(fā)送邀請(qǐng)(i),邀請(qǐng)第二客戶端320加入由群發(fā)起者(第一客戶端310的用戶)創(chuàng)建的命名為g的群。
如圖3c所示,第二客戶端320的用戶具有兩個(gè)與群名稱有關(guān)的信息源:(i)通過(guò)服務(wù)器340,即邀請(qǐng);以及(ii)通過(guò)帶外通道直接來(lái)自第一客戶端310的用戶。第二客戶端320的用戶可以驗(yàn)證來(lái)自兩個(gè)源的群名稱是否彼此匹配。如果來(lái)自兩個(gè)源的群名稱匹配,則第二客戶端320將接受邀請(qǐng)。然后通過(guò)服務(wù)器340建立第一客戶端310與第二客戶端320之間的獨(dú)有url。
另一方面,如果服務(wù)器340意在攻擊第一客戶端310與第二客戶端320之間所提出的數(shù)據(jù)交換通道。則服務(wù)器340可以將群名稱從g改變成g’。但是如圖3d所示,第二客戶端320的用戶將注意到,來(lái)自兩個(gè)源的群名稱(g和g’)不同。該用戶然后可以分辨出數(shù)據(jù)交換通道經(jīng)受攻擊并且可以拒絕邀請(qǐng)。此外,該用戶還可以經(jīng)由帶外通道聯(lián)系第一客戶端310的用戶:所提出的數(shù)據(jù)交換通道被損壞并且應(yīng)當(dāng)棄用。
在以下部分中,假設(shè)來(lái)自兩個(gè)源的群名稱相同,因而經(jīng)由服務(wù)器340建立了在第一客戶端310與第二客戶端320之間的獨(dú)有url。
步驟2:在這樣的通道中實(shí)現(xiàn)安全驗(yàn)證機(jī)制以使得服務(wù)器340不能夠監(jiān)視該通道上的通信。
如圖3e所示,安全驗(yàn)證機(jī)制假設(shè)在該通道的操作中可能涉及四組公鑰-私鑰配對(duì)。
·第一客戶端310:
ο
ο
·第二客戶端320:
ο
ο
·服務(wù)器340:
ο
ο
ο
ο
注意,兩個(gè)客戶端經(jīng)由數(shù)據(jù)交換通道安全地交換數(shù)據(jù)需要前兩個(gè)密鑰配對(duì),并且取決于管理服務(wù)器340的那方是否計(jì)劃發(fā)起任何中間人(mitm)攻擊,最后的兩個(gè)密鑰配對(duì)可以存在或者可以不存在。但是即使存在,也假設(shè)最后的兩個(gè)密鑰配對(duì)的存在對(duì)于客戶端的用戶而言不可見。在本申請(qǐng)中,提出了一種用于客戶端驗(yàn)證最后的兩個(gè)密鑰配對(duì)的存在并且因此確認(rèn)數(shù)據(jù)交換通道的安全性的方法。
私鑰
a:如圖3g所示,服務(wù)器340向第二客戶端320發(fā)送
在場(chǎng)景a下,因?yàn)榈谝豢蛻舳?10具有第二客戶端320的公鑰
b:不失一般性,如圖3h所示,服務(wù)器340向第二客戶端320發(fā)送
在場(chǎng)景b下,第一客戶端310以分布式版本控制系統(tǒng)(dvcs)——例如創(chuàng)建類似連鎖事件的數(shù)據(jù)交換的取決于路徑的歷史的git——中的提交的形式創(chuàng)建有效載荷。在一些實(shí)施方式中,數(shù)據(jù)交換的取決于路徑的歷史記錄在不同時(shí)刻通過(guò)不同客戶端對(duì)信息項(xiàng)(例如文檔)進(jìn)行的更新序列。具體地,第一客戶端310將執(zhí)行以下步驟:
1.第一客戶端310挑選消息m1;
2.第一客戶端310使用
3.第一客戶端310使用
4.第一客戶端310基于經(jīng)加密和簽名的m1建立git提交c1:
5.第一客戶端310在獨(dú)有url處將c1推進(jìn)至服務(wù)器340。
如果服務(wù)器340不改變c1并且不予改變將其保存,第二客戶端320將從獨(dú)有url取回c1并且執(zhí)行以下動(dòng)作:
1.第二客戶端320檢查c1以得到其內(nèi)容:
2.第二客戶端320使用
3.第二客戶端320試圖使用
這時(shí),第二客戶端320知道數(shù)據(jù)交換通道被損壞。第二客戶端320的用戶然后可以使用帶外通道向第一客戶端310的用戶通知該損壞。
如果服務(wù)器340改變c1,則服務(wù)器340可以進(jìn)行以下操作:
1.服務(wù)器340檢查c1以得到其內(nèi)容:
2.服務(wù)器340使用
3.服務(wù)器340使用
4.服務(wù)器340使用
5.服務(wù)器340不具有
6.服務(wù)器340基于經(jīng)重新加密并重新簽名的m1來(lái)創(chuàng)建git提交
當(dāng)?shù)诙蛻舳?20試圖從獨(dú)有url取回git提交時(shí),服務(wù)器340能夠根據(jù)其id來(lái)識(shí)別第二客戶端320,并且將定制的提交c′1提供給第二客戶端320。在接收到定制的提交c′1時(shí),第二客戶端320然后將執(zhí)行以下動(dòng)作:
1.第二客戶端320從獨(dú)有url取回服務(wù)器340提供的c′1;
2.第二客戶端320檢查c′1以得到其內(nèi)容:
3.第二客戶端320使用
類似地,第二客戶端320也將知道數(shù)據(jù)交換通道被損壞,并且第二客戶端320可以經(jīng)由帶外通道聯(lián)系第一客戶端310的用戶有關(guān)安全破壞。
總的來(lái)說(shuō),在場(chǎng)景b下,所有破壞都會(huì)被檢測(cè)到并且服務(wù)器340進(jìn)行的中間人攻擊將失敗。
c:如圖3i所示,服務(wù)器340向第二客戶端320發(fā)送
圖4描繪了場(chǎng)景c下對(duì)經(jīng)加密的消息m1的交換。最初,第一客戶端310通過(guò)執(zhí)行以下步驟來(lái)創(chuàng)建git提交:
1.第一客戶端310挑選消息m1;
2.第一客戶端310使用
3.第一客戶端310使用
4.第一客戶端310基于經(jīng)加密并簽名的m1來(lái)創(chuàng)建git提交c1:
5.第一客戶端310在獨(dú)有url處將c1推進(jìn)至服務(wù)器340。
在服務(wù)器340接收到提交之后,服務(wù)器340可以通過(guò)偽裝第一客戶端310并且執(zhí)行以下動(dòng)作來(lái)修改提交以欺騙第二客戶端320:
1.檢查c1以得到其內(nèi)容:
2.使用
3.使用
4.使用
5.使用
6.基于經(jīng)重新加密并重新簽名的m1來(lái)創(chuàng)建git提交c′1:
當(dāng)?shù)诙蛻舳?20想要從獨(dú)有url取回時(shí),服務(wù)器340可以經(jīng)由第二客戶端320的id檢測(cè)到第二客戶端320,并且向第二客戶端320提供c′1。第二客戶端320然后執(zhí)行以下動(dòng)作:
1.第二客戶端320從獨(dú)有url取回服務(wù)器340提供的c′1;
2.第二客戶端320檢查c′1以得到其內(nèi)容:
3.第二客戶端320使用
4.第二客戶端320使用
在該時(shí)刻,第二客戶端320不能區(qū)分通信通道是否被破壞,因?yàn)楸M管服務(wù)器340已經(jīng)在第二客戶端320之前訪問(wèn)消息m1但是第二客戶端320仍能夠接收消息m1。換言之,目前為止尚未檢測(cè)到由服務(wù)器340進(jìn)行的中間人攻擊。第二客戶端320通過(guò)進(jìn)行以下動(dòng)作來(lái)繼續(xù):
1.第二客戶端320挑選消息m2;
2.第二客戶端320使用
3.第二客戶端320使用
4.第二客戶端320基于經(jīng)加密并簽名的m2和先前步驟中從服務(wù)器340接收的c′1來(lái)創(chuàng)建git提交c2:
5.第二客戶端320將c2推進(jìn)至獨(dú)有url。
現(xiàn)在,第二客戶端320具有兩個(gè)連鎖提交:c′1和c2,c2進(jìn)而取決于c′1。當(dāng)服務(wù)器340接收到c2時(shí),則服務(wù)器340通過(guò)執(zhí)行以下動(dòng)作來(lái)準(zhǔn)備針對(duì)第一客戶端310的定制化提交:
1.服務(wù)器340檢查c2并得到其內(nèi)容:
2.服務(wù)器340使用
3.服務(wù)器340使用
4.服務(wù)器340使用
5.服務(wù)器340使用
6.服務(wù)器340基于經(jīng)重新加密并重新簽名的m2和先前從第一客戶端310接收到的c1來(lái)重新創(chuàng)建git提交c′2:
當(dāng)?shù)谝豢蛻舳?10試圖從獨(dú)有url取回時(shí),服務(wù)器340可以經(jīng)由其id檢測(cè)到第一客戶端310,并且向第一客戶端310提供定制的c′2。第一客戶端310將取回消息m2并對(duì)其進(jìn)行驗(yàn)證以及解密。直至現(xiàn)在為止,尚未檢測(cè)到由服務(wù)器340進(jìn)行的中間人攻擊。
在這個(gè)時(shí)刻之后,如圖4所示,第一客戶端310和第二客戶端320二者上的應(yīng)用將周期性地并隨機(jī)地發(fā)起一系列審計(jì)操作。每個(gè)客戶端具有其自身的一組公鑰-私鑰配對(duì)。為了驗(yàn)證服務(wù)器340是否已經(jīng)損壞數(shù)據(jù)交換通道,第一客戶端310和第二客戶端320二者具有相同審計(jì)員賬戶并且因此如圖3j所示具有同一對(duì)密鑰
如上所指出,服務(wù)器340保存對(duì)第一客戶端310和第二客戶端320定制的兩個(gè)分開的git報(bào)告(c1,c′2)和(c′1,c2)以隱藏服務(wù)器340已經(jīng)損壞獨(dú)有url處的數(shù)據(jù)交換通道的安全性的事實(shí)。為了這樣做,服務(wù)器340必須向第一客戶端310和第二客戶端320進(jìn)行“正確的”git報(bào)告,只要服務(wù)器340可以區(qū)別提交審計(jì)查詢的客戶端的標(biāo)識(shí)就可以。但是當(dāng)服務(wù)器340從審計(jì)員賬戶接收到查詢時(shí),服務(wù)器340無(wú)法區(qū)別第一客戶端310還是第二客戶端320在進(jìn)行審計(jì)操作。因此,對(duì)于每個(gè)審計(jì)操作,服務(wù)器340僅具有50%的機(jī)會(huì)來(lái)返回正確的git報(bào)告。如果第一客戶端310或第二客戶端320任一連續(xù)地發(fā)起審計(jì)查詢,則它可以快速地獲得期望自信度:來(lái)自服務(wù)器340的正確答案不是偶然引起的。
采用第一客戶端310作為示例,如果第一客戶端310發(fā)起七次查詢,則服務(wù)器340對(duì)所有七次查詢給出正確答案的概率為
可以由圖5a至圖5c中所示的流程圖來(lái)總結(jié)上文描述的計(jì)算機(jī)安全方法,圖5a至圖5c示出了根據(jù)一種說(shuō)明性實(shí)施方式的第一客戶端如何驗(yàn)證其通過(guò)服務(wù)器與第二客戶端具有的數(shù)據(jù)交換通道。
第一客戶端從第一客戶端向服務(wù)器發(fā)送(510)安全審計(jì)查詢,該安全審計(jì)查詢包括由第一客戶端和第二客戶端共享的審計(jì)標(biāo)識(shí)符。接下來(lái),第一客戶端接收(520)來(lái)自服務(wù)器的查詢響應(yīng),該查詢響應(yīng)包括由服務(wù)器保存的對(duì)更新序列歷史的拷貝。在將查詢響應(yīng)中的更新序列歷史與由第一客戶端保存的對(duì)應(yīng)的更新序列歷史的拷貝進(jìn)行比較(530)之后,第一客戶端確定(540)兩個(gè)更新序列歷史是否相同。當(dāng)查詢響應(yīng)中的更新序列歷史與由第一客戶端保存的更新序列歷史不同時(shí)(540-否),第一客戶端將該數(shù)據(jù)交換通道標(biāo)記(550)為不安全并且終止(560)通過(guò)該數(shù)據(jù)交換通道與第二客戶端交換對(duì)信息項(xiàng)的另外的更新。在學(xué)習(xí)了這樣的安全漏洞之后,第一客戶端的用戶可以經(jīng)由帶外通道來(lái)通知第二客戶端的用戶。
注意,如圖4所示,在第一客戶端從服務(wù)器接收到對(duì)信息項(xiàng)的一個(gè)或更多個(gè)新的更新之后,第一客戶端可以將圖5a中所示的步驟重復(fù)至少預(yù)定多次。當(dāng)然,每當(dāng)最新近的查詢響應(yīng)中的更新序列歷史與由第一客戶端保存的更新序列歷史不同時(shí),第一客戶端可以停止重復(fù)這些步驟。
在圖5b所示的特定實(shí)施方式中,當(dāng)查詢響應(yīng)中的更新序列歷史與由第一客戶端保存的更新序列歷史相同時(shí)(540-是),第一客戶端繼續(xù)(540-10)通過(guò)該數(shù)據(jù)交換通道與第二客戶端交換對(duì)信息項(xiàng)的另外的更新,并且在從服務(wù)器接收到對(duì)信息項(xiàng)的一個(gè)另外的更新之后更新(540-20)由第一客戶端保存的更新序列歷史。
在圖5c所示的一些實(shí)施方式中,第一客戶端在向服務(wù)器發(fā)送任意安全審計(jì)查詢之前執(zhí)行一組操作。例如,第一客戶端可以使用由服務(wù)器聲明為與第二客戶端相關(guān)聯(lián)的公鑰來(lái)對(duì)信息項(xiàng)進(jìn)行加密(510-10),并且使用與第一客戶端相關(guān)聯(lián)的私鑰對(duì)經(jīng)加密的信息項(xiàng)進(jìn)行簽名。接下來(lái),第一客戶端基于經(jīng)加密并簽名的信息項(xiàng)來(lái)生成(510-20)提交,并且將該提交傳送(510-30)給服務(wù)器以使得該提交可供第二客戶端取回,其中,該提交包括由第一客戶端產(chǎn)生的獨(dú)有提交標(biāo)識(shí)符。
在一些實(shí)施方式中,第一客戶端還從服務(wù)器接收(510-40)對(duì)信息項(xiàng)的提交。注意,該提交是由第二客戶端基于使用由服務(wù)器聲明為與第一客戶端相關(guān)聯(lián)的公鑰對(duì)信息項(xiàng)進(jìn)行的加密和使用與第二客戶端相關(guān)聯(lián)的私鑰對(duì)信息項(xiàng)進(jìn)行的簽名來(lái)生成的。接下來(lái),第一客戶端從提交提取(510-50)獨(dú)有提交標(biāo)識(shí)符并且將該獨(dú)有提交標(biāo)識(shí)符添加(510-60)至由第一客戶端保存的更新序列歷史。
最后,應(yīng)當(dāng)注意,本發(fā)明可以采用以下形式:純硬件實(shí)施方式、純軟件實(shí)施方式或包含硬件元素和軟件元素的實(shí)施方式。在優(yōu)選實(shí)施方式中,本發(fā)明是以軟件來(lái)實(shí)現(xiàn),軟件包括但不限于固件、駐留軟件、微代碼等。
此外,本發(fā)明可以采用能夠從計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)訪問(wèn)的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)提供用于由計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)使用或結(jié)合其一起使用的程序代碼。出于本說(shuō)明書的目的考慮,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是任何有形裝置,其可以包含、存儲(chǔ)、傳送、傳播或運(yùn)送用于由指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用或結(jié)合其一起使用的程序。
介質(zhì)可以是電子的、磁的、光的、電磁的、紅外的或半導(dǎo)體系統(tǒng)(設(shè)備或裝置)或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的示例包括半導(dǎo)體或固態(tài)存儲(chǔ)器、磁帶、可移除計(jì)算機(jī)磁盤、隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、硬磁盤和光盤。光盤的當(dāng)前示例包括致密盤-只讀存儲(chǔ)器(cd-rom)、致密盤-讀/寫(cd-r/w)和dvd。
適于存儲(chǔ)和/或執(zhí)行程序代碼的計(jì)算機(jī)系統(tǒng)將包括至少一個(gè)處理器,上述至少一個(gè)處理器通過(guò)系統(tǒng)總線直接或間接地耦接至存儲(chǔ)器元件。存儲(chǔ)器元件可以包括在程序代碼的實(shí)際執(zhí)行期間采用的局部存儲(chǔ)器、塊存儲(chǔ)裝置和高速緩沖存儲(chǔ)器,其提供對(duì)至少一些程序代碼的臨時(shí)存儲(chǔ)以減小在執(zhí)行期間必須從塊存儲(chǔ)裝置檢索代碼的次數(shù)。
輸入/輸出或i/o裝置(包括但不限于鍵盤、顯示器、定點(diǎn)裝置等)可以或直接或通過(guò)中介i/o控制器耦接至系統(tǒng)。
網(wǎng)絡(luò)適配器也可以耦接至系統(tǒng)以使得計(jì)算機(jī)系統(tǒng)能夠通過(guò)中介私有或公共網(wǎng)絡(luò)耦接至其他計(jì)算機(jī)系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)裝置。調(diào)制解調(diào)器、線纜調(diào)制解調(diào)器和以太網(wǎng)卡僅是當(dāng)前可用的網(wǎng)絡(luò)適配器類型中的幾種。
本申請(qǐng)的描述出于說(shuō)明和描述的目的而呈現(xiàn),并且并不意在為排他性的或者限制成所公開的形式的發(fā)明。對(duì)于本領(lǐng)域普通技術(shù)人員而言,許多修改和變型是明顯的。實(shí)施方式被選擇和描述以最佳地闡述本發(fā)明、實(shí)際應(yīng)用的原理,以及使得本領(lǐng)域普通技術(shù)人員能夠理解本發(fā)明適于預(yù)期特定用途的具有各種修改的各種實(shí)施方式。
實(shí)施方式的描述中使用的科技術(shù)語(yǔ)僅出于描述特定實(shí)施方式的目的并且并不意在限制權(quán)利要求的范圍。如實(shí)施方式的描述和所附權(quán)利要求書中使用的那樣,單數(shù)形式“a”、“an”及“the”意在也包括復(fù)數(shù)形式,除非上下文明確地另外指出。還要理解的是,本文中使用的術(shù)語(yǔ)“和/或”指代并且包含相關(guān)聯(lián)的列出項(xiàng)的一個(gè)或更多個(gè)的任何和所有可能組合。還要理解的是,術(shù)語(yǔ)“包括(include)”、“包括(including)”、“包括(comprise)”和/或“包括(comprising)”當(dāng)在該說(shuō)明書中使用時(shí)指定所陳述的特征、整數(shù)、步驟、操作、元件和/或部件的存在,但并不排除存在或添加一個(gè)或更多個(gè)其他特征、整數(shù)、步驟、操作、元件、部件和/或其組合。
還要理解的是,盡管本文中可以使用術(shù)語(yǔ)第一、第二等描述各種元件,但這些元件不應(yīng)當(dāng)被這些術(shù)語(yǔ)所限制。這些術(shù)語(yǔ)僅用于將一個(gè)元件與另一元件區(qū)分。例如,在不偏離實(shí)施方式的范圍的情況下,第一端口可以稱為第二端口,以及類似地,第二端口可以稱為第一端口。第一端口和第二端口均是端口,但它們不是同一端口。
受益于前述描述和關(guān)聯(lián)附圖中呈現(xiàn)的教示,本領(lǐng)域技術(shù)人員將想到本文中描述的實(shí)施方式的許多修改和替選實(shí)施方式。因此,將理解的是,權(quán)利要求的范圍并不限于所公開的實(shí)施方式的具體示例,并且修改和其他實(shí)施方式意在被包括在所附權(quán)利要求的范圍內(nèi)。盡管本文中采用了特定術(shù)語(yǔ),但僅以通用和描述性含義而不出于限制的目的來(lái)使用它們。
實(shí)施方式被選擇和描述以最佳地闡述基本原理及其實(shí)際應(yīng)用,由此使得本領(lǐng)域技術(shù)人員能夠最佳地利用這些基本原理和具有適于預(yù)期特定用途的各種修改的各種實(shí)施方式。