(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-20
(45)【発行日】2022-05-30
(54)【発明の名称】サーバおよび端末
(51)【国際特許分類】
H04L 9/32 20060101AFI20220523BHJP
H04L 9/22 20060101ALI20220523BHJP
【FI】
H04L9/32 200A
H04L9/22 100
(21)【出願番号】P 2018140221
(22)【出願日】2018-07-26
(62)【分割の表示】P 2017152518の分割
【原出願日】2013-11-28
【審査請求日】2018-07-26
【審判番号】
【審判請求日】2020-10-06
(73)【特許権者】
【識別番号】598049322
【氏名又は名称】株式会社三菱UFJ銀行
(74)【代理人】
【識別番号】110000408
【氏名又は名称】特許業務法人高橋・林アンドパートナーズ
(72)【発明者】
【氏名】小中 俊典
(72)【発明者】
【氏名】瓦谷 佳祐
【合議体】
【審判長】石井 茂和
【審判官】山崎 慎一
【審判官】須田 勝巳
(56)【参考文献】
【文献】為近 智行,他,非同期通信環境下における電子現金個人間送金システムの提案,電子情報通信学会技術研究報告,電子情報通信学会,2004年2月26日,Vol.103,No.691,pp.167-170
(58)【調査した分野】(Int.Cl.,DB名)
H04L9/32
H04L9/22
(57)【特許請求の範囲】
【請求項1】
端末装置から送信され、前記端末装置の利用者により入力された真正なデータ、前記端末装置によって生成され当該真正なデータとデータ項目が共通する偽のデータ、及び
送信されてくる真正なデータと以前のセッションに送信されたデータと
を区別する
ための制御情報を受信するデータ受信部と、
前記データ受信部により受信された真正なデータおよび偽のデータから、真正なデータを選択するデータ選択部と、
を有し、
前記データ選択部は
、以前に前記端末装置から送信されたデータ
と前記制御情報を含めて同じデータを偽のデータとするサーバ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、中間者攻撃などに対して耐性を有する通信システムを構成するサーバおよび端末などに関する。
【背景技術】
【0002】
インターネットなどの通信技術が発達し、実際に遠隔地に赴かなくてもサービスの提供を受けられるようになってきた。例えば、インターネットバンキングが利用可能となり、預金者などは実際に銀行の支店に赴かなくても、残高照会、振込、振替、各種サービスの申し込みがインターネットバンキングを用いて自宅などから行えるようになってきた。
【0003】
一方、インターネットなどによる通信に関与し、不正を行う手法も発達してきている。例えば、Man in the Browser攻撃やMan in the Middle攻撃などの中間者攻撃が知られている。中間者攻撃は、通信の途中に割り込み、通信に関するデータを改ざんしてサーバや端末に転送する手法である。例えば、利用者がインターネットバンキングを利用している場合、利用者が振込先として指定した口座番号などを改ざんし、不正な振込先に書き換えてインターネットバンキングのサーバに転送する。
【0004】
このような中間者攻撃の存在を検出する技術として、例えば特許文献1が知られている。
【先行技術文献】
【特許文献】
【0005】
【文献】米国特許第7721333号明細書
【文献】米国特許第8370899号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1のように中間者攻撃の存在が検出できたとしても、安全な通信を行うことができない。そこで、本願発明は、中間者攻撃が存在したとしても、より安全に通信を行う技術を提供する。
【課題を解決するための手段】
【0007】
本発明の一実施形態として、データ受信部とデータ選択部とを有するサーバ装置が提供される。前記データ受信部は、端末装置から送信され、前記端末装置の利用者により入力された真正なデータおよび前記端末装置によって生成された偽のデータを受信する。前記データ選択部は、前記データ受信部により受信された真正なデータおよび偽のデータから、真正なデータを選択する。
【0008】
本発明の一実施形態として、データ受付部と、データ付加部と、データ送信部とを有する端末装置が提供される。前記データ受付部は、端末装置により入力されたデータを受け付ける。前記データ付加部は、前記データ受付部により受け付けられた真正なデータに、前記端末装置により生成された偽のデータを付加する。前記データ送信部は、前記データ受付部により受け付けられたデータと前記データ付加部によりデータ付加部により付加された偽のデータを送信する。
【発明の効果】
【0009】
本願発明によれば、中間者攻撃が存在したとしても、より安全に通信を行うことができる。
【図面の簡単な説明】
【0010】
【
図1】本発明の一実施形態に係る通信システムの機能ブロック図である。
【
図2】本発明の一実施形態に係る通信システムの端末における画面遷移の一例図である。
【
図3】本発明の一実施形態に係る通信システムにより送受信されるデータの一例図である。
【
図4】本発明の一実施形態に係る通信システムの処理のシーケンス図である。
【
図5】本発明の一実施形態に係る通信システムの端末の処理のフローチャートである。
【
図6】本発明の一実施形態に係る通信システムのサーバの処理のフローチャートである。
【
図7】本発明の一実施形態に係る通信システムの機能ブロック図である。
【発明を実施するための形態】
【0011】
以下、本発明を実施するための形態について、いくつかの実施形態として説明する。なお、本発明はこれらの実施形態を種々に変形して実施することが可能である。したがって、本発明は、これらの実施形態に限定して解釈されることはない。
【0012】
(実施形態1)
図1は、本発明の実施形態1に係る通信システムの機能ブロック図である。通信システム100は、端末101とサーバ102とを備え、端末101とサーバ102とは、インターネットなどの通信網10を介して通信を行うことができる。なお、
図1においては、端末101として端末が1台のみ示されているが、任意の台数の端末がサーバ102と通信網10などを介して通信を行うことができるようになっていてもよい。また、
図1においては、サーバ102としてサーバが1台のみ示されているが、サーバ102の機能を複数台のサーバにより分担するなどして任意の台数のサーバによって実現する構成であってもよい。
【0013】
端末101は、フィールドデータ受付部104と、偽フィールドデータ追加部105と、フィールドデータ送信部106とを含むブラウザ部103を有する。一般的には、端末101はパーソナルコンピュータ、スマートフォーンなどの通信機器であり、端末101の利用者はブラウザを端末101で動作させて、サーバ102と通信を行うので、端末101で動作するブラウザを、ブラウザ部103としている。ただし、ブラウザ部103は、ブラウザに限定されることはなく、サーバ102と通信を行うための専用プログラムであってもよい。
【0014】
フィールドデータ受付部104は、フィールドに入力されたデータを受け付ける。ここにフィールドとは、情報を入力するためにブラウザなどによりディスプレイに表示される入力エリアである。例えば、文字列情報を入力するためのテキストエリア、選択を入力するためのラジオボタンなどが入力エリアの例である。
【0015】
より具体的には、フィールドデータ受付部104は、例えばテキストエリアに文字列として入力された振込金額を受け付ける。また、別の例として、普通預金口座または当座預金口座を指定するためのラジオボタンなどによる選択を受け付ける。
【0016】
また、フィールドデータ受付部104は、ディスプレイに表示されているリンクに対するマウスなどによる選択が行われたかどうかを受け付けることもできるとしてもよい。また、ボタンをフィールドとみなし、ボタンが押下されたこと、あるいは、ボタンの上にマ
ウスカーソルが位置したことをボタンというフィールドに対する入力としてもよい。
【0017】
なお、入力エリアやリンクなどのフィールドは、ディプレイに表示される画面内に表示することができる。この場合、画面は、ブラウザや専用プログラムに対応する画面である。
【0018】
フィールドデータ受付部104は、例えば、ブラウザ画面のSubmitボタンが押下などされたときに、フィールドに入力されたデータを受け付けることができる。また、スクリプトなどにより、マウスカーソルがフィールド上に位置したときやフィールド上にマウスカーソルが移動してクリックがされたことなどを示すイベントが発生すると、そのイベントに対応するイベント処理関数によりフィールドデータ受付部104が動作し、フィールドに入力されたデータを受け付けることができるようになっていてもよい。
【0019】
フィールドデータ受付部104が動作するかどうかの制御は、例えば例えばサーバ102の送信部から送信されるHTMLなどにより記述がされた画面情報に埋め込まれたスクリプトなどによって可能になっていてもよい。また、画面情報から参照している他のソースから、そのようなスクリプトが端末101によって読み込まれて動作するようになっていてもよい。
【0020】
偽フィールドデータ追加部105は、偽のデータを生成して、フィールドデータ受付部104が受け付けたデータに追加する。偽のデータは、端末101の利用者が入力および送信を意図しないデータである。言い換えると利用者の意図とは無関係に生成されるデータである。例えばサーバ102の送信部から送信されたプログラムを端末101において実行することにより生成することができる。あるいは、端末101で乱数を発生させるなどして生成することができる。このようなプログラムとして上述のスクリプトを挙げることもできる。
【0021】
なお、フィールドデータ受付部104が受け付けたデータを真正データとして表記すると、真正データが文字列として表現される場合には、偽のデータも文字列として表現されるのが好ましい。また、この場合、偽のデータの文字列の各文字は、真正データの各文字と同じ属性を有しているのが好ましい。例えば、文字列を構成する文字は、数字、英文字、仮名文字などの属性を有する文字に分類することができる。したがって、真正データに数字が含まれれば、偽のデータにも数字が含まれるようにし、真正データに英文字が含まれれば、偽のデータにも英文字が含まれるようにし、真正データに仮名文字が含まれれば、偽のデータにも仮名文字が含まれるようにしてもよい。これにより、金額データや口座番号が真正データである場合には、偽のデータも金額データや口座番号として解釈されるデータとして生成され、中間者攻撃などを行う者にとっては、どれが真正なデータであり、どれが偽のデータであるかの判別を困難にすることができる。
【0022】
また、サーバ102の送信部から送信される偽のデータを生成するためのプログラムは、1つに限定されるものではなく、同じ機能を提供する複数のプログラムの中から選択がされてサーバ102の送信部により送信されるようになっていてもよい。また、この場合、複数のプログラムの中からの選択は、例えばランダムな選択とするのが好ましい。また、過去に端末101に送信されたプログラムではないプログラムが選択されるようになっていてもよい。これにより、中間者攻撃などを行う者にとっては毎回異なるプログラムが端末101において実行されるので、解析などが困難となる。また、サーバ102の送信部から送信されるプログラムは、送信の都度、サーバ102によって生成されるプログラムであってもよい。
【0023】
また、サーバ102の送信部から送信されるHTMLなどにより記述される画面の数は
1に限定されることはない。例えば、画面遷移が発生して、遷移先の画面のHTMLなどによる記述がサーバ101の送信部により送信される場合には、偽のデータを生成するプログラムを実行するための画面のHTMLなどによる記述が、真正なデータが入力されるための画面のHTMLなどによる記述とは別にサーバ102の送信部から送信されるようになっていてもよい。この場合、偽のデータを生成するプログラムを実行するための画面のHTMLなどにより記述される画面は、端末101のディスプレイに表示されないようになっているのが好ましい。例えば、ディスプレイの表示可能な範囲外の座標位置に表示される。
【0024】
また、サーバ102の送信部から送信されるプログラムは、ブラウザのサンドボックス機能により保護された領域内において実行されるようになっていてもよい。
【0025】
フィールドデータ送信部106は、フィールドデータ受付部104が受け付けたデータおよび偽フィールドデータ追加部105により追加された偽のデータを、通信網10を介して、サーバ102へ送信する。
【0026】
サーバ102は、処理部107を備え、処理部107は、フィールドデータ受信部108と、真正フィールドデータ選択部109と、を有する。処理部107は、端末101のフィールドデータ送信部106により送信されたデータを処理する部である。例えば、サーバ102により動作するプログラムの一モジュールにより実現することができる。
【0027】
フィールドデータ受信部108は、通信網10を介して端末101のフィールドデータ送信部106により送信されたデータを受信する。したがって、フィールドデータ受信部108は、端末101のフィールドデータ受付部104が受け付けたデータおよび端末101の偽フィールドデータ追加部105により追加された偽のデータを受信する。例えば、サーバ102のI/Oインターフェースを介してデータを読み取り、サーバ102のメモリの所定のアドレスに書き込む。
【0028】
真正フィールドデータ選択部109は、フィールドデータ受信部108が受信したデータの中から、偽のデータを除くデータである真正なデータを選択する。真正なデータとは、端末101のフィールドデータ受付部104が受け付けたデータである。言い換えると、利用者が入力または送信をすることを意図していたデータである。
【0029】
真正フィールドデータ選択部109は、例えば、端末101に送信されたプログラムであり、偽のデータを生成するためのプログラムに基づいて、真正なデータを選択することもできる。例えば、サーバ102には、記録部(図示せず)が備えられており、記録部は、端末101に送信されたプログラムを識別する情報を端末101の識別子や端末101とのセッションの識別子と関連付けて記録する。そして、真正フィールドデータ選択部109は、記録部に記録されたプログラムを識別する情報により、そのプログラムによって生成される偽のデータを判別する情報を格納するデータベースなどを検索することにより、偽のデータと真正なデータとを区別することもできる。
【0030】
また、複数のHTMLなどによる画面の記述が端末101に送信される場合には、HIDDEN属性を有するフィールドに、偽のデータが生成された画面からのデータであるかを判別可能とする情報を含ませてもよい。
【0031】
図2は、端末101に表示されるディスプレイに表示される画面の画面遷移の一例を示す。例えば、サーバ102が、ある銀行のインターネットバンキングサービスを提供するためのサーバであるとする。端末101の利用者が、サーバ102へのリンクをポータルサイトにおいて選択したり、サーバ102のURLをブラウザなどに入力したりすると、
サーバ102から端末101に対してHTMLなどにより記述されたデータが送信され、端末101のディスプレイに、ログイン画面として
図2(a)に例示される画面201が端末101のディスプレイに表示される。
【0032】
図2(a)において、画面201には、お客様番号を入力する入力エリア202と、パスワードを入力する入力エリア203とが表示されている。利用者は、自分のお客様番号とパスワードとを入力し、リターンキーを押下するなどの操作を行うと、お客様番号とパスワードとが認証情報としてサーバ102に送信され、サーバ102が認証を行う。
【0033】
認証に成功すると、サーバ102は、インターネットバンキングサービスの中から利用者が必要とするサービスを選択するためのHTMLなどにより記述されたデータを端末102に送信する。
【0034】
図2(b)は、端末102のディスプレイに、利用者が必要とするサービスを選択するための画面211が表示されている例を示す。画面211においては、口座の残高を確認するための残高照会ボタン212と、振込を行うための振込ボタン213とが示されている。
【0035】
利用者が振込ボタン213を押下などすると、振込のためのデータを入力するための画面が端末102のディスプレイに表示される。
図2(c)に示す画面221は、振込のためのデータを入力するための画面の一例である。
【0036】
利用者は、入力エリア222に振込先の銀行名を入力し、入力エリア223に振込先の銀行の支店名を入力する。また、利用者は、振込先の口座の種別を入力エリア224に入力し、振込先の口座番号を入力エリア225に入力し、振込額を入力エリア226に入力する。なお、これらの振込のためのデータを入力するための画面は複数の画面により構成されていてもよい。
【0037】
利用者が振込ボタン227を押下すると、フィールドデータ受付部104が動作し、入力エリア222~226に入力されたデータを受け付ける。例えば、端末101で動作するブラウザが
図2(a)~(c)に示す画面を表示している場合には、フィールドデータ受付部104は、ブラウザが、入力エリア222~226に入力されたデータを蓄積しているメモリ領域から、データを読み出す。
【0038】
例えば、
図2(c)の場合には、入力エリア222には、“金持”が、入力エリア223には、“黄金”が、入力エリア224には、“普通”が、入力エリア225には、“1234567”が、フィールドデータ226には、“100,000”が入力されている。そこで、フィールドデータ受付部104は、ブラウザが、入力エリア222~226に入力されたデータを蓄積しているメモリ領域から“金持”、“黄金”、“普通”、“1234567”、“100,000”を読み出す。
【0039】
フィールドデータ受付部104は、読み出したデータをサーバ102に送信するために、例えば、
図3(a)に示すように、「銀行=“金持”&支店=“黄金”&口座=“普通”&番号=“1234567”&金額=“100,000”&Ser=10」というデータに変換することができる。なお、変換されたデータの「Ser=10」は、データの番号などを示し、本願発明には必須ではない。
【0040】
次に偽フィールドデータ追加部105が、偽のデータを生成し、フィールドデータ受付部104が受け付けたデータに追加する。例えば、
図3(b)に示すように、「銀行=“貧乏”&支店=“土石”&口座=“普通”&番号=“7654321”&金額=“40,
000”&Ser=20」および「銀行=“順風”&支店=“満帆”&口座=“当座”&番号=“5671234”&金額=“120,000”&Ser=30」という偽のデータを生成し、「銀行=“金持”&支店=“黄金”&口座=“普通”&番号=“1234567”&金額=“100,000”&Ser=10」というデータに追加する。
【0041】
ここに、「銀行=“貧乏”&支店=“土石”&口座=“普通”&番号=“7654321”&金額=“40,000”&Ser=20」および「銀行=“順風”&支店=“満帆”&口座=“当座”&番号=“5671234”&金額=“120,000”&Ser=30」という偽のデータは、利用者が、画面221に入力したデータとは異なっており、利用者の意図とは無関係に生成されている。このように、偽フィールドデータ追加部105は、フィールドデータ受付部104が受け付けたデータの一部または全体と異なる偽データを生成する。
【0042】
図3(b)に示す例においては、「銀行」、「支店」などのデータ項目の名称の並びが真正データと偽のデータとにおいて同じであるが、データ項目の名称の並びが真正データおよび偽のデータのそれぞれにおいて異なるようになっていてもよい。ただし、データ項目の名称の並びが真正データと偽のデータとにおいて同じとし、さらにデータ項目の値(例えば、「銀行」というデータ項目に対する“金持”、“貧乏”、“順風”)の文字列の属性が、上述したように真正なデータと偽のデータとにおいて同じとなっているのが好ましい。この場合、“金持”、“貧乏”、“順風”は、漢字という属性を有する文字の文字列となっている。
【0043】
次にフィールドデータ送信部106は、フィールドデータ受付部104が受け付けたデータおよび偽フィールドデータ追加部105により追加された偽のデータを、通信網10を介して、サーバ102へ送信する。
【0044】
フィールドデータ送信部106は、
図3(b)に示されるデータを、直列させて1つのセッションを用いて、サーバ102へ送信してもよい。あるいは、複数のセッションによりサーバ102と通信が可能なようにして、
図3(b)の各行として示されるデータをそれぞれ異なるセッションに並列させて送信してもよい。
【0045】
なお、
図3(b)においては、フィールドデータ受付部104が受け付けて変換したデータが1行目に配置されて示されている。ただし、本願発明は、これに限定されるものではなく、フィールドデータ受付部104が受け付けて変換したデータは、任意の位置に配置されてもよい。
【0046】
例えば、フィールドデータ受付部104が受け付けて変換したデータおよび偽フィールドデータ追加部105により追加されたデータのハッシュ値を計算し、ハッシュ値を数値と解釈して昇順または降順に並べ替えた状態でフィールドデータ送信部106はデータを送信することもできる。
【0047】
フィールドデータ送信部106により送信されたデータは、サーバ102のフィールドデータ受信部108により受信され、サーバ102のメモリ領域に格納される。
【0048】
次に、真正フィールドデータ選択部109が、メモリ領域に格納されたデータから、偽フィールドデータ追加部105が追加したデータを除くデータである真正なデータを選択する。選択されたデータは、処理部107の後続の処理を行う部(モジュール)に転送される。この場合は、「銀行=“金持”&支店=“黄金”&口座=“普通”&番号=“1234567”&金額=“100,000”&Ser=10」というデータとして転送される。
【0049】
真正フィールドデータ選択部109が、データが真正であるかどうかを判断する手法には、いくつかの手法が考えられる。例えば、偽フィールドデータ追加部は、利用者が以前のセッションにおいて端末101を用いて送信した真正なデータを端末101の記憶部に記憶し、次のセッションにおいて、記憶されたデータを読み出すことにより生成し、フィールドデータ受付部104が受け付けたデータに追加する。真正フィールドデータ選択部109は、以前のセッションにおいて受信されたデータは真正でないと判断し、以前のセッションにおいて受信されていないデータを真正であると判断する。
【0050】
なお、振込処理においては、異なる日時に同じ利用者が同じ振込先に同じ金額を振り込む場合があり、この場合には、真正となるべきデータが、以前のセッションにおいても送信されているために、偽のデータとして判断される可能性がある。そこで、
図3に示すようにフィールドデータ受付部104は、受け付けたデータに、例えば「Ser=10」のように、以前のセッションに送信されたデータと区別するためのデータを付加してもよい。
【0051】
また、真正フィールドデータ選択部109は、上述したように、データおよび偽のデータのハッシュ値などに基づいて並べ替えて送信される場合には、データおよび偽のデータが受信された順序における特定の位置に配置されているデータを真正なデータとしてもよい。特定の位置をいずれにするかは、例えば、利用者に渡したトークンカードなどによって生成された数字を利用者が入力して決定されてもよい。
【0052】
図4は、システム100における送受信のシーケンス図を示す。ステップS401において、端末101からサーバ102に、画面情報要求が送信される。この画面情報要求は、
図2(a)に示す認証用の画面のHTMLなどによる記述である画面情報を要求するためのものである。
【0053】
ステップS402において、サーバ102は、画面情報要求に応じて、画面情報を端末101に送信する。画面情報が端末101において受信されると、例えば、画面201が端末101のディスプレイに表示される。
【0054】
利用者が端末101のディスプレイに表示された画面201に必要な情報(この場合は、認証情報)を入力すると、ステップS403において、端末101からサーバ102に認証情報が送信される。
【0055】
サーバ102において認証に成功すると、ステップS404において、次画面情報がサーバ102から端末101へ送信される。次画面情報は、例えば、画面211を端末101のディスプレイに表示するためのHTMLなどによる記述である。
【0056】
画面211が端末101のディスプレイに表示され、利用者が例えば振込ボタン213を押下などして、振込を選択すると、その選択の内容を示す選択情報がステップS405に端末101からサーバ102に送信される。
【0057】
サーバ102が選択情報を受信すると、受信した選択情報に応じて、ステップ406において、次次画面情報を送信し、端末102が受信する。次次画面情報は、例えば、画面221を端末101のディスプレイに表示するためのHTMLなどによる記述となる。
【0058】
画面221が端末101のディスプレイに表示され、利用者が振込に必要な情報を入力し、振込ボタン227を押下などすると、上述したように、フィールドデータ受付部104、偽フィールドデータ追加部105、フィールドデータ送信部106が動作し、
図3(b)に示すようなデータが、ステップS407において、端末101からサーバ102に送信される。
【0059】
その後、サーバ102において、フィールドデータ受信部108および真正フィールドデータ選択部109が動作し、選択がされた振込処理が行われ、処理が完了すると、ステップS408において、サーバ102から端末101に処理が完了した旨を端末101のディスプレイに表示するための完了画面情報が、サーバ102から端末101に送信される。
【0060】
図5は、端末101における処理を説明するフローチャートである。ステップS501において、例えば振込ボタン227が押下などされるまで待つ。ステップS502において、フィールドデータ受付部104により入力エリアに入力されたデータの読み取りがされる。ステップS503において、偽フィールドデータ追加部105により、偽のデータが追加される。ステップS504において、フィールドデータ送信部106により、データの送信が行われる。
【0061】
図6は、サーバ102における処理を説明するフローチャートである。ステップS601において、フィールドデータ受信部108によりデータの受信がされるまで待つ。フィールドデータ受信部108によるデータの受信がされると、受信されたデータがサーバ102のメモリに記憶される。ステップS603において、真正なデータの選択が真正フィールドデータ選択部109によりされる。ステップS604において、真正フィールドデータ選択部109により選択された真正なデータによる処理が行われる。
【0062】
以上のように、本実施形態においては、ユーザが端末に入力したデータに、真正ではない偽のデータが追加されてサーバに送信される。このため、中間者攻撃が行われても、どれが真正なデータであるのかを判断するのが困難となり、改ざんなどによる被害を受けることが少なくなる。このため、より安全な通信が実現される。
【0063】
また、中間者攻撃が行われている場合、通信の内容が中間者によって通信の内容が書き換えられるが、書き換えを、データおよび偽データがサーバ102のフィールドデータ受信部108により受信される時間の揺らぎによって検出することも可能である。また、長時間が経過したことが明白である場合には、通信により発生したトランザクションや取引を取り消すようにしてもよい。これまでの通信の履歴からある画面が端末に表示されてから端末から送信されるデータが受信されるまでの時間の平均を算出しておき、その平均よりも例えば3倍以上の時間が経過した場合には、長時間が経過したことが明白であるとみなす。このような時間の平均は、ユーザごとに算出しておくのが好ましい。
【0064】
(実施形態2)
実施形態1においては、ユーザが入力した真正なデータに偽のデータを追加して送信している。本発明の実施形態2においては、ユーザが入力したデータに偽のデータを追加することに加えて、ユーザが操作する真正なワークフローに加えて、偽のワークフローを生成して、中間者攻撃を困難にすることについて説明する。
【0065】
図7は、本実施形態に係るシステム700の機能ブロック図を示す。システム700は、端末701と、サーバ702とを備え、端末701とサーバ702とは、インターネットなどの通信網70を介して通信を行うことができる。実施形態1と同様に、端末の台数およびサーバの台数は1台に限定されることはなく、システム700においては、任意の台数の構成であってもよい。
【0066】
端末701は、ブラウザ部703を有し、ブラウザ部703は、ユーザワークフロー部
704と偽ワークフロー部705とを有する。サーバ702は、ユーザワークフロー処理部706と偽ワークフロー処理部707とを有する。
【0067】
ユーザワークフロー部704は、ユーザによる画面遷移によるワークフローを端末701において実行する部である。例えば、通常のブラウザのようにサーバ702から送信された画面情報に従って画面を表示し、ユーザの操作に応じて、サーバ702に要求などを送信し、それに応じて送信される画面情報を次に表示する。
【0068】
ユーザワークフロー処理部706は、ユーザワークフロー部704により生成された要求を処理し、端末701のディスプレイに次に表示する画面情報を端末701へ送信する。
【0069】
偽ワークフロー部706は、ユーザの意図によらない偽のワークフローを端末701において実行する。例えば、画面遷移の状態遷移を示すデータを端末701のメモリなどに記憶しておき、その状態遷移を示すデータに従って、次の状態に移るための要求をサーバ702に送信し、それに応じて送信される画面情報を受信することを繰り返す。例えば、状態遷移において分岐がある場合には、ランダムに分岐先を選択してワークフローを実行する。
【0070】
偽ワークフロー部707は、偽ワークフロー部706により生成された要求を処理し、次の画面情報を端末701へ送信する。
【0071】
ユーザワークフロー部704によるワークフローであるのか、偽ワークフロー部705によるワークフローであるかどうかは、例えば各ワークフローにおいて行われる利用者の認証を行った際に、認証に成功したワークフローがユーザワークフロー部704によるワークフローとし、認証に失敗したワークフローが偽ワークフロー部705によるワークフローとすることもできる。
【0072】
本実施形態においては、実施形態1のように、ユーザワークフロー部704は、偽のデータを追加し、サーバに送信し、ユーザワークフロー処理部706は、真正なデータを選択し、処理を行う構成とすることもできる。
【0073】
本実施形態においては、複数のワークフローが生成され、その中には偽のワークフローが含まれる。このため、このため、中間者攻撃が行われているとしても、どれが真正なワークフローであるのかを判断するのが困難となり、改ざんなどによる被害が生じることが少なくなる。このため、より安全な通信が実現される。
【0074】
(実施形態3)
実施形態2においては、主に、真正なワークフローと偽のワークフローとを異なるワークフローとして説明した。しかし、本発明はこれに限られるものではなく、真正なワークフローにおいて画面遷移が発生すると、真正なワークフローから偽のワークフローが分岐するようにすることもできる。
【0075】
この場合、ユーザワークフロー処理部706が画面遷移などを処理すると、画面遷移などが処理されたことを示す情報が偽ワークフロー処理部707に伝達され、偽ワークフロー処理部707は、真正なワークフローから偽のワークフローを分岐させるための画面情報を端末701の偽ワークフロー部705に送信する。この場合、偽のワークフローを分岐させるための画面情報は、端末701のディスプレイには表示されないようにするのが好ましい。例えば、偽のワークフローを分岐させるための画面情報が表示される座標位置を端末701のディスプレイの表示範囲外と設定することにより、レンダリングの対象から偽のワークフローを分岐させるための画面情報をはずす。
【0076】
また、真正なワークフローから偽のワークフローが分岐する場合、偽のワークフローの数は1に限定されることなく、任意の数とすることができる。
【符号の説明】
【0077】
100 システム、101 端末、102 サーバ、103 ブラウザ部、104 フィールドデータ受付部、105 偽フィールドデータ追加部、106 フィールドデータ送信部、107 処理部、108 フィールドデータ受信部、109 真正フィールドデータ選択部109