2009-08-26 30 views
4

Alice &鮑勃是祕密的四人代理人,他們可能在美國,俄羅斯或中國工作。他們想要制定一個計劃:驗證祕密的等價性

  1. 如果他們都是爲同一方工作,請相互證明以便他們可以自由交談。

  2. 如果他們正在爲不同的方面工作,不暴露他們在哪一邊的任何額外的信息。

哦,並且由於他們所做的事情很敏感,沒有可以爲他們做比較的可信第三方。

什麼協議能夠滿足這兩個需求?

理想情況下,任何協議也可以推廣到多個參與者和多個國家,但這不是必需的。

我困惑過了一段時間,我無法找到一個滿意的解決方案,這主要是由於條件2

編輯:下面是促使我尋找一個解決原來的問題。 「查理」有一些他與我分享的個人照片,我後來發現他也與「鮑勃」分享了他們。我們都想知道我們是否有相同的照片,但同時,如果查理沒有與我們任何一個人分享某張照片,他可能有一個很好的理由不會泄漏,我們也不想泄漏信息。

我的第一個想法是我們每個人都連接所有的照片,並提供MD5總和。如果他們匹配,那麼我們有相同的照片,但如果他們沒有,那麼任何一方都不知道對方有哪些照片。不過,我很快意識到這個方案仍然會泄漏信息,因爲鮑勃可以爲每張照片的子集生成MD5,如果其中任何一張匹配了我的總和,他就會知道我沒有的照片。我還沒有找到一個令人滿意的解決方案來解決這個問題,但我想我會推廣它,以避免人們關注我的具體情況。

+0

啊。相反,我們專注於你提出的問題的細節。 :-) – Omniwombat 2009-08-26 23:34:46

回答

1

對於這兩個問題,您可以使用Secure two-party computation等效算法。有很多方案,例如Damgard,Fitzi,K​​iltz,Nielsen和Toft的方案:Unconditionally Secure Constant Round Multi-Party Computation for Equality, Comparison, Bits and Exponentiation

當然,代理人可以嘗試從另一方冒充代理人,以獲得1/3機會來發現另一代理人的真實面,但這似乎是不可避免的。

一個更簡單的照片的問題,這應該是幾乎一樣的安全多方計算好方案,如下:

  1. Alice和Bob排序他們的照片,並生成一個SHA-512散列。
  2. Alice將她的散列的第一位發送給Bob。
  3. Bob將該位與他的散列的第一位進行比較。如果不同,他們知道他們收到了不同的照片。否則,他們繼續。
  4. Bob將他的散列的第二位發送給Alice。
  5. Alice檢查這一點並決定是否繼續。
  6. 繼續,直到協議中止或檢查所有位。
-1

RSA不在這裏工作嗎?每個國家都知道自己的私鑰,發佈公鑰,只有相同的國家才能解密信息。然而,我想第二個人會知道,第一個人不是和他們在同一方。

嗯。

+1

每個間諜是一個四重代理人,因此它知道每個國家的私鑰。 – Shalmanese 2009-08-26 22:59:19

+1

也許這裏的關鍵是我們不需要建立任何東西,只需握手即可。事實上,這不需要大量的數據傳輸。 – 2009-08-26 23:04:57

+2

如果間諜知道他們不應該知道的私鑰,他們不再是私人的,因此這個問題是不可能的。 – Kristoffon 2009-08-26 23:07:46

1

所以他們保證是四倍代理?那就是他們保證祕密爲一個派別工作,而假裝工作一秒鐘,假裝工作三分之一,假裝工作四分之一?它們僅限於美國,俄羅斯或中國?如果是這樣的話,那意味着至少會有一個派系假裝爲同事工作。這似乎否定了他們成爲四人代理人的能力,因爲他們當中有一個不能爲美國人工作,同時暗中爲美國人工作,同時爲美國人祕密工作,同時爲美國人祕密工作。

你說理想的解決方案會推廣到任意數量的狀態和間諜堆棧。特務的程度可以高於,等於或低於州的數量?這可能很重要。另外,愛麗絲是否總是保證與鮑勃具有相同的代理人水平?即他們總是會成爲三重代理人,或總是由五元代理人?模數操作員想起...

