説明

コンピュータへのアクセス方法およびコンピュータ

【課題】安全性の高いネットワーク認証の方法を提供する。
【解決手段】
送信側のクライアント11aと受信側のクライアント11cは同一のパスワードを保有する。クライアント11aはパスワードに基づいて生成した認証コードに基づくスロット間隔でクライアント11cに複数の認証パケットを送信する。クライアント11cは各認証パケットの到着時刻に対応するスロット間隔を計測し、さらに同一のパスワードに基づいて認証コードを生成する。クライアント11cは計測したスロット間隔と生成した認証コードとを比較する。クライアント11cは両者が一致したときに認証が成功したと判断し、それまで通過を停止していたパケットをインターネット層より上位に渡す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークに接続されたコンピュータのセキュリティを確保する技術に関する。
【背景技術】
【0002】
ネットワークに接続されたコンピュータは、コンピュータ・ウイルスまたはスパイウエアといった悪意のあるソフトウエア(マルウエア)からの攻撃に晒されている。通常はウイルス・プログラムを実行しなければ被害を受けることはないが、オペレーティング・システム(OS)やアプリケーションに脆弱性がある場合は、特定のWebページにアクセスしたり、受け取った文書ファイルを開いたり等をするだけでコンピュータがマルウエアに支配されることがある。
【0003】
たとえばネットワークを通じてウイルス・コードを含むデータを送り込んでバッファ領域をオーバフローさせ、正規のリターン・アドレスをウイルス・コードのリターン・アドレスに書き換えるバッファ・オーバーフローという攻撃方法が知られている。この場合、コンピュータはネットワークに接続しているだけでウイルスに支配されてしまう。従来から、SSL(Secure Sockets Layer)でセキュアな通信経路を形成してパスワードとユーザIDを転送して行うネットワーク認証や、パケット・フィルタリングまたはアプリケーション層ゲートウエイなどの方式を採用したファイア・ウオールによりアクセス制限をすることでマルウエアの進入を防止する方法がある。
【0004】
特許文献1は、妨害行為のために送信元アドレスを書き換えた暗号化データを大量に受け取った場合に、復号しないでも正規のパケットを受け取ったか否かを判定する技術を開示する。同文献の発明では、送信装置では送信対象データを符号化して得られる符号化データの送り出し方向に、受信装置だけに正当性を証明するための正当性証明情報を未符号化状態で付加した後にネットワークを介して送信する。そして、受信装置では当該ネットワークを介して受信した符号化データに付加されている正当性証明情報の正当性が維持されているか否かを判定し、当該維持されている判定結果が得られた場合にのみ符号化データの復号化を行うようにする。
【0005】
特許文献2は、時刻情報を用いてアクセス要求者の認証を行う技術を開示する。同文献の発明では、アクセス要求端末の時刻情報取得部は、NTPサーバの送受信部を介して時刻情報取得部がクロックソースから取得した時刻情報に対してデジタル署名し、認証局システムが発行した公開鍵証明書とともにアクセス認証サーバに送信する。アクセス認証サーバは、デジタル署名された時刻情報を公開鍵で復号し、復号した時刻情報とNTPサーバから取得した時刻情報とを比較し、比較結果が所定の認証パラメータで示される基準時間の範囲内であれば、アクセス要求者によるアクセス要求端末からのアクセスを許可し、範囲外であればアクセスを許可しない。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2004−104439号公報
【特許文献2】特開2004−13374号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ネットワークを経由した外部からの攻撃は、受信側のOSやミドルウェアを含む何らかのソフトウエアの脆弱性を予め知った上で、その弱点をついてリモートからアクセスすることで行われる。 コンピュータ同士が通信するためのネットワーク・アーキテクチャは7層からなるOSI参照モデルを基本とする階層構造になっている。OSI参照モデルでは、送信側と受信側の対応する各層のコンポーネント同士がデータをやり取りして交渉しながら通信をする。受信側では物理層で受け取ったパケットが順番に上位層に渡され、最終的にアプリケーション層同士でサービスのやり取りを行うようになっている。
【0008】
各階層は複数のプロトコルで構成されているため、受信側の各層では受け取ったパケットのペイロードを解析して、上位層のいずれのプロトコルに渡すかを解析することが本質的に必要となる。既存のユーザ認証方法およびファイア・ウオールでもパケットは各層でペイロードの解析が行われ最終的にアプリケーション層でユーザ・データが処理される。ペイロードの解析のためには受信したパケットをメイン・メモリに記憶して各層の解析プログラムが読み取る必要があり、先のバッファ・オーバーフローのようなさまざまな方法での攻撃の機会を与える可能性がでてくる。
【0009】
通常は、アプリケーション層で動作するプログラムに脆弱性がある場合に最も脅威が増大するが、アプリケーション層より下層においても受け取った悪意のパケットをメイン・メモリに記憶して解析する段階で被害を受ける可能性がある。これまでの認証方法では、悪意のあるユーザから受け取ったパケットはアプリケーション層まで届く間に必ず何層かを通過することになり、潜在的な脅威から解放されることはない。この問題の本質的な解決策は、できるだけ下の階層においてペイロードを解読しないで認証し、認証したユーザから受け取ったパケットだけを上位層に送るようにすることである。
【0010】
そこで本発明の目的は、安全性の高いネットワーク認証に基づくアクセス方法を提供することにある。さらに本発明の目的は、ネットワークに接続しているだけで受ける攻撃に対抗できるネットワーク・セキュリティを確立するアクセス方法を提供することにある。さらに本発明の目的は、トランスペアレントなネットワーク認証に基づくアクセス方法を提供することにある。さらに本発明の目的は、OSに依存しないでネットワーク・セキュリティを確立するアクセス方法を提供することにある。さらに本発明の目的は、そのようなアクセス方法を実現するコンピュータ・プログラムおよびコンピュータを提供することにある。
【課題を解決するための手段】
【0011】
本発明は、常時ネットワークに接続されているコンピュータであって、ネットワークから受け取ったプログラムを実行したり、ネットワークに自らアクセスしたりしない状態で受ける攻撃に対して特に有効なネットワーク・セキュリティに基づくアクセス方法を提供する。本発明の基本的な原理は、受け取ったすべてのパケットを送信者の信頼性が確認できるまでOSI参照モデルの下層で阻止しておき、パケットの内容を解読することなく送信者の信頼性を確認した後に上位層に渡す点にある。
【0012】
具体的には、送信側のコンピュータと受信側のコンピュータがそれぞれ共有鍵に相当する認証コードを保有しており、送信側のコンピュータが認証コードを複数の認証パケットの送信タイミングに組み込んで送信し、受信側のコンピュータが認証パケットの受信タイミングから認証データを復号する点にある。したがって、受信側のコンピュータは認証パケットの受信タイミングを計測するだけで送信側の信頼性を検証できるため、認証パケットの解読に伴う攻撃の危険から保護される。受信側のコンピュータは、サーバ、ルータまたはサーバとして動作するクライアントとすることができる。
【0013】
送信側のコンピュータと受信側のコンピュータは同一の認証コードを生成する。送信側のコンピュータは、アプリケーションが認証を必要とする第2のコンピュータにアクセスを開始したタイミングに基づいて認証コードを生成することができる。そしてアプリケーション・プログラムのアクセス要求に基づいて作成されたデータ・パケットを認証が完了するまでの所定の期間送信側のコンピュータのバッファに蓄積しておけば、事前に本発明にかかる認証を行っても、送信側のコンピュータのアプリケーションに影響を与えることなく、受信側のコンピュータに対するアクセスをトランスペアレントに行うことができるようになる。
【0014】
ここで、送信側のコンピュータは認証パケットの送信タイミングを決定するために送信タイムスロットを生成し、受信側のコンピュータは認証パケットの受信タイミングを決定するために受信タイムスロットを生成する。タイムスロットとは、認証パケットの存否を画定するために時間軸上に連続的に配置した時間間隔(スロット時間)をいう。送信側のコンピュータは、認証コードから生成した送信タイミングを所定の送信タイムスロット上の認証パケットの有無で表現して受信側のコンピュータに複数の認証パケットを送信する。受信側のコンピュータは各認証パケットの内容を解読することなくそれぞれの認証パケットの到着時刻に対応する受信タイムスロットのスロット間隔を計測する。受信タイムスロットのスロット間隔は、認証パケットがそれぞれ所定値以内の転送時間で到着すれば、送信側のコンピュータが生成した送信タイムスロットのスロット間隔に一致する。
【0015】
受信側のコンピュータは計測したスロット間隔と自らが生成した認証コードを検証して、送信側のコンピュータのアクセスを許可するか否かを決定する。検証方法は、受信タイムスロットのスロット間隔から認証コードを復号して取得した認証コードと自ら生成した認証コードを比較する方法でもよいし、受信側のコンピュータが生成した認証コードから生成したタイムスロットと受信タイムスロットを比較する方法でもよい。送信側のコンピュータと受信側のコンピュータの時刻を所定の誤差の範囲で同期させておき、認証コードを送信側のコンピュータと受信側のコンピュータがそれぞれ保有する時刻情報とパスワードを含むビット列からそれぞれ生成すると、認証コードは時刻情報の変化に基づいて送信の都度変化するため安全性を向上させることができる。
【0016】
特に、認証が完了するまでの時間は認証パケットの数または認証コードのビット数に依存し、認証コードのビット数はセキュリティの強度に関連するが、認証コードが時々刻々と変化する場合は認証コードのビット数を少なくしても安全を維持することができるので本発明の認証方法に適している。各送信タイムスロットは、認証コードをパルス位置変調して生成したパルス位置変調コードに割り当てたタイムスロットで形成することができる。パルス位置変調コードは、各シンボル時間においていずれかの位置に1ビット存在するので、受信側のコンピュータは受信した認証パケットに途中で脱落があったことを容易に検出することができる。
【0017】
また各タイムロットは、認証コードのビット列を所定のビット数で区切ったコードに割り当てたタイムスロットで形成することができる。この方法は、ビット転送効率に優れている。認証コードは、受信側のコンピュータが先頭タイムスロットの基準時刻を設定できるように先頭ビットを1として生成することもできる。また、複数の認証パケットの前にプリアンブル・パケットを送信すると、認証コードの先頭ビットが0であっても受信側の先頭タイムスロットの基準時刻を設定することができるようになる。
【0018】
プリアンブル・パケットを送信する場合は、プリアンブル・パケットを送るタイムスロットのスロット時間と認証パケットを送るタイムスロットのスロット時間を関連付けておくことができる。この場合、受信側のコンピュータはあらかじめ受信タイムスロットを特定するためのスロット時間を固定しておかなくても、プリアンブル・パケットのスロット時間を計測してから認証パケットの受信タイムスロットを認識するためのスロット時間をダイナミックに設定できるようになる。
【0019】
スロット時間は短い方が認証時間も短くなるので望ましいが、認証パケットの転送時間の揺らぎで認証の失敗が発生する確率が高まる。最適なスロット時間を探索するには、プリアンブル・パケットのスロット時間と認証パケットのスロット時間の関連付けを利用することができる。最初に短いスロット時間で認証パケットを送信し、認証が成功しないと判断したときに、送信側のコンピュータが新たな認証コードに基づいて、前回送信したときに使用したタイムスロットのスロット時間よりも長いスロット時間のタイムスロットで複数の認証パケットを送る。一旦最適なスロット時間を探索した同一のIPアドレスのコンピュータ同士では、次回以降そのスロット時間を固定して使用するようにしてもよい。
【0020】
送信側のコンピュータでデータ・パケットを所定時間の間バッファに蓄積している場合は、認証パケットを送ってから所定の時間が経過した後に認証がされたものと想定してデータ・パケットをネットワークに送信することができる。データ・パケットを送信したときに認証が終了していない場合は、受信側のコンピュータから返答がないことを認識したアプリケーション・プログラムが再度受信側のコンピュータにアクセスを開始し、それに応答して先に認証手続きを再開することになる。
【0021】
あるいは、受信側のコンピュータが送信側のコンピュータにアクセスを許可したことを通知するようにすれば、送信側のコンピュータはそれに応じてユーザ・パケットをバッファからネットワークに送信することができる。このとき、認証パケットをEcho要求とEcho返答のICMPパケットにしておけば、インターネット層のICMPモジュールによる処理で受信側のコンピュータが認証成功の通知をすることができるので都合がよい。
【0022】
受信側のコンピュータがサーバの場合は、複数のユーザにアクセスを許可する必要がある。しかし当該複数のユーザが共通のパスワードを保有することは好ましくない。この場合、受信側のコンピュータでは、送信側のコンピュータのユーザ識別子ごとに認証コードを生成することができる。そして、送信側のコンピュータが認証パケットの送信前にユーザ識別子から生成した送信タイムスロットで複数の識別子パケットを送信することで、受信側のコンピュータはパケットのペイロードを解読しないことで実現した本発明のセキュリティ・レベルを低下させないで、ユーザごとに異なる認証コードを共有しながら複数のユーザを認証することができる。
【0023】
本発明は、受信側のアプリケーション層で受信タイムスロットのスロット間隔を計測することも可能であり、認証が成功する前にアプリケーション層にはいかなるパケットも送らないようにすることで安全性を高めることができる。この場合、アクセスを制御するゲートの位置は通信機能の階層のできるだけ下層に設けることが望ましい。最適には、OSI参照モデルのインターネット層とデータリンク層の間に設けることが望ましい。また、送信側のコンピュータでは、トランスペアレントな認証をするためにバッファの位置をできるだけ下層に設けることが望ましく、最適には同様にOSI参照モデルのインターネット層とデータリンク層の間に設けることが望ましい。
【発明の効果】
【0024】
本発明により、安全性の高いネットワーク認証に基づくアクセス方法を提供することができた。さらに本発明により、ネットワークに接続しているだけで受ける攻撃に対抗できるネットワーク・セキュリティを確立するアクセス方法を提供することができた。さらに本発明により、トランスペアレントなネットワーク認証に基づくアクセス方法を提供することができた。さらに本発明により、OSに依存しないでネットワーク・セキュリティを確立するアクセス方法を提供することができた。さらに本発明により、そのようなアクセス方法を実現するコンピュータ・プログラムおよびコンピュータを提供することができた。
【図面の簡単な説明】
【0025】
【図1】本実施の形態におけるネットワーク環境の一例を示す図である。
【図2】クライアントおよびサーバなどのコンピュータのハードウエアの構成を示す概略のブロック図である。
【図3】コンピュータに搭載される通信機能の階層構造を示す図である。
【図4】イーサネット(登録商標)・フレームのデータ構造を示す図である。
【図5】送信側の認証システムの機能ブロック図である。
【図6】受信側の認証システムの機能ブロック図である。
【図7】Echo要求パケットで構成された認証パケットのデータ構造を示す図である。
【図8】送信側の認証コード生成部と受信側の認証コード生成部による認証コードの生成方法を説明する図である。
【図9】認証パケット・シーケンスを利用した認証方法を説明する図である。
【図10】認証手順を示すフローチャートである。
【図11】認証パケット・シーケンスの転送方法を説明する図である。
【図12】4値インターバル符号を用いた認証パケット・シーケンスの新たなデータ構造を示す図である。
【図13】複数のユーザを認証する方法を説明する図である。
【発明を実施するための形態】
【0026】
[ネットワーク環境]
図1は、本実施の形態におけるネットワーク環境の一例を示す図である。クライアント11a、11bはルータ13を通じてインターネット10に接続されている。クライアント11c、Webサーバ15b、プロキシ・サーバ15a、NTP(Network Time Protocol)サーバ15dは直接インターネット10に接続されている。イントラネットに接続されたデータ・ベース・サーバ15cとクライアント11d、11eはプロキシ・サーバ15aを通じてインターネット10に接続されている。Webサーバ15bは、この例ではあらかじめ承認したユーザのアクセスだけを許可するように構成されている。NTPサーバ15dは、インターネット10に接続されたコンピュータに標準時の時刻情報を提供する。
【0027】
各クライアント11a〜11eはサーバとして動作して、他のクライアントからアクセスを受けてピア・ツー・ピアで通信することがある。また、各クライアント11a〜11eは、Webサーバ15bにアクセスすることがある。各クライアント11a〜11eは通常サーバからサービスを受けるコンピュータとして動作するときは常時すべてのポートを閉じているが、他のクライアントにサービスを提供するコンピュータとして動作するときは所定のポートを常時開いておく必要がある。
【0028】
ここに、クライアント11a〜11eがサーバとして動作するときにはセキュリティ上の問題が生じる。また、サーバ15bは通常強固なファイア・ウオールや認証システムで保護されているが、一旦はすべてのユーザからのパケットを受け取ってから認証の処理をする必要があり、バッファ・オーバーフローなどの方法で攻撃を受ける可能性がある。本発明にかかる認証システムは、クライアント11a〜11e、Webサーバ15b、プロキシ・サーバ15a、ルータ13またはデータ・ベース・サーバ15cに実装することでネットワーク・セキュリティを確保する。
【0029】
[コンピュータの構成]
図2は図1に示したクライアント11a〜11e、Webサーバ15b、プロキシ・サーバ15a、ルータ13またはデータ・ベース・サーバ15cなどの周知のコンピュータ100のハードウエアの構成を示す概略のブロック図である。コンピュータ100は、CPU101、メイン・メモリ103、ディスク・ドライブ105、入力デバイス107、NIC(Network Interface Card)109およびセキュアな記録領域を含む不揮発性メモリ(EEPROM)111などで構成されている。ディスク・ドライブ105には、本実施形態にかかる認証システムを実現するプログラム、ネットワークの階層モジュールを含むOSおよび各種アプリケーション・プログラムなどのCPU101が実行するプログラムが格納されている。
【0030】
NIC109は、コンピュータ100をネットワークに接続するためにOSI参照モデルのデータリンク層と物理層で動作するハードウエアである。なお、本発明の適用は、ネットワークに有線で接続するコンピュータに限定するものではなく、無線で接続するものであってもよい。EEPROM111のセキュアな記録領域は本実施の形態で使用するパスワードやユーザIDを格納する。コンピュータ100の構成は、認証を要求するコンピュータおよび認証するコンピュータのいずれにも適用できる。
【0031】
[通信機能の階層構造]
図3は、コンピュータ100に搭載される一般的な通信機能の階層構造を示す図である。図4は、イーサネット・フレームの一般的なデータ構造を示す図である。コンピュータ100は送信側または受信側のいずれとして動作するときであってもその通信機能を、7層のOSI参照モデルとそれに対応する4層のTCP(Transmission Control Protocol)/IP(Internet Protocol)階層モデルで表現することができる。
【0032】
TCP/IPプロトコル階層モデルの最上位層に位置するアプリケーション層251は、OSI参照モデルのアプリケーション層、プレゼンテーション層、およびセッション層を包含する形で存在する。アプリケーション層251では、メールまたはファイル転送などのサービスの種類に応じてHTTP、FTPおよびSMTPなどのプロトコルを規定したり、コード変換、および通信経路の確立または切断などの機能を実現したりする。
【0033】
トランスポート層253はOSI参照モデルのトランスポート層に対応する。送信側のトランスポート層253は、はアプリケーション層251から受け取ったユーザ・データを受信側のアプリケーション層251のいずれのプロトコルに渡すかを認識してTCPヘッダ153aを作成する。さらにユーザ・データ151にTCPヘッダ153aを付加してTCPパケット153を作成しインターネット層255に送る。TCPヘッダ153aは、送信元ポート番号および宛先ポート番号を含む。
【0034】
受信側のトランスポート層253は、インターネット層255から受け取ったTCPパケット153について、TCPヘッダ153aから宛先ポート番号を読み取った後にTCPヘッダ153aを削除して、アプリケーション層253の対応するサービスに渡す。トランスポート層253のプロトコルは、コネクション型のTCPだけでなくコネクションレス型のUDP(User Datagram Protocol)を含んでいる。
【0035】
インターネット層255は、OSI参照モデルのネットワーク層に対応する。送信側のインターネット層255は、トランスポート層253から受け取ったTCPパケット153にIPヘッダ155aを付加してネットワーク・インターフェース層257に送る。IPヘッダ155aは、送信元IPアドレス、宛先IPアドレス、およびプロトコル番号を含む。プロトコル番号は上位層のプロトコルを示す番号で、ICMP(Internet Control Message Protocol)、TCP、またはUDPなどを特定する。
【0036】
受信側のインターネット層255は、ネットワーク・インターフェース層257から受け取ったIPパケット155の宛先IPアドレスが自らのアドレスであると判断した場合に、IPヘッダ155aを削除してTCPパケット153をトランスポート253に送る。トランスポート層253とインターネット層255は、オペレーティング・システムで構成される。
【0037】
ネットワーク・インターフェース層257は、OSI参照モデルのデータリンク層と物理層を包含する形で存在する。送信側のネットワーク・インターフェース層257は、インターネット層255から受け取ったIPパケット155にイーサネット・ヘッダ157aを付加して伝送媒体159を通じてインターネット10に出力する。イーサネット・ヘッダ157aは、送信元MACアドレス、宛先MACアドレス、およびタイプを含む。
【0038】
タイプはIPv4、IPv6、ARPなどのプロトコルに対応する番号であり、イーサネット・フレーム157が含んでいるイーサネット・ペイロードのプロトコルを規定する。受信側のネットワーク・インターフェース層257は、伝送媒体159から受け取ったイーサネット・フレーム157の宛先MACアドレスが自らのアドレスであると判断した場合に、イーサネット・ヘッダ157aを削除してIPパケット155をタイプで指示されたプロトコルのインターネット層255に送る。ネットワーク・インターフェース層257は、NIC109とそれを制御するデバイス・ドライバで構成される。
【0039】
[認証システム]
図5、図6は、コンピュータ100に搭載される認証システムの構成を示す機能ブロック図である。図5は送信側の認証システム301を示し、図6は受信側の認証システム303を示す。コンピュータ100がクライアントおよびサーバとして動作する場合は認証システム301、303の両方を実装することになるが、クライアントとしてだけ動作する場合は認証システム301だけを実装し、サーバとしてだけ動作する場合は認証システム303だけを実装することでもよい。認証システム301、303は図3に示した周知のTCP/IPプロトコル階層またはUDP/IPプロトコル階層を実現するOSおよびデバイス・ドライバと本実施の形態にかかる新規なプログラム・モジュールの協働により実現されている。
【0040】
送信側の認証システム301は、時刻調整部311、パスワード記憶部313、認証コード生成部315、認証パケット送信部317および送信パケット制御部319を含んでいる。時刻調整部311は、ポート番号13のサービスを提供するdaytimeプロトコルのアプリケーションで、定期的にNTPサーバ15dに時刻を問い合わせてコンピュータ100の時刻を同期させる。パスワード記憶部313は、EEPROM111のセキュアな記録領域に設けられており、ユーザが設定する個人認証パスワードおよび管理者が各ユーザに共通して設定する共有認証パスワードを格納する。
【0041】
認証コード生成部315は認証パケット送信部317からの要求に基づいて、時刻調整部311から取得したコンピュータ100が保有する補正された時刻情報と、パスワード記憶部313から取得した個人認証パスワードおよび共有認証パスワードから所定ビット数の暗号化した認証コードを生成する。認証パケット送信部317は、アプリケーション層251のアプリケーション251aから、認証を必要とする特定のコンピュータにアクセスする通知を受け取ったときに、認証コード生成部315から受け取った認証コードに基づいて所定の送信タイムスロットで送信する複数の認証パケットで構成された認証パケット・シーケンスを生成して当該コンピュータに送信する。
【0042】
認証パケット送信部317は、認証パケット・シーケンスを生成するために形成した複数のタイムスロットの中で先頭タイムスロット174S(図9参照)の送信時刻に対して基準時刻txを設定する。送信側の認証システム301で使用する基準時刻txは、受信側の認証システム303で使用する基準時刻tyに一致する。認証パケット送信部317は、認証コード生成部355に時刻調整部311から基準時刻txを取得して認証コードを生成するように要求する。
【0043】
認証パケット・シーケンスを構成する各認証パケットは認証の過程において受信側のコンピュータで内容が解読されることはないので、受信側のコンピュータまで届くものであればいかなる形式のものでも採用できるが、ICMPパケットを採用するとアプリケーション層よりも下層で認証成功の通知ができるので都合がよい。認証パケット送信部317がインターネット層255にpingコマンドを発行すると、インターネット層255のICMPモジュールがEcho要求をするパケット(Echo Request)を生成してネットワーク・インターフェース層257のNIC109からインターネット10に認証パケットを送信することができる。
【0044】
図7は、Echo要求パケットで構成された認証パケットのデータ構造を示す図である。認証パケット163は、IPヘッダ155aとICMPメッセージ161で構成されている。ICMPメッセージ161は、Echo要求に割り当てられた番号3を保持するTYPEフィールド161aを含む。送信パケット制御部319は、認証を必要とする受信側のコンピュータのIPアドレスを保有している。送信パケット制御部319は、アプリケーション251aが認証を必要とする受信側のコンピュータに対して送るデータ・パケットを一時的にバッファに保留するゲート機能を備える。保留の期間は認証が完了すると想定した所定の時間であったり、認証成功の通知を受けるまでの時間であったりする。
【0045】
送信パケット制御部319は、受信側のコンピュータからEcho要求に対するEcho返答のICMPパケット(Echo Reply)を受け取ることができる。送信パケット制御部319は、Echo返答のICMPパケットを受け取ったときに認証が成功したと判断してバッファに保留していたデータ・パケットをネットワーク・インターフェース層257からインターネット10に送信することができる。認証はトランスペアレントに行われ、アプリケーション251aは受信側のコンピュータで認証が行われていること認識しない。
【0046】
受信側の認証システム303は、時刻調整部351、パスワード記憶部353、認証コード生成部355、受信間隔測定部357、認証コード検証部359および送信パケット制御部391を含んでいる。時刻調整部351、パスワード記憶部353および認証コード生成部355は、送信側の認証システム301の時刻調整部311、パスワード記憶部313および認証コード生成部315と同じ機能である。
【0047】
受信間隔測定部357は、認証パケット163が到着したときに送信側の認証パケット送信部317が使用したタイムスロットのスロット時間と同じスロット時間のタイムスロットに基づいて各認証パケット163の受信時刻に対応する受信タイムスロットを特定し、受信タイムスロットのスロット間隔を測定して認証コード検証部259に知らせる。このとき受信間隔測定部357はスロット間隔を測定した認証パケット163を認証コード検証部359に送る。受信間隔測定部357は、受け取った認証パケット163から先頭タイムスロット174R(図9参照)に対して基準時刻tyを設定し、認証コード生成部355に時刻調整部351から取得した現在時刻で認証コードを生成するように要求する。
【0048】
認証コード生成部355は、受信間隔測定部357から要求を受けた現在時刻で認証コードを生成するため、現在時刻は基準時刻tyに一致する。基準時刻tyは後に説明するように、認証パケット163に先立って送られるプリアンブルを受け取った時刻に基づいて設定したり、最初の認証パケット163を受け取った時刻に基づいて設定したりすることができる。認証コード検証部259は、受信間隔測定部357から受け取った受信タイムスロットのスロット間隔と認証コード生成部355から取得した認証コードを検証して認証が成功したか否かを判断する。認証が成功したと判断したときは、認証コード検証部359は受信パケット制御部391に認証が成功したことを通知する。このとき認証コード検証部259は、認証が成功した認証パケット163を受信パケット制御部391に送る。
【0049】
受信パケット制御部391は、認証コード検証部359から認証成功の通知を受け取るまで、ネットワーク・インターフェース層257から受け取ったすべての認証パケット163およびデータ・パケットをインターネット層255に送ることなく破棄する。受信パケット制御部391は、認証コード検証部359から認証成功の通知を受け取ったときには、認証コード検証部359から受け取った認証パケット163をインターネット層255に送る。
【0050】
インターネット層255のICMPモジュールは、認証コード検証部359による認証が成功したことによってEcho要求の認証パケット163を受け取ったときには、Echo要求に対するEcho返答のパケットを送り返す。認証成功の通知を受け取った受信パケット制御部391は、それ以後にネットワーク・インターフェース層257から受け取った認証パケット163に含まれていたIPアドレスを含むデータ・パケットだけをインターネット層255に送る。
【0051】
認証コード生成部315、355、認証パケット送信部317、送信パケット制御部319、受信間隔測定部357、認証コード検証部359、および受信パケット制御部391は、本実施の形態で提供する新規なプログラムで構成され、OSと協働してCPU101で実行されることによりコンピュータ100にそれぞれの機能を実現させる。すなわち、本実施の形態にかかる認証システムは、OSに渡すパケットを制御しているだけでOSのパケット処理には何ら変更を加えていないため、OSまたはアプリケーションが別の認証システムを導入していればそれと併存させることができる。
【0052】
[認証コードの生成方法]
図8は、送信側の認証コード生成部315と受信側の認証コード生成部355による認証コードの生成方法を説明する図である。パスワード記憶部313、353には48ビットの個人認証パスワードと64ビットの共有認証パスワードが格納されている。個人認証パスワード165は、8文字のアルファベットと数字で構成され各ユーザが独自に設定および更新する。共有認証パスワード166は、ネットワーク管理者が管轄するユーザ全員に対して設定および更新する。
【0053】
個人認証パスワード165と共有認証パスワード166は分割しておく必要はなく、すべて個人認証パスワードとすることもできる。現在時刻167は時刻調整部311、351が保有しており、NTPサーバ15dで補正された秒を最小単位とするコンピュータ100が保有する現在の時刻であり、NTPサーバ15dの時刻に対して±200ミリ秒程度の精度が確保されている。認証コード生成部315、355は、個人認証パスワード165と共有認証パスワード166と現在時刻167の各ビットを連結して144ビットのビット列を生成し、SHA1ハッシュ関数で160ビットのハッシュ値を生成する。
【0054】
認証コード生成部315、355はさらにハッシュ値の先頭ビットから連続する所定数のビット列からなる認証コード171を抽出して認証パケット送信部317に送る。認証コード171は、現在時刻が変化すると異なる値になるので同じ認証コードが生成されることはなく、認証コード171はビット数が少なくても盗聴に対する安全性が高くなっている。
【0055】
認証コード171は送信側のコンピュータと受信側のコンピュータの時刻がNTPサーバ15dを通じて同期しており、認証パケット送信部317が、基準時刻txが1秒繰り上がった直後に認証パケット163を送信すると、受信間隔測定部357は基準時刻txから1秒繰り上がる前に認証パケット163を受け取って基準時刻tyを設定することで基準時刻txと基準時刻tyを一致させて同一の認証コード171を生成することができる。したがって、認証コード171はワンタイム・パスワードに類似する共有鍵に相当することになる。
【0056】
[認証コードを利用した認証方法]
図9は、認証パケット・シーケンスを利用した認証方法を説明する図である。図9(A)は、[0111100010000111]という16ビットの認証コード171S、171Rを、4値パルス位置変調(PPM)方式で変調して生成した送信時間パターンを利用する例を示し、図9(B)は、[10001100110100000111]という20ビットの認証コード173S、173Rを4ビットずつ分割したコードから直接送付方式で生成した送信時間パターンを利用する例を示す。図9では、先頭タイムスロット174S、174Rから順番に黒塗りのタイムスロットで矢印Aの方向に認証パケット163を送信および受信する様子を示している。
【0057】
送信側の認証コード生成部315が生成した認証コード171Sと受信側の認証コード生成部355が生成した認証コード171Rは一致している。図9(A)の場合は、認証パケット送信部317は認証コード生成部315から16ビットの認証コード171Sを受け取ると、それぞれスロット時間がtsの4個のタイムスロットを含み隣接する8個のシンボル時間S1〜S8を形成する。スロット時間tsは、送信側のコンピュータと受信側のコンピュータの現在時刻のずれ、各認証パケット163の送信時間の揺れなどに基づいて決定する。
【0058】
認証パケット送信部317は16ビットの認証コード171Sの先頭から順番に2ビットずつ抽出して4値PPMコード171aSを生成する。認証パケット送信部317は生成した4値PPMコード171aSを順番に並んだ8個のシンボル時間S1〜S8に割り当て、各シンボル時間S1〜S8において4値PPMコード171aSに対応するタイムスロットの位置を決定する。各シンボル時間において決定されたタイムスロットは認証パケット163の送信タイミングに相当する。この送信タイミングに相当する黒塗りで示したタイムスロットを以後送信タイムスロット172Sということにする。
【0059】
認証パケット送信部317は、スロット時間の整数倍となる送信タイムスロット174S間のスロット間隔t0〜t7を計算して各送信タイムスロット172Sで認証パケットを順番に送信する。このとき認証パケット163はインターネット10を伝搬する間に消滅する可能性があるので、1つの送信タイムスロット172Sにおいて短い時間間隔で複数の認証パケット163を連続して送るようにしてもよい。最初のスロット間隔t0は、先頭タイムスロット174Sと最初の送信タイムスロット172Sとの間のスロット間隔に相当する。
【0060】
図9(A)に示すように8個の送信タイムスロット172Sで送信した1群の認証パケット163を認証パケット・シーケンス171bSということにする。各送信タイムスロット172Sで1個の認証パケットを送信する場合は、1個の認証パケット・シーケンス171bSにおける認証パケット163の数は送信タイムスロット172Sの数に一致するが、複数の認証パケット163を送信する場合は認証パケット163の数が送信タイムスロット172Sの数より多くなる。
【0061】
4値PPM方式では、必ず1個のシンボル時間にいずれかのタイムスロットから認証パケット163が送信されるので、所定のビット数の認証コード171Sに対応する送信タイムスロット172Sの数は一意に決まる。よって、送信の途中で認証パケット・シーケンス171bSのいずれかの送信タイムスロット172Sに対応する認証パケット163が脱落しても受信側で容易にそれを確認することができる。4値PPM方式を採用した場合は、スロット時間tsを100ミリ秒としたとき、16ビットの認証コード171Sから生成された1個の認証パケット・シーケンス171bSを送るためには3.2秒が必要となりビット転送効率は5ビット/秒となる。
【0062】
受信側の受信間隔測定部357は、ネットワーク・インターフェース層257から認証パケット・シーケンス171bRを受け取ったときに、認証パケット送信部317が形成したタイムスロットのスロット時間tsと同じスロット時間tsのタイムスロットおよびシンボル時間S1〜S8を形成する。受信間隔測定部357は、認証パケット163を受け取ったタイムスロット(以後、受信タイムスロット172Rという。)を特定し、認証パケット・シーケンス171bRを構築して受信タイムスロット172Rのスロット間隔t0〜t7を計算する。認証コード検証部359は、スロット間隔t0〜t7とシンボル時間S1〜S8に基づいて、各シンボル時間における受信タイムスロット172Rの位置を特定して4値PPMコード171aRを計算し、4値PPMコード171aRから認証コード171Sを復号する。
【0063】
図9(B)の場合は、認証コード生成部315から20ビットの認証コード173Sを受け取った認証パケット送信部317はスロット時間tsの4個のタイムスロットで構成されたシンボル時間S1〜S5を形成する。認証パケット送信部317は、認証コード173Sの先頭から順番に抽出した各4ビットに各シンボル時間S1〜S5の4つのタイムスロットを対応させて送信タイムスロット172Sを決める。
【0064】
受信間隔測定部357は、各シンボル時間における受信タイムスロット172Rの位置から認証コード173Sを復号する。直接送付方式を採用した場合はスロット時間tsを100ミリ秒とすれば、20ビットの認証コード173Sからなる1個の認証パケット・シーケンス173bSを送るために2秒が必要となり、ビット転送効率は10ビット/秒となる。直接送付方式はビット転送効率が高いが、1個のシンボル時間が、0個から4個までの送信タイムスロット172Sを含むので、転送の途中で認証パケット163が消滅したことを直接検証することはできない。
【0065】
認証コード171Sは、送信側のコンピュータが設定した基準時刻txに相当する時刻情報を含んでいる。認証パケット・シーケンス171bS、173bSを送信するために形成したタイムスロットの中で先頭タイムスロット174Sの中央に設定した基準時刻txは、認証コード171Sを作成するために認証コード生成部315が時刻調整部311から時刻情報を取得した現在時刻とほぼ一致させている。受信側のコンピュータでは、受け取った認証パケット163に基づいて基準時刻tyを設定する必要がある。
【0066】
しかし、認証パケット・シーケンス171bS、173bSは、いずれも先頭タイムスロット174Sが送信タイムスロット172Sであるとは限らない。したがって受信側のコンピュータは、認証パケット163が短時間で到着したとしても最初の認証パケット163を受け取ったタイミングでは、シンボル時間S1の先頭タイムスロット174Rに基準時刻tyを設定し、認証コード生成部355が基準時刻tyで認証コード171R、173Rを生成することができない。
【0067】
本実施の形態では、先頭タイムスロット174Rに対する基準時刻tyを設定するための1つの方法として認証パケット・シーケンス171bS、173bSの先頭にプリアンブルを付加する。プリアンブルを付加したイーサネット・フレームのデータ構造は図11を参照して後に説明する。なおPPM方式および直接送付方式のいずれの場合であっても、1シンボル時間に含まれるタイムスロットの数は、図9に例示したものに限定されない。
【0068】
[認証手順]
つぎに、送信側の認証システム301を実装するクライアント11aから受信側の認証システム303を実装するクライアント11cに図9(A)の認証パケット・シーケンス171bSを利用してアクセスする際の認証手順を説明する。図10は認証手順を示すフローチャートである。クライアント11aとクライアント11cはそれぞれコンピュータ100で構成されており、クライアント11aには送信側の認証システム301が実装され、クライアント11cには受信側の認証システム303が実装されている。典型的な例として同一のユーザが遠方に存在するクライアント11aから自宅のサーバとして動作するクライアント11cにアクセスすることを想定することができる。
【0069】
クライアント11cは、信頼のおけるクライアント11aだけでなくインターネット10に接続された悪意のあるクライアントからもパケットを受け取る。受信側のクライアント11cのOSは、トランスポート層253でクライアント11aと通信するためのポートを開いているが、受信パケット制御部391は、認証コード検証部359から認証成功の通知を受け取るまでゲートを閉じて、ネットワーク・インターフェース層257から受け取ったすべてのIPパケットを破棄する。
【0070】
本実施の形態にかかる認証方法で認証されない悪意のあるイーサネット・フレームは、すべてネットワーク・インターフェース層257のNIC109と受信間隔測定部357および認証コード検証部359で処理される。NIC109はハードウエアでイーサネット・フレームを処理するので攻撃耐性は高い。また、受信間隔測定部357および認証コード検証部359は、以下に説明するように認証が完了するまで、受け取ったIPパケットから到着時刻の情報だけを取得した後に認証が成功しないときはそれらを廃棄するので、IPヘッダやIPペイロードを解読する必要はなく危険性はない。
【0071】
また、クライアント11cは悪意のある大量のパケットを受信することもあるが、受信間隔測定部357は、受け取ったすべてのパケットについて受信のタイミングを計算するだけであり、トランスポート層253で行うようなパケット化されたデータを結合する処理もしないため悪意のある大量のデータをメイン・メモリ103に記憶するような事態は生じない。なお、受信側のクライアント11cのIPアドレスは固定されているものとする。また、送信側のパスワード記憶部313と受信側のパスワード記憶部353は、同一の個人認証パスワード165と共有認証パスワード166を格納している。
【0072】
ブロック401では、送信側のアプリケーション251aはトランスポート層253にクライアント11cのIPアドレスを含むユーザ・データを渡してクライアント11cとのセッションを確立する作業を開始し、トランスポート層253、インターネット層255を通じてIPパケットを送信パケット制御部319に送る。送信パケット制御部319は、クライアント11cから認証が成功したことを示すEcho返答のICMPパケットを受け取るまでは、クライアント11cを宛先とするIPパケットをバッファに保存する。本実施の形態では、アプリケーション251aからクライアント11cに対するアクセスはトランスペアレントに行われる。
【0073】
ユーザにとって認証システム301、303の存在は、アプリケーション251aに対するクライアント11cからの応答が、認証されないことによるアクセスの不能か、認証が成功するまでの極短時間の遅延として認識されるだけである。ブロック403では、アプリケーション251aが認証パケット送信部317にクライアント11cに対するアクセスを開始したことの通知をする。
【0074】
通知を受け取った認証パケット送信部317は、認証コード生成部315に認証コード171Sの生成を要求する。認証コード生成部315は、図8に示したように時刻調整部311からクライアント11aが保有する現在時刻を取得し、パスワード記憶部313から個人認証パスワード165と共有認証パスワード166を取得して連結したあとにハッシュして認証コード171Sを生成する。
【0075】
ブロック405では、認証パケット送信部317はスロット時間tsのタイムスロットを形成し、図9に示した認証コード171Sに基づいて4値PPM方式で生成した認証パケット・シーケンス171bSを各送信タイムスロット172Sのタイミングで送信する。認証パケット・シーケンス171bSはそれぞれICMPメッセージ161を含む複数の認証パケット163で構成されている。認証パケット送信部317は、図11に示すように認証パケット・シーケンス171bSの中で最初に送るイーサネット・フレーム181の前にプリアンブル183を送る。
【0076】
図11は、認証パケット・シーケンス171bSの転送方法を説明する図である。プリアンブル183は、スロット時間tpの複数の連続するタイムスロットにおいて、1タイムスロットおきに送る複数のプリアンブル・パケットで構成される。プリアンブル183は、クライアント11cがシンボル時間S1の先頭タイムスロット174Rに設定したり、認証コード生成部355が認証コード171Rを生成したりするための基準時刻tyを取得することを目的とする。よってプリアンブル・パケットのデータ構造はIPヘッダ155aを含んでいれば認証パケット163と同じであっても異なっていてもよい。本実施の形態では、認証パケット・シーケンス171bSを構成する5個のイーサネット・フレーム181もプリアンブル183を構成する8個のイーサネット・フレーム182も認証パケット163含むように構成している。
【0077】
認証パケット送信部317は、時刻調整部311から受け取る1秒を最小単位とする時刻情報を観察し、認証パケット・シーケンス171bSを送信するために先頭タイムスロット174Sに基準時刻txを設定する。このとき、受信側の受信間隔測定部357が先頭タイムスロット174Rに設定する基準時刻tyが1秒を単位とする基準時刻txに一致するように、認証パケット送信部317は基準時刻txより先にプリアンブル183を送信し1秒が繰り上がった直後の基準時刻txで認証パケット・シーケンス171bSを送信できるようにタイミングを調整する。
【0078】
基準時刻txと基準時刻tyは最初単位を1秒にしているためパケットの転送時間が1秒よりも十分に短いものとすれば、プリアンブル183で特定される受信間隔測定部357の先頭タイムスロット174Rの基準時刻tyは、認証パケット送信部317が先頭タイムスロット174Sに設定した基準時刻txに一致する。認証パケット163は、イーサネット・ヘッダ157aが付加されてイーサネット・フレームとしてNIC109から相手先コンピュータに送信される。
【0079】
クライアント11aは、認証パケット・シーケンス171bSを送信する際に先頭にプリアンブル183を付加する。イーサネット・フレーム181、182は、イーサネット・ヘッダ157aと認証パケット163で構成されている。認証パケット163のIPヘッダには、クライアント11cのIPアドレスが宛先アドレスとして記録されている。5個のイーサネット・フレーム181と8個のイーサネット・フレーム182はクライアント11aから矢印Aの方向に所定のスロット間隔t0〜t7で順番に送信される。
【0080】
認証パケット送信部317は、プリアンブル・パケットに適用するスロット時間tpの連続する10個のタイムスロットとそれに隣接させて認証パケット163に適用するスロット時間tsの連続する32個のタイムスロットを形成する。認証パケット送信部317は、最初にプリアンブル183のためにスロット間隔2tpで5個のイーサネット・フレーム182を送信し、5番目のイーサネット・フレーム182を送信してから、スロット時間tq後に先頭タイムスロット174Sに対する基準時刻txを設定し、先頭タイムスロット174Sからスロット間隔t0に相当する2スロット間隔後に最初のイーサネット・フレーム181を送信する。スロット間隔tqは、tp+(tp+ts)/2で計算することができる。
【0081】
このとき、認証パケット送信部317は、先にプリアンブル183を送信し、先頭タイムスロット174Sの基準時刻txで認証コード171Sが生成されるように、認証コード生成部315に認証コード171の生成を要求する。そして、認証コード生成部315から基準時刻txで生成された認証コード171Sを受け取って送信タイムスロット172Sを生成し、スロット時間tq後の基準時刻txに先頭タイムスロット174Sが設定された認証パケット・シーケンス171bSを送信する。認証コード生成部315による認証コード171Sの生成および認証パケット送信部317による認証パケット・シーケンス171bSの生成は極短時間で行われるため、1秒を単位とする基準時刻txを認証コード171Sの生成と、先頭タイムスロット174Sの生成に対して適用することができる。
【0082】
認証パケット送信部317は、プリアンブル183のスロット時間tpと認証パケット・シーケンス171bSのスロット時間tsを関連付けておくことができる。認証パケット送信部317は一例として、15ミリ秒、20ミリ秒、25ミリ秒のスロット時間tpに対して、80ミリ秒、100ミリ秒、120ミリ秒というスロット時間tsを関連付けておくことで、受信側のクライアント11cは、受け取ったプリアンブル183のスロット時間tpを計算し、認証パケット・シーケンス171bSのスロット時間tsを特定するこができる。よって、クライアント11aとクライアント11cで使用するスロット時間tsをインターネット10の転送速度に応じてダイナミックに変更することができる。
【0083】
認証パケット送信部317は、最初にスロット時間tpを最小の15ミリ秒に設定し、それに対応してスロット時間tsを80ミリ秒に設定する。5個目のイーサネット・フレーム182を送信してから、スロット時間tqが経過したタイミングで先頭タイムスロット174Sの基準時刻txを設定してから、t0後に先頭のイーサネット・フレーム181を送信する。つづいて、スロット間隔t1〜t7ごとに残り7個のイーサネット・フレーム181を送信する。各スロット時間tsで1個のイーサネット・フレーム181を送信する場合はスロット時間の中央で送信し、複数のイーサネット・フレーム181を送信する場合はスロット時間の中央から前後に分散させて送信する。
【0084】
ブロック407では、イーサネット・フレーム181、182を受け取った受信側のネットワーク・インターフェース層257は、その都度イーサネット・ペイロードである認証パケット163を抽出して受信間隔測定部357と受信パケット制御部391に送る。受信パケット制御部391は、認証コード検証部359から認証成功の通知を受け取るまで、いかなるIPパケットまたは認証パケット163もインターネット層255に送らない。受信間隔測定部357は、最初に受け取った5個の認証パケット163はプリアンブル183に相当することをあらかじめ認識している。
【0085】
受信間隔測定部357は、最初の5個の認証パケット163を受け取ると認証パケット163の到着時刻間の平均値を計算して、認証パケット送信部317がプリアンブル183を送信するときのスロット時間tpを取得する。受信間隔測定部357は、スロット時間tpが15ミリ秒であることを認識したことによりスロット時間tsが80ミリ秒であることを認識する。
【0086】
受信間隔測定部357は、5個目の認証パケット163の到着時刻からスロット時間tpが経過した時刻にシンボル時間S1の先頭タイムスロット174Rの基準時刻tyを設定し、それを基準にして32個のタイムスロットを設定する。受信間隔測定部357は、基準時刻tyで時刻調整部351から時刻情報を取得して認証コード171Rを生成するように認証コード生成部355に要求する。プリアンブル183のイーサネット・フレーム182の転送時間は十分に速いので、1秒を単位とする基準時刻txと基準時刻tyは一致する。
【0087】
受信間隔測定部357は、認証パケット・シーケンス171bRに先立ってプリアンブル183を受け取ることで、認証パケット送信部317が使用したスロット時間tsを認識するだけでなく、認証コード171Sのパターンによってシンボル時間S1の最初のタイムスロットが送信タイムスロット172Sでない場合でも先頭タイムスロット174Rに基準時刻tyを設定することができる。ブロック409では、受信間隔測定部357は、つづいて受け取った8個の認証パケット163の到着時刻から受信タイムスロット172Rを特定してスロット間隔を計算し認証コード検証部359に送る。また、受信間隔測定部357はスロット間隔を計算した認証パケット163を認証コード検証部359に送る。
【0088】
受信間隔測定部357は、1つの送信タイムスロット172Sで複数のイーサネット・フレーム181が送信され、1つの受信タイムスロット172Rで複数の認証パケット163の到着を検出した場合でも、当該1つの受信タイムスロット172Rを特定する。4値PPM方式で認証パケット・シーケンス171bSを構成する場合は、受信間隔測定部357は、あらかじめ認証パケット・シーケンス171bSから8個の受信タイムスロット172Rが形成されることを認識することができる。したがって、8個の受信タイムスロット172Rを特定できない限り認証コード検証部359には何も通知しない。
【0089】
受信間隔測定部357はこれまでの処理において、認証パケット163のIPヘッダ155aおよびICMPメッセージ161を解読することはない。また、ここまでの処理はネットワーク・インターフェース層257のハードウエアであるNIC109で行われるため、クライアント11cがマルウエアに支配されるようなことは起きない。さらに、イーサネット・フレーム181、182の最大サイズは1500バイトであり、NIC111、受信間隔測定部357および認証コード検証部359ではそれらを結合する処理はしないため、バッファ・オーバーフローが発生するようなこともない。
【0090】
ブロック411では受信間隔測定部357から認証コード171を生成する要求を受けた認証コード生成部355はただちに現在時刻を時刻調整部351から取得し、個人認証パスワード165と共有認証パスワード166をパスワード記憶部353から取得して認証コード171Rを生成し認証コード検証部359に送る。認証コード生成部355が時刻調整部351から認証コード171Rを生成する時刻は基準時刻tyに等しく、認証コード生成部315が生成した認証コード171Sと認証コード生成部355が生成した認証コード171Rは一致する。
【0091】
ブロック413では、認証コード検証部359は受信間隔測定部357から受け取ったスロット間隔t0〜t7から各シンボル時間S1〜S8に対する4値PPMコード171aRを計算し、さらに4値PPMコード171aRから認証コード171Sを復号する。また、認証コード検証部359は、受信間隔測定部357から受け取った認証パケット163をバッファに保存しておく。
【0092】
認証コード検証部359は、認証コード生成部355から受け取った認証コード171Rと復号した認証コード171Sを比較して一致している場合は認証が成功したと判断する。あるいは、認証コード検証部359は、認証コード生成部355から受け取った認証コード171Rから計算したスロット間隔が、受信タイムスロット172Rのスロット間隔と比較して一致している場合に認証が成功したと判断することができる。認証が成功したと判断した認証コード検証部359は、受信パケット制御部391に認証成功の通知をして、ブロック415に移行する。このとき認証コード検証部359はバッファに保存していた認証パケット163をすべて受信パケット制御部391に送る。
【0093】
ブロック415では、認証成功の通知を受け取った受信パケット制御部391は、認証コード検証部359から受け取ったすべての認証パケット163のIPアドレスが一致しているか否かを検証する。一致していれば、以後ネットワーク・インターフェース層257から受け取った発信元IPアドレスを含むIPパケットに対してだけゲートを開いてインターネット層255に送る。
【0094】
受信パケット制御部391は、認証が成功したIPアドレスからのIPパケットだけを通過させるために、認証パケット163の発信元IPアドレスを解読する必要はあるが、すべての認証パケット163のIPアドレスが一致しているか否かの検証は省くこともできる。ブロック417では、受信パケット制御部391は認証コード検証部359から受け取ったいずれかの認証パケット163をインターネット層255に送る。
【0095】
インターネット層255のICMPモジュールは、クライアント11aにEcho要求に対するEcho返答をするためのICMPパケットを送る。ICMPパケットは、送信パケット制御部319と認証パケット送信部317に送られる。ここで、始めてIPパケットがクライアント11cのインターネット層255に届いてIPペイロードが解析されることになるが、そのIPパケットはすでに認証が成功したIPアドレスを有するクライアント11aから受け取ったものであり安全である。
【0096】
ブロック419では、ICMPパケットを受け取った送信パケット制御部319は、バッファに蓄積していたアプリケーション251aからのユーザ・データを含むIPパケットをネットワーク・インターフェース層257に送る。そしてクライアント11aのアプリケーション251aとクライアント11cのアプリケーション層251との間でセッションが確立する。アプリケーション251aが生成したユーザ・データは、以後、送信パケット制御部319のバッファに蓄積されることなくネットワーク・インターフェース層257を通じてクライアント11cに転送される。
【0097】
ブロック421では、クライアント11aのアプリケーション251aがセッションを終了する。セッションの終了は、ユーザが強制的に行うこともできるし、アプリケーション251aが所定の時間ユーザのアクセスがない場合に自動的に終了することもできる。その結果、クライアント11aからクライアント11cにはイーサネット・フレームが届かなくなる。受信パケット制御部391はゲートを開いたあとに通過するIPパケットの時間間隔を監視しており、所定の時間いかなるIPパケットの通過も検出しないときにブロック423で再びゲートを閉じる。
【0098】
このとき受信パケット制御部391は、ゲートの閉鎖を示すICMPパケットをクライアント11aに通知することができる。ICMPパケットを受け取った送信パケット制御部319は、ゲートを閉じて、それ以後アプリケーション251aから受け取ったIPパケットをバッファに蓄積する。クライアント11cへのセッションが切断されたことを認識したアプリケーション251aは、ブロック403に戻って新たなセッションを開始して認証手続きをしながらクライアント11cにアクセスすることができる。
【0099】
ブロック413で所定の時間が経過してもクライアント11cから認証が成功したことを示すEcho返答のICMPパケットを受け取らないと判断したクライアント11aの認証パケット送信部317は、ブロック427で、プリアンブル183のスロット時間tpを20ミリ秒に変更しこれに対応させて認証パケット・シーケンス171bSのスロット時間tsを100ミリ秒に変更してブロック403に移行する。
【0100】
ブロック403では、認証パケット送信部317は認証コード生成部315に対して新たな基準時刻txに基づく認証コード171Sの生成を要求する。認証コード生成部315から新たな認証コード171Sを受け取ると、認証パケット送信部317は新たな認証パケット・シーケンス171bSを生成してスロット時間tpを20ミリ秒に設定し、スロット時間tsを100ミリ秒に設定して新たなプリアンブル183と認証パケット・シーケンス171bSを送信する。
【0101】
つづくブロック413でさらに認証が成功しないと判断したときは、認証パケット送信部317はプリアンブル183のスロット時間tpを25ミリ秒に変更し、これに対応させて認証パケット・シーケンス171bSのスロット時間tsを120ミリ秒に変更して新たなプリアンブル183と認証パケット・シーケンス171bSを送信する。認証パケット・シーケンス171bSが伝送経路を転送されている間は、さまざまな要因で各認証パケット163の到着時間に揺れが生ずるので、スロット時間tsが長いほど認証が成功する確率は高くなるが、認証が完了するまでの時間が長くなるので短いスロット時間から開始することで最小の時間で認証ができるようになる。なお、一旦最適なスロット時間が設定された場合は、接続形態が変更されない限りそれを固定してもよい。
【0102】
[認証パケット・シーケンスの他の転送方法]
認証パケット・シーケンス171bS、173bSを送る際にはプリアンブル183を同時に送る必要がある。通信経路の転送時間が安定しており、最適なスロット時間tsを最初から設定できる場合には、プリアンブル183を付加しないで認証パケット・シーケンスを送るようにすることもできる。図12は、4値インターバル符号を用いた認証パケット・シーケンスの新たなデータ構造を示す図である。
【0103】
認証コード501は、図9(A)と同じ16ビットの値で[0111100010000111]とする。認証パケット送信部317は認証コード171Sの先頭から連続的に2ビットずつ抽出して、シンボル時間S1〜S8に割り当てる。各シンボル時間S1〜S8は、スロット時間tsの5つのタイムスロットで構成されている。認証パケット送信部317は4値インターバル・コード501aを各シンボル時間について4値インターバル符号方式で変調して4値インターバル・コード501aを生成する。
【0104】
4値インターバル・コード501aでは、各シンボル時間の先頭タイムスロットにスタート・スロット503を設定し、抽出した2ビットの重みをスタート・スロット503と送信タイムスロット505との間のスロット間隔として表現する。ここでは、認証コード501の2ビット[00]を4値インターバル・コード501aの[0001]に変調して1スロット間隔を割り当て、[01]を[0010]に変調して2スロット間隔を割り当て、[10]を[0100]に変調して3スロット間隔を割り当て、[11]を[1000]に変調して4スロット間隔を割り当てて認証パケット・シーケンス501bを生成する。
【0105】
各シンボル時間S1〜S8は、必ず1個の送信タイムスロット505を含んでいる。認証パケット・シーケンス501bを受け取った受信間隔測定部357は、最初に認証パケット163受け取った時刻を基準時刻tyとしてスロット時間S1の先頭タイムスロット174Rの中央に設定して、20個のタイムスロットを形成する。また、受信間隔測定部357は基準時刻tyで認証コード生成部315に認証コード501の生成を要求する。受信間隔測定部357は、各シンボル時間S1〜S8について、スタート・スロット503と次の受信タイムスロットとの間のスロット間隔t1〜t8を測定して認証コード501を復号することができる。4値インターバル符号方式を採用するとスロット時間tsを100ミリ秒とした場合に、ビット転送効率は4ビット/秒になる。
【0106】
この他に、4値PPM方式または直接送付方式で生成した認証パケット・シーケンス171bS、173bSもプリアンブルを付加しないで送信することができる。認証コード生成部315は、図8で説明した方法でそのハッシュ部168が160ビットのハッシュ値を計算する。図8、図9では認証コード生成部315、355がそれぞれ160ビットのハッシュ値の先頭から連続する16ビットまたは20ビットを抽出していたため、先頭ビットがゼロの認証コード171Sが存在する。よって受信間隔測定部357は、先頭タイムスロット174Rの基準時刻tyを設定して同一の認証コード171Rを生成するためにプリアンブルが必要であった。
【0107】
ここで、認証コード生成部315、355がいずれも160ビットのハッシュ値の先頭(MSB)から16ビットまたは20ビットの認証コードを抽出するときに、先頭タイムスロット174Sが0で送信タイムスロット172Sでない場合は、先頭タイムスロット174Sが送信タイムスロット172SになるまでLSB方向に1ビットずつシフトして認証コード171、173の先頭位置を決定する。その結果、認証コード生成部315、355はともに、先頭タイムスロット174Sが1の送信タイムスロット172Sになる16ビットまたは20ビットの同一の認証コードを取得することができる。
【0108】
たとえば、160ビットのハッシュ値[01011001100100110001・・・]から、4値PPM方式で12ビットの認証コードを取得するには、先頭ビットを3ビットLSB側にシフトして認証コードを[110011001001]とすることができる。また直接送付方式で10ビットの認証コードを取得する際には、先頭ビットを1ビットLSB側にシフトして[1011001100]とすることができる。先頭タイムスロット174Sが送信タイムスロット172Sになることが保証されていれば、受信間隔測定部357はプリアンブル183を受け取らなくても、最初に受け取った受信タイムスロット172Rに基準時刻tyを設定することができる。
【0109】
[サーバへの適用]
つぎに、Webサーバ15bが許可された複数のクライアント11a〜11eのアクセスを許可するための認証方法を、図13を参照して説明する。クライアント11a〜11eは、送信側の認証システム301を実装しそれぞれのユーザIDをパスワード記憶部に格納している。ユーザIDのビット数は所定の値に固定してある。Webサーバ15bは受信側の認証システム303を実装し、図13(A)に示すようにパスワード記憶部353は、共有認証パスワード166とクライアントごとのユーザIDおよび個人認証パスワード165を格納している。
【0110】
受信パケット制御部391は、ユーザIDごとのゲートを有している。いずれかのクライアントの認証パケット送信部317は、図10で説明した手順で認証パケット・シーケンス171bSを送信するが、その際、プリアンブル183の後にユーザIDを送信タイムスロット172Sのパターンで表したIDパケット・シーケンスを付加する。IDパケット・シーケンスのスロット時間は、認証パケット・シーケンス171bSのスロット時間tsと異なるものであってもよいが同じにしたほうが処理は容易である。
【0111】
認証パケット送信部317はEEPROM11からユーザIDを取得して4値PPM方式、直接送付方式、または4値インターバル符号方式のいずれかの方式で認証パケット・シーケンス171bS、173bS、501bを生成したのと同じ方法でユーザIDを送信時間パターンに変換して、IDパケット・シーケンスを生成する。図13(B)は認証パケット・シーケンス171bSにIDパケット・シーケンス511を付加したパケット・シーケンス512のデータ構造を示す。パケット・シーケンス512を受け取ったWebサーバ15bの受信間隔測定部357は、プリアンブル183に続くIDパケット・シーケンス512の先頭タイムスロットに基準時刻tyを設定して、ユーザIDに相当する最初の所定の数の受信タイムスロットを特定する。
【0112】
認証コード検証部359は、IDパケット・シーケンス511から復号したユーザIDとパスワード記憶部353から取得したユーザIDを比較して一致した場合のみ、当該ユーザIDに対応する個人認証パスワードと共有認証パスワードと時刻情報から認証コードを生成して認証する。このような構成によりWebサーバ15bは、すべてのユーザに同一の個人認証パスワードを適用しないでも、個別に認証できるようになる。そしてWebサーバ15bは常時は受信パケット制御部391のゲートをすべて閉じておき、特定のユーザを認証したときにそれに対応するゲートだけを開いて、認証した認証パケット163に含まれる宛先IPアドレスのIPパケットだけをインターネット層255に送るようにすることができる。
【0113】
[その他の特徴]
ブロック417では、クライアント11cからクライアント11aにEcho返答をするためのICMPパケットを送って、認証が成功したことの通知を送っている。本実施の形態では、認証が成功したことの通知をしないでも、セッションを確立することができる。この場合、送信パケット制御部319は認証が成功したことを認識しないため、認証パケット163を送出してから所定の時間が経過した後にバッファに蓄積していたユーザ・データを含むIPパケットをネットワーク・インターフェース層257に送る。
【0114】
このとき、クライアント11cがクライアント11aを認証していないときは、アプリケーション251aからのアクセスに対する応答がないので、アプリケーション251aは再度認証パケット送信部317に認証作業を要求する。したがって、認証パケット163の形式は、ルータを経由して転送される場合は、ルーティングが可能でクライアント11cに到着できるように少なくともIPヘッダ155aを含むものであればよい。さらに、同一のルータに属するクライアント同士であれば、MACアドレスだけでパケット転送が可能なので、IPアドレスも不要になる。
【0115】
図11では、認証パケット・シーケンス171bSおよびプリアンブル183を、IPパケットを含むイーサネット・フレームで構成する例を説明したが、本発明では認証段階ではイーサネット・ペイロードの内容を必要としないので、IPパケットに代えてUDPパケットを採用することもできる。またネットワークに接続された状態で受ける攻撃に対して最大の安全性を図るために、受信側パケット制御部391をネットワーク・インターフェース層257とインターネット層255の間に挿入する例を説明したが、一般的にはアプリケーション層251が攻撃に対して最も甚大な被害をもたらす。
【0116】
たとえば、アドミニストレータ権限で動作するプログラムがウイルスに支配された場合は、コンピュータ全体がウイルスに制御されて致命的な損害を被ることになる。したがって、受信パケット制御部391をインターネット層255とトランスポート層253の間に挿入して、認証がすんでいないTCPパケットをトランスポート層253に渡さないようにすることでも有効に保護することができる。
【0117】
このとき、ネットワーク層255にはすべてのIPパケットが到着して認証前に認証パケット163のIPヘッダを解読するので、複数のユーザを認証するサーバ15bに適用すると、複数のユーザから認証パケット・シーケンスを同時に受け取って到着のタイミングが混在する場合でもIPアドレスに基づいてユーザごとに時間軸上で認証パケット163を並べて認証することができる。
【0118】
本発明にかかる認証システムは、トランスペアレントにコンピュータのネットワーク・セキュリティを確保する上でファイア・ウオールと関連する部分もある。よって、本発明にかかる認証システムは、従来から存在する認証システムと併存させることもできる。しかし、ファイア・ウオールは、通過できるパケットを制限するだけであり、通過を許可したパケット自体の安全性は個々のコンピュータが確保する必要がある。これに対して本発明にかかる認証システムは、IPパケットの信頼性をあらかじめ確認してからネットワーク層への受け入れを許可しているので一般的なファイア・ウオールとは異なる概念のセキュリティ・システムといえる。
【0119】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【0120】
100…コンピュータ
151…イーサネット・フレーム
161…ICMPメッセージ
163…認証パケット
171S、173S…送信側で生成した認証コード
171R、173R…受信側で生成した認証コード
171aS…送信側で生成した4値PPMコード
171aR…受信側で生成した4値PPMコード
171bS、173bS…送信側で生成した認証パケット・シーケンス
171bR、173bR…受信側で生成した認証パケット・シーケンス
172S…送信タイムスロット
172R…受信タイムスロット
174S…送信側の先頭タイムスロット
174R…受信側の先頭タイムスロット
151、181、182…イーサネット・フレーム
301…送信側の認証システム
303…受信側の認証システム
ts…認証パケットのスロット時間
tp…プリアンブル・パケットのスロット時間
t0〜t7…スロット間隔
S1〜S8…シンボル時間

