Protocol-Design

什麼加密系統允許 3 方:第 1 方提出斷言,第 2 方改變斷言,第 3 方驗證它

  • November 17, 2021

我正在尋找可以驗證發行人的駕駛執照的加密等效項,發行人不需要知道您向誰出示了駕駛執照,而且還允許每筆交易的隱私。

我會使用標準的 PKI 系統,但是每個證書中都有一個硬編碼的證書序列號,從而消除了隱私。為每個使用者頒發多個證書會增加我試圖避免的管理複雜性。我想利用 ECC(及相關)的數學特性來解決這個問題。這個問題的靈感來自於加/乘鍵的能力,讓我想知道如果每個鍵都用於獨立地對一個值進行簽名,可以做什麼。

心理上假設這種信任的私鑰安全地儲存在硬體(SIM、SmartCard 等)上,並且擁有私鑰就足夠了。

例如,假設 Alice 有一家銷售獨角獸毛衣的商店。Bob 想購買這件毛衣,但想匿名購買。Alice 要求 Bob 年滿 18 歲並擁有經過驗證的地址。

鮑勃不想讓任何人知道他喜歡獨角獸毛衣,除非在最可怕的情況下(或者查理要求愛麗絲提供交易發生的資訊)

Bob 與 Charlie 建立了預先存在的身份驗證設置。Alice 信任 Charlie,並將接受 Charlie 的 Bobs 年齡和居住地憑證。

鮑勃有以下目標:

  • 他不想讓查理知道他在愛麗絲的商店購物
  • 他不希望愛麗絲知道的比她需要的更多,或者能夠通過一個通用標識符推導出他的購物習慣

如果 Bob 要給 Alice 相當於他的數字駕駛執照,她將獲得比她需要的更多的資訊(駕駛員 ID、完整的生日、地址等)。Alice 需要的只是布爾值 isOlder than 18,他的地址,並讓 Charlie 驗證該斷言。

外行實施方法

我想到的一個想法是讓查理髮行許多簽名令牌,每個都證明一組關於鮑勃的不同資訊,並將它們放在智能卡上。每個令牌都有一個 ID,這對 Charlie 來說意味著什麼,但對 Alice 來說是隨機的。假設這些片段可以重新組合和驗證,Bob 可以挑選出他想告訴 Alice 的內容,重新組合併發送給她。

這種方法看起來很麻煩,並且可能會根據基於其實現方式的排列數量而呈指數級增長。還有隱私問題,因為如果令牌(帶有 tokenID)被另一個供應商重複使用,Bob 的購物習慣可能會被推導出來。最後,它可能允許 MITM 攻擊任何希望重複使用或將查理簽名的斷言轉發給不良行為者的人。

下一種方法是讓 Charlie 發行 N 個前一組令牌的副本。每個副本將包含每 N 個副本的匿名標識符。如果 Bob 希望進行 N+1 次交易,則必須重複使用其中一個令牌,從而降低他的匿名性。複雜性和尺寸要求也呈指數增長。

我開始探索使用通過將 ECC 密鑰相加或相乘的派生的可能性,以及是否可以使用獨立或組合使用的這些私鑰集來簽署聲明、驗證聲明或驗證簽署聲明的不同密鑰對。

然後我開始考慮同態加密,我的腦袋爆炸了。

問題

一旦 Bob 和 Charlie 建立了信任關係,Bob 有什麼方法可以安全地離線執行以下所有操作(結合 SmartCard 硬體)

  • Charlie 對 Bob 做了一個斷言(或聲明),Charlie 的聲明可以驗證它確實是由 Charlie 簽署的
  • Bob 有條件地將 Charlie 關於 Bob(年齡 > 21 | 地址 | 姓名 | 等)的斷言轉發給 Alice
  • Bob 更改斷言,以便 Alice 仍然可以讀取斷言的內容
  • Alice 可以讀取更改後的斷言,驗證它是由 Charlie 認證的,但無法推斷出任何有關 Bob 的資訊,即使在 Eve(隨機第三方)的合作下
  • 如果查理需要,查理可以通過簡單地查看對愛麗絲的斷言以及查理對鮑勃的了解來推斷鮑勃的身份

因此,從某種意義上說,我正在尋找一個基於 SAML/Claims 的離線交易,其中 Bob 的身份驗證通過智能卡中的加密材料進行。(這是一個不記名對象,不容易複製)

是否有任何加密解決方案可以幫助解決此問題?

您所描述的是一個匿名憑證系統。有兩種不同的方法來製作這些以及兩個使用這些技術的實際系統:Microsoft 的U-prove和 IBM 的Idemix

如果您對智能卡的使用感興趣,您可能更喜歡 U-prove,因為它往往更適用於智能卡。它的原始開發者 Stefan Brands 在本書中對其進行了描述。

