幾何學基礎
- 歐式幾何
- 從一點向另一點可以引一條直線,
- 任意線段能無限延伸成一條直線,
- 給定任意線段,可以以其一個端點作為圓心,該線段作為半徑作一個圓,
- 所有直角都相等,
- 若兩條直線都與第三條直線相交,并且在同一邊的內角之和小于兩個直角,則這兩條直線在這一邊必定相交,
- 羅巴切夫斯基幾何
- 第五公設不能被證明,
- 在新的公理體系中展開的一連串推理,得到了一系列在邏輯上無矛盾的新的定理,并形成了新的理論,這個理論像歐氏幾何一樣是完善的、嚴密的幾何學,
- 黎曼幾何
對于三維空間,有以下三種情形:
- 曲率恒等于零
- 曲率為負常數
- 曲率為正常數
前兩種情形分別對應于歐幾里得幾何學和羅巴切夫斯基幾何學,而第三種情形則是黎曼本人的創造,它對應于另一種非歐幾何學,黎曼的這第三種幾何就是用命題“過直線外一點所作任何直線都與該直線相交”代替第五公設作為前提,保留歐氏幾何學的其他公理與公設,經過嚴密邏輯推理而建立起來的幾何體系,這種幾何否認“平行線”的存在,是另一種全新的非歐幾何,這就是如今狹義意義下的黎曼幾何,它是曲率為正常數的幾何,也就是普通球面上的幾何,又叫球面幾何,
橢圓曲線
定義:一條橢圓曲線就是一組被 \(y^2 = x^3 + ax + b\) 定義的且滿足 \(4a3+27b2≠0\) 的點集,
橢圓曲線加法(非有限域):
在橢圓曲線上取一點P(Xp,Yp),再取一點Q(Xq,Yq),連接P、Q兩點作一條直線,這條直線將在橢圓曲線上交于第三點G,過G點作垂直于X軸的直線,將過橢圓曲線另一點R(一般是關于X軸對稱的點),R點則被定義為P+Q的結果,既P+Q=R:
橢圓曲線加法(有限域):
公式如下
Xr = (λ2 - Xp - Xq) mod p
Yr = (λ(Xp - Xr) - Yp) mod p
橢圓曲線乘法:
乘法簡化成加法
伽羅瓦域
有限域亦稱伽羅瓦域(galois field),是僅含有限個元素的域,它是伽羅瓦(Galois,E.)于18世紀30年代研究代數方程根式求解問題時引出的.有限域的特征數必為某一素數p,因此它含的素域同構于Zp.若F是特征為p的有限域,則F中元素的個數為p?,n為某一正整數.元素個數相同的有限域是同構的.因此,通常用GF(p?)表示p?元的有限域.GF(p?)的乘法群是(p?-1)階的回圈群.
有限域橢圓曲線點的階
如果橢圓曲線上一點P,存在最小的正整數n使得數乘 \(n P = O ∞ ?\) ,則將n稱為P的階
若n不存在,則P是無限階的.
加密原理
考慮 \(K=kG\) ,其中K、G為橢圓曲線Ep(a,b)上的點,n為G的階(\(nG=O∞ \)? ),k為小于n的整數,則給定k和G,根據加法法則,計算K很容易但反過來,給定K和G,求k就非常困難,因為實際使用中的ECC原則上把p取得相當大,n也相當大,要把n個解點逐一算出來列成上表是不可能的,這就是橢圓曲線加密演算法的數學依據 ,
-
點G稱為基點(base point)
-
\(k(k<n)\) 為私有密鑰(private key)
-
K為公開密鑰(public key)
下面是利用橢圓曲線進行加密通信的程序:
- 用戶A選定一條橢圓曲線Ep(a,b),并取橢圓曲線上一點,作為基點G,
- 用戶A選擇一個私有密鑰k,并生成公開密鑰K=kG,
- 用戶A將Ep(a,b)和點K,G傳給用戶B,
- 用戶B接到資訊后 ,將待傳輸的明文編碼到Ep(a,b)上一點M(編碼方法很多,這里不作討論),并產生一個隨機整數r(r<n),
- 用戶B計算點 \(C1 = M + r K \)和\(C2 = M + r K \),
- 用戶B將 C 1 、 C 2傳給用戶A,
- 用戶A接到資訊后,計算 \(C 1 ? k C 2\) ?,結果就是點M,再對點M進行解碼就可以得到明文, 因為\( C 1 ? k C 2 = M + r K ? k ( r G ) = M + r k G ? k r G = M\)
密鑰交換ECDH
ECDH使得交換雙方可以在不共享任何秘密的情況下協商出一個密鑰,密鑰磋商程序:
假設密鑰交換雙方為Alice、Bob,有相同的橢圓曲線,
- Alice生成亂數私鑰a,計算a*G, 生成Alice公鑰
- Bob生成亂數私鑰b,計算b*G, 生成Bob公鑰
- Alice將公鑰aG和基點G傳遞給Bob,竊聽者C可以獲取公鑰aG和基點G,
- Bob將bG傳遞給Alice,同理,竊聽者C同樣可以獲得bG,
- Bob收到Alice傳遞過來的公鑰a*G,計算Q =baG;
- Alice收到Bob傳遞的公鑰b*G,計算Q=abG,竊聽者C可以獲得G、aG、bG但是得不到abG
簽名
用私鑰 a 對訊息 m簽名,得到的結果是兩個整數 (r,s),計算程序如下,
- 隨機生成臨時私鑰 k,并計算其對應的公鑰 K=k?G=(xK,yK)
- 計算 \(r=xK mod n\),若 r為 0,則回到第一步
- 計算訊息 m的哈希 e=hash(m),并將 e的二進制序列轉成一個整數
- 計算\( s=k?1(e+ra)modn\),若 s為 0,則回到第一步
- 得到簽名 (r,s)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/556526.html
標籤:其他
下一篇:返回列表
