一種實(shí)現(xiàn)認(rèn)證器注冊的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,特別是涉及一種認(rèn)證器注冊的方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]早期的身份認(rèn)證,一般依靠用戶名+密碼的方式進(jìn)行。用戶登錄網(wǎng)站后,需要輸入用戶名以及與之相對(duì)應(yīng)的密碼,網(wǎng)站通過與自己保存的用戶名和密碼進(jìn)行比對(duì),從而判定用戶是否是合法用戶。這種身份認(rèn)證方式需要網(wǎng)站保存用戶的密碼。無論該密碼以明文形式保存,還是以其他加密形式保存,都存在被泄露的風(fēng)險(xiǎn)。
[0003]為了提高身份認(rèn)證的安全性,一種可行的方法是采用多元認(rèn)證,即采用不同類型的認(rèn)證方式來確保用戶身份的合法性。U2F(Universal 2nd Factor)協(xié)議是一種簡化的,輔助性的認(rèn)證協(xié)議。U2F認(rèn)證器的定位是作為輔助認(rèn)證因素,配合網(wǎng)頁密碼等其他密碼一同對(duì)用戶進(jìn)行身份認(rèn)證,從而有效的提高了用戶賬戶的安全性。U2F協(xié)議的應(yīng)用場景通常包括三個(gè)邏輯實(shí)體:
[0004]服務(wù)器:代表用戶身份管理方的服務(wù)器,可以是服務(wù)提供商的服務(wù)器,也可以是身份提供商(IDP, Identity Provider)的服務(wù)器;
[0005]認(rèn)證客戶端:連接認(rèn)證器與服務(wù)器,如瀏覽器插件。
[0006]認(rèn)證器:如網(wǎng)銀U盾。
[0007]認(rèn)證器通過認(rèn)證客戶端實(shí)現(xiàn)為用戶在服務(wù)器上進(jìn)行注冊和認(rèn)證。認(rèn)證器注冊流程主要實(shí)現(xiàn)在用戶、認(rèn)證器和服務(wù)器之間建立關(guān)聯(lián)關(guān)系。注冊成功后,認(rèn)證器將產(chǎn)生一組公私鑰,以及私鑰句柄。認(rèn)證器保存私鑰、私鑰句柄和應(yīng)用標(biāo)識(shí),并發(fā)送公鑰及私鑰句柄至服務(wù)器,服務(wù)器保存用戶標(biāo)識(shí)、私鑰句柄、公鑰。
[0008]認(rèn)證器在注冊前,需要先檢查是否已經(jīng)為用戶在服務(wù)器上注冊,以防止重復(fù)注冊。如果認(rèn)證器認(rèn)為已經(jīng)為用戶在服務(wù)器上進(jìn)行了注冊,則不再進(jìn)行注冊。現(xiàn)有技術(shù)中,認(rèn)證器檢查是否已經(jīng)注冊的方法為:根據(jù)認(rèn)證客戶端發(fā)送的注冊狀態(tài)查詢消息,認(rèn)證器可以獲得服務(wù)器的應(yīng)用標(biāo)識(shí)和一個(gè)私鑰句柄。認(rèn)證器根據(jù)該私鑰句柄在本地查詢對(duì)應(yīng)的私鑰及應(yīng)用標(biāo)識(shí);若查不到,則認(rèn)為當(dāng)前認(rèn)證器上沒有對(duì)這個(gè)用戶注冊過;若查到對(duì)應(yīng)的私鑰及應(yīng)用標(biāo)識(shí),則將該應(yīng)用標(biāo)識(shí)和注冊狀態(tài)查詢消息中的服務(wù)器的應(yīng)用標(biāo)識(shí)對(duì)比,若不相同,則認(rèn)為當(dāng)前認(rèn)證器上沒有對(duì)這個(gè)用戶注冊過;若該應(yīng)用標(biāo)識(shí)與注冊狀態(tài)查詢消息中的服務(wù)器的應(yīng)用標(biāo)識(shí)也相同,則認(rèn)為當(dāng)前認(rèn)證器已經(jīng)對(duì)這個(gè)用戶在服務(wù)器上注冊過。
[0009]然而,實(shí)際上這種方法并不能準(zhǔn)確的判斷是否已經(jīng)為某個(gè)用戶在服務(wù)器上注冊。例如第一用戶曾經(jīng)使用第一認(rèn)證器在服務(wù)器(假設(shè)為中國銀行)上注冊,第一認(rèn)證器保存了注冊記錄{appid = boc.com ;keyhandle = I ;prikey = aaaa},同時(shí),在服務(wù)器側(cè),保存了第一用戶使用第一認(rèn)證器進(jìn)行注冊的注冊記錄{publicKey = 12345 ;keyhandle = I ;ID=第一用戶標(biāo)識(shí)}。第二用戶曾經(jīng)使用第二認(rèn)證器在服務(wù)器上注冊,該第二認(rèn)證器為第二用戶保存的注冊記錄為{appid = boc.com ;keyhandle = I ;pricey = bbbb}。在服務(wù)器側(cè),保存了第二用戶使用第二認(rèn)證器進(jìn)行注冊的注冊記錄{publicKey = 23456 ;keyhandle =1;ID=第二用戶標(biāo)識(shí)}。
[0010]依據(jù)現(xiàn)有技術(shù),當(dāng)?shù)谝挥脩粝M褂玫诙J(rèn)證器在服務(wù)器上進(jìn)行注冊時(shí),第二認(rèn)證器會(huì)根據(jù)第一用戶在服務(wù)器上的注冊記錄來檢查是否已經(jīng)為第一用戶在服務(wù)器上注冊過。具體的,服務(wù)器根據(jù)第一用戶標(biāo)識(shí)獲得第一用戶在服務(wù)器上的注冊記錄{publicKey =12345 ;keyhandle = I ;ID =第一用戶標(biāo)識(shí)}。月艮務(wù)器根據(jù)注冊記錄{publicKey = 12345 ;keyhandle = I ;ID =第一用戶標(biāo)識(shí)},構(gòu)造注冊請(qǐng)求,注冊請(qǐng)求中包括服務(wù)器的應(yīng)用標(biāo)識(shí)boc.com和服務(wù)器上第一用戶的注冊記錄中的私鑰句柄keyhandle = I。認(rèn)證客戶端根據(jù)注冊請(qǐng)求消息中的服務(wù)器的應(yīng)用標(biāo)識(shí)boc.com和服務(wù)器上第一用戶的注冊記錄中的私鑰句柄keyhandle = 1,構(gòu)造注冊狀態(tài)查詢消息,并發(fā)送給第二認(rèn)證器。第二認(rèn)證器根據(jù)服務(wù)器上第一用戶的注冊記錄中的私鑰句柄keyhandle = I可以查找到第二用戶的注冊記錄{appid = boc.com ;keyhandle = I ;pricey = bbbb},并且該第二用戶的注冊記錄中的appid與服務(wù)器的應(yīng)用標(biāo)識(shí)也相同。因此,第二認(rèn)證器會(huì)認(rèn)為已經(jīng)為第一用戶在服務(wù)器上完成過注冊。由此,第一用戶將無法用第二認(rèn)證器注冊,從而造成同一認(rèn)證器不能被多個(gè)用戶在同一個(gè)服務(wù)器上使用的問題。
【發(fā)明內(nèi)容】
[0011]本發(fā)明實(shí)施例提供了一種認(rèn)證器注冊的方法和裝置,使得認(rèn)證器已經(jīng)為其他用戶在服務(wù)器上進(jìn)行注冊的情況下,能進(jìn)一步的為第一用戶在相同的服務(wù)器上進(jìn)行注冊。
[0012]第一方面,本發(fā)明實(shí)施例提供了一種認(rèn)證器注冊的方法,包括:接收認(rèn)證客戶端發(fā)送的注冊狀態(tài)查詢消息;其中,所述注冊狀態(tài)查詢消息包含第一用戶在服務(wù)器上的鑒權(quán)信息;根據(jù)所述鑒權(quán)信息與認(rèn)證器保存的私鑰,確定所述認(rèn)證器上不存在所述第一用戶的注冊記錄;向所述認(rèn)證客戶端發(fā)送注冊狀態(tài)為未注冊的注冊狀態(tài)查詢響應(yīng)消息;接收所述認(rèn)證客戶端發(fā)送的認(rèn)證器注冊請(qǐng)求,所述認(rèn)證器注冊請(qǐng)求中包括所述服務(wù)器的應(yīng)用標(biāo)識(shí);根據(jù)所述服務(wù)器的應(yīng)用標(biāo)識(shí),對(duì)所述第一用戶在所述服務(wù)器上進(jìn)行注冊。
[0013]結(jié)合第一方面,在第一方面的第一種可能的實(shí)施方式中,在所述根據(jù)所述服務(wù)器的應(yīng)用標(biāo)識(shí),對(duì)所述第一用戶在所述服務(wù)器上進(jìn)行注冊之后,所述方法還包括:根據(jù)所述認(rèn)證器注冊請(qǐng)求,向所述認(rèn)證客戶端發(fā)送認(rèn)證器注冊響應(yīng),所述認(rèn)證器注冊響應(yīng)中包括所述認(rèn)證器生成的公鑰和私鑰句柄,以便于所述認(rèn)證客戶端向所述服務(wù)器發(fā)送第一注冊響應(yīng),所述第一注冊響應(yīng)包括所述認(rèn)證器生成的公鑰和私鑰句柄。
[0014]結(jié)合第一方面或者第一方面的第一種可能的實(shí)施方式,在第一方面的第二種可能的實(shí)施方式中,所述鑒權(quán)信息為在所述服務(wù)器上保存的所述第一用戶的注冊記錄中的公鑰,所述根據(jù)所述鑒權(quán)信息與認(rèn)證器保存的私鑰,確定所述認(rèn)證器上不存在所述第一用戶的注冊記錄,具體包括:使用在所述服務(wù)器上保存的所述第一用戶的注冊記錄中的公鑰加密第一參數(shù);確定使用所述認(rèn)證器保存的私鑰無法對(duì)加密后的第一參數(shù)進(jìn)行解密,其中,所述第一參數(shù)包括所述認(rèn)證器已知的任何參數(shù)中的至少一個(gè);或使用所述認(rèn)證器保存的私鑰加密第一參數(shù);確定使用在所述服務(wù)器上的所述第一用戶的注冊記錄中的公鑰無法對(duì)加密后的第一參數(shù)進(jìn)行解密,其中,所述第一參數(shù)包括所述認(rèn)證器已知的任何參數(shù)中的至少一個(gè)。
[0015]結(jié)合第一方面或者第一方面的第一種可能的實(shí)施方式,在第一方面的第三種可能的實(shí)施方式中,所述鑒權(quán)信息為所述服務(wù)器使用在所述服務(wù)器上保存的所述第一用戶的注冊記錄中的公鑰對(duì)第二參數(shù)加密后的信息,所述根據(jù)所述鑒權(quán)信息與認(rèn)證器保存的私鑰,確定所述認(rèn)證器上不存在所述第一用戶的注冊記錄,具體包括:使用所述認(rèn)證器保存的私鑰對(duì)所述加密后的信息進(jìn)行解密,確定無法使用所述認(rèn)證器保存的私鑰對(duì)所述加密后的信息進(jìn)行解密;其中,所述第二參數(shù)包括所述認(rèn)證器已知的任何參數(shù)中的至少一個(gè)。
[0016]結(jié)合第一方面和第一方面的第一種實(shí)現(xiàn)方式至第一方面第三種實(shí)現(xiàn)方式中任一實(shí)現(xiàn)方式,在第一方面的第四種實(shí)現(xiàn)方式中,所述注冊狀態(tài)查詢消息中還包括在所述服務(wù)器上保存的與所述鑒權(quán)信息對(duì)應(yīng)的所述第一用戶的注冊記錄中的私鑰句柄;在所述根據(jù)所述鑒權(quán)信息與認(rèn)證器保存的私鑰,確定所述認(rèn)證器上不存在所述第一用戶的注冊記錄之前,所述方法還包括:根據(jù)所述在所述服務(wù)器上保存的所述第一用戶的注冊記錄中的私鑰句柄獲取認(rèn)證器保存的注冊記錄;根據(jù)獲取的所述認(rèn)證器保存的注冊記錄,獲取所述認(rèn)證器保存的私鑰。
[0017]第二方面,本發(fā)明實(shí)施例提供了一種認(rèn)證器注冊的方法,包括:接收服務(wù)器發(fā)送的第一注冊請(qǐng)求,其中,所述第一注冊請(qǐng)求包括第一用戶在服務(wù)器上的鑒權(quán)信息和所述服務(wù)器的應(yīng)用標(biāo)識(shí);向認(rèn)證器發(fā)送注冊狀態(tài)查詢消息,所述注冊狀態(tài)查詢消息包含所述鑒權(quán)信息;接收所述認(rèn)證器發(fā)送的注冊狀態(tài)查詢響應(yīng)消息,所述注冊狀態(tài)查詢響應(yīng)消息包含指示未注冊的注冊狀態(tài);向所述認(rèn)證器發(fā)送認(rèn)證器注冊請(qǐng)求,所述認(rèn)證器注冊請(qǐng)求中包括所述服務(wù)器的應(yīng)用標(biāo)識(shí)。
[0018]結(jié)合第二方面,在第二方面的第一種實(shí)現(xiàn)方式中,在所述向所述認(rèn)證器發(fā)送注冊請(qǐng)求之后,所述方法還包括:接收所述認(rèn)證器發(fā)送的認(rèn)證器注冊響應(yīng),所述認(rèn)證器注冊響應(yīng)中包括所述認(rèn)證器生成的公鑰和私鑰句柄;根據(jù)所述認(rèn)證器注冊響應(yīng),向所述服務(wù)器發(fā)送第一注冊響應(yīng),所述第一注冊響應(yīng)中包括所述認(rèn)證器生成的公鑰和私鑰句柄。
[0019]結(jié)合第二方面或者第二方面的第一種實(shí)現(xiàn)方式,在第二方面的第二中實(shí)現(xiàn)方式中,所述鑒權(quán)信息為在所述服務(wù)器上保存的所述第一用戶的注冊記錄中的公鑰;或所述鑒權(quán)信息為所述服務(wù)器使用在所述服務(wù)器上保存的所述第一用戶的注冊記錄中的公鑰對(duì)第二參數(shù)加密后得到的信息;其中,所述第二參數(shù)包括所述認(rèn)證器已知的任何參數(shù)中的至少一個(gè)。
[0020]第三方面,本發(fā)明實(shí)施例提供了一種認(rèn)證器的注冊方法,包括當(dāng)接收第一用戶觸發(fā)的注冊請(qǐng)求后,向認(rèn)證客戶端發(fā)送第一注冊請(qǐng)求,其中,所述第一注冊請(qǐng)求包括所述第一用戶在服務(wù)器上的鑒權(quán)信息和所述服務(wù)器的應(yīng)用標(biāo)識(shí);接收所述認(rèn)證客戶端發(fā)送的第一注冊響應(yīng);其中,所述第一注冊響應(yīng)包括認(rèn)證器生成的公鑰和私鑰句柄;將所述認(rèn)證器生成的公鑰和私鑰句柄保存到所述服務(wù)器上所述第一用戶的注冊記錄中。
[0021]結(jié)合第三方面,在第三方面的第一種實(shí)施方式中,所述鑒權(quán)信息為在所述服務(wù)器上保存的所述第一用戶的注冊記錄中的公鑰;或所述服務(wù)器使用在所述服務(wù)器上保存的所述第一用戶的注冊記錄中的公鑰對(duì)第二參數(shù)加密后得到的信息;其中,所述第二參數(shù)包括所述認(rèn)證器已知的任何參數(shù)中的至少一個(gè)。
[0022]第四方面,本發(fā)明實(shí)施例提供了一種認(rèn)證器注冊裝置,包括接收模塊:用于接收認(rèn)證客戶端發(fā)送的注冊狀態(tài)查詢消息;其中,所述注冊狀態(tài)查詢消息包含第一用戶在服務(wù)器上的鑒權(quán)信息;確定模塊:用于根據(jù)所述接收模塊接收的注冊狀態(tài)查詢消息中的鑒權(quán)信息與認(rèn)證器保存的私鑰,確定所述認(rèn)證器上不存在所述第一用戶的注冊記錄;發(fā)送模塊:用于向所述認(rèn)證客戶端發(fā)送注冊狀態(tài)為未注冊的注冊狀態(tài)查詢響應(yīng)消息;所述接收模塊,還用于接收所述認(rèn)證客戶端發(fā)送的認(rèn)證器注冊請(qǐng)求,所述認(rèn)證器注冊請(qǐng)求中包括所述服務(wù)器的應(yīng)用標(biāo)識(shí);注冊模塊:用于根據(jù)所述接收模塊接收的服務(wù)器的應(yīng)用標(biāo)識(shí),對(duì)所述第一用戶在所述服務(wù)器上進(jìn)行注冊。
[0023]結(jié)合第四方面,在第四方面的第一種實(shí)施方式中,所述發(fā)送模塊,還用于根據(jù)所述認(rèn)證器注冊請(qǐng)求,向所述認(rèn)證客戶端發(fā)送認(rèn)證器注冊響應(yīng),所述認(rèn)證器注冊響應(yīng)中包括所述認(rèn)證器生成的公鑰和私鑰句柄,以便于所述認(rèn)證客戶端向所述服務(wù)器發(fā)送第一注冊響應(yīng),所述第一注冊響應(yīng)包括所述認(rèn)證器生成的公鑰和私鑰句柄。
[0024]結(jié)合第四方面或第四方面的第一種實(shí)施方式,在第四方面的第二種實(shí)施方式中,所述鑒權(quán)信息為在所述服務(wù)器上保存的所述第一用戶的注冊記錄中的公鑰,所述確定模塊具體用于:使用在所述服務(wù)器上保存的所述第一用戶的注冊記錄中的公鑰加密第一參數(shù);確定使用所述認(rèn)證器保存的私鑰無法對(duì)加密后的第一參數(shù)進(jìn)行解密,其中,所述第一參數(shù)包括所述認(rèn)證器已知的任何參數(shù)中的至少一個(gè);或使用所述認(rèn)證器保存的私鑰加密第一參數(shù);確定使用在所述服務(wù)器上的所述第一用戶的注冊記錄中的公鑰無法對(duì)加密后的第一參數(shù)進(jìn)行解密,其中,所述第一參數(shù)包括所述認(rèn)證器已知的任何參數(shù)中的至少一個(gè)。
[0025]結(jié)合第四方面或第四方面的第一種實(shí)施方式,在第四方面的第三種實(shí)施方式中,所述鑒權(quán)信息為所述服務(wù)器使用在所述服務(wù)器上保存的所述第一用戶的注冊記錄中的公鑰對(duì)第二參數(shù)加密后的信息,所述確定模塊具體用于:使用所述認(rèn)證器保存的私鑰對(duì)所述加密后的信息進(jìn)行解密,確定無法使用所述認(rèn)證器保存的私鑰對(duì)所述加密后的信息進(jìn)行解密;其中,所述第二參數(shù)包括所述認(rèn)證器已知的任何參數(shù)中的至少一個(gè)。
[0026]結(jié)合第四方面和第四方面的第一種實(shí)現(xiàn)方式至第四方面第三種實(shí)現(xiàn)方式中任一實(shí)現(xiàn)方式,在第四方面的第四種實(shí)現(xiàn)方式中,所述注冊狀態(tài)查詢消息中還包括在所述服務(wù)器上保存的與所述鑒權(quán)信息對(duì)應(yīng)的所述第一用戶的注冊記錄中的私鑰句柄;在所述確定模塊,用于根據(jù)所述鑒權(quán)信息與認(rèn)證器保存的私鑰,確定所述認(rèn)證器上不存在所述第一用戶的注冊記錄之前,所述裝置還包括:獲取模塊:用于根據(jù)所述在所述服務(wù)器上保存的所述第一用戶的注冊記錄中的私鑰句柄獲取認(rèn)證器保存的注冊記錄;所述獲取模塊,還用于根據(jù)獲取的所述認(rèn)證器保