黃昊旻,宋景,姚固文
(貴陽學院機械工程學院,貴州 貴陽 550000)
當前市場上出現(xiàn)了只需繳納較少押金或者不需要繳納押金就可以獲得車輛一定期限內的使用權的共享汽車,這在一定程度上對市民的出行提供了便利方式的選擇。據(jù)統(tǒng)計截止2017年國內在運營的共享汽車已有4.5萬輛,在共享經(jīng)濟理念的推動下,共享汽車近幾年呈快速發(fā)展趨勢[1]。
根據(jù)共享汽車的共享性,要求車鑰匙要具備便利性,能實現(xiàn)租賃人隨時隨地可獲得鑰匙;也正因為共享性,為確保車輛財產的安全要求每次租賃人在使用完車輛后,鑰匙應該失效。目前共享汽車普遍采用的方式是對車輛進行權限分級管理方式,即通過手機方式獲取車輛進入權限,然后再通過短信告知車輛鑰匙位置獲取車輛啟動權,或者部分車輛是直接通過一鍵啟動方式啟動車輛。可以看出這種方式對車輛的財產安全來說這是一種弱保護,因此如何提高共享汽車的保護強度,真正實現(xiàn)車輛鑰匙的虛擬化,這對共享汽車的財產安全帶來了思考。
為實現(xiàn)車輛鑰匙的虛擬,可以考慮采用無證書驗證的方式來實現(xiàn),在無證書加密方式中橢圓曲線加密是一種較復雜的方式,對車輛保護帶來了極大的保障,從破譯角度來說也增加了許多難度,不過正由于橢圓曲線加密算法的復雜,也帶來了在工程應用中實現(xiàn)比較難的問題,如何在車輛防盜系統(tǒng)中實現(xiàn)橢圓加密算法正是文章進行的思考。
橢圓曲線是域上光滑射影曲線,形為式1的方程。
在等式中(1)中有
即:
通過式(2)和(3)可以發(fā)現(xiàn),如果已知λ與 a,根據(jù)加法法則求b相對而言比較輕松,但是如果知道的是b和a求λ則相對困難,因為這時候變成了乘法逆運算,相比加法而言除法運算具有了一定難度,加法的運算過程可以看作為加密過程,乘法的逆運算過程可以視為解密的過程[2]。正是這個困難的產生機制就正好成了橢圓曲線加密設計。
假設橢圓曲線上的兩個點為P,Q則坐標為:P=(x1,y1),Q=(x2,y2)[2]。用直線將P,Q兩點連接起來,延長線與橢圓曲線相交于另一點,記為R,那么R就是P,Q兩點的點加值。如圖1所示,R點坐標記為(x3,y3)。
如果x1=x2,則有兩種情況,第一是假如y1=- y2,則曲線上每點值在x軸上;第二是假如y1=y2≠0,此時P=Q。
借用特征為2的有限域GF(2m),對實現(xiàn)橢圓曲線加密的硬件處理來說更為高效,表示二進制元素較為直觀。
式中(am-1…a0)為元素的二進制串,用多項式基表示元素后,二進制域上元素基本運算規(guī)則是:
加法運算表達為:
乘法運算表達為:
求逆來說,對于有限域中的一個元素 e(x),如果可以找到一個元素r(x)使得式(13)成立則r(x)是元素e(x)的逆。
無證書身份的加密方案可由建立、密鑰提取、加密、解密四步構成[3]。
第一,建立。輸入可靠安全的參數(shù)λ,經(jīng)過密鑰發(fā)生器(PKG)輸出可以公布公共參數(shù)(PK)和自己保留的主密鑰(MSK)。
第二,密鑰提取。把前步所得到的公共參數(shù)(PK),主密鑰(MSK)和能表達自己身份信息的ID參數(shù)輸入,經(jīng)過密鑰發(fā)生器(PKG)計算,輸出得到自己身份信息所特有的密鑰(SKID)。
第三,加密。把需要發(fā)送的明文(M)與公布的公共參數(shù)(PK)以及明文接收者的身份信息(ID)一同輸入,仍然經(jīng)過私鑰發(fā)生器(PKG)計算得到了加密的密文(CT)。
第四,解密。當密文接收者需要閱讀明文時,輸入公共參數(shù)(PK)及自己特有的密鑰(SKID),經(jīng)過密鑰發(fā)生器(PKG)計算則輸入了發(fā)送的明文讓接收者閱讀。
為確保后續(xù)的工作能有序開展,預先對加密算法如何在車輛中實現(xiàn)進行方案設計,主要的構想方案與當前車輛采用的方案一致,以虛擬鑰匙的方式作為車輛防盜啟動與解除的方案,用戶通過鑰匙發(fā)送車輛狀態(tài)信息,接收芯片對鑰匙發(fā)出的信息進行解密配對,如果配對成功,車輛啟動成功。詳細見圖2方案設計架構。在方案中,車輛的虛擬鑰匙擬采用藍牙傳輸?shù)姆绞竭M行信號發(fā)送,當車輛鑰匙發(fā)出信號時,實際上是通過鑰匙發(fā)出自己特有的密鑰向解密芯片提出解密請求,車輛內安裝的芯片接收到相關信息后,通過解碼模塊完成身份的對比,如果身份驗證成功則視為信號有效,完成對車輛防盜系統(tǒng)的啟動或關閉,具體結構見圖1硬件結構圖。
圖1 硬件架構圖Fig.1 the structure of the hardware
圖2 方案設計架構Fig.2 the structure of the design
從提出的設計方案來看,為實現(xiàn)車輛橢圓曲線加密算法,首要的工作在于對車輛內預先安裝的芯片如何實現(xiàn)相關運算的進行設計。
橢圓曲線加密算法,從實質上來說屬于數(shù)學運算,這么一來,為實現(xiàn)橢圓曲線的加密運算,選用了主控、運算控制、運算、存儲四個模塊來完成[4]。
圖3 芯片模塊組成Fig.3 the structure of the chip
四個模塊中,分別承擔不同任務,確保在實現(xiàn)的運算過程中正常有序,詳見結構圖 3。首先,主控模塊把加密運算中的每一個操作步驟進行編碼并把每個運算動作細分傳送給運算控制模塊。然后運算控制模塊根據(jù)主控模塊的的指令,把信息轉化為下一步運算模塊能識別的信號,傳給運算模塊,讓運算模塊根據(jù)傳遞過來的運算時序完成運算并輸出結果,這期間由于信息的步驟繁瑣,就需要存儲模塊把相關信息進行存儲,便于下一步操作時,數(shù)據(jù)的隨時調用。通過運算模塊的結構可以看到,運算模塊由四個小模塊組成[5],詳見圖4運算模塊結構圖。運算模塊接收到的操作指令信號主要來于運算控制模塊,運算模塊根據(jù)信號完成相應的數(shù)學運算,當運算完畢后并向運算控制模塊發(fā)送信息,使得運算控制模塊發(fā)送下一步執(zhí)行動作,在運算過程中運算模塊所需的運算數(shù)據(jù)是通過對存儲模塊的讀寫操作來完成的數(shù)據(jù)傳遞。
完成模塊的任務劃分后,對相應模塊進行端口信號的定義,以方便后期仿真的操作。對欲實現(xiàn)的Koblitz曲線的運算,曲線中點乘法的運算可以轉為平方根來進行計算,故在運算模塊中沒有點乘的運算處理。
圖4 運算模塊結構Fig.4 structure of the computation
整個系統(tǒng)主要是由控制模塊來進行控制,運算模塊中,每完成一次的運算后,均會把每次計算出數(shù)據(jù)對存儲模塊進行讀寫,同時也會在控制模塊指令下讀取新數(shù)據(jù)。直到運算模塊接收到了運算結束指令為至,運算任務才算完成。
橢圓曲線加密和現(xiàn)在車輛上常見的加密方法相比,有著安全性高、占用存儲空間小、密鑰長度更短等優(yōu)點。在車輛防盜的思路中,運用橢圓曲線的加密方法,首先可以確保車輛的門鎖和解密器之間可靠的一一對應關系,其次橢圓曲線加密方法在公鑰上是公開的但在解碼過程中密鑰是不可見的,所以保密性極高。因此在車輛防盜中引入這種加密方法可以極大提高車輛被盜的難度。
在硬件搭建過程中,文章有幾點啟示:
(1)通過對芯片運算過程的仿真基本實現(xiàn)了橢圓曲線加密和解密過程,過程中運用的是一個256位數(shù)據(jù)通過32位接收寬度的8周期數(shù)據(jù)傳遞完成仿真,因設計的主要對象是考慮在汽車防盜系統(tǒng)中進行應用,所以根據(jù)對車輛防盜系統(tǒng)的正常操作時間為參考樣本,沒有進行更高位數(shù)據(jù)傳遞加密解密的運算操作,不過可以明顯看出就目前256位數(shù)據(jù)的傳遞相對當前車輛的防盜系統(tǒng)操作時間而言都具有一定差距,因此在運算過程中存儲模塊數(shù)據(jù)優(yōu)化的程度,決定了到整個運算過程實現(xiàn)的快慢,所以存儲模塊要對數(shù)據(jù)進行較好的優(yōu)化。
(2)在運算過程中,假如運算狀態(tài)較為復雜時,因無法準確得知操作完成的周期數(shù),要注意檢測返回的運算結束信號是否有效。
(3)在本次的方案設計中,主要是以車輛防盜系統(tǒng)的角度進行考慮,故沒有考慮多驅動的問題,但此類問題可以通過在運算模塊和存儲模塊之間加入數(shù)據(jù)流的控制模塊,確保數(shù)據(jù)的準確性來解決。