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