更多詳情請。

作爲一個潛在的答案,你可以枚舉狀態到一個位域。美國= 1俄羅斯= 2,中國= 4,馬達加斯加= 8,圖瓦= 16等。構建一個基本上是與門的設備。愛麗絲建造並帶來一半,鮑勃建立並帶來另一半。用布分開,每按一下他們真正爲之工作的狀態的按鈕。如果與門的輸出高,那麼它們在同一側。如果沒有,那麼他們就悄悄地取下布,然後與他們的機器的兩半分開,以便不能通過指紋確定按鈕。

這不是理論性的或嚴謹的,而是實用的。

+0

假設愛麗絲忠於美國人。美國僱用她爲俄羅斯間諜機構中的一名mole which,僱用她成爲中國僱用她來窺探美國人的mole子手。這樣,她可以留在家中,同時提供有關中國和俄羅斯的美國情報。 – Shalmanese 2009-08-26 23:09:22

+0

如何阻止Bob構建惡意的AND門? – Shalmanese 2009-08-26 23:30:13

+0

他不提供AND門。他只是將他的統計員/電線即將送入與門。如果他錯了,那麼他肯定會得到錯誤的答案,只能責怪自己。無可否認,你確實說過沒有可信任的第三方,並且所描述的AND門將算作一個。它們非常簡單,以至於驗證其正常工作是微不足道的。 – Omniwombat 2009-08-26 23:39:56

0

有趣。

我認爲,不管是什麼方案,它都需要涉及一個隨機失敗的組件。這是因爲相互矛盾的要求。你需要一個計劃,即使他們在同一方面,偶爾也是行不通的。因爲如果它一直有效,他們會立即能夠確定它們不在同一側。

你的觀點'B'也含糊不清。你說你不想公開他們在哪一方。這是否意味着信息不能指向具體是其中一方?如果愛麗絲認爲鮑勃來自其中一人,這可以嗎?

另外,你有沒有嘗試過發郵件給cryptography mailing list?可能會在那裏得到更好的迴應。這是一個有趣的思考:)

+0

我的意思是說,如果鮑勃是美國人,那麼在交換後,P(愛麗絲是美國人)= 0,P(愛麗絲是中國人)= 0.5,P(愛麗絲是俄羅斯人)= 0.5 – Shalmanese 2009-08-26 23:29:06

+0

我認爲你的鏈接爲加密郵件列表陳舊。 – 2009-08-28 06:00:06

+0

e5:沒有內容,但我認爲郵寄地址仍然很好?我還沒有嘗試訂閱自己,因爲我已經在它:) – 2009-08-28 06:04:13

0

這裏是我來解決最靠近:

假設有一個函數doubleHash這樣

doubleHash(a+doubleHash(b)) == doubleHash(b+doubleHash(a))

愛麗絲生成一個62位祕密並將2位國家代碼附加到它的末尾,將其哈希並給出Bob doubleHash(a)。

Bob做同樣的事情,並給予愛麗絲doubleHash(b)。

Alice將原始祕密附加到Bob給予她的散列上,將其散列並將其發佈爲doubleHash(a + doubleHash(b))。

Bob做同樣的事情,併發布doubleHash(b + doubleHash(a))。

如果兩個哈希匹配,那麼它們來自同一個國家。另一方面,如果它們不匹配,那麼Bob就不能解密哈希,因爲他不知道Alice的祕密,反之亦然。

但是,這樣的方案依賴於doubleHash函數的存在,我不確定這樣的事情是否可能。

+2

這裏的問題當然是,他們都知道所有國家代碼的密碼,並且可以模擬他們想要的4箇中的哪一個。因此,他們有25%的機會計算猜測對手是什麼(假設反對派發送真實的散列),然後僞造關鍵字,而當對手相匹配時,你知道他們是什麼,但沒有真實地公開自己。 – 2009-08-27 00:55:46

+0

2)我們假設間諜通過建立成功的溝通來激發對方的關係。提供隨機猜測給予三分之一的機會獲得加入權,但也有三分之一的機會錯過了溝通機會 – Shalmanese 2009-08-28 15:46:43

