本說明書一個(gè)或多個(gè)實(shí)施例涉及計(jì)算機(jī),尤其涉及一種基于隱私保護(hù)聯(lián)合構(gòu)建圖數(shù)據(jù)的方法和裝置,一種基于隱私保護(hù)進(jìn)行圖查詢的方法和裝置,一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),以及一種計(jì)算設(shè)備。
背景技術(shù):
1、關(guān)系網(wǎng)絡(luò)圖,或簡(jiǎn)稱圖(graphs)是對(duì)現(xiàn)實(shí)世界中實(shí)體之間的關(guān)系的描述,因其固有的互聯(lián)性,在金融行業(yè)、社交網(wǎng)絡(luò)、公共衛(wèi)生等多個(gè)領(lǐng)域發(fā)揮了重要作用。一般地,關(guān)系網(wǎng)絡(luò)圖包含節(jié)點(diǎn)集合和邊集合,節(jié)點(diǎn)(node)或者說頂點(diǎn)(vertex)表示現(xiàn)實(shí)世界中的實(shí)體,邊(edge)表示現(xiàn)實(shí)世界中實(shí)體之間的聯(lián)系。例如,在社交網(wǎng)絡(luò)中,用戶就是實(shí)體,兩個(gè)用戶之間的關(guān)系或聯(lián)系就是邊。
2、圖上的一個(gè)關(guān)鍵應(yīng)用是以自我為中心的查詢(ego-centric?queries),這種查詢聚焦于一個(gè)中心節(jié)點(diǎn)及其所有直接連接的鄰居(即一階鄰居)。例如,在金融行業(yè),通過查詢交易圖中交易賬戶之間的關(guān)系,可以輔助檢測(cè)非法資金轉(zhuǎn)移、識(shí)別高風(fēng)險(xiǎn)賬戶等。
3、基于多方圖融合的圖查詢?cè)诙鄠€(gè)領(lǐng)域都有很大的應(yīng)用前景。例如,聯(lián)合多方銀行的數(shù)據(jù)可以進(jìn)行更全面的風(fēng)險(xiǎn)賬戶或風(fēng)險(xiǎn)交易檢測(cè);又例如,聯(lián)合多個(gè)社交平臺(tái)的數(shù)據(jù)可以進(jìn)行更全面的社交數(shù)據(jù)查詢,從而為用戶提供更加精準(zhǔn)的推薦內(nèi)容等。然而,出于隱私保護(hù)需求,各個(gè)數(shù)據(jù)方往往無法直接共享圖數(shù)據(jù)。
4、理論上,安全多方計(jì)算(secure?multi-party?computation,簡(jiǎn)稱mpc)技術(shù)可以讓多個(gè)參與方在不直接共享數(shù)據(jù)的前提下完成約定好的計(jì)算任務(wù),包括圖查詢。然而,由于實(shí)際應(yīng)用場(chǎng)景中圖數(shù)據(jù)的規(guī)模往往很大,導(dǎo)致現(xiàn)有的多方隱私圖查詢方式難以高效完成圖查詢,實(shí)用性有限。
5、因此,迫切需要一種方案,可以在不破壞隱私性的同時(shí)實(shí)現(xiàn)高效的多方聯(lián)合圖查詢。
技術(shù)實(shí)現(xiàn)思路
1、本說明書實(shí)施例描述一種基于隱私保護(hù)聯(lián)合構(gòu)建圖數(shù)據(jù)、進(jìn)行圖查詢的方法和裝置,對(duì)于任一基礎(chǔ)查詢,可以在不遍歷全圖的基礎(chǔ)上得到查詢結(jié)果,從而實(shí)現(xiàn)高效的圖查詢。
2、根據(jù)第一方面,提供一種基于隱私保護(hù)聯(lián)合構(gòu)建圖數(shù)據(jù)的方法,應(yīng)用于多個(gè)計(jì)算方中的任一計(jì)算方,包括:
3、從n個(gè)數(shù)據(jù)方中的任一數(shù)據(jù)方接收其私有圖數(shù)據(jù)在秘密分享下的私有圖分片,所述私有圖數(shù)據(jù)組織為b*b個(gè)塊構(gòu)成的矩陣,其中第i行第j列的塊記錄:該數(shù)據(jù)方的私有圖中起點(diǎn)和終點(diǎn)分別位于第i個(gè)和第j個(gè)節(jié)點(diǎn)范圍的連接邊列表,其中b為公開參數(shù)。組合接收到的n份私有圖分片,從而構(gòu)建本方中針對(duì)全局圖數(shù)據(jù)的全局圖分片,所述全局圖數(shù)據(jù)為所述n個(gè)數(shù)據(jù)方的n個(gè)私有圖數(shù)據(jù)的融合結(jié)果?;谒鋈謭D分片,構(gòu)建兩個(gè)數(shù)組和對(duì)應(yīng)的兩套索引數(shù)據(jù);其中第一數(shù)組包含b個(gè)第一元素,單個(gè)第一元素對(duì)應(yīng)所述全局圖分片中一行b個(gè)塊的數(shù)據(jù);第二數(shù)組包含b2個(gè)第二元素,其分別對(duì)應(yīng)所述全局圖分片中b2個(gè)塊的數(shù)據(jù)。
4、在一些實(shí)施例中,所述連接邊列表中的多個(gè)連接邊按照起點(diǎn)和終點(diǎn)的聯(lián)合鍵順序排列。
5、在一些實(shí)施例中,所述b*b個(gè)塊中各個(gè)塊記錄的連接邊條數(shù)相同;所述b*b塊中至少有一個(gè)塊包含填充的空邊。
6、在一些實(shí)施例中,組合接收到的n份私有圖分片,包括:獲取所述n份私有圖分片中均位于第i行第j列的n個(gè)塊中的n份連接邊列表分片;通過與其他計(jì)算方進(jìn)行用于聯(lián)合比較的mpc計(jì)算,對(duì)所述n份連接邊列表分片中的連接邊分片進(jìn)行按照起點(diǎn)標(biāo)識(shí)的聯(lián)合排序;基于聯(lián)合排序后的連接邊分片形成所述全局圖分片中第i行第j列的塊。
7、在一些實(shí)施例中,基于所述全局圖分片,構(gòu)建兩個(gè)數(shù)組和對(duì)應(yīng)的兩套索引數(shù)據(jù),包括:對(duì)所述全局圖分片按行進(jìn)行順序提取,每行作為單個(gè)數(shù)組元素形成第三數(shù)組,所述第三數(shù)組的物理索引序列和其邏輯索引序列一致;對(duì)所述全局圖分片逐行進(jìn)行塊的順序提取,每個(gè)塊作為單個(gè)數(shù)組元素形成第四數(shù)組,所述第四數(shù)組的物理索引序列和其邏輯索引序列一致;基于所述第三和第四數(shù)組及其各自的邏輯索引序列,確定所述兩個(gè)數(shù)組和對(duì)應(yīng)的兩套索引數(shù)據(jù)。
8、進(jìn)一步,在一些具體的實(shí)施例中,基于所述第三和第四數(shù)組及其各自的邏輯索引序列,確定所述兩個(gè)數(shù)組和對(duì)應(yīng)的兩套索引數(shù)據(jù),包括:分別將第三數(shù)組和第四數(shù)組作為原始數(shù)組;基于所述原始數(shù)組和其邏輯索引序列,與其他計(jì)算方聯(lián)合進(jìn)行用于亂序重排的mpc計(jì)算,得到原始數(shù)組對(duì)應(yīng)的重排后數(shù)組,以及指示所述邏輯索引序列映射到所述重排后數(shù)組的物理索引序列的索引映射分片;將所述重排后數(shù)組歸入所述兩個(gè)數(shù)組,以及,將所述原始數(shù)組的邏輯索引序列作為所述重排后數(shù)組的邏輯索引序列,與所述索引映射分片一并歸入該重排后數(shù)組對(duì)應(yīng)的一套索引數(shù)據(jù)。
9、更進(jìn)一步地,在一些示例中,所述用于亂序重排的mpc計(jì)算通過目標(biāo)協(xié)議實(shí)現(xiàn),所述目標(biāo)協(xié)議的輸入包括所述原始數(shù)組和其對(duì)應(yīng)的邏輯索引序列,以及本地隨機(jī)生成的針對(duì)所述亂序重排的重排函數(shù)分片和重排函數(shù)的逆函數(shù)分片。
10、在一些實(shí)施例中,所述多個(gè)計(jì)算方為3個(gè)計(jì)算方,所述秘密分享的實(shí)現(xiàn)基于(2,3)-秘密分享方案。
11、根據(jù)第二方面,提出一種基于隱私保護(hù)進(jìn)行圖查詢的方法,應(yīng)用于多個(gè)計(jì)算方中的任一計(jì)算方,其中維護(hù)基于第一方面提供的方法而構(gòu)建的兩個(gè)數(shù)組和對(duì)應(yīng)的兩套索引數(shù)據(jù)。所述方法包括:
12、根據(jù)從客戶端接收的圖查詢請(qǐng)求,從所述兩個(gè)數(shù)組中確定目標(biāo)數(shù)組;所述圖查詢請(qǐng)求包括目標(biāo)對(duì)象標(biāo)識(shí)在秘密分享下的對(duì)象標(biāo)識(shí)分片;其中目標(biāo)對(duì)象為節(jié)點(diǎn)或邊?;谒鰧?duì)象標(biāo)識(shí)分片,以及所述目標(biāo)數(shù)組對(duì)應(yīng)的目標(biāo)索引數(shù)據(jù),通過與其他計(jì)算方聯(lián)合進(jìn)行第一mpc計(jì)算,定位到所述目標(biāo)數(shù)組的單個(gè)數(shù)組元素。基于所述對(duì)象標(biāo)識(shí)分片,以及所述單個(gè)數(shù)組元素包含的全局子圖分片,通過與其他計(jì)算方聯(lián)合進(jìn)行第二mpc計(jì)算,得到圖查詢結(jié)果的結(jié)果分片,用于提供給所述客戶端。
13、在一些實(shí)施例中,根據(jù)從客戶端接收的圖查詢請(qǐng)求,從所述兩個(gè)數(shù)組中確定目標(biāo)數(shù)組,包括:在所述目標(biāo)對(duì)象為節(jié)點(diǎn)的情況下,將所述兩個(gè)數(shù)組中的第一數(shù)組確定為目標(biāo)數(shù)組;在所述目標(biāo)對(duì)象為邊的情況下,將所述兩個(gè)數(shù)組中的第二數(shù)組確定為目標(biāo)數(shù)組。
14、在一些實(shí)施例中,定位到目標(biāo)數(shù)組的單個(gè)數(shù)組元素,包括:利用所述對(duì)象標(biāo)識(shí)分片,確定目標(biāo)對(duì)象在目標(biāo)數(shù)組中的目標(biāo)邏輯索引的索引分片;基于所述索引分片和所述目標(biāo)索引數(shù)據(jù),通過執(zhí)行所述第一mpc計(jì)算,定位到所述單個(gè)數(shù)組元素。
15、進(jìn)一步,在一些具體的實(shí)施例中,所述目標(biāo)數(shù)組是對(duì)原始數(shù)組進(jìn)行重排而得到,所述原始數(shù)組和目標(biāo)數(shù)組具有相同的邏輯索引序列,且所述原始數(shù)組的物理索引序列與其邏輯索引序列一致;所述目標(biāo)索引數(shù)據(jù)包括:指示所述邏輯索引序列映射到所述目標(biāo)數(shù)組的物理索引序列的索引映射分片。其中,基于所述索引分片和所述目標(biāo)索引數(shù)據(jù),通過執(zhí)行所述第一mpc計(jì)算,定位到所述單個(gè)數(shù)組元素,包括:基于所述索引分片和所述索引映射分片,執(zhí)行所述第一mpc計(jì)算,得到所述目標(biāo)邏輯索引對(duì)應(yīng)的目標(biāo)物理索引;根據(jù)所述目標(biāo)物理索引,定位到存儲(chǔ)的所述單個(gè)數(shù)組元素。
16、在一些實(shí)施例中,所述目標(biāo)對(duì)象為目標(biāo)邊,其邊標(biāo)識(shí)分片包括目標(biāo)起點(diǎn)子分片和目標(biāo)終點(diǎn)子分片,所述全局子圖分片中包括對(duì)應(yīng)l個(gè)連接邊的l份邊分片,各份邊分片包括起點(diǎn)子分片和終點(diǎn)子分片。其中,基于所述對(duì)象標(biāo)識(shí)分片,以及所述單個(gè)數(shù)組元素包含的全局子圖分片,通過與其他計(jì)算方聯(lián)合進(jìn)行第二mpc計(jì)算,得到圖查詢結(jié)果的結(jié)果分片,包括:將所述目標(biāo)邊的邊標(biāo)識(shí)分片復(fù)制成l份;基于l份邊標(biāo)識(shí)分片和所述l份邊分片執(zhí)行所述第二mpc計(jì)算,得到所述結(jié)果分片。
17、進(jìn)一步,在一些具體的實(shí)施例中,所述圖查詢請(qǐng)求指示查詢所述目標(biāo)邊是否被包含在全局圖數(shù)據(jù)中;其中,基于l份邊標(biāo)識(shí)分片和所述l份邊分片執(zhí)行所述第二mpc計(jì)算,得到所述結(jié)果分片,包括:
18、基于l份邊標(biāo)識(shí)分片中的l份目標(biāo)起點(diǎn)子分片,以及所述l份邊分片中的l份起點(diǎn)子分片,通過與其他計(jì)算方聯(lián)合進(jìn)行用于按位相等判別的第一mpc子計(jì)算,得到第一掩碼分片;基于l份邊標(biāo)識(shí)分片中的l份目標(biāo)終點(diǎn)子分片,以及所述l份邊分片中的l份終點(diǎn)子分片,通過與其他計(jì)算方聯(lián)合進(jìn)行用于按位相等判別的第二mpc子計(jì)算,得到第二掩碼分片;基于所述第一掩碼分片和第二掩碼分片,通過與其他計(jì)算方聯(lián)合進(jìn)行用于按位邏輯與運(yùn)算的第三mpc子計(jì)算,得到第三掩碼分片;基于所述第三掩碼分片,通過與其他計(jì)算方聯(lián)合進(jìn)行用于判別是否存在數(shù)值為1的比特位的第四mpc子計(jì)算,得到所述結(jié)果分片。
19、在一些實(shí)施例中,所述目標(biāo)對(duì)象為目標(biāo)節(jié)點(diǎn),所述全局子圖分片中包括對(duì)應(yīng)l個(gè)連接邊的l份邊分片,各份邊分片包括起點(diǎn)子分片和終點(diǎn)子分片。其中,基于所述對(duì)象標(biāo)識(shí)分片,以及所述單個(gè)數(shù)組元素包含的全局子圖分片,通過與其他計(jì)算方聯(lián)合進(jìn)行第二mpc計(jì)算,得到圖查詢結(jié)果的結(jié)果分片,包括:將目標(biāo)節(jié)點(diǎn)的標(biāo)識(shí)分片復(fù)制成l份,得到l份目標(biāo)點(diǎn)分片;基于l份目標(biāo)點(diǎn)分片和所述l份邊分片執(zhí)行所述第二mpc計(jì)算,得到所述結(jié)果分片。
20、進(jìn)一步,在一些具體的實(shí)施例中,所述圖查詢請(qǐng)求指示查詢所述目標(biāo)節(jié)點(diǎn)的一階鄰居節(jié)點(diǎn)數(shù)量;其中,基于l份目標(biāo)點(diǎn)分片和所述l份邊分片執(zhí)行所述第二mpc計(jì)算,得到所述結(jié)果分片,包括:
21、基于l份目標(biāo)點(diǎn)分片,以及所述l份邊分片中的l份起點(diǎn)子分片,通過與其他計(jì)算方聯(lián)合進(jìn)行用于按位相等判別的第一mpc子計(jì)算,得到第一掩碼分片,其屬于布爾分片;基于所述第一掩碼分片,通過與其他計(jì)算方聯(lián)合進(jìn)行用于分片類型轉(zhuǎn)換的第二mpc子計(jì)算,得到第二掩碼分片,其屬于算數(shù)分片;基于所述第二掩碼分片,通過與其他計(jì)算方聯(lián)合進(jìn)行用于計(jì)算比特位和值的第三mpc子計(jì)算,得到所述結(jié)果分片。
22、在另一些具體的實(shí)施例中,所述圖查詢請(qǐng)求指示查詢所述目標(biāo)節(jié)點(diǎn)的一階鄰居節(jié)點(diǎn);其中,基于l份目標(biāo)點(diǎn)分片和所述l份邊分片執(zhí)行所述第二mpc計(jì)算,得到所述結(jié)果分片,包括:
23、基于l份目標(biāo)點(diǎn)分片,以及所述l份邊分片中的l份起點(diǎn)子分片,通過與其他計(jì)算方聯(lián)合進(jìn)行用于按位相等判別的第一mpc子計(jì)算,得到第一掩碼分片;基于所述第一掩碼分片和所述l份邊分片中的l份終點(diǎn)子分片,通過與其他計(jì)算方聯(lián)合進(jìn)行用于對(duì)位相乘的第二mpc子計(jì)算,得到候選節(jié)點(diǎn)分片;基于所述候選節(jié)點(diǎn)分片確定所述結(jié)果分片。
24、更進(jìn)一步地,在一些例子中,基于所述候選節(jié)點(diǎn)分片確定所述結(jié)果分片,包括:基于所述候選節(jié)點(diǎn)分片,通過與其他計(jì)算方聯(lián)合進(jìn)行用于去重處理的第三mpc子計(jì)算,得到去重節(jié)點(diǎn)分片;基于所述去重節(jié)點(diǎn)分片確定所述結(jié)果分片。
25、在一些更具體的例子中,所述全局子圖中的l個(gè)邊分片被按照對(duì)應(yīng)的起點(diǎn)標(biāo)識(shí)預(yù)先排序,所述第三mpc子計(jì)算的計(jì)算協(xié)議針對(duì)相鄰元素的去重而設(shè)計(jì)。
26、在一些更具體的例子中,基于所述去重節(jié)點(diǎn)分片確定所述結(jié)果分片,包括:基于所述去重后分片,通過與其他計(jì)算方聯(lián)合進(jìn)行用于亂序重排的第四mpc子計(jì)算,得到所述結(jié)果分片。
27、根據(jù)第三方面,提供一種基于隱私保護(hù)聯(lián)合構(gòu)建圖數(shù)據(jù)的裝置,集成于多個(gè)計(jì)算方中的任一計(jì)算方,包括:
28、私有圖分片接收模塊,配置為從n個(gè)數(shù)據(jù)方中的任一數(shù)據(jù)方接收其私有圖數(shù)據(jù)在秘密分享下的私有圖分片,所述私有圖數(shù)據(jù)組織為b*b個(gè)塊構(gòu)成的矩陣,其中第i行第j列的塊記錄:該數(shù)據(jù)方的私有圖中起點(diǎn)和終點(diǎn)分別位于第i個(gè)和第j個(gè)節(jié)點(diǎn)范圍的連接邊列表,其中b為公開參數(shù)。私有圖分片組合模塊,配置為組合接收到的n份私有圖分片,從而構(gòu)建本方中針對(duì)全局圖數(shù)據(jù)的全局圖分片,所述全局圖數(shù)據(jù)為所述n個(gè)數(shù)據(jù)方的n個(gè)私有圖數(shù)據(jù)的融合結(jié)果。全局圖數(shù)構(gòu)建模塊,配置為基于所述全局圖分片,構(gòu)建兩個(gè)數(shù)組和對(duì)應(yīng)的兩套索引數(shù)據(jù);其中第一數(shù)組包含b個(gè)第一元素,單個(gè)第一元素對(duì)應(yīng)所述全局圖分片中一行b個(gè)塊的數(shù)據(jù);第二數(shù)組包含b2個(gè)第二元素,其分別對(duì)應(yīng)所述全局圖分片中b2個(gè)塊的數(shù)據(jù)。
29、根據(jù)第四方面,提供一種基于隱私保護(hù)進(jìn)行圖查詢的裝置,集成于多個(gè)計(jì)算方中的任一計(jì)算方,其中維護(hù)基于第一方面提供的方法而構(gòu)建的兩個(gè)數(shù)組和對(duì)應(yīng)的兩套索引數(shù)據(jù);所述裝置包括:
30、目標(biāo)數(shù)組確定模塊,配置為根據(jù)從客戶端接收的圖查詢請(qǐng)求,從所述兩個(gè)數(shù)組中確定目標(biāo)數(shù)組;所述圖查詢請(qǐng)求包括目標(biāo)對(duì)象標(biāo)識(shí)在秘密分享下的對(duì)象標(biāo)識(shí)分片;其中目標(biāo)對(duì)象為節(jié)點(diǎn)或邊。第一mpc計(jì)算模塊,配置為基于所述對(duì)象標(biāo)識(shí)分片,以及所述目標(biāo)數(shù)組對(duì)應(yīng)的目標(biāo)索引數(shù)據(jù),通過與其他計(jì)算方聯(lián)合進(jìn)行第一mpc計(jì)算,定位到所述目標(biāo)數(shù)組的單個(gè)數(shù)組元素。第二mpc計(jì)算模塊,配置為基于所述對(duì)象標(biāo)識(shí)分片,以及所述單個(gè)數(shù)組元素包含的全局子圖分片,通過與其他計(jì)算方聯(lián)合進(jìn)行第二mpc計(jì)算,得到圖查詢結(jié)果的結(jié)果分片,用于提供給所述客戶端。
31、根據(jù)第五方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,當(dāng)該計(jì)算機(jī)程序在計(jì)算機(jī)中執(zhí)行時(shí),令計(jì)算機(jī)執(zhí)行第一方面或第二方面提供的方法。
32、根據(jù)第六方面,提供了一種計(jì)算設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器中存儲(chǔ)有可執(zhí)行代碼,該處理器執(zhí)行所述可執(zhí)行代碼時(shí),實(shí)現(xiàn)第一方面或第二方面提供的方法。
33、綜上,采用本說明書實(shí)施例披露的上述方法及裝置,支持任意數(shù)量的數(shù)據(jù)提供方進(jìn)行隱私保護(hù)的圖融合,同時(shí),對(duì)于任意一個(gè)關(guān)于點(diǎn)或關(guān)于邊的查詢,可以提取出對(duì)應(yīng)的子圖在上面進(jìn)行分析,進(jìn)而避免了全圖遍歷。進(jìn)一步,通過構(gòu)建圖原生的圖查詢引擎goram,也就是基于圖數(shù)據(jù)的特性進(jìn)行分塊的圖ram,可以進(jìn)一步提高獲取子圖的安全性同時(shí)可以保證查詢地高效性,實(shí)現(xiàn)實(shí)時(shí)的查詢響應(yīng)。