與 RSA 共享盲因子的協議
當 RSA 應用密鑰致盲時,選擇致盲因子的協議是什麼?
(相關問題:如何在 RSA 盲簽名算法中找到盲因子 R?)
- 由於應該隨機選擇致盲因子 R,誰可以控制如何選擇 R - 客戶端(公鑰使用者)或伺服器(私鑰使用者)?如果客戶端可以控制選擇,則客戶端每次都可以拒絕相同的 R 值,從而破壞選擇隨機 R 的目的。
- 鑑於 R 必須是每個加密/解密操作的共享值(類似於對稱密碼的 IV 參數),哪些協議支持傳輸致盲因子?
首先,您首先需要了解密鑰致盲的意義。
首先,你有一個伺服器(他有一個私鑰,並且願意解密消息),你有一個客戶端(他有一個他想要解密的值,但不願意告訴伺服器那個值是什麼)。客戶端可能不想告訴伺服器該值是什麼以保持匿名性(例如,Chaum 的 ecoin 想法,它使用與簽名類似的想法),或者可能是因為他擔心伺服器可能會洩漏該資訊(例如,通過側面-渠道)。
所以,客戶端所做的是選擇一個隨機值 $ R $ (並將其留給自己);加密的消息 $ C $ , 併計算 $ R^e \cdot C \bmod N $ (在哪裡 $ e, N $ 來自伺服器的公鑰);然後我們要求伺服器對其進行 RSA 解密。
然後,伺服器計算 $ (R^e \cdot C)^d \bmod N = R \cdot C^d \bmod N $ ( $ d $ 是伺服器的私鑰),並將其發送回客戶端。
然後,客戶端計算 $ R^{-1} \bmod N $ , 接著 $ R^{-1} \cdot (R \cdot C^d) = C^d $ ,這是解密(填充)的消息 $ P $ .
因為我們允許 $ R $ 是任何值(相對於 $ N $ ), 然後 $ R^e \cdot C $ 也可以是任何值,因此伺服器無法獲取有關他正在解密的內容的資訊。
考慮到這一背景,讓我們來回答您的問題:
- 誰可以控制如何 $ R $ 被選中?
正如您從上面的範例中看到的那樣,客戶端確實如此。
如果是客戶,是什麼阻止他選擇相同的值 $ R $ 每次。
絕對沒有。也沒有什麼能阻止他發布價值 $ P $ 在《泰晤士報》上,如果他這麼有心的話。 $ R $ 是否可以保護客戶的數據;如果他沒有正確地做事,那就是他自己的數據受到影響。
- 鑑於 R 必須是每個加密/解密操作的共享值
其實,如果你通過以上, $ R $ 僅在解密操作(或簽名操作)期間使用;原始加密器(創建 $ C = P^e $ 首先)不需要知道它(或者即使正在使用 RSA 致盲)。客戶端需要使用相同的 $ R $ 計算兩者 $ R^e \cdot C $ 和 $ R^{-1} \cdot (R \cdot C^d) $ ,但是這都是在解密過程中,客戶端永遠不需要給 $ R $ 對其他任何人(事實上,這寧願搞砸什麼 $ R $ 正在嘗試做)