本發(fā)明涉及一次性認證系統(tǒng)。
背景技術:
目前存在一種系統(tǒng),每當認證成功時便更新客戶端和服務器各自中的隨機數等的種子(seed),在下一次認證時,從這些種子生成一次性id,在客戶端與服務器之間相互進行一次性認證(例如參照專利文獻1)。
【現有技術文獻】
【專利文獻】
專利文獻1:日本專利特開2004-282295號公報
技術實現要素:
但是,在上述系統(tǒng)中,當發(fā)生(a)由于從服務器到客戶端的一次性id的通信路徑上發(fā)生通信錯誤而導致一次性id未送達、(b)由于服務器停機(serverdown)而導致種子消失等的情況時,會導致相互認證失敗,而一旦相互認證失敗,則其后服務器和客戶端雙方在將種子初始化之前都無法進行相互認證。因此,在相互認證失敗后,客戶端在較長時間內都無法接受認證,直到被分配種子,并利用被分配的種子將種子初始化為止。
本發(fā)明是鑒于上述問題而完成的,其目的在于得到一種在相互認證失敗的情況下,能夠在短時間內將種子恢復為能夠相互認證的一次性認證系統(tǒng)。
本發(fā)明涉及的一次性認證系統(tǒng)具備認證服務器和終端裝置。終端裝置和認證服務器分別保存有通常認證用種子和再認證用種子,其中,通常認證用種子用于在通常認證模式下生成和驗證一次性認證碼,再認證用種子用于在再認證模式下生成和驗證一次性認證碼。終端裝置和認證服務器以通常認證模式執(zhí)行基于一次性認證碼的相互認證。進而,終端裝置和認證服務器在通常認證模式下的基于一次性認證碼的相互認證失敗時,嘗試以再認證模式執(zhí)行基于一次性認證碼的相互認證,且在再認證模式下的基于一次性認證碼的相互認證成功時,分別根據再認證用種子生成通常認證用種子,恢復通常認證模式下的基于一次性認證碼的相互認證。
本發(fā)明涉及的計算機程序使與認證服務器之間執(zhí)行基于一次性認證碼的相互認證的終端裝置內的計算機作為認證處理部發(fā)揮作用。而且,認證處理部構成為:(a)保存有通常認證用種子和再認證用種子,其中,通常認證用種子用于在通常認證模式下生成和驗證一次性認證碼,再認證用種子用于在再認證模式下生成和驗證一次性認證碼;(b)與認證服務器之間以通常認證模式執(zhí)行基于一次性認證碼的相互認證;(c)當通常認證模式下的基于一次性認證碼的相互認證失敗時,嘗試以再認證模式與認證服務器之間執(zhí)行基于一次性認證碼的相互認證,且在再認證模式下的基于一次性認證碼的相互認證成功時,分別根據再認證用種子生成通常認證用種子,恢復通常認證模式下的基于一次性認證碼的相互認證。
(發(fā)明效果)
根據本發(fā)明,能夠得到在相互認證失敗的情況下,能夠在短時間內將種子恢復為能夠相互認證的一次性認證系統(tǒng)。
本發(fā)明的上述或者其他目的、特征以及優(yōu)點,在附圖的基礎上結合以下詳細說明將更加清楚。
附圖說明
圖1是表示本發(fā)明的實施方式涉及的一次性認證系統(tǒng)的構成的框圖。
圖2是表示圖1中的終端裝置1的構成的框圖。
圖3是表示圖2所示的終端裝置1中所實現的處理部的框圖。
圖4是表示圖1中的認證服務器3的構成的框圖。
圖5是表示圖2所示的認證服務器3中所實現的處理部的框圖。
圖6是說明圖1所示的系統(tǒng)中所執(zhí)行的、通常認證模式下的基于一次性認證碼的相互認證的時序圖。
圖7是說明圖1所示的系統(tǒng)中所執(zhí)行的、再認證模式下的基于一次性認證碼的相互認證的時序圖。
圖8是表示第二實施方式中的種子表71的結構的一例的圖。
圖9是表示第二實施方式中的認證碼表72(通常認證表72a、再認證表72b)的一例的圖。
圖10是說明第二實施方式中的認證服務器3所執(zhí)行的數據處理的流程圖(1/2)。
圖11是說明第二實施方式中的認證服務器3所執(zhí)行的數據處理的流程圖(2/2)。
具體實施方式
以下,根據附圖對本發(fā)明的實施方式進行說明。
第一實施方式.
圖1是表示本發(fā)明的實施方式涉及的一次性認證系統(tǒng)的構成的框圖。在圖1所示的系統(tǒng)中,作為客戶端的終端裝置1與互聯網等的網絡2連接,該網絡2與認證服務器3連接。
終端裝置1是內置有個人計算機等的計算機的裝置。例如,終端裝置1在通過網絡2享受網絡服務時,與認證服務器3之間進行相互認證,相互認證成功后享受網絡服務。
網絡2包括有線和/或無線的lan(localareanetwork、局域網)、以及/或者互聯網等的wan(wideareanetwork、廣域網)。
認證服務器3是在登錄規(guī)定的網絡服務(例如網上銀行、電子商務等)之前進行終端裝置1的認證的認證服務器。
認證服務器3和終端裝置1在各相互認證會話(session)中進行相互認證。認證服務器3和終端裝置1分別生成種子,每當對方側裝置的認證成功時,更新自己的種子和密鑰,并將自己的種子加密后相互進行收發(fā),從兩者的種子生成一次性認證碼,根據兩者的種子分別執(zhí)行對方側裝置的一次性認證碼的認證。另外,以下將基于一次性認證碼的認證稱為“一次性認證”。
另外,此處一次性認證碼為一次性id,但也可以是一次性密碼。該情況下,與一次性密碼一同使用固定的終端id。
進而,終端裝置1和認證服務器3中分別保存有通常認證用種子和再認證用種子,其中,通常認證用種子用于在通常認證模式下生成和驗證一次性認證碼,再認證用種子用于在再認證模式下生成和驗證一次性認證碼。
每當需要執(zhí)行終端裝置1的一次性認證時,終端裝置1和認證服務器3便以通常認證模式執(zhí)行基于一次性認證碼的相互認證。然后,終端裝置l和認證服務器3在通常認證模式下的基于一次性認證碼的相互認證失敗時,嘗試以再認證模式執(zhí)行基于一次性認證碼的相互認證,并且,在再認證模式下的基于一次性認證碼的相互認證成功時,分別根據再認證用種子而生成通常認證用種子,并恢復通常認證模式下的基于一次性認證碼的相互認證。
另外,在圖1中,終端裝置1僅為一臺,但也可以使多臺終端裝置1分別保存不同的種子,分別利用不同的一次性認證碼進行認證。該情況下,認證服務器3與多臺終端裝置1之間分別獨立地執(zhí)行基于一次性認證碼的相互認證。
以下,對上述系統(tǒng)中的各裝置的構成和動作進行說明。
(1)各裝置的構成
圖2是表示圖1中的終端裝置1的構成的框圖。
如圖2所示,終端裝置1中內置有具有cpu(centralprocessingunit、中央處理器)11、rom(readonlymemory、只讀存儲器)12、ram(randomaccessmemory、隨機存取存儲器)13等的計算機。
cpu11是執(zhí)行程序,從而執(zhí)行程序中所描述的處理的運算處理裝置。另外,rom12是預先存儲程序和數據的非易失性存儲器。另外,ram13是執(zhí)行程序時暫時存儲該程序和數據的易失性存儲器。
另外,接口14是能夠連接存儲裝置15的接口電路。另外,存儲裝置15是與接口14連接,且具備存儲未圖示的操作系統(tǒng)、一次性認證程序31、用于享受規(guī)定服務的應用程序、通常認證模式下使用的通常認證種子32、以及再認證模式下使用的再認證種子33等的記錄介質的裝置。存儲裝置15使用硬盤驅動器、ssd(solidstatedisk、固態(tài)硬盤)等。
另外,接口16是能夠連接通信裝置17的接口電路。通信裝置17是網絡接口、調制解調器等能夠連接至網絡2的裝置。
另外,接口18是ieee1394、usb(universalserialbus、通用串行總線)等的外圍設備接口。另外,接口20是能夠連接輸入裝置21的接口電路。輸入裝置21是鍵盤、鼠標等接收用戶操作并輸出與該用戶操作相符的信號的裝置。另外,圖像處理電路22是在寫入圖像數據時輸出與該數據對應的圖像信號的電路。該圖像處理電路22能夠與根據該圖像信號顯示圖像的顯示裝置23連接。
cpu11、rom12、ram13、接口(i/f)14、16、18、20以及圖像處理電路22通過總線或者控制器芯片(controllerchip)以能夠相互進行數據通信的方式被連接。
圖3是表示圖2所示的終端裝置1中所實現的處理部的框圖。如圖3所示,在終端裝置1中,通過執(zhí)行上述程序而實現通信處理部41、認證處理部42以及應用43。
通信處理部41使用通信裝置17,并利用規(guī)定的通信協(xié)議經由網絡2與認證服務器3等進行數據通信。
認證處理部42通過由cpu11執(zhí)行一次性認證程序31而實現,并使用通信處理部41而與認證服務器3之間執(zhí)行基于一次性認證碼的相互認證。此時,認證處理部42執(zhí)行相互認證中的客戶端側的處理。
應用43使用通信處理部41執(zhí)行數據通信,從而享受規(guī)定的網絡服務。另外,在相互認證成功后,開始對應用43提供網絡服務。
圖4是表示圖1中的認證服務器3的構成的框圖。
在圖4中,cpu51是執(zhí)行程序,從而執(zhí)行程序中所描述的處理的運算處理裝置。另外,rom52是預先存儲程序和數據的非易失性存儲器。另外,ram53是執(zhí)行程序時暫時存儲該程序和數據的存儲器。
另外,接口54是能夠連接存儲裝置55的接口電路。存儲裝置55是與接口54連接,且具備存儲未圖示的操作系統(tǒng)、一次性認證程序61、認證中使用的數據等的記錄介質的裝置。存儲裝置55使用硬盤驅動器、ssd等。在存儲裝置55中,作為認證中使用的數據而保存有種子表71、認證碼表72以及終端屬性表73。
種子表71具有在最后的相互認證時更新的下次認證用種子和下次認證用通用密鑰。一臺或多臺終端裝置1各自的下次認證用種子和下次認證用通用密鑰分別分開進行保存。
種子表71具備通常認證模式下的下次認證用種子和下次認證用通用密鑰、以及再認證模式下的下次認證用種子和下次認證用通用密鑰。
認證碼表72具有在最后的相互認證時更新的下次認證用的客戶端側一次性認證碼。認證碼表72包括通常認證表72a和再認證表72b。通常認證表72a具有通常認證模式下的下次認證用的客戶端側一次性認證碼,再認證表72b具有再認證模式下的下次認證用客戶端側一次性認證碼。一臺或多臺終端裝置1各自的下次認證用的客戶端側一次性認證碼分別分開進行保存。
終端屬性表73是在一次性認證碼為一次性id的情況下,針對各終端裝置1而具有與一次性id相關聯的特有的終端id、和與該終端id相關聯的屬性信息(所有者信息等)的表格。另外,該終端id僅在認證服務器3中使用,不向外部進行發(fā)送。在一次性認證碼為一次性密碼的情況下,終端屬性表73在判斷與一次性認證碼一同從終端裝置1接收的終端id的正確性時進行參照。
另外,接口56是能夠連接通信裝置57的接口電路。通信裝置57是網絡接口、調制解調器等能夠連接至網絡2的裝置。
cpu51、rom52、ram53以及接口(i/f)54、56通過總線或者控制器芯片以能夠相互進行數據通信的方式被連接。
圖5是表示圖2所示的認證服務器3中實現的處理部的框圖。如圖5所示,在該認證服務器3中,能夠實現通信處理部81和服務器側認證處理部82。
通信處理部81使用通信裝置57,并利用規(guī)定的通信協(xié)議經由網絡2與終端裝置1等進行數據通信。
服務器側認證處理部82通過由cpu51執(zhí)行一次性認證程序61而實現,并使用通信處理部81而與一臺或多臺終端裝置1之間執(zhí)行基于一次性認證碼的相互認證中的服務器側的處理。
(2)各裝置的動作
終端裝置1中保存有通常認證模式下的種子r(n-1)、q(n-1)以及通用密鑰k(n-1)。另外,認證服務器3中也保存有通常認證模式下的相同的種子r(n-1)、q(n-1)以及通用密鑰k(n-1)。另外,n表示通常認證模式下的相互認證會話的次數。
在此,種子r(n-1)是本次(n-1)的通常認證模式下的相互認證會話中的客戶端側種子。種子q(n-1)是本次(n-1)的通常認證模式下的相互認證會話中的服務器側種子。通用密鑰k(n-1)是用于在本次(n-1)的通常認證模式下的相互認證會話中,從終端裝置1向認證服務器3發(fā)送通常認證模式下的下次認證用的客戶端側種子r(n)時,對該r(n)進行加密的通用密鑰。另外,通用密鑰k(n-1)也是用于在本次(n-1)的通常認證模式下的相互認證會話中,從認證服務器3向終端裝置1發(fā)送通常認證模式下的下次認證用的服務器側種子q(n)時,對該q(n)進行加密的通用密鑰。
另外,終端裝置1中保存有再認證模式下的種子rx(m-1)、qx(m-1)以及通用密鑰kx(m-1)。另外,認證服務器3中也保存有再認證模式下的相同的種子rx(m-1)、qx(m-1)以及通用密鑰kx(m-1)。另外,m表示再認證模式下的相互認證會話的次數。
每當執(zhí)行了通常認證模式下的相互認證會話且相互認證成功時,便更新通常認證模式下的種子r(n-1)、q(n-1)以及通用密鑰k(n-1)。另外,即使執(zhí)行了通常認證模式下的相互認證會話,也不更新再認證模式下的種子rx(m-1)、qx(m-1)以及通用密鑰kx(m-1)。
另外,在通常認證模式下的相互認證失敗時執(zhí)行再認證模式下的相互認證會話,并且,每當執(zhí)行了再認證模式下的相互認證會話且相互認證成功時,便更新再認證模式下的種子rx(m-1)、qx(m-1)以及通用密鑰kx(m-1)。當再認證模式下的相互認證會話中相互認證成功時,終端裝置1與認證服務器3之間并非經由網絡2相互收發(fā)通常認證模式下的新的種子,而是在終端裝置1和認證服務器3中,分別根據再認證模式下的更新后的種子rx(m)、qx(m),重新設定通常認證模式下的種子r(n)、q(n)以及通用密鑰k(n)。
在此,種子rx(m-1)是本次(m-1)的再認證模式下的相互認證會話中的客戶端側種子。種子qx(m-1)是本次(m-1)的再認證模式下的相互認證會話中的服務器側種子。通用密鑰kx(m-1)是用于在本次(m-1)的再認證模式下的相互認證會話中,從終端裝置1向認證服務器3發(fā)送再認證模式下的下次認證用的客戶端側種子rx(m)時,對該rx(m)進行加密的通用密鑰。另外,通用密鑰kx(m-1)也是用于在本次(m-1)的再認證模式下的相互認證會話中,從認證服務器3向終端裝置1發(fā)送再認證模式下的下次認證用的服務器側種子qx(m)時,對該qx(m)進行加密的通用密鑰。
另外,通過在初始狀態(tài)下設定通常認證模式的種子的初始值r(0)、q(0)以及通用密鑰的初始值k(0)之后,立即執(zhí)行規(guī)定次數(一次以上)的通常認證模式下的基于一次性認證碼的相互認證,從而將通常認證模式下的種子和通用密鑰從初始值更新為r(i)、q(i)以及k(i)。
另外,通過在初始狀態(tài)下設定再認證模式的種子的初始值rx(0)、qx(0)以及通用密鑰的初始值kx(0)之后,立即執(zhí)行規(guī)定次數(一次以上)的再認證模式下的基于一次性認證碼的相互認證,從而將再認證模式下的種子和通用密鑰從初始值更新為rx(i)、qx(i)以及kx(i)。該情況下,也可以不根據再認證模式下的種子rx(i)、qx(i)而設定通常認證模式下的種子r(i)、q(i)以及通用密鑰k(i)。
(2a)通常認證模式下的基于一次性認證碼的相互認證
圖6是說明圖1所示的系統(tǒng)中執(zhí)行的、通常認證模式下的基于一次性認證碼的相互認證的時序圖。
在通常認證模式下的基于一次性認證碼的相互認證會話(步驟s1)中,首先,終端裝置1的認證處理部42生成隨機數r,并將該隨機數r設定為下次認證用的客戶端側種子r(n)(步驟s21)。
然后,認證處理部42生成僅在本次的相互認證會話中使用的客戶端側一次性認證碼c(n-1)(步驟s22)。
一次性認證碼c(n-1)利用單向函數進行計算。該單向函數是取兩個自變量,且函數值根據自變量的順序的不同而不同的函數。在本實施方式中,該單向函數為散列函數hc。
一次性認證碼c(n-1)按下式進行計算。
c(n-1)=hc(r(n-1),q(n-1))
在此,散列函數hc的第一自變量使用r(n-1),第二自變量使用q(n-1)。
另外,認證處理部42利用通用密鑰k(n-1)按照規(guī)定的加密方式對r(n)進行加密。另外,將利用通用密鑰k(n-1)加密后的r(n)表現為k(n-1)*r(n)。
然后,認證處理部42使用通信處理部4l,將一次性認證碼c(n-1)和k(n-1)*r(n)發(fā)送給認證服務器3(步驟s23)。此時,通信處理部41將一次性認證碼c(n-1)和k(n-1)*r(n)作為一條消息(message)進行發(fā)送。
在認證服務器3中,服務器側認證處理部82使用通信處理部81接收該消息,并從該消息中提取出一次性認證碼c(n-1)和k(n-1)*r(n),且判斷接收到的一次性認證碼c(n-1)與其所保存的通常認證模式下的客戶端側一次性認證碼是否一致(步驟s24)。
另外,從終端裝置1向認證服務器3發(fā)送的消息的數據格式(一次性認證碼的大小和位置、以及加密后的種子的大小和位置),在通常認證模式和再認證模式下是相同的。
另外,由于通常認證模式下的客戶端側一次性認證碼和再認證模式下的客戶端側一次性認證碼具有相同的數據格式(即,相同的數據長度),加密后的通常認證模式下的客戶端側種子和加密后的再認證模式下的客戶端側種子具有相同的數據格式(即,相同的數據長度),因此,僅從接收數據無法區(qū)分是通常認證模式下的一次性認證碼還是再認證模式下的一次性認證碼。因此,服務器側認證處理部82判斷接收到的一次性認證碼與通常認證表72a中所保存的一次性認證碼是否一致、以及接收到的一次性認證碼與再認證表72b中所保存的一次性認證碼是否一致,從而判斷接收到的一次性認證碼是通常認證模式下的正確的一次性認證碼、再認證模式下的正確的一次性認證碼以及不正確的一次性認證碼中的哪一種。
因此,當判斷為接收到的一次性認證碼c(n-1)是不正確的一次性認證碼時,服務器側認證處理部82判斷為認證失敗,并結束處理。
當接收到的一次性認證碼c(n-1)與通常認證表72a中所保存的通常認證模式下的客戶端側一次性認證碼一致時,服務器側認證處理部82判斷為認證成功,首先生成隨機數q,并將該隨機數q設定為通常認證模式下的下次認證用服務器側種子q(n)(步驟s25)。
另外,服務器側認證處理部82利用種子表71中所保存的通用密鑰k(n-1)將k(n-1)*r(n)解密為r(n)。然后,服務器側認證處理部82生成服務器側一次性認證碼s(n-1)(步驟s26)。
一次性認證碼s(n-1)利用單向函數進行計算。該單向函數是取兩個自變量,且函數值根據自變量的順序的不同而不同的函數。在本實施方式中,該單向函數為散列函數hs。
一次性認證碼s(n-1)按照下式進行計算。
s(n-1)=hs(r(n),q(n-1))
在此,散列函數hs的第一自變量使用r(n),第二自變量使用q(n-1)。另外,散列函數hs可以是與散列函數hc相同的函數,也可以是與散列函數hc不同的函數。
另外,服務器側認證處理部82利用通用密鑰k(n-1)按照規(guī)定的加密方式對q(n)進行加密。另外,將利用通用密鑰k(n-1)加密后的q(n)表現為k(n-1)*q(n)。
然后,服務器側認證處理部82使用通信處理部81,將一次性認證碼s(n-1)和k(n-1)*q(n)發(fā)送給終端裝置1(步驟s27)。此時,通信處理部81將一次性認證碼s(n-1)和k(n-1)*q(n)作為一條消息進行發(fā)送。
另外,從認證服務器3向終端裝置1發(fā)送的消息的數據格式(一次性認證碼的大小和位置、以及加密后的種子的大小和位置)在通常認證模式和再認證模式下是相同的。另外,通常認證模式下的服務器側一次性認證碼和再認證模式下的服務器側一次性認證碼具有相同的數據格式(即,相同的數據長度),加密后的通常認證模式下的服務器側種子和加密后的再認證模式下的服務器側種子具有相同的數據格式(即,相同的數據長度)。
當認證服務器3中的終端裝置1的一次性認證成功時,終端裝置1接收到包含一次性認證碼s(n-1)和k(n-1)*q(n)的上述消息。在終端裝置1中,認證處理部42使用通信處理部41接收該消息,并從該消息中提取出一次性認證碼s(n-1)和k(n-1)*q(n)。然后,認證處理部42根據通常認證模式下的r(n)和q(n-1),并按照上式計算出正確的一次性認證碼s(n-1)的值,且判斷接收到的一次性認證碼s(n-1)與計算出的值是否一致(步驟s28)。
此時,當接收到的一次性認證碼s(n-1)與計算出的值不一致時,認證處理部42判斷為認證失敗,且結束處理。
當接收到的一次性認證碼s(n-1)與計算出的值一致時,認證處理部42判斷為認證成功。即,認證處理部42判斷為相互認證會話(步驟s1)中的相互認證成功。
當判斷為相互認證會話(步驟s1)中的相互認證成功時,認證處理部42首先利用其所保存的通用密鑰k(n-1)將k(n-1)*q(n)解密為q(n),并將該值設定為通常認證模式下的下次認證用服務器側種子。
然后,認證處理部42按照下式更新通常認證模式下的通用密鑰k(n-1)(步驟s29)。
k(n)=hk(k(n-1),r(n),q(n))
在此,hk為單向函數且為散列函數。
由此,在通常認證模式下的基于一次性認證碼的相互認證成功后,認證處理部42將終端裝置1中所保存的種子和通用密鑰更新為r(n)、q(n)以及k(n)。
另一方面,服務器側認證處理部82按照上式從r(n)和q(n)計算出通常認證模式下的下次一次性認證時使用的客戶端側一次性認證碼c(n)。然后,服務器側認證處理部82利用r(n)、q(n)以及k(n)更新種子表71中關于終端裝置1的通常認證模式下的數據,利用c(n)更新通常認證表72a中關于終端裝置1的一次性認證碼。由此,這些值被保存至通常認證模式的下次相互認證會話為止。
進而,在認證服務器3中,服務器側認證處理部82也在發(fā)送一次性認證碼s(n-1)之后,按照上式同樣地更新通常認證模式下的通用密鑰k(n-1)(步驟s30)。
由此,通常認證模式下的相互認證會話執(zhí)行完畢。只要通常認證模式下的相互認證不失敗,便不執(zhí)行再認證模式下的相互認證會話,而是反復執(zhí)行通常認證模式下的相互認證會話。
(2b)再認證模式下的基于一次性認證碼的相互認證
圖7是說明圖1所示的系統(tǒng)中執(zhí)行的、再認證模式下的基于一次性認證碼的相互認證的時序圖。
例如,在通常認證模式下,在雖然發(fā)送了認證服務器3的一次性認證碼s(n-1),但因為通信障礙而導致終端裝置1未正確接收到一次性認證碼s(n-1)的情況、或者因為認證服務器3發(fā)生服務器停機而使終端裝置1中保存的種子與認證服務器3中保存的種子互不一致的情況下,下次的終端裝置1的一次性認證失敗。
在通常認證模式下,當認證服務器3中的終端裝置1的一次性認證失敗時,不會從認證服務器3向終端裝置1發(fā)送包含一次性認證碼的消息。因此,終端裝置1在未接收到該消息時,判斷為認證服務器3中的終端裝置1的一次性認證失敗。即,該情況下,終端裝置1根據未接收到認證服務器3的一次性認證碼s(n-1)這一情況而判斷為通常認證模式下的相互認證失敗(步驟s41)。在判斷為通常認證模式下的相互認證失敗的情況下,終端裝置1如下所述執(zhí)行再認證模式下的相互認證會話(步驟s51),使終端裝置1中保存的種子與認證服務器3中保存的種子相互一致,從而恢復通常認證模式下的種子。
在再認證模式下的相互認證會話(步驟s51)中,首先,終端裝置1的認證處理部42生成隨機數r,并將該隨機數r設定為下次認證用的客戶端側種子rx(m)(步驟s61)。
然后,認證處理部42生成僅在本次相互認證會話中使用的客戶端側一次性認證碼cx(m-1)(步驟s62)。
一次性認證碼cx(m-1)利用單向函數進行計算。該單向函數是取兩個自變量,且函數值根據自變量的順序的不同而不同的函數。在本實施方式中,該單向函數為散列函數hcx。
一次性認證碼cx(m-1)按照下式進行計算。
cx(m-1)=hcx(rx(m-1),qx(m-1))
在此,散列函數hcx的第一自變量使用rx(m-1),第二自變量使用qx(m-1)。另外,散列函數hcx可以是與散列函數hc、hs的任意一個相同的函數,也可以是與散列函數hc、hs均不相同的函數。
另外,認證處理部42利用通用密鑰kx(m-1)按照規(guī)定的加密方式對rx(m)進行加密。另外,將利用通用密鑰kx(m-1)加密后的rx(m)表現為kx(m-1)*rx(m)。
然后,認證處理部42使用通信處理部41,將一次性認證碼cx(m-1)和kx(m-1)*rx(m)發(fā)送給認證服務器3(步驟s63)。此時,通信處理部41將一次性認證碼cx(m-1)和kx(m-1)*rx(m)作為一條消息進行發(fā)送。
在認證服務器3中,服務器側認證處理部82使用通信處理部81接收該消息,并從該消息中提取出一次性認證碼cx(m-1)和kx(m-1)*rx(m)。
服務器側認證處理部82首先判斷接收到的一次性認證碼cx(m-1)與其所保存的通常認證模式下的客戶端側一次性認證碼是否一致。此時,接收到的一次性認證碼cx(m-1)與通常認證模式下的客戶端側一次性認證碼不一致。接著,服務器側認證處理部82判斷接收到的一次性認證碼cx(m-1)與其所保存的再認證模式下的客戶端側一次性認證碼是否一致(步驟s64)。
當接收到的一次性認證碼cx(m-1)與再認證表72b中所保存的再認證模式下的客戶端側一次性認證碼一致時,服務器側認證處理部82判斷為認證成功,首先生成隨機數q,并將該隨機數q設定為再認證模式下的下次認證用服務器側種子qx(m)(步驟s65)。
另外,服務器側認證處理部82利用種子表71中保存的通用密鑰kx(m-1)將kx(m-1)*rx(m)解密為rx(m)。然后,服務器側認證處理部82生成服務器側一次性認證碼sx(m-1)(步驟s66)。
一次性認證碼sx(m-1)利用單向函數進行計算。該單向函數是取兩個自變量,且函數值根據自變量的順序的不同而不同的函數。在本實施方式中,該單向函數為散列函數hsx。
一次性認證碼sx(m-1)按照下式進行計算。
sx(m-1)=hsx(rx(m),qx(m-1))
在此,散列函數hsx的第一自變量使用rx(m),第二自變量使用qx(m-1)。另外,散列函數hsx可以是與散列函數hc、hs、hcx中的任意一個相同的函數,也可以是與散列函數hc、hs、hcx均不相同的函數。
另外,服務器側認證處理部82利用通用密鑰kx(m-1)按照規(guī)定的加密方式對qx(m)進行加密。另外,將利用通用密鑰kx(m-1)加密后的qx(m)表現為kx(m-1)*qx(m)。
然后,服務器側認證處理部82使用通信處理部81,將一次性認證碼sx(m-1)和kx(m-1)*qx(m)發(fā)送給終端裝置1(步驟s67)。此時,通信處理部81將一次性認證碼sx(m-1)和kx(m-1)*qx(m)作為一條消息進行發(fā)送。
當認證服務器3中的終端裝置1的一次性認證成功時,終端裝置1接收到包含一次性認證碼sx(m-1)和kx(m-1)*qx(m)的上述消息。在終端裝置1中,認證處理部42使用通信處理部41接收該消息,并從該消息中提取出一次性認證碼sx(m-1)和kx(m-1)*qx(m)。然后,認證處理部42根據再認證模式下的rx(m)和qx(m-1),并按照上式計算出正確的一次性認證碼sx(m-1)的值,且判斷接收到的一次性認證碼sx(m-1)與計算出的值是否一致(步驟s68)。
此時,當接收到的一次性認證碼sx(m-1)與計算出的值不一致時,認證處理部42判斷為認證失敗,且結束處理。
當接收到的一次性認證碼sx(m-1)與計算出的值一致時,認證處理部42判斷為認證成功。即,認證處理部42判斷為相互認證會話(步驟s51)中的相互認證成功。
當判斷為相互認證會話(步驟s51)中的相互認證成功時,認證處理部42首先利用所保存的通用密鑰kx(m-1)將kx(m-1)*qx(m)解密為qx(m),并將該值設定為再認證模式下的下次認證用服務器側種子(步驟s69)。
然后,認證處理部42按照下式更新再認證模式下的通用密鑰kx(m-1)(步驟s70)。
kx(m)=hkx(kx(m-1),rx(m),qx(m))
在此,hkx為單向函數且為散列函數。
由此,在再認證模式下的基于一次性認證碼的相互認證成功之后,認證處理部42將終端裝置1中保存的種子和通用密鑰更新為rx(m)、qx(m)以及kx(m)。
另一方面,服務器側認證處理部82按照上式從rx(m)和qx(m)計算出再認證模式下的下次一次性認證時使用的客戶端側一次性認證碼cx(m)。然后,服務器側認證處理部82利用rx(m)、qx(m)以及kx(m)更新種子表71中關于終端裝置1的再認證模式下的數據,并利用cx(m)更新再認證表72b中關于終端裝置1的一次性認證碼(步驟s71)。由此,這些值被保存至再認證模式下的下次相互認證會話為止。
另外,在認證服務器3中,服務器側認證處理部82也在發(fā)送一次性認證碼sx(m-1)之后,按照上式同樣地更新再認證模式下的通用密鑰kx(m-1)(步驟s72)。
另外,在終端裝置1中,認證處理部42根據再認證模式下的更新后的種子rx(m)、qx(m),生成通常認證模式下的下次認證用的種子r(n)、q(n)以及通用密鑰k(n),并將其設定在種子表71中(步驟s73)。
例如,將再認證模式下的更新后的種子qx(m)設為通常認證模式下的下次認證用的種子r(n),將再認證模式下的更新后的種子rx(m)設為通常認證模式下的下次認證用的種子q(n)。或者,也可以利用規(guī)定的函數從種子rx(m)、qx(m)生成種子r(n)、q(n)。
另外,通常認證模式下的下次認證用的通用密鑰k(n),例如根據下式從種子r(n)、q(n)以及通用密鑰kx(m)或者kx(m-1)得到。
k(n)=hx(r(n),q(n),kx(m))
或者,k(n)=hx(r(n),q(n),kx(m-1))
在此,hx為散列函數。
另一方面,在認證服務器3中,服務器側認證處理部82與認證處理部42同樣地從再認證模式下的更新后的種子rx(m)、qx(m)生成通常認證模式下的下次認證用的種子r(n)、q(n)以及通用密鑰k(n),并將其設定在種子表71中(步驟s74)。進而,服務器側認證處理部82從這些種子r(n)、q(n)生成下次認證用的一次性認證碼c(n),并將其設定在通常認證表72a中。
如上所述,在上述第一實施方式中,終端裝置1和認證服務器3中分別保存有通常認證用種子和再認證用種子,其中,通常認證用種子用于在通常認證模式下生成和驗證一次性認證碼,再認證用種子用于在再認證模式下生成和驗證一次性認證碼。終端裝置1和認證服務器3以通常認證模式執(zhí)行基于一次性認證碼的相互認證;進而,終端裝置1和認證服務器3在通常認證模式下的基于一次性認證碼的相互認證失敗時,嘗試以再認證模式執(zhí)行基于一次性認證碼的相互認證,且在再認證模式下的基于一次性認證碼的相互認證成功時,分別根據再認證用種子而生成通常認證用種子,恢復通常認證模式下的基于一次性認證碼的相互認證。
由此,在通常認證模式下的相互認證失敗時,通過以再認證模式執(zhí)行相互認證,能夠在短時間內將通常認證模式的種子恢復為能夠執(zhí)行相互認證。
第二實施方式.
在本發(fā)明的第二實施方式中,對于第一實施方式中的認證服務器3內的數據結構以及按照該數據結構執(zhí)行的數據處理的一例進行說明。另外,由于系統(tǒng)的基本構成和動作與第一實施方式相同,故省略其說明。另外,在本第二實施方式中,一次性認證碼是一次性id。
首先,對數據結構進行說明。
在第二實施方式中,在認證服務器3中,對于與終端裝置1相同的一臺或多臺終端裝置分別分配特有的管理編號(終端id),且與該管理編號相關聯地保存有:(a)通常認證模式下的下次認證用客戶端側一次性認證碼c(n);(b)再認證模式下的下次認證用客戶端側一次性認證碼cx(m);(c)通常認證模式下的當前(n-1)的種子r(n-1)、q(n-1)以及通用密鑰k(n-1)和下次認證用的種子r(n)、q(n)以及通用密鑰k(n);以及(d)再認證模式下的當前(n-1)的種子rx(m-1)、qx(m-1)以及通用密鑰kx(m-1)和下次認證用種子rx(m)、qx(m)以及通用密鑰kx(m)。
即,在通常認證表72a中,與管理編號相關聯地保存有(a)下次認證用客戶端側一次性認證碼c(n)。另外,在再認證表72b中,與管理編號相關聯地保存有(b)下次認證用客戶端側一次性認證碼cx(m)。另外,在種子表71中,與管理編號相關聯地保存有:(c)通常認證模式下的當前(n-1)的種子r(n-1)、q(n-1)以及通用密鑰k(n-1)和下次認證用的種子r(n)、q(n)以及通用密鑰k(n);和(d)再認證模式下的當前(m-1)的種子rx(m-1)、qx(m-1)以及通用密鑰kx(m-1)和下次認證用種子rx(m)、qx(m)以及通用密鑰kx(m)。
圖8是表示第二實施方式中的種子表71的結構的一例的圖。圖9是表示第二實施方式中的認證碼表72(通常認證表72a、再認證表72b)的一例的圖。
圖8中的通常認證地址是表示通常認證表72a內具有與該通常認證地址相關聯的管理編號相同的管理編號的記錄(record)的位置的數據。同樣地,圖8中的再認證地址是表示再認證表72b內具有與該再認證地址相關聯的管理編號相同的管理編號的記錄的位置的數據。
另外,在圖9中,通過服務器側認證處理部82將通常認證表72a內的記錄(一次性認證碼與管理編號的組合)按照一次性認證碼的值呈升序地進行排序。同樣地,將再認證表72b內的記錄(一次性認證碼與管理編號的組合)按照一次性認證碼的值呈升序地進行排序。由此,在一次性認證時,能夠迅速地判斷出從客戶端接收的一次性認證碼是否己被登記在通常認證表72a、再認證表72b中。
另外,種子表71、通常認證表72a以及再認證表72b預先具有規(guī)定數量(即,終端裝置的數量)的記錄,并對記錄內的管理編號以外的其他域(field)設定初始值。
接下來,對數據處理進行說明。
圖10和圖11是說明第二實施方式中認證服務器3所執(zhí)行的數據處理的流程圖。
在認證服務器3中,服務器側認證處理部82在從終端裝置1接收到包含一次性認證碼c(通常認證模式下的一次性認證碼或者再認證模式下的一次性認證碼)的消息之后,判斷該一次性認證碼c是否為已登記在通常認證表72a中的客戶端側一次性認證碼c(n-1)中的任意一個(步驟s101)。
當接收到的一次性認證碼c是已登記在通常認證表72a中的客戶端側一次性認證碼c(n-1)中的任意一個時,服務器側認證處理部82在通常認證表72a中確定與接收到的一次性認證碼c相關聯的管理編號(步驟s102)。該情況下,執(zhí)行通常認證模式下的一次性認證。
服務器側認證處理部82從種子表71讀出與所確定的管理編號相關聯的q(n-1)和k(n-1)(步驟s103)
然后,服務器側認證處理部82利用讀出的k(n-1)將接收到的k(n-1)*r(n)解密為r(n),并將該r(n)與該管理編號相關聯地寫入種子表71中(步驟s104)。
接著,服務器側認證處理部82生成下次認證用服務器側種子。首先,服務器側認證處理部82生成隨機數q,并在將該隨機數q用作下次認證用服務器側種子時,判斷下次認證用的客戶端側一次性認證碼是否與其他的終端裝置1的客戶端側一次性認證碼中的任意一個一致(步驟s106)。即,判斷使用生成的隨機數q時的客戶端側一次性認證碼的唯一性(即,不存在具有相同值的其他一次性認證碼)是否得到確保。
此時,服務器側認證處理部82按照下式計算出將該隨機數q用作下次認證用服務器側種子時的下次認證用客戶端側一次性認證碼x1,并判斷該一次性認證碼x1是否已被登記在通常認證表72a或者再認證表72b中。
x1=hc(r(n),q)
然后,當判斷為利用所生成的隨機數q無法確保唯一性時,服務器側認證處理部82重新生成隨機數q,直到唯一性得到確保為止。
另一方面,當判斷為利用所生成的隨機數q能夠確保唯一性時,服務器側認證處理部82將隨機數q設定為下次認證用服務器側種子q(n),并將該種子q(n)與該管理編號相關聯地寫入種子表71中(步驟s107)。
然后,服務器側認證處理部82生成服務器側一次性認證碼s(n-1)和加密后的下次認證用服務器側種子k(n-1)*q(n),并發(fā)送給終端裝置1(步驟s108)。
另外,服務器側認證處理部82將步驟s106中判斷時計算出的x1作為下次認證用客戶端側一次性認證碼c(n),并利用該c(n)更新通常認證表72a中與該管理編號相關聯的一次性認證碼(步驟s109)。此時,服務器側認證處理部82從種子表71中讀出與該管理編號相關聯的通常認證地址,并利用該通常認證地址而確定通常認證表72a中該管理編號的記錄,從而更新該記錄內的一次性認證碼。
之后,服務器側認證處理部82將通常認證表72a內的記錄按照一次性認證碼的值呈升序地進行排序,對于通過排序而導致位置發(fā)生變更的記錄,更新種子表71中與該記錄的管理編號相關聯的通常認證地址(步驟s110)。
然后,服務器側認證處理部82生成下次認證用通用密鑰k(n),并與該管理編號相關聯地寫入種子表71中(步驟s111)。
進而,服務器側認證處理部82在種子表71中利用該管理編號的下次認證用的種子r(n)、q(n)和通用密鑰k(n),更新本次認證用的種子r(n-1)、q(n-1)和通用密鑰k(n-1)(步驟s112)。
由此,關于通常認證模式下的一次性認證的數據處理執(zhí)行完畢。
另一方面,當在步驟s101中判斷為接收到的一次性認證碼c尚未登記在通常認證表72a中時,服務器側認證處理部82判斷接收到的一次性認證碼c是否為已登記在再認證表72b中的客戶端側一次性認證碼cx(m-1)中的任意一個(步驟s121)。
當接收到的一次性認證碼c是已登記在再認證表72b中的客戶端側一次性認證碼cx(m-1)中的任意一個時,服務器側認證處理部82在再認證表72b中確定與接收到的一次性認證碼c相關聯的管理編號(步驟s122)。該情況下,執(zhí)行再認證模式下的一次性認證。
服務器側認證處理部82從種子表71中讀出與所確定的管理編號相關聯的qx(m-1)和kx(m-1)(步驟s123)。
然后,服務器側認證處理部82利用讀出的kx(m-1)將接收到的kx(m-1)*rx(m)解密為rx(m),并將該rx(m)與該管理編號相關聯地寫入種子表71中(步驟s124)。
接著,服務器側認證處理部82生成下次認證用服務器側種子。首先,服務器側認證處理部82生成隨機數q,并在將該隨機數q用作下次認證用服務器側種子的情況下,判斷下次認證用的客戶端側一次性認證碼是否與通常認證模式或者再認證模式下的其他的客戶端側一次性認證碼中的任意一個一致(步驟s126)。即,判斷使用生成的隨機數q時的客戶端側一次性認證碼的唯一性(即,不存在具有相同值的其他一次性認證碼)是否得到確保。
此時,服務器側認證處理部82按照下式計算出將該隨機數q用作下次認證用服務器側種子時的下次認證用的客戶端側一次性認證碼x2,并判斷該一次性認證碼x2是否已被登記在通常認證表72a或者再認證表72b中。
x2=hcx(rx(m),q)
然后,當判斷為利用所生成的隨機數q無法確保唯一性時,服務器側認證處理部82重新生成隨機數q,直到唯一性得到確保為止。
另一方面,當判斷為利用所生成的隨機數q能夠確保唯一性時,服務器側認證處理部82將隨機數q設定為下次認證用服務器側種子qx(m),并將該種子qx(m)與該管理編號相關聯地寫入種子表71中(步驟s127)。
然后,服務器側認證處理部82生成服務器側一次性認證碼sx(m-1)和加密后的下次認證用服務器側種子kx(m-1)*qx(m),并發(fā)送給終端裝置1(步驟s128)。
另外,服務器側認證處理部82將步驟s126中判斷時計算出的x2作為下次認證用客戶端側一次性認證碼cx(m),并利用該cx(m)更新再認證表72b中與該管理編號相關聯的一次性認證碼(步驟s129)。此時,服務器側認證處理部82從種子表71中讀出與該管理編號相關聯的再認證地址,并利用該再認證地址而確定再認證表72b中該管理編號的記錄,從而更新該記錄內的一次性認證碼。
之后,服務器側認證處理部82將再認證表72b內的記錄按照一次性認證碼的值呈升序地進行排序,對于通過排序而導致位置發(fā)生變更的記錄,更新種子表71中與該記錄的管理編號相關聯的再認證地址(步驟s130)。
然后,服務器側認證處理部82生成下次認證用通用密鑰kx(m),并與該管理編號相關聯地寫入種子表71中(步驟s131)。
進而,服務器側認證處理部82在種子表71中,利用該管理編號的下次認證用種子rx(m)、qx(m)和通用密鑰kx(m),更新本次認證用的種子rx(m-1)、qx(m-1)和通用密鑰kx(m-1)(步驟s132)。
然后,服務器側認證處理部82根據再認證模式的種子rx(m)、qx(m)和通用密鑰kx(m),生成通常認證模式下的下次認證用的種子r(n)、q(n)和通用密鑰k(n),并將該種子r(n)、q(n)和通用密鑰k(n)與該管理編號相關聯地寫入種子表71中(步驟s133)。
由此,關于再認證模式下的一次性認證的數據處理執(zhí)行完畢。
如上所述,在上述第二實施方式中,利用管理編號來管理多臺終端裝置1,能夠針對各終端裝置1分別獨立地進行一次性認證。
另外,關于上述實施方式,也可以在不脫離其主題的要旨和范圍并且不減弱其所期望的優(yōu)點的范圍內進行各種變更和修改,由于這些變更和修改對于本領域技術人員而言是顯而易見的,因而這些變更和修改也應該包含在權利要求范圍內。
例如,在第一、第二實施方式中,也可以形成為:在利用再認證模式下的相互認證來恢復通常認證模式下的相互認證的種子,且再認證模式下的相互認證失敗時,利用再再認證模式下的相互認證來恢復再認證模式的相互認證的種子。
另外,在第一、第二實施方式中,也可以形成為:在認證服務器3中,服務器側認證處理部82在認證服務器3啟動時,將種子表71和認證碼表72從存儲裝置55讀取至ram53,根據ram53中的種子表71和認證碼表72執(zhí)行基于一次性認證的相互認證,且在認證服務器3關機時,利用ram53中的種子表71和認證碼表72來更新存儲裝置55中的種子表71和認證碼表72。
另外,在上述第一、第二實施方式中,也可以形成為:認證服務器3的服務器側認證處理部82將種子表71中的再認證模式的種子cx(i)、qx(i)另外存儲在外部的非易失性存儲裝置中以進行備份,在認證服務器3發(fā)生服務器停機后恢復時,利用存儲在該外部的非易失性存儲裝置中的種子cx(i)、qx(i)將存儲裝置55內的種子表71中的再認證模式的種子cx(i)、qx(i)覆蓋而進行恢復。
(工業(yè)上的可利用性)
本發(fā)明能夠適用于例如認證客戶端的網絡系統(tǒng)中。