韓妍妍 張 京 閆曉璇 李 娜
1(北京電子科技學(xué)院通信工程系 北京 100070)2(西安電子科技大學(xué)通信工程學(xué)院 陜西 西安 710071)
近年來,物聯(lián)網(wǎng)作為信息時代的第三次浪潮得到了迅猛的發(fā)展。WoT,即Web of Things,Web技術(shù)作為跨平臺的資源和服務(wù)共享基礎(chǔ)框架,成為物聯(lián)網(wǎng)實現(xiàn)泛在計算與異構(gòu)資源共享的技術(shù)選擇[2]。當(dāng)前的WoT環(huán)境中存在著多種威脅,譬如:丟失身份信息、泄露個人信息以及濫用資源等,身份認證和授權(quán)是抵御這些威脅的一種重要手段[3]。
Hasan等[4]提出了一個通過委托許可結(jié)合OAuth協(xié)議的認證授權(quán)方案,但是該方案存在著無法控制令牌權(quán)限等缺陷。Google提出了一種擴展OpenID和OAuth的協(xié)議[5],但是該協(xié)議存在無法滿足依賴方RP(Relay Part)和OAuth使用者不同時的認證需求。OpenID Connect協(xié)議是2014年發(fā)布的重要單點登錄認證協(xié)議標準,目前該協(xié)議已經(jīng)被廣泛應(yīng)用到WoT行業(yè)中。但是,該協(xié)議存在認證不完整以及用戶口令安全性強度不夠的缺陷[6]。
本文提出一種多秘密可視密碼方案,通過兩種疊加方式能夠恢復(fù)出兩個不同的秘密可視密碼方案,結(jié)合OpenID Connect協(xié)議能夠有效地解決該協(xié)議中認證不完整以及口令安全性強度不夠的問題,也可以實現(xiàn)控制權(quán)限??梢暶艽a技術(shù)可以在少量分存中隱藏多個秘密信息[7],具有技術(shù)實現(xiàn)簡單、計算復(fù)雜度低等優(yōu)點。
常規(guī)的可視密碼方案生成的共享圖像是類噪聲的,以此來確保秘密信息不可讀。由于無法判斷所要恢復(fù)的秘密圖像對應(yīng)的是哪些共享圖像,一旦用戶持有的共享圖像數(shù)量變得龐大,問題會變得更加復(fù)雜。具有標簽信息的可視密碼技術(shù)TVC(Tagged Visual Cryptography)將標簽圖像隱藏在每個共享中,通過折疊每個單個共享圖像就能在視覺上顯現(xiàn)出來。然后通過這種有意義的標簽圖像來識別屬于特定秘密圖像的共享對,從而方便用戶區(qū)分管理多個類噪聲共享圖像。通過將標簽圖像設(shè)置為與每個共享圖像相關(guān)聯(lián)的唯一符號,以此建立對未經(jīng)授權(quán)或發(fā)生欺騙行為的參與者的驗證機制,凡是未經(jīng)授權(quán)或有欺騙行為的共享圖像,其標簽圖像將不能正確地恢復(fù)[8]。
圖1 偽裝后的圖像
在對噪聲圖像進行傳輸時,不希望讓攻擊者獲取實際圖像的大小,因此,需要在不能改變圖像原有的信息的同時對傳輸圖像的大小進行偽裝處理。本方案采用的處理方法是對原有圖像進行擴大,即將原來圖像的尺寸由H×W變?yōu)?H+a)×(W+b),偽裝后的圖像如圖1所示。擴大后的圖像中的H×W部分與原圖重合,而多余的邊緣部分隨機分配二值像素0或1。這樣擴大后的圖像仍是噪聲圖,即使攻擊者獲取了圖像,也不能輕易確定原圖的大小,加大了暴力破解原圖的難度[9]。而服務(wù)器和用戶在對圖像進行傳輸處理時,會提前約定好圖像的大小,服務(wù)器在收到用戶發(fā)來的圖像之后會毫無差錯地提取出原圖。這種方法對于噪聲圖像的偽裝傳輸是有效的,而對于有意義的圖像傳輸需要視圖像信息進行具體偽裝。
本文提出一種新的TVC方案,不僅具有TVC方案原有的性能,使得分享圖像中可以隱藏標簽圖像的信息,而且恢復(fù)的秘密數(shù)量有所增加,為可視密碼方案增加了更多的信息量。當(dāng)對齊疊加這兩個共享圖像,第一個秘密圖像就會出現(xiàn);當(dāng)把一個共享圖像上下翻轉(zhuǎn)再互相疊加,第二個秘密圖像就能出現(xiàn)。方案中恢復(fù)的秘密圖像和標簽圖像具有良好的視覺識別度[10]。
列舉本方案所需要的幾個角色,分別是終端用戶EU(End User)、OAuth2中受信任的客戶端RP(Relying Party)以及用來為RP提供EU的身份認證信息OP(OpenID Provider)。其中,OP包含令牌端點TE(Token Endpoint)、授權(quán)服務(wù)器(OAuth2服務(wù)器)以及UserInfo EndPoint,TE是主要用于令牌的生成與發(fā)送。本方案的總流程圖如圖2所示。
圖2 方案流程
主要步驟如下:
(1) RP向OP發(fā)送一個請求認證;
(2) OP通過使用多秘密可視密碼技術(shù)對EU進行身份認證,并進行授權(quán);
(3) OP將ID Token和Access Token返回給RP;
(4) RP使用Access Token發(fā)送一個令牌請求;
(5) 令牌響應(yīng)。
假設(shè)有兩個大小為H×W的秘密圖像S1和S2,還有兩個將要被加密為分享圖像的大小為H/2×W的標簽圖像T1和T2,即標簽圖像的大小與秘密圖像對折之后的大小相同。經(jīng)過方案的加密過程,將會產(chǎn)生兩個共享圖像。當(dāng)直接對齊疊加兩個共享圖像時,秘密圖像S1將會顯示,將其中一個共享圖像上下翻轉(zhuǎn),再相互疊加,此時將恢復(fù)出秘密圖像S2。另外,對于每個共享圖像,沿著圖像的橫向?qū)ΨQ軸上下對折,將會分別呈現(xiàn)出隱藏的標簽圖像。
仿真實驗如圖3所示。加密過程分為如下幾個階段:第一步利用(2,2)隨機柵格技術(shù)[2],將給定的兩個秘密圖像S1和S2(圖3(a)(b))加密成一組過渡圖像G1、G21和G22。第二步,將標簽圖像加密成兩個過渡圖像L1和L2。最后,將5個過渡圖像G1、G21、G22和L1、L2組合起來形成最終的共享圖像F1和F2(圖3(e)(f))。
(a) 秘密圖像S1 (b) 秘密圖像S2
(c) 標簽圖像T1 (d) 標簽圖像T2
(e) 共享圖F1 (f) 共享圖像F2
(g) F1疊加F2(h) F1與上下翻折的F2疊加
(i) 恢復(fù)F1的標簽圖像 (j) 恢復(fù)F2的標簽圖像圖3 恢復(fù)后的圖像q=0.5
步驟1根據(jù)秘密圖像S1和S2利用(2,2)隨機柵格技術(shù)[8]生成過渡圖像G1、G2。對共享圖像G1中的某個像素G1(i,j)以相同的1/2的概率進行隨機取0(白色)或1(黑色)的操作,直至全部像素G1(i,j)都被處理。分別將S1和S2和G1按照(2,2)隨機柵格技術(shù)生成過渡G21和G22,再將G22經(jīng)過上下翻轉(zhuǎn)得到G22’。隨機生成一個數(shù)k且0≤k≤1。如果k≤1/2,則將像素G21(i,j)分配給G2(i,j),否則將G22’(i,j)分配給G2(i,j),直到所有像素處理完。
步驟2根據(jù)標簽圖像T1和T2(圖3(c)(d))生成過渡圖像L1和L2。先按照(2,2)隨機柵格技術(shù)將Tx(x=1,2)生成兩個過渡圖像Cx1和Cx2,再將Cx2上下翻轉(zhuǎn)再與Cx1上下拼接起來,形成Lx,其中x=1,2。
步驟3將過渡共享圖像Gx(x=1,2)和Lx(x=1,2)組合為最終共享圖像Fx(x=1,2)。給定一個概率值p,再隨機生成一個數(shù)q且0≤q≤1。如果q≤p,則將像素Gx(i,j)分配給Fx(i,j),否則將Lx(i,j)分配給Fx(i,j)。
方案的解密過程只需要通過簡單的疊加及翻轉(zhuǎn)。當(dāng)疊加分享圖像F1和F2,秘密圖像S1即可恢復(fù)(圖3(g));將F1與上下翻轉(zhuǎn)過的F2記為F2’相互疊加,秘密圖像S2即可恢復(fù)(圖3(h))。并且通過將共享圖像按其橫向?qū)ΨQ軸進行對折,就可看到隱藏在共享圖像中的標簽圖像(圖3(i)(j))。
2.2.1 認證請求
RP要獲取EU在OP上的私有數(shù)據(jù),首先向OP發(fā)送身份認證請求信息。該請求消息包括client_id、response_type、scope、redirect_uri和state這五種重要參數(shù)。其中:client_id是指客戶端的id;response_type是指授權(quán)方式的響應(yīng)類型;scope是指訪問閾值;redirect_uri是指重定向地址;state表示請求和反饋之間的狀態(tài)值。
2.2.2 向認證及授權(quán)
Authorization Server首先判斷來自RP發(fā)送的請求信息中client_id的有效性,如果無效則停止認證。如果有效則Authorization Server產(chǎn)生認證EU的請求消息。EU將一張隨機柵格圖像g和注銷認證碼存儲起來,同時,自動生成臨時隨機數(shù)N。再根據(jù)自己的ID生成對應(yīng)的標志圖像TUSER,根據(jù)隨機數(shù)N生成對應(yīng)的隨機數(shù)圖像SN。將圖像SN和TUSER作為兩個秘密圖像,將圖像g作為其中的一個分享圖像,利用之前的多秘密可視密碼算法,加密生成對應(yīng)另外一個分享圖像F1。將F1的大小進行偽裝后和ID一起發(fā)送給Authorization Server。
Authorization Server先判斷ID的有效性,如果無效就停止認證。如果有效,則Authorization Server根據(jù)ID找到對應(yīng)的圖像g,從偽裝的F1圖像中提取出真正的F1圖像,將g與F1進行疊加;從恢復(fù)的第一個秘密圖像中讀取EU標志信息ID,并驗證與Authorization Server發(fā)送的ID是否一致。再將F1上下翻轉(zhuǎn)后再與g疊加,從恢復(fù)的第二個秘密圖像中讀取用戶發(fā)送的隨機數(shù)N。以上過程完成了Authorization Server對EU的認證。
Authorization Server將圖像SN和自己的標志圖像TSERVER作為兩個要隱藏的秘密圖像,將EU的分享圖像g作為其中的一個分享圖像,加密生成對應(yīng)的分享圖像F2。然后將圖像F2進行大小偽裝后發(fā)送給EU進行驗證。
當(dāng)EU收到偽裝圖像F2,先提取出真正的F2,將其與g進行疊加,從恢復(fù)的第一個秘密圖像中讀取標志信息,并驗證與此時通信的服務(wù)器是否一致。再將F2進行翻轉(zhuǎn)后再與g疊加,可從恢復(fù)的第二個秘密圖像中讀取用戶發(fā)送的隨機數(shù)N,并驗證是否與Authorization Server此次會話發(fā)送的隨機數(shù)一致。如果都一致,則這一過程完成了EU對Authorization Server的認證。
雙向認證之后,再發(fā)送授權(quán)驗證碼。EU將隨機數(shù)N+1生成圖像SN+1,以圖像g作為一個分享圖像,再利用(2,2)隨機柵格可視密碼算法,生成另一個分享圖像F3,將F3大小偽裝處理后發(fā)送給Authorization Server。Authorization Server收到偽裝大小的圖像F3,從中提取出真正的F3,與分享圖像g直接疊加,驗證收到的圖像信息,如果是N+1,可確認是剛才會話的EU,則開始分發(fā)授權(quán)驗證碼。Authorization Server隨機生成會話密鑰m,再生成對應(yīng)的驗證碼圖像Sm,然后將圖像SN+1和圖像Sm作為兩個要隱藏的秘密圖像,將EU的分享圖像g作為其中的一個分享圖像,利用所構(gòu)造的多秘密可視密碼算法,加密生成對應(yīng)的分享圖像F4。將圖像F4進行大小偽裝處理后返回給EU。
當(dāng)EU收到大小偽裝后的F4,從中提取出真正的F4,將其與g進行疊加,從恢復(fù)的第一個秘密圖像中讀取隨機數(shù),并驗證是否是N+1以確保發(fā)送密鑰的Authorization Server是會話的服務(wù)器,沒有被第三方欺騙。如果不是,則拒絕會話。如果是,將F4進行旋轉(zhuǎn)再與g疊加,可從恢復(fù)的第二個秘密圖像中讀取授權(quán)驗證碼信息m,此時需要用戶將驗證碼m手動輸入,會在客戶端生成對應(yīng)的圖像。此時的文字不再是扭曲的,以便Authorization Server可以自動識別。EU將驗證碼圖像和隨機數(shù)N+2當(dāng)作兩個秘密,以g為分享圖像,用同樣的算法加密生成另一個分享圖像F5發(fā)送到Authorization Server。最后Authorization Server驗證收到的隨機數(shù)是否等于N+2,以及驗證碼是否等于m,如果相等,則EU產(chǎn)生一個授權(quán)消息End_user grant給Authorization Server。認證和授權(quán)過程如圖4所示。
圖4 認證流程
2.2.3 認證響應(yīng)
Authorization Server收到EU的授權(quán)消息之后,將包含有授權(quán)碼code和身份令牌id_Token的認證響應(yīng)消息生成分別包含授權(quán)碼code和令牌id_Token的兩個圖像S1和S2。然后通過之前提到的多秘密可視密碼構(gòu)造方案進行加密處理,發(fā)送給RP。
2.2.4 令牌請求
RP收到秘密圖像之后,先進行解密處理,獲取到授權(quán)碼code。然后檢查授權(quán)碼是否合格,驗證成功之后,生成一個令牌請求。該請求消息中包含了4個主要參數(shù),分別是code、client_id、radirect_uri、RP和OP公用的隨機柵格圖像g。其中,RP需要用授權(quán)碼code換取訪問令牌Access Token。最后RP將令牌請求(Token Request)發(fā)送給OP。
2.2.5 令牌響應(yīng)
當(dāng)OP收到令牌請求消息之后,首先驗證授權(quán)碼和時間戳,驗證成功之后,產(chǎn)生令牌響應(yīng)消息Token Response。其中,令牌響應(yīng)消息中包括4個主要參數(shù):Access Token、token_type、id_token以及express_in(Access Token的生命周期)。
在本協(xié)議中主要運用了(2,2)雙秘密可視密碼算法進行秘密信息的傳遞。EU和授權(quán)服務(wù)器具有公共的分享圖像,雙方根據(jù)要傳遞的秘密圖像和公共分享圖像g,使用本節(jié)的多秘密可視密碼算法,加密生成另外一個分享圖像。通過傳遞該分享圖像來秘密傳輸各自的標志圖像信息、隨機數(shù)信息及驗證碼信息進行判斷及認證,并且從每個分享圖像不會得到原始秘密圖像的任何信息。當(dāng)對兩個分享圖像進行疊加,就能顯示出原始的標志圖像、隨機數(shù)圖像以及驗證碼圖像,雙方均通過傳送各自的標志圖像實現(xiàn)了相互認證。在每次交互式通信過程中一項重要的安全防護措施就是對隨機數(shù)信息的傳遞,協(xié)議全程以此隨機數(shù)為主線,保障了認證過程中一定是此次會話中的合法用戶及合法服務(wù)器,增加了認證的安全性。在協(xié)議交互認證的最后,服務(wù)器向用戶發(fā)送了只有人類視覺系統(tǒng)能識別的驗證碼,確保了人類的參與,避免使用計算機代理技術(shù)自動登錄代替用戶采取行為。
3.2.1 冒充攻擊
假設(shè)攻擊者猜測到一個合法的用戶ID并偽造出一個隨機數(shù)N,試圖生成一張分享圖像發(fā)送給服務(wù)器。然而用戶能夠生成一張合法的分享圖像的前提是具有用戶和服務(wù)器共享的分享圖像g,而攻擊者在知道分享圖像真實大小的前提下猜測成功的概率為(1/2)H×W。若攻擊者截獲到用戶發(fā)送給服務(wù)器的分享圖像F1,企圖模擬合法服務(wù)器,此時攻擊者需要生成分享圖像F2,而F2是由服務(wù)器的標志圖像及隨機數(shù)N還有共享合法圖像g所確定。由于攻擊者只有F1,從中無法推出隨機數(shù)信息,也沒有共享圖像g的信息,即使偽造服務(wù)器的標志圖像也無法通過用戶的驗證[11]。因此,冒充攻擊是無法實現(xiàn)的。
3.2.2 重放攻擊
對于每個新的登錄請求,本協(xié)議生成不同的隨機數(shù)N。如果攻擊者獲取到上一次認證中用過的F1,并將其轉(zhuǎn)發(fā)給服務(wù)器,即使攻擊者收到服務(wù)器返回的F2,沒有用戶和服務(wù)器的共享圖像g,攻擊者也無法解密此次會話中的隨機數(shù)N,也無法構(gòu)造F3繼續(xù)向服務(wù)器請求驗證碼圖像,因此可有效抵制重放攻擊。
3.2.3 中間人攻擊
假設(shè)攻擊者通過各種技術(shù)手段,可以截取用戶和服務(wù)器之間的通信信息,并試圖修改信息進行欺騙。當(dāng)攻擊者獲取用戶發(fā)送給服務(wù)器的F1,由于F1是噪聲圖像,無法得到任何相應(yīng)的秘密信息,能夠成功解密的唯一途徑就是具有用戶和服務(wù)器的共享圖像g。但此共享圖像g并沒有在認證過程中進行傳輸,攻擊者獲取的任何信息都無法解密,也無從偽造后續(xù)傳遞的信息,因此在第三步服務(wù)器要確認隨機數(shù)N+1時就會被拒絕,所以中間人攻擊也會失敗。
3.2.4 口令猜測攻擊
本方案中的認證協(xié)議的安全性很大程度上決定于用戶與服務(wù)器之前的共享圖像g,一旦圖像g遭到成功的猜測,則攻擊者將會完成控制整個認證過程。但要猜測出正確的共享圖像g具有兩大問題:(1) 因為在信道中傳輸?shù)膱D像的大小是經(jīng)過偽造的,而且每次的大小都是不同的,所以攻擊者無法確定共享圖像g的大小。(2) 即使攻擊者確定了共享圖像的大小,假設(shè)其尺寸為128×128,則能夠成功暴破的概率為(1/2)128×128。綜合這兩種因素,試圖猜測共享圖像g也基本無法成功。
本文設(shè)計的認證授權(quán)協(xié)議中采用的加密方法主要是基于隨機柵格的多秘密可視密碼算法,而常規(guī)身份認證協(xié)議中采用的加密方法主要有對稱加密算法如AES和非對稱加密算法如RSA。本文采用的基于隨機柵格的可視密碼算法基于圖像像素點的邏輯運算,AES算法基于數(shù)據(jù)的排列和置換,而RSA算法基于大數(shù)分解,三種算法的計算復(fù)雜度依次升高。為了對這三種算法進行定量分析,本文對它們的加解密速度進行測試,即同時加密相同長度的明文,比較三種算法完成加密及解密所消耗的總時間如表1所示。
表1 三種密碼算法對比圖
文獻[12]除了運用可視密碼方案,還用到對稱加密算法和MAC消息驗證碼,相較而言,本文的認證效率相對較高。文獻[13]使用公鑰對方案中的圖像密鑰進行更新,而本方案只是重新生成隨機柵格實現(xiàn)密鑰的更新,在計算成本上有所減小。與文獻[14]相比,兩個方案都用到隨機數(shù)發(fā)生器,但文獻[14]使用消息驗證碼對消息進行驗證,而本方案使用隨機數(shù)N來實現(xiàn)驗證功能,確保消息沒有被篡改,效率更高。
綜上,本文提出的結(jié)合多秘密可視密碼方案的OIDC協(xié)議能夠有效完成EU與服務(wù)器之前的雙向認證,并能抵抗常見的攻擊,具有良好的安全性能。另外,相比于常規(guī)的現(xiàn)代密碼算法更加簡單,易于實現(xiàn),而且加解密速度更快。此方案在WoT下可以節(jié)省更多開銷,提高計算性能。
OIDC協(xié)議使用安全傳輸層協(xié)議等來保證其安全性,但是,部署安全傳輸層協(xié)議需要很大且十分復(fù)雜的開銷,大大降低了通信的效率。同時,該協(xié)議在EU和授權(quán)服務(wù)器的雙向認證上,假設(shè)攻擊者獲取到相關(guān)參數(shù)進行攻擊會使得雙方失去相互認證性。并且,攻擊者能夠截取到用戶口令,這使得用戶口令失去秘密性。本方案采用多秘密可視密碼技術(shù),其保證在少分存的前提下,安全有效地完成EU和授權(quán)服務(wù)器的雙向認證,其中未涉及到用戶口令,從而保證了用戶口令的秘密性。本方案在交互過程中可以一次傳遞兩個互相制約的秘密信息,而且每次交互過程中通過隨機數(shù)信息來保證會話的一致性,增強方案的安全性能。此外本方案的登錄驗證碼可以防止機器暴力破解??尚行?、安全性和效率分析表明了本協(xié)議能夠提供有效安全的認證和授權(quán)功能,此方案不僅在運行效率上具有優(yōu)勢,而且安全性也具有保障。