當前位置:首頁 » 操作系統 » ecc簽名演算法

ecc簽名演算法

發布時間: 2025-01-31 00:18:30

『壹』 什麼是RSA和ECC演算法

RSA(Rivest-Shamir-Adleman)加密演算法:它是第 一個既能用於數據加密也能用於數字簽名的演算法。比較易於理解和操作,是高強度非對稱加密系統,密鑰長度少則512位,多則2048位,非常難破解,安全系數是非常高的。ECC(Elliptic Curve Cryptosystems )加密演算法:橢圓曲線密碼體制,它同樣也是在數據位上額外的位存儲一個用數據加密的代碼。橢圓曲線其實可能比RSA更復雜。國內的老品牌CA機構-天威誠信,旗下的vTrus SSL證書,該證書支持 SHA256 with RSA 2048 演算法/ECC 256 演算法。

『貳』 區塊鏈技術(二) -- 比特幣中使用的加密演算法ECC

橢圓曲線加密演算法(ECC),是一種基於橢圓曲線數學理論實現的非對稱加密演算法。相較於RSA,ECC的優勢在於使用更短的密鑰即可達到與RSA相等或更高的安全級別。ECC在公開密鑰加密和電子商業領域得到廣泛應用,特別是比特幣(Bitcoin)採用的secp256k1橢圓曲線。

比特幣使用了特定的橢圓曲線secp256k1進行加密。加密過程涉及橢圓曲線上的加法運算,定義為:對於橢圓曲線上的兩個點A和B,過這兩個點的直線與橢圓曲線相交於第三個點,該點關於原點的對稱點即為A和B的和。此外,對於同一個點的二倍運算,即點與自身相加,定義為通過該點的切線與橢圓曲線的交點,再對該交點關於原點對稱得到。

加密演算法中還涉及到同餘運算、有限域的概念以及乘法逆元的定義。橢圓曲線密碼在有限域內進行,例如模數為質數的域,能夠保證加密過程中的數據在同一個有限集合內,避免了連續數加密解密後可能出現的偏差。

為了說明,我們以模數為2的有限域為例,展示乘法逆元的概念:在群G中,對任意元素a,存在唯一元素b,使得a*b等於群的單位元。而橢圓曲線加密演算法選擇的一類適合加密的曲線為secp256k1,這類曲線關於y軸對稱,且滿足特定條件,適用於安全加密。

ECC加密演算法的核心在於計算私鑰與公鑰的關系。已知公鑰和基點,計算出私鑰是非常困難的,這就為加密提供了強大的安全性。同時,ECDSA(ECC數字簽名演算法)用於生成和驗證簽名,通過將私鑰與消息摘要進行運算,生成不可逆的簽名。簽名的生成和驗證過程依賴於隨機數的引入,確保即使對相同消息,生成的簽名也不同,提高了安全性。

驗證過程涉及從簽名中提取出的兩個值,利用公開密鑰計算得到的值與接收到的值進行比較,若一致則驗證成功,否則失敗。整個過程確保了消息的真實性和完整性,是區塊鏈技術中確保數據安全和交易可信的重要手段。

『叄』 橢圓曲線加密演算法

橢圓曲線加密演算法,即:Elliptic Curve Cryptography,簡稱ECC,是基於橢圓曲線數學理論實現的一種非對稱加密演算法。相比RSA,ECC優勢是可以使用更短的密鑰,來實現與RSA相當或更高的安全。據研究,160位ECC加密安全性相當於1024位RSA加密,210位ECC加密安全性相當於2048位RSA加密。

橢圓曲線在密碼學中的使用,是1985年由Neal Koblitz和Victor Miller分別獨立提出的。

一般情況下,橢圓曲線可用下列方程式來表示,其中a,b,c,d為系數。

例如,當a=1,b=0,c=-2,d=4時,所得到的橢圓曲線為:

該橢圓曲線E的圖像如圖X-1所示,可以看出根本就不是橢圓形。

過曲線上的兩點A、B畫一條直線,找到直線與橢圓曲線的交點,交點關於x軸對稱位置的點,定義為A+B,即為加法。如下圖所示:A + B = C

上述方法無法解釋A + A,即兩點重合的情況。因此在這種情況下,將橢圓曲線在A點的切線,與橢圓曲線的交點,交點關於x軸對稱位置的點,定義為A + A,即2A,即為二倍運算。

將A關於x軸對稱位置的點定義為-A,即橢圓曲線的正負取反運算。如下圖所示:

如果將A與-A相加,過A與-A的直線平行於y軸,可以認為直線與橢圓曲線相交於無窮遠點。

綜上,定義了A+B、2A運算,因此給定橢圓曲線的某一點G,可以求出2G、3G(即G + 2G)、4G......。即:當給定G點時,已知x,求xG點並不困難。反之,已知xG點,求x則非常困難。此即為橢圓曲線加密演算法背後的數學原理。

橢圓曲線要形成一條光滑的曲線,要求x,y取值均為實數,即實數域上的橢圓曲線。但橢圓曲線加密演算法,並非使用實數域,而是使用有限域。按數論定義,有限域GF(p)指給定某個質數p,由0、1、2......p-1共p個元素組成的整數集合中定義的加減乘除運算。

