0

在这个简单的例子中,假设一个机构使用公共 RSA 密钥 (e=11,n=85) 来签署文档。您希望他们在您的消息上签名(即数字 42),但您不希望他们知道他们在签名什么,因此您使用 11 的致盲因子“r”。在您的计算中,您可能希望使用以下结果:

11 ∗ 35 = 1 mod 64
11 ∗ 31 = 1 mod 85

显示简短的工作。

1)你应该授权什么号码签名?

2) 当局会给你多少号码?

3) 从此号码中提取 42 的签名。

4) 使用私钥验证此答案。

我看过了,如果有人可以和我一起指导这个例子,我将不胜感激。

4

1 回答 1

6

消息m为 42,致盲因子r为 11,因此提供给权限的值m'计算为:

m' = m * r e mod N
m' = 42 * 11 11 mod 85
米' = 62

当局将通过计算s'使用以下方式签署:

s' = m' d mod N

d私人指数在哪里。

因此,我们必须计算我们知道是满足关系的值的私有指数:

e * d = 1 mod ɸ(N)

ɸ欧拉函数在哪里。N是两个素数的乘积p,并且q根据 RSA 算法的定义,由于 N 很小,我们可以很容易地分解它来确定p = 5q = 17

因此根据 的定义ɸ

ɸ(N) = (p-1)(q-1)
ɸ(N) = (5-1)(17-1) = 64

因此,使用提供的结果,我们可以确定:

e * d = 1 mod ɸ(N)
11 * d = 1 模 64
d = 35

因此,当局应该将盲签名返回给我们,s'计算如下:

s' = m' d mod N
s' = 62 35 mod 85
s' = 73

要计算签名,我们需要使用以下方法计算s

s = s' * r -1 mod N

这里,是这样的倒数:r-1r

r * r -1 = 1 mod N

再次使用给定的结果,我们可以确定:r-1

r * r -1 = 1 mod N
11 * r -1 = 1 mod 85
r -1 = 31

所以计算s变为:

s = s' * r -1 mod N
s = 73 * 31 mod 85
小号 = 53

您的问题说使用私钥验证这一点,但是使用公钥验证签名,所以这就是我将在这里做的:

为了确认这是正确的签名,我们验证:

m = s e mod N
米 = 53 11模 85
米 = 42

因此,我们已经证明签名是有效的,因为m = 42- 我们的原始消息。

于 2013-06-24T18:29:13.503 回答