隨著計算機信息處理能力的不斷提高,對密鑰長度的要求也越來越高,這個問題對於存儲能力受限的系統來說顯得尤為突出。
橢圓曲線密碼體制(ECC)的提出改變了這種狀況,它可以用更短的密鑰提供與其他體制相當的或者更高級的安全,並已成為迄今被實踐證明安全、有效、應用較廣的3種公鑰密碼體制之一。本文將繼續為大家介紹基於橢圓曲線的數字籤名方案。
❶
橢圓曲線
橢圓曲線在代數學和幾何學上,已被廣範研究了150年之久,有堅實的理論基礎。
所謂橢圓曲線是指維爾斯特斯拉(Weierstrass)方程:
所確定的平面曲線,其中a、b、c、d、e屬於域F,其可以是有理數域Q、複數域C,還可以是有限域GF(p)。
橢圓曲線是其上所有點(x、y)的集合,外加一個無窮遠點O(定義橢圓曲線上一個特殊的點,記為O,它為仿射平面無窮遠的點,稱為無窮遠點。在xOy平面上,可以看做平行於y軸的所有直線的集合的一種抽象)。
密碼學中普遍採用的是有限域上的橢圓曲線,它是指橢圓曲線方程定義式中,所有的係數都是在某一有限域GF(p)中的元素。它最簡單的公式為:
該橢圓曲線上只有有限個離散點,設為N,則N稱為橢圓曲線的階為N。N越大,安全性越高。基於此,橢圓曲線的圖示可以表示如下:
當然,基於不同變量值,橢圓曲線還有其他的表示形式:
當我們仔細觀察這些曲線時,能發現一些有趣特性:(1)對稱性,即曲線上的任何一點都可以在x軸上反射,並保持曲線不變;(2)任何非垂直直線與曲線的交點至多有三個。
我們可以把這條曲線想像成一場桌球遊戲。在曲線上取任意兩點並通過它們畫一條直線,它將與曲線相交於另一個位置。在這個桌球遊戲中,你在A點拿一個球,把它射向B點,當它擊中曲線時,球要麼直接向上反彈(如果它在x軸以下),要麼直接向下反彈(如果它在x軸以上)到曲線的另一邊。我們可以把球看做在兩個點間移動,曲線上的任意兩點碰撞可得到一個新的點。
A·B = C
或者可以用某一個點自身不斷碰撞出新的點。
A·A = B
A·B = C
A·C = D
……
在這個過程中,一個初始點經由n次運算會得到最後到達的點,當你只知道這兩個點的值,要找出n是很難的。
這就像一個人在房間裡隨機玩一段時間桌球遊戲,對他而言,按照上面描述的規則一遍又一遍地擊球是很容易的。但如果有人走進房間,球剛好結束到達一個點,即使他知道所有的遊戲規則,以及球從哪個點開始,也不能確定球到達此處所被擊中的次數。容易正向計算,難以反向計算,這也是陷門函數的基礎。