(山西財經(jīng)大學(xué)信息管理學(xué)院 山西 030006)
隨著移動會聯(lián)網(wǎng)的全面普及和飛速發(fā)展,越來越多的基于移動設(shè)備的服務(wù)程序被開發(fā)出來,為我們的生活提供了極大的方便,但同時也帶來了許多隱私問題,其中的一個問題就是使用賬號和密碼進行登錄的程序,由于賬號和密碼被盜或者賬號和密碼被熟人使用或者是借用,而帶來的用戶活動軌跡的隱私泄露問題,如假如有親近的朋友向我們借用淘寶賬號使用,而我們卻不好意思拒絕,那我們的賬號和密碼會被其知道,進而我們的歷史購買會被其知道,從而泄露我們的隱私,如何設(shè)計一種技術(shù),即使別人知道了我們的用戶名密碼,但沒有我們的身份特征信息進行進一步驗證,也無法訪問我們在服務(wù)提供商儲存的信息,從而保護我們的隱私和安全;賬號和密碼被盜用或者會被其他人使用,也是OpenId 等技術(shù)不能被廣泛使用的一個因素。
目前已有的一種基于賬號丟失的隱私保護技術(shù)是在用戶登錄后不直接進入主頁面,而是要求用戶選擇歷史購買的物品,通過這種方法確認是否是本人,如淘寶等都使用這種技術(shù);另一種識別賬號被盜的方法是使用一個手機賬號,登錄前先通過短信驗證,確保是用戶自己的手機,如果他人使用賬號登錄,因為不是用戶本人的手機,所以無法收到短信驗證碼而無法登錄,從而保護用戶隱私,這種方法在金融APP中被廣泛使用;但是這兩種方法都難以防止熟人詢問;Shamir 于1984年首次提出了基于身份的加密方案[1],即以用戶的身份信息如身份證號、郵件地址等唯一代表用戶身份的信息作為公鑰,然后生成用戶的私鑰,基于身份的加密的方案沒有了傳統(tǒng)公鑰密碼體系中的公鑰管理和證書管理;2005年Sahai和Waters 通過多次提取同一生物信息,如虹膜、指紋等生物信息,產(chǎn)生其多個特征,以多個特征作為公鑰進行加密的方案[2],引申出了基于屬性加密的方案和(t,n)門陷結(jié)構(gòu),只有當(dāng)解密密鑰的屬性個數(shù)大于等于t 時,才能解密成功,實現(xiàn)了屬性之間的與(and)或(or)操作;2006年Goyal[3]提出了基于屬性的密鑰策略加密方案(KP-ABE),將訪問控制結(jié)構(gòu)部署到密鑰中;2007年Bethencourt提出了基于屬性的密文策略的加密方案(CP-ABE)[4],將訪問控制結(jié)構(gòu)部署到密文中;文獻[4]提出了根據(jù)雙曲線配對思想,實現(xiàn)了(t,n)門限秘密共享方案,給出了訪問控制樹的構(gòu)建方法;文獻[5]提出了基于屬性的簽名算法(ABS),密鑰生成中心根據(jù)用戶的屬性生成解密密鑰,發(fā)送給用戶,對消息進行簽名;文獻[6]、[7]、[3]、[8]提出了基于ABE的應(yīng)用方案。
本文使用指紋的特征作為身份信息,因為指紋提取時會有多個取值,所以使用了基于屬性的方案,而不是基于身份的方案;又本文構(gòu)建的隱私保護模型需要將訪問結(jié)構(gòu)部署在密文中,而不是密鑰中,所以選擇了CP-ABE方案,而不是KP-ABE方案;作為身份認證模型,簽名似乎比加密更適合,但由于本文的私鑰是用來解密,而不是簽名,所以簽名不適合本文的方案,故本文最后選擇了CP-ABE方案。
本文創(chuàng)建了一個獨立的移動客戶端的身份認證APP,專門為本機上的所有需要身份認證的應(yīng)用程序提供身份認證服務(wù),本方案以指紋的多個特征值為屬性構(gòu)建了訪問控制結(jié)構(gòu),巧妙地構(gòu)建了一個CP-ABE的身份認證方案,以保護由于用戶賬戶和密碼泄露帶來的隱私問題,當(dāng)用戶輸入正確的用戶名和密碼后,對其進一步進行基于身份特征的身份驗證,這里我們選擇的身份特征為指紋信息,由于指紋信息多次采集時,表現(xiàn)得不具備唯一性,我們選擇多個指紋特征作為指紋的特征信息,所以使用的身份驗證方法為基于屬性加密的身份驗證,為了保護用戶的指紋信息,我們將屬性加密的公鑰和私鑰都在客戶端APP中生成,從而阻止了服務(wù)器端獲取指紋信息的可能性。
本文的主要貢獻如下:
(1)對紋特征值的屬性集和用戶從客戶端輸入的指紋的計算都在客戶端,而不是服務(wù)器端,從而保護了用戶的指紋隱私;
(2)改進的算法中提出了一種動態(tài)解密密鑰法,防止了由于密鑰被截獲,帶來的冒充攻擊;
(3)密鑰中心在移動APP端,而不是服務(wù)器端,公共參數(shù)、主密鑰和解密密鑰都由移動APP 生成,充分保護了用戶的隱私和安全;
(4)本方案只做身份認證,只為本移動端的用戶(移動應(yīng)用程序)服務(wù),不需要管理大量的密鑰,時間開銷和內(nèi)存開銷都很??;
(5)本方案中的移動APP 獨立于服務(wù)提供商的移動APP和客戶端頁面,可以為所有的移動服務(wù)提供身份認證,只需要為每一種服務(wù)生成公共參數(shù)和主密鑰,而指紋特征值的屬性集可以共用。
本方案是在用戶輸入用戶名和密碼完全正確后,進行的下一步工作:身份認證,用戶提前可以設(shè)置是否進行身份認證。
CP-ABE是一種將訪問控制策略部署到密文中的屬性加密方法,設(shè)有一套屬性為S={si|i=1,2..n},(話沒完,問作者)
本方案中的角色包括:身份驗證APP、可信第三方TTPS、服務(wù)提供商服務(wù)器端SP 以及位于本機的服務(wù)提供商客戶端SP_APP,體系結(jié)構(gòu)圖如圖1所示,TTPS是可信第三方服務(wù)器,負責(zé)生產(chǎn)和管理身份認證APP,每一個用戶從TTPS下載安裝了身份認證APP后,都要去TTPS 進行注冊,然后由TTPS為其生成公鑰和私鑰,這里使用RSA 算法進行公鑰和私鑰的生成,身份認證APP 獨自完成身份認證,然后將認證結(jié)果使用自己的公鑰加密,傳遞給TTPS,TTPS對其進行簽名,將簽名后的結(jié)果發(fā)送給SP。
身份認證APP中存儲著用戶的指紋信息,在用戶首次安裝了此APP后,就對其進行指紋采集,然后存儲,每一個需要進行身份認證的SP_APP,在首次訪問身份認證APP 時,身份認證APP為其生成屬性加密的主密鑰MK,并將其保存,其工作流程為:
(1)用戶訪問SP,在登錄界面輸入用戶名和密碼,提交給SP;
(2)SP驗證通過后,如果需要進行身份認證,則將請求轉(zhuǎn)發(fā)給身份認證APP;
(3)身份認證APP 調(diào)用公鑰PK;
(4)身份認證APP 生成一個隨機數(shù)M,用公鑰PK對其加密,生成密文C;
(5)身份認證APP 要求用戶輸入指紋,然后使用這個指紋和主密鑰MK,生成解密密鑰SK;
(6)身份認證APP 使用SK對C 進行解密;
(7)如果解密成功,則身份認證通過,發(fā)送一個成功的標(biāo)志給TTPS,TTPS 簽名后發(fā)送給SP;
本方案的基本想法分為兩個階段,分別為:驗證碼生成階段和驗證階段。
圖1 體系結(jié)構(gòu)圖
構(gòu)建一個移動端身份認證APP:
(1)Setup:作為密鑰生成中心,輸入一個秘密參數(shù),生成公共參數(shù)PK和主密鑰MK;
(2)GenAttributes:提取用戶的多個指紋特征,形成屬性集S(s1,s2個指紋特,基于S 構(gòu)建的訪問控制結(jié)構(gòu)為s1||s2||構(gòu)為特征,;其中(||表示邏輯或的關(guān)系),最終將會被部署到密文中,在第4 步中實現(xiàn),訪問門陷為(1,n),其中用戶的指紋特征的提取因為需要時間,且不需要傳輸,可以離線提取,且一直保存在APP中,在加密時隨時使用;
(3)GenRandom:生成一個隨機數(shù)M;
(4)Encrypt(PK,MK,S,M):以S、MK、PK 作為輸入,對M進行加密,生成密文M 行;
(5)SendToServer(PK,M,M:將PK和MK 發(fā)送給服務(wù)器端保存;
當(dāng)服務(wù)器端請求客戶端進行身份認證時,其過程為:
(6)Key Generation(MK,sk):身份認證APP 要求用戶輸入指紋sk(sk∈S),然后以MK、{sk}作為輸入,生成解密密鑰SK;
(7)SendToServer(SK):將SK 發(fā)送給服務(wù)器端;
(8)Decrypt(PK,MS,SK):服務(wù)器端對M服進行解密,如果成功,則證明用戶輸入的指紋和其輸入的賬戶和密碼是同一個人所有,如果不成功,則拒絕登錄。
攻擊模型1:假設(shè)Alice 已經(jīng)擁有了Bob的用戶名和密碼,然后攔截了Bob的解密密鑰SK,模擬移動APP,不進行SK 生成,直接將其發(fā)送給服務(wù)器端,攻擊成功。
基于攻擊1,本文提出了一種改進的身份認證方案,主要思路是:通過改變屬性集S、訪問控制結(jié)構(gòu)和解密密鑰的屬性集A,生成動態(tài)解密密鑰。主要方法為:(1)每次生成一個隨機數(shù)x,將其加入屬性集S中,改變訪問控制結(jié)構(gòu),由原來的邏輯或關(guān)系變成邏輯或和邏輯與的關(guān)系;(2)每當(dāng)用戶退出登錄時,服務(wù)器端要求身份認證APP 利用新的屬性集S對M 用進行重新生成;(3)生成解密密鑰的屬性集變成了{sk,x}。
新方案對原有方案的影響主要表現(xiàn)在第一階段的第(2)、(4)步和第二階段的第(6)步,第一階段的第(1)步,其他步驟不變,改進過程為:
第一階段第(2)步改進后為(new2):將屬性集S中添加一個隨機數(shù)x,屬性集S 變?yōu)镾{s1,s2數(shù)變,改進過,由其構(gòu)成訪問控制結(jié)構(gòu)為:s1||s2||制結(jié)構(gòu)為:程為:,其中(||表示邏輯或,&&表示邏輯與),最終被部署到密文中,在第4)步予以實現(xiàn),訪問門陷變?yōu)?2,n),這一步不需要對指紋進行重新采集;
第一階段第(4)步改進后為(new4);
第二階段第(6)步改進后為(new6):Key Generation(MK,sk,x):身份認證APP 要求用戶輸入指紋sk(sk∈S),然后以MK、{sk,x}作為輸入,生成解密密鑰SK,解密屬性集由{sk}變成{sk,x}。
改進后的方案由三部分組成,分別為:首次驗證碼生成階段、每次退出時驗證碼重新生成階段和每次登陸后的身份認證階段,其執(zhí)行過程分別為:
首次驗證碼生成階段:
(1)(new2)(3)(new4)(5);
每次退出登錄時驗證碼重新生成階段:
(new2)(3)(new4)(5);
每次登錄后的身份認證階段:
(new6)(7)(8)
攻擊模型2:假設(shè)Bob的身份認證APP 被攻擊,指紋屬性集S,MK,PK都被泄露給Alice,Alice 利用其中的一個指紋生成密鑰,但因為不知道x的值,所以無法生成相應(yīng)的解密密鑰,從而證明本方案是安全的。
本文中CP-ABE的實現(xiàn)是按照文獻[6]中基于雙線性配對原理實現(xiàn)的。
文獻[6]中得出了CP-ABE中每一階段的時間效率,如表1所示,其中BP 表示雙線性對計算,G1M 表示在群G中的標(biāo)量乘法。
表1 文獻[6]中CP-ABE計算次數(shù)
本方案的效率分析,如表2所示,其中計算次數(shù)等于BP+GM+其他。
表2 本方案各階段的計算次數(shù)
文獻[11]在3.2G 處理器的64 位的工作站上,在512 位的有限域屮,根據(jù)橢圓曲線:y=x3+x,通過pbc 工具包對雙線性對計算所用的時間約為5.2ms,在群G1上所用的時間分別為0.6ms,根據(jù)表1,生成的對應(yīng)關(guān)系如表3所示。
表3 文獻[6]中CP-ABE計算次數(shù)和計算時間
根據(jù)表3中的數(shù)據(jù),將時間分布到表2的每一個階段,對應(yīng)關(guān)系如表4所示。
通過實驗分析可知,每次推出登錄時消耗0.15ms,每次驗證時大概耗時6.35ms都是可以接受的,所以通過本方案進行身份認證是可行的。
文獻[11]通過分析得出Key Generation 階段的運時時間同解密屬性集合中的屬性數(shù)量呈同步線性增長;Encrypt 階段的運行時間受訪問樹中的葉子節(jié)點多少的影響很大;Decrypt 階段的運行時間和解密屬性集合的大小和訪問結(jié)構(gòu)有關(guān);而本方案中的解密屬性集合{sk,x}的大小為2,訪問結(jié)構(gòu)的葉子節(jié)點大小為n+1,指紋特征個數(shù)小于10,所以,葉子節(jié)點大小小于11,訪問結(jié)構(gòu)中的邏輯關(guān)系為與和或,分別為:s1&&x||s2&&x||別為:結(jié)構(gòu)有關(guān),結(jié)構(gòu)簡單,所以從理論上分析,可以推斷本方案的運行時間不會太長。
表4 本方案中計算時間和計算次數(shù)對應(yīng)表
本文構(gòu)建了一種基于CP-ABE的移動身份認證方案,保護由于用戶賬戶和密碼泄露帶來的隱私泄露,通過安全性分析和時間效率分析,證明本方案是可行的。