韓妍妍 張 京 閆曉璇 李 娜
1(北京電子科技學院通信工程系 北京 100070)2(西安電子科技大學通信工程學院 陜西 西安 710071)
近年來,物聯網作為信息時代的第三次浪潮得到了迅猛的發展。WoT,即Web of Things,Web技術作為跨平臺的資源和服務共享基礎框架,成為物聯網實現泛在計算與異構資源共享的技術選擇[2]。當前的WoT環境中存在著多種威脅,譬如:丟失身份信息、泄露個人信息以及濫用資源等,身份認證和授權是抵御這些威脅的一種重要手段[3]。
Hasan等[4]提出了一個通過委托許可結合OAuth協議的認證授權方案,但是該方案存在著無法控制令牌權限等缺陷。Google提出了一種擴展OpenID和OAuth的協議[5],但是該協議存在無法滿足依賴方RP(Relay Part)和OAuth使用者不同時的認證需求。OpenID Connect協議是2014年發布的重要單點登錄認證協議標準,目前該協議已經被廣泛應用到WoT行業中。但是,該協議存在認證不完整以及用戶口令安全性強度不夠的缺陷[6]。
本文提出一種多秘密可視密碼方案,通過兩種疊加方式能夠恢復出兩個不同的秘密可視密碼方案,結合OpenID Connect協議能夠有效地解決該協議中認證不完整以及口令安全性強度不夠的問題,也可以實現控制權限。可視密碼技術可以在少量分存中隱藏多個秘密信息[7],具有技術實現簡單、計算復雜度低等優點。
常規的可視密碼方案生成的共享圖像是類噪聲的,以此來確保秘密信息不可讀。由于無法判斷所要恢復的秘密圖像對應的是哪些共享圖像,一旦用戶持有的共享圖像數量變得龐大,問題會變得更加復雜。具有標簽信息的可視密碼技術TVC(Tagged Visual Cryptography)將標簽圖像隱藏在每個共享中,通過折疊每個單個共享圖像就能在視覺上顯現出來。然后通過這種有意義的標簽圖像來識別屬于特定秘密圖像的共享對,從而方便用戶區分管理多個類噪聲共享圖像。通過將標簽圖像設置為與每個共享圖像相關聯的唯一符號,以此建立對未經授權或發生欺騙行為的參與者的驗證機制,凡是未經授權或有欺騙行為的共享圖像,其標簽圖像將不能正確地恢復[8]。

圖1 偽裝后的圖像
在對噪聲圖像進行傳輸時,不希望讓攻擊者獲取實際圖像的大小,因此,需要在不能改變圖像原有的信息的同時對傳輸圖像的大小進行偽裝處理。本方案采用的處理方法是對原有圖像進行擴大,即將原來圖像的尺寸由H×W變為(H+a)×(W+b),偽裝后的圖像如圖1所示。擴大后的圖像中的H×W部分與原圖重合,而多余的邊緣部分隨機分配二值像素0或1。這樣擴大后的圖像仍是噪聲圖,即使攻擊者獲取了圖像,也不能輕易確定原圖的大小,加大了暴力破解原圖的難度[9]。而服務器和用戶在對圖像進行傳輸處理時,會提前約定好圖像的大小,服務器在收到用戶發來的圖像之后會毫無差錯地提取出原圖。這種方法對于噪聲圖像的偽裝傳輸是有效的,而對于有意義的圖像傳輸需要視圖像信息進行具體偽裝。
本文提出一種新的TVC方案,不僅具有TVC方案原有的性能,使得分享圖像中可以隱藏標簽圖像的信息,而且恢復的秘密數量有所增加,為可視密碼方案增加了更多的信息量。當對齊疊加這兩個共享圖像,第一個秘密圖像就會出現;當把一個共享圖像上下翻轉再互相疊加,第二個秘密圖像就能出現。方案中恢復的秘密圖像和標簽圖像具有良好的視覺識別度[10]。
列舉本方案所需要的幾個角色,分別是終端用戶EU(End User)、OAuth2中受信任的客戶端RP(Relying Party)以及用來為RP提供EU的身份認證信息OP(OpenID Provider)。其中,OP包含令牌端點TE(Token Endpoint)、授權服務器(OAuth2服務器)以及UserInfo EndPoint,TE是主要用于令牌的生成與發送。本方案的總流程圖如圖2所示。

