利用橢圓曲線進行加密通訊
一個利用橢圓曲線進行加密通訊的過程:
1、使用者A選定一條橢圓曲線Ep(a,b),並取橢圓曲線上一點,作為基點G。
2、使用者A選擇一個私有金鑰(隨機數)k,並通過某種快速演算法生成公開金鑰K=kG。
3、使用者A將Ep(a,b)和點K,G傳給使用者B。
4、使用者B接到資訊後 ,將待傳輸的明文編碼到Ep(a,b)上一點M,併產生一個隨機整數r(r<n)。
5、使用者B計算點P1=M+rK;P2=rG。
6、使用者B將P1、P2傳給使用者A。
7、使用者A接到資訊後,計算P1-kP2,結果就是點M。
因為P1-kP2=M+rK-k(rG)=M+rK-r(kG)=M,再對點M進行解碼就可以得到明文。
在這個加密通訊中,如果有一個偷窺者H ,他只能看到Ep(a,b)、K、G、P1、P2。
H有兩種方式獲得明文M,一是通過K、G求k,二是通過P2、G求r,都是相對困難的,都需要通過窮舉法暴力破解k或r,演算法複雜度為O(n)。而在做乘法的時候,知道k和G求K,可以有捷徑,比如說通過倍乘相加的方式,這樣可以將演算法複雜度減少到O(logn)。因此,H很難得到A、B間傳送的明文資訊。
簡單來說,假如有種運算,乘法很容易,但是不存在除法。令G=7,私鑰=100,計算出公鑰=700,發給前端是7和700。
前端要傳送的密文假設是28,那麼他尋找一個隨機數r,發給後端28+700r 以及 7r
後端拿到28+700r和7r後,可以很輕鬆地計算出密文28= 28+700r- 7r*私鑰100
H想要破解,只有通過700、7求乘數100,或者通過7r、7來求乘數r的值(M=P1-rK),只能窮舉破解。
SM2非對稱加密的結果由C1,C2,C3三部分組成。最開始的國密標準的結果是按C1C2C3順序的,新標準的是按C1C3C2順序存放的。
其中C1是加密方根據生成的隨機數r,計算出的的橢圓曲線點C1 = rG
C2是密文資料,首先計算rK=X,再以X的兩座標為引數,以某種方式計算出一個位元組流t,將位元組流t異或明文M獲得密文C2,C2=F(rK) ^ M
C3是SM3的摘要值。
解密:因為 M = F(rK) ^ C2,又因為kC1 = rkG = rK,所以 M = F(kC1) ^ C2
相關文章
- 橢圓曲線加密中的加法乘法淺析加密
- 如何給小學生講清楚ECC橢圓曲線加密加密
- 橢圓曲線加法原理計算
- 橢圓曲線法在微軟安全保護CDKey的應用微軟
- 【Openxml】將Openxml的橢圓弧線arcTo轉為Svg的橢圓弧線XMLSVG
- Fabric 1.0原始碼分析(46)ECDSA(橢圓曲線數字簽名演算法)原始碼演算法
- 圓錐曲線14
- 圓錐曲線15
- WEBGL橢圓Web
- 在VB中利用API進行串列埠通訊API串列埠
- 轉貼:Ivanopulo說CloneCD用的是橢圓曲線密碼演算法 (1千字)密碼演算法
- SVG (一) 圖形, 路徑, 變換總結; 以及橢圓弧線, 貝塞爾曲線的詳細解釋SVG
- c#畫圖(橢圓和弧線)Craphics類C#
- 如何用MFC畫出直線、虛線、折線、圓、橢圓、矩形、弧形(附上原始碼)原始碼
- 乾元通與橢圓時空簽訂戰略合作協議 推進融合通訊賦能升級協議
- 在Dubbo-go中使用TLS加密進行安全通訊GoTLS加密
- Vue 中利用 eventBus 進行資料通訊的問題Vue
- 兄弟連區塊鏈教程Fabric1.0原始碼分析ECDSA橢圓曲線數字簽名演算法區塊鏈原始碼演算法
- 通過串列埠進行通訊 :串列埠
- CAD繪圖工具——橢圓繪圖
- SVG <ellipse> 繪製橢圓SVG
- CSS繪製橢圓程式碼CSS
- 為行動通訊爭一先:Massive MIMO的進化三部曲
- 使用貝塞爾曲線裁圓優化tableView優化View
- Android Socket連線,使用Socket進行通訊(Android)Android
- CAD橢圓弧命令如何使用
- CSS橢圓效果程式碼例項CSS
- 利用 acme-tiny 實現 HTTPS 加密通訊 (CentOS & Apache)ACMHTTP加密CentOSApache
- Python中OpenCV劃線、畫圓、橢圓、新增文字等幾何圖形繪製操作PythonOpenCV
- css實現圓形、橢圓和半圓效果程式碼例項CSS
- 計算兩豎直直線與橢圓圍成部分面積
- 利用磁碟的序列號進行軟體加密 (轉)加密
- Qt 求圓和橢圓上任意角度點的座標QT
- 利用SSH隧道加密技術隱蔽C&C通訊流量加密
- 利用電話線進行WindowsNT RAS(轉)Windows
- 兄弟連區塊鏈教程區塊鏈資訊保安3橢圓曲線加解密及簽名演算法的技術原理二區塊鏈解密演算法
- 20 行 Python 程式碼實現加密通訊Python加密
- 直播系統程式碼,訊息傳送框設計成橢圓形狀