橢圓曲線演算法
Ⅰ 密碼演算法中的橢圓曲線和參數是什麼意思啊
下面那位說的是不對的,這里所說的橢圓曲線根本不是高中所學的曲線,可以給你一個關於橢圓曲線相關定義與應用的網址:http://www.pediy.com/kssd/pediy06/pediy6014.htm
而一條曲線在標准化了可以寫為Ep(a,b)這里的p表示離散化的域的模,ab是曲線中的參數
另外還有G作為加密用的基點,點的階
另外可能還會用到曲線的H參數。
Ⅱ 誰能最簡單的詳解橢圓曲線演算法,secp256k1 是如何生成公鑰和私鑰的
最簡單的描述,K=kG作者重新定義了橢圓曲線的加法和乘法。並且保證不可逆。之後通過一系列復雜的計算算出了公鑰和加密演算法。比如y^2=Ax^3+Bx^2+Cx+D然後Alice計算出來一個參數(x1,y1) 告訴A,B,C,D到Bob,Bob對應的計算出來(x2,y2)然後雙方通訊,就可以使用公鑰私鑰對進行加解密了。PS:對不起。具體細節我把書送給老師了。手頭沒有資料可以查PS:開始了解這個演算法的時候我也看了ECC加密演算法入門介紹。到現在都不懂。我也不是數學系的。PS:我很後悔當時沒有把這個書上的東西記下來。現在只有一點皮毛的。那本書是《深入淺出密碼學――常用加密技術原理與應用(安全技術經典譯叢)》(美)帕爾,(美)佩爾茨爾著,馬小婷譯PS:最後我很討厭很簡單的東西說的很復雜。在上面這本書大概幾面紙加上最基礎不超過兩位數的算例就解決的問題,上面硬是講的超級復雜。
Ⅲ 橢圓曲線加密怎麼實現的
橢圓曲線
橢圓曲線指的是由韋爾斯特拉斯(Weierstrass)方程 y2+a1xy+a3y=x3+a2x2+a4x+a6 所確定的平面曲線。若F是一個域,ai ∈F,i=1,2,…,6。滿足式1的數偶(x,y)稱為F域上的橢圓曲線E的點。F域可以式有理數域,還可以式有限域GF(Pr)。橢圓曲線通常用E表示。除了曲線E的所有點外,尚需加上一個叫做無窮遠點的特殊O。
在橢圓曲線加密(ECC)
在橢圓曲線加密(ECC)中,利用了某種特殊形式的橢圓曲線,即定義在有限域上的橢圓曲線。其方程如下:
y2=x3+ax+b(mod p)
這里p是素數,a和b為兩個小於p的非負整數,它們滿足:
4a3+27b2(mod p)≠0 其中,x,y,a,b ∈Fp,則滿足式(2)的點(x,y)和一個無窮點O就組成了橢圓曲線E。
橢圓曲線離散對數問題ECDLP
橢圓曲線離散對數問題ECDLP定義如下:給定素數p和橢圓曲線E,對 Q=kP,在已知P,Q的情況下求出小於p的正整數k。可以證明,已知k和P計算Q比較容易,而由Q和P計算k則比較困難,至今沒有有效的方法來解決這個問題,這就是橢圓曲線加密演算法原理之所在。
橢圓曲線演算法與RSA演算法的比較
橢圓曲線演算法與RSA演算法的比較
橢圓曲線公鑰系統是代替RSA的強有力的競爭者。橢圓曲線加密方法與RSA方法相比,有以下的優點:
(1)安全性能更高 如160位ECC與1024位RSA、DSA有相同的安全強度。
(2)計算量小,處理速度快 在私鑰的處理速度上(解密和簽名),ECC遠 比RSA、DSA快得多。
(3)存儲空間佔用小 ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多, 所以佔用的存儲空間小得多。
(4)帶寬要求低使得ECC具有廣泛得應用前景。
ECC的這些特點使它必將取代RSA,成為通用的公鑰加密演算法。比如SET協議的制定者已把它作為下一代SET協議中預設的公鑰密碼演算法。
Ⅳ 請問RSA演算法針對於橢圓曲線演算法的優勢在於
橢圓曲線離散對數演算法實現太難。。
Ⅳ C# 橢圓曲線演算法
這東西C#不自帶,你自己實現好了,都是基於數學公式的,網上也有現成的演算法能下載到。
Ⅵ 橢圓曲線密碼學的數學理論
ECC的主要優勢是在某些情況下它比其他的方法使用更小的密鑰——比如RSA——提供相當的或更高等級的安全。ECC的另一個優勢是可以定義群之間的雙線性映射,基於Weil對或是Tate對;雙線性映射已經在密碼學中發現了大量的應用,例如基於身份的加密。不過一個缺點是加密和解密操作的實現比其他機制花費的時間長。
橢圓曲線密碼學的許多形式有稍微的不同,所有的都依賴於被廣泛承認的解決橢圓曲線離散對數問題的困難性上,對應有限域上橢圓曲線的群。
對橢圓曲線來說最流行的有限域是以素數為模的整數域(參見 模運算)GF(p),或是特徵為2的伽羅華域GF(2m)。後者在專門的硬體實現上計算更為有效,而前者通常在通用處理器上更為有效。專利的問題也是相關的。一些其他素數的伽羅華域的大小和能力也已經提出了,但被密碼專家認為有一點問題。
給定一條橢圓曲線E以及一個域GF(q),我們考慮具有(x,y)形式有理數點E(q)的阿貝爾群,其中x和y都在GF(q)中並且定義在這條曲線上的群運算+在文章橢圓曲線中描述。我們然後定義第二個運算* | Z×E(q)->E(q):如果P是E(q)上的某個點,那麼我們定義2*P=P+P,3*P=2*P+P=P+P+P等等。注意給定整數 j和k,j*(k*P)=(j*k)*P=k*(j*P)。橢圓曲線離散對數問題(ECDLP)就是給定點P和Q,確定整數k使k*P=Q。
一般認為在一個有限域乘法群上的離散對數問題(DLP)和橢圓曲線上的離散對數問題(ECDLP)並不等價;ECDLP比DLP要困難的多。
在密碼的使用上,曲線E(q);和其中一個特定的基點G一起被選擇和公布。一個私鑰k被作為隨機整數來選擇;值P=k*G被作為公鑰來公布(注意假設的ECDLP困難性意味著k很難從P中確定)。如果Alice和Bob有私鑰kA和kB,公鑰是PA和PB,那麼Alice能計算kA*PB=(kA*kB)*G;Bob能計算同樣的值kB*PA=(kB*kA)*G。
這允許一個「秘密」值的建立,這樣Alice和Bob能很容易地計算出,但任何的第三方卻很難得到。另外,Bob在處理期間不會獲得任何關於kA的新知識,因此Alice的私鑰仍然是私有的。
基於這個秘密值,用來對Alice和Bob之間的報文進行加密的實際方法是適應以前的,最初是在其他組中描述使用的離散對數密碼系統。這些系統包括:
Diffie-Hellman — ECDH
MQV — ECMQV
ElGamal discrete log cryptosystem — ECElGamal
DSA — ECDSA
對於ECC系統來說,完成運行系統所必須的群操作比同樣大小的因數分解系統或模整數離散對數系統要慢。不過,ECC系統的擁護者相信ECDLP問題比DLP或因數分解問題要難的多,並且因此使用ECC能用小的多的密鑰長度來提供同等的安全,在這方面來說它確實比例如RSA之類的更快。到目前為止已經公布的結果趨於支持這個結論,不過一些專家表示懷疑。
ECC被廣泛認為是在給定密鑰長度的情況下,最強大的非對稱演算法,因此在對帶寬要求十分緊的連接中會十分有用。
國家標准與技術局和ANSI X9已經設定了最小密鑰長度的要求,RSA和DSA是1024位,ECC是160位,相應的對稱分組密碼的密鑰長度是80位。NIST已經公布了一列推薦的橢圓曲線用來保護5個不同的對稱密鑰大小(80,112,128,192,256)。一般而言,二進制域上的ECC需要的非對稱密鑰的大小是相應的對稱密鑰大小的兩倍。
Certicom是ECC的主要商業支持者,擁有超過130項專利,並且已經以2千5百萬美元的交易獲得了國家安全機構(NSA)的技術許可。他們也已經發起了許多對ECC演算法的挑戰。已經被解決的最復雜的是109位的密鑰,是在2003年初由一個研究團隊破解的。破解密鑰的這個團隊使用了基於生日攻擊的大塊並行攻擊,用超過10,000台奔騰級的PC機連續運行了540天以上。對於ECC推薦的最小密鑰長度163位來說,當前估計需要的計算資源是109位問題的108倍。
在2005年2月16日,NSA宣布決定採用橢圓曲線密碼的戰略作為美國政府標準的一部分,用來保護敏感但不保密的信息。NSA推薦了一組被稱為Suit B的演算法,包括用來密鑰交換的Menezes-Qu-Vanstone橢圓曲線和Diffie-Hellman橢圓曲線,用來數字簽名的橢圓曲線數字簽名演算法。這一組中也包括AES和SHA。
Ⅶ 橢圓曲線點乘演算法
橢圓曲線密碼學有關的核心是橢圓曲線點乘演算法,
具體涉及到代數幾何學和群論。
原理太多,符號太雜不好往上打。
推薦你看下段鋼的《加密與解密》(第三版)
第六章有詳細介紹。
Ⅷ matlab擬合橢圓曲線
基本思路
橢圓的擬合比較復雜,考慮一般情形,涉及到的參數應包括長半軸、短半軸、傾角、中心坐標等5個參數。擬合結果對參數的初值比較敏感,需要小心選擇。
樓主所說的「誤差系數」不知道是怎樣定義,未計算。但有了擬合結果之後,只要定義明確,計算肯定不是難事。
擬合結果
以下是用最小二乘法擬合的結果:
參考代碼
最小二乘法:
function zd
d = [0.50151 0; 0 1.26586; 1.28399 1.28399; 0.68278 -0.68278;
0 -2.45619; -7.17523 0; -11.13293 -11.13293; -2.15106 2.15106];
X = d(:,1)';
Y = d(:,2)';
clf
plot(X,Y,'x')
hold on
c = lsqcurvefit(@curve,[8 2 50*pi/180 -5.5 -4.5],[X;Y],X*0)
a = c(1);
b = c(2);
Q = c(3);
T=linspace(0,2*pi,100);
x1=a*cos(T);
y1=b*sin(T);
x=x1*cos(Q)-y1*sin(Q)+c(4);
y=x1*sin(Q)+y1*cos(Q)+c(5);
plot(x,y,'r--')
c(3) = c(3) * 180/pi;
text(-11,2.5,sprintf('a = %.3g, b = %.3g
\theta = %.3g
x_0 = %.3g, y_0 = %.3g',c))
function f = curve(c,xy)
a = c(1);
b = c(2);
Q = c(3);
t=linspace(0,2*pi,500);
x1=a*cos(t);
y1=b*sin(t);
x=x1*cos(Q)-y1*sin(Q) + c(4);
y=x1*sin(Q)+y1*cos(Q) + c(5);
f = xy(1,:)*0;
for i=1:length(xy)
f(i) = min( sqrt((xy(1,i)-x).^2 + (xy(2,i)-x).^2 ) );
end
遺傳演算法:
function zd
d = [0.50151 0; 0 1.26586; 1.28399 1.28399; 0.68278 -0.68278;
0 -2.45619; -7.17523 0; -11.13293 -11.13293; -2.15106 2.15106];
X = d(:,1)';
Y = d(:,2)';
clf
plot(X,Y,'x')
hold on
opt = gaoptimset('InitialPopulation',[8 2 50*pi/180 -5.5 -4.5],'Generations',10000,'Display','iter');
c = ga(@curve,5,[],[],[],[],[5 1.5 pi/5 -6.5 -5],[9 5 pi/3 -4 -3],[],opt)%,[8 2 50*pi/180 -5.5 -4.5],[X;Y],X*0)
a = c(1);
b = c(2);
Q = c(3);
T=linspace(0,2*pi,100);
x1=a*cos(T);
y1=b*sin(T);
x=x1*cos(Q)-y1*sin(Q)+c(4);
y=x1*sin(Q)+y1*cos(Q)+c(5);
plot(x,y,'r--')
c(3) = c(3) * 180/pi;
text(-11,2.5,sprintf('a = %.3g, b = %.3g
\theta = %.3g
x_0 = %.3g, y_0 = %.3g',c))
function f = curve(c)
a = c(1);
b = c(2);
Q = c(3);
t=linspace(0,2*pi,500);
x1=a*cos(t);
y1=b*sin(t);
x=x1*cos(Q)-y1*sin(Q) + c(4);
y=x1*sin(Q)+y1*cos(Q) + c(5);
f = X*0;
for i=1:length(f)
f(i) = min( sqrt((X(i)-x).^2 + (Y(i)-x).^2 ) );
end
f = sum(f);
end
end
Ⅸ 橢圓曲線加密演算法
這需要自己設計,如果明文空間為M,則需要構造一個映射,將M中的元素(一般為二進制序列)映射到橢圓曲線上的點。
一種可能的做法是:將M轉化為十進制整數m,然後令橢圓曲線中點的橫坐標為m,根據曲線方程計算出縱坐標,便得到了一個點。
Ⅹ 如何通過哈希函數和橢圓曲線密碼演算法實現數字簽名
RSA的安全性主要取決於構造其加密演算法的數學函數的求逆的困難性,這同大多數公鑰密碼系統一樣(例如ElGamal演算法就是基於離散對數問題的困難性,我們稱這樣的函數為單向函數.單向函數不能直接用作密碼體制,因為如果用單向函數對明文進行加密,即使是合法的接收者也不能還原出明文,因為單向函數的逆運算是困難的.與密碼體制關系更為密切的陷門單向函數,即函數及其逆函數的計算都存在有效的演算法,而且可以將計算函數的方法公開.單向和陷門單向函數的概念是公鑰密碼學的核心,它對公鑰密碼系統的構造非常重要,甚至可以說公鑰密碼體制的設計就是陷門單向函數的設計.
ECDSA演算法將DsA運用在橢圓曲線方程上,將安全性的基礎由求取有限域上
離散對數的困難性變成了在橢圓曲線群上計算離散對數的困難性,安全性基礎改
變,使得在同等安全程度下使用的密鑰長度變短,僅僅使用192位長的密鑰就可
以保證安全性了,而DSA演算法需要1024位長的密鑰才能保證足夠的安全性.改進
後的ECDSA演算法提高了演算法實現的效率.