【文献】
及川 晴生,VPN相互接続への道 低価格VPNルータで相互接続実験 設定に必要なIPsecの知識,NETWORK MAGAZINE,日本,株式会社アスキー,2003年 4月 1日,第8巻,第4号,p.140-p.143
(58)【調査した分野】(Int.Cl.,DB名)
外部ネットワークからアクセスしようとする外部リクエスト端末と、ファイアウォールを有しそのアクセスを受け付ける通信機能付き機器とに、予め定めた認証の書式を記録しておき、
上記外部リクエスト端末は、その認証の書式に沿った数列をパケットのポート番号として埋め込み可能なサイズに分割した情報として、一連のパケットの送信元ポート番号部分のみに埋め込み連続して上記機器へ送出し、
上記機器は、ファイアウォールで受信したパケットの送信元ポート番号の連続するパタンを監視して、記録しておいた上記の認証の書式を参照し、そのパタンが上記の認証の書式に沿ったものであることを検出したら、アクセスを受け入れるためのアクセス対象機能部を実行させる、ファイアウォールを用いた認証方法。
上記の予め定めた認証の書式が、上記機器と上記外部リクエスト端末とが共有する共通鍵と、上記機器が認識する上記外部リクエスト端末の送信元IPアドレスとからハッシュ値を生成し、パケットの送信元ポート番号に格納可能なサイズに分割した数列を、認証のたびに生成させて認証を行う請求項1に記載の認証方法。
【背景技術】
【0002】
従来のネットの利用は、ユーザ端末側からサーバへリクエストを送り、そのレスポンスを受け取るものであった。しかし、スマートフォンの普及に伴って、外出先から自宅のネットワークにリモートアクセスして自宅のホームネットワークファイルサーバを利用したり、IP電話ソフトを使って通話させるために外部から通話を呼び出したりといった形で、外部からの要求に応じてソフトウェアを起動させる利用方法が拡大している。
【0003】
しかし、そのような外部ネットワークからのアクセスを受けるためにポートを開け放っておくと、そこがセキュリティホールとなってしまう。これに対して、そのポートで待ち受けているアプリケーションの中でユーザID/パスワードなどを用いて認証することによりセキュリティを確保する手法が知られている。しかしこの手法が安全であるには、そのアプリケーションがパケットを受信してから認証を行うまでのシーケンスの中にセキュリティホールが存在しないことが前提となる。実際にはそのようなネットワークソフトウェアにセキュリティホールが無いことは担保できない。
【0004】
従って、通信アプリケーションで発生するセキュリティリスクを最大限に回避するには、不正パケットを当該アプリケーションに一切読み込ませないことが望ましい。そのためには、平常時はアプリケーションを停止させておき、必要に応じて立ち上げることができれば理想的である。
【0005】
これに類する方法として、特許文献1にポート開放要求の取り扱い手法が提示されている。この技術は、外部からポート開放要求を受ければ、その開放要求を認証し、認証に成功すれば配下端末リストを応答し、端末名を相手に指定させて、該当ポートを開くものである。
【0006】
また他の方法として、特許文献2にはIP電話に関する技術として、なりすましによる不正アクセスパケットを排除するため、相手端末と音声通信を開始するIP電話端末において、音声パケットに適用すべき宛先ポート番号を互いに指定し合って、受信パケットの送信元IPアドレスと宛先ポート番号をチェックして、受信パケットが不正パケットと判断された場合は、受信パケットを廃棄するという手法が提案されている。
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1に記載の手法では、「必要である」という事を外部から通知するために別のアプリケーションを使用する以上、そのアプリケーションにはポート開放要求を待ち受ける機能を持たせることになる。この機能そのものがセキュリティホールを有していた場合、ネットワークからのアタックを防ぎきれなくなるおそれが高くなる。
【0009】
また、特許文献2に記載の手法では、認証行為をアクセス対象機能(SIP機能)自身が実施している。該当パケットを対象機能自身が受け取って処理してしまっているため、パケットの受信から認証完了までのフローにセキュリティホールが内在していた場合に対応できなかった。
【0010】
そこでこの発明は、セキュリティリスクがより低い手法で、外部からのリクエストにより通信を開始できるようにすることを目的とする。
【課題を解決するための手段】
【0011】
この発明は、外部ネットワークからアクセスしようとする外部リクエスト端末と、ファイアウォールを有しそのアクセスを受け付ける中継装置やユーザ端末などの通信機能付き機器とに、予め定めた認証の書式を記録しておき、
上記外部リクエスト端末は、その認証の書式に沿った認証用データを、TCPやUDPなどのパケットのポート番号として埋め込み可能なサイズに分割し、一連のパケットのポート番号部分に埋め込み順番に連続して上記機器へ送出し、
上記通信機能付き機器は、ファイアウォールで受信したパケットのポート番号の連続するパタンを監視して、記録しておいた上記の認証の書式を参照し、そのパタンが上記の認証の書式に沿ったものであることを検出したら、アクセスを受け入れるために上記ファイアウォールにアクセスのためのポートを開放したり、アクセスを受け入れる所定のソフトを立ち上げたりするようにすることで、上記の課題を解決したのである。
【0012】
すなわち、ファイアウォール機能におけるパケット情報の取得処理は必ず実施しなければならない処理であるが、上記機器で実施される実施される処理の中でも、最も早い段階で処理されるものである。そこに認証機能を持たせることによって、セキュリティホールに繋がるような新たな受け付け用ポートの常時開放を行わなくても、リクエストの受付が可能となる。ファイアウォール機能が触れる情報は、IPヘッダやTCP/UDPヘッダに」設定されている、IPアドレスやポート番号といったごく単純な情報であるため、悪意あるユーザがパケットを工夫してバッファオーバーフローなどの不具合を誘発させることが難しい。もしIPヘッダやTCP/UDPヘッダなどの基本的な情報を改変すると、途中のルータなどで正しくルーティングされなかったりしてそもそも上記機器まで到達させることが難しくなるので、外部からアクセスする際にこれらの部分に異常値を紛れ込ませられる可能性は低い。このためファイアウォール自体の高い安全性も保持できる。また、一つのパケットのポート番号ではなく、連続するパケットのポート番号を一揃えで認証することで、認証に必要なbit数を確保することができ、総当たりで突破することも難しいものとすることができる。
【0013】
具体的には、上記機器のファイアウォール機能部に、受信したパケットのポート番号を取得するパケット情報取得部を持たせ、
また、ファイアウォール機能部によってソフトウェアとして外部から守られた部分に、認証のための数列を記録する鍵テーブルと、前記の取得されたパケットのポート番号の連続を、その鍵テーブルと比較参照するパタン解析部とを有する認証機能部を持たせ、認証に成功したらファイアウォールのポートを開けたり、IP電話用ソフトなどのアクセスを受け入れるソフトウェアを起動させたりするアクセス対象機能部を実行させる。対する、外部からアクセスしようとする端末には、予め定めた認証の書式に従い上記の数列に適合したデータを連続するパケットのポート番号に埋め込んで、連続送出する認証情報埋込パケット連続送出機能を持たせる。
【0014】
ここで、認証のための数列とは、例えば16ビットで表せる範囲の数値の連続からなる数列を受信パタンとして予め取り決めておいてもよいし、認証用の共通鍵と上記機器が認識する外部リクエスト端末の送信元IPアドレスとからハッシュ値を生成させて16bitごとに分けた数列を認証のたびに自動的に生成するものでもよい。外部リクエスト端末がそれに適合するデータを送出する際には、その数列を個々の数値ごとに分けて連続するパケットの送信元ポート番号や宛先ポート番号の項目にそのまま埋め込むという方式や、所定の暗号化を施した上で埋め込んでも良い。例えば128bitのMD5であれば、8箇所のポート番号に埋め込むことで送出できる。上記鍵テーブルにはこの数列や変換された数字列が比較可能な形式で常時保存又は一時保存される。16bitごとに分けられた形で格納されていると比較しやすい。なお、共通鍵を用いる場合には、上記機器は鍵テーブルとは別にそれを記憶部に保存しておき、上記外部リクエスト端末も共通鍵を保持しておく必要がある。
【0015】
上記の数列は長い方がセキュリティ強度は高くなるが、その分必要とするパケット数が増えるため、パケットロスによりパケットが届かずに認証に失敗する可能性も高くなる。このため、外部リクエスト端末は、認証用に用いる一連のパケットを、一定間隔を置きながら何度か送信するとよい。
【0016】
この認証の書式に従ったデータの送出に用いるポート番号部分は、パケットの送信元ポート番号と宛先ポート番号との二箇所があってそれぞれ16bitの長さを持っており、いずれかを単独で認証に用いたり、両方を認証に用いてもよい。両方を用いる方が少ないパケット数でデータを送信できる。ただし、宛先ポートによってはすでに特定の番号にファイアウォールに許可ルールが設定されていたり、何らかのアプリケーションが待ち受けている可能性があるため、比較的自由に設定できる送信元ポート番号のみを認証に使うとエラーが比較的起こりにくくなる。
【発明の効果】
【0017】
この発明により、外部のネットワークから通信を行う場合、平常時は当該通信を行うアプリケーションを停止させておいたり、ポートを閉じておいたりすることができ、セキュリティリスクを低減させることができる。そして、必要時には安全な方法でアプリケーションを外部から起動させたり、ポートを開かせたりすることができる。
【発明を実施するための形態】
【0019】
以下、この発明について具体的な実施形態を挙げて説明する。
外部ネットワーク3に接続された外部リクエスト端末2から、ファイアウォールに保護された機器にアクセスする実施形態として、ここでは中継装置1へのアクセスを行う場合を例に説明する。
図1はこの実施形態でアクセスする機器である中継装置1の機能ブロック図であり、
図2はこの実施形態を進める際のシーケンス図である。
【0020】
中継装置1は、内部ネットワーク4と、外部ネットワーク3との間にある中継装置であり、例えば家庭用ルータなどのホームゲートウェイのようなゲートウェイとして機能する装置である。外部ネットワーク3からのアクセスに対しては、一部のパケットのみ通過させるファイアウォール機能を発揮させる。
【0021】
内部ネットワーク4とは、家庭用ルータなどである中継装置1で外部ネットワーク3と区切られた、ホームネットワークなどのネットワークである。一般家庭のLANや、特定の法人内LANでもこの発明は実施可能である。
【0022】
外部ネットワーク3とは、内部ネットワーク4とは中継装置1で区切られた、特定個人又は一般の法人が管理するものではなくセキュリティリスクを有するネットワークであり、一般的にはインターネットである。ただし、特定の通信事業者によって管理される広域ネットワークでも本発明は利用可能である。
【0023】
外部リクエスト端末2は、外部ネットワーク3に直接又は間接に接続され、内部ネットワーク4の中継装置1又は内部端末5に対してアクセスを求めるものである。例えば、ファイルサーバ機能を起動させてファイルを読み出そうとするノートパソコンや、IP電話による発呼を行おうとするフィーチャーフォン、スマートフォンなどが挙げられるが、UDP/TCPパケットを送出するネットワーク機能を有する端末であれば特に限定されるものではない。携帯端末である必要もなく、デスクトップパソコンやブレードサーバなどであってもよい。
【0024】
中継装置1は、外部ネットワーク3からの通信に対して防護を行うファイアウォール機能部10と、ファイアウォール機能部10で受けた情報を元に認証を行う認証機能部20と、アプリケーションの起動やポートの開放などを行わせるアクセス対象機能部30とを有するほか、図示しないが、通信を中継するゲートウェイ機能、ルーティング機能など、中継装置として一般的な機能を有する。また、必要に応じて記憶部に後述する共通鍵を保持する。
【0025】
ファイアウォール機能部10は、特定の宛先ポート番号以外のパケットを破棄する等といった所定の条件に従い不要或いは危険なパケットを破棄するパケット破棄機能を実行し、中継装置1自身及び内部ネットワーク4内に、不正なパケットが侵入することを防止するソフトウェア又はその機能を有するチップなどのハードウェアである。ただし、パケットの破棄の有無に関わらず、受信したパケットのヘッダ部分の情報を取得するパケット情報取得部11を有し、その情報を次の認証機能部20へ渡すパケット情報受渡機能も実行する。
【0026】
認証機能部20は、予め定めた認証の書式に従った数列を記録する鍵テーブル22と、
前記の取得されたパケットのうち同一の送信元アドレスから送信されたものに含まれるポート番号の連続を、前記の鍵テーブルと比較参照して認証するか否かを判断するパタン解析部21とを有する。鍵テーブル22は、最初から定めた数列であったり、予め外部リクエスト端末2と共有した共通鍵を用いてハッシュ値を算出する数列生成機能を実行することで生成させて一時的に記録するものであったりする。パタン解析部21は、その鍵テーブル22とパケット情報取得部11の前記パケット情報受渡機能から送られてきたパケットの情報とを比較、或いは計算処理して、送られてきたパケットのポート番号の連続によるパタンが認証の条件を満たしているか否かを判断する認証解析機能を実行し、認証されたら後述のアクセス対象機能部30へ実行指示を出す実行指示機能を実行する。また、処理に時間制限を設けるためのタイマ24を有する。
【0027】
上記の鍵テーブル22の例を
図3に示す。この例では、受信すべきパケットのプロトコルがUDPで、宛先ポート番号は特に限定されないが、同一の送信元IPアドレスから発せられた連続して受信した8つのパケットの送信元ポート番号が順番に「10001,10002,10001,10010,20000,12345,20000,10001」であった場合にのみ認証を通過させるものである。順序を考慮しなくても実施可能であるが、パタン解析部21の負担が上がることと、セキュリティは低下するため、順番も鍵テーブル22の通りとなっていることが好ましい。
【0028】
なお、このような鍵テーブル22又はその元となる共通鍵は、複数個あってもよい。鍵テーブル22ごとに認証通過後に起動させるアプリケーションを変えたり、開放させるポートを変えたりすることができる。
【0029】
また、上記の鍵テーブル22の例としては、このような固定的なテーブルではなく、共通鍵のみ保持しておき、パケットを受信しはじめたら、そのパケットのIPヘッダに含まれる送信元IPアドレスなどの変動要素と共通鍵とから動的に鍵テーブル22を生成してもよい。この場合、認証を行う外部リクエスト端末2も、共通鍵と自身のIPアドレスから同じ文字列を生成して、順にパケットに載せて送出することで認証が可能となる。
【0030】
アクセス対象機能部30は、外部リクエスト端末2が起動を求めるアプリケーションを起動させたり、所定のポートを開放したりといった、外部リクエスト端末2が必要とする通信確立のための処理を実行する。アプリケーションを起動させる場合、中継装置1が内部端末5に起動させる場合と、中継装置1自体がサーバとしてサービスを起動させる場合と、内部端末5自体が自らアプリケーションを起動する場合とがある。また、このアクセス対象機能部30が実際に実行する形態は一つである必要はなく、認証されたパタン(すなわち鍵テーブル22の中身や共通鍵の種類など)の違いによって、異なるアプリケーションを起動させたり、異なるポートを開放させたりしてもよい。アクセスを求める外部リクエスト端末2の求める機能は特に制限なく、ファイルサーバ機能やIP電話機能や、ネットワークに繋がったHDDレコーダの予約など、内部ネットワーク4のどの内部端末5次第でもあり、必要な機能は様々だからである。
【0031】
このような中継装置1に対して、外部リクエスト端末2は、そのままでは必要とする機能を起動させられず、アクセスできないので、中継装置1は一定のセキュリティを保持している。例えば、IP電話用アプリケーションが内部端末5で立ち上がっていなければ、パケットを送っても意味がない。そこで、連続するパケットに、上記の鍵テーブル22に対応した認証情報を載せて送出する。ここで、受信パタンが固定されている場合はそのパタン通りに送出し、共通鍵と送信元IPアドレスから動的にテーブルを生成する場合は、中継装置1にパケットが到着する際の送信元IPアドレスを取得して、算出し、動的な数字列であるテーブルを生成させる。
【0032】
このパケットを受信するファイアウォール機能部10の動作フローについて、
図4を用いて説明する。まず(S101)、外部ネットワーク3から送信されてきたパケットをファイアウォール機能部10にて受信する(S102)。なお、実際には中継装置1の中ではネットワークインターフェース部分が最初に受信することになるが、ここでは信号をパケットの形に復元した以降の扱いについて述べる。ファイアウォール機能部10のパケット情報取得部11は、パケットのヘッダ情報を取得する(S103)。ここでパケットのペイロードまでチェックしないことによりファイアウォール機能部10のセキュリティを維持することが望ましい。このヘッダ情報を得た後、次の二つの処理(S104及びS111)を並列に、又は遅延しすぎない程度に前後して進行させる。すなわち、S104及びS111はどちらが先でも構わない。
【0033】
このS104で実行するファイアウォール処理機能は、一般的なファイアウォールと同様に、所定のファイアウォールのルールに従ったパケットの中継又は破棄である。パケット情報取得部11で得たパケットのヘッダ情報から、中継を認めていない宛先ポート番号のパケットや、アクセスを許否する送信元IPアドレスのパケットなどを破棄することで、中継装置1より中の内部ネットワーク4のセキュリティを維持する。一方で、中継が認められているポート番号及びアドレスを有するパケットは中継する。ファイアウォールの基本的機能としてはそれで完了となる(S105)。
【0034】
ファイアウォール機能部10は、上記のパケットの中継又は破棄と、並列又は前後して、パケット情報取得部11で得られたパケットのヘッダ情報(基本的には「IPヘッダ」「UDPヘッダ」「TCPヘッダ」であり、以下、まとめて「パケット情報」と略記することがある。)を認証機能部20のパタン解析部21へ通知するパケット情報通知機能を実行する(S111)。ここで通すのはパケットそのものではなく、抽出したヘッダの情報のみであり、バッファオーバーフローによって突破される可能性を低く抑えている。なお、通知は1つのパケットを受信するごとに行い、ファイアウォール機能部10自身でバッファに一時保持して複数のパケット分の情報をまとめて送ることもできる。
【0035】
この通知を受けて次の認証処理へ移る(S112→S154)。認証機能部20における実施形態は、鍵テーブル22の中身が予め固定されている場合と、動的に生成する場合との二通りが挙げられる。先に、
図5を用いて鍵テーブル22の数列が予め設定されている場合のフローについて説明し、次に
図6及び7を用いて鍵テーブル22を動的生成する場合のフローについて説明する。
【0036】
図5は、鍵テーブル22の数列が予め設定されている場合の、認証機能部20における処理フロー図である。フローにおける変数iの初期値は1(S152)、送信元アドレスを格納する変数aの初期値はnullである(S153)。この状態で、パケット情報取得部11から得たパケットのヘッダ情報を取得して処理を開始する(S112=S154)。
【0037】
フローとしては、ここで後述するタイマ24による制限時間が満了したか否かを判断し、満了していれば別フローへ移る(S155→Yes,S156)。初期時点ではタイマ24による制限時間が設定されていないのでここは次へ移る(S155→No)。アイドル時は、パケット情報取得部11からパケット情報が通知されるまで待機する(S157→No→S158→S154)。パケット情報が通知されたら(S157→Yes)、処理を開始する(S161)。
【0038】
初期時点ではi=1であるので(S161→Yes)、送信元アドレスのチェック(後述するがS162で行う。)を省き、パケット情報に含まれるポート番号(仮に、送信元ポート番号又は宛先ポート番号のみを使う場合を想定する。)を、鍵テーブル22のi=1番目のエントリと比較する(S163)。一致していなければ(S163→No)、それは本発明を利用した認証のためのパケットではないと判断して(S164→S172)、設定値は初期値のままで(S173,S174)タイマ24も発動させていないが(S175)、そのまま最初に戻る(S176→S154)。鍵テーブル22のi=1番目のエントリと一致していれば(S163→Yes)、ここでは最初のエントリなので(S165→Yes)、当該パケットの送信元アドレスを変数「a」に代入し(S166)、タイマ24による時間カウントを開始する(S167)。これはすなわち、所定の時間内に同一の送信元アドレスから来たパケットについてのみ、認証のために鍵テーブル22のエントリと一致しているかを続けて確認するための条件である。基本的に鍵テーブル22のエントリは、偶然の一致での突破を極めて起こりにくくするために複数個からなっており、エントリ数は1ではないため(S168→No)、変数iを+1して(S169)、次のパケットを待つ(S170→S154)。
【0039】
二つ目以降のパケット待ちの折に、タイマ24によって先に定められた制限時間がすでに経過していれば(S155→Yes)、タイムアウトとみなして(S156→S164)、i=1に戻し(S173)、変数「a」から送信元アドレスをクリアし(S174)、タイマ24による時間をリセットして(S175),再び鍵テーブル22の一つ目のエントリに一致するパケットが来るのを待つ(S176→S154→S155→S157→S158→S154)。
【0040】
タイマ24による制限時間内で(S155→No)次のパケットを受け取ったら(S157→Yes)、今度は(S161→No)そのパケットの送信元アドレスが、変数「a」に格納した先のパケットの送信元アドレスと一致するか否かを判断する(S162)。一致しなければ(S162→No)、それは現在認証保留中の一連のパケットとは別の送信元から発せられたものであるため、認証を行わず次のパケットを待つ(S163→S154)。ここはすなわち、二つ以上の送信元アドレスからの認証を同時に受け付けて処理が錯綜することを避けるためのフローである。この場合、仮に後から認証を行おうとした送信元は最初から一連のパケットを再送信して認証を試みることになる。
【0041】
送信元アドレスが変数「a」に格納した先の送信元アドレスと一致していれば(S162→Yes)、引き続いて、そのパケットのヘッダの送信元ポート番号が、鍵テーブル22のi番眼のエントリと一致しているか否かを判断する(S163)。一致していなければ(S163→No)、そこまでの一致が偶然であったか、あるいは認証のミスであるか、いずれにしても認証の失敗として(S164→S172)、変数とタイマを初期値に戻して(S173〜S175)、次のパケットを待つ(S176→S154)。一致していれば(S163→Yes)、i番目までは鍵テーブル22のエントリと一致したということになる(S165→No)。そこまでが鍵テーブル22のエントリの全てでなければ(S168→No)、変数iに+1して(S169)認証作業を続ける。その時点のiが鍵テーブル22のエントリ数に到達していたら(S168→Yes)、認証成功と判断して(S171)、アクセス対象機能部30を起動させ、必要なポートを開放する。その後、次の認証に備えて変数をリセットする(S173〜S175)。
【0042】
なお、この
図5のフローで、宛先ポート番号と送信元ポート番号との両方を用いる場合は、いずれのポート番号を先に取り扱うものかを、送信する外部リクエスト端末2と中継装置1との両方に同一の設定で保存しておき、S161のパケット情報との鍵テーブル22のエントリとの対比を、i番目だけでなく(i+1)番目と同時に行い、S169のiの加算を+1ではなく+2とし、S168の判断を「鍵テーブル22のエントリ数は(i+1)以下か?」と変更する。
【0043】
図6は、鍵テーブル22を生成する場合の認証機能部20における処理フロー図である。ただしこのフローを実行する前に、認証しようとする外部リクエスト端末2のIPアドレスの条件値を保有しておくとよい。具体的には、特定の携帯電話キャリアのIPアドレス範囲や、特定のプロバイダ、特定の法人が保有するIPアドレス範囲を保有しておき、サービスの対象となるそれらのIPアドレスに対してのみ本発明を実行することができる。
【0044】
まず(S211)、フローにおける変数iの初期値は1(S212)、生成前に鍵テーブル22をクリアする(S213)。この状態で、パケット情報取得部11から得たパケットのヘッダ情報を取得して処理を開始する(S112=S214)。
【0045】
フローとしては、ここで後述するタイマ24による制限時間が満了したか否かを判断し、満了していれば別フローへ移る(S215→Yes,S216)。初期時点ではタイマ24による制限時間が設定されていないのでここは次へ移る(S215→No)。アイドル時は、パケット情報取得部11からパケット情報が通知されるまで待機する(S217→No→S218→S214)。パケット情報が通知されたら(S217→Yes)、送信元IPアドレスが認証対象のIPアドレスか否かを判断する(S219)。例えば携帯電話キャリアが違ったり、プロバイダが違うなど、認証対象のIPアドレスでなければ(S219→No)、当該パケットは無視して再びパケットの通知を待つ(S220→S214)。一方、認証対象のIPアドレスであれば、処理を開始する(S221)。
【0046】
初期時点ではi=1であるので(S221→Yes)、鍵テーブル22の動的な生成処理を行う(S222)。
【0047】
この動的生成のフローについて
図7を用いて説明する。まず(S251)、取得した送信元IPアドレスと共通鍵とからハッシュ値を計算する(S252)。また、新たに生成することになるので鍵テーブル22はここで初期化する(S253)。ここで、中継装置1と外部リクエスト端末2とが認証のために使用するポート番号がいずれかによって扱いが変わる(S254→S255〜S257)。送信元ポート番号のみを認証に用いる場合は、鍵テーブル22に対して、上記の算出したハッシュ値を2バイト(16bit)ずつに分割した値を、送信元ポート番号の項目に割り当て設定したエントリを追加する(S255)。このとき、上記の
図3のように宛先ポート番号は指定しない「any」となり、どのような値であれ条件を満たすものとなる。エントリ数は、ハッシュ値が128bitであれば、
図3のように8エントリとなる。宛先ポート番号と送信元ポート番号との両方を認証に用いる場合は、鍵テーブルに対して、上記の算出したハッシュ値を2バイト(16bit)ずつに分割した値を、宛先ポート番号と、送信元ポート番号の項目に割り当て設定したエントリを追加する(S256)。順番はどちらが先でもよいが、システム全体を通してどちらが先かを統一しておく必要がある。宛先ポート番号のみを認証に用いる場合は、鍵テーブル22に対して、上記の算出したハッシュ値を2バイト(16bit)ずつに分割した値を、宛先ポート番号の項目に割り当て設定したエントリを追加する(S257)。このとき、送信元ポート番号は指定しない「any」となり、どのような値であれ条件を満たすものとなる。これらいずれかの手法で鍵テーブル22を生成する(S258)。
【0048】
再び
図6のフローの説明に戻る(S222〜)。ここで、タイマ24による制限時間のカウントを開始する(S223)。動的生成させた鍵テーブル22について、別途有効期限を設定しておき、その設定した時間を超えたら鍵テーブル22を破棄することで、認証を不正に突破される可能性を低下させるためである。それから、パケット情報に含まれるポート番号(仮に、送信元ポート番号又は宛先ポート番号のみを使う場合を想定する。)を、鍵テーブル22のi=1番目のエントリと比較する(S231)。一致していなければ(S231→No)、それは本発明を利用した認証のためのパケットではないと判断して(S232→S242)、設定値は初期値のままで(S243),鍵テーブル22を初期化し(S244)、タイマ24を停止させて(S245)、そのまま最初に戻る(S246→S214)。鍵テーブル22のi=1番目のエントリと一致していれば(S231→Yes)、ここでは最初のエントリでかつ基本的に鍵テーブル22のエントリは偶然の一致での突破を極めて起こりにくくするために複数個からなっているので、エントリ数は1ではなく(S233→No)、変数iを+1して(S234)、次のパケットを待つ(S235→S214)。
【0049】
二つ目以降のパケット待ちの折に、タイマ24によって先に定められた制限時間がすでに経過していれば(S215→Yes)、タイムアウトとみなして(S216→S242)、i=1に戻し(S243)、鍵テーブル22を初期化し(S244)、タイマ24による制限時間をリセットして(S245),再び鍵テーブル22の一つ目のエントリに一致するパケットが来るのを待つ(S246→S214→S215→S217→S218→S214)。
【0050】
タイマ24による制限時間内で(S215→No)次のパケットを受け取ったら(S217→Yes)、今度は(S221→No)そのパケットの送信元アドレスが、現在扱っている認証対象のIPアドレスと一致するか否かを判断する(S225)。一致しなければ(S225→No)、それは現在認証保留中の一連のパケットとは別の送信元から発せられたものであるため、認証を行わず次のパケットを待つ(S226→S214)。ここはすなわち、二つ以上の送信元アドレスからの認証を同時に受け付けて処理が錯綜することを避けるためのフローである。この場合、仮に後から認証を行おうとした送信元は最初から一連のパケットを再送信して認証を試みることになる。
【0051】
送信元アドレスが現在扱っている認証対象の送信元アドレスと一致していれば(S225→Yes)、引き続いて、そのパケットのヘッダの送信元ポート番号(又は宛先ポート番号)が、鍵テーブル22のi番目のエントリと一致しているか否かを判断する(S231)。一致していなければ(S231→No)、そこまでの一致が偶然であったか、あるいは認証のミスであるか、いずれにしても認証の失敗として(S232→S242)、変数と鍵テーブル22とタイマを初期値に戻して(S243〜S245)、次のパケットを待つ(S246→S214)。一致していれば(S231→Yes)、i番目までは鍵テーブル22のエントリと一致したということになる。そこまでが鍵テーブル22のエントリの全てでなければ(S233→No)、変数iに+1して(S234)認証作業を続ける。その時点のiが鍵テーブル22のエントリ数に到達したら(S233→Yes)、認証成功と判断して(S241)、アクセス対象機能部30を起動させ、必要なポートを開放する。その後、次の認証に備えて変数をリセットする(S243〜S245)。
【0052】
なお、この
図5のフローで、宛先ポート番号と送信元ポート番号との両方を用いる場合は、いずれのポート番号を先に取り扱うものかを、送信する外部リクエスト端末2と中継装置1との両方に同一の設定で保存しておき、S161のパケット情報との鍵テーブル22のエントリとの対比を、i番目だけでなく(i+1)番目と同時に行い、S169のiの加算を+1ではなく+2とし、S168の判断を「鍵テーブル22のエントリ数は(i+1)以下か?」と変更する。
【0053】
以上の中継装置1を用いた認証方法は、パーソナルファイアウォール機能を有するパソコンやサーバ、スマートフォンが、中継装置1で外部ネットワーク3と区切られた内部ネットワーク4内に存在している場合でも実行可能である。すなわち、上記の実施形態と同様に、端末自体のパーソナルファイアウォールであるファイアウォール機能部にパケット情報取得部を有するものとさせ、共通鍵又は鍵テーブルと、パタン解析部を有する認証機能部を有するものとさせ、アクセス対象機能部により、具体的に電話ソフトなどのアプリケーションを立ち上げたりするようにすればよい。