• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      改進SM2簽名方法的區(qū)塊鏈數字簽名方案

      2021-07-30 10:33:34楊龍海王學淵蔣和松
      計算機應用 2021年7期
      關鍵詞:私鑰哈希共識

      楊龍海,王學淵,蔣和松

      (西南科技大學信息工程學院,四川綿陽 621010)

      0 引言

      近年來,新興的區(qū)塊鏈技術成為了研究熱點,由于區(qū)塊鏈技術的去中心化和信任機制的提出,數字簽名顯得尤為重要。聯(lián)盟鏈是降低了去中心化要求的由多個機構共同管理和維護的區(qū)塊鏈,其共識過程中的身份認證關乎整個鏈的防偽造和篡改的能力,也是當前聯(lián)盟鏈的技術難點之一[1]。聯(lián)盟鏈中的共識機制[2]維持了整個區(qū)塊鏈的不可篡改性和鏈的一致性,因此保證共識機制中的每個共識節(jié)點都是有身份認證的誠實節(jié)點,防止偽造身份的惡意節(jié)點對共識過程進行破壞是一個值得研究的問題。SM2 算法[3]是我國提出的一種橢圓曲線公鑰密碼算法,相比RSA 算法,其密碼復雜度高、處理速度快、機器性能消耗更小,可以很好地應用于區(qū)塊鏈。

      聯(lián)盟鏈由于其中心化程度的降低,因此防止簽名篡改偽造可以降低其帶來的影響。針對采用了實用拜占庭容錯[4](Practical Byzantine Fault Tolerance,PBFT)算法的聯(lián)盟鏈環(huán)境,眾多的節(jié)點導致在簽名過程中的消耗增加。因此在防止簽名篡改偽造的基礎上,提高多節(jié)點間的簽名過程的效率,是一個比較有價值的研究方向。蘇吟雪等[5]通過零知識證明和同態(tài)加密方法,實現(xiàn)了基于SM2 的具有安全性證明的雙方共同簽名方案,可以很好地提高簽名過程中的安全性;但增加了通信次數,并且一次簽名仍需要執(zhí)行4 次模逆運算,存在較大的算法開銷。侯紅霞等[6]通過拆分私鑰,減少了私鑰被竊取的危險性,同時結合比特承諾和同態(tài)加密方法實現(xiàn)基于SM2的兩方協(xié)作的簽名方案,在安全性上有很大的提高;但整個方案十分繁瑣,且同態(tài)加密和模逆運算也增加了運算負擔。蘭修文[7]研究適用于SM2 曲線的點運算算法、適用于SM2 素數的快速約減算法、適用于SM2 素數的快速Montgomery 模乘算法以及Montgomery 模逆算法,通過改進SM2 底層運算方式,提高了SM2數字簽名的效率,但仍沒有避免模逆運算的消耗。肖帥等[8]通過引入雙參數回避了SM2 算法中求模逆的運算,提高了簽名速度;但密鑰仍是單方面保存,無法避免密鑰被竊取從而惡意偽簽名的問題。當前的區(qū)塊鏈應用大都直接運用公鑰密碼算法的數字簽名,缺乏高效安全的適用于聯(lián)盟鏈的簽名方案。

      本文根據當前聯(lián)盟鏈的實際應用環(huán)境,提出一種基于密鑰分割和國家標準SM2 簽名算法的可信第三方證明簽名方案。該方案將密鑰分割獲得的SM2 私鑰分割為兩部分:一部分簽名方本地保存,另一部分通過密鑰交換協(xié)議存儲在可信第三方的獨立本地數據庫中,共識時簽名方須向可信第三方提供身份證明后,結合兩部分私鑰才能進行最后的簽名過程,實現(xiàn)了身份的雙重認證,提高了身份認證的安全性;同時結合哈希摘要算法構建的多項式消去了SM2算法中耗時的模逆運算,提高了簽名速度。

      1 預備知識

      1.1 PBFT共識算法

      PBFT 主要用于解決區(qū)塊鏈節(jié)點間的拜占庭容錯問題[9],在R>3f+1(R為總節(jié)點數,f為錯誤節(jié)點數)的前提下,系統(tǒng)能保持安全性和活性,能使區(qū)塊鏈所有節(jié)點執(zhí)行相同的序列操作,但由于其效率受節(jié)點數量影響較多,故運用于聯(lián)盟鏈。PBFT是一種狀態(tài)機副本復制算法[10],即將服務作為狀態(tài)機進行建模,狀態(tài)機在分布式系統(tǒng)的不同節(jié)點進行副本復制。每個狀態(tài)機的副本都保存了服務的狀態(tài),同時也實現(xiàn)了服務的操作。在PBFT 算法中存在三種角色:客戶端、主節(jié)點和從節(jié)點,其中主節(jié)點和從節(jié)點都進行數據備份。所有的副本在一個被稱為視圖的輪換過程中運作。在某個視圖中,一個副本作為主節(jié)點,其他副本作為備份。視圖是連續(xù)編號的整數。主節(jié)點由公式p=vmod|R|計算得到,其中:v是視圖編號,p是副本編號,|R|是副本集合的個數。當主節(jié)點失效時,就需要啟動視圖更換過程,切換主節(jié)點,生成新的視圖v+1,并在該視圖下繼續(xù)共識過程。共識過程如圖1所示。

      圖1 PBFT共識過程示意圖Fig.1 Schematic diagram of PBFT consensus process

      整個共識過程具體如下:

      1)REQUEST 階段:客戶端向主節(jié)點發(fā)起請求,其中o為請求的具體操作,t為請求時客戶端追加的時間戳,c為客戶端標識。REQUEST:包含消息內容m,以及消息摘要d(m)??蛻舳藢φ埱筮M行簽名。

      2)PRE-PREPARE 階段:主節(jié)點收到客戶端的請求,進行客戶端請求消息簽名校驗,將非法請求丟棄,如果是正確請求則分配一個編號n,編號n主要用于對客戶端的請求進行排序。然后廣播一條進行過主節(jié)點簽名的消息給其他副本節(jié)點。其中v為當前視圖編號,d為接收到的REQEUST 階段消息摘要,m為接收到的REQEUST階段消息內容。

      3)PREPARE 階段:從節(jié)點i收到主節(jié)點的PREPREPARE 消息,驗證主節(jié)點的消息簽名,驗證從節(jié)點是否已經收到視圖編號v和請求序號n均相同的PRE-PREPARE 消息,將非法請求丟棄,如果是正確請求則從節(jié)點i向其他節(jié)點包括主節(jié)點發(fā)送一條帶自己簽名的消息。

      4)COMMIT 階段:主節(jié)點和從節(jié)點收到PREPARE 消息,驗證從節(jié)點PREPARE 消息簽名是否正確,將非法請求丟棄,如果是正確請求并且從節(jié)點i已收到了2f+1 個驗證通過的PREPARE 消息,則向其他節(jié)點包括主節(jié)點發(fā)送一條帶自己簽名的消息。

      5)REPLY 階段:主節(jié)點和從節(jié)點收到COMMIT 消息,驗證COMMIT消息簽名是否正確,將非法請求丟棄,如果是正確請求并且從節(jié)點i已收到了2f+1 個驗證通過的COMMIT 消息,則共識通過,運行客戶端的請求操作o。

      1.2 SM2簽名算法

      SM2 是國家密碼管理局于2010 年發(fā)布的基于橢圓曲線離散對數困難問題的橢圓曲線公鑰密碼算法,包含了數字簽名算法、密鑰交換協(xié)議和公鑰加密算法[11],成為了當前我國公鑰算法標準GM/T 0003.2—2012,并進入國際標準ISO/IEC 14888-3。該數字簽名算法如下:

      1)密鑰產生:輸入SM2 橢圓曲線參數parms(橢圓曲線方程Ep、大素數p、基點G、基點的階n),隨機生成私鑰d∈[1,n-1]秘密保存,利用公私鑰關系生成公鑰:

      式中,PS即為得到的SM2 公鑰,該式是SM2 運用于加密和簽名的重要依據。

      2)SM2 簽名過程:輸入SM2 橢圓曲線參數parms、私鑰d和待簽名的消息M同時計算雜湊值ZA。

      式中:IDA是用戶的可辨別標識,ENTLA是IDA的長度,a、b是橢圓曲線的系數,xG、yG分別是基點G的橫縱坐標值,xA、yA分別為公鑰橫縱坐標值。

      得到雜湊值ZA后計算與待簽名消息M的哈希摘要e:

      隨機產生k∈[1,n-1],并由此計算橢圓曲線點X1:

      計算簽名參數r和s輸出簽名(r,s):

      3)SM2 簽名驗證過程:輸入parms、驗證方擁有的公鑰PS和待簽名驗證的消息M以及簽名方傳過來的簽名(r′,s′),按式(3)求取待簽名驗證消息M的哈希摘要e,并計算t。

      驗證t是否等于零,若等于零則簽名驗證失敗,否則計算橢圓曲線點X′1:

      驗證r′=(e′+x′1)modn是否成立,成立則簽名驗證成功。

      2 改進SM2區(qū)塊鏈簽名方案

      傳統(tǒng)SM2簽名方案運用于聯(lián)盟鏈的PBFT共識機制,在執(zhí)行一致性協(xié)議時節(jié)點間會進行大量的通信并伴隨著大量的簽名和簽名驗證過程,隨著節(jié)點數量增多,網絡通信量會快速增長,節(jié)點密鑰的保存和交換會變得異常復雜,進而影響區(qū)塊鏈的效率和安全性。為提高節(jié)點間密鑰保存和交換的安全性,如圖2 所示,本文方案建立了可信第三方作為節(jié)點管理中心[12],該節(jié)點管理中心只提供節(jié)點管理功能如輔助簽名,不參與共識,對PBFT共識的中心化程度影響較小。

      圖2 改進簽名方案架構Fig.2 Structure of improved signature scheme

      假定節(jié)點管理中心對100 個共識節(jié)點進行管理,根據拜占庭容錯問題,當共識節(jié)點中故障及非法節(jié)點達到f≥(R-1)/3(其中R為總的共識節(jié)點數量,f為故障及非法節(jié)點的數量),即整個共識系統(tǒng)達到甚至超過33 個故障及非法節(jié)點時,會導致整個聯(lián)盟鏈的共識系統(tǒng)失去其安全性和活性。由于節(jié)點管理中心不參與共識,其本身在共識階段對聯(lián)盟鏈的中心化程度的影響微乎其微,那么會對共識產生影響的只會在輔助各共識節(jié)點的簽名過程中。由于每一個共識節(jié)點的加入受到已有共識節(jié)點的監(jiān)督,故共識節(jié)點的總數不會變化,也就是節(jié)點管理中心不能避開所有節(jié)點添加其他非法節(jié)點,節(jié)點管理中心只能在已有的節(jié)點上來影響共識,也就是必須有33 個甚至超過33 個非法節(jié)點共同參與才會影響聯(lián)盟鏈的安全性和活性,因此節(jié)點管理中心對中心化程度和系統(tǒng)安全性影響不大。

      所有參與共識過程的節(jié)點在生成密鑰對時,將私鑰分割為兩部分,一部分本地保存,另一部分由密鑰交換協(xié)議交予節(jié)點管理中心,每次參與共識時,須先向節(jié)點管理中心驗證身份(哈希密碼驗證)后,由節(jié)點管理中心協(xié)助完成簽名與簽名驗證。

      2.1 算法描述

      設SM2的橢圓曲線參數為parms,節(jié)點管理中心為CA,簽名共識節(jié)點方為Signer,簽名驗證共識節(jié)點方為Verifier。其整個簽名方案如下:

      1)密鑰生成及分割:當聯(lián)盟鏈產生新的PBFT 共識節(jié)點時,由CA 為該節(jié)點建立節(jié)點檔案庫,存儲節(jié)點的IP 等信息,同時產生兩個隨機數d1和d2(其中d1+d2∈[1,n-1])分別作為Signer私鑰分量和CA 私鑰分量,由SM2 密鑰生成公鑰PS=[d1+d2]G,記錄當前時間戳進行哈希加密作為身份密碼并由密鑰交換協(xié)議將身份密碼PW和Signer 私鑰分量d1傳給Signer。圖3給出了密鑰生成的具體過程。

      圖3 改進SM2簽名密鑰生成流程Fig.3 Key generation process of improved SM2 signature

      給出偽代碼實現(xiàn)如下:

      2)簽名及簽名驗證:簽名過程如圖4 所示,Signer 先向CA遞交哈希密碼PW進行身份驗證,驗證不通過不予協(xié)助簽名,CA 記錄此信息,該節(jié)點視為PBFT 故障節(jié)點。驗證通過后利用Signer私鑰分量對消息M進行簽名。Signer利用式(3)計算待簽名消息M的哈希摘要e,同時隨機產生1 組α,β∈[1,n-1],與私鑰和消息摘要e構造隨機數k并由式(4)求出橢圓曲線點X1:

      圖4 改進SM2簽名流程Fig.4 Flowchart of improved SM2 signature

      計算簽名參數r和s輸出簽名(r,s,β):

      給出偽代碼實現(xiàn)如下:

      其簽名驗證過程如下:Verifier 先向CA 遞交哈希密碼PW進行身份驗證,驗證不通過不予協(xié)助簽名,CA記錄此信息,該節(jié)點視為PBFT 故障節(jié)點。驗證通過后獲得消息M的簽名(r′,s′,β′)和CA 保存的私鑰分量d2,利用公鑰對Signer 簽名信息進行簽名驗證,其簽名驗證過程如圖5所示。

      圖5 改進SM2簽名驗證流程Fig.5 Flowchart of improved SM2 signature verification

      Verifier 首先判斷傳入簽名參數是否合法即驗證(r′,s′,β′)∈[1,n-1],不滿足則簽名驗證不通過;若通過則由式(3)計算密碼雜湊算法值e,并計算兩個中間參數t′和u′:

      計算R′=(e′+)modn的值是否等于Signer傳過來的r′,如果是則簽名驗證成功,否則簽名驗證不通過。

      給出偽代碼實現(xiàn)如下:

      2.2 算法分析

      本文改進方案是基于SM2 算法提出的,也可以利用橢圓曲線的離散對數難題實現(xiàn)簽名[11],那么要滿足簽名成功就需要先滿足簽名方案的正確性,即簽名方的簽名信息是能夠被簽名驗證方驗證成功的,現(xiàn)給出本文方案的原理正確性證明。

      由方案簽名過程可知,(r′,s′,β′)是Signer傳過來的簽名信息,則可以求到橢圓曲線點

      由改進簽名方案公關系得PS=[d1+d2]G,并將將r′和s′的值代入可得:

      因此只要簽名信息(r′,s′,β′)簽名過程產生的(r,s,β)保持一致且消息哈希摘要相同,那么由式(9)可得:

      3 改進方案性能分析

      3.1 防非備案IP攻擊分析

      本文改進簽名方案簽名是基于聯(lián)盟鏈PBFT機制提出的,故所有共識節(jié)點在產生時其IP 會在CA 備案,因此攻擊者Attacker 使用非備案IP 攻擊,CA 將會攔截所有非備案IP 的訪問,攻擊者將無法參與共識,故也無法參與簽名過程。

      假設攻擊者Attacker 通過非法途徑獲取到聯(lián)盟鏈某共識節(jié)點的IP 信息,通過偽造IP 訪問CA 意圖參與共識和簽名,那么他要參與PBFT共識需要滿足兩個條件:一是需要提供哈希密碼PW來進行身份驗證;二是需要私鑰分量d1完成簽名。由整個方案可知,共識節(jié)點IP 信息、共識節(jié)點身份哈希密碼、私鑰同時被竊取的可能性極低,故該方案可以防非備案IP攻擊。

      3.2 防數據篡改和替換消息的偽造攻擊分析

      1)如果攻擊者不是聯(lián)盟鏈上節(jié)點就不會通過CA 獲取到簽名信息。設攻擊者Attacker 是PBFT 共識網絡中的一個惡意攻擊節(jié)點,Attacker 可以通過CA 身份驗證階段獲取到Signer 發(fā)送的(r,s,β)信息,之后Attacker 偽造消息M″來代替M進行簽名:

      根據簽名過程,由于s、e、r三個參數均為已知量,Attacker使用偽造替換的消息M″進行消息摘要計算然后偽造簽名計算s″=d1(α+e″r)modn,將(r,s″,β)作為M″的簽名數據。Verifier收到(r,s″,β)簽名信息后,進行如下簽名驗證,計算橢圓曲線點

      由此可知通過對消息進行哈希運算可以實現(xiàn)數據的完整性,一旦數據遭到篡改,哈希數值將會發(fā)生變化,會使得簽名無效,因哈希沖突的概率可以忽略不計,故改進的SM2簽名算法是抵抗已知消息偽造的。

      在改進簽名算法的安全模型中包含挑戰(zhàn)者T 和敵手AT。挑戰(zhàn)者與敵手運行如下的攻擊游戲:挑戰(zhàn)者T 運行密鑰生成算法并把生成的系統(tǒng)參數parms和驗證公鑰給敵手AT。AT可以進行n次訓練,即輸入的消息為(M1,M2,…,Mn),由挑戰(zhàn)者給出合格的數字簽名(δ1,δ2,…,δn)。在訓練后,如果敵手AT 能夠給出一個有效的消息簽名對(M*,δ*),并且消息M*?{M1,M2,…,Mn},那么就稱敵手成功地偽造了簽名,并將該事件稱為ATEvent。AT 不斷用輸入的消息為交由挑戰(zhàn)者T 執(zhí)行簽名算法生成(δ1,δ2,…,δn),設傳統(tǒng)SM2 算法存在性偽造簽名的概率為PSM2。攻擊者最多詢問n個消息的簽名,最多σ次查詢隨機預言機,設哈希函數的輸出空間為θ,那么攻擊者未經隨機預言機查詢而得到一個合格的輸出的概率是,那么在整個攻擊過程中,攻擊者最多有的概率能區(qū)分隨機預言機的輸出,那么不能區(qū)分的概率就是由于私鑰的驗證需要驗證中心CA 的參與,那么AT 的簽名結果要滿足兩方的驗證,其概率為1/2;詢問簽名的最終目的是為了解決橢圓曲線離散對數問題,在參數保持一致的情況下,AT 合法的偽造簽名的概率為:

      因此,如果存在攻擊者能夠偽造共同簽名,那么這個攻擊者也就能夠偽造SM2 數字簽名;也就是說,如果SM2 數字簽名算法是安全的,那么我們的共同簽名協(xié)議也是安全的。

      3.3 效率分析

      在實際聯(lián)盟鏈的運用環(huán)境中,特別在PBFT 共識過程中,PBFT 算法可以容忍小于1/3 個無效或者惡意節(jié)點[13],并且在較少節(jié)點的情況下可以有不錯的性能,而且分叉的幾率很低。但為了降低拜占庭將軍問題帶來的風險,一般會增加共識網絡中節(jié)點數量[14],以減少惡意節(jié)點帶來的影響,由于PBFT 算法的每個副本節(jié)點都需要和其他節(jié)點進行P2P 的共識同步,因此隨著節(jié)點的增多,性能下降很快,并且共識節(jié)點的增多,會使得互相驗證身份的過程也變得復雜[15],即其簽名次數中會隨著節(jié)點數量的增加變得越來越多,從而使得簽名過程中的消耗變得巨大,這也是當前區(qū)塊鏈技術運用于實際市場存在的問題之一。圖6 是兩種簽名方案在PBFT 共識過程中的通信開銷隨節(jié)點個數變化的曲線圖,可以明顯看到節(jié)點數量越多,兩種方案的通信開銷增加速度也會越來越快,改進后的簽名方案在通信開銷上會比經典SM2 簽名方案消耗得更多,這是改進方案每個節(jié)點在獲取節(jié)點管理中心子私鑰的過程中產生的。

      圖6 兩種簽名方案通信開銷隨節(jié)點數量變化對比Fig.6 Comparison of communication overhead of two signature schemes varying with the number of nodes

      本文方案借助實際聯(lián)盟鏈PBFT共識機制的運用環(huán)境,通過構造簽名私鑰與消息哈希值的中間多項式,除去了SM2 簽名算法中存在的耗時的模逆過程,在傳統(tǒng)SM2 簽名運用于該方案的基礎上,提高了計算效率。本文借助Java 軟件工具包JDK1.8 中的ECPoint 橢圓曲線計算包和TIO 網絡編程框架模擬共識節(jié)點間的簽名過程,統(tǒng)計了共識過程中在簽名過程中時間總消耗的平均值,并計算了共識效率的提升比η:

      本次實驗由兩部分運行環(huán)境構成,一部分是節(jié)點端運行環(huán)境即參與共識的節(jié)點環(huán)境,其節(jié)點模擬環(huán)境如下:CPU 為Intel i5-4210U;內存8 GB;操作系統(tǒng)使用Windows 10 專業(yè)版;數據存儲工具為sqllite。另一部分為CA 運行環(huán)境即參與節(jié)點身份認證的環(huán)境(采用阿里云ECS 服務器)如下:CPU 為1核;內存2 GB;操作系統(tǒng)為CentOS 7.3 64位;數據存儲工具采用MySQL8.0。另外本次實驗使用的SM2 相關參數與國家SM2 密碼標準參數保持一致,最終得出實驗結果如表1所示。

      表1 傳統(tǒng)SM2算法與改進SM2算法實驗數據對比Tab.1 Comparison of experimental data between traditional SM2 algorithm and improved SM2 algorithm

      圖7 給出了兩種簽名方案運用于PBFT 過程中的時間消耗對比,可以看到在共識節(jié)點間需要簽名的消息規(guī)模相同的條件下:當節(jié)點較少時,盡管本文改進方案消去了耗時的模逆過程(求逆過程消耗是點乘消耗的80 倍),但改進方案中比傳統(tǒng)SM2 算法多一次通信過程,使得采用傳統(tǒng)SM2 簽名算法和改進后的算法時間消耗相差不大;但隨著節(jié)點的增多,通信過程帶來的影響較整個過程就較小了,如此改進后的SM2 算法時間消耗相比傳統(tǒng)的SM2 算法會越來越小,且節(jié)點越多效率差距越明顯,在節(jié)點數量達到30 個時,其效率較傳統(tǒng)SM2 算法可以提升27.56%。

      圖7 兩種簽名方案在共識過程中總時間消耗對比Fig.7 Total time consumption comparison of two signature schemes in consensus project

      圖8 和圖9 分別給出了兩種方案在簽名階段和簽名驗證階段的時間消耗對比,可以看出改進方案在簽名過程的速度較傳統(tǒng)簽名算法有較大的提升,并且其效率相比簽名驗證過程提升得更多。

      圖8 兩種方案在簽名過程中的時間消耗對比Fig.8 Time consumption comparison of signing process between two schemes

      圖9 兩種方案在簽名驗證過程中的時間消耗對比Fig.9 Time consumption comparison of verification process between two schemes

      4 結語

      結合國密SM2 簽名算法和聯(lián)盟鏈中獨特的PBFT 共識機制,是解決當前區(qū)塊鏈存在的如簽名效率等部分技術難題的一個重要方向,對于當前聯(lián)盟鏈技術應用于市場有一定的理論價值和實踐意義。本文針對私鑰保存和簽名的時間消耗問題提出了基于密鑰分割和國家標準SM2簽名算法的可信第三方證明簽名方案,通過協(xié)作簽名能在一定程度上使得由中心化導致的偽造篡改的可能性降低,結合哈希摘要和PBFT特性又可以減少節(jié)點間簽名總時間消耗,可以滿足當前聯(lián)盟鏈的應用環(huán)境需要。本文方案第三方協(xié)作簽名盡管使得簽名安全可靠,但同時也增大了網絡通信量,所以將在下一步工作中設計一種快捷的協(xié)作簽名協(xié)議,以降低節(jié)點間的網絡通信量,進一步提高簽名效率。

      猜你喜歡
      私鑰哈希共識
      比特幣的安全性到底有多高
      基于改進ECC 算法的網絡信息私鑰變換優(yōu)化方法
      共識 共進 共情 共學:讓“溝通之花”綻放
      論思想共識凝聚的文化向度
      商量出共識
      人大建設(2019年12期)2019-11-18 12:11:06
      一種基于虛擬私鑰的OpenSSL與CSP交互方案
      基于OpenCV與均值哈希算法的人臉相似識別系統(tǒng)
      基于維度分解的哈希多維快速流分類算法
      計算機工程(2015年8期)2015-07-03 12:20:04
      別讓“PX共識”在爆炸中瓦解
      基于同態(tài)哈希函數的云數據完整性驗證算法
      計算機工程(2014年6期)2014-02-28 01:25:40
      泸西县| 安西县| 玉山县| 惠水县| 金门县| 德江县| 涟源市| 安西县| 永新县| 谷城县| 山阳县| 安化县| 江油市| 温宿县| 宁蒗| 新邵县| 莒南县| 乾安县| 桐柏县| 成都市| 六枝特区| 贺兰县| 宁都县| 湖口县| 沅陵县| 仁布县| 教育| 高青县| 南陵县| 缙云县| 明水县| 柳河县| 山阴县| 平顺县| 普陀区| 清河县| 曲周县| 同江市| 德惠市| 永昌县| 阳泉市|