999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

適用于PLC 的時(shí)間基一次性密碼方案

2021-08-20 04:54:06包致婷柯俊明
計(jì)算機(jī)工程 2021年8期

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

(1.重慶理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,重慶 400054;2.山東大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,濟(jì)南 250000;3.新加坡科技設(shè)計(jì)大學(xué)信息系統(tǒng)技術(shù)與設(shè)計(jì)系,新加坡 138682;4.重慶機(jī)電職業(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è)備越來越多,從而對(duì)工控設(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],因?yàn)镻LC可以直接控制物理過程,所以成為攻擊者攻擊的主要目標(biāo)。根據(jù)工業(yè)安全國家聯(lián)合實(shí)驗(yàn)室[7]的調(diào)查顯示,全球的工控設(shè)備接入工業(yè)互聯(lián)網(wǎng)數(shù)量從2011 年80 億臺(tái)增長到2019 年的174 億臺(tái)。對(duì)工控設(shè)備遭受攻擊的數(shù)量進(jìn)行統(tǒng)計(jì),在2017 年上半年受攻擊設(shè)備的比例為36.61%,在2017 年下半年該比例增長至37.75%,并且這一增長趨勢(shì)一直延續(xù)到2018 年。

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

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

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

1 相關(guān)工作

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

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

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

2 預(yù)備知識(shí)

2.1 符號(hào)定義

本文使用的符號(hào)定義如表1 所示。

表1 符號(hào)定義Table 1 Symbol definition

2.2 分組密碼

本節(jié)描述了一個(gè)分組密碼方案BC。該方案由3種概率性多項(xiàng)式時(shí)間算法(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 個(gè)明文m。

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

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

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

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

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

2.3 PRESENT 和SPECK 分組密碼算法

2.3.1 PRESENT 分組密碼算法

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

2)分組加密算法c←PRESENT.Enc(k,m)。該算法輸入加密密鑰k和位長為lm的消息m,輸出長度為lc的密文c。該算法首先做密鑰編排得到輪密鑰,將密鑰寄存器中存儲(chǔ)的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ù)做異或運(yùn)算:

(k66k65k64k63k62)=(k66k65k64k63k62)⊕i

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

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

(2)換字盒代換SBoxLayer。該過程將64 位的輸入狀態(tài)s分為16 個(gè)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位移動(dòng)到PBox(s[i])指定的位置。

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

3)解密算法m←PRESENT.Dec(k,c)。該算法為加密算法的逆過程,輸入密鑰k和1 條密文c,輸出1 個(gè)明文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 個(gè)密文c=(c0||c1),其中,|m0|=|m1|,c=(c0||c1)。該算法先做密鑰排程,即使用k生成每輪加密需要的輪密鑰,對(duì)于i∈[T-1],具體計(jì)算如下:

在得到輪密鑰K=(k0||k1k2…kT-1)后,每輪加密過程都需要執(zhí)行SPECK.RFk(x,y)=(x′,(y<<<β)⊕x′),其中x′=((x>>>α)+y)⊕k,即整個(gè)加密過程為,其中°代表加密過程的結(jié)合,運(yùn)行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個(gè)明文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 上的運(yùn)行過程。由于基于哈希的時(shí)間基一次性密碼不適用于PLC,因此本文設(shè)計(jì)一個(gè)通用的基于分組密碼的時(shí)間基一次性密碼方案BC-TOTP。鏈上的每個(gè)節(jié)點(diǎn)(尾節(jié)點(diǎn)除外)都是一個(gè)證明,用于在相應(yīng)時(shí)間內(nèi)向驗(yàn)證方證明身份,如果驗(yàn)證方在容忍時(shí)間內(nèi)收到至少一個(gè)有效證明,則證明方身份驗(yàn)證成功,這些節(jié)點(diǎn)將以從尾節(jié)點(diǎn)到頭節(jié)點(diǎn)的方向被消耗。同時(shí),本節(jié)進(jìn)一步學(xué)習(xí)了如何通過PRESENT 和SPECK 分組密碼算法實(shí)例化BC-TOTP,并且基于理想密碼模型[28]和分組密碼IND-CPA 的安全假設(shè),證明了BC-TOTP 的安全性。

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

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

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

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

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

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

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

3.2 算法實(shí)例

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

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

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

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

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

其中:x0=k。

3.3 安全性分析

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

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

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

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

4.1 PRESENT 算法實(shí)現(xiàn)

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

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

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

4.2 SPECK 算法實(shí)現(xiàn)

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

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

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

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

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

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

4.4 性能分析

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

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

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

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

圖6 SPECK 和PRESENT 算法的身份驗(yàn)證時(shí)間比較Fig.6 Comparison of identity authentication time between SPECK and PRESENT algorithms

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

5 結(jié)束語

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

主站蜘蛛池模板: 99热国产在线精品99| 国产精品自在线拍国产电影| 亚洲天堂视频网| 亚洲AⅤ综合在线欧美一区| 免费 国产 无码久久久| 中文字幕不卡免费高清视频| 中文字幕第4页| 成人在线欧美| 高清无码手机在线观看| 波多野结衣AV无码久久一区| 国产一级毛片在线| 日韩专区欧美| 毛片在线播放网址| 免费又黄又爽又猛大片午夜| 一本色道久久88| 中文字幕啪啪| 欧美日本在线观看| 国产凹凸视频在线观看| 男女男免费视频网站国产| 免费A级毛片无码免费视频| 精品国产成人av免费| 99久久免费精品特色大片| 国产系列在线| 国产精品开放后亚洲| 欧美综合区自拍亚洲综合天堂| 日本成人在线不卡视频| 国产成人久久综合777777麻豆| 亚洲中文久久精品无玛| 精品久久香蕉国产线看观看gif| 漂亮人妻被中出中文字幕久久| 亚洲午夜片| 亚洲一区精品视频在线| 亚洲第一成年免费网站| 成人第一页| 国产一线在线| 一级毛片视频免费| 日韩视频精品在线| 这里只有精品在线播放| 夜夜操天天摸| 国产91熟女高潮一区二区| 国产精品视频猛进猛出| 人人澡人人爽欧美一区| 欧美午夜一区| 久久窝窝国产精品午夜看片| 国产好痛疼轻点好爽的视频| 99在线视频精品| 蜜桃视频一区二区三区| 欧美视频二区| 国产av剧情无码精品色午夜| 国产精品白浆无码流出在线看| 香港一级毛片免费看| 中文字幕亚洲专区第19页| 影音先锋丝袜制服| 亚洲精品第一页不卡| 伊人欧美在线| 亚洲成人福利网站| 亚洲av色吊丝无码| 毛片视频网址| 精品国产一区二区三区在线观看| 欧美成在线视频| 免费观看国产小粉嫩喷水| 亚洲天堂在线免费| 国产精品成人第一区| 国产在线视频福利资源站| 国产综合网站| 在线精品亚洲国产| 久久精品无码专区免费| 五月天久久婷婷| 幺女国产一级毛片| AV片亚洲国产男人的天堂| 超薄丝袜足j国产在线视频| 欧美成人一级| 多人乱p欧美在线观看| 一边摸一边做爽的视频17国产| 国产在线精品99一区不卡| 国产精品yjizz视频网一二区| 久久精品人人做人人综合试看| 国禁国产you女视频网站| 国产91av在线| 亚洲欧洲自拍拍偷午夜色| 色视频久久| 色综合久久久久8天国|