六、橢圓曲線(xiàn)上簡(jiǎn)單的加密/解密
公開(kāi)密鑰算法總是要基于一個(gè)數(shù)學(xué)上的難題。比如RSA 依據(jù)的是:給定兩個(gè)素?cái)?shù)p、q 很容易相乘得到n,而對(duì)n進(jìn)行因式分解卻相對(duì)困難。那橢圓曲線(xiàn)上有什么難題呢?
考慮如下等式:
K=kG [其中 K,G為Ep(a,b)上的點(diǎn),k為小于n(n是點(diǎn)G的階)的整數(shù)]
不難發(fā)現(xiàn),給定k和G,根據(jù)加法法則,計(jì)算K很容易;但給定K和G,求k就相對(duì)困難了。
這就是橢圓曲線(xiàn)加密算法采用的難題。我們把點(diǎn)G稱(chēng)為基點(diǎn)(base point),k(k 現(xiàn)在我們描述一個(gè)利用橢圓曲線(xiàn)進(jìn)行加密通信的過(guò)程:
1、用戶(hù)A選定一條橢圓曲線(xiàn)Ep(a,b),并取橢圓曲線(xiàn)上一點(diǎn),作為基點(diǎn)G。
2、用戶(hù)A選擇一個(gè)私有密鑰k,并生成公開(kāi)密鑰K=kG。
3、用戶(hù)A將Ep(a,b)和點(diǎn)K,G傳給用戶(hù)B。
4、用戶(hù)B接到信息后 ,將待傳輸?shù)拿魑木幋a到Ep(a,b)上一點(diǎn)M(編碼方法很多,這里不作討論),并產(chǎn)生一個(gè)隨機(jī)整數(shù)r(r 5、用戶(hù)B計(jì)算點(diǎn)C1=M+rK;C2=rG。
6、用戶(hù)B將C1、C2傳給用戶(hù)A。
7、用戶(hù)A接到信息后,計(jì)算C1-kC2,結(jié)果就是點(diǎn)M。因?yàn)?BR> C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M
再對(duì)點(diǎn)M進(jìn)行解碼就可以得到明文。
在這個(gè)加密通信中,如果有一個(gè)偷窺者H ,他只能看到Ep(a,b)、K、G、C1、C2 而通過(guò)K、G 求k 或通過(guò)C2、G求r 都是相對(duì)困難的。因此,H無(wú)法得到A、B間傳送的明文信息。
密碼學(xué)中,描述一條Fp上的橢圓曲線(xiàn),常用到六個(gè)參量:
T=(p,a,b,G,n,h)。
(p 、a 、b 用來(lái)確定一條橢圓曲線(xiàn),G為基點(diǎn),n為點(diǎn)G的階,h 是橢圓曲線(xiàn)上所有點(diǎn)的個(gè)數(shù)m與n相除的整數(shù)部分)
這幾個(gè)參量取值的選擇,直接影響了加密的安全性。參量值一般要求滿(mǎn)足以下幾個(gè)條件:
1、p 當(dāng)然越大越安全,但越大,計(jì)算速度會(huì)變慢,200位左右可以滿(mǎn)足一般安全要求;
2、p≠n×h;
3、pt≠1 (mod n),1≤t<20;
4、4a3+27b2≠0 (mod p);
5、n 為素?cái)?shù);
6、h≤4。
公開(kāi)密鑰算法總是要基于一個(gè)數(shù)學(xué)上的難題。比如RSA 依據(jù)的是:給定兩個(gè)素?cái)?shù)p、q 很容易相乘得到n,而對(duì)n進(jìn)行因式分解卻相對(duì)困難。那橢圓曲線(xiàn)上有什么難題呢?
考慮如下等式:
K=kG [其中 K,G為Ep(a,b)上的點(diǎn),k為小于n(n是點(diǎn)G的階)的整數(shù)]
不難發(fā)現(xiàn),給定k和G,根據(jù)加法法則,計(jì)算K很容易;但給定K和G,求k就相對(duì)困難了。
這就是橢圓曲線(xiàn)加密算法采用的難題。我們把點(diǎn)G稱(chēng)為基點(diǎn)(base point),k(k
1、用戶(hù)A選定一條橢圓曲線(xiàn)Ep(a,b),并取橢圓曲線(xiàn)上一點(diǎn),作為基點(diǎn)G。
2、用戶(hù)A選擇一個(gè)私有密鑰k,并生成公開(kāi)密鑰K=kG。
3、用戶(hù)A將Ep(a,b)和點(diǎn)K,G傳給用戶(hù)B。
4、用戶(hù)B接到信息后 ,將待傳輸?shù)拿魑木幋a到Ep(a,b)上一點(diǎn)M(編碼方法很多,這里不作討論),并產(chǎn)生一個(gè)隨機(jī)整數(shù)r(r
6、用戶(hù)B將C1、C2傳給用戶(hù)A。
7、用戶(hù)A接到信息后,計(jì)算C1-kC2,結(jié)果就是點(diǎn)M。因?yàn)?BR> C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M
再對(duì)點(diǎn)M進(jìn)行解碼就可以得到明文。
在這個(gè)加密通信中,如果有一個(gè)偷窺者H ,他只能看到Ep(a,b)、K、G、C1、C2 而通過(guò)K、G 求k 或通過(guò)C2、G求r 都是相對(duì)困難的。因此,H無(wú)法得到A、B間傳送的明文信息。
密碼學(xué)中,描述一條Fp上的橢圓曲線(xiàn),常用到六個(gè)參量:
T=(p,a,b,G,n,h)。
(p 、a 、b 用來(lái)確定一條橢圓曲線(xiàn),G為基點(diǎn),n為點(diǎn)G的階,h 是橢圓曲線(xiàn)上所有點(diǎn)的個(gè)數(shù)m與n相除的整數(shù)部分)
這幾個(gè)參量取值的選擇,直接影響了加密的安全性。參量值一般要求滿(mǎn)足以下幾個(gè)條件:
1、p 當(dāng)然越大越安全,但越大,計(jì)算速度會(huì)變慢,200位左右可以滿(mǎn)足一般安全要求;
2、p≠n×h;
3、pt≠1 (mod n),1≤t<20;
4、4a3+27b2≠0 (mod p);
5、n 為素?cái)?shù);
6、h≤4。

