什麼是反向活板門功能?
在有關Digital_signature的維基百科中:
而是首先對要簽名的消息進行雜湊處理以產生一個簡短的摘要,然後將其填充到與 N 相當的更大寬度,然後使用反向陷門函式進行簽名
我在 SE 上也找不到反向陷門功能這個詞,也不是通過網路搜尋,這是什麼意思?
來自維基百科的陷門函式定義;
陷門函式是一種在一個方向上很容易計算,但在沒有特殊資訊的情況下很難在相反方向上計算的函式,稱為“陷門”。
反向陷門功能只是它的反向使用。
通常,對於加密,我們希望加密容易,但如果沒有密鑰,解密會很困難。考慮 RSA 加密。
在簽名中,我們想要相反的,沒有密鑰很難產生——即偽造,但容易驗證。考慮 RSA 簽名。
考慮 RSA,給定 $ (n,e) $ 那麼公鑰 $ E(m) = m^e $ 是沒有私鑰的陷門(實際上是陷門排列)。
**前向使用:**使用公鑰和 $ m $ 很容易計算 $ E(m) $ , 加密。但鑑於 $ c = E(m) $ 和公鑰很難計算 $ E^{-1}(c) $ 沒有私鑰。
反向使用:給定 $ (n,d) $ 然後是私鑰 $ S(m) = m^d $ 是反向活板門。給定 $ s = S(m) $ 和公鑰很容易驗證但很難計算 $ S^{-1}(c) $ 沒有私鑰。
**注 1:**通常人們會將 RSA 解密與 RSA 簽名混淆。不,不是。對於正確的 RSA 加密,您需要 PKCS#1.5 或 OAEP 填充方案,對於簽名,您需要 RSA-PSS 填充方案。在實踐中,不建議對兩者使用相同的密鑰。
**注意 2:**正如 Tylo 所指出的,實際上Bleichenbacher 的攻擊及其變體(DROWN、ROBOT)表明 RSA PKCS#1.5 填充是不安全的。
注 3: PKCS#1 v1.5 填充沒有正式的安全證明,但RSA AOEP有。