以下、本発明の実施の形態について、図面を用いて説明する。
なお、本発明の実施の形態において、OSI(Open Systems Interconnection)参照モデルの第2層のデータをフレームという。
[システム構成]
図1(A)・(B)は、本発明の実施の形態における無線通信システム1の構成の一例を示す図である。なお、本発明の実施の形態では無線通信システム1は図1(A)・(B)のいずれかの構成であればよい。
図1(A)の無線通信システム1は、ステーション100a、100b、・・・100n(以下、それぞれを区別しない場合、ステーション100という。)と、アクセスポイント200とを有する。ステーション100とアクセスポイント200とは、無線LAN(Local Area Network)99を介して通信する。ここで、ステーション100は、WPS(Wi-Fi Protected Setup)においてEnrolleeと定義されるプローブ要求(Probe Request)を送信する機器である。アクセスポイント200は、WPSにおいてAP/Registrarと定義されるプローブ要求を送信したEnrolleeに対して、SSIDや暗号鍵生成のためのパスフレーズ等の情報を与える役割を有する機器である。
ステーション100は、IEEE802.11a/b/g/n規格に基づき、無線通信をする機能を有する。ステーション100は、スマートフォン、PC(Personal Computer)、タブレット型端末、MFP(Multifunction Peripheral)及びデジタルカメラ等である。
アクセスポイント200は、周囲に定期的にビーコン(Beacon)フレームを送信する。ビーコンフレームには、チャネル(周波数範囲)、ESSID、サポートしている伝送速度、セキュリティ方式、タイムスタンプ及びQoS等が含まれる。ステーション100がビーコンフレームの到達範囲に進入すると、ビーコンフレームを受信しプローブ要求を送信する。その後、アクセスポイント200とステーション100との間で認証処理、接続処理を経て、無線通信が可能となる。
図1(B)の無線通信システム1はWi−Fi Directを用いた接続形態であり、アクセスポイントの機能をソフトウェア上で実現するP2P Group Owner400と、クライアント端末であるP2P Client300とを有する。なお、P2P Client300は複数存在してもよい。P2P Client300とP2P Group Owner400とは、無線LAN99(Local Area Network)を介して通信する。WPSにおける機能分担上、P2P Client300がEnrolleeであり、P2P Group Owner400がAP/Registrarである。P2P Client300及びP2P Group Owner400が有する機能は、それぞれステーション100及びアクセスポイント200の機能と同等である。P2P Client300及びP2P Group Owner400は、例えば、スマートフォン、PC(Personal Computer)、タブレット型端末、MFP及びデジタルカメラ等である。
なお、本発明の実施の形態は、図1(A)の無線通信システム1に基づいて説明を行う。本発明は図1(B)のWi−Fi Directs仕様のシステムにおいても実施できる。
[動作概要]
本発明の実施の形態において、ステーション100とアクセスポイント200との間で無線LAN通信を可能とするために無線通信システム1は以下のように動作する。本発明の実施の形態では、無線LANの接続手順はWPSに規定されているPINコード方式を用いる。
まず、初期状態ではステーション100はアクセスポイント200を検出できていない状態(アクティブスキャンの場合)、又はアクセスポイント200が送信するビーコンフレームを受信し、ステーション100のユーザが接続したいアクセスポイント200を指定する前の状態(パッシブスキャンの場合)である。これらのいずれの状態においても、ステーション100は、接続したいアクセスポイント200のネットワーク識別子であるESSID(Extended Service Set Identifier)を把握している。
また、本発明の実施の形態では、ステーション100及びアクセスポイント200には、ステーション100とアクセスポイント200との間で接続端末識別情報を用いて通信の確立を行う。接続端末識別情報は、アクセスポイント200に接続可能であることを示す英数字、記号等又はそれらの組み合わせからなる複数桁の識別情報である。アクセスポイント200で保持する接続端末識別情報と、ステーション100が保持する接続端末識別情報とが一致すれば、そのステーション100は接続可能な端末として以降の認証手順及び接続手順が実行される。
また、本発明の実施の形態では、PINコードを生成するためにハッシュ関数を用いる。ステーション100及びアクセスポイント200において用いられるハッシュ関数は同じである。
以下、(1)〜(4)において動作概要を説明する。
(1)まずステーション100からアクセスポイント200にプローブ要求を送信する。このプローブ要求には、ESSIDと接続端末識別情報とが設定されている。この接続端末識別情報は、例えばIEEE802.11のプローブ要求のフレームフォーマットに規定されているユーザ(ベンダ)が任意に使用可能な領域に設定される。
(2)アクセスポイント200は、自機に設定されたESSIDと一致するESSIDが含まれたプローブ要求を受信し、プローブ要求に含まれる接続端末識別情報に基づきプローブ要求応答を生成する。具体的には、受信したプローブ要求に含まれる接続端末識別情報が、アクセスポイント200が保持する接続端末識別情報と一致するか否かが判別される。一致する場合は、ESSIDとPINコード生成データとが設定されたプローブ要求応答を、ステーション100に送信する。PINコード生成データとは、PINコードを生成するための元のデータ(ハッシュ関数の入力値の一つ)であり、アクセスポイント200がプローブ要求応答を送信する都度、ランダムに作成するデータである。PINコード生成データは、例えばIEEE802.11のプローブ要求応答のフレームフォーマットに規定されているユーザ(ベンダ)が任意に使用可能な領域に設定される。一方、受信したプローブ要求に含まれる接続端末識別情報が、アクセスポイント200が保持する接続端末識別情報と一致しない場合は、PINコード生成データが含まれないプローブ要求応答が生成され、ステーション100に送信される。
(3)次に、ステーション100及びアクセスポイント200において、PINコードを生成する。本発明の実施の形態では、入力値をESSIDとPINコード生成データとしたハッシュ関数の出力値がPINコードとなる。ここで、上述したように、ステーション100及びアクセスポイント200は同じハッシュ関数を用いるため、ステーション100及びアクセスポイント200が保持するESSID及びPINコード生成データが同じであればPINコードは同一となる。
(4)以降、WPSによるPINコード方式の接続手順が実行され、ステーション100及びアクセスポイント200において生成されたPINコードが一致すると、認証に必要な情報(Credentials)がアクセスポイント200からステーション100に送信される。その後、認証手順が完了するとステーション100とアクセスポイント200との間で通信が開始される。
以上(1)〜(4)の動作により、ステーション100のユーザはPINコードの煩雑な手入力操作を必要とせず、かつ予めアクセスポイント200に接続可能とされたステーション100のみの接続を可能とする高いセキュリティを実現することができる。また、IEEE802.11仕様のフレームフォーマットに接続端末識別情報及びPINコード生成データを設定するため、本発明の実装が容易となる。
[ハードウェア構成]
以下の図2及び図3により本発明の実施形態におけるステーション100及びアクセスポイント200のハードウェア構成の一例を説明する。なお、図2及び図3にはデバイスドライバ及びファームウェアを記載している。
<ステーション>
図2は、本発明の実施の形態におけるステーション100の構成の一例を示す図である。なお、図2は、無線通信のプロトコルとして、IEEE802.11a/b/g/n仕様に規定される無線LANを用いた場合の例である。
ステーション100は、ステーション本体110、WLANカード120、操作部130及び表示部140等を有する。ステーション本体110とWLANカード120と操作部130と表示部140とは、バス150を介して接続されている。
ステーション本体110は、メインCPU(Central Processing Unit)111、メモリ装置112、補助記憶装置113、デバイスドライバ114及びバス制御部115等を有する。WLANカード120は、ファームウェア121、ローカルCPU122、バス制御部123、WLAN MAC124、WLAN PLCP125及びRF(Radio Frequency)部126を有する。
ステーション100での処理を実現するプログラムは、補助記憶装置113にインストールされている。補助記憶装置113はインストールされたステーション用プログラムを格納するとともに、必要なファイルやデータ等を格納する。補助記憶装置は、例えばハードディスクである。ステーション用プログラムには、後述する本発明の実施の形態におけるステーション用無線ユーティリティツール1000が含まれる。ステーション用無線ユーティリティツール1000は、アクセスポイント200との接続を実現するための機能を有するソフトウェアであり、本発明の実施の形態において、ステーション100に予めインストールされている。なお、ステーション用無線ユーティリティツール1000は、ステーション100の製品出荷時にインストールされていてもよいし、ステーション100の起動後にインターネットからのダウンロードや外部記録媒体を介してインストールされてもよい。
メモリ装置112は、メインCPU111からのプログラムの起動指示があった場合に、補助記憶装置113からプログラムを読み出して格納する。また、メモリ装置112は必要なファイルやデータ、アプリケーション等を格納する。メモリ装置112は、例えばROM、RAM、NVRAM等である。
メインCPU111は、プログラムやデバイスドライバ114等を実行させる。
デバイスドライバ114は、ファームウェア121と連携して、WLAN MAC124を制御する。
バス制御部115は、WLANカード120内のバス制御部123と連携して、バス150の制御を行う。
WLANカード120のローカルCPU122は、ファームウェア121を実行させる。ファームウェア121は、WLAN MAC124のレジスタへの値の読み書きを行うことにより、WLAN MAC124を制御する。
バス制御部123は、ステーション本体110内のバス制御部115と連携して、バス150の制御を行う。
WLAN MAC124では、送信するデータの生成や受信したデータの解体を行う。
WLAN PLCP125では、WLAN MAC124で生成されたディジタルのデータを電気信号に変換し、受信した電気信号をディジタルのデータに変換し、WLAN MAC124に渡す。
RF部126は、電気信号の周波数と無線の電波の周波数との周波数変換を行う。
操作部130は、ユーザが設定や命令等の入力操作を行うためのハードキー、ボタン、マウス及びタッチパネル等によるソフトキーである。操作内容はメインCPU111に通知される。
表示部140は、ユーザに対して、カーソル、メニュー、ウィンドウ、文字又は画像等の各種情報の表示出力がされる液晶や有機EL(Electro Luminescence)等のユーザインタフェース画面である。
<アクセスポイント>
図3は、本発明の実施の形態におけるアクセスポイント200の構成の一例を示す図である。なお、図3は、無線通信のプロトコルとして、IEEE802.11a/b/g/n仕様に規定される無線LANを用いた場合の例である。
アクセスポイント200は、アクセスポイント本体210、WLANカード220、イーサネット(Ethernet)(登録商標)カード230、操作部240及び表示部250等を有する。アクセスポイント本体210とWLANカード220とイーサネットカード230と操作部240と表示部250とは、バス260を介して接続されている。
アクセスポイント本体210は、メインCPU211、メモリ装置212、補助記憶装置213、デバイスドライバ214及びバス制御部215等を有する。WLANカード220は、ファームウェア221、ローカルCPU222、バス制御部223、WLAN MAC224、WLAN PLCP225及びRF部226等を有する。これらアクセスポイント本体210及びWLANカード220のハードウェア等はそれぞれ図2のステーション100のハードウェア等と同じ動作をする。そのためこれらの説明は省略する。
但し、メモリ装置212及び補助記憶装置213にはアクセスポイント用のプログラムが格納されている点、並びにそのプログラムには後述するアクセスポイント用無線ユーティリティツール2000が含まれる点が図2と異なる。
また、アクセスポイント200には、IEEE802.3に規定されているイーサネットによりインターネットやイントラネット、LANに有線接続するためのイーサネットカード230が備わっている。但し、Wi−Fi Directを用いた接続形態である場合等には、P2P Group Owner400においてイーサネットカード230を備えていなくてもよい。
[機能構成]
<ステーション>
図4は、本発明の実施の形態におけるステーション100の機能構成の一例を示す図である。各機能は図2のメインCPU111がプログラムを実行し、ハードウェアと協働することで実現される。
ステーション100は、プローブ要求生成手段1001、プローブ要求送信・応答受付手段1002、PINコード生成・演算手段1003、認証/接続制御手段1004、認証/接続要求送信・応答受付手段1005、記憶手段1006、ユーザI/F制御手段1007及び無線LAN通信I/F手段1008等を有する。また、これらの機能のうち、ステーション用無線ユーティリティツール1000は、プローブ要求生成手段1001及びPINコード生成・演算手段1003を有する。
プローブ要求生成手段1001は、通信可能なアクセスポイント200を検出するために、アクセスポイント200に送信するプローブ要求を生成する。プローブ要求には、記憶手段1006に記憶されているESSIDと接続端末識別情報とが設定される。
本発明の実施の形態において、接続端末情報はプローブ要求の信号フォーマットにおいてユーザ(ベンダ)が任意に設定可能な領域に設定される。具体的には、IEEE802.11a/b/g/n仕様において規定されているプローブ要求のフレームフォーマットに含まれるVendor Specific Attributeの領域に接続端末識別情報が設定される。図5は、本発明の実施の形態におけるIEEE802.11に定義されたプローブ要求のフレームフォーマットへの接続端末識別情報の設定例を示した図である。図5(a)はProbe Request Frame(プローブ要求フレーム)のフォーマットを示した図であり、0〜2312バイトの範囲で設定可能なFrame Bodyの領域に、接続端末情報が設定される。図5(b)はFrame Bodyに設定可能な情報要素(IE:Information Element)を示した図であり、この中にはVendor Specific IEが含まれる。さらに、図5(c)はVendor Specific IEに設定されるWSC(Wi-Fi Simple Configuration Specification 2.0)仕様に準拠した情報要素(WSC IE)を示した図である。なお、WSCは、WPSのプロトコルに関する仕様である。WSC仕様ではElement IDに「221」かつOUI(Organizationally Unique Identifier)領域に「50 6F 9A 04」が設定されると、WSC IEはベンダが任意に使用可能なVendor Specific IEであることを示す。よって、本発明の実施の形態では、Element IDには「221」、OUIには「50 6F 9A 04」が設定される。WSC IEには、WSC Attributeの領域が含まれ、この領域の中に本発明の実施の形態の接続端末識別情報が設定される。図5(d)は、Element IDを「221」とした場合のWSC Attributeの設定内容を示した図である。ここで、WSC AttributeのAttribute IDに「221」が設定されると、WSC Attributeはベンダが任意に使用可能なVendor Specific Attributeであることを示す。よって、本発明の実施の形態では、Attribute IDには「221」が設定される。そして、WSC Attributeの中のVendor Specificの領域に接続端末識別情報が設定される。図5(d)に示されるように、例えば接続端末識別情報が「t5kw2r9e」である場合、このデータがVendor Specificに設定される。
また、端末識別情報は、必ずしもVendor Specific Attributeの先頭に設定する必要はなく、例えば図6に示すように、ランダムに作成した数バイトのダミーデータを端末識別情報の値の前後や間に組み込んでもよい。図6は、例えばダミーデータを「A」、「B」、「C」とした場合のダミーデータを組み込んだ接続端末識別情報の例である。図6(a)は接続端末識別情報の先頭にダミーデータを組み込んだ例である。図6(b)は接続端末識別情報の末尾にダミーデータを組み込んだ例である。図6(c)は接続端末識別情報の間にダミーデータを組み込んだ例である。これにより、プローブ要求フレームが第三者にキャプチャされた場合に、端末識別情報の存在が知られたり、解読されたりする危険性を軽減することができる。
なお、本発明の実施の形態では、本発明の技術の実装の容易性を鑑み、IEEE802.11及びWSCの仕様に準拠したプローブ要求のフレームフォーマットを利用し接続端末識別情報を設定しているが、接続端末識別情報の設定領域はこの限りではない。すなわち接続端末識別情報の設定領域は、Vendor Specificという名称に限定されない。また、新規の信号を作成し、その信号に接続端末識別情報を設定することもできる。
接続端末識別情報は、予めステーション100のメモリ装置112のROM等に書き込まれていたり、ステーション用無線ユーティリティツール1000のインストール時にメモリ装置112に設定されたりする。なお、例えば、ステーション用無線ユーティリティツール1000のインターネットからのダウンロード時に接続端末識別情報が割り当てられてもよい。
なお、プローブ要求を受信したアクセスポイント200において、プローブ要求に含まれていた接続端末識別情報が、予めアクセスポイント200に設定されている端末識別情報と一致する場合は、アクセスポイント200からステーション100に、接続に必要な情報であるPINコード生成データが含まれたプローブ要求応答が送信される。
なお、アクセスポイント200が保持する端末識別情報は、接続するステーション100毎に複数存在してもよい。
プローブ要求送信・応答受付手段1002は、プローブ要求生成手段1001により生成されたプローブ要求を、無線LAN通信I/F手段1008を介して、アクセスポイント200に送信する。また、プローブ要求送信・応答受付手段1002は、アクセスポイント200から送信されるプローブ要求応答を受け付け、プローブ要求応答に含まれているPINコード生成データを記憶手段1006に記憶する。
PINコード生成・演算手段1003は、入力値をプローブ要求応答に含まれているESSID及びPINコード生成データとし、ハッシュ関数による演算処理を実行する。この演算処理の出力値がPINコードとなる。本発明の実施の形態において利用するハッシュ関数は、例えば一方向関数のSHA−1(Secure Hash Algorithm1)やMD5(Message Digest5)である。なお、用いられるハッシュ関数はこの限りではなく、安全性や演算の処理負荷を考慮し、適当なハッシュ関数を使用すればよい。
また、PINコード生成・演算手段1003は、IEEE802.1xで定義されているEAP(Extensible Authentication Protocol)によるユーザ認証の過程においてPINコードを入力値としたハッシュ関数の演算処理を実行する。
認証/接続制御手段1004は、WPSによるPINコード方式の接続手順における認証要求、接続要求及びEAPを用いたユーザ認証手順で用いるメッセージを生成する。また、認証/接続要求送信・応答受付手段1005を制御し、フレームの送受信を指示する。
認証/接続要求送信・応答受付手段1005は、認証/接続制御手段1004により生成されたフレームを無線LAN通信I/F手段1010を介してアクセスポイント200に送信し、アクセスポイント200から送信されるフレームを受け付ける。
記憶手段1006は、ESSID、接続端末識別情報、ハッシュ関数及びPINコード等が記憶される。ESSIDは、パッシブスキャン方式であればアクセスポイント200から送信されるビーコンフレームに含まれたESSIDを記憶し、アクティブスキャン方式であればステーション100のユーザ等により手入力等により記憶される。接続端末識別情報は、上述したようにステーション100の製品出荷時にROM等に書き込まれていたり、ステーション用無線ユーティリティツール1000に記憶されていたり、又はそのダウンロード時等に取得したりし、記憶される。接続端末識別情報は、更新可能なデータである。但し、通信したいアクセスポイント200が保持する接続端末識別情報と一致していなければ、そのアクセスポイント200とは通信できないため、接続端末識別情報の更新時にはアクセスポイント200と値の整合を図る必要がある。ハッシュ関数は、PINコード生成に用いられるハッシュ関数が記憶される。PINコードは、PINコード生成・演算手段1003により生成されたPINコードが記憶される。なお、記憶手段1006には、図2のメモリ装置112や補助記憶装置113、外部記録媒体が用いられる。
ユーザI/F制御手段1007は、図2の操作部130及び表示部140を制御し、ユーザからの命令の入力を受け付け、又入力を受け付ける画面を表示する。
無線LAN通信I/F手段1010は、図2のWLANカード120を制御し、IEEE802.3規格に基づき、データの送受信を行う。
<アクセスポイント>
図7は、本発明の実施の形態におけるアクセスポイント200の機能構成の一例を示す図である。各機能は図3のメインCPU211がプログラムを実行し、ハードウェアと協働することで実現される。
アクセスポイント200は、プローブ要求受付・応答手段2001、PINコード生成データ作成手段2002、プローブ要求応答生成手段2003、PINコード生成・演算手段2004、認証/接続要求受付・応答手段2005、認証/接続制御手段2006、記憶手段2007及び無線LAN通信I/F手段2008等を有する。また、これらの機能のうち、アクセスポイント用無線ユーティリティツール2000は、PINコード生成データ作成手段2002、プローブ要求応答生成手段2003及びPINコード生成・演算手段2004を有する。
プローブ要求受付・応答手段2001は、ステーション100から送信されるプローブ要求を受け付ける。プローブ要求受付・応答手段2001は、まず受信したプローブ要求に設定されたESSIDが、自機が保持するESSIDと一致しない場合は、そのプローブ要求は破棄する。自機が保持するESSIDと一致する場合は、プローブ要求を解析し処理を継続する。次に、受信したプローブ要求に含まれる接続端末識別情報が、アクセスポイント200が保持する接続端末情報と一致するか否かを判別する。一致する場合は、PINコード生成データが含まれたプローブ要求応答を、プローブ要求応答生成手段2003に実行させる。一致しない場合は、PINコード生成データが含まれないプローブ要求応答が生成される。また、プローブ要求受付・応答手段2001は、プローブ要求応答生成手段2003により生成されたプローブ要求応答を、ステーション100に送信する。
プローブ要求応答生成手段2003は、受信した接続端末識別情報に基づき、プローブ要求受付・応答手段2001からのプローブ要求応答の生成の要求に応じた処理を行う。受信したプローブ要求に含まれる接続端末識別情報が、アクセスポイント200が保持する接続端末情報と一致する場合は、PINコード生成データ作成手段2002にPINコード生成データの作成要求を行う。そして、作成されたPINコード生成データと記憶手段2007が記憶する自機に設定されているESSIDとを含むプローブ要求応答を生成する。本発明の実施の形態においてPINコード生成データは、プローブ要求応答のフレームフォーマットのVendor Specificの領域に設定される。フレームフォーマットに設定される内容は図5に示されたプローブ要求に接続端末識別情報を設定した場合と同じである。なお、PINコード生成データを設定する領域はこの限りではない。一方、受信したプローブ要求に含まれる接続端末識別情報が、アクセスポイント200が保持する接続端末情報と一致しない場合はPINコード生成データが含まれないプローブ要求応答を生成する。プローブ要求応答生成手段2003がプローブ要求応答を生成すると、プローブ要求受付・応答手段2001にステーション100への送信処理を要求する。
PINコード生成データ作成手段2002は、プローブ要求応答生成手段2003からの要求に基づき、PINコード生成データを作成する。PINコード生成データはランダムな英数字、記号又はその組み合わせとして表される。PINコード生成データ作成手段2002は生成したPINコード生成データを、プローブ要求応答生成手段2003に通知する。
PINコード生成・演算手段2004は、ステーション100のPINコード生成・演算手段1003と同様に、演算処理内容を秘匿したハッシュ関数を用いてPINコードを生成する。PINコードの生成処理は、ステーション100のPINコード生成・演算手段1003と同様に入力値をESSID及びPINコード生成データとしたハッシュ関数の出力値としてPINコードを得る。したがって、ステーション100のPINコード生成・演算手段1003及びアクセスポイント200のPINコード生成・演算手段2004が、同じSSID及びPINコード生成データをハッシュ関数の入力値とした場合、出力値であるPINコードは同値となる。また、PINコード生成・演算手段2004は、IEEE802.1xで定義されているEAPによるユーザ認証の過程においてPINコードを入力値としたハッシュ関数の演算処理を実行する。
認証/接続制御手段2006は、WPSによるPINコード方式の接続手順における認証要求応答、接続要求応答及びEAPを用いたユーザ認証手順で用いるメッセージを生成する。また、認証/接続要求受付・応答手段2005を制御し、フレームの送受信を指示する。
認証/接続要求受付・応答手段2005は、認証/接続制御手段2006により生成されたフレームを無線LAN通信I/F手段2008を介してステーション100に送信し、ステーション100から送信されるフレームを受け付ける。
記憶手段2007は、ESSID、接続端末識別情報、ハッシュ関数、PINコード及び認証に必要な情報であるCredentials等が記憶される。記憶手段2007には、図3のメモリ装置212や補助記憶装置213、外部記録媒体が用いられる。
無線LAN通信I/F手段2008は、図3のWLANカード220を制御し、IEEE802.3規格に基づき、データの送受信を行う。
[処理手順(PINコードの生成)]
以下、ステーション100のPINコード生成・演算手段1003によるPINコード生成処理について説明する。なお、アクセスポイント200のPINコード生成・演算手段2004も同様の処理を実行する。
図8は、本発明の実施の形態におけるPINコード生成・演算手段1003によるPINコード生成の処理手順の一例を示すフローチャート図である。また、PINコード生成・演算手段1003に入力されるESSIDは「network2」、PINコード生成データは「a5knmb3p」とする一例を用いて説明する。
まずPINコード生成・演算手段1003は、ESSID及びPINコード生成データを1文字毎にアスキーコードに変換し、1バイト毎に排他的論理和(EOR: exclusive or)を求める(S502)。つまり、ESSID「network2」は「6E 65 74 77 6F 72 6B 32」に変換され、PINコード生成データ「a5knmb3p」は「61 35 69 6E 6D 62 33 70」に変換される。ここで、SSID及びPINコード生成データの長さが9文字以上である場合には下位8文字を抽出し、SSIDの長さが8文字未満である場合には上位に空白(スペース)を補充し8文字に拡張し、1文字ごとにアスキーコードに変換するようにしてもよい。次いで、「6E 65 74 77 6F 72 6B 32」と、「61 35 69 6E 6D 62 33 70」とで、下位4ビット毎に、EORを求めることによりEOR算出値「0F 50 1D 19 02 10 58 42」が得られる。
PINコード生成・演算手段1003は、EORの下から1バイト目の文字のコードをハッシュ関数の入力値とする(S504)。つまり、「0x42」をハッシュ関数の入力値とする。
PINコード生成・演算手段1003は、ハッシュ関数の出力値の下1桁を、PINコードの、下から1番目の桁の値とする(S506)。例えば、ハッシュ関数の出力値として、「5」が得られた場合、この「5」をPINコードの下から1番目の桁の値とする。
PINコード生成・演算手段1003は、ハッシュ関数の出力値の下1桁目と、ステップS502で求めたEOR算出値の下から1バイト目とを加算する(S508)。つまり、ハッシュ関数の出力値の下1桁[5]と、EOR算出値の下から1バイト目「0x42」とを加算し、「0x47」を得る。
PINコード生成・演算手段1003は、加算した値を、ハッシュ関数の入力値とする(S510)。つまり、加算した値である「0×47」をハッシュ関数の入力値とする。
PINコード生成・演算手段1003は、ハッシュ関数の出力値の下1桁を、PINコードの、下から2番目の桁の値とする(S512)。例えば、ハッシュ関数の出力値として、「3」が得られた場合、この「3」をPINコードの下から2番目の桁の値とする。
PINコード生成・演算手段1003は、ステップ912で得られたハッシュ関数の出力値の下1桁と、EOR算出値の下から2バイト目とを加算する(S514)。つまり、ハッシュ関数の出力値の下1桁目「3」と、EOR算出値の下から2バイト目「0x58」とを加算し、「0x5B」を得る。
PINコード生成・演算手段1003は、加算した値を、ハッシュ関数の入力値とする(S516)。つまり、加算した値である「0×5B」をハッシュ関数の入力値とする。
PINコード生成・演算手段1003は、ハッシュ関数の出力値の下1桁を、PINコードの、下から3番目の桁の値とする(S518)。例えば、ハッシュ関数の出力値として、「2」が得られた場合、この「2」をPINコードの下から3番目の桁の値とする。
以降、PINコードとして8桁の値が算出されるまで、上述した処理を繰り返す(S520)。
以上の手順により図8に示される例では、PINコードとして「85662235」が得られる。
本発明の実施の形態において、PINコード生成データ(図8の例では「a5knmb3p」)は、アクセスポイント200でプローブ要求を受け付ける都度生成されるランダムな値である。したがって、同一のPINコード「85662235」を生成できるのは、共通のESSID「network2」を有するPINコード生成データ「a5knmb3p」を受信したステーション100と、そのPINコード生成データを送信したアクセスポイント200に限られる。これにより、例えばアクセスポイント200に対して、複数のステーション100から同一のPINコードが送信された場合、後に送信したステーション100からの接続を拒否することができ、第三者からの不正アクセス等を回避することができる。なお、予め無線通信システム1の管理者やステーション100のユーザ等により指定された複数のステーション100から構成されるグループに対して、同一のPINコード生成データを作成し、プローブ要求応答に設定するようにしてもよい。
また、このPINコードを生成する演算処理方法は無線ユーティリティツールにおいて秘匿にされている。つまり、ステーション用無線ユーティリティツール1000を有するステーション100及びアクセスポイント用無線ユーティリティツール2000を有するアクセスポイント200のみが、同一のPINコードを生成可能である。すなわち、ESSIDとPINコード生成データとを第三者が取得したからといって、無線ユーティリティツールで生成される正規のPINコードを生成できないため、セキュリティの向上を図ることができる。
なお、図8ではPINコードを生成する演算処理がハッシュ関数である場合を一例として説明したが、演算処理の内容はこの限りではない。
[動作手順]
図9は、本発明の実施の形態における無線通信システム1の動作手順の一例を示すシーケンス図である。図9では具体的に、ステーション100からアクセスポイント200へのプローブ要求の送信処理から、アクセスポイント200からステーション100へのCredentialsの送信処理までのWPSの仕様に従った動作手順を一例として説明する。すなわち、図9の初期状態において、ステーション100では接続したいアクセスポイント200のESSIDが取得できていない。また、ステーション100及びアクセスポイント200において、それぞれ無線ユーティリティツールがインストールされている。なお、図9の全体の流れは、ステーション100とアクセスポイント200との間でプローブ要求/応答(Probe Request/Response)、認証要求/応答(Authentication Request/Response)及び接続要求/応答(Association Request/Response)処理の終了後、EAPを用いたユーザ認証のメッセージ(M1〜M8)が送受信される。その後、アクセスポイント200からステーション100にCredentialsが送信される。
PINコード方式は、AP/Registrar側と、Enrollee側とで、事前に4桁又は8桁の数字であるPINコードを共有しておく。接続における暗号鍵の生成の過程で、AP/Registrar側と、Enrollee側との間で、それぞれPINコードを用いる。通信に必要な、暗号鍵の元となるパスフレーズ等の情報(Credentials)は、PINコードを元に生成した暗号鍵を用いて、AP/RegistrarからEnrolleeに送信される。そのため、AP/Registrarと、Enrolleeとで共有しているPINコードが一致する場合にのみ、両者の暗号鍵が正しく対応し、Credentialsを送信することができる。
S600:アクセスポイント200は、約100ミリ秒毎にビーコンフレームを送信する。このビーコンフレームには、アクセスポイント200が無線通信するネットワークのESSIDが含まれている。
S602:ステーション100のユーザは、操作部130を介して、ステーション用無線ユーティリティツール1000を起動し、ESSIDを検出するためのスキャン処理の実行を入力する。
図10は、本発明の実施の形態においてステーション用無線ユーティリティツール1000により表示されるスキャン処理実行の入力画面の一例を示した図である。ここで、スキャン処理を実行するために「YES」のソフトキーを押下する。
ステーション100においてスキャン処理が実行されると、アクセスポイント200から送信されるビーコンフレームを収集する。なお、ステーション100においてビーコンフレームを自動受信してもよい。その場合、ESSIDを取得するためのユーザのスキャン処理実行の入力操作は不要となる。
S604:ステーション100がビーコンフレームに含まれていたESSIDを取得すると、ステーション用無線ユーティリティツール1000はESSIDの一覧が示された画面を表示部140に表示させる。なお、このESSIDの一覧には、ステーション100のユーザによって手動入力されたESSIDも表示される。ESSIDの一覧が表示された画面を操作し、接続したいESSIDを選択する。
図11は、本発明の実施の形態におけるステーション用無線ユーティリティツール1000により表示される接続実行画面の一例を示した図である。この一覧の中からユーザは接続したいESSIDを選択することができる。この画面においてユーザが接続したいESSIDの箇所にカーソル等を合わせると、そのESSIDの箇所の背景色が変わり、指定するESSIDが明示される。また、そのカーソルを合わせたESSIDの箇所に「接続ボタン」が表示される。
S606:ステーション100のユーザは、マウス等の操作部130を介して、図11に表示されたESSIDの中から接続したいESSIDをカーソルにて指定し、同図に表示されている接続ボタンのソフトキーを押下する。このユーザ操作をユーザI/F制御手段1007が受け付けると、プローブ要求生成手段1001に、プローブ要求(Probe Request)の生成処理の実行を要求する。
S608:ステーション100のプローブ要求生成手段1001は、プローブ要求を生成するために、本発明の実施の形態の接続端末識別情報を記憶部1008から取得する。プローブ要求生成手段1001は、ステップ606において接続先として選択されたESSIDと取得した接続端末識別情報が含まれたプローブ要求を生成する。また、接続端末識別情報は、上述した図5に示されるVendor Specificの領域に設定される。プローブ要求生成手段1001はプローブ要求を生成すると、プローブ要求送信・応答受付手段1002にプローブ要求のアクセスポイント200への送信を指示する。
S610:プローブ要求送信・応答受付手段1002は、無線LAN通信I/F手段1010を介してプローブ要求をアクセスポイント200に送信する。このプローブ要求には、ESSID及び接続端末識別情報が含まれている。
S612:アクセスポイント200のプローブ要求受付・応答手段2001はプローブ要求を受信すると、まずプローブ要求に含まれているESSIDが自機に設定されているESSIDと一致するかどうかを確認する。受信したESSIDが自機に設定されていない場合は、プローブ要求を破棄する。一方、受信したESSIDが自機に設定されている場合は、処理を継続する。次いで、プローブ要求受付・応答手段2001は、プローブ要求に含まれている接続端末識別情報が、自機が保持する接続端末情報であるか否かを確認する。確認の結果、受信した接続端末識別情報を自機が保持している場合は、プローブ要求受付・応答手段2001は、PINコード生成データが含まれたプローブ要求応答(Probe Response)を、プローブ要求応答生成手段2003に実行させる。一方、確認の結果、受信した接続端末識別情報を自機が保持していない場合は、プローブ要求受付・応答手段2001は、PINコード生成データを含まないプローブ要求応答を生成させる。
S614:PINコード生成データ作成手段2002は、ランダムな英数字、記号又はその組み合わせであるPINコード生成データを作成する。PINコード生成データ作成手段2002は、PINコード生成データを作成すると、PINコード生成データを記憶手段2007に記憶するとともに、プローブ要求応答生成手段2003にPINコード生成データを含むプローブ要求応答の生成を実行させる。
S616:プローブ要求応答生成手段2003は、PINコード生成データが含まれたプローブ要求応答を生成し、無線LAN通信I/F手段2008を介して、ステーション100に送信する。プローブ要求応答のステーション100のMACアドレスが設定されるユニキャスト通信である。また、PINコード生成データは、上述した図5と同様に、プローブ要求応答のVendor Specificの領域に設定される。なお、PINコード生成データが作成されない場合は、プローブ要求応答のVendor Specificの領域には値は未設定となる。
S618:ステーション100のプローブ要求送信・応答受付手段1002はプローブ要求応答を受信すると、プローブ要求応答に含まれていたPINコード生成情報を記憶手段1006に記憶し、認証/接続制御手段1004に認証要求(Authentication Request)の生成処理を要求する。認証/接続要求送信・応答受付手段1005は、生成された認証要求の宛先アドレスにアクセスポイント200のMACアドレスを設定し、無線LAN通信I/F手段1008を介して、アクセスポイント200に送信する。なお、ステップS618とS620で行われる認証手順はIEEE802.11に定義された手順に従う。
S620:アクセスポイント200の認証/接続要求受付・応答手段2005は、認証要求を受け付けると、受信した認証要求に基づき認証/接続制御手段2006により生成された認証要求応答(Authentication Response)をステーション100に応答する。認証要求応答の宛先アドレスには、ステーション100のMACアドレスが設定される。
S622:ステーション100の認証/接続要求受付・応答手段2005は、認証要求応答を受け付けると、認証/接続制御手段2006により生成された接続要求(Association Request)をアクセスポイント200に送信する。接続要求の宛先アドレスには、アクセスポイント200のMACアドレスが設定される。なお、ステップS622とS624で行われる接続手順はIEEE802.11に定義された手順に従う。
S624:アクセスポイント200の認証/接続要求受付・応答手段2005は、接続要求を受け付けると、受信した接続要求に基づき認証/接続制御手段2006により生成された接続要求応答(Association Response)をステーション100に応答する。接続要求応答の宛先アドレスには、ステーション100のMACアドレスが設定される。
S626:ステーション100の認証/接続要求受付・応答手段2005が接続要求応答を受け付け、認証接続・制御手段1004に通知すると、PINコード生成・演算手段1003にPINコードを生成させる。PINコード生成・演算手段1003は、ESSIDとステップ616において受信したPINコード生成データとをハッシュ関数の入力値として演算処理を実行し、PINコードを生成する。PINコードの生成方法は、例えば上述した図8により示された方法に基づく。
S628:アクセスポイント200はステップS624において接続要求応答をステーション100に送信すると、PINコード生成・演算手段2004にPINコードを生成させる。PINコード生成・演算手段2004は、ESSIDとステップ614において生成したPINコード生成データとをハッシュ関数の入力値として演算処理を実行し、PINコードを生成する。PINコードの生成方法は、例えば上述した図8により示された方法に基づく。
S630:ステーション100は、ステップS626の終了後、ユーザ認証処理を実行する。このユーザ認証を行う際のプロトコルは、IEEE802.1xで定義されている認証機能を備えたEAPを用いる。EAPの認証処理を開始するにあたり、認証/接続要求送信・応答受付手段1005は、認証・接続制御手段1004により生成されたEAPOL−Start(EAP over LAN-Start)を、アクセスポイント200に送信する。EAPOL−StartはEAP認証手続きの開始を意味する。以降のEAP認証シーケンスは、IEEE802.1x定義の手順に従う。
S632:アクセスポイント200は、EAPOL−Startを受信すると、認証/接続要求受付・応答手段2005はEAP−Request Identityをステーション100に送信する。
S634:ステーション100は、EAP−Response(M1: Message 1)をアクセスポイント200に送信する。
S636:アクセスポイント200は、Message1(M1)を受信すると、EAPOL−Request(M2)をステーション100に送信する。
S638:ステーション100はMessage2(M2)を受信すると、認証・接続制御手段1004は、PINコード生成・演算手段1003にPINコードを入力値としたハッシュ関数の演算処理を実行させる。認証・接続制御手段1004は、PINコード生成・演算手段1003により演算されたハッシュ関数の出力値を、Message3(M3)に格納するする。ここで本発明の実施の形態において使用するハッシュ関数は例えばMD5である。なお、ハッシュ関数は、MD5に限らず、ステーション100及びアクセスポイント200において共通なハッシュ関数を使用すればよい。
S640:ステーション100は、ハッシュ関数の出力値が格納されたEAP−Response(M3)をアクセスポイント200に送信する。
S642:アクセスポイント200は、Message3(M3)を受信すると、認証・接続制御手段2006は、PINコード生成・演算手段2004にPINコードを入力値としたハッシュ関数(例えばMD5)の演算処理を実行させる。認証・接続制御手段2006は、PINコード生成・演算手段2004により演算されたハッシュ関数の出力値を、Message4(M4)に格納するする。
S644:アクセスポイント200は、ハッシュ関数の出力値が格納されたEAP−Request(M4)をアクセスポイント200に送信する。
S646:ステーション100は、Message4(M4)を受信すると、EAP−Response(M5)を送信する。
S648:アクセスポイント200は、Message5(M5)を受信すると、EAP−Request(M6)を送信する。
S650:ステーション100は、Message6(M6)を受信すると、EAP−Response(M7)を送信する。
S652:アクセスポイント200は、Message7(M7)を受信すると、認証・接続制御手段2006は、認証に必要な情報(Credentials)をPINコードから生成した暗号鍵により暗号化し、Message8(M8)に格納する。
S654:アクセスポイント200は、Credentialsが格納されたEAP−Request(M8)を送信する。
S656:以降、ステーション100は、アクセスポイント200から送信されたCredentialsを用いて、アクセスポイント200との間で、IEEE802.11iで定義された4 way handshakeにより認証処理を行う。この認証処理が完了すると、ステーション100とアクセスポイント200との間で通信が開始される。
以上、本発明の実施の形態によれば、ステーション100とアクセスポイント200との接続確立手順において、アクセスポイント200への接続端末を識別する識別情報(接続端末識別情報)及びPINコード生成データを用いることにより、ステーション100のユーザはPINコードを手入力することなく、かつ自動的に安全にPINコードを取得することが可能となる。また、無線通信システム1の管理者やステーション100のユーザは、接続に必要な情報を管理する手間を必要としない。
また、本発明が適用される具体例を挙げると、例えば、デジタルカメラと、このデジタルカメラで撮影するプリンタ等とがWiFi Directにより接続する場合、予め製品出荷時に接続端末識別情報がROM等に記憶されていれば、接続に必要な情報を意識することなく、ユーザによるPINコードの手入力を必要としない、高いセキュリティの通信方法を実現できる。なお、接続端末識別情報は変更可能な情報であるため、例えば、無線ユーティリティツールをダウンロードやアップデート時に通信の対象とする機器に同一の接続端末識別情報を割り当てたり、ユーザ操作によって入力されたりしてもよい。
また、本発明は無線ユーティリティツールを搭載(インストール)すればステーション100及びアクセスポイント200の製造元等に限らず、一般のコンシューマは容易に本発明の機能を実行することができる。また、一般的な無線LAN通信機能を具備する機器であれば、ハードウェアの構成や種類に限定されず、本発明を実行できる。
本発明の実施の形態によれば、IEEE802.11に規定されたプローブ要求・応答のフレームフォーマットにおけるユーザ(ベンダ)が任意に設定可能な領域に、接続端末識別情報及びPINコード生成データを設定するため、本発明の技術仕様の実装が容易である。つまり本発明は、広く一般に普及しているIEEE802.11仕様の無線LANプロトコルを用いるため、例えばステーション100とアクセスポイント200との製造元が異なる場合においても、機器間の相互接続がしやすい。なお、接続端末識別情報及びPINコード生成データは、フレームを拡張や変更した領域に設定してもよいし、新規のメッセージ(信号)を追加し設定してもよい。
また、本発明の実施の形態において、PINコードを生成するための演算処理にハッシュ関数を用いるため、単にアスキーコードのみの演算をする場合に比べ、想定されるパスワードを用いた総当たり攻撃や辞書攻撃等に対する強固性を一層高くすることが可能となる。
[変形例]
本発明の実施形態ではWPSの認証方式がPINコード方式である場合の無線通信システム1の動作を説明したが、本発明の実施形態の変形例ではユーザがプッシュボタン方式を用いた場合の動作を説明する。
WPSにおけるプッシュボタン方式による認証方法の概要は次のとおりである。まずユーザによってアクセスポイント200に備わっているプッシュボタンが押される。次いでプッシュボタンが押されてから2分間のWalk Timeの間、アクセスポイント200はステーション100からのプローブ要求を受け付ける。なお、Walk Timeの2分間は任意に設定可能な値である。このWalk Timeの間にアクセスポイント200から発信されるビーコンフレームには、プッシュボタンが押されたことを示す情報が設定されている。ここで、プッシュボタンが押されたことを示す情報は、ビーコンフレームに含まれる情報要素(WSC IE)の中のSelected Registrar Attributeの領域をTrueに設定することにより示される。一方、Walk Timeの経過後又はプッシュボタンが押されていない場合、アクセスポイント200からのビーコンフレームに含まれるSelected Registrar Attributeの領域はFalseに設定される。そして、このSelected Registrar AttributeがTrueに設定されたビーコンフレームを受け付けたステーション100は、プッシュボタン方式に基づいた接続処理を実行する。このステーション100からはプローブ要求にプッシュボタン方式での接続を示す情報が設定されており、アクセスポイント200はこのプローブ要求を受け付けると、ステーション100に対してCredentialsを送信する。
図12は、本発明の実施形態の変形例におけるステーション100に搭載されているステーション用無線ユーティリティツール1000が有する機能構成の一例を示した図である。変形例ではステーション用無線ユーティリティツール1000は、本発明の実施形態の構成に加えてWPS方式判定手段1009を有する。WPS方式判定手段1009は、WPSの認証方式がPINコード方式であるか、又はプッシュボタン方式であるかを判定する。具体的には、WPS方式判定手段1009は、ステーション100のユーザによる接続実行画面(図11参照)の接続ボタンの押下を契機に、接続したいアクセスポイント200からのビーコンフレームを解析し、WSC IEの中のSelected Registrar Attributeの領域がTrueであるか、Falseであるかを判定する。Trueである場合はプッシュボタン方式に基づくプローブ要求を送信し、一方、Falseである場合は本発明の実施形態のPINコード方式に基づくプローブ要求を送信する。
図13は、本発明の実施の形態の変形例におけるステーション100におけるWPSのプッシュボタン方式又はPINコード方式の接続手順の一例を示すフローチャート図である。なお、図13の初期状態では、ステーション100においてESSIDが検出されている。
S702:ステーション100の表示部140には、上述した図11に示される接続実行画面が表示されている。この接続実行画面に基づき、ステーション100のユーザは接続したいESSIDをカーソルで指定し、接続ボタンを押下する。
S704:ステーション100のWPS方式判定手段1009は、ステップS702で指定したESSIDに対応するアクセスポイント200からのビーコンフレームを解析し、WSC IEの中のSelected Registrar Attributeの領域がTrueであるか、Falseであるかを判定する。Trueであればアクセスポイント200側でプッシュボタンが押されたことを意味し、プッシュボタン方式により接続する。Falseであればアクセスポイント200側ではプッシュボタンは押されておらず、PINコード方式により接続する。
S706:アクセスポイント200側でプッシュボタンが押されている場合、すなわちビーコンフレームに含まれるSelected Registrar Attributeの領域がTrueである場合(ステップS704においてYES)、プッシュボタン方式に基づいた接続処理を実行する。接続処理の実行にあたり、まずプローブ要求生成手段1001により生成されたプッシュボタン方式に基づくプローブ要求を送信する。
S708:ステーション100とアクセスポイント200との接続処理の完了後、ステーション100とアクセスポイント200との間で通信を開始する。
S710:アクセスポイント200側でプッシュボタンが押されていない場合、すなわちビーコンフレームに含まれるSelected Registrar Attributeの領域がFalseである場合(ステップS704においてNO)、本発明の実施形態の接続手順に従い、PINコードの自動生成を行った後、PINコード方式に基づく接続処理を実行する。接続処理の実行にあたり、まずプローブ要求生成手段1001により生成されたPINコード方式に基づくプローブ要求が送信される。その後、ステップS708に示されるようにステーション100とアクセスポイント200との間で接続が確立され、通信が開始される。
上述したように、本発明の実施形態の変形例では、アクセスポイント200側でプッシュボタンが押されたことを示す情報をステーション100側で検出したか否かによって、ステーション100からアクセスポイント200に送信するプローブ要求の方式を決定する。これにより、例えば、アクセスポイント側ではプッシュボタンが押されているにもかかわらずPINコード方式に基づくプローブ要求を送信してしまう等の不整合や非効率さを排除し、適当な接続方式でプローブ要求を送信することができる。
[その他の変形例]
なお、本発明は、PINコード等の接続確立時の認証に用いる情報を使用する無線LAN以外の無線通信技術に応用することができる。
なお、本発明は、IEEE802.11a/b/g/n規定の無線通信方式に限らず、接続する端末の正当性を確認する通信方法において適用することができる。
以上、本発明の実施の形態について詳述したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。