(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-17
(45)【発行日】2025-02-26
(54)【発明の名称】サーバシステム及び不正ユーザ検知方法
(51)【国際特許分類】
G06F 21/33 20130101AFI20250218BHJP
【FI】
G06F21/33
(21)【出願番号】P 2023025451
(22)【出願日】2023-02-21
【審査請求日】2023-07-13
(73)【特許権者】
【識別番号】524132520
【氏名又は名称】日立ヴァンタラ株式会社
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】田畑 義之
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2019-046059(JP,A)
【文献】特開2019-046060(JP,A)
【文献】特開2005-149239(JP,A)
【文献】特開2001-186122(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/31-21/46
(57)【特許請求の範囲】
【請求項1】
ユーザからのアクセスを受け付けるクライアントと、
OAuth 2.0又はOIDC Core 1.0に基づく仕様のフローに沿って、前記クライアントからの委譲を受け、前記ユーザの認証及び/又は認可のリクエストを処理するサーバとを備え、
前記サーバは、前記リクエストを受信するとともに、前記ユーザを代表する識別子を取得し、前記リクエストに対するレスポンスに格納し、
前記クライアントは、前記ユーザから前記レスポンスを受信するとともに、前記ユーザを代表する識別子を取得し、該取得した識別子と前記レスポンスに格納された識別子とを比較して、前記レスポンスの送信元が正しいユーザであるか否かを判定
するものであり、
前記クライアントは、前記レスポンスを受信するとともに取得した識別子と前記レスポンスに格納された識別子とが一致する場合に前記レスポンスの送信元が正しいユーザであると判定し、前記レスポンスを受信するとともに取得した識別子と前記レスポンスに格納された識別子とが不一致である場合、前記レスポンスの受信時に識別子が取得できなかった場合、前記レスポンスに格納された識別子が取得できなかった場合に、前記レスポンスの送信元が不正なユーザであると判定する
ことを特徴とするサーバシステム。
【請求項2】
請求項1に記載のサーバシステムであって、
前記サーバは、前記ユーザの認証及び認可を行い、
前記クライアントは、前記比較の結果が不一致である場合に、レスポンスの送信元からのアクセスを拒否することを特徴とするサーバシステム。
【請求項3】
請求項1に記載のサーバシステムであって、
前記ユーザを代表する識別子は、クライアント証明書であることを特徴とするサーバシステム。
【請求項4】
請求項1に記載のサーバシステムであって、
前記ユーザを代表する識別子は、ユーザの端末が所定の媒体から読み取った識別情報であることを特徴とするサーバシステム。
【請求項5】
請求項1に記載のサーバシステムであって、
前記サーバは、前記ユーザを代表する識別子を格納したレスポンスに電子署名し、
前記クライアントは、前記電子署名を検証した上で前記比較を行うことを特徴とするサーバシステム。
【請求項6】
請求項1に記載のサーバシステムであって、
前記ユーザに提供するリソースデータを保持するリソースサーバをさらに備え、
前記サーバは、前記リソースデータに対するアクセスの認可を行うことを特徴とするサーバシステム。
【請求項7】
ユーザからのアクセスを受け付けるクライアントと、
OAuth 2.0又はOIDC Core 1.0に基づく仕様のフローに沿って、前記クライアントからの委譲を受け、前記ユーザの認証及び/又は認可のリクエストを処理するサーバとを備えるサーバシステムの不正ユーザ検知方法であって、
前記サーバが、前記リクエストを受信するとともに、前記ユーザを代表する識別子を取得し、前記リクエストに対するレスポンスに格納するステップと、
前記クライアントが、前記ユーザから前記レスポンスを受信するとともに、前記ユーザを代表する識別子を取得し、該取得した識別子と前記レスポンスに格納された識別子とを比較して、前記レスポンスの送信元が正しいユーザであるか否かを判定する
判定ステップとを含
み、
前記判定ステップは、前記レスポンスを受信するとともに取得した識別子と前記レスポンスに格納された識別子とが一致する場合に前記レスポンスの送信元が正しいユーザであると判定し、前記レスポンスを受信するとともに取得した識別子と前記レスポンスに格納された識別子とが不一致である場合、前記レスポンスの受信時に識別子が取得できなかった場合、前記レスポンスに格納された識別子が取得できなかった場合に、前記レスポンスの送信元が不正なユーザであると判定する
ことを特徴とする不正ユーザ検知方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバシステム及び不正ユーザ検知方法に関する。
【背景技術】
【0002】
従来、認証や認可の技術として、OAuth 2.0(RFC6749)、OpenID Connect Core 1.0の認可コードフロー、SAMLのSP-initiatedなどが知られている。
また、複数の認可サーバが存在した際に、適切な認可サーバを選択する技術として、特開2020-53100号公報(特許文献1)に記載の技術がある。この公報には、「認可サーバーは、認可リクエストを受信したことに伴って、ユーザー情報が所在する第一の認可サーバーを特定し、第一の認可サーバーに対して認証要求を送信する第一の送信手段と、第一の認可サーバーはユーザーを認証し、ユーザー情報が所在する第一の認可サーバーを送信先として示す情報とともに認可レスポンスをクライアントに送信する第二の送信手段と、クライアントは認可レスポンスに基づいて、第二の特定手段により前記第一の認可サーバーを特定し、第一の認可サーバーに対して、リソースサーバーにアクセスするための認可トークンを要求するトークン要求を送信する第三の送信手段と、第一の認可サーバーはトークン要求に対して認可トークンを発行する発行手段と、を有する。」という記載がある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来の技術では、不正なユーザがクライアントに正規のユーザとしてログインする事態を防ぐことができなかった。OAuthを例に説明すると、認可サーバが認証し、認可(同意)を取得したユーザとは別のユーザ(不正なユーザ)がクライアントにログインできる問題が発生していた。このように、従来の技術では不正アクセスに対するセキュリティが不十分であった。
【0005】
そこで、本発明では、不正なユーザの検知を実現し、サーバシステムのセキュリティを向上することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、代表的な本発明のサーバシステムの一つは、ユーザからのアクセスを受け付けるクライアントと、前記クライアントからの委譲を受け、前記ユーザの認証及び/又は認可のリクエストを処理するサーバとを備え、前記サーバは、前記リクエストを受信するとともに、前記ユーザを代表する識別子を取得し、前記リクエストに対するレスポンスに格納し、前記クライアントは、前記ユーザから前記レスポンスを受信するとともに、前記ユーザを代表する識別子を取得し、該取得した識別子と前記レスポンスに格納された識別子とを比較して、前記レスポンスの送信元が正しいユーザであるか否かを判定することを特徴とする。
また、代表的な本発明の不正ユーザ検知方法の一つは、ユーザからのアクセスを受け付けるクライアントと、前記クライアントからの委譲を受け、前記ユーザの認証及び/又は認可のリクエストを処理するサーバとを備えるサーバシステムの不正ユーザ検知方法であって、前記サーバが、前記リクエストを受信するとともに、前記ユーザを代表する識別子を取得し、前記リクエストに対するレスポンスに格納するステップと、前記クライアントが、前記ユーザから前記レスポンスを受信するとともに、前記ユーザを代表する識別子を取得し、該取得した識別子と前記レスポンスに格納された識別子とを比較して、前記レスポンスの送信元が正しいユーザであるか否かを判定するステップとを含むことを特徴とする。
【発明の効果】
【0007】
本発明によれば、不正なユーザの検知を実現し、サーバシステムのセキュリティを向上できる。上記した以外の課題、構成及び効果は以下の実施の形態の説明により明らかにされる。
【図面の簡単な説明】
【0008】
【
図2】実施例1のシステムによる認証及び認可の処理の説明図
【
図7】クライアントの処理手順を示すフローチャート
【発明を実施するための形態】
【0009】
以下、実施例を図面を用いて説明する。
【実施例1】
【0010】
図1は、認証及び認可の基本的な処理の説明図である。この
図1は、OAuth 2.0やOIDC Core 1.0の認可コードフローの具体例である。
ユーザは、ユーザ端末のブラウザ110を介して、クライアント120にアクセスする。ここでは、クライアント120は、リソースサーバ140に格納されたデータの提供を求めているものとする。
【0011】
クライアント120は、ユーザの認証及び認可を認可サーバ130に委譲する(1)。具体的には、クライアント120は、認可サーバ130を宛先としてブラウザ110にリダイレクトさせる。この結果、ブラウザ110は、認可サーバ130に認可リクエストを送ることになる。
【0012】
認可リクエストを受信した認可サーバ130は、認証及び認可処理を実行する(2)。具体的には、認可サーバ130は、ログイン情報の入力を受け付ける画面(ログイン画面)、確認入力を受け付ける画面(同意画面)をブラウザ110に送信する。ブラウザ110は、ログイン画面及び同意画面を表示し、ユーザによる入力を受け付ける。ブラウザ110は受け付けたデータを認可サーバ130に送信する。認可サーバ130は、ブラウザ110から受信したデータを用いてユーザの認証と認可を行う。
【0013】
認可サーバ130は、認証及び認可の結果を認可レスポンスとしてクライアント120に返却する(3)。具体的には、認可サーバ130は、クライアント120を宛先としてブラウザ110にリダイレクトさせる。この結果、ブラウザ110は、クライアント120に認可レスポンスを送ることになる。
【0014】
クライアント120は、認可サーバ130にトークンリクエストを送信し、認可サーバ130からトークンレスポンスを受信する。その後、クライアント120は、リソースサーバ140にAPI(Application Programming Interface)リクエストを送信する。リソースサーバ140は、APIレスポンスでクライアント120にデータを提供する。
【0015】
図1に示した基本的な処理では、認証及び認可処理(2)でログインしたユーザと、結果返却処理(3)で結果を返したユーザとが同一であることを確認できない。そこで、本実施例のシステムでは、ユーザを代表する識別子を取得して、認証及び認可処理(2)と結果返却処理(3)のユーザが同一であるかを判定している。
【0016】
図2は、実施例1のシステムによる認証及び認可の処理の説明図である。
図2の認証及び認可処理(2)では、ブラウザ110は、ログイン画面と同意画面に対するユーザ入力データととともに、クライアント証明書を認可サーバ130に送信する。認可サーバ130は、認可レスポンスにクライアント証明書のハッシュ値を格納する。
【0017】
図2の結果返却処理(3)では、クライアント120は、認可レスポンスを受信するとともに、ブラウザ110からクライアント証明書のハッシュ値を取得する。クライアント120は、ブラウザ110から取得したクライアント証明書と、認可レスポンスに含まれていたクライアント証明書のハッシュ値とを比較する。比較の結果、同一であれば、クライアント120は正当なユーザからのアクセスであると判定し、リソースサーバ140のデータを提供する。
【0018】
このように、実施例1のシステムは、認証及び認可処理(2)と結果返却処理(3)でそれぞれクライアント証明書に関するデータを取得し、それらを比較する。クライアント証明書は、ユーザを代表する識別子の一例である。ユーザを代表する識別子は、クライアント証明書のように、ユーザクレデンシャルとして使用でき、かつフィッシング攻撃によって取得できないデータを用いる。例えばクライアント証明書であれば、フィッシング攻撃を受けて攻撃者の準備した偽サイトに誘導されたとしても、攻撃者はクライアントの秘密鍵までは奪うことができない。このため、攻撃者は、正規ユーザになりすましてクライアントや認可サーバにクライアント証明書を提示することはできない。ユーザを代表する識別子は、ICカードの識別番号であってもよい。
【0019】
図3は、不正なアクセスのブロックについての説明図である。不正なユーザである攻撃者は、攻撃者のユーザ端末のブラウザを介して、クライアント120にアクセスする。クライアント120は、ユーザの認証及び認可を認可サーバ130に委譲する。具体的には、クライアント120は、認可サーバ130を宛先として攻撃者のブラウザにリダイレクトさせる。攻撃者は、この時点で処理を止め、認可リクエストを取得する。そして、認可リクエストをハイパーリンクにセットした電子メールを正当なユーザに送る。正当なユーザが電子メールを開き、ハイパーリンクをクリックすると、ブラウザ110は認可リクエストを認可サーバ130に送る。
【0020】
認可リクエストを受信した認可サーバ130は、認証及び認可処理を実行する。具体的には、認可サーバ130は、ログイン情報の入力を受け付ける画面(ログイン画面)、確認入力を受け付ける画面(同意画面)をブラウザ110に送信する。ブラウザ110は、ログイン画面及び同意画面を表示し、正当なユーザによる入力を受け付ける。ブラウザ110は受け付けたデータを認可サーバ130に送信する。認可サーバ130は、ブラウザ110から受信したデータを用いてユーザの認証と認可を行う。すなわち、この認証と認可は、正当なユーザによって行われる。
【0021】
認可サーバ130は、認証及び認可の結果を認可レスポンスとしてクライアント120に返却する。具体的には、認可サーバ130は、クライアント120を宛先としてブラウザ110にリダイレクトさせる。この結果、ブラウザ110は、クライアント120に認可レスポンスを送る。ここで、不正なユーザである攻撃者が中間者(Man In the Middle)として介在して処理を止め、認可レスポンスを不正に取得する。
【0022】
攻撃者は、不正に取得した認可レスポンスをクライアント120に送信することで、不正なアクセスを試みる。
図1に示した基本的な処理であれば、クライアント120はユーザが入れ替わったことを検知できず、攻撃者によるアクセスが成功する。
しかし、
図3においては、認可サーバ130は、ブラウザ110から取得したクライアント証明書のハッシュ値を認可レスポンスにデータとして格納している。そして、クライアント120は、ブラウザが認可レスポンスを送るときにTCPレイヤでクライアント証明書を取得し、認可レスポンスにデータとして含まれたクライアント証明書のハッシュ値と、認可レスポンスを送るときにTCPレイヤで送られたクライアント証明書とを比較する。攻撃者が認可レスポンスを送信していれば、クライアント証明書が取得できない、もしくはクライアント証明書が不一致となる。このため、クライアント120は、不正なユーザからのアクセスであると判定し、アクセスをブロックできる。
【0023】
図4は、システム要素の説明図である。この
図4は、OAuth 2.0やOIDC Core 1.0を例とした説明図を示している。
ブラウザは、ユーザが使用するブラウザである。ユーザは、ブラウザを介してクライアントや認可サーバにアクセスする。
クライアントは、ユーザにサービスを提供する。クライアントは、認可サーバにユーザの認証を委譲する。また、クライアントは、認可サーバが発行したトークンを用いてユーザを認証する。場合によってはリソースサーバからユーザのリソース(情報)を取得するために、トークンを用いてAPIコールする。
認可サーバは、ユーザを認証し、必要に応じてユーザから同意を取得し、クライアントにトークンを発行する。
リソースサーバは、ユーザのリソース(情報)を保持している。当該情報をリソースサーバはAPIで公開する。また、リソースサーバは、認可サーバが発行したトークンを用いてアクセス制御する。なお、リソースサーバは、本システムに必須ではない。
【0024】
さらに、本実施例のシステムでは、認可サーバは、ユーザを代表する識別子を取得して、認可レスポンスに格納する機能を有する。また、クライアントは、ユーザを代表する識別子を取得し、認可レスポンスに格納された識別子と比較して、正当なユーザであるか否かを判定する機能を有する。
【0025】
図5は、システム全体の構成図である。
ブラウザ110は、ユーザの端末で動作している。
クライアント120は、CPU(Central Processing Unit)121、メモリ122、ストレージ123及び通信インタフェース124を有するコンピュータである。具体的には、CPU121は、ストレージ123から所定のプログラムを読み出してメモリ122に展開し、順次実行することで、クライアント120としての各種機能を実現する。また、通信インタフェース124は、ブラウザ110や認可サーバ130との通信を行う。
認可サーバ130は、CPU131、メモリ132、ストレージ133及び通信インタフェース134を有するコンピュータである。具体的には、CPU131は、ストレージ133から所定のプログラムを読み出してメモリ132に展開し、順次実行することで、認可サーバ130としての各種機能を実現する。また、通信インタフェース134は、ブラウザ110やクライアント120との通信を行う。
【0026】
図6は、認可サーバの処理手順を示すフローチャートである。認可サーバ130は、次のステップS201~S206の処理を順次実行する。
ステップS201:認可サーバ130は、ユーザ認証時、またはユーザの同意取得時に受け取ったリクエストからユーザを代表する識別子ID1を取得する。その後、ステップS202に進む。
ステップS202:認可サーバ130は、ユーザを代表する識別子ID1を取得できたか否かを判定する。取得できたならば、ステップS203に進む。取得できなかったならば、ステップS206に進む。
【0027】
ステップS203:認可サーバ130は、認可レスポンスにユーザを代表する識別子ID1を格納する。その後、ステップS204に進む。
ステップS204:認可サーバ130は、認可レスポンスに署名する。その後、ステップS205に進む。
ステップS205:認可サーバ130は、認可レスポンスをリダイレクトでクライアント120に送信し、処理を終了する。
ステップS206:認可サーバ130は、エラーレスポンスをリダイレクトでクライアント120に送信し、処理を終了する。
【0028】
図7は、クライアント120の処理手順を示すフローチャートである。クライアント120は、次のステップS301~S308の処理を順次実行する。
ステップS301:クライアント120は、認可レスポンス受信時に受け取ったリクエストからユーザを代表する識別子ID2を取得する。その後、ステップS302に進む。
ステップS302:クライアント120は、ユーザを代表する識別子ID2を取得できたか否かを判定する。取得できたならば、ステップS303に進む。取得できなかったならば、ステップS308に進む。
【0029】
ステップS303:クライアント120は、認可レスポンスに格納されたユーザを代表する識別子ID1を取得する。
ステップS304:クライアント120は、ユーザを代表する識別子ID1を取得できたか否かを判定する。取得できたならば、ステップS305に進む。取得できなかったならば、ステップS308に進む。
【0030】
ステップS305:クライアント120は、識別子ID1と識別子ID2を比較し、等しいことを確認する処理を行う。その後、ステップS306に進む。
ステップS306:クライアント120は、クライアント120は、識別子ID1と識別子ID2が等しいか否かを判定する。等しければ、ステップS307に進む。取得できなかったならば、ステップS308に進む。
【0031】
ステップS307:クライアント120は、ユーザを代表する識別子チェック成功とみなし、処理を終了する。言い換えれば、クライアント120は、認可レスポンスの送信元が正しいユーザであると判定して、処理を終了する。
ステップS308:クライアント120は、ユーザを代表する識別子チェック失敗とみなし、処理を終了する。言い換えれば、クライアント120は、認可レスポンスの送信元が不正なユーザであると判定して、処理を終了する。
【0032】
図8は、システムが管理するデータの説明図である。
クライアント120は、次のデータを管理する。
1.クライアントが認可サーバに認証認可を委譲する際にアクセスする認可サーバのエンドポイント
2.クライアントを識別するための識別子
3.認証認可結果の署名を検証するための署名検証鍵
【0033】
認可サーバ130は、次のデータを管理する。
10.認可サーバがクライアントに認証認可の結果を送付する際にアクセスするクライアントのエンドポイント
11.クライアントを識別するための識別子
12.ユーザのユーザクレデンシャル
13.認証認可結果に署名するための署名鍵
14.ログイン画面
15.同意画面
【0034】
ユーザまたはブラウザ110は、次のデータを管理する。
20.認可サーバで認証するためのユーザクレデンシャル(例:ユーザ名とパスワード)
21.ユーザを代表する識別子
22.クライアントへアクセスするためのエンドポイント
【0035】
図9は、
図8に示したデータの利用の説明図である。
ブラウザ110は、エンドポイント22を宛先とすることで、クライアント120にアクセスする。
クライアント120は、識別子2を付与し、エンドポイント1を宛先とすることで、認可サーバ130にリダイレクトする。
認可サーバ130は、識別子2と識別子11でクライアントを識別して、ログイン画面14や同意画面15をブラウザ110に送付する。
ユーザは、ユーザクレデンシャル20を入力し、ブラウザ110はユーザクレデンシャル20と識別子21を認可サーバ130に送付する。
【0036】
認可サーバ130は、ユーザクレデンシャル20とユーザクレデンシャル12でユーザを認証する。そして、識別子21を認証認可結果(認可レスポンス)に格納し、署名鍵13で認証認可結果に署名して、エンドポイント10(クライアント120)にリダイレクトする。
ブラウザ110は、認証認可結果をクライアント120にリダイレクトする際に、識別子21を送付する。
クライアント120は、署名検証鍵3で認証認可結果の署名を検証する。そして、送付された識別子21と認証認可結果内の識別子21が同一であることを検証する。
【0037】
図10は、データの管理の説明図である。
ユーザを代表する識別子21は、ブラウザ110に管理される。
認証認可の結果を送付する際にアクセスするクライアントのエンドポイント1、クライアントを識別するための識別子2、署名検証鍵3は、クライアント120のメモリ122に格納される。
認証認可の結果を送付する際にアクセスするクライアントのエンドポイント10、クライアントを識別するための識別子11、ユーザクレデンシャル12、署名鍵13、ログイン画面14、同意画面15は、認可サーバ130のメモリ132に格納される。
【0038】
上述してきたように、開示のサーバシステムは、ユーザからのアクセスを受け付けるクライアント120と、前記クライアント120からの委譲を受け、前記ユーザの認証及び/又は認可のリクエストを処理するサーバとしての認可サーバ130とを備え、前記サーバは、前記リクエストを受信するとともに、前記ユーザを代表する識別子を取得し、前記リクエストに対するレスポンスに格納し、前記クライアント120は、前記ユーザから前記レスポンスを受信するとともに、前記ユーザを代表する識別子を取得し、該取得した識別子と前記レスポンスに格納された識別子とを比較して、前記レスポンスの送信元が正しいユーザのブラウザであるか否かを判定する。
このため、不正なユーザを検知し、サーバシステムのセキュリティを向上できる。
【0039】
また、前記サーバは、前記ユーザの認証及び認可を行い、前記クライアントは、前記比較の結果が不一致である場合に、レスポンスの送信元からのアクセスを拒否する。
このため、不正なユーザが、正当なユーザによる認証及び認可の結果を悪用して行うアクセスをブロックできる。
【0040】
前記ユーザを代表する識別子には、クライアント証明書を用いることができる。
また、前記ユーザを代表する識別子には、ユーザの端末が所定の媒体から読み取った識別情報を用いることができる。
ユーザを代表する識別子は、クライアント証明書のように、ユーザクレデンシャルとして使用でき、かつフィッシング攻撃によって取得できないデータを用いる。例えばクライアント証明書であれば、フィッシング攻撃を受けて攻撃者の準備した偽サイトに誘導されたとしても、攻撃者はクライアントの秘密鍵までは奪うことができない。このため、攻撃者は、正規ユーザになりすましてクライアントや認可サーバにクライアント証明書を提示することはできない。
【0041】
また、前記サーバは、前記ユーザを代表する識別子を格納したレスポンスに電子署名し、前記クライアントは、前記電子署名を検証した上で前記比較を行う。
このため、レスポンスに格納された識別子が書き換えられていないことを確認でき、セキュリティが向上する。
【0042】
また、開示の前記ユーザに提供するリソースデータを保持するリソースサーバ140をさらに備え、前記サーバは、前記リソースデータに対するアクセスの認可を行う。
このためリソースデータに対する不正なアクセスを防止できる。
【0043】
なお、本発明は上記の実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、かかる構成の削除に限らず、構成の置き換えや追加も可能である。
例えば、認証や認可の委譲が多段階で行われる構成であっても、本発明は適用可能である。
【符号の説明】
【0044】
110:ブラウザ、120:クライアント、130:認可サーバ、140:リソースサーバ