假設橢圓曲線為y² = x³ + x + 1,其在有限域GF(23)上時,寫作:y² ≡ x³ + x + 1 (mod 23)

此時,橢圓曲線不再是一條光滑曲線,而是一些不連續的點,如下圖所示。以點(1,7)為例,7² ≡ 1³ + 1 + 1 ≡ 3 (mod 23)。如此還有如下點:

(0,1) (0,22)(1,7) (1,16)(3,10) (3,13)(4,0)(5,4) (5,19)(6,4) (6,19)(7,11) (7,12)(9,7) (9,16)(11,3) (11,20)等等。

另外,如果P(x,y)為橢圓曲線上的點,則-P即(x,-y)也為橢圓曲線上的點。如點P(0,1),-P=(0,-1)=(0,22)也為橢圓曲線上的點。

相關公式如下:有限域GF(p)上的橢圓曲線y² = x³ + ax + b,若P(Xp, Yp), Q(Xq, Yq),且P≠-Q,則R(Xr,Yr) = P+Q 由如下規則確定:

Xr = (λ² - Xp - Xq) mod pYr = (λ(Xp - Xr) - Yp) mod p其中λ = (Yq - Yp)/(Xq - Xp) mod p(若P≠Q), λ = (3Xp² + a)/2Yp mod p(若P=Q)

因此,有限域GF(23)上的橢圓曲線y² ≡ x³ + x + 1 (mod 23),假設以(0,1)為G點,計算2G、3G、4G...xG等等,方法如下:

計算2G:λ = (3x0² + 1)/2x1 mod 23 = (1/2) mod 23 = 12Xr = (12² - 0 - 0) mod 23 = 6Yr = (12(0 - 6) - 1) mod 23 = 19即2G為點(6,19)

計算3G:3G = G + 2G,即(0,1) + (6,19)λ = (19 - 1)/(6 - 0) mod 23 = 3Xr = (3² - 0 - 6) mod 23 = 3Yr = (3(0 - 3) - 1) mod 23 = 13即3G為點(3, 13)

建立基於橢圓曲線的加密機制,需要找到類似RSA質因子分解或其他求離散對數這樣的難題。而橢圓曲線上的已知G和xG求x,是非常困難的,此即為橢圓曲線上的的離散對數問題。此處x即為私鑰,xG即為公鑰。

橢圓曲線加密演算法原理如下:

設私鑰、公鑰分別為k、K,即K = kG,其中G為G點。

公鑰加密:選擇隨機數r,將消息M生成密文C,該密文是一個點對,即:C = {rG, M+rK},其中K為公鑰

私鑰解密:M + rK - k(rG) = M + r(kG) - k(rG) = M其中k、K分別為私鑰、公鑰。

橢圓曲線簽名演算法,即ECDSA。設私鑰、公鑰分別為k、K,即K = kG,其中G為G點。

私鑰簽名:1、選擇隨機數r,計算點rG(x, y)。2、根據隨機數r、消息M的哈希h、私鑰k,計算s = (h + kx)/r。3、將消息M、和簽名{rG, s}發給接收方。

公鑰驗證簽名:1、接收方收到消息M、以及簽名{rG=(x,y), s}。2、根據消息求哈希h。3、使用發送方公鑰K計算:hG/s + xK/s,並與rG比較,如相等即驗簽成功。

原理如下:hG/s + xK/s = hG/s + x(kG)/s = (h+xk)G/s= r(h+xk)G / (h+kx) = rG

假設要簽名的消息是一個字元串:「Hello World!」。DSA簽名的第一個步驟是對待簽名的消息生成一個消息摘要。不同的簽名演算法使用不同的消息摘要演算法。而ECDSA256使用SHA256生成256比特的摘要。
摘要生成結束後,應用簽名演算法對摘要進行簽名:
產生一個隨機數k
利用隨機數k,計算出兩個大數r和s。將r和s拼在一起就構成了對消息摘要的簽名。
這里需要注意的是,因為隨機數k的存在,對於同一條消息,使用同一個演算法,產生的簽名是不一樣的。從函數的角度來理解,簽名函數對同樣的輸入會產生不同的輸出。因為函數內部會將隨機值混入簽名的過程。

關於驗證過程,這里不討論它的演算法細節。從宏觀上看,消息的接收方從簽名中分離出r和s,然後利用公開的密鑰信息和s計算出r。如果計算出的r和接收到的r值相同,則表示驗證成功。否則,表示驗證失敗。

熱點內容
android開源github 發布:2025-01-31 06:39:48 瀏覽:759
腳本里取余 發布:2025-01-31 06:39:46 瀏覽:803
授權訪問內存 發布:2025-01-31 06:33:53 瀏覽:441
資料庫被質疑 發布:2025-01-31 06:32:32 瀏覽:329
安卓pro有什麼用 發布:2025-01-31 06:32:12 瀏覽:793
伺服器維護網站搭建是什麼工作 發布:2025-01-31 06:23:37 瀏覽:685
伺服器搭建後怎麼寫文件 發布:2025-01-31 06:20:19 瀏覽:199
微軟伺服器在什麼地方 發布:2025-01-31 06:11:18 瀏覽:102
工號密碼改什麼好記 發布:2025-01-31 06:11:15 瀏覽:440
sql語句預編譯 發布:2025-01-31 06:09:43 瀏覽:408