亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于區(qū)塊鏈的投票系統(tǒng)設計*

        2018-07-26 02:19:44郄九玲
        通信技術(shù) 2018年7期
        關鍵詞:鏈式應用層哈希

        郄九玲,胡 浩

        (南京郵電大學,江蘇 南京 210003)

        0 引 言

        沒有調(diào)查就沒有發(fā)言權(quán)。投票調(diào)查在生活中扮演著重要角色。但是,現(xiàn)有的線上投票系統(tǒng)依然存在一些不容忽視的問題。比如,系統(tǒng)管理者可能會為了利益而惡意修改數(shù)據(jù);系統(tǒng)可能遭受黑客的攻擊。現(xiàn)有線上投票系統(tǒng)的公正性和安全性,完全依賴網(wǎng)站本身的安全和信譽度。而區(qū)塊鏈具有去中心化、數(shù)據(jù)不可篡改、安全可信的特點,數(shù)據(jù)一旦存入?yún)^(qū)塊鏈,就無法篡改。區(qū)塊鏈是不可篡改、真實可信的數(shù)據(jù)庫,因此區(qū)塊鏈技術(shù)是保證投票系統(tǒng)公正性和安全性的最佳方案。

        1 認識區(qū)塊鏈

        狹義來講,區(qū)塊鏈[1]是一種按照時間順序?qū)?shù)據(jù)區(qū)塊以鏈式結(jié)構(gòu)組合成特定數(shù)據(jù)結(jié)構(gòu),并以密碼學方式保證不可篡改和不可偽造的去中心化共享賬本,能夠安全存儲有先后關系的、能在系統(tǒng)內(nèi)驗證的數(shù)據(jù)。

        廣義上的區(qū)塊鏈[2]是利用加密鏈式區(qū)塊結(jié)構(gòu)來驗證與存儲數(shù)據(jù)、利用分布式節(jié)點共識算法來生成和更新數(shù)據(jù)、利用自動化腳本代碼(智能合約)來編程和操作數(shù)據(jù)的,一種全新的去中心化基礎架構(gòu)與分布式計算范式。

        區(qū)塊鏈是不可篡改和不可偽造的去中心化共享賬本,具有去中心化、去信任化、安全可信等特點[3]。

        (1)去中心化。區(qū)塊鏈網(wǎng)絡中的所有節(jié)點共同提供服務,參與網(wǎng)絡中數(shù)據(jù)的驗證、記賬、存儲、維護和傳輸?shù)冗^程。網(wǎng)絡中不存在擁有特殊權(quán)利的中心節(jié)點,從而形成去中心化的分布式系統(tǒng)。

        (2)去信任化。區(qū)塊鏈網(wǎng)絡中的信任由數(shù)學算法來背書。區(qū)塊鏈網(wǎng)絡中的節(jié)點互相交換數(shù)據(jù)時,不需要了解對方的可信度,通過數(shù)學算法建立信任。網(wǎng)絡中的數(shù)據(jù)可驗證,各節(jié)點欺騙不了其他節(jié)點。區(qū)塊鏈系統(tǒng)運行公開透明,數(shù)據(jù)可查[4]。

        (3)安全可信。區(qū)塊鏈通過數(shù)字簽名技術(shù)、基于時間戳的鏈式結(jié)構(gòu)和分布式系統(tǒng)共識算法聚合的強大算力,保證區(qū)塊鏈數(shù)據(jù)的安全可信,不可篡改。區(qū)塊鏈以分布式存儲數(shù)據(jù),每個節(jié)點都存儲網(wǎng)絡中生成的數(shù)據(jù),相當于數(shù)據(jù)有了很多備份。P2P網(wǎng)絡中的各個節(jié)點存儲著完全相同的數(shù)據(jù),除非攻擊者控制P2P網(wǎng)絡中超過一定比例(比特幣為51%,數(shù)學證明不可行)的節(jié)點[5],否則任何單個節(jié)點惡意修改數(shù)據(jù),都不會影響整個網(wǎng)絡數(shù)據(jù)的正確性。

        2 系統(tǒng)需求分析和架構(gòu)設計

        2.1 需求分析

        2.1.1 研究目標

        為了滿足個人、企業(yè)、機構(gòu)及政府的意見調(diào)研需求,需設計一個公平、公正、透明的投票系統(tǒng)。投票系統(tǒng)有如下三個分指標:

        (1)確保投票數(shù)據(jù)不能被篡改;

        (2)投票數(shù)據(jù)可追溯、可驗證;

        (3)匿名投票,保證投票人隱私。

        2.1.2 系統(tǒng)功能分析

        系統(tǒng)用戶可以在主頁瀏覽自己感興趣的投票調(diào)查、參與投票,并在投票記錄頁面查看投票記錄。如果用戶有調(diào)查的需求,也可以發(fā)起一個投票調(diào)查,設置投票選項。系統(tǒng)具有注冊登錄、投票、新建投票、查詢票數(shù)和查詢記錄等功能。系統(tǒng)設計要緊密結(jié)合區(qū)塊鏈的特點,充分發(fā)揮區(qū)塊鏈的優(yōu)勢,構(gòu)建去中心化、數(shù)據(jù)不可篡改的投票系統(tǒng)[6]。

        2.2 系統(tǒng)架構(gòu)設計

        為了滿足系統(tǒng)公平、工作和透明的需求,設計采用區(qū)塊鏈技術(shù)實現(xiàn)投票系統(tǒng)。區(qū)塊鏈是不可篡改、真實可信的數(shù)據(jù)庫,本次設計將區(qū)塊鏈數(shù)據(jù)(投票數(shù)據(jù))存入?yún)^(qū)塊鏈中,普通數(shù)據(jù)(如用戶名,密碼等)存入本地數(shù)據(jù)庫。系統(tǒng)架構(gòu)如圖1所示,主要包括應用層和區(qū)塊鏈層。應用層采用B/S架構(gòu),Web應用層主要實現(xiàn)系統(tǒng)功能(注冊登錄、投票等)。區(qū)塊鏈層可細分為網(wǎng)絡層和存儲層,其將投票數(shù)據(jù)發(fā)送到區(qū)塊鏈網(wǎng)絡中,并實現(xiàn)數(shù)據(jù)在區(qū)塊鏈中的分布式存取。

        圖1 系統(tǒng)架構(gòu)

        Web應用層實現(xiàn)系統(tǒng)功能,如注冊登錄、投票、新建投票及查詢票數(shù)等功能。普通數(shù)據(jù)(如用戶名,密碼等)直接存入數(shù)據(jù)庫,區(qū)塊鏈數(shù)據(jù)(投票記錄)存入?yún)^(qū)塊鏈。當訪問普通數(shù)據(jù)時,需要進行數(shù)據(jù)庫設計,編寫sql語句。當訪問區(qū)塊鏈數(shù)據(jù)時,需要調(diào)用底層區(qū)塊鏈接口,實現(xiàn)數(shù)據(jù)在區(qū)塊鏈中的存取。系統(tǒng)中區(qū)塊鏈數(shù)據(jù)存儲流程,如圖2所示。

        應用層獲取區(qū)塊鏈數(shù)據(jù)后,用私鑰對數(shù)據(jù)進行簽名,將數(shù)據(jù)封裝好后發(fā)送到區(qū)塊鏈網(wǎng)絡中。區(qū)塊鏈網(wǎng)絡中的節(jié)點校驗數(shù)據(jù)有效性,將有效數(shù)據(jù)存入數(shù)據(jù)池中,丟棄無效數(shù)據(jù)。節(jié)點的數(shù)據(jù)池滿了,通過某種共識機制決定由哪個節(jié)點取得記賬權(quán),即按照一定的結(jié)構(gòu)(如加入時間戳)將這些有效數(shù)據(jù)打包成一個區(qū)塊,并以鏈式結(jié)構(gòu)存儲到區(qū)塊鏈中。取得記賬權(quán)的節(jié)點向全網(wǎng)廣播本區(qū)塊,其他節(jié)點驗證區(qū)塊的有效性。若有效,則將區(qū)塊存到區(qū)塊鏈中;否則,丟棄[7]。

        圖2 區(qū)塊鏈數(shù)據(jù)存儲流程

        區(qū)塊鏈網(wǎng)絡層。網(wǎng)絡層實現(xiàn)網(wǎng)絡的構(gòu)建,并加以驗證機制和共識機制,保證數(shù)據(jù)的安全性和一致性。區(qū)塊鏈節(jié)點網(wǎng)絡是一個P2P網(wǎng)絡。區(qū)塊鏈網(wǎng)絡中的所有節(jié)點共同參與網(wǎng)絡中數(shù)據(jù)的驗證、記賬、存儲、維護和傳輸?shù)冗^程。

        區(qū)塊鏈存儲層。存儲層將數(shù)據(jù)以首尾相連、基于時間戳的鏈式數(shù)據(jù)結(jié)構(gòu)存儲。區(qū)塊一旦經(jīng)過節(jié)點驗證保存到區(qū)塊鏈中,將無法改動。通過“區(qū)塊十鏈式結(jié)構(gòu)”,區(qū)塊鏈可以及時發(fā)現(xiàn)任一數(shù)據(jù)的篡改。區(qū)塊鏈提供了一個有時序、可查的記錄,可以看做是不可篡改、真實可信的數(shù)據(jù)庫。

        3 區(qū)塊鏈層設計

        為了達到區(qū)塊鏈去中心化、數(shù)據(jù)不可篡改、安全可信的要求,區(qū)塊鏈層將利用P2P網(wǎng)絡構(gòu)建分布式數(shù)據(jù)庫,運用數(shù)字簽名算法及加密技術(shù)保證數(shù)據(jù)的不可篡改、共識算法來保證網(wǎng)絡中數(shù)據(jù)的一致性,并運用時間戳技術(shù)將數(shù)據(jù)區(qū)塊以首尾相連的鏈式結(jié)構(gòu)保存。如圖3所示,區(qū)塊鏈層分為網(wǎng)絡層和存儲層。網(wǎng)絡層實現(xiàn)網(wǎng)絡的構(gòu)建,并加以驗證機制和共識機制保證數(shù)據(jù)的安全性和一致性,設計重點是構(gòu)建P2P網(wǎng)絡,實現(xiàn)驗證機制和共識機制。存儲層封裝數(shù)據(jù)區(qū)塊,將數(shù)據(jù)區(qū)塊以首尾相連的鏈式保存,設計重點是運用時間戳、哈希函數(shù)、Merkle樹和非對稱加密等技術(shù),構(gòu)建數(shù)據(jù)區(qū)塊結(jié)構(gòu),實現(xiàn)區(qū)塊的鏈式存儲。

        圖3 區(qū)塊鏈層

        3.1 區(qū)塊鏈網(wǎng)絡層設計

        3.1.1 節(jié)點P2P網(wǎng)絡構(gòu)建

        P2P網(wǎng)絡具有去中心化、可擴展性、分散性和健壯性等優(yōu)點,可以將參與數(shù)據(jù)校驗和記賬的節(jié)點組織起來,使系統(tǒng)可以在去中心化的情況下穩(wěn)定運行。P2P網(wǎng)絡中不存在中心節(jié)點,節(jié)點之間通過扁平式拓撲結(jié)構(gòu)互聯(lián)互通。每個節(jié)點具有相同的功能,提供網(wǎng)絡服務。每個節(jié)點具有發(fā)現(xiàn)新節(jié)點、同步區(qū)塊、應用層網(wǎng)絡路由、驗證區(qū)塊數(shù)據(jù)和傳播區(qū)塊數(shù)據(jù)等功能。

        構(gòu)建P2P網(wǎng)絡是區(qū)塊鏈層的初始化過程。如果一個新節(jié)點首次加入P2P網(wǎng)絡,需要網(wǎng)絡中其他節(jié)點的IP地址。DNS seed可以提供P2P網(wǎng)絡上節(jié)點IP地址的DNS服務器,有助于發(fā)現(xiàn)節(jié)點。因此,采用DNS seed方式加入P2P網(wǎng)絡,采用TCP協(xié)議,使用8333端口。

        加入過程如下:

        (1)連接種子節(jié)點;

        (2)接收節(jié)點IP地址列表;

        (3)連接列表中的節(jié)點;

        (4)當建立一個或多個連接后,節(jié)點向其相鄰節(jié)點發(fā)送自身IP地址。相鄰節(jié)點將轉(zhuǎn)發(fā)IP地址,使更多節(jié)點接收IP地址,保證連接更穩(wěn)定。

        3.1.2 數(shù)據(jù)驗證機制

        驗證機制保證數(shù)據(jù)的不可篡改。P2P網(wǎng)絡中的每個節(jié)點不斷接收數(shù)據(jù),節(jié)點接收數(shù)據(jù)后會在第一時間驗證數(shù)據(jù)的有效性。節(jié)點會驗證數(shù)據(jù)結(jié)構(gòu)、數(shù)字簽名等,只有滿足所有條件的數(shù)據(jù)才有效。如果數(shù)據(jù)無效,則丟棄。如果數(shù)據(jù)有效,則將有效數(shù)據(jù)數(shù)存入數(shù)據(jù)池。獲得記賬權(quán)的節(jié)點會向全網(wǎng)廣播區(qū)塊,其他節(jié)點會驗證區(qū)塊的有效性,包括區(qū)塊頭中的隨機數(shù)、時間戳和區(qū)塊體中的數(shù)據(jù)。若區(qū)塊有效,則存入?yún)^(qū)塊鏈;否則,丟棄。

        本次設計采用橢圓曲線數(shù)字簽名算法(ECDSA),私鑰是d,公鑰是(E,P,n,Q)。

        生成簽名過程如下:

        (1)選擇一個隨機整數(shù)k,介于[1,n-1];

        (2) 計 算 kp=(x1,y2)以 及 r=x1mod n。 如 果r=0,則跳到步驟(1);否則,執(zhí)行步驟(3)。

        (3)計算 s=k-1{h(m)+dr}mod n(其中 h(·)是哈希算法)。若s=0,則跳到步驟(1);否則,執(zhí)行步驟(4);

        (4)簽名信息m是(r,s)。

        簽名驗證過程如下:

        (1)獲取公鑰(E,P,n,Q);

        (2)驗證r和s是否為整數(shù),且介于區(qū)間[1,n-1];

        (3)計算w=s-1mod n以及h(m);

        (4)計算u1=h(m)wmodn以及u2=rwmodn;

        (5)計算u1P+u2Q=(x0,y0)以及v=x0modn;

        (6)當且僅當v=r,簽名驗證正確。

        3.1.3 共識機制

        共識機制為區(qū)塊鏈中數(shù)據(jù)的一致性提供保障,是區(qū)塊鏈能夠維持運行的關鍵所在。區(qū)塊鏈中的共識機制具體表現(xiàn)在,當節(jié)點收集到一定數(shù)量的有效數(shù)據(jù)時,有多個節(jié)點將數(shù)據(jù)打包成區(qū)塊,在節(jié)點可能被攻擊的情況下,系統(tǒng)如何對記賬權(quán)歸屬哪個節(jié)點達成共識,使區(qū)塊鏈能夠穩(wěn)定可靠地運行。性能良好的共識算法能夠選擇合適的節(jié)點,該節(jié)點將自己打包好的區(qū)塊數(shù)據(jù)廣播到全網(wǎng),經(jīng)其他節(jié)點驗證有效性后,該區(qū)塊方可存入?yún)^(qū)塊鏈中。

        工作量證明機制(Proof of work,Pow)算法簡單,容易實現(xiàn),容錯性好(允許全網(wǎng)50%節(jié)點被攻擊)。本次設計采用工作量證明機制,在節(jié)點將數(shù)據(jù)打包成區(qū)塊前,需要找出一個隨機數(shù),使區(qū)塊頭各元素的哈希值不大于目標哈希值(由特定的算法產(chǎn)生目標哈希),提高打包區(qū)塊的門檻。第一個找到滿足條件隨機數(shù)的節(jié)點將獲得本區(qū)塊的記賬權(quán)并向全網(wǎng)廣播,經(jīng)大部分節(jié)點驗證有效性后存入?yún)^(qū)塊鏈。計算能力越強的節(jié)點,最先找到滿足條件隨機數(shù)的概率越大。

        3.2 區(qū)塊鏈存儲層設計

        3.2.1 數(shù)據(jù)區(qū)塊

        為了實現(xiàn)數(shù)據(jù)基于時間戳的鏈式結(jié)構(gòu)存儲,并能夠快速驗證數(shù)據(jù)的有效性,數(shù)據(jù)區(qū)塊采用如圖4所示的結(jié)構(gòu),每個數(shù)據(jù)區(qū)塊分為區(qū)塊頭(Header)和區(qū)塊體(Body)。區(qū)塊頭中包含版本號(Version)、前一區(qū)塊哈希值(Prey-block)、時間戳(Timestamp)、隨機數(shù)(Nonce)、本區(qū)塊目標哈希值(Bits)和Merkle根(Merkle-root)。區(qū)塊創(chuàng)建過程中生成的有效數(shù)據(jù)和對應數(shù)量則保存在區(qū)塊體中。有效數(shù)據(jù)通過Merkle樹的哈希產(chǎn)生唯一的Merkles根,存入?yún)^(qū)塊頭。

        圖4 數(shù)據(jù)區(qū)塊采用的結(jié)構(gòu)

        3.2.2 鏈式結(jié)構(gòu)

        為了能夠提供區(qū)塊鏈數(shù)據(jù)的追溯和驗證功能,可以將區(qū)塊以鏈式結(jié)構(gòu)存儲。當前區(qū)塊包含前一區(qū)塊的哈希值,如果節(jié)點不知道前一個區(qū)塊的哈希值,就能生成新的區(qū)塊。通過區(qū)塊哈希值將區(qū)塊鏈中的所有數(shù)據(jù)區(qū)塊串成一條鏈,區(qū)塊鏈中始終保存著最長的一條鏈(主鏈),即從創(chuàng)世塊到最新生成的區(qū)塊。當新的區(qū)塊存入?yún)^(qū)塊鏈中,將會鏈接在主鏈后面。

        區(qū)塊鏈將數(shù)據(jù)區(qū)塊以鏈式結(jié)構(gòu)存儲在區(qū)塊鏈上,數(shù)據(jù)區(qū)塊中帶有時間戳,因此增加了數(shù)據(jù)的時間維度,可以方便地追溯和驗證數(shù)據(jù)。通過前一區(qū)塊哈希值,可以定位前一區(qū)塊并驗證前一區(qū)塊是否修改。通過“區(qū)塊十鏈式結(jié)構(gòu)”,區(qū)塊鏈可以及時發(fā)現(xiàn)任一數(shù)據(jù)的篡改。區(qū)塊鏈提供了一個有時序、可查的記錄,可以看做是不可篡改、真實可信的數(shù)據(jù)庫。

        4 Web應用層設計

        應用層采用B/S架構(gòu),根據(jù)系統(tǒng)功能分析,設計完成注冊登錄模塊、主頁模塊、投票模塊、新建投票模塊、投票結(jié)果查詢模塊和投票歷史查詢模塊。Web應用層將采用Spring+Spring Boot+Mybits的框架開發(fā),數(shù)據(jù)庫為mysql。

        應用層采用MVC(Model View Controller)設計模式,分為視圖層、業(yè)務邏輯層和數(shù)據(jù)訪問層,如圖5所示。為了實現(xiàn)投票結(jié)果不可篡改的特點,投票數(shù)據(jù)是存儲在區(qū)塊鏈中的。每一次投票都會生成一個投票數(shù)據(jù),如圖6所示。投票數(shù)據(jù)主要包括版本號、輸入、輸出和時間。輸入中有投票者的公鑰和私鑰生成的數(shù)字簽名等信息,輸出中有選項對應的區(qū)塊鏈地址。

        圖5 應用層的MVC設計模式

        圖6 投票數(shù)據(jù)

        5 結(jié) 語

        區(qū)塊鏈具有去中心化、數(shù)據(jù)不可篡改、安全可信的特點,數(shù)據(jù)一旦存入?yún)^(qū)塊鏈,就無法篡改。在分析系統(tǒng)需求和數(shù)據(jù)存儲特點的基礎上,將系統(tǒng)分為應用層和區(qū)塊鏈層,重點設計了區(qū)塊鏈網(wǎng)絡層中P2P網(wǎng)絡的組網(wǎng)方式、數(shù)據(jù)區(qū)塊的驗證機制、保證數(shù)據(jù)一致性的共識機制,并運用時間戳、Merkle樹、非對稱加密等技術(shù)來設計數(shù)據(jù)區(qū)塊,然后利用鏈式結(jié)構(gòu)存儲數(shù)據(jù)區(qū)塊。在此基礎上將區(qū)塊鏈技術(shù)應用于投票場景,實現(xiàn)了一個數(shù)據(jù)安全的投票系統(tǒng),保證了其投票結(jié)果的公平、公正和可信。

        猜你喜歡
        鏈式應用層哈希
        鏈式STATCOM內(nèi)部H橋直流側(cè)電壓均衡控制策略
        黑龍江電力(2017年1期)2017-05-17 04:25:05
        基于分級保護的OA系統(tǒng)應用層訪問控制研究
        基于OpenCV與均值哈希算法的人臉相似識別系統(tǒng)
        新一代雙向互動電力線通信技術(shù)的應用層協(xié)議研究
        物聯(lián)網(wǎng)技術(shù)在信息機房制冷系統(tǒng)中的應用
        基于維度分解的哈希多維快速流分類算法
        計算機工程(2015年8期)2015-07-03 12:20:04
        鏈式D-STATCOM直流電壓分層協(xié)調(diào)控制策略
        電測與儀表(2015年4期)2015-04-12 00:43:08
        10kV鏈式STATCOM的研究與設計
        電測與儀表(2015年4期)2015-04-12 00:43:08
        鏈式咨詢看浙江
        基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗證算法
        計算機工程(2014年6期)2014-02-28 01:25:40
        亚洲精品国产一区av| 亚洲国产AⅤ精品一区二区不卡| 亚洲国产成人AⅤ片在线观看| 97无码人妻一区二区三区蜜臀| 杨幂二区三区免费视频| 国产人妖av在线观看| 国产一区二区三区在线视频观看| 一区二区视频网站在线观看| 午夜精品久久99蜜桃| 免费a级毛片18禁网站| 国产色xx群视频射精| 99久久精品费精品国产一区二区| 免费啪啪视频一区| 亚洲男人堂色偷偷一区| av免费看网站在线观看| 国产精品久久av色婷婷网站| 男女av一区二区三区| 亚洲av成人精品日韩在线播放| 亚洲av日韩av高潮潮喷无码| 国产精品第1页在线观看| 亚洲av永久无码精品成人| 国产精品黄色在线观看| 神马影院日本一区二区| 亚洲精品成人网站在线播放| 久久精品99久久香蕉国产色戒| 亚洲手机国产精品| 西西少妇一区二区三区精品| 国产天堂av在线一二三四| 中文字幕色av一区二区三区| 久久综合狠狠综合久久| 精品国产看高清国产毛片| 国产精品久久无码免费看| 日本免费一区二区久久久| 亚洲国产av自拍一区| 成人午夜福利视频后入| 亚洲va中文字幕无码| 中日韩欧美高清在线播放| 亚洲视频一区二区三区免费| 国产三级黄色免费网站| 亚洲国产欧美在线观看| a国产一区二区免费入口|