【特許請求の範囲】
【請求項1】
ネットワークに接続された第1のコンピュータから前記ネットワークに接続された第2のコンピュータにアクセスする方法であって、
前記第1のコンピュータが第1の認証コードを生成するステップと、
前記第1のコンピュータが前記第1の認証コードから生成した送信タイミングに相当する複数の送信タイムスロットで前記第2のコンピュータに複数の認証パケットを送信するステップと、
前記第2のコンピュータが各認証パケットの到着時刻に対応する複数の受信タイムスロットのスロット間隔を計測するステップと、
前記第2のコンピュータが前記第1の認証コードと同一の第2の認証コードを生成するステップと、
前記計測したスロット間隔と前記第2の認証コードに基づいて前記第2のコンピュータが前記第1のコンピュータのアクセスを許可するステップと
を有するアクセス方法。
【請求項2】
前記第1の認証コードが、前記第1のコンピュータが保有する第1の時刻情報と第1のパスワードで構成されたビット列から生成され、前記第2の認証コードが前記第2のコンピュータが保有し前記第1の時刻情報に同期した第2の時刻情報と前記第1のパスワードと同一の第2のパスワードで構成されたビット列から生成されている請求項1に記載のアクセス方法。
【請求項3】
各送信タイムスロットが前記認証コードをパルス位置変調して生成したパルス位置変調コードに割り当てたタイムスロットで形成されている請求項1または請求項2に記載のアクセス方法。
【請求項4】
前記送信タイムスロットが前記認証コードのビット列を所定のビット数で区切ったコードに割り当てたタイムスロットで形成されている請求項1または請求項2に記載のアクセス方法。
【請求項5】
前記認証パケットを送信するステップが前記第1のコンピュータのアプリケーション・プログラムが前記第2のコンピュータにアクセスを開始したことに応答して実行され、
前記アプリケーション・プログラムのアクセス要求に基づいて作成されたデータ・パケットを所定の期間前記第1のコンピュータがバッファに蓄積するステップを有する請求項1から請求項4のいずれかに記載のアクセス方法。
【請求項6】
前記認証パケットを送信するステップが前記複数の認証パケットを送信する前にプリアンブル・パケットを送信するステップを含む請求項1から請求項5のいずれかに記載のアクセス方法。
【請求項7】
前記第2のコンピュータが前記プリアンブル・パケットのスロット時間を計測するステップと、
前記第2のコンピュータが前記プリアンブル・パケットのスロット時間に基づいて前記受信タイムスロットのスロット時間を設定するステップと
を有する請求項6に記載のアクセス方法。
【請求項8】
前記第1のコンピュータが新たな認証コードを生成して、前回前記複数の認証パケットを送信したときに使用したタイムスロットのスロット時間よりも長いスロット時間のタイムスロットを使用して前記第2のコンピュータに複数の認証パケットを送信するステップを有する請求項1から請求項7のいずれかに記載のアクセス方法。
【請求項9】
前記第2のコンピュータが前記第1のコンピュータにアクセスを許可したことを通知するステップを有する請求項1から請求項8のいずれかに記載のアクセス方法。
【請求項10】
前記認証パケットを送信するステップが、前記第1のコンピュータのユーザ識別子から生成した送信タイムスロットで複数の識別子パケットを送信するステップを含む請求項1から請求項9のいずれかに記載のアクセス方法。
【請求項11】
ネットワークを介して接続されたリモート・コンピュータからアクセスが可能なコンピュータであって、
第1の認証コードを生成する認証コード生成部と、
前記リモート・コンピュータが保有する前記第1の認証コードと同一の第2の認証コードから生成した送信タイムスロットで前記リモート・コンピュータが送信した複数の認証パケットの到着時刻に対応する受信タイムスロットのスロット間隔を計測する受信間隔測定部と、
前記計測したスロット間隔と前記第1の認証コードを検証する認証コード検証部と、
前記認証コード検証部からの認証成功の通知に基づいて前記リモート・コンピュータから受け取ったデータ・パケットを上位層に送る受信パケット制御部と
を有するコンピュータ。
【請求項12】
前記上位層がインターネット層である請求項11に記載のコンピュータ。
【請求項13】
前記受信パケット制御部は、所定の時間の間前記データ・パケットを受け取らないときに前記インターネット層への前記データ・パケットの通過を阻止する請求項12に記載のコンピュータ。
【請求項14】
前記受信パケット制御部は、認証が成功した認証パケットに含まれるIPアドレスを含むデータ・パケットだけを前記インターネット層に送る12または請求項13に記載のコンピュータ。
【請求項15】
前記認証パケットがEcho要求をするICMPメッセージを含み、前記受信パケット制御部が前記認証パケットを前記インターネット層に送ったときにICMPモジュールが前記リモート・コンピュータにEcho返答をするICMPメッセージを含むIPパケットを送る請求項14に記載のコンピュータ。
【請求項16】
ネットワークを介して接続されたリモート・コンピュータにアクセスが可能なコンピュータであって、
前記リモート・コンピュータへのアクセス開始に応答して第1の認証コードを生成する認証コード生成部と、
前記第1の認証コードから生成した複数の送信タイムスロットで複数の認証パケットを送信する認証パケット送信部とを有し、
前記リモート・コンピュータは前記コンピュータが送信した複数の認証パケットの到着時刻に対応する受信タイムスロットのスロット間隔を計測し、前記リモート・コンピュータが生成した前記第1の認証コードと同一の第2の認証コードと前記受信タイムスロットのスロット間隔を検証して前記コンピュータを認証することが可能であるコンピュータ。
【請求項17】
前記認証パケット送信部は、各送信タイムスロットで複数の認証パケットを送信する請求項16に記載のコンピュータ。
【請求項18】
アプリケーション・プログラムが送信するデータ・パケットを所定の期間バッファに保存し、前記複数の認証パケットを送信した後の所定のタイミングで前記バッファに蓄積したデータを前記リモート・コンピュータに送信する送信パケット制御部を有する請求項16または請求項17に記載のコンピュータ。
【請求項19】
前記所定のタイミングが前記リモート・コンピュータから認証成功を示す通知を受け取ったタイミングである請求項18に記載のコンピュータ。
【請求項20】
前記所定のタイミングが前記複数の認証パケットを送信してから所定の時間が経過したタイミングである請求項18に記載のコンピュータ。
【請求項21】
前記送信パケット制御部は、インターネット層の下層に配置されている請求項18から請求項20のいずれかに記載のコンピュータ。
【請求項22】
ネットワークを介して接続されたリモート・コンピュータからアクセスを受けるコンピュータに、
第1の認証コードを生成するステップと、
前記第1の認証コードと同一の第2の認証コードから生成した時間間隔で前記リモート・コンピュータが送信した複数の認証パケットを受信するステップと、
各認証パケットの到着時刻の時間間隔を計測するステップと、
前記計測した時間間隔と前記第1の認証コードとを検証して前記リモート・コンピュータのアクセスを許可するステップと
を有する処理を実行させるコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2012−14278(P2012−14278A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−148189(P2010−148189)
【出願日】平成22年6月29日(2010.6.29)
【出願人】(505205731)レノボ・シンガポール・プライベート・リミテッド (292)
【復代理人】
【識別番号】100106699
【弁理士】
【氏名又は名称】渡部 弘道
【復代理人】
【識別番号】100077584
【弁理士】
【氏名又は名称】守谷 一雄
【Fターム(参考)】