在DSA中,我们通过对m上的签名k\in\{1,...,q-1\}进行采样和计算来计算签名D3。
r := g^k \bmod p
s := k^{-1}*(m+x*r) \bmod q
在验证过程中,我们计算v:=g^{m*s^{-1}}*y^{r*s^{-1}}\bmod p,然后检查r=v \bmod q。
问题:是否可以将k^{-1}排除在s计算之外(即s := m+x*r),然后检查g = v?
发布于 2022-05-28 14:06:53
问题:是否可以将
k^{-1}排除在s计算之外(即s := m+x*r),然后检查g = v?
换句话说,检查将是g = g^{ms^{-1}}y^{rs^{-1}}。
现在,这将是不安全的;假设我们有一个有效的m签名,也就是说,我们有(m, r, s)值,例如g = g^{ms^{-1}}y^{rs^{-1}}。
然后,对于任意消息m',我们可以计算s' = m'm^{-1}s和r' = rs's^{-1};我们有g^{m's'^{-1}}y^{r's'^{-1}} = g^{ms^{-1}} y^{rs^{-1}},它是g (因为原始签名是有效的);也就是说,(m', r', s')是伪造的。
https://crypto.stackexchange.com/questions/100336
复制相似问题