圖2 方案流程
主要步驟如下:
(1) RP向OP發送一個請求認證;
(2) OP通過使用多秘密可視密碼技術對EU進行身份認證,并進行授權;
(3) OP將ID Token和Access Token返回給RP;
(4) RP使用Access Token發送一個令牌請求;
(5) 令牌響應。
假設有兩個大小為H×W的秘密圖像S1和S2,還有兩個將要被加密為分享圖像的大小為H/2×W的標簽圖像T1和T2,即標簽圖像的大小與秘密圖像對折之后的大小相同。經過方案的加密過程,將會產生兩個共享圖像。當直接對齊疊加兩個共享圖像時,秘密圖像S1將會顯示,將其中一個共享圖像上下翻轉,再相互疊加,此時將恢復出秘密圖像S2。另外,對于每個共享圖像,沿著圖像的橫向對稱軸上下對折,將會分別呈現出隱藏的標簽圖像。
仿真實驗如圖3所示。加密過程分為如下幾個階段:第一步利用(2,2)隨機柵格技術[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) 恢復F1的標簽圖像 (j) 恢復F2的標簽圖像圖3 恢復后的圖像q=0.5
步驟1根據秘密圖像S1和S2利用(2,2)隨機柵格技術[8]生成過渡圖像G1、G2。對共享圖像G1中的某個像素G1(i,j)以相同的1/2的概率進行隨機取0(白色)或1(黑色)的操作,直至全部像素G1(i,j)都被處理。分別將S1和S2和G1按照(2,2)隨機柵格技術生成過渡G21和G22,再將G22經過上下翻轉得到G22’。隨機生成一個數k且0≤k≤1。如果k≤1/2,則將像素G21(i,j)分配給G2(i,j),否則將G22’(i,j)分配給G2(i,j),直到所有像素處理完。
步驟2根據標簽圖像T1和T2(圖3(c)(d))生成過渡圖像L1和L2。先按照(2,2)隨機柵格技術將Tx(x=1,2)生成兩個過渡圖像Cx1和Cx2,再將Cx2上下翻轉再與Cx1上下拼接起來,形成Lx,其中x=1,2。
步驟3將過渡共享圖像Gx(x=1,2)和Lx(x=1,2)組合為最終共享圖像Fx(x=1,2)。給定一個概率值p,再隨機生成一個數q且0≤q≤1。如果q≤p,則將像素Gx(i,j)分配給Fx(i,j),否則將Lx(i,j)分配給Fx(i,j)。
方案的解密過程只需要通過簡單的疊加及翻轉。當疊加分享圖像F1和F2,秘密圖像S1即可恢復(圖3(g));將F1與上下翻轉過的F2記為F2’相互疊加,秘密圖像S2即可恢復(圖3(h))。并且通過將共享圖像按其橫向對稱軸進行對折,就可看到隱藏在共享圖像中的標簽圖像(圖3(i)(j))。
2.2.1 認證請求
RP要獲取EU在OP上的私有數據,首先向OP發送身份認證請求信息。該請求消息包括client_id、response_type、scope、redirect_uri和state這五種重要參數。其中:client_id是指客戶端的id;response_type是指授權方式的響應類型;scope是指訪問閾值;redirect_uri是指重定向地址;state表示請求和反饋之間的狀態值。
2.2.2 向認證及授權
Authorization Server首先判斷來自RP發送的請求信息中client_id的有效性,如果無效則停止認證。如果有效則Authorization Server產生認證EU的請求消息。EU將一張隨機柵格圖像g和注銷認證碼存儲起來,同時,自動生成臨時隨機數N。再根據自己的ID生成對應的標志圖像TUSER,根據隨機數N生成對應的隨機數圖像SN。將圖像SN和TUSER作為兩個秘密圖像,將圖像g作為其中的一個分享圖像,利用之前的多秘密可視密碼算法,加密生成對應另外一個分享圖像F1。將F1的大小進行偽裝后和ID一起發送給Authorization Server。
Authorization Server先判斷ID的有效性,如果無效就停止認證。如果有效,則Authorization Server根據ID找到對應的圖像g,從偽裝的F1圖像中提取出真正的F1圖像,將g與F1進行疊加;從恢復的第一個秘密圖像中讀取EU標志信息ID,并驗證與Authorization Server發送的ID是否一致。再將F1上下翻轉后再與g疊加,從恢復的第二個秘密圖像中讀取用戶發送的隨機數N。以上過程完成了Authorization Server對EU的認證。
Authorization Server將圖像SN和自己的標志圖像TSERVER作為兩個要隱藏的秘密圖像,將EU的分享圖像g作為其中的一個分享圖像,加密生成對應的分享圖像F2。然后將圖像F2進行大小偽裝后發送給EU進行驗證。
當EU收到偽裝圖像F2,先提取出真正的F2,將其與g進行疊加,從恢復的第一個秘密圖像中讀取標志信息,并驗證與此時通信的服務器是否一致。再將F2進行翻轉后再與g疊加,可從恢復的第二個秘密圖像中讀取用戶發送的隨機數N,并驗證是否與Authorization Server此次會話發送的隨機數一致。如果都一致,則這一過程完成了EU對Authorization Server的認證。
雙向認證之后,再發送授權驗證碼。EU將隨機數N+1生成圖像SN+1,以圖像g作為一個分享圖像,再利用(2,2)隨機柵格可視密碼算法,生成另一個分享圖像F3,將F3大小偽裝處理后發送給Authorization Server。Authorization Server收到偽裝大小的圖像F3,從中提取出真正的F3,與分享圖像g直接疊加,驗證收到的圖像信息,如果是N+1,可確認是剛才會話的EU,則開始分發授權驗證碼。Authorization Server隨機生成會話密鑰m,再生成對應的驗證碼圖像Sm,然后將圖像SN+1和圖像Sm作為兩個要隱藏的秘密圖像,將EU的分享圖像g作為其中的一個分享圖像,利用所構造的多秘密可視密碼算法,加密生成對應的分享圖像F4。將圖像F4進行大小偽裝處理后返回給EU。
當EU收到大小偽裝后的F4,從中提取出真正的F4,將其與g進行疊加,從恢復的第一個秘密圖像中讀取隨機數,并驗證是否是N+1以確保發送密鑰的Authorization Server是會話的服務器,沒有被第三方欺騙。如果不是,則拒絕會話。如果是,將F4進行旋轉再與g疊加,可從恢復的第二個秘密圖像中讀取授權驗證碼信息m,此時需要用戶將驗證碼m手動輸入,會在客戶端生成對應的圖像。此時的文字不再是扭曲的,以便Authorization Server可以自動識別。EU將驗證碼圖像和隨機數N+2當作兩個秘密,以g為分享圖像,用同樣的算法加密生成另一個分享圖像F5發送到Authorization Server。最后Authorization Server驗證收到的隨機數是否等于N+2,以及驗證碼是否等于m,如果相等,則EU產生一個授權消息End_user grant給Authorization Server。認證和授權過程如圖4所示。

