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

        ?

        適用于PLC 的時間基一次性密碼方案

        2021-08-20 04:54:06包致婷柯俊明
        計算機工程 2021年8期
        關(guān)鍵詞:身份驗證密文密鑰

        包致婷,柯俊明,楊 錚,3,龍 華,黃 東

        (1.重慶理工大學(xué) 計算機科學(xué)與工程學(xué)院,重慶 400054;2.山東大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,濟(jì)南 250000;3.新加坡科技設(shè)計大學(xué)信息系統(tǒng)技術(shù)與設(shè)計系,新加坡 138682;4.重慶機電職業(yè)技術(shù)大學(xué)信息工程學(xué)院,重慶 402760)

        0 概述

        《中國制造2025》[1]提出要推進(jìn)信息化和工業(yè)化的深度融合,但隨著工業(yè)互聯(lián)網(wǎng)的發(fā)展,工業(yè)控制系統(tǒng)逐漸從最初的封閉狀態(tài)向開放狀態(tài)轉(zhuǎn)變,使暴露在互聯(lián)網(wǎng)上的工控設(shè)備越來越多,從而對工控設(shè)備及系統(tǒng)安全構(gòu)成了巨大威脅。工業(yè)互聯(lián)網(wǎng)的核心部件是信息物理系統(tǒng)(Cyber-Physical Systems,CPS)[2],但傳統(tǒng)CPS本身沒有安全措施,導(dǎo)致近年來CPS 受到一些大型攻擊[3-5]。CPS 的核心是控制物理過程的可編程邏輯控制器(Programmable Logic Controller,PLC)[6],因為PLC可以直接控制物理過程,所以成為攻擊者攻擊的主要目標(biāo)。根據(jù)工業(yè)安全國家聯(lián)合實驗室[7]的調(diào)查顯示,全球的工控設(shè)備接入工業(yè)互聯(lián)網(wǎng)數(shù)量從2011 年80 億臺增長到2019 年的174 億臺。對工控設(shè)備遭受攻擊的數(shù)量進(jìn)行統(tǒng)計,在2017 年上半年受攻擊設(shè)備的比例為36.61%,在2017 年下半年該比例增長至37.75%,并且這一增長趨勢一直延續(xù)到2018 年。

        CPS使用防火墻[8]保證監(jiān)控和數(shù)據(jù)采集(Supervisory Control And Data Acquisition,SCADA)系統(tǒng)和PLC 之間的安全通信和訪問控制,但防火墻并不能提出針對具體某個PLC 的直接身份認(rèn)證,而現(xiàn)有PLC 沒有任何身份相關(guān)的機密信息,因此監(jiān)控系統(tǒng)不能確定被監(jiān)控PLC 身份的真實性。為高效實現(xiàn)PLC 的身份認(rèn)證,引入時間基一次性密碼認(rèn)證要素作為特定PLC 的身份證明憑證,有效解決了現(xiàn)有工業(yè)控制系統(tǒng)中常見安全通信協(xié)議Modbus[9]、DNP3[10]及OPC-UA[11]的認(rèn)證要素問題。目前,使用較廣泛且高效的身份驗證方案為時間基一次性密碼方案[12]。時間基一次性密碼的身份驗證方案由LAMPORT[13]提出,該方案使用哈希鏈的具體實例,即利用哈希函數(shù)計算鏈上每個節(jié)點的密碼。文獻(xiàn)[14]提出S/KEY系統(tǒng),并在系統(tǒng)中實現(xiàn)和驗證了哈希鏈。文獻(xiàn)[15]提出時間基一次性密碼(Time-based One-Time Password,TOTP)認(rèn)證算法,該算法控制了密碼的有效期。文獻(xiàn)[16]結(jié)合S/KEY 和TOTP 方案提出時間基一次性密碼身份驗證方案T/KEY,但目前該方案并沒有在任何商業(yè)化PLC 上進(jìn)行測試和應(yīng)用。

        在IEC 61131-3 規(guī)定的PLC 4 種標(biāo)準(zhǔn)編程語言中,結(jié)構(gòu)化文本(Structured Text,ST)語言[17]更接近計算機高級編程語言,因此適用于實現(xiàn)密碼算法。但由于ST 是一種類似Python 的解釋性語言,沒有提供底層優(yōu)化,并且許多商業(yè)PLC 并沒有提供密碼算法實現(xiàn)需要的移位功能,因此基于ST 實現(xiàn)的程序運行速度較慢。文獻(xiàn)[18]提出一種輕量級哈希函數(shù)PHOTON 算法,文獻(xiàn)[19]提出一種SPONGENT 哈希算法。因為英特爾的CPU 集成了AES 指令集,所以基于AES 優(yōu)化的PHOTON 哈希算法在PC 上運行效率較高,而在PLC 上沒有類似的優(yōu)化指令,因此使用哈希函數(shù)的時間基一次性密碼并不適用于PLC。文獻(xiàn)[20]提出的PRESENT 密碼算法和文獻(xiàn)[21]提出的SPECK 密碼算法通過比較原子操作個數(shù)得到:滿足128 位安全性的PHOTON 主要做了10 萬個賦值、2 萬個加法和1.5 萬個異或,SPONGENT 主要做了42 萬個賦值、3 000 個加法和6 000 個異或,PRESENT主要做了5 000 個賦值和60 個異或,SPECK 主要做了3 000個賦值、80個加法和100個異或。通過實驗測得在羅克韋爾Allen-Bradley 的PLC 上,賦值、加法和邏輯運算的時間分別為1.17 μs、1.51 μs 和2.3 μs。由于賦值操作時間和其他開銷近似,并且這些算法的賦值語句數(shù)量較多,因此以賦值時間為參考,PHOTON 和SPONGENT 分別約為SPECK 的33 和140 倍,相比分組密碼,進(jìn)一步驗證了哈希在PLC 上運行效率較低。

        為解決上述問題,本文構(gòu)造一種適用于PLC 的時間基一次性密碼方案BC-TOTP,創(chuàng)新性地將分組密碼作為構(gòu)建塊,充分利用分組密碼計算鏈中的每個節(jié)點,將其前身作為加密密鑰的輸入、常量作為加密消息、鏈尾節(jié)點作為初始驗證點、其他節(jié)點作為用于身份驗證的一次性密碼。

        1 相關(guān)工作

        由于靜態(tài)密碼[22]容易被猜測和遭受暴力攻擊,因此目前研究集中于時間基一次性密碼。S/KEY[14]使用哈希函數(shù)進(jìn)行實例化,其一次性密碼的有效期是不確定的,很容易被盜竊和濫用,并且S/KEY 在鏈的每次迭代過程中都使用相同的哈希函數(shù),使得它更容易被破壞。T/KEY[16]結(jié)合了S/KEY 和TOTP 的方法,不僅無需在服務(wù)器上存儲密碼,而且驗證密碼在短時間內(nèi)有效,但是T/KEY 使用的哈希函數(shù)在PLC 上的效率較低。

        目前,大量研究方案均允許驗證方和BC-TOTP 設(shè)備之間進(jìn)行雙向數(shù)字通信[23-24]。文獻(xiàn)[25]研究了多種基于二維碼的身份驗證方案,在LBD-QR-PIN 方案中移動設(shè)備生成密鑰對并將公鑰發(fā)送到驗證方。隨后,驗證方會生成一個隨機的128 位質(zhì)詢,并使用證明方的公鑰對其進(jìn)行加密,然后將其發(fā)送至身份驗證設(shè)備。身份驗證設(shè)備將質(zhì)詢編碼為二維碼,然后用戶可以使用其移動設(shè)備進(jìn)行掃描。移動設(shè)備使用其存儲的私鑰解密挑戰(zhàn),計算挑戰(zhàn)的簡短6 位哈希,并將其呈現(xiàn)給用戶。用戶在身份驗證設(shè)備上輸入此6 位數(shù)字代碼,并將其發(fā)送到驗證方進(jìn)行驗證。

        文獻(xiàn)[26]針對當(dāng)前工業(yè)控制系統(tǒng)的可靠性需求,提出一種全新的密碼算法活性證明(Proof of Aliveness,PoA),并基于單向函數(shù)(One-Way Function,OWF)的時間基一次性密碼(以下簡稱為OWF-TOTP)構(gòu)建PoA的具體算法實現(xiàn)。相比基于OWF 的Lamport 一次一密方案[13],該方案采用的OWF-TOTP 在標(biāo)準(zhǔn)模型下被證明是安全的。但是,JIN 等[26]通過實驗證明,基于哈希函數(shù)實例化的OWF-TOTP 在Raspberry Pi 平臺上效率更高,而且該方案還未在真實商業(yè)化PLC 上進(jìn)行測試。

        2 預(yù)備知識

        2.1 符號定義

        本文使用的符號定義如表1 所示。

        表1 符號定義Table 1 Symbol definition

        2.2 分組密碼

        本節(jié)描述了一個分組密碼方案BC。該方案由3種概率性多項式時間算法(BC.Gen,BC.Enc,BC.Dec)組成,具體步驟如下:

        2)分組加密算法c←BC.Enc(k,m)。該算法輸入位長為lk的加密密鑰k和位長為lm的消息m,輸出位長為lc的密文c,其中l(wèi)k≤lm=lc。

        3)解密算法m←BC.Dec(k,c)。該算法輸入解密密鑰k和1 條密文c,輸出1 個明文m。

        1)挑戰(zhàn)者B 開始運行初始化算法,并向攻擊者A 提供密鑰k。

        2)攻擊者A 選擇2 個消息m0和m1發(fā)送給挑戰(zhàn)者,其中|m0|=|m1|。

        4)A 根據(jù)c輸出對b的猜測b′。

        5)若b′=b,Game 輸出1,則攻擊者贏得游戲。

        定義1(IND-CPA 安全)若概率多項式時間攻擊者以不可忽略的優(yōu)勢攻破了上述安全模型,則BC方案是IND-CPA 安全的,其中,攻擊者A 的優(yōu)勢概率為

        2.3 PRESENT 和SPECK 分組密碼算法

        2.3.1 PRESENT 分組密碼算法

        PRESENT 是SP 網(wǎng)絡(luò)[27]結(jié)構(gòu)的超輕量級分組密碼算法,支持64 位的分組長度和80 位、128 位的密鑰長度,它一共需要31 輪加密,其中每輪的輪密鑰Ki(1≤i≤31)為64 位,在31 輪加密完成后,K32再運行一次輪密鑰加得到密文。本文主要關(guān)注密鑰長度為128 位的PRESENT 算法,算法步驟具體如下:

        2)分組加密算法c←PRESENT.Enc(k,m)。該算法輸入加密密鑰k和位長為lm的消息m,輸出長度為lc的密文c。該算法首先做密鑰編排得到輪密鑰,將密鑰寄存器中存儲的128 位密鑰記為K=k127k126…k0,在加密算法第i輪使用的輪密鑰是密鑰寄存器K最左邊的64 位,即Ki=k127k126…k64。然后執(zhí)行以下步驟更新密鑰寄存器K=k127k126…k0:

        (1)密鑰寄存器循環(huán)左移61 位:

        (k127k126…k0)=(k66k65…k68k67)

        (2)換字盒(SBox)代換:

        (k127k126k125k124)=SBox(k127k126k125k124)

        (k123k122k121k120)=SBox(k123k122k121k120)

        (3)k66k65k64k63k62與加密輪數(shù)做異或運算:

        (k66k65k64k63k62)=(k66k65k64k63k62)⊕i

        通過以上步驟得到輪密鑰K=(K0||K1K2…KT-1),其中T=32。然后,利用輪密鑰和消息m執(zhí)行以下步驟:

        (1)輪密鑰加AddRoundKey。對于z∈[64],該過程輸入64 位的狀態(tài)s和輪密鑰Ki,然后得到更新的狀態(tài)s通過計算s[z]:=s[z]⊕Ki[z],其中,初始狀態(tài)為消息m,Ki[z]為輪密鑰Ki的第z個比特。

        (2)換字盒代換SBoxLayer。該過程將64 位的輸入狀態(tài)s分為16 個4 位的半字w15w14…w0,即w[a]=st[4a+3],其中a∈[16],然后通過查找換字盒SBox(w[a]),最后輸出更新后的狀態(tài)值s。

        (3)換位盒置換PBoxLayer。該過程將狀態(tài)s進(jìn)行重排,即s的第i位移動到PBox(s[i])指定的位置。

        當(dāng)31 輪循環(huán)完成后,加密算法使用K32再次運行輪密鑰加AddRoundKey 得到密文c。

        3)解密算法m←PRESENT.Dec(k,c)。該算法為加密算法的逆過程,輸入密鑰k和1 條密文c,輸出1 個明文m。

        2.3.2 SPECK 分組密碼算法

        SPECK 分組密碼支持不同的分組長度和密鑰長度,le∈{16,24,32,48,64}為字的位長,lm=2le為分組長度,加密密鑰的位長為lk=lelw,其中l(wèi)w∈{2,3,4}。如果le=16,則位移常量α:=7、β:=2,在其他情況下α:=8、β:=3,算法步驟具體如下:

        2)分組加密算法c←SPECK.Enc(k,m)。該算法輸入加密密鑰k和1 條消息m=(m0||m1),輸出1 個密文c=(c0||c1),其中,|m0|=|m1|,c=(c0||c1)。該算法先做密鑰排程,即使用k生成每輪加密需要的輪密鑰,對于i∈[T-1],具體計算如下:

        在得到輪密鑰K=(k0||k1k2…kT-1)后,每輪加密過程都需要執(zhí)行SPECK.RFk(x,y)=(x′,(y<<<β)⊕x′),其中x′=((x>>>α)+y)⊕k,即整個加密過程為,其中°代表加密過程的結(jié)合,運行T次輪函數(shù)。第1 輪的初始狀態(tài)為x=m1、y=m0,最后一輪得到c1=x、c0=y。

        3)解密算法m←SPECK.Dec(k,c)。該算法輸入密鑰k和1條密文c=(c0||c1),輸出1個明文m=(m0||m1),利用k得到輪密鑰K′=(kT-1||kT-2kT-1…k0)。解密算法利用輪函數(shù)的逆,每輪執(zhí)行y′)<<<α,y′),其中y′=(x⊕y)>>>β。第1 輪的初始狀態(tài)為x=c1、y=c0,最后一輪得到m1=x、m0=y。

        3 BC-TOTP 方案

        本節(jié)詳細(xì)介紹BC-TOTP 方案在羅克韋爾Allen Bradley 的PLC 上的運行過程。由于基于哈希的時間基一次性密碼不適用于PLC,因此本文設(shè)計一個通用的基于分組密碼的時間基一次性密碼方案BC-TOTP。鏈上的每個節(jié)點(尾節(jié)點除外)都是一個證明,用于在相應(yīng)時間內(nèi)向驗證方證明身份,如果驗證方在容忍時間內(nèi)收到至少一個有效證明,則證明方身份驗證成功,這些節(jié)點將以從尾節(jié)點到頭節(jié)點的方向被消耗。同時,本節(jié)進(jìn)一步學(xué)習(xí)了如何通過PRESENT 和SPECK 分組密碼算法實例化BC-TOTP,并且基于理想密碼模型[28]和分組密碼IND-CPA 的安全假設(shè),證明了BC-TOTP 的安全性。

        3.1 基于分組密碼的通用型TOTP 方案

        BC-TOTP 是一個鏈?zhǔn)浇Y(jié)構(gòu),它采用類似于T/Key 的一次性密碼,其鏈的每個內(nèi)部節(jié)點(尾節(jié)點除外)都是一個身份認(rèn)證的密碼。對于1≤i≤N,鏈上的第i個密碼xi=BC.Enc(xi-1,m)都可由頭節(jié)點x0=k計算得到,用于證明方在相應(yīng)的時間內(nèi)向驗證方證明其身份。證明方保存頭節(jié)點x0,便于生成每一個驗證密碼,尾節(jié)點xN中存在驗證方,用于驗證證明方發(fā)送的密碼的正確性。證明方可以使用x0得到BCTOTP 鏈上任何一個一次性密碼,并將該密碼發(fā)送給驗證方進(jìn)行身份驗證。驗證方在驗證時,第一次使用的驗證點為尾節(jié)點xN,驗證點是動態(tài)變化的,上一次身份驗證成功的密碼將成為下一個驗證點。在BC-TOTP 方案中,設(shè)置如下重要參數(shù):ΔTL為單鏈的使用周期,n為一次性密碼的長度,N為單鏈的密碼節(jié)點數(shù),離散時間槽{ti} 為時間的流逝,即ti+1-ti=ΔI,ΔI為每個密碼的驗證有效期(一般為30 s),ttol為身份驗證容忍時間,tack為驗證方收到有效密碼的最新時間。BC-TOTP 步驟具體如下:

        1)初始化算法(stidc,stidv)←Setup(k,N,tstart,ΔTL,ttol)。該算法在初始化階段證明方輸入頭節(jié)點x0=k,使用分組加密函數(shù)BC.Enc 初始化分組密碼鏈,從頭節(jié)點x0開始到尾節(jié)點xN結(jié)束,其中N對于1≤i≤N,第i個密碼節(jié)點xi=BC.Enc(xi-1,m),其中m∈[N]。若證明方將計算后的尾節(jié)點值xN發(fā)送給驗證方,驗證方將初始驗證點πidc設(shè)置為πidc=xN,則證明方將保持狀態(tài)stidc=(k,tend,BC.Enc),驗證方的初始狀態(tài)設(shè)置為stidv=(πidc,tack,BC.Enc)。

        2)密碼生成算法xt←Prover(stidc,t)。該算法的證明方輸入當(dāng)前時間t和狀態(tài)stidc=(k,tend,BC.Enc),對于i∈[M],證明方通過計算第i個密碼xi=BC.Enc(xi-1,m) 得到一次性密碼xt,其中M=然后將xt發(fā)送給驗證方。

        3)身份驗證算法s←Verifier(stidv,xt,t,tack)。該算法的驗證方首先檢查密碼接收時間t和最近一次身份驗證時間tack的差值是否小于容忍時間ttol,即ttack<ttol;然后檢查當(dāng)前驗證點πidc是否可以由密碼xt計算得到。具體為:對于,通過計算第i個密碼xi=BC.Enc(xi-1,m)得到一次性密碼xZ,其中x0=xt。如果xZ與stidv的驗證點πidc相等,則證明方身份驗證成功,輸出s=1,同時驗證方更新狀態(tài)值stidv為πidc=xt,tack=t;否則身份驗證失敗,輸出s=0。

        如圖1 所示,最近驗證方成功驗證的密碼為πidc=xN-2,它將作為驗證點檢查下一個密碼。證明方在時間t=tend-ΔI時發(fā)送一次性密碼xt=x1給驗證方,驗證方首先判斷是否在容忍時間內(nèi)收到一次性密碼xt,如果收到則運行N-3 次分組加密函數(shù)BC.Enc 得到結(jié)果xZ,最終判斷xZ是否與驗證點πidc相等。如果相等,則身份驗證成功,輸出s=1,并且更新驗證方的狀態(tài)值stidv;否則身份驗證失敗,輸出s=0。在圖1 中密碼xt=x1到驗證點πidc的計算過程為BC.Enc(x1,m)°BC.Enc(x2,m)°…°BC.Enc(xN-3,m),即共運行N-3 次加密函數(shù)BC.Enc。

        圖1 基于分組密碼的TOTP 流程Fig.1 Procedure of TOTP based on block cipher

        3.2 算法實例

        在隨機預(yù)言模型中,本文使用分組密碼實例化BC.Enc 分組加密函數(shù),并且利用分組長度為64 位、密鑰長度為128 位的分組密碼SPECK 和PRESENT在ECB 模式下實現(xiàn)BC.Enc。ECB 是將整個明文分成若干段相同的小段,然后對每一小段進(jìn)行加密。因為在分組加密函數(shù)BC.Enc 中,輸出的密文將作為計算下一個密文的密鑰,所以需使用ECB 模式連接兩次具體分組密碼實例的密文,這樣才可以得到128 位的密文。本節(jié)定義函數(shù)<Enc >表示具體分組密碼實例,其<Enc >∈{PRESENT.Enc,SPECK.Enc}的輸入位長為lk的密鑰k和位長為lm的消息m,輸出lc的密文c,其中2lm=2lc=lk,計算如下:

        c=BC.Enc(k,m)=<Enc >(k,m0)||<Enc >(k,m1)

        其中,m=(m0||m1)并且|m0|=|m1|=64。

        對于1≤i≤N,BC-TOTP 鏈中的每個密碼節(jié)點可由下式計算得到:

        xi=<Enc >(xi-1,m0)||<Enc >(xi-1,m1)

        其中:x0=k。

        3.3 安全性分析

        定理1假設(shè)分組密碼BC 在理想密碼模型下是IND-CPA 安全的,則本文提出的BC-TOTP 方案也是安全的。

        證明假設(shè)攻擊者A 能夠攻破BC-TOTP 方案,即注入一個合法的密碼xi-1,那么就可以構(gòu)建一個高效的算法B 來攻破分組密碼BC 的IND-CPA 安全性。

        在理想密碼模型下,由于初始密鑰x0是隨機選擇的,因此此后基于其產(chǎn)生的每一個已知密碼xi=BC.Enc(xi-1,m)也是隨機的并且具有唯一性。因此,B可以首先猜測A 成功輸出的密文的索引值為i-1,如果B 猜測正確則繼續(xù),否則終止實驗,其中B 猜中的概率為1/N。在猜測正確的情況下,B 通過詢問分組密碼的挑戰(zhàn)者,獲得一個挑戰(zhàn)密文c*=BC.Enc(xi-1,mb),其中消息(m0,m1)由B 任意選取。然后,B 基于密文c*來模擬索引值i到N的所有密碼。如果攻擊者A 能成功輸出密鑰xi-1,那么B 可以容易地通過對比c*和基于密鑰xi-1與消息(m0,m1)分別產(chǎn)生的密文,從而返回正確的b來攻破BC 的安全性。至此定理1 得證。

        4 算法實現(xiàn)與性能分析

        4.1 PRESENT 算法實現(xiàn)

        PRESENT 需要4 位換字盒和64 位換位盒,同時處理lm=64 的分組長度和支持兩種長度lk∈{80,128}的密鑰,本文主要關(guān)注密鑰長度為128 位的密鑰。首先將用數(shù)組k[4]表示的128 位密鑰k計算每輪64 位的輪密鑰,64 位的輪密鑰用K[0],K[1]表示,密鑰的最后4 位(k127k126k125k124)可用(k[3].[28],k[3].[29],k[3].[30],k[3].[31])表示,因為PLC 可以直接訪問變量的每一位。然后執(zhí)行輪密鑰加、換字盒和換位盒的過程。最后該算法再運行一次輪密鑰加得到lc=64的密文c。

        在算法1 中:步驟1~步驟12 是密鑰編排過程,tmp 獲取密鑰的其中4 位;步驟13 將內(nèi)部狀態(tài)與對應(yīng)的輪密鑰做異或運算;步驟14 是SBoxPLayer 通過查找換字盒每4 位更新內(nèi)部狀態(tài);步驟15、步驟16 是PBoxPLayer 實現(xiàn)的功能基于換字盒將內(nèi)部狀態(tài)的第i個比特即st.[i]移動到PBox[i]指定的新位置,這里表示為st[PBox[i]]:=st.[i];步驟17 運行一次輪密鑰加后得到最終的密文。由于考慮網(wǎng)絡(luò)攻擊者對PLC 的讀寫攻擊,因此在步驟18 時進(jìn)行密鑰清零。圖2 給出了PRESENT 密鑰編排過程,并采用ST 語言直接獲取密鑰寄存器所需的位。

        圖2 PRESENT 代碼示例Fig.2 Code example of PRESENT

        4.2 SPECK 算法實現(xiàn)

        SPECK 主要由循環(huán)移位、異或和加法運算組成。SPECK 首先使用(k[0],k′[0],k′[1],k′[2])表示輸入的128 位密鑰,計算加密算法所需的輪密鑰K[T],而非直接采用預(yù)計算的輪密鑰。然后將輸入分成le=32 的兩個消息,計算T次輪函數(shù)。最后得到c[2]表示的64 位密文。

        在算法2 中:步驟1~步驟5 是輪密鑰計算過程;步驟6~步驟9 是判斷α和β的值;步驟10~步驟13 是算法加密過程;步驟14 是將密文的密鑰k清零。圖3給出了SPECK 密鑰編排中的循環(huán)左移操作,該操作基于ST 語言直接對變量的每一位進(jìn)行賦值。

        圖3 SPECK 代碼示例Fig.3 Code example of SPECK

        4.3 BC-TOTP 算法實現(xiàn)

        BC-TOTP 是利用分組密碼實現(xiàn)的時間基一次性密碼算法,數(shù)組k[4]表示128 位的密鑰,證明方使用密鑰作為鏈的頭節(jié)點x0[4]計算每一個節(jié)點,利用xu[4]=<Enc >(xu-1[4],m0)||<Enc >(xu-1[4],m1)得到鏈上的每一個節(jié)點,尾節(jié)點xN[4]發(fā)送給驗證方保存。在時間t時證明方可發(fā)送密碼xt[4]給驗證方進(jìn)行身份驗證,驗證方如果在容忍時間內(nèi)收到密碼xt[4],然后xt[4]經(jīng)過Z次分組加密函數(shù)計算后得到的結(jié)果若等于πidc[4],則證明方身份驗證成功,輸出s=1,同時驗證方更新stidv為πidc[4]=xt[4],tack=t;否則身份驗證失敗,輸出s=0。

        在算法3 中:步驟1~步驟9 是初始化過程,證明方計算尾節(jié)點xN[4]將其發(fā)送給驗證方,并且輸出證明方和驗證方的初始狀態(tài)值stidc和stidv;步驟10~步驟14 證明方在當(dāng)前時間t內(nèi)計算一次性密碼xt[4]并發(fā)送給驗證方;步驟15~步驟25 驗證方檢查證明方提交密碼的正確性,并更新狀態(tài)值。

        4.4 性能分析

        本文在羅克韋爾Allen-Bradley的PLC上測試了BCTOTP 方案的性能。該PLC 配有Controllogix 5571 處理器和2 MB 內(nèi)存,利用1 000 次重復(fù)實驗的平均結(jié)果驗證BC-TOTP 方案的時間效率。分組長度64 位,密鑰長度128 位的PRESENT 分組密碼算法的計算時間為14 ms,而同樣版本的SPECK 分組密碼算法的計算時間為8.2 ms,并且它們都是在實現(xiàn)了密鑰編排算法下的計算時間。因此,基于PRESENT 和SPECK 的鏈上相鄰密碼節(jié)點之間的計算時間分別為28 ms和16.4 ms。BC-TOTP 方案的計算成本由密碼數(shù)N決定,首先需要實例化這些參數(shù),使得算法在PLC 上可執(zhí)行。如圖4所示,若BC-TOTP 方案的鏈上密碼數(shù)N越大,則生成尾節(jié)點所需的計算時間越長。

        圖4 SPECK 和PRESENT 算法的初始化時間比較Fig.4 Comparison of initialization time between SPECK and PRESENT algorithms

        由于BC-TOTP 采用長鏈,為減少生成密碼所需的加密次數(shù),參考T/Key 方案[16],根據(jù)證明方使用情況來緩存驗證點。如圖5 所示,密碼生成算法有worst 和average兩種情況,worst是在整條鏈上平均分布驗證點,average 驗證點的位置選擇是動態(tài)變化的。因為網(wǎng)絡(luò)攻擊者可以通過Pycomm 讀取和改寫PLC 上的變量值,以致PLC 無法調(diào)整新的驗證點,所以驗證點必須預(yù)計算保存。圖6給出了在worst情況下SPECK和PRESENT算法的身份驗證時間比較結(jié)果。

        圖5 SPECK 和PRESENT 算法的密碼生成時間比較Fig.5 Comparison of password generation time between SPECK and PRESENT algorithms

        圖6 SPECK 和PRESENT 算法的身份驗證時間比較Fig.6 Comparison of identity authentication time between SPECK and PRESENT algorithms

        由圖6 看出,鏈上的節(jié)點越多,身份驗證所需時間越長。本文考慮PLC 內(nèi)存大小,設(shè)置200 個緩存檢查點,并參考T/Key 方案的密碼使用間隔ΔI=30 s,如果N=1051200,則單鏈?zhǔn)褂弥芷趯⒔? 年。

        5 結(jié)束語

        本文構(gòu)造基于分組密碼的時間基一次性密碼方案BC-TOTP,利用PRESENT 和SPECK 分組密碼算法對其進(jìn)行實例化。通過基于理想密碼模型和分組密碼INDCPA 的安全假設(shè)證明了BC-TOTP 方案的安全性,并在羅克韋爾Allen-Bradley PLC 上的測試結(jié)果驗證了BCTOTP 方案的高效性與實用性。后續(xù)將使用偽隨機生成器鏈連接多個單鏈,打破單鏈密碼數(shù)量的限制,構(gòu)造一種全新的時間基一次性密碼方案。

        猜你喜歡
        身份驗證密文密鑰
        探索企業(yè)創(chuàng)新密鑰
        一種針對格基后量子密碼的能量側(cè)信道分析框架
        一種支持動態(tài)更新的可排名密文搜索方案
        基于模糊數(shù)學(xué)的通信網(wǎng)絡(luò)密文信息差錯恢復(fù)
        密碼系統(tǒng)中密鑰的狀態(tài)與保護(hù)*
        一種對稱密鑰的密鑰管理方法及系統(tǒng)
        HID Global收購Arjo Systems擴(kuò)大政府身份驗證業(yè)務(wù)
        基于ECC的智能家居密鑰管理機制的實現(xiàn)
        更安全的雙重密碼保護(hù)
        CHIP新電腦(2015年3期)2015-04-02 17:55:46
        云存儲中支持詞頻和用戶喜好的密文模糊檢索
        国产精品午夜波多野结衣性色| 麻豆婷婷狠狠色18禁久久| 国产suv精品一区二区883| 国产一级片毛片| 日本视频一区二区二区| 一本久道高清视频在线观看| 午夜福利一区二区三区在线观看| 亚洲第一网站免费视频| 日韩人妻高清福利视频| 亚洲av日韩一卡二卡| 真人做爰片免费观看播放| 91在线在线啪永久地址| 男女男生精精品视频网站| 国产自拍视频在线观看网站| 国产在线精品一区在线观看| 国产极品美女高潮抽搐免费网站| 国产在线播放免费人成视频播放| 草草影院发布页| 成av人片一区二区三区久久| 亚洲欧洲日产国码久在线| 男男车车的车车网站w98免费| 日韩欧美国产丝袜视频| 亚洲中文字幕av一区二区三区人| 久久精品一区二区免费播放| 国产成人cao在线| 在线观看国产自拍视频| 人人妻人人澡人人爽人人精品av| 国产成人精品日本亚洲11| 天堂在线观看av一区二区三区| 日韩av天堂综合网久久| 久久婷婷五月综合97色直播 | 老妇女性较大毛片| 亚洲国产成人AV人片久久网站| 日本av第一区第二区| 精品免费国产一区二区三区四区| 成人精品综合免费视频| AV中文码一区二区三区| 不卡av网站一区二区三区| 熟女少妇在线视频播放| 亚洲国产欧美另类va在线观看| 亚洲白嫩少妇在线喷水|