国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

郄九玲,胡 浩

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

0 引 言

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

1 認識區(qū)塊鏈

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

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

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

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

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

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

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

2.1 需求分析

2.1.1 研究目標

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

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

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

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

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

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

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

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

圖1 系統(tǒng)架構

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

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

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

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

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

3 區(qū)塊鏈層設計

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

圖3 區(qū)塊鏈層

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

3.1.1 節(jié)點P2P網絡構建

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

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

加入過程如下:

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

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

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

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

3.1.2 數據驗證機制

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

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

生成簽名過程如下:

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

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

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

3.2.1 數據區(qū)塊

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

圖4 數據區(qū)塊采用的結構

3.2.2 鏈式結構

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

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

4 Web應用層設計

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

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

圖5 應用層的MVC設計模式

圖6 投票數據

5 結 語

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

猜你喜歡
鏈式應用層哈希
鏈式STATCOM內部H橋直流側電壓均衡控制策略
黑龍江電力(2017年1期)2017-05-17 04:25:05
基于分級保護的OA系統(tǒng)應用層訪問控制研究
基于OpenCV與均值哈希算法的人臉相似識別系統(tǒng)
新一代雙向互動電力線通信技術的應用層協(xié)議研究
物聯(lián)網技術在信息機房制冷系統(tǒng)中的應用
基于維度分解的哈希多維快速流分類算法
計算機工程(2015年8期)2015-07-03 12:20:04
鏈式D-STATCOM直流電壓分層協(xié)調控制策略
電測與儀表(2015年4期)2015-04-12 00:43:08
10kV鏈式STATCOM的研究與設計
電測與儀表(2015年4期)2015-04-12 00:43:08
鏈式咨詢看浙江
基于同態(tài)哈希函數的云數據完整性驗證算法
計算機工程(2014年6期)2014-02-28 01:25:40
宝坻区| 墨竹工卡县| 黄骅市| 遂平县| 德钦县| 肃北| 论坛| 旅游| 武威市| 望都县| 平泉县| 阳原县| 潮安县| 临泉县| 临城县| 西充县| 乌拉特前旗| 陕西省| 汪清县| 茌平县| 图木舒克市| 大冶市| 银川市| 四平市| 宁南县| 循化| 呼伦贝尔市| 太保市| 精河县| 顺义区| 观塘区| 晋城| 清原| 安乡县| 全椒县| 金寨县| 崇义县| 林周县| 马公市| 理塘县| 滦平县|