我更熟悉的另一個系統是 Jan Camenisch 和 Anna Lysyanskaya 首次在此處描述的系統,儘管從那時起已經有了很大的改進。實際上,它的工作方式是 Bob 讓 Charlie 簽署類似“Bob (Age > 21 | Address | Name | etc.)”之類的東西。然後 Bob 可以向 Alice 證明 Charlie 簽署了一條消息,表明他的年齡 >21,而無需透露實際簽名或消息的其餘部分。Bob 使用零知識證明來做到這一點,該證明證明他在消息上有 Bob 的簽名,除了消息說他已經 21 歲以上之外沒有透露任何其他資訊。

這個基本思想的各種擴展允許全域撤銷(這是你描述的查理可以從交易中提取身份的地方)或本地的愛麗絲可以僅僅將提供 id 的人列入黑名單。

最近的工作甚至允許查理向鮑勃頒發憑證,然後鮑勃可以向其他人進行有限(或無限)的委託。

如果 Bob 和 Charlie 將共享一個秘密,那麼資訊論隱私可能

是可能的,否則可以期望的最好的就是計算匿名。

當 Bob 和 Charlie 共享一個秘密時,我還沒有想出任何方法來實現資訊論隱私

,所以我只會解決計算隱私問題。

我假設 Bob 可以在 Charlie 做出斷言之前生成一個密鑰對並發佈公鑰。

(愛麗絲是否知道鮑勃的公鑰並不重要。)

採用:

$ {} $ 1. $ : $ 公共參考字元串模型中的計算 NIZK 參數係統

$ {} $ 2. $ : $ 一種完備的基於標籤的CCA2公鑰加密方案

$ {} $ 3. $ : $ 標準簽名方案和一次性簽名方案

查理的公鑰是 $ : $ 誠實生成_CRS || public_encryption_key || signature_verification_key

Charlie 的私鑰是 $ : $ 解密密鑰 || 簽名

密鑰 Bob 的密鑰對用於簽名。

為了對 Bob 做出斷言,Charlie 發送

$$ assertion,sign([“Bob”,Bob’s_public_key,assertion $$)] $ : $ 給鮑勃。

我不明白您所說的“有條件地轉發”資產是什麼意思。 為了改變斷言,Bob:

生成一次性簽名密鑰對 $ :\langle vk\hspace{.01 in},\hspace{-0.01 in}sk\rangle $

用他的私鑰簽署 session_info

加密 $ : $

$$ assertion,sign([“Bob”,Bob’s_public_key,assertion $$),the_signature_just_generated]

使用 Charlie 的公共加密密鑰 $ : $ vk $ : $ 由於標籤

認為密文遵循上述描述並且 $ : $ 斷言 $ : $ 將更改後的斷言

標誌 session_info 與 $ : $ sk $ : $

並發送 $ : $ $$ session_info,one_time_signature,ciphertext,argument $$ $ : $ 給愛麗絲。 愛麗絲可以通過驗證參數來驗證查理證明了這一點。 $ : $ Alice 可以

通過驗證一次性簽名來驗證 Charlie 是否願意推斷 Bob 的身份。

由於 PKE 方案是基於標籤的 CCA2 安全且參數係統在計算上是

零知識,Alice 可以推斷出的關於 Bob 的唯一資訊是

$$ assertion,sign([“Bob”,Bob’s_public_key,assertion $$),the_signature_just_generated]) $ : $ .

查理可以通過解密發送給愛麗絲的密文來推斷鮑勃的身份,

儘管如果他沒有得到有效的相應一次性簽名,他就不應該這樣做。

如果之間的關係 $ : $ 斷言 $ : $ 並且 changed_assertion 的形式是“存在 $ w $ 這樣……”,

這樣的 $ w $ 即使存在也不一定很容易找到,Alice

想確定 Bob知道這樣一個 $ w $ (而不是僅僅知道

有一個),那麼 NIZK 系統需要是模擬聲音的。

(也就是說,它必須是這樣的,給定一個模擬 CRS 和

對任意陳述的模擬證明的訪問,仍然不可能提出一個不同的錯誤陳述的證明。) www.cs.ucl.ac.uk/staff/J.Groth/NIZKJournal.pdf 在(子組決策假設或)決策線性假設(後者)下構造 CRS 模型 NIZK 證明,希望適用於適當選擇的橢圓曲線。 $ : $ http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.3.7990

給出了一種使任何 NIZK 系統模擬聲音的通用方法,

可以用 $ : $ eprint.iacr.org/2009/486.pdf .

如果 Bob 在看到 Charlie 的公鑰後可以生成他的密鑰對,那麼您可能希望 Bob 的 密鑰

對用於標準簽名方案Fail-Stop 簽名方案,並將預密鑰作為 Charlie 公鑰的附加部分。 $ : $ 我相當有信心,在 ECDL 下,可以找到一系列

捆綁同態,這樣預密鑰測試不需要任何互動。 $ : $

(無論如何使用標準簽名方案 的原因 是查理得知鮑勃失去了他的簽名密鑰。)

引用自:https://crypto.stackexchange.com/questions/6669