(57)【要約】【課題】中間者攻撃が存在したとしても、中間者攻撃に耐性を有し、より安全に通信を行う技術を提供する。【解決手段】本発明の一実施形態として、端末からの要求の受信を契機として、当該要求に基づき次に表示する画面情報および自動生成された次に表示する１又は複数の画面情報とを併せて当該端末に対し送信する送信部を備える情報処理装置を提供する。情報処理装置は、前記自動生成された次に表示する１又は複数の画面情報に基づき、前記端末の表示部において非表示とする制御情報を含んでもよい。【選択図】図１
2018093546.tif 000002
【特許請求の範囲】
【請求項１】
端末からの要求の受信を契機として、当該要求に基づき次に表示する画面情報および自動生成された次に表示する１又は複数の画面情報とを併せて当該端末に対し送信する送信部を備える情報処理装置。
【請求項２】
前記自動生成された次に表示する１又は複数の画面情報に基づき、前記端末の表示部において非表示とする制御情報を含む、請求項１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中間者攻撃などに対して耐性を有する通信システムを構成するサーバおよび端末などに関する。
【背景技術】
【０００２】
インターネットなどの通信技術が発達し、実際に遠隔地に赴かなくてもサービスの提供を受けられるようになってきた。例えば、インターネットバンキングが利用可能となり、預金者などは実際に銀行の支店に赴かなくても、残高照会、振込、振替、各種サービスの申し込みがインターネットバンキングを用いて自宅などから行えるようになってきた。
【０００３】
一方、インターネットなどによる通信に関与し、不正を行う手法も発達してきている。例えば、Ｍａｎ  ｉｎ  ｔｈｅ  Ｂｒｏｗｓｅｒ攻撃やＭａｎ  ｉｎ  ｔｈｅ  Ｍｉｄｄｌｅ攻撃などの中間者攻撃が知られている。中間者攻撃は、通信の途中に割り込み、通信に関するデータを改ざんしてサーバや端末に転送する手法である。例えば、利用者がインターネットバンキングを利用している場合、利用者が振込先として指定した口座番号などを改ざんし、不正な振込先に書き換えてインターネットバンキングのサーバに転送する。
【０００４】
このような中間者攻撃の存在を検出する技術として、例えば特許文献１が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７７２１３３３号明細書
【特許文献２】米国特許第８３７０８９９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１のように中間者攻撃の存在が検出できたとしても、安全な通信を行うことができない。そこで、本願発明は、中間者攻撃が存在したとしても、より安全に通信を行う技術を提供する。
【課題を解決するための手段】
【０００７】
本発明の一実施形態として、データ受信部とデータ選択部とを有するサーバ装置が提供される。前記データ受信部は、端末装置から送信され、前記端末装置の利用者により入力された真正なデータおよび前記端末装置によって生成された偽のデータを受信する。前記データ選択部は、前記データ受信部により受信された真正なデータおよび偽のデータから、真正なデータを選択する。
【０００８】
本発明の一実施形態として、データ受付部と、データ付加部と、データ送信部とを有する端末装置が提供される。前記データ受付部は、端末装置により入力されたデータを受け付ける。前記データ付加部は、前記データ受付部により受け付けられた真正なデータに、前記端末装置により生成された偽のデータを付加する。前記データ送信部は、前記データ受付部により受け付けられたデータと前記データ付加部によりデータ付加部により付加された偽のデータを送信する。
【発明の効果】
【０００９】
本願発明によれば、中間者攻撃が存在したとしても、より安全に通信を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態に係る通信システムの機能ブロック図である。
【図２】本発明の一実施形態に係る通信システムの端末における画面遷移の一例図である。
【図３】本発明の一実施形態に係る通信システムにより送受信されるデータの一例図である。
【図４】本発明の一実施形態に係る通信システムの処理のシーケンス図である。
【図５】本発明の一実施形態に係る通信システムの端末の処理のフローチャートである。
【図６】本発明の一実施形態に係る通信システムのサーバの処理のフローチャートである。
【図７】本発明の一実施形態に係る通信システムの機能ブロック図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について、いくつかの実施形態として説明する。なお、本発明はこれらの実施形態を種々に変形して実施することが可能である。したがって、本発明は、これらの実施形態に限定して解釈されることはない。
【００１２】
（実施形態１）
図１は、本発明の実施形態１に係る通信システムの機能ブロック図である。通信システム１００は、端末１０１とサーバ１０２とを備え、端末１０１とサーバ１０２とは、インターネットなどの通信網１０を介して通信を行うことができる。なお、図１においては、端末１０１として端末が１台のみ示されているが、任意の台数の端末がサーバ１０２と通信網１０などを介して通信を行うことができるようになっていてもよい。また、図１においては、サーバ１０２としてサーバが１台のみ示されているが、サーバ１０２の機能を複数台のサーバにより分担するなどして任意の台数のサーバによって実現する構成であってもよい。
【００１３】
端末１０１は、フィールドデータ受付部１０４と、偽フィールドデータ追加部１０５と、フィールドデータ送信部１０６とを含むブラウザ部１０３を有する。一般的には、端末１０１はパーソナルコンピュータ、スマートフォーンなどの通信機器であり、端末１０１の利用者はブラウザを端末１０１で動作させて、サーバ１０２と通信を行うので、端末１０１で動作するブラウザを、ブラウザ部１０３としている。ただし、ブラウザ部１０３は、ブラウザに限定されることはなく、サーバ１０２と通信を行うための専用プログラムであってもよい。
【００１４】
フィールドデータ受付部１０４は、フィールドに入力されたデータを受け付ける。ここにフィールドとは、情報を入力するためにブラウザなどによりディスプレイに表示される入力エリアである。例えば、文字列情報を入力するためのテキストエリア、選択を入力するためのラジオボタンなどが入力エリアの例である。
【００１５】
より具体的には、フィールドデータ受付部１０４は、例えばテキストエリアに文字列として入力された振込金額を受け付ける。また、別の例として、普通預金口座または当座預金口座を指定するためのラジオボタンなどによる選択を受け付ける。
【００１６】
また、フィールドデータ受付部１０４は、ディスプレイに表示されているリンクに対するマウスなどによる選択が行われたかどうかを受け付けることもできるとしてもよい。また、ボタンをフィールドとみなし、ボタンが押下されたこと、あるいは、ボタンの上にマ
ウスカーソルが位置したことをボタンというフィールドに対する入力としてもよい。
【００１７】
なお、入力エリアやリンクなどのフィールドは、ディプレイに表示される画面内に表示することができる。この場合、画面は、ブラウザや専用プログラムに対応する画面である。
【００１８】
フィールドデータ受付部１０４は、例えば、ブラウザ画面のＳｕｂｍｉｔボタンが押下などされたときに、フィールドに入力されたデータを受け付けることができる。また、スクリプトなどにより、マウスカーソルがフィールド上に位置したときやフィールド上にマウスカーソルが移動してクリックがされたことなどを示すイベントが発生すると、そのイベントに対応するイベント処理関数によりフィールドデータ受付部１０４が動作し、フィールドに入力されたデータを受け付けることができるようになっていてもよい。
【００１９】
フィールドデータ受付部１０４が動作するかどうかの制御は、例えば例えばサーバ１０２の送信部から送信されるＨＴＭＬなどにより記述がされた画面情報に埋め込まれたスクリプトなどによって可能になっていてもよい。また、画面情報から参照している他のソースから、そのようなスクリプトが端末１０１によって読み込まれて動作するようになっていてもよい。
【００２０】
偽フィールドデータ追加部１０５は、偽のデータを生成して、フィールドデータ受付部１０４が受け付けたデータに追加する。偽のデータは、端末１０１の利用者が入力および送信を意図しないデータである。言い換えると利用者の意図とは無関係に生成されるデータである。例えばサーバ１０２の送信部から送信されたプログラムを端末１０１において実行することにより生成することができる。あるいは、端末１０１で乱数を発生させるなどして生成することができる。このようなプログラムとして上述のスクリプトを挙げることもできる。
【００２１】
なお、フィールドデータ受付部１０４が受け付けたデータを真正データとして表記すると、真正データが文字列として表現される場合には、偽のデータも文字列として表現されるのが好ましい。また、この場合、偽のデータの文字列の各文字は、真正データの各文字と同じ属性を有しているのが好ましい。例えば、文字列を構成する文字は、数字、英文字、仮名文字などの属性を有する文字に分類することができる。したがって、真正データに数字が含まれれば、偽のデータにも数字が含まれるようにし、真正データに英文字が含まれれば、偽のデータにも英文字が含まれるようにし、真正データに仮名文字が含まれれば、偽のデータにも仮名文字が含まれるようにしてもよい。これにより、金額データや口座番号が真正データである場合には、偽のデータも金額データや口座番号として解釈されるデータとして生成され、中間者攻撃などを行う者にとっては、どれが真正なデータであり、どれが偽のデータであるかの判別を困難にすることができる。
【００２２】
また、サーバ１０２の送信部から送信される偽のデータを生成するためのプログラムは、１つに限定されるものではなく、同じ機能を提供する複数のプログラムの中から選択がされてサーバ１０２の送信部により送信されるようになっていてもよい。また、この場合、複数のプログラムの中からの選択は、例えばランダムな選択とするのが好ましい。また、過去に端末１０１に送信されたプログラムではないプログラムが選択されるようになっていてもよい。これにより、中間者攻撃などを行う者にとっては毎回異なるプログラムが端末１０１において実行されるので、解析などが困難となる。また、サーバ１０２の送信部から送信されるプログラムは、送信の都度、サーバ１０２によって生成されるプログラムであってもよい。
【００２３】
また、サーバ１０２の送信部から送信されるＨＴＭＬなどにより記述される画面の数は１に限定されることはない。例えば、画面遷移が発生して、遷移先の画面のＨＴＭＬなどによる記述がサーバ１０１の送信部により送信される場合には、偽のデータを生成するプログラムを実行するための画面のＨＴＭＬなどによる記述が、真正なデータが入力されるための画面のＨＴＭＬなどによる記述とは別にサーバ１０２の送信部から送信されるようになっていてもよい。この場合、偽のデータを生成するプログラムを実行するための画面のＨＴＭＬなどにより記述される画面は、端末１０１のディスプレイに表示されないようになっているのが好ましい。例えば、ディスプレイの表示可能な範囲外の座標位置に表示される。
【００２４】
また、サーバ１０２の送信部から送信されるプログラムは、ブラウザのサンドボックス機能により保護された領域内において実行されるようになっていてもよい。
【００２５】
フィールドデータ送信部１０６は、フィールドデータ受付部１０４が受け付けたデータおよび偽フィールドデータ追加部１０５により追加された偽のデータを、通信網１０を介して、サーバ１０２へ送信する。
【００２６】
サーバ１０２は、処理部１０７を備え、処理部１０７は、フィールドデータ受信部１０８と、真正フィールドデータ選択部１０９と、を有する。処理部１０７は、端末１０１のフィールドデータ送信部１０６により送信されたデータを処理する部である。例えば、サーバ１０２により動作するプログラムの一モジュールにより実現することができる。
【００２７】
フィールドデータ受信部１０８は、通信網１０を介して端末１０１のフィールドデータ送信部１０６により送信されたデータを受信する。したがって、フィールドデータ受信部１０８は、端末１０１のフィールドデータ受付部１０４が受け付けたデータおよび端末１０１の偽フィールドデータ追加部１０５により追加された偽のデータを受信する。例えば、サーバ１０２のＩ／Ｏインターフェースを介してデータを読み取り、サーバ１０２のメモリの所定のアドレスに書き込む。
【００２８】
真正フィールドデータ選択部１０９は、フィールドデータ受信部１０８が受信したデータの中から、偽のデータを除くデータである真正なデータを選択する。真正なデータとは、端末１０１のフィールドデータ受付部１０４が受け付けたデータである。言い換えると、利用者が入力または送信をすることを意図していたデータである。
【００２９】
真正フィールドデータ選択部１０９は、例えば、端末１０１に送信されたプログラムであり、偽のデータを生成するためのプログラムに基づいて、真正なデータを選択することもできる。例えば、サーバ１０２には、記録部（図示せず）が備えられており、記録部は、端末１０１に送信されたプログラムを識別する情報を端末１０１の識別子や端末１０１とのセッションの識別子と関連付けて記録する。そして、真正フィールドデータ選択部１０９は、記録部に記録されたプログラムを識別する情報により、そのプログラムによって生成される偽のデータを判別する情報を格納するデータベースなどを検索することにより、偽のデータと真正なデータとを区別することもできる。
【００３０】
また、複数のＨＴＭＬなどによる画面の記述が端末１０１に送信される場合には、ＨＩＤＤＥＮ属性を有するフィールドに、偽のデータが生成された画面からのデータであるかを判別可能とする情報を含ませてもよい。
【００３１】
図２は、端末１０１に表示されるディスプレイに表示される画面の画面遷移の一例を示す。例えば、サーバ１０２が、ある銀行のインターネットバンキングサービスを提供するためのサーバであるとする。端末１０１の利用者が、サーバ１０２へのリンクをポータルサイトにおいて選択したり、サーバ１０２のＵＲＬをブラウザなどに入力したりすると、
サーバ１０２から端末１０１に対してＨＴＭＬなどにより記述されたデータが送信され、端末１０１のディスプレイに、ログイン画面として図２（ａ）に例示される画面２０１が端末１０１のディスプレイに表示される。
【００３２】
図２（ａ）において、画面２０１には、お客様番号を入力する入力エリア２０２と、パスワードを入力する入力エリア２０３とが表示されている。利用者は、自分のお客様番号とパスワードとを入力し、リターンキーを押下するなどの操作を行うと、お客様番号とパスワードとが認証情報としてサーバ１０２に送信され、サーバ１０２が認証を行う。
【００３３】
認証に成功すると、サーバ１０２は、インターネットバンキングサービスの中から利用者が必要とするサービスを選択するためのＨＴＭＬなどにより記述されたデータを端末１０２に送信する。
【００３４】
図２（ｂ）は、端末１０２のディスプレイに、利用者が必要とするサービスを選択するための画面２１１が表示されている例を示す。画面２１１においては、口座の残高を確認するための残高照会ボタン２１２と、振込を行うための振込ボタン２１３とが示されている。
【００３５】
利用者が振込ボタン２１３を押下などすると、振込のためのデータを入力するための画面が端末１０２のディスプレイに表示される。図２（ｃ）に示す画面２２１は、振込のためのデータを入力するための画面の一例である。
【００３６】
利用者は、入力エリア２２２に振込先の銀行名を入力し、入力エリア２２３に振込先の銀行の支店名を入力する。また、利用者は、振込先の口座の種別を入力エリア２２４に入力し、振込先の口座番号を入力エリア２２５に入力し、振込額を入力エリア２２６に入力する。なお、これらの振込のためのデータを入力するための画面は複数の画面により構成されていてもよい。
【００３７】
利用者が振込ボタン２２７を押下すると、フィールドデータ受付部１０４が動作し、入力エリア２２２〜２２６に入力されたデータを受け付ける。例えば、端末１０１で動作するブラウザが図２（ａ）〜（ｃ）に示す画面を表示している場合には、フィールドデータ受付部１０４は、ブラウザが、入力エリア２２２〜２２６に入力されたデータを蓄積しているメモリ領域から、データを読み出す。
【００３８】
例えば、図２（ｃ）の場合には、入力エリア２２２には、“金持”が、入力エリア２２３には、“黄金”が、入力エリア２２４には、“普通”が、入力エリア２２５には、“１２３４５６７”が、フィールドデータ２２６には、“１００，０００”が入力されている。そこで、フィールドデータ受付部１０４は、ブラウザが、入力エリア２２２〜２２６に入力されたデータを蓄積しているメモリ領域から“金持”、“黄金”、“普通”、“１２３４５６７”、“１００，０００”を読み出す。
【００３９】
フィールドデータ受付部１０４は、読み出したデータをサーバ１０２に送信するために、例えば、図３（ａ）に示すように、「銀行＝“金持”＆支店＝“黄金”＆口座＝“普通”＆番号＝“１２３４５６７”＆金額＝“１００，０００”＆Ｓｅｒ＝１０」というデータに変換することができる。なお、変換されたデータの「Ｓｅｒ＝１０」は、データの番号などを示し、本願発明には必須ではない。
【００４０】
次に偽フィールドデータ追加部１０５が、偽のデータを生成し、フィールドデータ受付部１０４が受け付けたデータに追加する。例えば、図３（ｂ）に示すように、「銀行＝“貧乏”＆支店＝“土石”＆口座＝“普通”＆番号＝“７６５４３２１”＆金額＝“４０，
０００”＆Ｓｅｒ＝２０」および「銀行＝“順風”＆支店＝“満帆”＆口座＝“当座”＆番号＝“５６７１２３４”＆金額＝“１２０，０００”＆Ｓｅｒ＝３０」という偽のデータを生成し、「銀行＝“金持”＆支店＝“黄金”＆口座＝“普通”＆番号＝“１２３４５６７”＆金額＝“１００，０００”＆Ｓｅｒ＝１０」というデータに追加する。
【００４１】
ここに、「銀行＝“貧乏”＆支店＝“土石”＆口座＝“普通”＆番号＝“７６５４３２１”＆金額＝“４０，０００”＆Ｓｅｒ＝２０」および「銀行＝“順風”＆支店＝“満帆”＆口座＝“当座”＆番号＝“５６７１２３４”＆金額＝“１２０，０００”＆Ｓｅｒ＝３０」という偽のデータは、利用者が、画面２２１に入力したデータとは異なっており、利用者の意図とは無関係に生成されている。このように、偽フィールドデータ追加部１０５は、フィールドデータ受付部１０４が受け付けたデータの一部または全体と異なる偽データを生成する。
【００４２】
図３（ｂ）に示す例においては、「銀行」、「支店」などのデータ項目の名称の並びが真正データと偽のデータとにおいて同じであるが、データ項目の名称の並びが真正データおよび偽のデータのそれぞれにおいて異なるようになっていてもよい。ただし、データ項目の名称の並びが真正データと偽のデータとにおいて同じとし、さらにデータ項目の値（例えば、「銀行」というデータ項目に対する“金持”、“貧乏”、“順風”）の文字列の属性が、上述したように真正なデータと偽のデータとにおいて同じとなっているのが好ましい。この場合、“金持”、“貧乏”、“順風”は、漢字という属性を有する文字の文字列となっている。
【００４３】
次にフィールドデータ送信部１０６は、フィールドデータ受付部１０４が受け付けたデータおよび偽フィールドデータ追加部１０５により追加された偽のデータを、通信網１０を介して、サーバ１０２へ送信する。
【００４４】
フィールドデータ送信部１０６は、図３（ｂ）に示されるデータを、直列させて１つのセッションを用いて、サーバ１０２へ送信してもよい。あるいは、複数のセッションによりサーバ１０２と通信が可能なようにして、図３（ｂ）の各行として示されるデータをそれぞれ異なるセッションに並列させて送信してもよい。
【００４５】
なお、図３（ｂ）においては、フィールドデータ受付部１０４が受け付けて変換したデータが１行目に配置されて示されている。ただし、本願発明は、これに限定されるものではなく、フィールドデータ受付部１０４が受け付けて変換したデータは、任意の位置に配置されてもよい。
【００４６】
例えば、フィールドデータ受付部１０４が受け付けて変換したデータおよび偽フィールドデータ追加部１０５により追加されたデータのハッシュ値を計算し、ハッシュ値を数値と解釈して昇順または降順に並べ替えた状態でフィールドデータ送信部１０６はデータを送信することもできる。
【００４７】
フィールドデータ送信部１０６により送信されたデータは、サーバ１０２のフィールドデータ受信部１０８により受信され、サーバ１０２のメモリ領域に格納される。
【００４８】
次に、真正フィールドデータ選択部１０９が、メモリ領域に格納されたデータから、偽フィールドデータ追加部１０５が追加したデータを除くデータである真正なデータを選択する。選択されたデータは、処理部１０７の後続の処理を行う部（モジュール）に転送される。この場合は、「銀行＝“金持”＆支店＝“黄金”＆口座＝“普通”＆番号＝“１２３４５６７”＆金額＝“１００，０００”＆Ｓｅｒ＝１０」というデータとして転送される。
【００４９】
真正フィールドデータ選択部１０９が、データが真正であるかどうかを判断する手法には、いくつかの手法が考えられる。例えば、偽フィールドデータ追加部は、利用者が以前のセッションにおいて端末１０１を用いて送信した真正なデータを端末１０１の記憶部に記憶し、次のセッションにおいて、記憶されたデータを読み出すことにより生成し、フィールドデータ受付部１０４が受け付けたデータに追加する。真正フィールドデータ選択部１０９は、以前のセッションにおいて受信されたデータは真正でないと判断し、以前のセッションにおいて受信されていないデータを真正であると判断する。
【００５０】
なお、振込処理においては、異なる日時に同じ利用者が同じ振込先に同じ金額を振り込む場合があり、この場合には、真正となるべきデータが、以前のセッションにおいても送信されているために、偽のデータとして判断される可能性がある。そこで、図３に示すようにフィールドデータ受付部１０４は、受け付けたデータに、例えば「Ｓｅｒ＝１０」のように、以前のセッションに送信されたデータと区別するためのデータを付加してもよい。
【００５１】
また、真正フィールドデータ選択部１０９は、上述したように、データおよび偽のデータのハッシュ値などに基づいて並べ替えて送信される場合には、データおよび偽のデータが受信された順序における特定の位置に配置されているデータを真正なデータとしてもよい。特定の位置をいずれにするかは、例えば、利用者に渡したトークンカードなどによって生成された数字を利用者が入力して決定されてもよい。
【００５２】
図４は、システム１００における送受信のシーケンス図を示す。ステップＳ４０１において、端末１０１からサーバ１０２に、画面情報要求が送信される。この画面情報要求は、図２（ａ）に示す認証用の画面のＨＴＭＬなどによる記述である画面情報を要求するためのものである。
【００５３】
ステップＳ４０２において、サーバ１０２は、画面情報要求に応じて、画面情報を端末１０１に送信する。画面情報が端末１０１において受信されると、例えば、画面２０１が端末１０１のディスプレイに表示される。
【００５４】
利用者が端末１０１のディスプレイに表示された画面２０１に必要な情報（この場合は、認証情報）を入力すると、ステップＳ４０３において、端末１０１からサーバ１０２に認証情報が送信される。
【００５５】
サーバ１０２において認証に成功すると、ステップＳ４０４において、次画面情報がサーバ１０２から端末１０１へ送信される。次画面情報は、例えば、画面２１１を端末１０１のディスプレイに表示するためのＨＴＭＬなどによる記述である。
【００５６】
画面２１１が端末１０１のディスプレイに表示され、利用者が例えば振込ボタン２１３を押下などして、振込を選択すると、その選択の内容を示す選択情報がステップＳ４０５に端末１０１からサーバ１０２に送信される。
【００５７】
サーバ１０２が選択情報を受信すると、受信した選択情報に応じて、ステップ４０６において、次次画面情報を送信し、端末１０２が受信する。次次画面情報は、例えば、画面２２１を端末１０１のディスプレイに表示するためのＨＴＭＬなどによる記述となる。
【００５８】
画面２２１が端末１０１のディスプレイに表示され、利用者が振込に必要な情報を入力し、振込ボタン２２７を押下などすると、上述したように、フィールドデータ受付部１０４、偽フィールドデータ追加部１０５、フィールドデータ送信部１０６が動作し、図３（ｂ）に示すようなデータが、ステップＳ４０７において、端末１０１からサーバ１０２に送信される。
【００５９】
その後、サーバ１０２において、フィールドデータ受信部１０８および真正フィールドデータ選択部１０９が動作し、選択がされた振込処理が行われ、処理が完了すると、ステップＳ４０８において、サーバ１０２から端末１０１に処理が完了した旨を端末１０１のディスプレイに表示するための完了画面情報が、サーバ１０２から端末１０１に送信される。
【００６０】
図５は、端末１０１における処理を説明するフローチャートである。ステップＳ５０１において、例えば振込ボタン２２７が押下などされるまで待つ。ステップＳ５０２において、フィールドデータ受付部１０４により入力エリアに入力されたデータの読み取りがされる。ステップＳ５０３において、偽フィールドデータ追加部１０５により、偽のデータが追加される。ステップＳ５０４において、フィールドデータ送信部１０６により、データの送信が行われる。
【００６１】
図６は、サーバ１０２における処理を説明するフローチャートである。ステップＳ６０１において、フィールドデータ受信部１０８によりデータの受信がされるまで待つ。フィールドデータ受信部１０８によるデータの受信がされると、受信されたデータがサーバ１０２のメモリに記憶される。ステップＳ６０３において、真正なデータの選択が真正フィールドデータ選択部１０９によりされる。ステップＳ６０４において、真正フィールドデータ選択部１０９により選択された真正なデータによる処理が行われる。
【００６２】
以上のように、本実施形態においては、ユーザが端末に入力したデータに、真正ではない偽のデータが追加されてサーバに送信される。このため、中間者攻撃が行われても、どれが真正なデータであるのかを判断するのが困難となり、改ざんなどによる被害を受けることが少なくなる。このため、より安全な通信が実現される。
【００６３】
また、中間者攻撃が行われている場合、通信の内容が中間者によって通信の内容が書き換えられるが、書き換えを、データおよび偽データがサーバ１０２のフィールドデータ受信部１０８により受信される時間の揺らぎによって検出することも可能である。また、長時間が経過したことが明白である場合には、通信により発生したトランザクションや取引を取り消すようにしてもよい。これまでの通信の履歴からある画面が端末に表示されてから端末から送信されるデータが受信されるまでの時間の平均を算出しておき、その平均よりも例えば３倍以上の時間が経過した場合には、長時間が経過したことが明白であるとみなす。このような時間の平均は、ユーザごとに算出しておくのが好ましい。
【００６４】
（実施形態２）
実施形態１においては、ユーザが入力した真正なデータに偽のデータを追加して送信している。本発明の実施形態２においては、ユーザが入力したデータに偽のデータを追加することに加えて、ユーザが操作する真正なワークフローに加えて、偽のワークフローを生成して、中間者攻撃を困難にすることについて説明する。
【００６５】
図７は、本実施形態に係るシステム７００の機能ブロック図を示す。システム７００は、端末７０１と、サーバ７０２とを備え、端末７０１とサーバ７０２とは、インターネットなどの通信網７０を介して通信を行うことができる。実施形態１と同様に、端末の台数およびサーバの台数は１台に限定されることはなく、システム７００においては、任意の台数の構成であってもよい。
【００６６】
端末７０１は、ブラウザ部７０３を有し、ブラウザ部７０３は、ユーザワークフロー部
７０４と偽ワークフロー部７０５とを有する。サーバ７０２は、ユーザワークフロー処理部７０６と偽ワークフロー処理部７０７とを有する。
【００６７】
ユーザワークフロー部７０４は、ユーザによる画面遷移によるワークフローを端末７０１において実行する部である。例えば、通常のブラウザのようにサーバ７０２から送信された画面情報に従って画面を表示し、ユーザの操作に応じて、サーバ７０２に要求などを送信し、それに応じて送信される画面情報を次に表示する。
【００６８】
ユーザワークフロー処理部７０６は、ユーザワークフロー部７０４により生成された要求を処理し、端末７０１のディスプレイに次に表示する画面情報を端末７０１へ送信する。
【００６９】
偽ワークフロー部７０６は、ユーザの意図によらない偽のワークフローを端末７０１において実行する。例えば、画面遷移の状態遷移を示すデータを端末７０１のメモリなどに記憶しておき、その状態遷移を示すデータに従って、次の状態に移るための要求をサーバ７０２に送信し、それに応じて送信される画面情報を受信することを繰り返す。例えば、状態遷移において分岐がある場合には、ランダムに分岐先を選択してワークフローを実行する。
【００７０】
偽ワークフロー部７０７は、偽ワークフロー部７０６により生成された要求を処理し、次の画面情報を端末７０１へ送信する。
【００７１】
ユーザワークフロー部７０４によるワークフローであるのか、偽ワークフロー部７０５によるワークフローであるかどうかは、例えば各ワークフローにおいて行われる利用者の認証を行った際に、認証に成功したワークフローがユーザワークフロー部７０４によるワークフローとし、認証に失敗したワークフローが偽ワークフロー部７０５によるワークフローとすることもできる。
【００７２】
本実施形態においては、実施形態１のように、ユーザワークフロー部７０４は、偽のデータを追加し、サーバに送信し、ユーザワークフロー処理部７０６は、真正なデータを選択し、処理を行う構成とすることもできる。
【００７３】
本実施形態においては、複数のワークフローが生成され、その中には偽のワークフローが含まれる。このため、このため、中間者攻撃が行われているとしても、どれが真正なワークフローであるのかを判断するのが困難となり、改ざんなどによる被害が生じることが少なくなる。このため、より安全な通信が実現される。
【００７４】
（実施形態３）
実施形態２においては、主に、真正なワークフローと偽のワークフローとを異なるワークフローとして説明した。しかし、本発明はこれに限られるものではなく、真正なワークフローにおいて画面遷移が発生すると、真正なワークフローから偽のワークフローが分岐するようにすることもできる。
【００７５】
この場合、ユーザワークフロー処理部７０６が画面遷移などを処理すると、画面遷移などが処理されたことを示す情報が偽ワークフロー処理部７０７に伝達され、偽ワークフロー処理部７０７は、真正なワークフローから偽のワークフローを分岐させるための画面情報を端末７０１の偽ワークフロー部７０５に送信する。この場合、偽のワークフローを分岐させるための画面情報は、端末７０１のディスプレイには表示されないようにするのが好ましい。例えば、偽のワークフローを分岐させるための画面情報が表示される座標位置を端末７０１のディスプレイの表示範囲外と設定することにより、レンダリングの対象から偽のワークフローを分岐させるための画面情報をはずす。
【００７６】
また、真正なワークフローから偽のワークフローが分岐する場合、偽のワークフローの数は１に限定されることなく、任意の数とすることができる。
【符号の説明】
【００７７】
１００  システム、１０１  端末、１０２  サーバ、１０３  ブラウザ部、１０４  フィールドデータ受付部、１０５  偽フィールドデータ追加部、１０６  フィールドデータ送信部、１０７  処理部、１０８  フィールドデータ受信部、１０９  真正フィールドデータ選択部１０９
【図１】
2018093546.tif 000003
【図２】
2018093546.tif 000004
【図３】
2018093546.tif 000005
【図４】
2018093546.tif 000006
【図５】
2018093546.tif 000007
【図６】
2018093546.tif 000008
【図７】
2018093546.tif 000009