本發(fā)明涉及數(shù)據(jù)共享應用中的數(shù)據(jù)混淆,且更具體地說,涉及混淆數(shù)據(jù)的方法,所述方法提供模糊數(shù)據(jù)中的抗碰撞性、不可改變性、計算有效性、抗共謀性和偽隨機性。
背景技術:
數(shù)據(jù)共享常見于科學研究以及企業(yè)中。電信業(yè)務提供商(telecommunicationserviceprovider,tsp)可以獲得如圖1的表1a到1b所陳列的用戶或訂戶信息。
電信業(yè)務提供商可能希望與他們的業(yè)務合作伙伴共享此信息,他們的業(yè)務伙伴可能希望評估某一位置(12,24)是否適用于建立美容商店。因此,電信業(yè)務提供商可以向合作伙伴提供表1a和1b,所述合作伙伴接著檢查所述位置周圍的人流量模型,特別是他們的目標客戶(例如,年輕女性)。然而,按照根據(jù)美國國家標準與技術研究所的us標準,移動號碼被認為是個人可識別信息(personallyidentifiableinformation,pii)。pii是指能夠就其本身而言或與其它信息一起用于識別、聯(lián)系或定位單個的人或在情境中識別個體的信息。pii可以被看作是關于由代理機構維護的個體的任何信息,包含(1)可以用來辨別或追蹤個體的身份的任何信息,例如姓名、社會保障號、出生日期和地點、母親的婚前姓,或生物標識記錄;以及(2)關聯(lián)到或可關聯(lián)到個體的任何其它信息,例如醫(yī)療、教育、財政和就業(yè)信息。
因此,直接共享來自表1a和1b的數(shù)據(jù)會危及所列用戶的隱私,從而可能導致犯罪。從表1a和1b中刪除移動號碼將解決隱私問題,但是不能提供有用的數(shù)據(jù),因為移動號碼是用作關聯(lián)這兩個表中的數(shù)據(jù)的主(關聯(lián))密鑰。因此,需要數(shù)據(jù)的混淆。
如果與不同合作伙伴共享的混淆數(shù)據(jù)相同,那么存在共謀攻擊的風險。圖2示出了分別與不同合作伙伴共享的表2a到2c。由于提供給不同合作伙伴的已加密移動號碼相同,因此合作伙伴可能共謀重建對于每個訂戶的幾乎完整的檔案袋,這將侵犯用戶隱私。
與數(shù)據(jù)混淆相關的現(xiàn)有方法在第us2008/0181396a1號美國專利申請公開案(巴拉克里希南(balakrishnan)等人)“使用實體檢測和替換的文本數(shù)據(jù)的數(shù)據(jù)混淆(dataobfuscationoftextdatausingentitydetectionandreplacement)”和第us2012/0303616a1號美國專利申請公開案(阿布爾薩德(abuelsaad)等人)“使用單向哈希的數(shù)據(jù)微擾和匿名化(dataperturbationandanonymizationusingonewayhash)”中進行了描述。雖然現(xiàn)有方案對于單次使用可以有效,但是當存在數(shù)百萬或甚至數(shù)十億行待混淆的數(shù)據(jù)的情況下現(xiàn)有方案將不會有效。在當今時代,在高速下產(chǎn)生高容量數(shù)據(jù),因此需要更有效的混淆方法。
技術實現(xiàn)要素:
本發(fā)明的實施例提供一種混淆數(shù)據(jù)的有效方法和系統(tǒng),其符合模糊數(shù)據(jù)中的其它安全需求,包含抗碰撞性、不可改變性、計算有效性、抗共謀性和偽隨機性。
根據(jù)本發(fā)明的一個實施例,提供一種混淆數(shù)據(jù)的方法。所述方法包括:
通過將單向壓縮函數(shù)應用于多個輔助輸入來產(chǎn)生多個隨機數(shù);以及
針對待混淆的每一行數(shù)據(jù),反復地:
根據(jù)待混淆的每一行數(shù)據(jù)構建多個數(shù)據(jù)塊,其中預先確定數(shù)據(jù)塊的數(shù)目;
產(chǎn)生點積,所述點積通過以下步驟獲得:通過將多個數(shù)據(jù)塊中的每一個數(shù)據(jù)塊乘以多個隨機數(shù)中的專屬的一個來產(chǎn)生多個乘積,并對所述多個乘積求和;以及
通過確定取模運算的余數(shù)來產(chǎn)生待混淆的每一行數(shù)據(jù)的混淆形式,使用點積作為被除數(shù)以及預先確定的整數(shù)作為除數(shù)來執(zhí)行確定取模運算的余數(shù)。
所述方法可以進一步包含:
在反復之前,確定整數(shù)值和待混淆的多行數(shù)據(jù);
使用1-e-l(l-1)/2q確定碰撞的概率,其中q是所確定的整數(shù),l是所確定的待混淆的數(shù)據(jù)的總行數(shù),且e是自然對數(shù)的已知底數(shù)(大約等于2.718281828);并且
如果所確定的碰撞概率超過第一預定閾值,調(diào)整整數(shù)值。
所述方法可以進一步包含:
確定不大于調(diào)整后的整數(shù)值的數(shù)據(jù)塊長;
基于針對大域的goldreich-levin定理,確定以任何隨機數(shù)辨別混淆形式的概率;以及
如果所確定的以任何隨機數(shù)辨別混淆形式的概率超過第二預定閾值,調(diào)整調(diào)整后的整數(shù)值和數(shù)據(jù)塊長。
根據(jù)本發(fā)明的一個實施例,提供一種混淆數(shù)據(jù)的系統(tǒng)。所述系統(tǒng)包括:
混淆模塊,其可通信地耦合到數(shù)據(jù)源和隨機化模塊,
其中所述隨機化模塊用于通過將單向壓縮函數(shù)應用于多個輔助輸入來產(chǎn)生多個隨機數(shù),
其中所述混淆模塊用于:
針對待混淆的每一行數(shù)據(jù),反復地:
根據(jù)待混淆的每一行數(shù)據(jù)構建多個數(shù)據(jù)塊,其中預先確定數(shù)據(jù)塊的數(shù)目;
產(chǎn)生點積,所述點積通過以下步驟獲得:通過將多個數(shù)據(jù)塊中的每一個數(shù)據(jù)塊乘以多個隨機數(shù)中的專屬的一個來產(chǎn)生多個乘積,并對所述多個乘積求和;以及
通過確定取模運算的余數(shù)來產(chǎn)生待混淆的每一行數(shù)據(jù)的混淆形式,使用點積作為被除數(shù)以及預先確定的整數(shù)值作為除數(shù)來執(zhí)行確定取模運算的余數(shù)。
在以上實施例中,對單向壓縮函數(shù)的多個輔助輸入可以包含以下中的至少一個:對混淆形式提供不可改變性的秘密密鑰、提供抗共謀性的數(shù)據(jù)合作伙伴標識符、提供靈活性的批次標識符以及對待混淆的每一行數(shù)據(jù)的隨后混淆提供不可關聯(lián)性的計數(shù)器。在以上實施例中,單向壓縮函數(shù)可以是密碼哈希函數(shù)和塊密碼中的一個。
附圖說明
下文參考圖式公開本發(fā)明的實施例,在圖式中:
圖1示出了表1a和1b,表1a和1b含有其中主(關聯(lián))密鑰是未混淆的移動號碼的訂戶數(shù)據(jù);
圖2示出了表2a到2c,表2a到2c待與不同合作伙伴共享并且含有其中主(關聯(lián))密鑰是混淆移動號碼的訂戶數(shù)據(jù);
圖3示出了用于執(zhí)行根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)混淆的流程次序;
圖4a示出了對一行原始數(shù)據(jù)的混淆程序的示意性圖示;
圖4b示出了對多行原始數(shù)據(jù)的混淆程序的示意性圖示;
圖5是根據(jù)本發(fā)明的一個實施例的用于數(shù)據(jù)混淆的系統(tǒng)的示意性圖示。
具體實施方式
下文描述中陳述許多具體細節(jié),以對本發(fā)明各實施例進行通徹理解。然而,本領域熟練技術人員將理解,可以在不具有這些具體細節(jié)中的一些或全部的情況下實踐本發(fā)明的實施例。在其它情況下,為了不多余地混淆所描述的實施例的相關方面,并未詳細地描述熟知的處理操作。在圖式中,所有的幾張圖以相同參考標號指代相同或相似的功能或特征。
參考圖3的流程次序300以及圖4a和4b中的示意性圖示描述一種混淆數(shù)據(jù)的方法。
在方塊302中,如下通過數(shù)據(jù)責任人確定或選擇用于混淆所需的各種參數(shù):
選擇單向壓縮函數(shù)f。例如,可以選擇以密碼方式安全哈希函數(shù),例如安全哈希算法sha-256、sha-1、md5。替代地,可以選擇塊密碼,例如高級加密標準(advancedencryptionstandard,aes)。
選擇大整數(shù)q。大整數(shù)q可以是具有64比特的素數(shù)。應基于待混淆的數(shù)據(jù)的總行數(shù)l和所需抗碰撞級別選擇q的值??梢酝ㄟ^下式計算出碰撞的概率,即尋找映射到一個混淆數(shù)據(jù)的任何兩個原始數(shù)據(jù)的概率:
1-e-l(l-1)/2q
其中e是自然對數(shù)的已知底數(shù)(e=2.718281828…)。此界定被稱為一般化生日問題。整數(shù)q應足夠大以確保足夠小的計算得出的概率或確保計算得出的碰撞概率小于預定閾值。
選擇隨機或秘密密鑰k。所選密鑰應至少是128比特。選擇數(shù)目n,其對應于待混淆的一行數(shù)據(jù)被分成的數(shù)據(jù)塊的總數(shù)目。高的n值將使安全級提高,但是也將增加計算時間。因此,存在計算有效性與安全性之間的權衡。因此,不同用戶應基于用戶的實際系統(tǒng)來選擇n的值。
在方塊304中,通過將單向壓縮函數(shù)應用于多個輔助輸入來產(chǎn)生多個隨機數(shù)。多個輔助輸入可以至少包含對混淆數(shù)據(jù)提供不可改變性的秘密密鑰k(如在方塊302中所確定),以及提供抗共謀性的合作伙伴標識符pid(即,識別將接收混淆數(shù)據(jù)的合作伙伴)。基于輔助輸入,將f(輔助輸入)計算為多個隨機數(shù)r1、r2、…、rn。圖4a示出了多個隨機數(shù)r1、r2、…、rn。
在圖3的方塊306中,對于一行原始或未混淆數(shù)據(jù)m(具有c比特),根據(jù)所述行數(shù)據(jù)m構建各自具有比特串長h的多個較小的數(shù)據(jù)塊s1、s2、…、sn。將所述行數(shù)據(jù)分成n塊,其中n是在方塊302中所確定。圖4a示出了多個數(shù)據(jù)塊s1、s2、…、sn。
構建較小數(shù)據(jù)塊的一種可能方式是將m的第一h比特設置為s1,將m的第二h比特設置為s2,…,將m的第(n-1)h比特設置為sn-1,并且使m的剩余比特以零填補以形成h比特的串sn。
隨后,基于
在方塊308中,產(chǎn)生點積,所述點積通過以下步驟獲得:通過將多個數(shù)據(jù)塊中的每一個數(shù)據(jù)塊乘以多個隨機數(shù)中的專屬的一個來產(chǎn)生多個乘積,并對所述多個乘積求和。例如,將第i位置處的數(shù)據(jù)塊乘以第i位置的隨機數(shù)。在將數(shù)據(jù)塊和隨機數(shù)的對相乘之后,對自其所得的多個乘積求和或相加。
在方塊310中,通過確定取模運算的余數(shù)來產(chǎn)生所述行數(shù)據(jù)m的混淆形式,使用在方塊308中所產(chǎn)生的點積作為被除數(shù)以及預先確定的整數(shù)值q作為除數(shù)來執(zhí)行確定取模運算的余數(shù)。接著可將混淆形式存儲在另一表或數(shù)據(jù)庫中。
在方塊312中,流程次序檢查是否有待混淆的另一行數(shù)據(jù)。如果沒有待混淆的另一行數(shù)據(jù),流程次序前進到方塊314中的結束。如果存在待混淆的另一行數(shù)據(jù),對下一行數(shù)據(jù)重復方塊306到310。
執(zhí)行方塊306到312的反復直到混淆了所有指定行數(shù)據(jù)。應了解,同一批次內(nèi)的每一行數(shù)據(jù)的混淆包括重復使用在方塊304中確定的多個隨機數(shù)。
圖4b是對于多行數(shù)據(jù)m1、m2、…、ml的混淆程序的示意性圖示。如圖4b中所示以及上文所示,基于所選壓縮函數(shù)和接收到的輔助輸入產(chǎn)生多個隨機數(shù)。對于待混淆的每一行數(shù)據(jù),在每次產(chǎn)生點積時應用相同多個隨機數(shù),并且根據(jù)其結果執(zhí)行取模運算。因此,反復地,個別地產(chǎn)生每一行數(shù)據(jù)的混淆形式,并且可以將所述混淆形式輸出到混淆數(shù)據(jù)的表或數(shù)據(jù)庫。
在上述流程次序中,對單向壓縮函數(shù)的輔助輸入可以至少包含秘密密鑰k和合作伙伴標識符pid。在某些其它實施例中,輔助輸入可以另外包含批次標識符bid和計數(shù)器中的至少一個。
參考圖3的流程次序300描述的以上程序可以作為程序指令提供。因此,在本發(fā)明的一個實施例中,提供一種計算機程序產(chǎn)品,其包括非暫時性計算機可讀介質(zhì),所述非暫時性計算機可讀介質(zhì)包括計算機可讀程序,其中所述計算機可讀程序當由計算機上的微處理器執(zhí)行時致使計算機執(zhí)行參考圖3的流程次序300描述的程序。
圖5是用于數(shù)據(jù)混淆的系統(tǒng)的示意性圖示,所述系統(tǒng)可以并入計算系統(tǒng)中。所述用于數(shù)據(jù)混淆的系統(tǒng)包括可通信地耦合到數(shù)據(jù)源和隨機化模塊的混淆模塊,其中數(shù)據(jù)源和/或隨機化模塊可以位于混淆模塊本地或遠程。
隨機化模塊用于通過將單向壓縮函數(shù)應用于多個輔助輸入來產(chǎn)生多個隨機數(shù)r1…rn,所述多個輔助輸入可以至少包含秘密密鑰k和數(shù)據(jù)合作伙伴標識符pid。混淆模塊用于:針對待混淆的每一行數(shù)據(jù)m,反復地:根據(jù)待混淆的每一行數(shù)據(jù)構建多個數(shù)據(jù)塊s1…sn,其中預先確定數(shù)據(jù)塊的數(shù)目n;產(chǎn)生點積,所述點積通過以下步驟獲得:通過將多個數(shù)據(jù)塊中的每一個數(shù)據(jù)塊乘以多個隨機數(shù)中的專屬的一個來產(chǎn)生多個乘積,并對所述多個乘積求和;以及通過確定取模運算的余數(shù)來產(chǎn)生待混淆的每一行數(shù)據(jù)的混淆形式,使用點積作為被除數(shù)以及預先確定的整數(shù)值作為除數(shù)來執(zhí)行確定取模運算的余數(shù)。
混淆模塊進一步用于:在反復之前,確定整數(shù)值和待混淆的多行數(shù)據(jù);使用1-e-l(l-1)/2q確定碰撞的概率,其中q是所確定的整數(shù),l是所確定的待混淆的數(shù)據(jù)的總行數(shù),且e是自然對數(shù)的已知底數(shù)(大約等于2.718281828);并且如果所確定的碰撞概率超過第一預定閾值,調(diào)整整數(shù)值。
混淆模塊進一步用于:確定不大于調(diào)整后整數(shù)值的數(shù)據(jù)塊長h;基于針對大域的goldreich-levin定理,確定以任何隨機數(shù)辨別混淆形式的概率;以及如果所確定以任何隨機數(shù)辨別混淆形式的概率超過第二預定閾值,進一步調(diào)整調(diào)整后的整數(shù)值和數(shù)據(jù)塊長h。
應用1:原始數(shù)據(jù)m是128比特的密文
使用與圖2的表2a到2c相關的上述實例,電信業(yè)務提供商(數(shù)據(jù)責任人)想要與合作伙伴共享其訂戶的gps位置,因此,采用本公開內(nèi)容的發(fā)明來混淆表2a到2c的已加密移動號碼(其是主密鑰)。
在本申請中,適用可能的最有效的實施方案。參數(shù)確定如下:c=128,n=2,h=64,q=264。數(shù)據(jù)責任人選擇128比特秘密密鑰k和壓縮函數(shù)f作為sha256哈希函數(shù)。
可以如下所示執(zhí)行混淆程序:
(1)將隨機數(shù)計算為兩個64比特數(shù)(r1,r2)=f(k,pid,bid)。
(2)對于每一行數(shù)據(jù):
a.將已加密移動號碼mi的第i行分成兩個64比特數(shù)(ai,bi)。
b.輸出hi=r1*ai+r2*bimodq。
應注意在本申請中,原始數(shù)據(jù)是密文。對于有效實施方案,應基本上均勻地分布原始數(shù)據(jù)。安全密文的分布符合安全需求。
應用2:原始數(shù)據(jù)m具有至少148比特熵。
在本申請中,原始數(shù)據(jù)m是任意(已加密或未加密)消息。為了確?;煜敵龅牟豢深A測,原始數(shù)據(jù)m應具有至少148比特的熵。
例如,在電子郵件業(yè)務提供商的用戶姓名的數(shù)據(jù)庫中,電子郵件地址具有用戶名@域名(username@domain)的格式,其中用戶名m可以長達64個字符。允許的用戶名至少包含52個大寫和小寫英文字母、10個數(shù)字和20個特殊字符(對于英文電子郵件地址)。因此,可能的用戶名數(shù)目將為(52+10+20)64=2406。如果用戶名的平均長度超過23,用戶名將具有超過148比特的熵。如果電子郵件業(yè)務提供商想要共享存儲于數(shù)據(jù)庫中的若干表中的信息,其中表的主密鑰是電子郵件地址,電子郵件業(yè)務提供商可以執(zhí)行混淆程序如下所示:
(1)如在方塊302中計算素數(shù)q的最小可接受值。此處,假設如從塊302所確定的q=128。
(2)選擇小于或等于q的值h。如在方塊306中將原始數(shù)據(jù)m分成具有如(s1,…,sn)的長h的比特串的n塊。在此實例中每個字符通常以8比特存儲,這意味著m具有512比特。此處,假設h=16,并且n=512/16=32。
(3)根據(jù)針對大域的以下goldreich-levin定理(葉夫根尼·多迪(yevgeniydodis)、沙菲·戈德瓦塞爾(shafigoldwasser)、雅艾爾·萊(yaelkalai)、克里斯·佩克特(chrispeikert)和維諾德·瓦伊昆塔南森(vinodvaikuntanathan),具有輔助輸入的公開密鑰加密方案(public-keyencryptionschemeswithauxiliaryinputs),tcc網(wǎng)頁361-381,2010年)計算概率ε。
定理1:假設q是質(zhì)數(shù)并且假設h是gf(q)的任意子集。假設f:hn{0,1}*是任何(可能隨機的)函數(shù)。如果存在在時間t運行的標識d使得
|pr[s←hn,y←f(s),r←gf(q)n:d(y,r,<r,s>)=1]
-pr[s←hn,y←f(s),r←gf(q)n,u←gf(q)n:d(y,r,u)=1]|=ε
將存在在以下時間運行的逆變器a
t'=t·poly(n,|h|,1/ε)
因此
根據(jù)此定理應用上述參數(shù),將確定
(4)如果以隨機數(shù)辨別混淆輸出的此概率ε太大,那么可以選擇更大的h(對應于更小的n)并且可以重新考慮q的值。(更大的q允許更小的n,但是其使ε更大)?;趆和q的調(diào)整后的值,根據(jù)針對大域的goldreich-levin定理重復以上概率分析。
(5)一旦設置了參數(shù),就可以如方塊306到312中所描述的執(zhí)行混淆程序。
在本發(fā)明的實施例中,用于混淆l行數(shù)據(jù)的計算開銷,即用于混淆m1、…、ml的計算開銷包括用以產(chǎn)生隨機數(shù)的壓縮函數(shù)的計算(例如,哈希計算)、n倍乘法和(n-1)倍加法模數(shù)q。因此,本發(fā)明提供一種有效的混淆方法,其允許將計算得出的壓縮函數(shù)(隨機數(shù))重復用于數(shù)據(jù)混淆的每一次反復。
本發(fā)明還符合其它安全需求,尤其是:
·正確性/抗碰撞性:一個原始數(shù)據(jù)應始終對應于一個混淆數(shù)據(jù),具有絕對概率。在安全壓縮函數(shù)(例如,密碼哈希函數(shù))和整數(shù)q較大的情況下,這在本發(fā)明中是可能的。此外,當選擇參數(shù)時可以確定碰撞的概率的可接受性。
·不可改變性:給定混淆數(shù)據(jù),在使用密碼哈希函數(shù)和秘密密鑰的情況下在計算上將很難恢復原始數(shù)據(jù)。例如,如果待混淆的數(shù)據(jù)是移動電話號碼并且未使用秘密密鑰作為輔助輸入,攻擊者將更容易根據(jù)混淆數(shù)據(jù)推斷原始數(shù)據(jù)。然而,如果使用通常為大數(shù)目并且僅數(shù)據(jù)責任人知道的秘密密鑰,攻擊者將不得不推斷秘密密鑰來對混淆數(shù)據(jù)執(zhí)行任何攻擊。因此,秘密密鑰用作輔助輸入將提供并促進對混淆形式/數(shù)據(jù)的不可改變性。
·有效性:混淆方法應是有效的。由于隨機數(shù)可以重復用于相同批次中的其它行數(shù)據(jù),因此這在本發(fā)明中是可能的。因此,計算開銷包括壓縮函數(shù)的計算(例如,哈希計算)、n倍乘法和(n-1)倍加法模數(shù)q。
·抗共謀性:如果數(shù)據(jù)共享到不同合作伙伴,不同合作伙伴獲得的混淆數(shù)據(jù)應不相同。在安全壓縮函數(shù)(例如,密碼哈希函數(shù))和攻擊者獲得的h值的數(shù)<(l+p)n-1的情況下,其中p是不同合作伙伴的數(shù)目,這在本發(fā)明中是可能的。這些h值表示使用與p個合作伙伴共享的相同組原始數(shù)據(jù)m1、m2、...ml計算得出的輸出h1、h2、...hl的總數(shù)目。此外,如果數(shù)據(jù)合作伙伴標識符指定為用于產(chǎn)生隨機數(shù)的輸入中的一個,混淆數(shù)據(jù)將是抗共謀性的。
靈活性:如果針對相同合作伙伴分批地共享數(shù)據(jù),取決于應用,以不同批次獲得的混淆數(shù)據(jù)可以相同或不同。參考圖2的表2a,例如,數(shù)據(jù)合作伙伴可能希望對某一時間某一位置處的人數(shù)進行計數(shù),或追蹤所述區(qū)域中人的移動。在前一應用中,第二批次的混淆數(shù)據(jù)應含有以與第一批次不同的方式混淆的移動號碼以確保更高用戶隱私。在后一應用中,第二批次的混淆數(shù)據(jù)應含有以與第一批次相同的方式混淆的移動號碼。在本發(fā)明中,如果批次標識符指定為用于產(chǎn)生隨機數(shù)的輔助輸入中的一個,以不同批次獲得的混淆數(shù)據(jù)可以不同,由此提供在需要時改變混淆數(shù)據(jù)的靈活性。此外,在將至少兩次或更多次地對相同組原始數(shù)據(jù)m執(zhí)行混淆的某些應用中,輔助輸入可以包含在相同組原始數(shù)據(jù)的每次隨后的混淆之后遞增的計數(shù)器。因此,一組原始數(shù)據(jù)m的第一混淆數(shù)據(jù)將隨著相同組原始數(shù)據(jù)m的每次隨后的混淆而不同。通過簡單地檢查不同混淆數(shù)據(jù),攻擊者將不能夠確定對相同組原始數(shù)據(jù)的關聯(lián)性。因此,使用計數(shù)器作為輔助輸入提供了對相同原始數(shù)據(jù)的隨后混淆的不可關聯(lián)性。本領域的技術人員根據(jù)對本說明書的考量和對實施例的實踐將清楚其它實施例。此外,出于描述明確性的目的使用了某些術語且這些術語不會限制本發(fā)明的所公開實施例。上文描述的實施例和特征應視為示例性的。