+0

@Shalmanese:如果他們可以信任而不會攻擊系統,讓他們宣佈他們的工作方式因爲如果他們不是爲同一方工作,那麼他們會忘記這些信息。安全只在他們不能被信任時才重要,或者夏娃偷偷地觀看/操縱通信。 – 2009-08-28 16:55:40

1

對於你的照片問題,爲你的照片的所有子集創建散列;隨機選擇其中的一個子集,並隨機生成一定數量的散列值進行混洗。鮑勃也是這樣做的,你們交換了這些集合。如果Bob向您發送的哈希值與您通過散列照片子集生成的哈希值相比所產生的哈希值的比例與您的期望值顯着不同,那麼很可能您的照片語料庫與他的顯着不同。如果您認爲隨機哈希的比例很高,那麼您可能無法檢測到您的照片集中的細微差異;如果比例較低,則可能會泄露有關丟失照片的信息;你將不得不爲折衷選擇一個合適的點。

+1

我認爲你在這個答案中展示的是一個零知識證明。這就是你需要實施的理論來找出照片問題。 http://en.wikipedia.org/wiki/Zero-knowledge_proof – 2009-08-27 00:28:31

+1

我不認爲你的解決方案是正確的,問題表明雙方都不知道對方有什麼照片。您的解決方案泄露了雙方共享的照片。 此外,如果查理在說謊,他可以打破整個協議,因爲他提供了所有僞造的md5校驗和。或假md5檢查總和的一些子集。 – 2009-08-28 05:19:17

0

最簡單的事情,我能想到的與將可能的工作是這樣的照片:

  1. 哈希所有的照片,和4096位散列。
  2. 按照散列值對照片進行排序。 (哈希是最後一個,只是一個大數字的字符串表示)
  3. 使用該排序順序,使用流式系統對這些照片進行管道和散列,就好像它們是單個文件一樣。
  4. 分享你的哈希。
  5. 如果哈希匹配,則具有相同的文件。 (不正確的正匹配的低風險低,但在4K散列,它有點不太可能)

有當然,也有一些不足的位置:

  1. 不要共享你有多少張照片有。這樣做可以允許擁有更多照片的派對對數據進行智能排列,並從他們懷疑可能沒有的散列集合中刪除照片,並以數字作爲指導,並找到(以極大的計算開支爲代價)一組與您的散列匹配的圖像。
  2. 他們可以在沒有數字的情況下做1,但更難,而且如果他們實際上沒有照片,他們就會走運。
  3. 他們可以使用隨機數字生成器創建一個假哈希,並將其發送給您,當您擁有相同的數據時,給您的印象是您擁有不同的數據集。

上述弱點也是在你的國家代碼識別系統普遍,當然除了,你有少熵的方式來獲得,其容易欺騙系統。 (因此,通過純粹的暴力來弄清楚他們是誰,或者通過暴力破解你自己,無論你的散列算法有多麼華麗) 如果情況並非如此,那麼你應該已經通過你工作的機構發現,因爲可靠和安全的東西將會是一種安全的背景檢查方式。

+1

如果鮑勃有一套查理擁有的超級照片。鮑勃可以嘗試不同的照片組合,直到他找到查理擁有的子集。對於少量照片,這是一個非常小的數字。 – 2009-08-28 06:01:00

+0

@ e5,是的,我完全同意,但我主要指出,如果鮑勃有一些想法可以禁止查看查理,那麼就會有輕微的戰略弱點。但是如果沒有戰略上的弱點,每次迭代都需要大量的計算來找到哈希,這將大大限制任何人使用暴力排列的解決能力,除非他們擁有非常快的處理器或者大量的空閒時間。然而,這個國家的代碼,任何一臺現代計算機都可能在一秒之內破解。 – 2009-08-28 17:23:09

0

的照片場景是不可能實現的:

你的方案爲您命名的原因是不可能的。

考慮一個函數f,它需要兩組照片s1和s2。 如果s1 = s2,則f(s1,s2)返回true,如果s1!= s2則返回false。 也就是說,這個函數實現你想要的方案。

