(57)【特許請求の範囲】
【請求項１】
SPサーバが、SIPプロトコルにおけるクライアント端末の登録のときに、クライアント端末からの要求に応じて、上記SPサーバの秘密鍵を用いて上記SPサーバのチャレンジであるSPチャレンジに対して署名を行いSP署名を生成し、上記SP署名と、上記SPチャレンジと、IdPサーバについての情報とを上記クライアント端末に送信するステップと、
上記クライアント端末が、上記IdPサーバについての情報により特定されるIdPサーバに、上記SP署名と、上記SPチャレンジと、クライアントチャレンジと、を送信するステップと、
上記IdPサーバが、上記SPサーバの公開鍵を用いて上記SP署名の検証を行い、その検証に成功した場合には、上記クライアント端末のIDが存在するかどうかを確認し、その確認ができた場合には、上記IdPサーバの秘密鍵を用いて上記SPチャレンジに対して署名を行い第一IdP署名を生成し、上記IdPサーバの秘密鍵を用いて上記クライアントチャレンジに対して署名を行い第二IdP署名を生成し、上記第一IdP署名及び上記第二IdP署名を上記クライアント端末に送信するステップと、
上記クライアント端末が、上記IdPサーバの公開鍵を用いて上記第二IdP署名の検証を行い、その検証に成功した場合には、上記第一IdP署名を上記SPサーバに送信するステップと、
上記SPサーバが、上記IdPサーバの公開鍵を用いて上記第一IdP署名の検証を行い、その検証に成功した場合には、上記SIPプロトコルにおける上記クライアント端末の登録を行うステップと、
を含む認証方法。
【請求項２】
SIPプロトコルにおけるクライアント端末の登録のときに、クライアント端末からの要求に応じて、SPサーバの秘密鍵を用いて上記SPサーバのチャレンジであるSPチャレンジに対して署名を行いSP署名を生成し、上記SP署名と、上記SPチャレンジと、IdPサーバについての情報とを上記クライアント端末に送信する上記SPサーバと、
上記IdPサーバについての情報により特定されるIdPサーバに、上記SP署名と、上記SPチャレンジと、クライアントチャレンジと、を送信する上記クライアント端末と、
上記SPサーバの公開鍵を用いて上記SP署名の検証を行い、その検証に成功した場合には、上記クライアント端末のIDが存在するかどうかを確認し、その確認ができた場合には、上記IdPサーバの秘密鍵を用いて上記SPチャレンジに対して署名を行い第一IdP署名を生成し、上記IdPサーバの秘密鍵を用いて上記クライアントチャレンジに対して署名を行い第二IdP署名を生成し、上記第一IdP署名及び上記第二IdP署名を上記クライアント端末に送信する上記IdPサーバと、を含み、
上記クライアント端末は、上記IdPサーバの公開鍵を用いて上記第二IdP署名の検証を行い、その検証に成功した場合には、上記第一IdP署名を上記SPサーバに送信し、
上記SPサーバは、上記IdPサーバの公開鍵を用いて上記第一IdP署名の検証を行い、その検証に成功した場合には、上記SIPプロトコルにおける上記クライアント端末の登録を行う、
認証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、クライアント端末、サーバ等の情報処理機器間でセッションを確立するためのプロトコル、特にSIPプロトコルにおける認証に関するものである。
【背景技術】
【０００２】
RFC3261に規定されているSIPプロトコルでは、HTTPダイジェスト認証によりクライアント端末が登録されている（例えば、非特許文献１参照。）。HTTPダイジェスト認証は、RFC2617に規定されている（例えば、非特許文献２参照。）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】RFC3261
【非特許文献２】RFC2617
【発明の概要】
【発明が解決しようとする課題】
【０００４】
HTTPダイジェスト認証を行うためには、パスワードリストをサーバに事前に記憶しておく必要があるが、このパスワードリストが流出するリスクがあった。
【０００５】
この発明の目的は、パスワードリストが流出するリスクのない、SIPプロトコルにおける認証方法及びシステムを提供することである。
【課題を解決するための手段】
【０００７】
この発明の一態様による認証方法は、SPサーバが、SIPプロトコルにおけるクライアント端末の登録のときに、クライアント端末からの要求に応じて、上記SPサーバの秘密鍵を用いて上記SPサーバのチャレンジであるSPチャレンジに対して署名を行いSP署名を生成し、上記SP署名と、上記SPチャレンジと、IdPサーバについての情報とを上記クライアント端末に送信するステップと、上記クライアント端末が、上記IdPサーバについての情報により特定されるIdPサーバに、上記SP署名と、上記SPチャレンジと、クライアントチャレンジと、を送信するステップと、上記IdPサーバが、上記SPサーバの公開鍵を用いて上記SP署名の検証を行い、その検証に成功した場合には、上記クライアント端末のIDが存在するかどうかを確認し、その確認ができた場合には、上記IdPサーバの秘密鍵を用いて上記SPチャレンジに対して署名を行い第一IdP署名を生成し、上記IdPサーバの秘密鍵を用いて上記クライアントチャレンジに対して署名を行い第二IdP署名を生成し、上記第一IdP署名及び上記第二IdP署名を上記クライアント端末に送信するステップと、上記クライアント端末が、上記IdPサーバの公開鍵を用いて上記第二IdP署名の検証を行い、その検証に成功した場合には、上記第一IdP署名を上記SPサーバに送信するステップと、上記SPサーバが、上記IdPサーバの公開鍵を用いて上記第一IdP署名の検証を行い、その検証に成功した場合には、上記SIPプロトコルにおける上記クライアント端末の登録を行うステップと、を備えている。
【発明の効果】
【０００８】
パスワードリストが用いられないため、パスワードリストが流出するリスクがなくなる。
【図面の簡単な説明】
【０００９】
【図１】第一実施形態の認証システムの例を説明するためのブロック図。
【図２】第一実施形態の認証方法の例を説明するための流れ図。
【図３】第二実施形態の認証システムの例を説明するためのブロック図。
【図４】第二実施形態の認証方法の例を説明するための流れ図。
【発明を実施するための形態】
【００１０】
［第一実施形態］
第一実施形態の認証システムは、クライアント端末１及びサーバ２を例えば備えている。クライアント端末１は、携帯電話、スマートフォン、タブレット端末、PC等の情報処理機器である。サーバ２は、SIP（Session Initiation Protocol）サーバである。
【００１１】
認証システムが、図２や以下に例示する各処理を行うことにより認証方法が実現される。
【００１２】
＜ステップS１＞
まず、クライアント端末１は、SIPプロトコルにおけるクライアント端末１の登録のときに、クライアントチャレンジC1をサーバ２に送信する（ステップS1）。
【００１３】
クライアントチャレンジC1は、任意の文字列であってもよいし、任意の数列であってもよい。クライアント端末１は、例えば所定のアルゴリズムに基づいて乱数を生成して、生成された乱数をクライアントチャレンジC1とする。
【００１４】
例えば、クライアント端末１は、SIPプロトコルにおけるREGISTERメソッドのメッセージと共にクライアントチャレンジC1をサーバ２に送信する。例えば、クライアントチャレンジC1はREGISTERメソッドのメッセージの一部としてサーバ２に送信される。このメッセージには、クライアント端末１を識別する情報であるCALL-IDが含まれていてもよい。
【００１５】
＜ステップS2＞
サーバ２は、クライアント端末１からクライアントチャレンジC1を受信する。
【００１６】
サーバ２は、サーバ２の秘密鍵を用いてクライアントチャレンジC1に対して署名を行いサーバ署名σ1を生成し、サーバチャレンジC2及びサーバ署名σ1をクライアント端末１に送信する（ステップS2）。
【００１７】
署名の方法は、RSA署名、ElGamal署名、DSA署名、Schnorr署名、Cramer-Shoup署名、楕円ElGamal署名、楕円曲線DSA署名、楕円Schnorr署名等の既存の署名の方法を用いればよい。既存の署名の方法を用いればよいのは、この発明の他の署名についても同様である。
【００１８】
サーバ２の秘密鍵をSsとし、署名の関数をsignとすると、サーバ署名σ1は、σ1=signSs(C1)と表記することができる。
【００１９】
サーバチャレンジC2は、任意の文字列であってもよいし、任意の数列であってもよい。サーバ２は、例えば所定のアルゴリズムに基づいて乱数を生成して、生成された乱数をサーバトチャレンジC2とする。
【００２０】
例えば、サーバ２は、SIPプロトコルにおける2XX又は4XXの応答コードのメッセージと共にサーバチャレンジC2及びサーバ署名σ1をクライアント端末１に送信する。例えば、サーバチャレンジC2及びサーバ署名σ1は、2XX又は4XXの応答コードのメッセージの一部としてクライアント端末１に送信される。2XX及び4XXのXは、任意の整数である。
【００２１】
＜ステップS3＞
クライアント端末１は、サーバ２からサーバチャレンジC2及びサーバ署名σ1を受信する。
【００２２】
クライアント端末１は、サーバ２の公開鍵を用いてサーバ署名σ1の検証を行い、その検証に成功した場合には、クライアント端末１の秘密鍵を用いてサーバチャレンジC2に対して署名を行いクライアント端末署名σ２を生成し、クライアント端末署名σ２をサーバ２に送信する（ステップS3）。
【００２３】
検証の方法は、RSA署名、ElGamal署名、DSA署名、Schnorr署名、Cramer-Shoup署名、楕円ElGamal署名、楕円曲線DSA署名、楕円Schnorr署名等の既存の署名の方法における検証方法を用いればよい。既存の署名の方法における検証方法を用いればよいのは、この発明の他の検証についても同様である。
【００２４】
サーバ２の公開鍵をSpとし、サーバ署名をσ1とし、検証の関数をverifyとすると、クライアント端末１による検証は、verifySp(σ1)=?0 or 1と表記することができる。verifySp(σ1)=1は検証に成功したことを意味し、verifySp(σ1)=0は検証に成功しなかったことを意味する。
【００２５】
クライアント端末１の秘密鍵をCsとし、署名の関数をsignとすると、クライアント端末署名σ2は、σ2=signCs(C2)と表記することができる。
【００２６】
例えば、クライアント端末１は、SIPプロトコルにおけるREGISTERメソッドのメッセージと共にクライアント端末署名σ２をサーバ２に送信する。例えば、クライアント端末署名σ２は、REGISTERメソッドのメッセージの一部としてサーバ２に送信される。このメッセージには、クライアント端末１を識別する情報であるCALL-IDをサーバ２が含まれていてもよい。
【００２７】
＜ステップS4＞
サーバ２は、クライアント端末署名σ２をクライアント端末１から受信する。
【００２８】
サーバ２が、クライアント端末１の公開鍵を用いてクライアント端末署名の検証を行い、その検証に成功した場合には、SIPプロトコルにおけるクライアント端末１の登録を行う（ステップS4）。
【００２９】
クライアント端末１の公開鍵をCpとし、クライアント端末署名をσ2とし、検証の関数をverifyとすると、サーバ２による検証は、verifyCp(σ2)=?0 or 1と表記することができる。verifyCp(σ2)=1は検証に成功したことを意味し、verifyCp(σ2)=0は検証に成功しなかったことを意味する。
【００３０】
その際、サーバ２は、クライアント端末署名の検証の合格の後に、クライアント端末１のIDが存在するかどうかを確認し、その確認ができた場合に、クライアント端末１の登録を行ってもよい。
【００３１】
クライアント端末１のIDの存在の確認は、サーバ２がIDのデータベースを有している場合には、そのデータベースを参照することにより行う。そのデータベースの中にクライアント端末１のIDが存在していれば、その存在が確認できたと判断することができ、そのデータベースの中にクライアント端末１のIDが存在していなければ、その存在は確認できないと判断することができる。
【００３２】
IDのデータベースが図示していないLDAPサーバに記憶されている場合には、サーバ２はLDAPサーバに問い合わせることにより、IDの存在を確認してもよい。例えば、IDとして、クライアント端末１のCALL-IDに対応するメールアドレスが用いられている場合には、サーバ２は、そのメールアドレスの存在の有無をLDAPサーバに問い合わせる。LDAPサーバは、そのメールアドレスが存在の有無についての情報をサーバ２に送信する。サーバ２は、そのメールアドレスが存在する旨の情報を得た場合には、クライアント端末１のIDの存在が確認できたと判断することができ、そのメールアドレスが存在しない旨の情報を得た場合には、クライアント端末１のIDが存在は確認できないと判断することができる。
【００３３】
なお、サーバ２は、クライアント端末１のCALL-IDに対応するメールアドレスのみならず、クライアント端末１の公開鍵が存在しているかどうかをLDAPサーバに問い合わせ、クライアント端末１のCALL-IDに対応するメールアドレスのみならず、クライアント端末１の公開鍵が存在している場合に、クライアント端末１のIDが存在していると判断してもよい。
【００３４】
サーバ２は、クライアント端末１に登録の結果についての情報を送信する。例えば、サーバ２は、SIPプロトコルにおける2XX又は4XXの応答コードのメッセージを送信することで、登録の結果についての情報を送信する。2XXはリクエストが成功したこと（ここでは、登録が成功したこと）を表す応答コードであり、4XXはリクエストが誤りであるかリクエストを処理することができないこと（ここでは、登録が成功しなかったこと）を表す応答コードである。
【００３５】
サーバ２がSIPProxyサーバとして機能する場合には、その後、サーバ２が、検証に成功したクライアント端末１、言い換えれば登録されたクライアント端末１からの、SIPプロトコルにおけるINVITEメソッドのメッセージのみを受け付け、検証に成功していないクライアント端末１、言い換えれば登録されていないクライアント端末１からの、SIPプロトコルにおけるINVITEメソッドのメッセージの受け付けを拒否してもよい。
【００３６】
このように、SIPプロトコルの登録の際にパスワードリストを用いずに認証を行うことにより、パスワードリストが用いられないため、パスワードリストが流出するリスクがなくなる。
【００３７】
［第二実施形態］
第二実施形態の認証システムは、図３に示すように、クライアント端末１、SPサーバ３、SIPサーバ４及びIｄPサーバ５を例えば備えている。クライアント端末１は、携帯電話、スマートフォン、タブレット端末、PC等の情報処理機器である。SPサーバ３は、クライアント端末１に対して所定のサービスを提供するサービスプロバイダ（Service Provider）サーバである。SIPサーバ４は、SIP（Session Initiation Protocol）サーバである。IｄPサーバ５は、アイデンティティプロバイダ（IDentity Provider）サーバである。
【００３８】
認証システムが、図４や以下に例示する各処理を行うことにより認証方法が実現される。
【００３９】
＜ステップT1＞
SPサーバ３は、SIPプロトコルにおけるクライアント端末１の登録のときに、クライアント端末１からの要求に応じて、SPサーバ３の秘密鍵を用いてSPサーバ３のチャレンジであるSPチャレンジCSPに対して署名を行いSP署名σSPを生成し、SP署名σSPと、SPチャレンジCSPと、IdPサーバ５についての情報とをクライアント端末１に送信する（ステップT1）。
【００４０】
クライアント端末１からの要求とは、例えば、クライアント端末１からSPサーバ３へのSIPプロトコルにおけるREGISTERメソッドのメッセージの送信のことである。このメッセージには、クライアント端末１を識別する情報であるCALL-IDが含まれていてもよい。
【００４１】
SPチャレンジCSPは、任意の文字列であってもよいし、任意の数列であってもよい。SPサーバ３は、例えば所定のアルゴリズムに基づいて乱数を生成して、生成された乱数をSPチャレンジCSPとする。
【００４２】
SPサーバ３の秘密鍵をSPsとし、署名の関数をsignとすると、SPサーバ署名σSPは、σSP=signSs(CSP)と表記することができる。
【００４３】
＜ステップT2＞
クライアント端末１は、SP署名σSPと、SPチャレンジCSPと、IdPサーバ５についての情報とをSPサーバ３から受信する。
【００４４】
クライアント端末１は、IdPサーバ５についての情報により特定されるIdPサーバ５に、SP署名σSPと、SPチャレンジCSPと、クライアントチャレンジC1とを送信する（ステップT2）。
【００４５】
クライアントチャレンジC1は、任意の文字列であってもよいし、任意の数列であってもよい。クライアント端末１は、例えば所定のアルゴリズムに基づいて乱数を生成して、生成された乱数をクライアントチャレンジC1とする。
【００４６】
例えば、クライアント端末１は、SIPプロトコルにおけるRESISTERメソッドのメッセージと共にSP署名σSPと、SPチャレンジCSPと、クライアントチャレンジC1とをIdPサーバ５に送信する。例えば、SP署名σSPと、SPチャレンジCSPと、クライアントチャレンジC1とはRESISTERメソッドのメッセージの一部としてIdPサーバ５に送信される。このメッセージには、クライアント端末１のCALL-IDが含まれていてもよい。
【００４７】
＜ステップT3＞
IdPサーバ５は、クライアント端末１から、SP署名σSPと、SPチャレンジCSPと、クライアントチャレンジC1とを受信する。
【００４８】
IdPサーバ５は、SPサーバ３の公開鍵を用いてSP署名σSPの検証を行い、その検証に成功した場合には、クライアント端末１のIDが存在するかどうかを確認し、その確認ができた場合には、IdPサーバの秘密鍵を用いてSPチャレンジCSPに対して署名を行い第一IdP署名σIdPを生成し、IdPサーバの秘密鍵を用いてクライアントチャレンジC1に対して署名を行い第二IdP署名σ1を生成し、第一IdP署名σIdP及び第二IdP署名σ1をクライアント端末１に送信する（ステップT3）。
【００４９】
SPサーバ３の公開鍵をSPpとし、SPサーバ署名をσSPとし、検証の関数をverifyとすると、IdPサーバ５による検証は、verifySPp(σSP)=?0 or 1と表記することができる。verifySPp(σSP)=1は検証に成功したことを意味し、verifySPp(σSP)=0は検証に成功しなかったことを意味する。
【００５０】
IdPサーバ５の秘密鍵をIdPsとし、署名の関数をsignとすると、第一IdP署名σIdPは、σIdP=signSs(CSP)と表記することができる。
【００５１】
IdPサーバ５の秘密鍵をIdPsとし、署名の関数をsignとすると、第二IdP署名σ1は、σ1=signSs(C1)と表記することができる。
【００５２】
IdPサーバ５によるクライアント端末１の存在の確認の方法は、第一実施形態のサーバ２によるクライアント端末１の存在の確認方法と同様であるため、ここでは説明を省略する。
【００５３】
例えば、IdPサーバ５は、SIPプロトコルにおける2XXの応答コードのメッセージと共に第一IdP署名σIdP及び第二IdP署名σ1をクライアント端末１に送信する。例えば、第一IdP署名σIdP及び第二IdP署名σ1は2XXの応答コードのメッセージの一部としてクライアント端末１に送信される。
【００５４】
＜ステップT4＞
クライアント端末１は、IdPサーバ５から、第一IdP署名σIdP及び第二IdP署名σ1を受信する。
【００５５】
クライアント端末１は、IdPサーバ５の公開鍵を用いて第二IdP署名σ1の検証を行い、その検証に成功した場合には、第一IdP署名σIdPをSPサーバ３に送信する（ステップT4）。
【００５６】
IdPサーバ５の公開鍵IdPpとし、第二IdP署名をσ1とし、検証の関数をverifyとすると、クライアント端末１による検証は、verifyIdPp(σ1)=?0 or 1と表記することができる。verifyIdPp(σ1)=1は検証に成功したことを意味し、verifyIdPp(σ1)=0は検証に成功しなかったことを意味する。
【００５７】
例えば、クライアント端末１は、SIPプロトコルにおけるRESISTERメソッドのメッセージと共に第一IdP署名σIdPをSPサーバ３に送信する。例えば、第一IdP署名σIdPはRESISTERメソッドのメッセージの一部としてSPサーバ３に送信される。このメッセージには、クライアント端末１のCALL-IDが含まれていてもよい。
【００５８】
＜ステップT5＞
SPサーバ３は、第一IdP署名σIdPをクライアント端末１から受信する。
【００５９】
SPサーバ３は、、IdPサーバ５の公開鍵を用いて第一IdP署名σIdPの検証を行い、その検証に成功した場合には、SIPプロトコルにおけるクライアント端末１の登録を行う（ステップT5）。
【００６０】
IdPサーバ５の公開鍵IdPpとし、第一IdP署名をσIdPとし、検証の関数をverifyとすると、クライアント端末１による検証は、verifyIdPp(σIdP)=?0 or 1と表記することができる。verifyIdPp(σIdP)=1は検証に成功したことを意味し、verifyIdPp(σIdP)=0は検証に成功しなかったことを意味する。
【００６１】
SPサーバ３は、クライアント端末１を登録する旨の要求をSIPサーバ４に送信し、その要求を受信したSIPサーバ４がクライアント端末１を登録することにより、クライアント端末１の登録は例えば行われる。クライアント端末１を登録する旨の要求とは、例えば、SIPプロトコルにおけるRESISTERメソッドのメッセージである。このメッセージには、クライアント端末１のCALL-IDが含まれていてもよい。
【００６２】
なお、SPサーバ３は、上記検証に成功した後に、ステップT4において第一IdP署名σIdPを送信したクライアント端末１がステップT1において要求を行ったクライアント端末１と同一であるかを確認し、その確認ができた場合に、SIPプロトコルにおけるクライアント端末１の登録を行ってもよい。言い換えれば、SPサーバ３は、上記検証に成功し、かつ、上記の確認ができた場合に、SIPプロトコルにおけるクライアント端末１の登録を行ってもよい。
【００６３】
ステップT4において第一IdP署名σIdPを送信したクライアント端末１がステップT1において要求を行ったクライアント端末１と同一であるかの確認は、ステップT1においてSPサーバが受信したRRGISTERメソッドのメッセージにCALL-IDが含まれている場合であって、ステップT4において第一IdP署名σIdPと共にCALL-IDをSPサーバが受信している場合には、それらが同一であるかを確認することにより行うことができる。
【００６４】
最後に、SPサーバ３は、クライアント端末１の登録の有無の結果の通知をクライアント端末１に送信する。例えば、サーバ２は、SIPプロトコルにおける2XX又は4XXの応答コードのメッセージを送信することで、登録の結果についての情報を送信する。2XXはリクエストが成功したこと（ここでは、登録が成功したこと）を表す応答コードであり、4XXはリクエストが誤りであるかリクエストを処理をすることができないこと（ここでは、登録が成功しなかったこと）を表す応答コードである。
【００６５】
SPサーバ３がSIPProxyサーバとして機能する場合には、その後、SPサーバ３が、検証に成功したクライアント端末１、言い換えれば登録されたクライアント端末１からの、SIPプロトコルにおけるINVITEメソッドのメッセージのみを受け付け、検証に成功していないクライアント端末１、言い換えれば登録されていないクライアント端末１からの、SIPプロトコルにおけるINVITEメソッドのメッセージの受け付けを拒否してもよい。
【００６６】
このように、SIPプロトコルの登録の際にパスワードリストを用いずに認証を行うことにより、パスワードリストが用いられないため、パスワードリストが流出するリスクがなくなる。
【００６７】
[プログラム及び記録媒体]
クライアント端末１、サーバ２、SPサーバ３、SIPサーバ４、IdPサーバ５のそれぞれの各処理をコンピュータによって実現する場合、その各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、その各処理がコンピュータ上で実現される。
【００６８】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００６９】
また、各処理手段は、コンピュータ上で所定のプログラムを実行させることにより構成することにしてもよいし、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【００７０】
その他、この発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【符号の説明】
【００７１】
１      クライアント端末
２      サーバ
３      SPサーバ
４      SIPサーバ
５      IdPサーバ
【図１】
0006386967.tif 000002
【図２】
0006386967.tif 000003
【図３】
0006386967.tif 000004
【図４】
0006386967.tif 000005