IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

特開2024-1968認証装置、認証方法及び認証プログラム
<>
  • 特開-認証装置、認証方法及び認証プログラム 図1
  • 特開-認証装置、認証方法及び認証プログラム 図2
  • 特開-認証装置、認証方法及び認証プログラム 図3
  • 特開-認証装置、認証方法及び認証プログラム 図4
  • 特開-認証装置、認証方法及び認証プログラム 図5
  • 特開-認証装置、認証方法及び認証プログラム 図6
  • 特開-認証装置、認証方法及び認証プログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024001968
(43)【公開日】2024-01-11
(54)【発明の名称】認証装置、認証方法及び認証プログラム
(51)【国際特許分類】
   H04L 9/32 20060101AFI20231228BHJP
   G06F 21/44 20130101ALI20231228BHJP
【FI】
H04L9/32 200A
H04L9/32 200F
G06F21/44
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022100860
(22)【出願日】2022-06-23
(71)【出願人】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(72)【発明者】
【氏名】田淵 純一
(57)【要約】
【課題】端末情報を安全に取得し認証強度を向上できる認証装置を提供すること。
【解決手段】サーバ10は、期待データの複数の要素それぞれを端末20から取得するためのプログラム列、疑似乱数列及びシード値の暗号文を含み、暗号文、並びにプログラム列の出力及び疑似乱数列の組を入力とした複数のハッシュ値を出力するためのワンタイムプログラムを生成するプログラム生成部111と、端末20から受信した生成データを、暗号文及び複数のハッシュ値に分割する生成データ分割部114と、暗号文を復号して得られるシード値を用いて疑似乱数列を生成し、生成した疑似乱数列及び条件データの組を入力とした検証用の複数のハッシュ値を出力する検証データ生成部115と、生成データを分割した複数のハッシュ値を、検証用の複数のハッシュ値と照合し、所定の条件に合致している場合にのみ、端末20からのアクセスを正常と判定する判定部116と、を備える。
【選択図】図2
【特許請求の範囲】
【請求項1】
端末の挙動に関する期待データを構成する複数の要素それぞれを当該端末から取得するためのプログラム列、疑似乱数列、及び当該疑似乱数列を生成するためのシード値の暗号文を含み、前記暗号文、並びに前記プログラム列の要素毎の出力及び前記疑似乱数列の要素の組を入力とした複数のハッシュ値を出力するためのワンタイムプログラムを生成するプログラム生成部と、
前記端末からのアクセスに応じて、前記ワンタイムプログラムを前記端末へ送信するプログラム送信部と、
前記ワンタイムプログラムにより出力されたデータを結合した生成データを、前記端末から受信する生成データ受信部と、
前記生成データを、前記暗号文及び前記複数のハッシュ値に分割する生成データ分割部と、
前記暗号文を復号して得られる前記シード値を用いて疑似乱数列を生成し、当該生成した疑似乱数列の要素、及び前記期待データに対応する条件データを構成する複数の要素の組を入力とした検証用の複数のハッシュ値を出力する検証データ生成部と、
前記生成データ分割部により分割された複数のハッシュ値を、前記検証用の複数のハッシュ値と照合し、所定の条件に合致している場合にのみ、前記アクセスを正常と判定する判定部と、を備える認証装置。
【請求項2】
前記期待データは、前記端末で表示中のウェブサイトに関するウェブサイトフィンガープリント情報である請求項1に記載の認証装置。
【請求項3】
前記判定部は、前記生成データ分割部により分割された複数のハッシュ値のそれぞれが、対応する前記検証用の複数のハッシュ値と一致又は不一致の条件に全て合致している場合にのみ、前記アクセスを正常と判定する請求項1に記載の認証装置。
【請求項4】
前記プログラム生成部は、前記期待データを構成する複数の要素の並び順をランダムに決定し、当該並び順を特定可能なフォーマット指定データを、前記シード値と共に暗号化して前記暗号文とする請求項3に記載の認証装置。
【請求項5】
前記プログラム生成部は、前記ワンタイムプログラムを難読化して生成する請求項1から請求項4のいずれかに記載の認証装置。
【請求項6】
端末の挙動に関する期待データを構成する複数の要素それぞれを当該端末から取得するためのプログラム列、疑似乱数列、及び当該疑似乱数列を生成するためのシード値の暗号文を含み、前記暗号文、並びに前記プログラム列の要素毎の出力及び前記疑似乱数列の要素の組を入力とした複数のハッシュ値を出力するためのワンタイムプログラムを生成するプログラム生成ステップと、
前記端末からのアクセスに応じて、前記ワンタイムプログラムを前記端末へ送信するプログラム送信ステップと、
前記ワンタイムプログラムにより出力されたデータを結合した生成データを、前記端末から受信する生成データ受信ステップと、
前記生成データを、前記暗号文及び前記複数のハッシュ値に分割する生成データ分割ステップと、
前記暗号文を復号して得られる前記シード値を用いて疑似乱数列を生成し、当該生成した疑似乱数列の要素、及び前記期待データに対応する条件データを構成する複数の要素の組を入力とした検証用の複数のハッシュ値を出力する検証データ生成ステップと、
前記生成データ分割ステップにおいて分割された複数のハッシュ値を、前記検証用の複数のハッシュ値と照合し、所定の条件に合致している場合にのみ、前記アクセスを正常と判定する判定ステップと、をコンピュータが実行する認証方法。
【請求項7】
請求項1から請求項4のいずれかに記載の認証装置としてコンピュータを機能させるための認証プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ハッシュを用いてデータ検証を行う認証システムに関する。
【背景技術】
【0002】
従来、2者間で情報を安全に送受信するために、チェックサム、又はデータ全体のハッシュを取り、これらの値を検証する認証システムが運用されている。
例えば、JWT(非特許文献1参照)は、ユーザ情報等のクレームを安全に送受信するための方式であり、送信側がエンコードされたヘッダ及びペイロードを連結した全体のハッシュ値を署名として付与し、受信側でその正当性を検証する。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】M. Jones et al., "JSON Web Token (JWT)," Internet Engineering Task Force (IETF), Request for Comments: 7519, May 2015, <https://datatracker.ietf.org/doc/html/rfc7519>
【発明の概要】
【発明が解決しようとする課題】
【0004】
フィッシング対策等を行う際に、通信相手となる計算機Aが、サーバVが意図したプログラムBを利用していることを検証するために、このプログラムBが生成するデータXを計算機AからサーバVへ送信させ、サーバVがその値を検証し、正しい値を送信してきたか否かをチェックすることがある。この検証により、通信相手がプログラムBを実行していれば、プログラムBにおける他の動作、例えば、計算機Aが不正な挙動をしていないことをチェックする等といった機能も動作していることを推定することができる。
【0005】
このとき、計算機AがプログラムBを利用せず、プログラムBを模倣又は改変したプログラムCを用いた場合に、データXの生成が困難であるようにする必要があるが、従来のチェックサム又はデータ全体のハッシュを取るといった手法では、チェック用の関数が明らかになると容易にデータXを生成できてしまうという課題があった。
【0006】
本発明は、端末情報を安全に取得し認証強度を向上できる認証装置、認証方法及び認証プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る認証装置は、端末の挙動に関する期待データを構成する複数の要素それぞれを当該端末から取得するためのプログラム列、疑似乱数列、及び当該疑似乱数列を生成するためのシード値の暗号文を含み、前記暗号文、並びに前記プログラム列の要素毎の出力及び前記疑似乱数列の要素の組を入力とした複数のハッシュ値を出力するためのワンタイムプログラムを生成するプログラム生成部と、前記端末からのアクセスに応じて、前記ワンタイムプログラムを前記端末へ送信するプログラム送信部と、前記ワンタイムプログラムにより出力されたデータを結合した生成データを、前記端末から受信する生成データ受信部と、前記生成データを、前記暗号文及び前記複数のハッシュ値に分割する生成データ分割部と、前記暗号文を復号して得られる前記シード値を用いて疑似乱数列を生成し、当該生成した疑似乱数列の要素、及び前記期待データに対応する条件データを構成する複数の要素の組を入力とした検証用の複数のハッシュ値を出力する検証データ生成部と、前記生成データ分割部により分割された複数のハッシュ値を、前記検証用の複数のハッシュ値と照合し、所定の条件に合致している場合にのみ、前記アクセスを正常と判定する判定部と、を備える。
【0008】
前記期待データは、前記端末で表示中のウェブサイトに関するウェブサイトフィンガープリント情報であってもよい。
【0009】
前記判定部は、前記生成データ分割部により分割された複数のハッシュ値のそれぞれが、対応する前記検証用の複数のハッシュ値と一致又は不一致の条件に全て合致している場合にのみ、前記アクセスを正常と判定してもよい。
【0010】
前記プログラム生成部は、前記期待データを構成する複数の要素の並び順をランダムに決定し、当該並び順を特定可能なフォーマット指定データを、前記シード値と共に暗号化して前記暗号文としてもよい。
【0011】
前記プログラム生成部は、前記ワンタイムプログラムを難読化して生成してもよい。
【0012】
本発明に係る認証方法は、端末の挙動に関する期待データを構成する複数の要素それぞれを当該端末から取得するためのプログラム列、疑似乱数列、及び当該疑似乱数列を生成するためのシード値の暗号文を含み、前記暗号文、並びに前記プログラム列の要素毎の出力及び前記疑似乱数列の要素の組を入力とした複数のハッシュ値を出力するためのワンタイムプログラムを生成するプログラム生成ステップと、前記端末からのアクセスに応じて、前記ワンタイムプログラムを前記端末へ送信するプログラム送信ステップと、前記ワンタイムプログラムにより出力されたデータを結合した生成データを、前記端末から受信する生成データ受信ステップと、前記生成データを、前記暗号文及び前記複数のハッシュ値に分割する生成データ分割ステップと、前記暗号文を復号して得られる前記シード値を用いて疑似乱数列を生成し、当該生成した疑似乱数列の要素、及び前記期待データに対応する条件データを構成する複数の要素の組を入力とした検証用の複数のハッシュ値を出力する検証データ生成ステップと、前記生成データ分割ステップにおいて分割された複数のハッシュ値を、前記検証用の複数のハッシュ値と照合し、所定の条件に合致している場合にのみ、前記アクセスを正常と判定する判定ステップと、をコンピュータが実行する。
【0013】
本発明に係る認証プログラムは、前記認証装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0014】
本発明によれば、端末情報を安全に取得し認証強度を向上できる。
【図面の簡単な説明】
【0015】
図1】実施形態の連鎖型ハッシュ認証システムにおける通信フローを示す図である。
図2】実施形態におけるサーバの機能構成を示す図である。
図3】実施形態における検証用のデータXの構造を示す図である。
図4】実施形態における検証用のデータXの生成のためにサーバから端末へ送信されるデータKの構造を示す図である。
図5】実施形態におけるサーバにおける検証の手順を示す図である。
図6】従来の一般的な電子署名による認証手法を示す図である。
図7】複雑な構造で定義されたデータによる従来の認証手法を示す図である。
【発明を実施するための形態】
【0016】
以下、本発明の実施形態の一例について説明する。
本実施形態では、通信対象の計算機が特定のプログラムを実行したことをサーバが推定可能とするために、後述の計算手順により生成した検証用のデータを利用する。
【0017】
図1は、本実施形態の連鎖型ハッシュ認証システム1における通信フローを示す図である。
連鎖型ハッシュ認証システム1は、サーバ10と端末20とを備える。
【0018】
サーバ10は、端末20に対してデータXの生成と送信を要求し、Xの生成に必要となるデータK(後述のワンタイムプログラム)を送信する(ステップS1)。
端末20は、受信したデータKを用いてデータX(後述の生成データ)を生成し、サーバ10に返却する(ステップS2)。
【0019】
図2は、本実施形態におけるサーバ10の機能構成を示す図である。
サーバ10は、制御部11及び記憶部12の他、各種の入出力インタフェース等を備えた情報処理装置(コンピュータ)である。
【0020】
制御部11は、サーバ10の全体を制御する部分であり、記憶部12に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部11は、CPUであってよい。
具体的には、制御部11は、プログラム生成部111と、プログラム送信部112と、生成データ受信部113と、生成データ分割部114と、検証データ生成部115と、判定部116とを備える。
【0021】
記憶部12は、ハードウェア群をサーバ10として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスクドライブ(HDD)等であってよい。
【0022】
プログラム生成部111は、端末20においてデータX(生成データ)を構成する情報を出力するためのデータKを生成する。このデータKは、端末20の挙動に関する期待データを構成する複数の要素それぞれを端末20から取得するためのプログラム列、疑似乱数列、及びこの疑似乱数列を生成するためのシード値の暗号文を含み、この暗号文と、プログラム列の要素毎の出力及び疑似乱数列の要素の組を入力とした複数のハッシュ値を出力するためのワンタイムプログラムである。
【0023】
ここで、期待データは、端末20の挙動が正常である場合に期待されるデータ列であり、端末20で表示中のウェブサイトに関するウェブサイトフィンガープリント情報であってよい。
【0024】
なお、ウェブサイトフィンガープリント情報の複数の要素には、例えば、次のものが用いられる。
・アクセス先のURL
・アクセス先のURLのパス
・アクセス時の通信プロトコル
・ブラウザのユーザエージェント
・ブラウザの提供する特定スクリプト向け機能の有無
・ウェブサイトを構成するHTMLのDOM情報
・ウェブサイトフィンガープリント情報の生成直前までのユーザ操作履歴
・ユーザ操作時におけるHTMLのDOMイベントの発生状況
【0025】
また、プログラム生成部111は、期待データを構成する複数の要素の並び順をランダムに決定し、この並び順を特定可能なフォーマット指定データを、疑似乱数列のシード値と共に暗号化して暗号文としてもよい。
さらに、プログラム生成部111は、ワンタイムプログラムを難読化して生成してもよい。
【0026】
プログラム送信部112は、端末20からのアクセスに応じて、プログラム生成部111により生成されたワンタイムプログラムを、アクセス元の端末20へ送信する。
【0027】
生成データ受信部113は、ワンタイムプログラムにより出力されたデータを結合したデータX(生成データ)を、端末20から受信する。
【0028】
生成データ分割部114は、端末20から受信したデータX(生成データ)を、構成要素である暗号文及び複数のハッシュ値に分割する。
【0029】
検証データ生成部115は、暗号文を復号して得られるシード値を用いて疑似乱数列を生成し、生成した疑似乱数列の要素、及び期待データに対応する条件データを構成する複数の要素の組を入力とした検証用の複数のハッシュ値を出力する。
【0030】
ここで、条件データは、端末20で得られた複数の要素それぞれが期待されたデータとなっていることを検証するためのデータであり、要素毎に照合した際に一致していること、又は一致していないことを条件とする値から構成される。
【0031】
判定部116は、生成データ分割部114により分割された複数のハッシュ値を、検証用の複数のハッシュ値と照合し、所定の条件に合致している場合にのみ、端末20からのアクセスを正常と判定する。
例えば、期待データそのものが条件データとなる場合、全ての要素が条件データと一致していることを条件に端末20が認証される。あるいは、例えば、マウスの位置が(0,0)でないこと(条件データと一致しないこと)を条件とする等、判定部116は、要素毎の一致又は不一致の条件に全て合致している場合にのみ、端末20からのアクセスを正常と判定する。
【0032】
図3は、本実施形態における検証用のデータXの構造を示す図である。
データX(生成データ)は、サーバ10が期待するデータを分割したデータ1,データ2,データ3,…を、それぞれ擬似乱数列と共にハッシュ演算した結果D1H,D2H,D3H,…と、擬似乱数列を生成するためのシード値を秘密鍵DKeyにより暗号化したデータD0とを結合したデータである。
【0033】
図4は、本実施形態における検証用のデータXの生成のためにサーバ10から端末20へ送信されるデータK(ワンタイムプログラム)の構造を示す図である。
【0034】
サーバ10は、データKとして、D0、擬似乱数列、及びプログラム列を含む、生成データを作るためのワンタイムプログラムを端末20に送信する。
ここで、プログラム1~Nは、サーバ10が期待するデータを分割したデータ1~Nを、端末20において取得するためのプログラムである。
【0035】
ここで、データ1~Nの並び順は、ランダムに決定されてよく、この並び順を特定可能な情報を含むフォーマット指定データは、例えば、疑似乱数列のシード値と共に暗号化され、暗号化データD0に含まれてもよい。
【0036】
図5は、本実施形態におけるサーバ10における検証の手順を示す図である。
サーバ10は、端末20から送られてきたデータX(生成データ)を分割し、暗号文を復号してシード値を取りだすと、ワンタイムプログラムと共通の疑似乱数列を生成する。これにより、サーバ10は、条件データを分割したデータ列と、生成した疑似乱数列とから、複数のハッシュ値を生成し、データXを分割して取り出した複数のハッシュ値とそれぞれ照合することにより、データXの正当性を検証する。
【0037】
なお、期待データの並び順がランダムに決定された場合、サーバ10は、前述の暗号化データD0に含まれるフォーマット指定データを取得することにより、条件データを構成する要素の並び順を決定できる。
【0038】
以上のように、本実施形態によれば、サーバ10は、プログラムにより取得した複数の端末情報(期待データ)を、それぞれ乱数と共にハッシュ演算し、乱数のシード値の暗号文と共に出力するためのワンタイムプログラムを端末20に提供する。サーバ10は、ワンタイムプログラムによる出力を結合した生成データを受信すると、条件データの要素それぞれをシード値に基づく同一の乱数と共にハッシュ演算した結果と照合することにより、所定の条件に合致している場合に端末20からのアクセスを認証する。
したがって、攻撃者は、単純なプログラムの再利用では生成データを偽装するプログラムを作成できない。これにより、難読化又はメモリ保護等の従来のセキュリティ対策が有効になる。また、ハッシュ演算の入力となる期待データ列がプログラムにより取得されることで、メモリ上や関数の出入力として露出しなくなるため、攻撃者に期待データ列が露見しにくい。
【0039】
この結果、サーバ10は、ウェブサイトフィンガープリント情報等の端末20の情報を安全に取得し認証強度を向上できる。
さらに、サーバ10は、期待データを構成する複数の要素の並び順をランダムに決定し、並び順を特定可能なフォーマット指定データを、シード値と共に暗号化して生成データに格納させる。これにより、サーバ10は、期待データのフォーマットを都度変更し、フィッシングをより困難にできる。
【0040】
なお、例えば、図6に示すハッシュ関数を用いた一般的な電子署名による認証手法では、端末は、生成データをサーバで検証可能なように、データDにハッシュ値DHを結合する。ここで、破線枠部は、一種の関数をみなすことができる。これは、実際に端末上で実行されるプログラムにおいて関数として定義されている場合も多いが、そうでない場合でも、端末上には、期待データの入力に対して生成データを出力するプログラムの塊として存在する。したがって、攻撃者は、この破線枠部のプログラムを再利用することで、任意の期待データに対する生成データを得ることが可能であった。
【0041】
また、例えば、図7に示すように複雑な構造で定義された生成データによる認証手法であっても、図6と同様に、期待データから生成データを生成するためのプログラムが破線枠部の塊として存在する。
このように、従来の手法では、どのような計算手順を辿った場合でも、期待データを入力すると生成データを出力するまとまったプログラム部分ができてしまう。このため、たとえ、難読化又はメモリ保護等のセキュリティ対策が取られていても、この部分が攻撃者に再利用されることで、生成データの構造を知らない攻撃者であっても、プログラムBを模倣又は改変したプログラムCを作ることが容易になっていた。
【0042】
これに対して、本実施形態では、サーバ10において部分評価による事前計算を可能とし、かつ、期待データの入力自体もプログラムが行うことで、このプログラムが解析されなければ攻撃者が所望の生成データを作ることができない。この結果、さらに、難読化等のプログラム保護手段を利用することで、データ保護の強度が向上する。
【0043】
また、認証時には、従来手法ではデータ全体が一致しているか否かを判定するのみであったが、本実施形態では、サーバ10は、一致していない箇所を具体的に検出可能である。この結果、例えば、ユーザがログインできない原因を特定することができる。
さらに、サーバ10は、要素毎に条件データと一致していること、又は一致していないことを認証の条件にすることが可能である。この結果、検証のバリエーション、組み合わせを増やすことができ、安全性の向上が期待できる。
【0044】
なお、本実施形態によれば、例えばユーザ認証に関わる送信データの強度を高め、フィッシングを受けにくいサイト構築が可能となることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進すると共に、イノベーションの拡大を図る」に貢献することが可能となる。
【0045】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0046】
サーバ10(認証装置)による認証方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0047】
1 連鎖型ハッシュ認証システム
10 サーバ
11 制御部
12 記憶部
20 端末
111 プログラム生成部
112 プログラム送信部
113 生成データ受信部
114 生成データ分割部
115 検証データ生成部
116 判定部
図1
図2
図3
図4
図5
図6
図7