圖4 認證流程
2.2.3 認證響應
Authorization Server收到EU的授權消息之后,將包含有授權碼code和身份令牌id_Token的認證響應消息生成分別包含授權碼code和令牌id_Token的兩個圖像S1和S2。然后通過之前提到的多秘密可視密碼構造方案進行加密處理,發送給RP。
2.2.4 令牌請求
RP收到秘密圖像之后,先進行解密處理,獲取到授權碼code。然后檢查授權碼是否合格,驗證成功之后,生成一個令牌請求。該請求消息中包含了4個主要參數,分別是code、client_id、radirect_uri、RP和OP公用的隨機柵格圖像g。其中,RP需要用授權碼code換取訪問令牌Access Token。最后RP將令牌請求(Token Request)發送給OP。
2.2.5 令牌響應
當OP收到令牌請求消息之后,首先驗證授權碼和時間戳,驗證成功之后,產生令牌響應消息Token Response。其中,令牌響應消息中包括4個主要參數:Access Token、token_type、id_token以及express_in(Access Token的生命周期)。
在本協議中主要運用了(2,2)雙秘密可視密碼算法進行秘密信息的傳遞。EU和授權服務器具有公共的分享圖像,雙方根據要傳遞的秘密圖像和公共分享圖像g,使用本節的多秘密可視密碼算法,加密生成另外一個分享圖像。通過傳遞該分享圖像來秘密傳輸各自的標志圖像信息、隨機數信息及驗證碼信息進行判斷及認證,并且從每個分享圖像不會得到原始秘密圖像的任何信息。當對兩個分享圖像進行疊加,就能顯示出原始的標志圖像、隨機數圖像以及驗證碼圖像,雙方均通過傳送各自的標志圖像實現了相互認證。在每次交互式通信過程中一項重要的安全防護措施就是對隨機數信息的傳遞,協議全程以此隨機數為主線,保障了認證過程中一定是此次會話中的合法用戶及合法服務器,增加了認證的安全性。在協議交互認證的最后,服務器向用戶發送了只有人類視覺系統能識別的驗證碼,確保了人類的參與,避免使用計算機代理技術自動登錄代替用戶采取行為。
3.2.1 冒充攻擊
假設攻擊者猜測到一個合法的用戶ID并偽造出一個隨機數N,試圖生成一張分享圖像發送給服務器。然而用戶能夠生成一張合法的分享圖像的前提是具有用戶和服務器共享的分享圖像g,而攻擊者在知道分享圖像真實大小的前提下猜測成功的概率為(1/2)H×W。若攻擊者截獲到用戶發送給服務器的分享圖像F1,企圖模擬合法服務器,此時攻擊者需要生成分享圖像F2,而F2是由服務器的標志圖像及隨機數N還有共享合法圖像g所確定。由于攻擊者只有F1,從中無法推出隨機數信息,也沒有共享圖像g的信息,即使偽造服務器的標志圖像也無法通過用戶的驗證[11]。因此,冒充攻擊是無法實現的。
3.2.2 重放攻擊
對于每個新的登錄請求,本協議生成不同的隨機數N。如果攻擊者獲取到上一次認證中用過的F1,并將其轉發給服務器,即使攻擊者收到服務器返回的F2,沒有用戶和服務器的共享圖像g,攻擊者也無法解密此次會話中的隨機數N,也無法構造F3繼續向服務器請求驗證碼圖像,因此可有效抵制重放攻擊。
3.2.3 中間人攻擊
假設攻擊者通過各種技術手段,可以截取用戶和服務器之間的通信信息,并試圖修改信息進行欺騙。當攻擊者獲取用戶發送給服務器的F1,由于F1是噪聲圖像,無法得到任何相應的秘密信息,能夠成功解密的唯一途徑就是具有用戶和服務器的共享圖像g。但此共享圖像g并沒有在認證過程中進行傳輸,攻擊者獲取的任何信息都無法解密,也無從偽造后續傳遞的信息,因此在第三步服務器要確認隨機數N+1時就會被拒絕,所以中間人攻擊也會失敗。
3.2.4 口令猜測攻擊
本方案中的認證協議的安全性很大程度上決定于用戶與服務器之前的共享圖像g,一旦圖像g遭到成功的猜測,則攻擊者將會完成控制整個認證過程。但要猜測出正確的共享圖像g具有兩大問題:(1) 因為在信道中傳輸的圖像的大小是經過偽造的,而且每次的大小都是不同的,所以攻擊者無法確定共享圖像g的大小。(2) 即使攻擊者確定了共享圖像的大小,假設其尺寸為128×128,則能夠成功暴破的概率為(1/2)128×128。綜合這兩種因素,試圖猜測共享圖像g也基本無法成功。
本文設計的認證授權協議中采用的加密方法主要是基于隨機柵格的多秘密可視密碼算法,而常規身份認證協議中采用的加密方法主要有對稱加密算法如AES和非對稱加密算法如RSA。本文采用的基于隨機柵格的可視密碼算法基于圖像像素點的邏輯運算,AES算法基于數據的排列和置換,而RSA算法基于大數分解,三種算法的計算復雜度依次升高。為了對這三種算法進行定量分析,本文對它們的加解密速度進行測試,即同時加密相同長度的明文,比較三種算法完成加密及解密所消耗的總時間如表1所示。