鮑勃可以隨時提供他擁有的照片的子集,並瞭解哪張照片的查理沒有。 沒有辦法解決這個問題,任何擁有你想要的屬性的函數都不能擁有你想要的安全性。

間諜情景更是不可能的:

由於Kent Fredric指出間諜方案具有更大的固有缺陷。 它具有照片場景中的所有問題,加上只有四個祕密的額外弱點。

在照片場景中,Bob很可能會隨機猜測Charlies照片中的一張。 Bob在間諜場景中猜測Alices選擇(1/4)是微不足道的。 間諜只有四個他們可以屬於的國家,因爲他們都是四個代理人,他們都知道每個國家的所有密碼字。因此,鮑勃可以假裝爲中國人工作來測試愛麗絲。

不同類型的解決方案:

一些海報已經注意到,能夠實現安全性,如果你減弱f的精度提高。 當然,如果不準確的話是什麼意思。我提出了一種不同類型的解決方案。

  • 不要讓它們多次比較相同的 照片。

希望開始比較的一方必須首先證明這是一個新的比較,並且不使用之前的任何圖片。

編輯:問題與雙哈希

我提出有關doublhash協議的一些假設,但...

  1. 對於照片方案中,doublehash協議不大於f好,因爲62位密碼必須由一組照片構成,以便進行比較以獲得有意義的結果。原始問題中提到的子集攻擊在這裏仍然適用。嘗試使用所有照片的子集來暴力化你可以產生的祕密,因此鮑勃可以看到他是否能夠產生與艾麗絲相同的祕密。

使用doublehash屬性Bob仍然可以暴力破解這個祕密。

doubleHash(s1+doubleHash(b)) != doubleHash(aliceSecret+doubleHash(a)) 

doubleHash(s2+doubleHash(b)) != doubleHash(aliceSecret+doubleHash(a)) 

doubleHash(s3+doubleHash(b)) == doubleHash(aliceSecret+doubleHash(a)) 

賓果,aliceSecret == s3。

DoubleHash是僅作爲強,因爲它是難以暴力破解A或B

Implementating DoubleHash

相反doubleHash(A + doubleHash(b)中),試圖doubleHash(一個,MD5(二))。 DoubleHash(A + doubleHash(B))是不好的,因爲鮑勃可能產生衝突的哈希值,像這樣:

doubleHash((12 + doubleHash(34)) + doubleHash(5678)) 
= doubleHash((34 + doubleHash(12)) + doubleHash(5678)) 
= doubleHash(5678 + doubleHash(12 + doubleHash(34)) 
= doubleHash(5678 + doubleHash(34 + doubleHash(12)) 

下面是使用新配方doubleHash的實現,

Doublehash(a, hashOfB){ 
    hashOfA = md5(a) 
    combinedHash = hashOfA xor hashOfB 
    return md5(combinedHash) 
} 

人們還可以使用在blind signatures之後的數學暗示doubleHash的版本。

+0

1)照片場景不是不可能的,儘管它看起來乍一看。我已經展示了一個使用doubleHash函數的安全理論版本,該函數要求Bob驗證Alice提交的每個猜測,反之亦然,以防止暴力破解答案。 2)我們假設間諜通過建立成功的溝通來激發對方的關係。提供隨機猜測給予1/3的獲得歸屬權的機會,但也有1/3的機會錯過了溝通機會。 – Shalmanese 2009-08-28 15:42:59

+0

1)鮑勃總是可以隱藏來自任何方案的照片的一個子集,如果它說他的子集和charlies集合是平等的,他會學到他不應該做的事情。如果系統正常工作,鮑勃可以學習他不應該做的事情。這是沒有辦法的。 – 2009-08-28 18:13:02

+0

e5:62位祕密是一個隨機數,與其他任何東西都沒有關係,大概不會受到蠻力的影響(比特長度可以增加,直到暴力是不可能的)。 要生成所有子集是不可能的,因爲要進行比較,Bob必須首先將比較傳遞給Alice再次進行散列。 Alice可以拒絕散列任何看起來像是明顯的強力攻擊的東西。 – Shalmanese 2009-08-28 18:25:37