利用橢圓曲線進行加密通訊
一個利用橢圓曲線進行加密通訊的過程:
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橢圓曲線加密加密
- 橢圓曲線加法原理計算
- 橢圓曲線加密演算法中公鑰與私鑰互換性分析加密演算法
- 橢圓曲線公鑰密碼演算法原理入門密碼演算法
- 【Openxml】將Openxml的橢圓弧線arcTo轉為Svg的橢圓弧線XMLSVG
- 密碼學中的RSA演算法與橢圓曲線演算法密碼學演算法
- Fabric 1.0原始碼分析(46)ECDSA(橢圓曲線數字簽名演算法)原始碼演算法
- HarmonyOS Next 橢圓曲線密碼學應用:ECC 與 SM2 深入剖析密碼學
- WEBGL橢圓Web
- 一般橢圓方程和平移橢圓方程
- 圓錐曲線15
- 圓錐曲線14
- 乾元通與橢圓時空簽訂戰略合作協議 推進融合通訊賦能升級協議
- 當今最複雜的橢圓曲線找到了!29個獨立有理點打破18年記錄
- 在Dubbo-go中使用TLS加密進行安全通訊GoTLS加密
- Python 在PDF中繪製線條、矩形、橢圓形Python
- SVG <ellipse> 繪製橢圓SVG
- CAD繪圖工具——橢圓繪圖
- Vue 中利用 eventBus 進行資料通訊的問題Vue
- 兄弟連區塊鏈教程Fabric1.0原始碼分析ECDSA橢圓曲線數字簽名演算法區塊鏈原始碼演算法
- 兄弟連區塊鏈教程區塊鏈資訊保安3橢圓曲線加解密及簽名演算法的技術原理二區塊鏈解密演算法
- Android Socket連線,使用Socket進行通訊(Android)Android
- 基於surging 如何利用peerjs進行語音視訊通話JS
- CSS繪製橢圓程式碼CSS
- CAD橢圓弧命令如何使用
- 區塊鏈背後的資訊保安(3)橢圓曲線加解密及簽名演算法的技術原理及其Go語言實現區塊鏈解密演算法Go
- 為行動通訊爭一先:Massive MIMO的進化三部曲
- Python中OpenCV劃線、畫圓、橢圓、新增文字等幾何圖形繪製操作PythonOpenCV
- 通過串列埠進行通訊 :串列埠
- CSS橢圓效果程式碼例項CSS
- 請使用canvas畫一個橢圓Canvas
- 計算兩豎直直線與橢圓圍成部分面積
- Qt 求圓和橢圓上任意角度點的座標QT
- 20 行 Python 程式碼實現加密通訊Python加密
- 利用SSH隧道加密技術隱蔽C&C通訊流量加密
- 利用classfinal-maven-plugin對jar進行加密,防止反編譯MavenPluginJAR加密編譯
- 使用SuperSocket的FixedHeaderReceiveFilter進行通訊HeaderFilter