Rsa

盲法 RSA 簽名中填充方案的可用性?

  • November 14, 2019

在維基百科關於盲簽名的文章中,在描述RSA 致盲攻擊**的盲簽名的危險部分中,閱讀以下內容

這種攻擊是有效的,因為在這種盲簽名方案中,簽名者直接對消息進行簽名。相比之下,在非盲簽名方案中,簽名者通常會使用填充方案(例如,通過對應用於消息的加密散列函式的結果進行簽名,而不是對消息本身進行簽名),但是由於簽名者不知道實際的消息,任何填充方案都會在 unblinded 時產生不正確的值

有人可以解釋我強調的部分的含義嗎?

在盲 RSA 簽名方案中,消息的盲化 $ m $ (被盲簽名)與值相乘 $ r^e $ , 你確保 $ r $ 是可逆的模 $ N $ .

因此,如果發送者從簽名者那裡收到簽名的盲消息,他可以通過乘以 $ r^{-1} $ , 產生 $ s\equiv m^d \pmod N $ 這是一個有效的(教科書)RSA簽名 $ m $ .

發件人填充

注意 $ m $ 也可能是RSA 簽名的任何填充方法的結果,但是需要由發送者在致盲之前應用。通過將此填充表示為 $ f $ 我們可以簡單地認為盲目的資訊是 $ m’\equiv f(m)r^e \pmod N $ (顯然可以在盲籤後揭盲)。

簽名者填充

將發送給簽名者的盲消息表示為 $ m’\equiv mr^e \pmod N $ ,則由簽名者填充意味著簽名者更改了盲消息 $ m’\equiv mr^e \pmod N $ 對一些 $ m’’ $ 在簽署之前。RSA 簽名的填充方法對原始消息(可能帶有一些參數)進行雜湊處理,將雜湊值填充為某種特定格式,然後將結果解釋為 $ Z_N $ , 然後用私有簽名指數取冪 $ d $ .

觀察到這樣做時,簽名者填充了一個已經蒙蔽的消息,並將這個填充的蒙蔽消息表示為 $ m’’=f(m’)=f(mr^e) $ . 如果對消息進行這樣的填充 $ m’ $ 簽名者收到的簽名簽名者申請,然後發送者獲得的簽名為 $ m’’ $ 將會 $ s’ \equiv (f(mr^e))^d \pmod N $
然後揭盲,即計算 $ s’\cdot r^{-1} \equiv (f(mr^e))^d\cdot r^{-1} \pmod N $ , 將產生一些元素 $ Z_N $ 這顯然不是一個有效的簽名 $ m^d\pmod N $ 對於消息 $ m $ 發件人想要被簽名(用於填充功能 $ f $ 我們假設被應用,即涉及散列。顯然,如果 $ f $ 是身份函式,然後它可以工作,但這不是填充)。

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