梁峰源 唐建云 滿熊 劉順 陳紀(jì)銘*
1.湖南工學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院 湖南衡陽(yáng) 421002; 2.湖南省東安縣第一中學(xué) 湖南永州 425900
近年來,在鄉(xiāng)村特產(chǎn)溯源過程中,面臨著由于網(wǎng)絡(luò)協(xié)議不夠完善而導(dǎo)致溯源信息不準(zhǔn)確、溯源記錄可能被竊取等安全問題。為解決智能合約在設(shè)計(jì)與加密傳輸過程中可能出現(xiàn)的安全問題,本文提出一種基于橢圓加密算法(ECC)的雙向認(rèn)證方式,作為系統(tǒng)中用戶認(rèn)證方式,利用ECC的雙向認(rèn)證方式結(jié)合智能合約協(xié)議保障鄉(xiāng)村特產(chǎn)溯源系統(tǒng)的安全、可靠,進(jìn)而來確保交易安全性。
智能合約技術(shù)已廣泛應(yīng)用在數(shù)據(jù)存儲(chǔ)體系、跨境電商溯源、醫(yī)保系統(tǒng)等領(lǐng)域。2021年,梁秀波、吳俊涵等人將智能合約技術(shù)應(yīng)用于隱私保護(hù),安全存儲(chǔ),加強(qiáng)了數(shù)據(jù)存儲(chǔ)的安全性[1];2020年,高陽(yáng)陽(yáng)等人采用了多方參與驗(yàn)證的方式,使用區(qū)塊鏈技術(shù)建立了溯源數(shù)據(jù)可信程度較高的機(jī)制[2]。智能合約的提出者尼克·薩博將智能合約協(xié)議的實(shí)現(xiàn)分為協(xié)定、形式化、執(zhí)行三個(gè)步驟;他提出“智能合約是一套以數(shù)字形式定義的承諾,包括合約參與方可以在上面執(zhí)行這些承諾的協(xié)議”[3],被稱為1.0階段。2013年,以太坊將能夠自動(dòng)執(zhí)行的技術(shù)運(yùn)用到智能合約上,進(jìn)入了2.0階段???rùn)提出橢圓曲線密碼與機(jī)器學(xué)習(xí)在基于MQTT協(xié)議的物聯(lián)網(wǎng)安全通信中的應(yīng)用方法[4],證明了基于ECC加密的智能合約的安全性。
為解決供應(yīng)鏈較多時(shí)無(wú)法及時(shí)更新信息等問題,通過智能合約實(shí)現(xiàn)對(duì)供應(yīng)鏈內(nèi)各環(huán)節(jié)的智能監(jiān)控約束,提高效率和有效性。系統(tǒng)存在生產(chǎn)者/農(nóng)民、加工商、經(jīng)銷商、消費(fèi)者、監(jiān)管部門等多種角色。監(jiān)管部門作為管理員,維護(hù)系統(tǒng)的正常運(yùn)轉(zhuǎn)。為減少惡意節(jié)點(diǎn)的出現(xiàn),本系統(tǒng)采用信譽(yù)評(píng)估算法,對(duì)賬戶進(jìn)行信譽(yù)評(píng)估,當(dāng)其信譽(yù)過低時(shí)則阻止賬戶操作。對(duì)系統(tǒng)內(nèi)各主體合約設(shè)計(jì)為:農(nóng)民生產(chǎn)農(nóng)產(chǎn)品并上傳生產(chǎn)信息→加工商進(jìn)行加工并上傳加工信息→銷售商倉(cāng)儲(chǔ)、運(yùn)輸,過濾掉不合法信息→消費(fèi)者通過溯源碼查看溯源信息。數(shù)據(jù)采集的具體環(huán)節(jié)為:
農(nóng)民對(duì)特產(chǎn)進(jìn)行種植之前初次申請(qǐng)本系統(tǒng)生產(chǎn)者賬號(hào),申請(qǐng)通過則合約生成,系統(tǒng)自動(dòng)創(chuàng)建生產(chǎn)者區(qū)塊。用戶必須上傳其種植原料的詳細(xì)信息,種植期間,記錄原料的生長(zhǎng)狀況及環(huán)境監(jiān)測(cè)數(shù)據(jù)等;采收期間,挑選優(yōu)質(zhì)的原料并記錄。采收結(jié)束前,農(nóng)戶都可對(duì)原料信息、農(nóng)事操作、環(huán)境監(jiān)測(cè)等信息做修改,采收結(jié)束并確認(rèn)后,表明系統(tǒng)智能合約的正式建立,農(nóng)戶將不能修改存儲(chǔ)的數(shù)據(jù)。
加工商對(duì)原料進(jìn)行篩選,記錄原料信息、加工操作等詳細(xì)信息,加工完成后需在本溯源系統(tǒng)中對(duì)加工操作進(jìn)行確認(rèn)。加工商在加工期間可對(duì)加工產(chǎn)品的信息進(jìn)行修改,但在質(zhì)檢合格后,數(shù)據(jù)將無(wú)法再進(jìn)行更改。同時(shí),加工商賬號(hào)的權(quán)限只能查詢其負(fù)責(zé)產(chǎn)品的相關(guān)溯源信息。
加工商實(shí)質(zhì)上作為產(chǎn)品存儲(chǔ)單位,為避免環(huán)境因素導(dǎo)致產(chǎn)品的損耗,存儲(chǔ)單位需定期檢測(cè)并及時(shí)淘汰不合格產(chǎn)品,將此產(chǎn)品信息在本溯源系統(tǒng)內(nèi)標(biāo)記備注。
銷售商需對(duì)鄉(xiāng)村特產(chǎn)運(yùn)輸過程中的數(shù)據(jù)做具體記錄,包括在運(yùn)輸過程中運(yùn)輸?shù)穆肪€、運(yùn)輸時(shí)長(zhǎng)等信息。在到達(dá)目的地后信息將不可更改。消費(fèi)者在購(gòu)買該產(chǎn)品時(shí)可通過二維碼來查詢農(nóng)產(chǎn)品的生產(chǎn)、運(yùn)輸、銷售信息。銷售商可查詢其銷售特產(chǎn)的上游溯源信息,但不能更改。
對(duì)鄉(xiāng)村特產(chǎn)溯源系統(tǒng)存儲(chǔ)數(shù)據(jù)的過程進(jìn)行分層,如圖1所示,智能合約作為核心層,一方面需要驗(yàn)證用戶需要存儲(chǔ)的數(shù)據(jù)是否合法,防止無(wú)效數(shù)據(jù)流入?yún)^(qū)塊;另一方面,為了防止非法用戶惡意竊取數(shù)據(jù),在用戶讀取數(shù)據(jù)前需要先對(duì)用戶的身份進(jìn)行判斷。
圖1 鄉(xiāng)村特產(chǎn)溯源系統(tǒng)數(shù)據(jù)分層結(jié)構(gòu)
身份認(rèn)證所使用的技術(shù)是數(shù)字簽名技術(shù),常見的算法有三種:對(duì)稱密鑰加密算法、非對(duì)稱密鑰加密算法,以及對(duì)稱密鑰加密算法和非對(duì)稱密鑰加密算法相結(jié)合的算法。
本系統(tǒng)在各節(jié)點(diǎn)間數(shù)據(jù)共識(shí)之前必須通過身份數(shù)字簽名對(duì)其身份進(jìn)行合法認(rèn)證,本文研究的身份認(rèn)證策略是將身份認(rèn)證和密鑰協(xié)商結(jié)合起來,需要通信各方節(jié)點(diǎn)確認(rèn)對(duì)方的身份合法性,然后建立起一個(gè)會(huì)話密鑰,并進(jìn)行通信,各節(jié)點(diǎn)均根據(jù)這個(gè)會(huì)話密鑰對(duì)通信內(nèi)容進(jìn)行加密,確保整個(gè)會(huì)話的安全。
系統(tǒng)身份認(rèn)證方案的數(shù)字簽名流程:
(1)系統(tǒng)初始化。由于非對(duì)稱加密算法中加密、解密需要使用公鑰加密、私鑰解密,而公私鑰需要隨機(jī)生成,在通信之前選取一段字符串作為安全參數(shù),然后根據(jù)安全參數(shù)生成系統(tǒng)公鑰和私鑰。
(2)用戶私鑰生成。用戶將系統(tǒng)初始化時(shí)生成的身份標(biāo)識(shí)ID和安全參數(shù)發(fā)送給鄉(xiāng)村特產(chǎn)溯源系統(tǒng),系統(tǒng)利用用戶身份ID,安全參數(shù)以及系統(tǒng)私鑰為用戶生成私鑰,并將該用戶私鑰通過ECC加密的方式安全地回送給用戶。
(3)數(shù)字簽名生成。給定消息m,簽名者隨機(jī)選取一個(gè)安全參數(shù),并利用其私鑰和系統(tǒng)參數(shù)生成對(duì)消息m的數(shù)字簽名報(bào)文。
(4)數(shù)字簽名驗(yàn)證。接收方接收發(fā)送方的數(shù)字簽名以及發(fā)送的信息m,利用簽名者的公鑰、系統(tǒng)參數(shù)和消息m來進(jìn)行解密,通過解密出來的數(shù)字簽名來核實(shí)發(fā)送方的身份的真實(shí)性,從而確保自己收到的信息是安全、有效的。
隨著信息化、物聯(lián)網(wǎng)、5G等技術(shù)的興起,人們?cè)谏罟ぷ髦兴a(chǎn)生的數(shù)據(jù)也急劇增加,隨之而來的就是在數(shù)據(jù)傳輸過程中的安全問題。本系統(tǒng)采用ECC加密算法作為安全保障,合法用戶只需要通過本鄉(xiāng)村特產(chǎn)溯源系統(tǒng)給其派發(fā)的密鑰就能將密文轉(zhuǎn)換成明文。加密算法的復(fù)雜度的高低就決定整個(gè)數(shù)據(jù)傳輸存儲(chǔ)的數(shù)據(jù)的安全性高低。通過類似的手段不僅可以達(dá)到數(shù)據(jù)不被非法訪問的功能,還能一定程度上解決數(shù)據(jù)被非法篡改。常見的加密算法如下。
(1)對(duì)稱加密算法。對(duì)稱加密算法因?yàn)橹挥幸环N密鑰,在加密方和解密方都是使用同一個(gè)密鑰進(jìn)行加密或者解密,而被稱之為對(duì)稱加密算法。對(duì)稱加密算法的密鑰長(zhǎng)度一般都較短,例如,AES加密算法的密鑰長(zhǎng)度一般為128位,較短的密鑰長(zhǎng)度能夠減少計(jì)算機(jī)的計(jì)算難度,加快計(jì)算效率。由于加密和解密都是使用同一個(gè)密鑰,所以密鑰如何傳輸、傳輸是否安全成為對(duì)稱加密算法中最大的問題,如果密鑰泄露或者被破解將會(huì)產(chǎn)生較大的安全問題。
(2)非對(duì)稱式加密算法。在非對(duì)稱加密算法中有兩種不同的密鑰,用于加密的公鑰和用于解密的私鑰?!肮€”可以通過互聯(lián)網(wǎng)對(duì)外公開,“私鑰”只能由接收方私有。在非對(duì)稱加密算法中接收方需要先生成公鑰和私鑰,再通過互聯(lián)網(wǎng)將公鑰發(fā)送給發(fā)送方,因?yàn)楣€是可以發(fā)送給任何人的,發(fā)送方將需要發(fā)送的信息用公鑰加密,并將密文傳送給接收方,接收方收到通過公鑰加密的密文后,需要使用單獨(dú)持有的私鑰才能夠進(jìn)行解密,保證信息的安全。非對(duì)稱密鑰算法的優(yōu)點(diǎn):通過較短的公鑰對(duì)需要傳輸?shù)臄?shù)據(jù)進(jìn)行加密,加密速度快;密鑰的發(fā)布較為簡(jiǎn)單、方便、快捷;可借助現(xiàn)有的公鑰加密體系,降低算法復(fù)雜度;用戶在解密時(shí)不需要發(fā)送方的密鑰。非對(duì)稱密鑰算法的缺點(diǎn):由于私鑰長(zhǎng)度比較長(zhǎng),例如,常見的非對(duì)稱式加密算法RSA算法的密鑰長(zhǎng)度為2048位,較長(zhǎng)的密鑰長(zhǎng)度會(huì)使解密的過程變得較為復(fù)雜,并且會(huì)消耗更多的計(jì)算機(jī)資源和性能,而對(duì)稱式加密算法的密鑰較短,例如,加密過程較為簡(jiǎn)單的AES加密算法,其密鑰長(zhǎng)度一般為128位。較長(zhǎng)的密鑰計(jì)算難度比較大,使得在使用非對(duì)稱式加密算法來進(jìn)行加密和解密時(shí),速度較慢,耗時(shí)較長(zhǎng)。
本系統(tǒng)為防止生產(chǎn)者、運(yùn)輸者、加工者的過程數(shù)據(jù)被竊取,采用ECC非對(duì)稱式加密算法,對(duì)數(shù)據(jù)進(jìn)行加密。橢圓曲線(ECC)加密算法相較于應(yīng)用廣泛的RSA加密算法,擁有加密速度快、幾乎不可破解等優(yōu)勢(shì)。本系統(tǒng)通過橢圓曲線加密算法(ECC)來保證系統(tǒng)中數(shù)據(jù)的安全性和智能合約的可靠性。具體實(shí)現(xiàn)步驟如下:
定義一個(gè)橢圓曲線Ep(a,b),其中p為任意選取的質(zhì)數(shù),x,y∈[0,p-1],橢圓曲線方程如下:
y2=x3+ax+b(modp)
(1)
將橢圓曲線的階定義為N,并在橢圓曲線中選定任意一點(diǎn)t,規(guī)定kt為k個(gè)t點(diǎn)相加的和,橢圓曲線的解密問題就是通過t和kt找到系數(shù)k的值。從(1)式中定義的橢圓曲線中找一點(diǎn)g作為基點(diǎn),通過對(duì)g點(diǎn)多次累加可得:
?t∈E(F)p,?k∈[1,n]=>k×g=t
(2)
點(diǎn)t作為加密算法中的公鑰,可以隨意公開,點(diǎn)k作為加密算法中的私鑰,由接收方保存。ECC非對(duì)稱加密方式避免了密文被黑客破解。在本鄉(xiāng)村特產(chǎn)溯源系統(tǒng)中模擬用戶進(jìn)行個(gè)人信息的輸入,并使用wireshark抓包軟件模擬黑客對(duì)用戶發(fā)送的信息進(jìn)行破解,如圖2所示,我們將抓取到的包進(jìn)行解析得到如圖3所示的密文,該密文只能通過用戶的私鑰才能解密,從而保證了本鄉(xiāng)村特產(chǎn)溯源系統(tǒng)中信息傳輸?shù)陌踩浴?/p>
圖3 加密報(bào)文
數(shù)字簽名可以用來驗(yàn)證發(fā)送方的身份信息。本鄉(xiāng)村特產(chǎn)溯源系統(tǒng)采用ECC加密算法進(jìn)行數(shù)字簽名,數(shù)字簽名完成后通信雙方就可以驗(yàn)證對(duì)方身份的真?zhèn)?,并獲取真實(shí)無(wú)誤的數(shù)據(jù)。在本鄉(xiāng)村特產(chǎn)溯源系統(tǒng)中,運(yùn)輸方可以通過數(shù)字簽名驗(yàn)證生產(chǎn)方,也就是農(nóng)戶的身份,并通過智能合約獲取運(yùn)輸農(nóng)產(chǎn)品的各項(xiàng)信息;加工方可以通過數(shù)字簽名驗(yàn)證運(yùn)輸方的身份,并通過智能合約獲得運(yùn)輸方運(yùn)輸農(nóng)產(chǎn)品的信息;銷售方可以通過數(shù)字簽名驗(yàn)證加工方、運(yùn)輸方、生產(chǎn)方的身份,通過智能合約核對(duì)銷售農(nóng)產(chǎn)品的各項(xiàng)信息,確保銷售商品各項(xiàng)信息的準(zhǔn)確無(wú)誤;消費(fèi)者可以通過數(shù)字簽名來驗(yàn)證生產(chǎn)方、運(yùn)輸方、加工方、銷售方的身份,通過智能合約獲得該農(nóng)產(chǎn)品的所有信息。在以上環(huán)節(jié)中ECC加密算法作為數(shù)字簽名和智能合約的核心,能夠保證信息的安全性,從而提高本鄉(xiāng)村特產(chǎn)溯源系統(tǒng)的安全性。
以上流程中主客體間獲取數(shù)據(jù)的過程對(duì)應(yīng)著智能合約實(shí)現(xiàn)步驟和對(duì)應(yīng)關(guān)系,如圖4所示。
圖4 溯源系統(tǒng)中通信主體
在整個(gè)鄉(xiāng)村特產(chǎn)溯源系統(tǒng)的安全性設(shè)計(jì)中,智能合約是整個(gè)系統(tǒng)的靈魂,身份認(rèn)證,數(shù)據(jù)加密是系統(tǒng)的安全保障。智能合約規(guī)定了各個(gè)主體的具體權(quán)限及對(duì)應(yīng)的操作,流程中主客體通過智能合約獲取數(shù)據(jù),保障溯源系統(tǒng)的正確運(yùn)行以及各主體的數(shù)據(jù)隱私和共享問題。通過ECC加密的數(shù)字簽名對(duì)網(wǎng)絡(luò)中的節(jié)點(diǎn)進(jìn)行身份的認(rèn)證,防止不合法用戶的非法操作。并利用區(qū)塊鏈的分布式特點(diǎn),保障數(shù)據(jù)在存儲(chǔ)安全,使用ECC加密的方式對(duì)數(shù)據(jù)加密,保障鄉(xiāng)村特產(chǎn)溯源系統(tǒng)中數(shù)據(jù)的安全性。