本發(fā)明屬于計算機技術(shù)與信息安全技術(shù)領(lǐng)域,涉及使用一個公私鑰對進行屬性簽發(fā)和屬性出示,并具有隱私保護的方法,具體表現(xiàn)為一種屬性證明方法與系統(tǒng)。
背景技術(shù):
進入21世紀(jì)以來,互聯(lián)網(wǎng)的發(fā)展已成為推動世界經(jīng)濟可持續(xù)發(fā)展和社會進步的最重要的推動力之一。隨著網(wǎng)絡(luò)普及率和互聯(lián)網(wǎng)用戶數(shù)量不斷提升,互聯(lián)網(wǎng)的應(yīng)用得到了迅速發(fā)展,特別是即時通訊、個人空間、微博、社交網(wǎng)絡(luò)、電子商務(wù)和在線娛樂等應(yīng)用大大改變了我國人民的生活方式和習(xí)慣,使得網(wǎng)絡(luò)真正成為我國人民獲取信息、交流討論、購物娛樂的載體。然而,在互聯(lián)網(wǎng)上,由于用戶的身份及相關(guān)信息難以識別,互聯(lián)網(wǎng)絡(luò)被惡意的用戶利用,成為違法犯罪的工具。例如惡意網(wǎng)民通過在網(wǎng)絡(luò)上發(fā)布各種謠言,對某些個人和政府進行攻擊和惡意誹謗,以達到各種不可告人的目的,從個人到政府機關(guān)都可能成為不實言論的受害者。目前我國已經(jīng)要求一些網(wǎng)絡(luò)服務(wù)例如微博等等實行實名制,但實名制也帶來了用戶隱私(例如身份證號碼、年齡、性別)信息泄露等等新的問題。因此如何在保護隱私的同時證明用戶的屬性(例如年滿18周歲)等等成為亟需解決的問題。
用戶的屬性可以分為兩類,一種是自然屬性,包括用戶的姓名、年齡、性別、出生地等等與自身相關(guān)的屬性,另一種是可獲得屬性,包括用戶的職業(yè)、職務(wù),還包括其它一些電子屬性,保護電子購票記錄、診療記錄等等。
為了證明用戶的屬性是真實的,目前采用的方法一般通過專用接口,向用戶屬性的管理機構(gòu)進行查詢,由權(quán)威管理機構(gòu)給出屬性的證明。但這種方法要求應(yīng)用系統(tǒng)都通過接口調(diào)用屬性提供方的服務(wù),屬性提供方成為了瓶頸。不僅增加了用戶和應(yīng)用系統(tǒng)的使用成本,而且用戶的隱私也無法得到保障。
隨著公鑰基礎(chǔ)設(shè)施應(yīng)用的推進,在公鑰基礎(chǔ)設(shè)施的基礎(chǔ)上通過授權(quán)管理基礎(chǔ)設(shè)施管理用戶的屬性和權(quán)限,以完成授權(quán)和訪問控制。其中屬性通過屬性證書的形式進行發(fā)布和證明。但這種方法主要用在訪問控制系統(tǒng)中,需要完整的授權(quán)管理基礎(chǔ)設(shè)施支持,應(yīng)用和維護成本都較高。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種支持部分出示的屬性證明方法和系統(tǒng),實現(xiàn)用戶屬性的簽發(fā)和出示,并具有部分出示和隱私保護能力。
具體的說,本發(fā)明包括以下兩個重要的方面:
一、屬性證明方法
本發(fā)明的屬性證明方法包括一個基于公鑰密碼學(xué)的屬性證明方案,該方案包括系統(tǒng)建立、屬性簽發(fā)和屬性出示三部分。完成用戶從屬性提供方(或稱屬性服務(wù)提供方)獲取屬性,并向依賴方(向用戶提供服務(wù)并信任屬性提供方的信息系統(tǒng))證明該用戶具有可信屬性提供方簽發(fā)的屬性,并出示相應(yīng)的屬性值。
該屬性證明方案的基本性質(zhì)包括:
1)基于公鑰密碼學(xué)實現(xiàn),可以支持RSA算法和ECC算法;
2)屬性提供方可以在一個屬性證書(屬性憑證)中簽發(fā)多個屬性,且屬性的名稱和順序不需要預(yù)先確定;
3)在包含多個屬性的屬性證書中,用戶可以選擇任意數(shù)量的屬性進行出示,同時保證剩余屬性的機密性;
4)用戶出示憑證時無需出示公鑰證書,具有隱私保護性質(zhì)。
該簽名方案包含三個主要的算法,各算法的功能如下:
A.系統(tǒng)建立算法:該算法是由屬性提供方完成的算法,輸入安全參數(shù),輸出系統(tǒng)公開參數(shù);
B.屬性簽發(fā)協(xié)議:該算法是由屬性提供方和用戶完成的協(xié)議,輸入一個用戶的屬性集,屬性提供方密鑰和系統(tǒng)公開參數(shù),生成用戶的屬性憑證;
C.屬性出示算法:該算法是由用戶和依賴方完成的協(xié)議,用戶通過協(xié)議向依賴方證明該用戶擁有屬性提供方簽發(fā)的有效的屬性憑證。
二、屬性證明系統(tǒng)
屬性證明系統(tǒng)的主要參與方有屬性服務(wù)提供方(Attribute Service Provider,ASP),用戶代理(User Agent,UA),以及依賴方(Rely Party,RP)三部分,其中ASP為用戶簽發(fā)屬性憑證;用戶代理UA代理用戶完成屬性憑證簽發(fā)協(xié)議和出示協(xié)議等;依賴方使用用戶的屬性驗證用戶具有相應(yīng)的權(quán)限并提供相應(yīng)的服務(wù)。
該屬性證明系統(tǒng)的構(gòu)架如圖1中所示,圖中為一個ASP,一個用戶User,一個依賴方RP。在實際應(yīng)用中,ASP可以為多個用戶和RP提供屬性服務(wù),同時RP也可以信任多個ASP,即RP可以接受不同的ASP簽發(fā)的屬性憑證。
系統(tǒng)可以分為三部分:ASP子系統(tǒng)、用戶代理子系統(tǒng)和屬性憑證驗證子系統(tǒng)(該子系統(tǒng)通常嵌入在RP中)。圖2給出了各個子系統(tǒng)的的模塊和接口,詳細(xì)說明如下:
A.ASP子系統(tǒng)
用戶屬性管理模塊:管理用戶的屬性信息;
用戶身份鑒別模塊:驗證用戶身份(持有的公鑰證書)的有效性;
屬性憑證簽發(fā)模塊:為用戶屬性簽發(fā)憑證;
審計模塊:記錄屬性憑證簽發(fā)信息。
B.用戶代理子系統(tǒng)
屬性憑證管理模塊:存儲用戶獲取的屬性憑證;
屬性憑證簽發(fā)模塊:與ASP完成屬性簽發(fā)協(xié)議,獲取屬性憑證;
屬性憑證出示模塊:與RP完成屬性出示協(xié)議;
USBKey、智能卡等通信模塊:在支持USBKey和智能卡存儲用戶密鑰對的系統(tǒng)中,該模塊負(fù)責(zé)與相應(yīng)的硬件通信,完成獲取公鑰證書,獲取數(shù)據(jù)簽名等操作;
身份鑒別模塊:完成用戶身份的鑒別協(xié)議,并建立安全信道。
C.屬性憑證驗證子系統(tǒng)(通常嵌入RP)
該子系統(tǒng)包括屬性憑證驗證模塊:與用戶完成屬性出示協(xié)議,獲取用戶的屬性,并驗證用戶屬性的有效性。
ASP子系統(tǒng)從相關(guān)系統(tǒng)(例如電子售票系統(tǒng)等賦予用戶某種屬性的系統(tǒng))中獲取用戶的屬性,根據(jù)用戶的請求,驗證用戶身份的有效性,并為用戶簽發(fā)屬性憑證。其中,用戶的身份通過由可信機構(gòu)簽發(fā)的公鑰證書進行證明,即需要驗證用戶擁有有效的從可信機構(gòu)獲取的公鑰證書,且持有與公鑰匹配的私鑰信息。用戶的密鑰對可以是RSA算法和ECC算法產(chǎn)生的。用戶的密鑰對可以是存儲在UKey、智能卡等硬件設(shè)備中,也可以存儲在用戶的計算機等終端設(shè)備中。
用戶代理子系統(tǒng)運行在用戶端,負(fù)責(zé)管理用戶的屬性、與ASP完成屬性簽發(fā)協(xié)議、與RP完成屬性出示協(xié)議。其中用戶的屬性可以存儲在用戶代理內(nèi)部、也可以存儲在硬件中,例如USBKey、智能卡等。用戶的私鑰可以存儲在硬件中(例如USBKey、智能卡等),也可以加密存儲在用戶代理內(nèi)部。當(dāng)存儲在硬件設(shè)備中時,用戶代理通過接口調(diào)用硬件完成簽名過程。
屬性驗證子系統(tǒng)通常嵌入到RP中,對用戶的身份進行驗證,并驗證用戶屬性憑證的有效性。
和現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)勢主要體現(xiàn)在:
1)無需為用戶的每個屬性生成對應(yīng)的密鑰,只需要用戶擁有一對公私鑰即可;
2)支持RSA和ECC算法,同時支持基于RSA和ECC的證書,支持國產(chǎn)公鑰密碼算法SM2;
3)一個屬性憑證中可以包含多個屬性,屬性的名稱和在屬性憑證中順序無需預(yù)先指定;
4)屬性出示過程中可以僅出示部分屬性,依賴方不能獲取到未出示的屬性的任何信息;
5)屬性出示過程無需出示公鑰證書。
附圖說明
圖1是本發(fā)明的屬性證明系統(tǒng)的架構(gòu)圖。
圖2是本發(fā)明的屬性證明系統(tǒng)的模塊及流程示意圖。
具體實施方式
為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面通過具體實施例和附圖,對本發(fā)明做進一步說明。
本發(fā)明的屬性證明系統(tǒng)包含三個主體:用戶,屬性提供方和依賴方三部分。用戶是屬性的擁有者,通過屬性提供方獲得屬性憑證,并在需要出示屬性憑證時證明其擁有有效的屬性憑證。在實際系統(tǒng)中,用戶和用戶代理(運行在計算機、讀卡器中的軟件,幫助用戶實現(xiàn)屬性證明的過程)合作共同完成屬性簽發(fā)的過程。屬性提供方提供屬性的簽發(fā)服務(wù),其中屬性的來源與具體的應(yīng)用相關(guān),例如在電子購票系統(tǒng)中,用戶付款購票后,屬性提供方即可為用戶簽發(fā)購票憑證。依賴方為用戶提供應(yīng)用服務(wù),并需要使用用戶的某些屬性,依賴方一般是網(wǎng)絡(luò)應(yīng)用系統(tǒng)。
本發(fā)明的屬性證明方法包含三個系統(tǒng)過程:系統(tǒng)建立,屬性憑證簽發(fā)協(xié)議,屬性憑證出示協(xié)議。系統(tǒng)建立過程為系統(tǒng)產(chǎn)生必須的公共參數(shù),并通過公開通道發(fā)布,便于用戶獲取。憑證簽發(fā)協(xié)議由用戶和屬性提供方執(zhí)行簽發(fā)協(xié)議,最終用戶得到由屬性提供方簽發(fā)的有效的屬性憑證。屬性出示協(xié)議由用戶和依賴方執(zhí)行屬性憑證出示協(xié)議,最終用戶向依賴方證明其擁有由屬性提供方簽發(fā)的有效的屬性憑證。
實施例1.屬性證明方法
下面給出一個本發(fā)明涉及的屬性證明方法的具體實例:
1.系統(tǒng)建立算法
系統(tǒng)建立算法僅在屬性提供方初始化時執(zhí)行一次,為系統(tǒng)選擇合適的公開參數(shù),并把公開參數(shù)通過公開信道分發(fā),使得用戶和其它使用屬性服務(wù)的參與方可以方便的獲取。
屬性提供方生成一對公私鑰對,并從可信的CA機構(gòu)獲得相應(yīng)的公鑰證書,用來證明屬性提供方的身份和生成簽名(身份鑒別的密鑰對和生成屬性憑證的密鑰對可以不同,在這種情況下,屬性提供方有兩對密鑰)。該公私鑰對既可以是基于RSA算法,也可以基于SM2算法,具體的算法并不影響本系統(tǒng)。
首先屬性提供方選擇一個階為素數(shù)p的素數(shù)階循環(huán)群G,其中p是群的階。屬性提供方設(shè)定系統(tǒng)支持的最大屬性個數(shù)n;選擇一個哈希函數(shù)H:{0,1}*→Zp(即任意長度的比特串到整數(shù)的映射,其中Zp是p階整數(shù)群);并隨機選擇n+4個G中的元素e0,e1,e2,e3,g1,g2,g3,...gn,則方案的公共參數(shù)為{G,p,e0,e1,e2,e3,g1,g2,g3,...gn},其中e0、e1、e2、e3用來把公鑰的兩個分量、隨機化和用戶唯一標(biāo)識信息映射到循環(huán)群中,在實際應(yīng)用中,可以根據(jù)需要嵌入的數(shù)據(jù)數(shù)量選擇合適的元素。例如如果需要再嵌入一個屬性憑證的有效期信息,則需要再選擇一個參數(shù)e4,在計算時則把e4加入連乘部分即可。g1至gn用來把屬性信息映射到循環(huán)群中,數(shù)量和系統(tǒng)支持的單個屬性憑證中可包含的最大屬性個數(shù)相同。為了保證公開參數(shù)的有效性,屬性提供方可以在分發(fā)公共參數(shù)的同時,生成并分發(fā)他對公共參數(shù)的簽名信息。
2.簽發(fā)協(xié)議
用戶與屬性服務(wù)提供方通過簽發(fā)協(xié)議,實現(xiàn)屬性服務(wù)提供方為用戶簽發(fā)屬性憑證。在執(zhí)行簽發(fā)前,用戶應(yīng)從可信的CA機構(gòu)獲取公鑰證書,作為身份的證明。屬性提供方應(yīng)確認(rèn)持有相應(yīng)證書的用戶具有待簽發(fā)的屬性。用戶和屬性提供方的交互流程如下:
1)用戶向?qū)傩蕴峁┓桨l(fā)送屬性憑證簽發(fā)申請,申請應(yīng)提交用戶的公鑰證書和要獲取的屬性列表{Certuser,AttrList=[AttrName1,AttrName2,…,AttrNamen]}。屬性列表可包含多個屬性,也可為空值。若屬性列表為空,則屬性提供方按照管理要求簽發(fā)默認(rèn)屬性。
2)屬性提供方接收并驗證用戶證書的有效性,并發(fā)送響應(yīng)給用戶。響應(yīng)應(yīng)包括屬性提供方的公鑰證書和用戶請求簽發(fā)的屬性列表中該屬性提供方具有簽發(fā)權(quán)限的部分:{Certissuer,AttrList=[AttrName1,AttrName2,…,AttrNamen]}。
3)用戶驗證屬性提供方的公鑰證書的有效性,并與屬性提供方執(zhí)行一次基于公鑰的身份鑒別協(xié)議。身份鑒別協(xié)議可以采用國家標(biāo)準(zhǔn)《GB/T 15843.3信息技術(shù)安全技術(shù)實體鑒別第三部分:采用數(shù)字簽名技術(shù)的機制》中的公鑰鑒別方案。也可采用其它基于公鑰的鑒別協(xié)議。最終屬性提供方驗證了用戶擁有公鑰證書對應(yīng)的私鑰。
4)屬性提供方在鑒別協(xié)議完成后,獲得了用戶的公鑰(記做(PK1,PK2))和用戶的公鑰證書識別碼(記做ID_Code)(該標(biāo)識符唯一標(biāo)識了用戶的公鑰證書)。本發(fā)明把用戶的公鑰信息分成這兩部分嵌入在屬性憑證中。該方法可以支持RSA和ECC公鑰密碼算法。采用一個 ID_Code字段把屬性證書和用戶的身份(通過公鑰證書)綁定在一起。該ID_Code是證書中包含的唯一性標(biāo)識,可以采用證書的序列號、DN字段等;在網(wǎng)絡(luò)電子身份標(biāo)識(eID:electric Identity)中可以采用eID標(biāo)識碼(eID_Code)。屬性提供方根據(jù)用戶ID_Code和證書簽發(fā)機構(gòu)信息檢查并確認(rèn)用戶具有的屬性信息,并根據(jù)用戶的請求屬性列表,采取如下操作生成屬性憑證:
a)選擇一個隨機數(shù)r∈Zp,計算待簽名數(shù)據(jù):
其中:
i.在RSA體制下PK1=N(即模數(shù)),PK2=e(即公鑰);在橢圓曲線體制下PK1=公鑰的x坐標(biāo),PK1=公鑰的y坐標(biāo);
ii.k是要簽名的屬性個數(shù);
iii.隨機數(shù)r和是可選的,對屬性憑證進行盲化,保護屬性隱私。
iv.對每一個屬性,構(gòu)造成名值對的形式:AttrNamei:i:AttrValuei,其中AttrName表示屬性名,AttrValue表示屬性的值,中間字段i表示屬性在屬性簽名中的位置,從1開始計算,半角冒號作為分隔符。此外,任何非字母、漢字和數(shù)字的可打印字符都可以作為分隔符,不影響本發(fā)明的正確性。
本發(fā)明采用算法生成屬性憑證,該算法的模式為對每一個屬性名和屬性值進行散列計算并映射到循環(huán)群中,然后對屬性映射的群元素進行連乘。因此用戶可以選擇屬性憑證中包含的任意數(shù)量的屬性進行出示。
b)使用屬性提供方的簽名私鑰對數(shù)據(jù)進行簽名,簽名σ=Sigsk(data),其中Sig表示公鑰簽名算法,sk表示簽名使用的私鑰。
c)按照《GB/T 16264.8-2005信息技術(shù)開放系統(tǒng)互聯(lián)目錄第8部分:公鑰和屬性證書框架》的要求生成一個有效的屬性證書。其中僅σ作為證書的Attribute字段。同時,為了保護用戶的隱私,Holder字段的用戶信息可以不填寫,或者填寫假名。
d)發(fā)送屬性憑證{r,<AttrNamei:i:AttrValuei>,σ,AttrCert}給用戶,其中AttrCert表示屬性證書。
5)用戶收到屬性服務(wù)方簽發(fā)的屬性憑證時采用Verify算法對屬性憑證的有效性進行驗證。驗證過程如下:
a)驗證屬性列表是否正確;
b)計算使用屬性提供方的公鑰驗證簽名σ是否有效;
c)驗證屬性證書的有效期、簽發(fā)者信息是否正確;
d)使用屬性提供方的公鑰驗證屬性證書的簽名是否有效;
e)如果上述驗證過程都正確,則接受屬性提供方簽發(fā)的屬性憑證,否則拒絕接受屬性憑證,并通知屬性提供方驗證失敗的信息。
3.出示協(xié)議
用戶與屬性提供方通過出示協(xié)議,實現(xiàn)用戶向依賴方證明其擁有有效的由屬性提供方簽發(fā)的屬性憑證。在執(zhí)行協(xié)議前,用戶應(yīng)從信任提供方獲得公鑰證書,并從屬性提供方獲取了所需的屬性憑證。用戶和依賴方的交互流程如下:
1)為了防止中間人攻擊,用戶首先驗證依賴方的公鑰證書,并與依賴方建立TLS安全會話信道,本協(xié)議的后續(xù)部分在TLS的保護下完成;
2)若用戶只需要出示其中的某一部分屬性,則屬性憑證中的屬性列表減去要出示的屬性構(gòu)成的集合設(shè)為V,然后計算然后發(fā)送<PK1,PK2,<要出示的屬性列表>,σ’,σ,AttrCert>給驗證者。
3)依賴方首先驗證屬性證書的有效期,驗證簽發(fā)者信息是否有效;
4)如果屬性證書驗證通過,則與用戶進行一次挑戰(zhàn)響應(yīng)協(xié)議,確認(rèn)用戶擁有公鑰對應(yīng)的私鑰,流程如下:
a)依賴方選擇一個隨機數(shù),發(fā)送給用戶;
b)用戶收到隨機數(shù)后,使用私鑰對隨機數(shù)進行簽名,并返回簽名數(shù)據(jù);
c)依賴方使用公鑰驗證簽名是否正確。若驗證通過,則繼續(xù)進行;否則結(jié)束協(xié)議。
5)驗證用戶的有效性之后,驗證者計算
然后使用屬性提供方的公鑰驗證σ是否是data的一個有效簽名,如果是有效的簽名,則認(rèn)為用戶的屬性證明有效,否則認(rèn)為用戶的屬性證明無效。
實施例2.屬性證明系統(tǒng)
本實施例旨在提供本發(fā)明的屬性證明系統(tǒng)的一個具體實例。
該系統(tǒng)包含三個主體:ASP、UA和RP。具體的實施過程為三段:系統(tǒng)初始化,屬性簽發(fā)協(xié)議和屬性出示協(xié)議。
本實施例基于如下的情景設(shè)定:用戶User需要訪問RP的某項服務(wù),RP需要獲得用戶的 某個屬性(例如年齡大于18歲)來確定用戶具有訪問該項服務(wù)的權(quán)限。具體過程如下:
1)ASP運行系統(tǒng)建立算法,保存生成的主密鑰,并將系統(tǒng)公開參數(shù)發(fā)布出來,RP和User通過公開信道獲取公開參數(shù);
2)User訪問RP的某項服務(wù),RP要求用戶出示一個屬性證明;
3)如果User已經(jīng)有相應(yīng)屬性的憑證,則跳轉(zhuǎn)到6)。否則,跳轉(zhuǎn)到4);
4)User通過用戶代理向ASP發(fā)起憑證簽發(fā)請求,其中要簽發(fā)的屬性列表中包含需RP要求的屬性;
5)UA與ASP執(zhí)行屬性簽發(fā)協(xié)議,獲取到屬性憑證;
6)UA與RP執(zhí)行屬性出示協(xié)議,向RP出示該RP需要的特定屬性,而隱藏屬性憑證中的其它屬性;
7)RP如果驗證用戶屬性有效,則向User提供服務(wù),否則拒絕提供服務(wù)。
以上實施例僅用以說明本發(fā)明的技術(shù)方案而非對其進行限制,本領(lǐng)域的普通技術(shù)人員可以對本發(fā)明的技術(shù)方案進行修改或者等同替換,而不脫離本發(fā)明的精神和范圍,本發(fā)明的保護范圍應(yīng)以權(quán)利要求書所述為準(zhǔn)。