2013-06-24 62 views
0

在这个简单的例子假设一个机构使用RSA公钥(E = 11,N = 85)签署 文档。你希望他们签署的消息(这是数字42),但你不希望他们 知道他们签署使您在使用的11 在您的计算致盲因素“R”,你可能希望使用以下结果:RSA算法实施例

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

显示简短的工作。

1)你应该给什么数字授权?

2)将授权给什么号码还给你?

3)从该提取数为42的签名。

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

我当时一看,如果有人能指导我这个例子中,我会很感激。

回答

6

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

s' = m'd mod N

m' = m * re mod N 
m' = 42 * 1111 mod 85 
m' = 62

权威将通过使用计算s'签署此

其中d是私人指数。

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

e * d = 1 mod ɸ(N)

哪里ɸ是欧拉函数。 N是两个素数pq每RSA算法的定义的产品,并且由于N较小,我们可以很容易地因素,以确定p = 5q = 17

因此,通过定义ɸ

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

使用所提供的结果,因此,我们可以判断:

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

因此,当局应返回给我们盲签名s'计算公式为:

s' = m'd mod N 
s' = 6235 mod 85 
s' = 73

要计算t他的签名,我们需要使用计算s

s = s' * r-1 mod N

这里,r-1是逆r这样的:

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 
s = 53

你的问题说来验证这个使用私钥,但签名是使用公钥验证,所以这就是我在这里做的:

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

m = se mod N 
m = 5311 mod 85 
m = 42

我们就此表明签名是有效的,因为m = 42 - 我们的原始邮件。

+0

这一定是有道理的,我想知道你是怎么计算m'= 42 * 11^11 mod 85 = 62?你使用了计算器还是有一个诀窍,你是如何计算结果的?感谢您的帮助 – noted

+2

有足够数字的计算器可以直接做到这一点,但您也可以使用普通计算器或笔纸轻松完成计算,方法是将计算结果降低,然后在数字开始时应用模数太大了。例如:42 * 11^11 = 42 * 11 *(11^5)^ 2 = 42 * 11 * 161051^2 = 42 * 11 * 61^2 = 42 * 11 * 3721 = 42 * 11 * 66 = 30492 = 62 – Iridium

+0

现在我明白了,谢谢。你是怎么计算11 * d = 1 mod 64的; d = 35?我正在看它,但我不确定如何做到这一点。 – noted