椭圆曲线加密算法ECC
目錄
ECC加密算法
一、相關(guān)數(shù)學(xué)基礎(chǔ)
二、ECC安全性原理
三、算法詳細(xì)流程
四、特點(diǎn)及安全性
推薦:
https://blog.csdn.net/sitebus/article/details/82835492
ECC加密算法
?橢圓曲線加密(ECC,Elliptic Curves Cryptography)也屬于非對(duì)稱加密公鑰算法,與主流的RSA算法相比,ECC算法可以使用較短的密鑰達(dá)到相同的安全程度。ECC是建立在基于橢圓曲線的離散對(duì)數(shù)問(wèn)題上的密碼體制,給定橢圓曲線上的一個(gè)點(diǎn)G,并選取一個(gè)整數(shù)k,求解K=kG很容易(注意根據(jù)kG求解出來(lái)的K也是橢圓曲線上的一個(gè)點(diǎn));反過(guò)來(lái),在橢圓曲線上給定兩個(gè)點(diǎn)K和G,若使K=kG,求整數(shù)k是一個(gè)難題。ECC就是建立在此數(shù)學(xué)難題之上,這一數(shù)學(xué)難題稱為橢圓曲線離散對(duì)數(shù)問(wèn)題。近年來(lái),ECC逐步進(jìn)入實(shí)際應(yīng)用,如國(guó)家密碼管理局頒布的SM2算法就是基于ECC算法的。
一、相關(guān)數(shù)學(xué)基礎(chǔ)
有限域、群、交換群、離散對(duì)數(shù)、橢圓曲線加密
二、ECC安全性原理
K=kG,其中K,G為Ep(a,b)上的點(diǎn),k為小于n的整數(shù),n是點(diǎn)G的階,給定k和G,計(jì)算K容易,但是給定K和G,求k就很難了!
因此:K為公鑰,k為私鑰,G為基點(diǎn)。
三、算法詳細(xì)流程
B傳送明文M給A:僅為例:也可以構(gòu)成其他橢圓曲線密碼。
參數(shù):
- A選定一條橢圓曲線Ep(a,b),并取曲線上一點(diǎn)作為基點(diǎn)G
- A選擇一個(gè)私鑰k,并生成公鑰K=kG
- A將Ep(a,b)和k,G發(fā)送給B
加密:
- B收到后將明文編碼到Ep(a,b)上一點(diǎn)M,并產(chǎn)生一個(gè)隨機(jī)數(shù)r
- B計(jì)算點(diǎn)C1=M+rK,C2=rG
- B將C1,C2傳給A
解密:
- A計(jì)算C1-kC2=M+rkG-krG=M
- A對(duì)M解碼得到明文
在這個(gè)加密通信中,如果有一個(gè)偷窺者H ,他只能看到Ep(a,b)、K、G、C1、C2,而通過(guò)K、G 求k 或通過(guò)C2、G求r 都是相對(duì)困難的,因此,H無(wú)法得到A、B間傳送的明文信息。
1、參數(shù)生成
通常將Fp上的一條橢圓曲線描述為T=(p,a,b,G,n,h),p、a、b確定一條橢圓曲線(p為質(zhì)數(shù),(mod p)運(yùn)算)G為基點(diǎn),n為點(diǎn)G的階,h是橢圓曲線上所有點(diǎn)的個(gè)數(shù)m與n相除的商的整數(shù)部分。
- 選擇一個(gè)素?cái)?shù)p,從而確定有限域GF(p);
- 選擇元素a,b屬于GF(p),從而確定一條GF(p)上的橢圓曲線;
- 選擇一個(gè)大素?cái)?shù)n,并確定一個(gè)階為n的基點(diǎn);(基礎(chǔ)參數(shù)p,a,b,G,n,h是公開的)
- 隨機(jī)的選擇一個(gè)整數(shù)d屬于[1,n-1],作為私鑰;
- 根據(jù)Q=dG;計(jì)算出用戶的公鑰Q;
參量選擇要求:
- p越大安全性越好,但會(huì)導(dǎo)致計(jì)算速度變慢;
- 200位左右可滿足一般安全要求;
- n應(yīng)為質(zhì)數(shù) h≤4;p≠n×h ;pt≠1(mod n) (1≤t<20)
2、加解密過(guò)程
實(shí)際應(yīng)用中,設(shè)要加密的明文數(shù)據(jù)m,0<=m<n,用戶A要將數(shù)據(jù)m發(fā)送給用戶B:
加密:
解密:
3、簽名、驗(yàn)簽流程
簽名:
- A選定一條橢圓曲線Ep(a,b),并取曲線上一點(diǎn)作為基點(diǎn)G
- A選擇一個(gè)私鑰k,并生成公鑰K=kG
- A產(chǎn)生一個(gè)隨機(jī)數(shù)r,計(jì)算R(x,y)=rG
- A計(jì)算Hash=SHA(M),M‘=M(modp)
- A計(jì)算S=(Hash+M'k)/r(modp)
驗(yàn)簽:
- B獲得S和M',Ep(a,b),K,R(x,y)
- B計(jì)算Hash=SHA(M),M'=M(modp)
- B計(jì)算R'=(Hash*G+M'*K)/S=(Hash*G+M'*kG)*r/(Hash+M'k)=rG=R(x,y),若R'=R,則驗(yàn)簽成功。
以上加解密和簽名驗(yàn)簽流程只是一個(gè)例子,具體應(yīng)用時(shí)可以利用K=kG這一特性變幻出多種加解密方式。
四、特點(diǎn)及安全性
優(yōu)點(diǎn):ECC和其他幾種公鑰系統(tǒng)相比,其抗攻擊性具有絕對(duì)的優(yōu)勢(shì),ECC160位的密鑰相當(dāng)于RSA 、DSA1024位密鑰提供的保密強(qiáng)度,210位ECC則與2048位RSA、DSA具有相同的安全強(qiáng)度;計(jì)算量較小,處理速度更快;ECC的密鑰尺寸和系統(tǒng)參數(shù)與RSA、DSA相比要小得多存儲(chǔ)空間和傳輸帶寬占用較少。
缺點(diǎn):設(shè)計(jì)復(fù)雜,實(shí)現(xiàn)困難;如果序列號(hào)設(shè)計(jì)過(guò)短,那么安全性并沒(méi)有想象中的完善。
應(yīng)用:目前我國(guó)居民二代身份證正在使用 256 位的橢圓曲線密碼;虛擬貨幣比特幣也選擇ECC作為加密算法;IC卡、電子商務(wù)、Web服務(wù)器、移動(dòng)電話和便攜終端、航空航天領(lǐng)域。
注:
如有錯(cuò)誤、侵權(quán),請(qǐng)聯(lián)系筆者更改刪除!!!
總結(jié)
以上是生活随笔為你收集整理的椭圆曲线加密算法ECC的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 公钥密码-非对称加密算法
- 下一篇: TCP/IP协议簇简介