表1 三種密碼算法對比圖
文獻[12]除了運用可視密碼方案,還用到對稱加密算法和MAC消息驗證碼,相較而言,本文的認證效率相對較高。文獻[13]使用公鑰對方案中的圖像密鑰進行更新,而本方案只是重新生成隨機柵格實現密鑰的更新,在計算成本上有所減小。與文獻[14]相比,兩個方案都用到隨機數發生器,但文獻[14]使用消息驗證碼對消息進行驗證,而本方案使用隨機數N來實現驗證功能,確保消息沒有被篡改,效率更高。
綜上,本文提出的結合多秘密可視密碼方案的OIDC協議能夠有效完成EU與服務器之前的雙向認證,并能抵抗常見的攻擊,具有良好的安全性能。另外,相比于常規的現代密碼算法更加簡單,易于實現,而且加解密速度更快。此方案在WoT下可以節省更多開銷,提高計算性能。
OIDC協議使用安全傳輸層協議等來保證其安全性,但是,部署安全傳輸層協議需要很大且十分復雜的開銷,大大降低了通信的效率。同時,該協議在EU和授權服務器的雙向認證上,假設攻擊者獲取到相關參數進行攻擊會使得雙方失去相互認證性。并且,攻擊者能夠截取到用戶口令,這使得用戶口令失去秘密性。本方案采用多秘密可視密碼技術,其保證在少分存的前提下,安全有效地完成EU和授權服務器的雙向認證,其中未涉及到用戶口令,從而保證了用戶口令的秘密性。本方案在交互過程中可以一次傳遞兩個互相制約的秘密信息,而且每次交互過程中通過隨機數信息來保證會話的一致性,增強方案的安全性能。此外本方案的登錄驗證碼可以防止機器暴力破解。可行性、安全性和效率分析表明了本協議能夠提供有效安全的認證和授權功能,此方案不僅在運行效率上具有優勢,而且安全性也具有保障。