[1.通信システムの全体構成]
以下、本開示に係る通信システムの実施形態の例を説明する。本実施形態では、ユーザを認証する認証サービスに通信システムを適用した場合を例に挙げる。通信システムは、任意のサービスに適用可能であり、他のサービスへの適用例については、後述の変形例で説明する。
図1は、通信システムの全体構成を示す図である。図1に示すように、通信システムSは、サーバ10、ユーザ端末20、及び認証装置30を含み、これらは、インターネットなどのネットワークNに接続可能である。なお、図1では、サーバ10、ユーザ端末20、及び認証装置30の各々を1台ずつ示しているが、これらは複数台あってもよい。
サーバ10は、サーバコンピュータである。サーバ10は、制御部11、記憶部12、及び通信部13を含む。制御部11は、少なくとも1つのプロセッサを含む。制御部11は、記憶部12に記憶されたプログラムやデータに従って処理を実行する。記憶部12は、主記憶部及び補助記憶部を含む。例えば、主記憶部は、RAMなどの揮発性メモリである。また例えば、補助記憶部は、ROM、EEPROM、フラッシュメモリ、又はハードディスクなどの不揮発性メモリである。通信部13は、有線通信又は無線通信用の通信インタフェースである。通信部13は、ネットワークNを介してデータ通信を行う。
ユーザ端末20は、ユーザが操作するコンピュータである。ユーザ端末20は、送信装置の一例である。このため、本実施形態でユーザ端末20について説明している箇所は、送信装置と読み替えることができる。送信装置は、後述する送信対象データが分割された個々のデータ部分を送信する装置であればよく、送信装置の他の例については、後述の変形例で説明する。
例えば、ユーザ端末20は、携帯電話機(スマートフォンを含む)、携帯情報端末(タブレット型コンピュータ及びウェアラブル端末を含む)、又は、パーソナルコンピュータ等である。本実施形態では、ユーザ端末20は、制御部21、記憶部22、通信部23、操作部24、表示部25、及び撮影部26を含む。制御部21、記憶部22、及び通信部23の物理的構成は、それぞれ制御部11、記憶部12、及び通信部13と同様であってよい。
操作部24は、入力デバイスである。例えば、操作部24は、タッチパネルやマウス等のポインティングデバイス、キーボード、又はボタン等である。表示部25は、ディスプレイ又はモニタである。例えば、表示部25は、液晶表示部又は有機EL表示部等である。撮影部26は、少なくとも1台のカメラを含む。撮影部26は、静止画を生成してもよいし、所定のフレームレートで連続的に撮影して動画を生成してもよい。
認証装置30は、認証に使用されるコンピュータである。認証装置30は、受信装置の一例である。このため、本実施形態で認証装置30について説明している箇所は、受信装置と読み替えることができる。受信装置は、後述する送信対象データが分割された個々のデータ部分を受信する装置であればよく、受信装置の他の例については、後述の変形例で説明する。
例えば、認証装置30は、携帯電話機、携帯情報端末、又は、パーソナルコンピュータ等である。本実施形態では、認証装置30は、制御部31、記憶部32、通信部33、操作部34、表示部35、及び撮影部36を含む。制御部31、記憶部32、通信部33、操作部34、表示部35、及び撮影部36の物理的構成は、それぞれ制御部11、記憶部12、通信部13、操作部24、表示部25、及び撮影部26と同様であってよい。
なお、記憶部12,22,32に記憶されるものとして説明するプログラム及びデータは、ネットワークNを介して供給されるようにしてもよい。また、上記説明した各コンピュータのハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器とデータの入出力をするための入出力部(例えば、USBポート)が含まれていてもよい。例えば、情報記憶媒体に記憶されたプログラムやデータが読取部や入出力部を介して供給されてもよい。
[2.通信システムの概要]
本実施形態では、ユーザがセキュリティゲートを通過する場面を例に挙げて、通信システムSにおいて実行される処理を説明する。通信システムSは、他の任意の場面における認証にも適用可能であり、他の場面への適用例は、後述する変形例で説明する。
図2は、通信システムSが利用される場面の一例を示す図である。図2に示すように、セキュリティゲートSGは、回転式のドアを含む。セキュリティゲートSGには、認証装置30が接続されている。セキュリティゲートSGのドアは、ロック機構によりロックされている。ユーザの認証が成功すると、ロックが解除される。例えば、セキュリティゲートSGは、勤務先の会社や公共施設などの任意の施設に配置され、施設に入場する資格を有するユーザだけがセキュリティゲートSGを通過できる。
本実施形態では、ユーザを認証する認証方法として、ID認証と顔認証とを含む2段階認証を例に挙げる。認証方法は、本実施形態の例に限られず、他の任意の認証方法を利用可能である。例えば、指紋認証、虹彩認証、静脈認証、又は音声認証などのように、顔認証以外の他の生体認証が利用されてもよい。また例えば、2次元コード認証、パスコード認証、パスワード認証、電子スタンプ認証、又は合言葉認証などのように、ID認証及び顔認証以外の他の認証方法が利用されてもよい。また例えば、1段階だけの認証であってもよいし、3段階以上の認証であってもよい。
ID認証は、予め発行されたユーザIDを利用して行われる認証である。ユーザIDは、ユーザを識別可能な情報である。本実施形態では、ユーザIDが所定桁数の数値である場合を説明するが、ユーザIDは、ユーザによって桁数が異なってもよい。ユーザIDは、任意の形式であってよく、数値に限られない。例えば、ユーザIDは、文字列であってもよいし、数値(数字)と文字の組み合わせであってもよい。ID認証は、予め発行されたユーザIDが入力された場合に成功する。本実施形態では、サーバ10に登録された何れかのユーザIDが認証装置30に入力されると、ID認証が成功する。
顔認証は、予め登録された顔写真又は顔の特徴量を利用して行われる認証である。顔写真は、ユーザの顔が撮影された画像である。顔の特徴量は、顔写真に示された顔の特徴を示す情報である。本実施形態では、顔の特徴量が多次元のベクトルである場合を説明するが、顔の特徴量は、任意の形式であってよく、例えば、配列又は単一の数値であってもよい。本実施形態では、サーバ10に登録された顔写真又は顔の特徴量の中に、認証装置30が撮影したユーザの顔写真又は顔の特徴量と類似又は一致するものが存在する場合に、顔認証が成功する。顔認証自体は、公知の手法を利用可能であり、例えば、主成分分析、線形判別分析、弾性マッチング、又は隠れマルコフモデルといった手法を利用すればよい。特徴量は、これらの手法に応じた計算式で計算されるようにすればよい。
例えば、ユーザがユーザ端末20を操作して認証サービスの利用登録をすると、ユーザの氏名などの個人情報と、ユーザの顔写真と、がサーバ10に登録される。利用登録が完了すると、サーバ10により発行されたユーザIDが、ユーザ端末20の記憶部22に記憶される。その後、ユーザは、認証サービスを利用して、セキュリティゲートSGを通過できるようになる。
ユーザIDは、同じものが永久的に使用されてもよいが、本実施形態では、所定のタイミングで更新されるものとする。ユーザIDが更新されると、それまで使用されていた古いユーザIDは無効になる。例えば、認証サービスを利用するためのアプリケーション(以降、認証アプリ)がユーザ端末20にインストールされており、認証アプリが起動するたびに、ユーザIDが更新される。
なお、ユーザIDの更新タイミングは、認証アプリの起動時に限られず、任意のタイミングであってよい。例えば、ユーザが認証アプリ内で所定の操作を行った場合、ID認証が成功した場合、又は、ユーザIDに設定された有効期限が切れた場合に、ユーザIDが更新されてもよい。
図2に示すように、例えば、ユーザは、洋服のポケットにユーザ端末20を入れた状態で、セキュリティゲートSGに近づく。ユーザ端末20の通信部23は、無線通信機能が予めオンになっており、記憶部22に記憶されたユーザIDが通信範囲内に送信される。無線通信機能は、セキュリティゲートSGに近づいた場合に、自動的にオンになってもよいし、ユーザにより手動でオンにされてもよい。無線通信自体は、任意の通信規格を利用可能であり、例えば、Bluetooth(登録商標)又はWi-Fi(登録商標)を利用可能である。
本実施形態では、ユーザ端末20は、Bluetooth(登録商標)の一種であるBLE(Bluetooth Low Energy)のアドバタイジングパケットを利用してユーザIDを送信する。アドバタイジングパケットは、ペアリングが行われる前に送信されるパケットであり、ユーザ端末20は、数メートル~数十メートル程度の通信範囲内に含まれる不特定多数の装置に対し、アドバタイジングパケットを送信する。
図3は、アドバタイジングパケットのフォーマットの一例を示す図である。アドバタイジングパケットのフォーマットは、無線通信規格で定められており、フォーマットの詳細は、一般的に公開されている。このため、本実施形態では、フォーマットの全てを説明することはせず、ユーザIDの送信で利用される部分についてのみ説明する。
図3に示すように、アドバタイジングパケットには、実データを格納するためのデータペイロード部が含まれる。データペイロード部のサイズは可変であり、最大で37バイト(オクテット)である。実データは、データペイロード部のADデータ部に格納される。ADデータ部に格納された実データの種類は、データペイロード部のADタイプによって特定される。認証装置30は、ADタイプを参照することによって、対応するADデータ部に格納された実データの種類を特定できる。
例えば、ADタイプが第1の値であることは、ADデータ部に格納された実データがサービスUUIDであることを意味する。サービスUUIDは、サービスを識別可能な情報である。例えば、サービスUUIDによって、アドバタイジングパケットを送信したアプリケーションが識別される。認証アプリが送信したアドバタイジングパケットのサービスUUIDによって、そのアドバタイジングパケットが認証アプリによって送信されたことが識別される。
また例えば、ADタイプが第2の値であることは、ADデータ部に格納された実データがローカルネームであることを意味する。ローカルネームは、デバイスを識別可能な情報である。例えば、ローカルネームは、ユーザ端末20のデバイス名である。ユーザ端末20のオペレーティングシステムによっては、認証アプリなどのアプリケーションがバックグラウンドモードになった場合、又は、ユーザ端末20がスリープモードになってから所定時間が経過した場合に、電力の節約のために、メモリ上のローカルネームが消去されて送信できないことがある。
一方、サービスUUIDは、認証アプリなどのアプリケーションが削除されない限りは、同じ情報を送信できる。そこで、本実施形態では、サービスUUIDの一部にユーザIDを埋め込んだアドバタイジングパケットを送信することによって、ペアリングをしなくても、ユーザ端末20から認証装置30にユーザIDを送信できるようにしている。
サービスUUIDは、無線通信規格で定められたフォーマットを利用すればよい。例えば、128ビットのサービスUUIDであれば、32桁の数値と、4つのハイフンと、を含む36桁から構成される。36桁の中におけるハイフンの位置は、予め定められている。サービスUUIDは、その全てをサービスの識別のために利用する必要はないので、サービスUUIDの一部をユーザIDのために利用しても、認証装置30は、どのサービスのアドバタイジングパケットであるかを識別できる。
認証装置30は、認証アプリ以外の他のアプリケーションにより送信されたアドバタイジングパケットを受信する可能性があるので、自身に対して送信されたアドバタイジングパケットのうち、認証アプリにより送信されたアドバタイジングパケットをスキャンする。即ち、認証装置30は、認証アプリにより送信されたアドバタイジングパケットを処理対象とし、他のアプリケーションにより送信されたアドバタイジングパケットは、処理対象から除外して破棄する。
図4-図6は、認証装置30がアドバタイジングパケットをスキャンする様子を示す図である。図4及び図5には、参考用の説明が示されており、図6に、本実施形態の手法が示されている。なお、本実施形態では、ユーザIDは、「0000」~「9999」の4桁の数値であり、図4-図6では、ユーザIDが「2791」である場合を説明する。
図4のサービスUUIDは、1桁目~32桁目に、アプリ識別IDとして「68753A44-4D6F-1226-9C60-0050E4C0」が格納され、33桁目~36桁目に、ユーザIDとして「2791」が格納される。アプリ識別IDは、認証アプリを識別可能な情報である。アプリ識別IDは、ユーザ端末20の記憶部22に予め記憶されているものとする。
ユーザ端末20は、図4に示すサービスUUIDを含むアドバタイジングパケットを作成し、作成したアドバタイジングパケットを周囲に送信する。ユーザ端末20の通信範囲内に存在する認証装置30は、自身に送信されたアドバタイジングパケットのうち、サービスUUIDを含み、かつ、認証アプリのアプリ識別IDを含むアドバタイジングパケットをスキャンする。即ち、認証装置30は、ADタイプが第1の値であり、かつ、ADデータ部に格納されたサービスUUIDの1桁目~32桁目が「68753A44-4D6F-1226-9C60-0050E4C0」であるアドバタイジングパケットをスキャンする。他のアドバタイジングパケットについては、スキャンされずに破棄される。
図4の例では、サービスUUIDの33桁目~36桁目が任意の数値になるので、スキャン対象は、33桁目~36桁目が「0000」~「9999」の1万通りになる。認証装置30は、膨大な数のアドバタイジングパケットをスキャン対象にする必要があるので、認証装置30の性能によっては、全通りのアドバタイジングパケットをスキャンできないことがある。例えば、認証装置30に1万通りをスキャンさせようとしても、実際には、数百~数千通りしかスキャンできないことがあり、認証装置30は、ユーザIDを受信できず、認証処理を実行できないことがある。
また、ユーザ端末20がデジタルデータとして作成したアドバタイジングパケットをアナログの電気信号に変換する際に、ノイズが発生することがある。ノイズは、他の要因によって発生することもある。例えば、空気中における外的要因によってノイズが発生することもあるし、認証装置30が受信したアナログの電気信号をデジタルデータに変換する際にノイズが発生することもある。このため、ユーザ端末20が同じサービスUUIDを含むアドバタイジングパケットを繰り返し送信したとしても、ノイズの影響でユーザIDが書き換わることもある。
図4の例であれば、認証装置30がユーザ端末20から受信した4個のアドバタイジングパケットのうちの3個にノイズが発生している。これら4個のアドバタイジングパケットは、同じユーザIDが格納されているはずにもかかわらず、ノイズの影響によって、例えば33桁目~36桁目の少なくとも1つの値が書き換わることがある。この場合、認証装置30は、どれが正しいユーザIDなのかを判別することはできない。
認証装置30が受信した4通りのアドバタイジングパケットの全てについて、正しいユーザIDをみなし、総当り的に認証処理を実行することも考えられるが、この場合、認証処理を何度も実行する必要があるので、サーバ10及び認証装置30の処理負荷が増大する。更に、セキュリティゲートSGの前にいるユーザが、顔が似た他のユーザとして誤認証される可能性もある。図4の例であれば、ユーザIDが「2791」であるユーザと、ユーザIDが「1791」、「2795」、「8791」のユーザと、の顔が似ていた場合には、誤認証の可能性がある。
この点、図5に示すように、ユーザID「2791」を個々の桁に分割し、4つのサービスUUIDの各々に、個々の桁を重複して2個格納することによって、ノイズの影響を低減させることも考えられる。図5の例では、サービスUUIDの1桁目~32桁目は、図4と同様であり、アプリ識別IDである。サービスUUIDの33桁目と34桁目には、サービスUUIDを36桁にするために、パディングとして「00」が格納される。サービスUUIDの35桁目と36桁目には、ユーザIDの個々の桁の数値が重複して格納される。
例えば、1個目のサービスUUIDの35桁目と36桁目は、ユーザIDの1桁目である「2」が重複して2個入れられて「22」になる。また例えば、2個目のサービスUUIDの35桁目と36桁目は、ユーザIDの2桁目である「7」が重複して2個入れられて「77」になる。また例えば、3個目のサービスUUIDの35桁目と36桁目は、ユーザIDの2桁目である「9」が重複して2個入れられて「99」になる。また例えば、4個目のサービスUUIDの35桁目と36桁目は、ユーザIDの4桁目である「1」が重複して2個入れられて「11」になる。
図5の場合、認証装置30は、35桁目と36桁目が一致しているアドバタイジングパケットをスキャンすればよいので、スキャン対象は、35桁目と36桁目が「00」~「99」で一致している10通りになる。図4の場合に比べるとスキャン対象が大幅に減るので、認証装置30の処理負荷を軽減し、全通りを確実にスキャンできる。このため、ユーザIDがスキャン対象から漏れてしまい、認証処理を実行できないといったことを防止できる。
更に、35桁目と36桁目が一致しなければスキャンされないので、ノイズの影響もある程度は排除することができる。例えば、35桁目と36桁目がユーザIDの1桁目を示す「22」である場合、ノイズの影響を受けて「24」になったとしても、35桁目と36桁目が一致せずスキャンされないので、ノイズの影響を受けたアドバタイジングパケットを除外して破棄することができる。ただし、図5に示すように、35桁目と36桁目の両方がノイズの影響を受けて、「22」が「55」に書き換わったとすると、このようなノイズの影響を受けたアドバタイジングパケットについては除外できない。
また、図5の場合、4桁のユーザIDを4つのアドバタイジングパケットに分けて送信するので、認証装置30は、個々の桁の順序を特定できない可能性がある。例えば、1個目のサービスUUIDから4個目のサービスUUIDまでを順番に送信したとしても、認証装置30が必ずしも送信順の通りに受信するとは限らないので、受信順に桁を並べても正確なユーザIDにならないことがある。更に、認証装置30のオペレーティングシステムによっては、受信したサービスUUIDを昇順にソートすることがある。この場合、「2791」のユーザIDの個々の数値が昇順にソートされて「1279」になってしまい、正確なユーザIDにならないことがある。
そこで、本実施形態では、図6に示すように、サービスUUIDに順序情報を含めるようにしている。順序情報は、ユーザIDにおける個々の桁の順序に関する情報である。本実施形態では、4桁のユーザIDが個々の桁に分割されるので、順序情報は、ユーザIDの何桁目であるかを示す情報である。図6の例では、「A」、「B」、「C」、「D」は、それぞれ1桁目、2桁目、3桁目、4桁目であることを示す。順序情報は、他の任意の形式で表現可能であり、例えば、「1」~「4」の数値で表現されてもよい。また例えば、「A」が4桁目を示し、「B」が1桁目を示すといったように、文字順と桁順が一致していなくてもよい。
図6の例では、サービスUUIDの1桁目~14桁目の「68753A44-4D6F-」と19桁目~32桁目の「-9C60-0050E4C0」は、アプリ識別IDである。図6のアプリ識別IDは、図4及び図5のアプリ識別IDよりも桁数が少ないが、アプリケーションを識別するには十分な桁数を有しているので、認証装置30は、認証アプリのアドバタイジングパケットであることを識別できる。
なお、アプリ識別IDは、任意の桁数であってよいが、桁数が少なすぎると他のアプリケーションと重複して区別できない可能性があるので、一定程度の桁数(例えば、10桁以上)を有するものとする。サービスUUIDは、桁数の上限(例えば、36桁)が定められているため、アプリ識別IDとして一定程度の桁数を確保できるように、ユーザIDの桁の個数や順序情報の個数が定められている。逆に、ユーザIDの桁の個数や順序情報の個数が少なすぎると、ノイズの影響低減の効果が薄れるので、これらの個数も一定程度確保するようにしている。
図6に示すように、サービスUUIDの15桁目~18桁目には、順序情報が重複して4個格納され、サービスUUIDの33桁目~36桁目には、ユーザIDの個々の桁の数値が重複して4個格納される。
例えば、1個目のサービスUUIDの15桁目~18桁目は、1桁目であることを示す「A」が重複して4個入れられて「AAAA」になり、33桁目~36桁目は、ユーザIDの1桁目である「2」が重複して4個入れられて「2222」になる。また例えば、2個目のサービスUUIDの15桁目~18桁目は、2桁目であることを示す「B」が重複して4個入れられて「BBBB」になり、33桁目~36桁目は、ユーザIDの2桁目である「7」が重複して4個入れられて「7777」になる。
また例えば、3個目のサービスUUIDの15桁目~18桁目は、3桁目であることを示す「C」が重複して4個入れられて「CCCC」になり、33桁目~36桁目は、ユーザIDの3桁目である「9」が重複して4個入れられて「9999」になる。また例えば、4個目のサービスUUIDの15桁目~18桁目は、4桁目であることを示す「D」が重複して4個入れられて「DDDD」になり、33桁目~36桁目は、ユーザIDの4桁目である「1」が重複して4個入れられて「1111」になる。
図6の場合、スキャン対象は、15桁目~18桁目が「AAAA」~「DDDD」の4通りに、33桁目~36桁目が「0000」~「9999」の10通りを乗じた40通りになる。図5の場合に比べるとスキャン対象が多少増えるが、図4の場合に比べるとスキャン対象が大幅に少ないので、認証装置30は、全通りを確実にスキャンできる。また、認証装置30は、順序情報によって、個々の桁の順序を特定してユーザIDを正確に取得することができる。更に、図5の場合に比べると、順序情報とユーザIDの個々の桁と、がそれぞれ4個ずつ重複しており重複数が多いので、ノイズ低減の効果も大きくなる。
認証装置30は、ユーザIDを取得すると、撮影部36でユーザの顔を撮影して顔写真を取得する。認証装置30は、サーバ10に対し、ユーザIDと、顔写真と、を送信する。サーバ10は、ユーザIDと顔写真に基づいてID認証と顔認証を行い、認証装置30に対し、認証の成否を示す認証結果を送信する。認証装置30は、認証が成功した場合には、セキュリティゲートSGのロックを解除し、ユーザに対して通行を促すメッセージを表示部35に表示させる。認証装置30は、認証が失敗した場合には、セキュリティゲートSGのロックを解除せず、所定のエラーメッセージを表示部35に表示させる。
以上のように、本実施形態では、アドバタイジングパケットを利用することによって、ユーザ端末20と認証装置30との間でペアリングをしなくても、認証処理を実行できるようになっている。更に、個々のアドバタイジングパケットが、順序情報を重複して複数個含み、かつ、ユーザIDの個々の桁を重複して複数個含むことによって、ノイズの影響に対応し、認証装置30にユーザIDを正確に取得させるようになっている。以降、通信システムSの詳細を説明する。
[3.通信システムにおいて実現される機能]
図7は、通信システムSにおいて実現される機能の一例を示す機能ブロック図である。ここでは、サーバ10、ユーザ端末20、及び認証装置30の各々で実現される機能を説明する。
[3-1.サーバにおいて実現される機能]
図7に示すように、サーバ10では、データ記憶部100、発行部101、及び実行部102が実現される。データ記憶部100は、記憶部12を主として実現される。発行部101と実行部102との各々は、制御部11を主として実現される。
[データ記憶部]
データ記憶部100は、認証サービスの提供に必要なデータを記憶する。本実施形態では、データ記憶部100が記憶するデータの一例として、ユーザデータベースDBについて説明する。
図8は、ユーザデータベースDBのデータ格納例を示す図である。図8に示すように、ユーザデータベースDBは、利用登録が完了した複数のユーザの各々に関する各種情報が格納されたデータベースある。例えば、ユーザデータベースDBには、ユーザアカウント、ユーザの氏名、パスワード、ユーザID、アップロードされた顔写真のデータ、及び顔写真から計算された顔の特徴量が格納される。
ユーザアカウントは、ユーザを識別可能な情報である。ユーザアカウントは、ユーザIDと似た概念であるが、本実施形態では、認証アプリが起動するたびにユーザIDが更新されるのに対し、ユーザアカウントは、原則として更新されずに永久的に使用される。また、本実施形態のユーザIDは、顔が似ていないユーザ同士であれば重複が許可されるのに対し、ユーザアカウントは、原則として、顔が似ているか否かに関係なく、ユーザ同士で重複しない。ユーザのメールアドレスがユーザアカウントとして利用されてもよい。
サーバ10は、ユーザによる利用登録を受け付けると、ユーザデータベースDBに新たなレコードを作成し、利用登録をしたユーザに関する各種情報を格納する。例えば、サーバ10は、ユーザがアップロードした顔写真の特徴量を計算し、ユーザデータベースDBに格納する。ユーザIDは、後述する発行部101により初期値が発行され、本実施形態では、認証アプリが起動するたびに新たなユーザIDに更新される。顔写真等の他の情報についても、事後的に変更可能であってもよい。
なお、データ記憶部100が記憶するデータは、ユーザデータベースDBに限られず、データ記憶部100は、任意のデータを記憶可能である。例えば、複数の認証装置30が通信システムSに含まれる場合には、データ記憶部100は、複数の認証装置30の各々に関する各種情報が格納されたデータベースを記憶してもよい。
[発行部]
発行部101は、ID発行ルールに基づいて、複数のユーザの各々のユーザIDを発行する。ID発行ルールは、予め定められたルールであればよく、例えば、ランダムにユーザIDを発行するルールであってもよいし、空いている番号のうちの最も若い番号をユーザIDとして発行するルールであってもよい。本実施形態では、ID発行ルールが、顔が類似する他のユーザのユーザIDと重複しないように、ランダムなユーザIDを発行するルールである場合を例に挙げて説明する。
例えば、発行部101は、あるユーザ(以降、発行対象のユーザ)のユーザIDを発行する場合に、ユーザIDの候補として、ランダムに4桁の数値を生成する。発行部101は、ユーザデータベースDBを参照し、発行対象のユーザの顔と、生成した候補と同じユーザIDが関連付けられたユーザの顔と、が類似するか否かを判定する。顔の類否判定自体は、顔認証で利用される種々の手法を利用可能であり、本実施形態では、顔の特徴量がベクトル形式で表現されるので、ベクトル空間における2つの顔の特徴量の距離に基づいて類否判定が行われる。距離が閾値未満であることは、顔が類似すること意味する。距離が閾値以上であることは、顔が類似しないことを意味する。
発行部101は、上記判定において類似しないと判定した場合、現在の候補を、発行対象のユーザのユーザIDとして決定する。発行部101は、上記判定において類似すると判定した場合、他の4桁の数値をランダムに生成し、新たな候補として取得する。以降、発行部101は、上記判定において類似しないと判定される候補が見つかるまで、新たな候補を生成する。
発行部101は、発行対象のユーザのユーザIDとして、上記決定したユーザIDをユーザデータベースDBに格納する。発行部101は、ユーザ端末20に対し、上記決定したユーザIDを送信する。ユーザ端末20は、ユーザIDを受信すると、新たなユーザIDとして後述するデータ記憶部200に記録し、古いユーザIDを消去する。本実施形態では、発行部101は、ユーザが利用登録をした場合、又は、認証アプリが起動した場合に、ユーザIDを発行するものとするが、先述したように、ユーザIDの発行タイミングは、本実施形態の例に限られない。
[実行部]
実行部102は、認証装置30の要求に基づいて、所定の処理を実行する。所定の処理は、通信システムSを適用するサービスに応じた内容の処理であればよい。本実施形態では、認証サービスへの適用例を説明しているので、所定の処理の一例として、認証処理を説明する。実行部102は、後述するユーザID取得部303が取得したユーザIDを認証装置30から受信し、ユーザIDに基づいて、認証処理を実行する。
本実施形態では、ID認証と顔認証の2段階認証が利用されるので、実行部102は、認証装置30から受信したユーザIDがユーザデータベースDBに存在するか否かを判定することによって、ID認証を実行する。ユーザIDがユーザデータベースDBに存在する場合、ID認証は成功となる。ユーザIDがユーザデータベースDBに存在しない場合、ID認証は失敗となる。
実行部102は、ID認証が成功した場合に、認証装置30から受信した顔写真に基づいて、処理対象となるユーザの顔の特徴量を計算する。実行部102は、計算した顔の特徴量と、ユーザデータベースDBに格納された正解となる顔の特徴量(認証装置30から受信したユーザIDに関連付けられた顔の特徴量)と、に基づいて、顔認証を実行する。これらの距離が閾値未満である場合、顔認証は成功となる。これらの距離が閾値以上である場合、顔認証は失敗となる。実行部102は、認証装置30に対し、ID認証と顔認証の認証結果を送信する。
なお、本実施形態では、1つのユーザデータベースDBに、ユーザIDと顔の特徴量が格納される場合を説明するが、ユーザIDごとに、顔の特徴量を格納するデータベースを分けてもよい。この場合、データ記憶部100は、複数のデータベースを記憶し、ユーザIDは、データベースを検索するクエリとして使用される。実行部102は、認証装置30から受信したユーザIDが関連付けられたデータベースを参照し、認証装置30から受信した顔写真に基づいて計算した顔の特徴量と類似する顔の特徴量が存在するか否かを判定すればよい。この場合、ID認証が実行されるわけではないので、認証処理は、1段階の顔認証のみとなる。
[3-2.ユーザ端末において実現される機能]
図7に示すように、ユーザ端末20では、データ記憶部200、分割部201、作成部202、及び送信部203が実現される。データ記憶部200は、記憶部22を主として実現される。分割部201、作成部202、及び送信部203の各々は、制御部21を主として実現される。本実施形態では、ユーザ端末20には、認証アプリがインストールされており、分割部201、作成部202、及び送信部203の各々の処理は、アプリケーションの処理として実行される。
[データ記憶部]
データ記憶部200は、ユーザが認証サービスを利用するために必要なデータを記憶する。例えば、データ記憶部200は、ユーザの顔写真のデータ、発行部101により発行されたユーザID、認証アプリ、及び認証アプリのアプリ識別IDを記憶する。ユーザIDとアプリ識別IDは、認証アプリの一部としてデータ記憶部200に記憶されていてもよい。
[分割部]
分割部201は、送信対象データを複数のデータ部分に分割する。この分割ルールは、認証アプリに定義されているものとする。本実施形態では、分割部201は、ユーザIDを、個々の桁に分割する。ユーザIDは、送信対象データの一例であり、個々の桁は、データ部分の一例である。このため、本実施形態でユーザIDについて説明している箇所は、送信対象データと読み替えることができ、個々の桁について説明している箇所は、データ部分と読み替えることができる。
送信対象データは、ユーザ端末20から認証装置30に対して送信されるデータである。別の言い方をすれば、送信対象データは、分割前のデータであり、データ部分の分割元となるデータである。送信対象データは、任意のデータであってよく、通信システムSが適用されるサービスに応じたデータであればよい。本実施形態では、送信対象データの一例であるユーザIDがデータ記憶部200に記憶されている場合を説明するが、送信対象データは、ユーザ端末20以外のコンピュータ、又は、ユーザ端末20に接続された情報記憶媒体に記憶されていてもよい。また、ユーザID以外の認証情報が送信対象データに相当してもよい。例えば、パスワード、パスコード、電話番号、メールアドレス、又はユーザ端末20の個体識別情報などの認証情報が送信対象データに相当してもよい。
データ部分は、送信対象データの一部である。個々のデータ部分は、少なくとも1つの数値又は文字によって示される。数値を表現するための「0」~「9」の数字は、文字の一種である。データ部分の個数は、予め定められていてもよいし、動的に変化してもよい。データ部分の個数を可変にする場合には、何個のデータ部分に分けられているかを認証装置30に認識させる必要があるので、この場合は、データ部分の個数を示す情報が、アドバタイジングパケット等を利用して送信されるものとする。後述する特定部302は、この情報を参照してデータ部分の個数を特定する。
また、個々のデータ部分の情報量(例えば、桁数)は、互いに同じであってもよいし、異なっていてもよい。例えば、本実施形態のように全てのデータ部分が1桁の数値になるのではなく、あるデータ部分は、2桁の数値であり、他のデータ部分は1桁の数値といったように、データ部分に応じて桁数が異なってもよい。即ち、ユーザIDの桁数と、データ部分の数と、は一致しなくてもよい。個々のデータ部分の情報量を異ならせる場合には、あるアドバタイジングパケットに含まれるデータ部分の情報量を認証装置30に認識させる必要があるので、この場合は、データ部分の情報量を示す情報が、アドバタイジングパケット等を利用して送信されるものとする。
なお、本実施形態では、全てのユーザのユーザIDが4桁である場合を説明するが、ユーザIDは、ユーザによって桁数が異なっていてもよい。例えば、本実施形態では、「67」という数値であったとしても、4桁にするために、「00」を付加して「0067」をユーザIDとしているが、「67」という2桁の数値がユーザIDとして利用されてもよい。この場合、ユーザIDを送信するために必要なアドバタイジングパケットは2つで済む。ただし、ユーザIDが何桁であるかを認証装置30に認識させる必要があるので、この場合は、ユーザIDが何桁の数値であるかを示す情報が、アドバタイジングパケット等を利用して送信されるものとする。
[作成部]
作成部202は、ユーザ端末20から認証装置30に対して送信される複数のパケットの各々を作成する。本実施形態では、複数のパケットの各々が、所定の無線通信規格におけるアドバタイジングパケットである場合を説明するが、アドバタイジングパケット以外のパケットを利用して通信が行われてもよい。このため、本実施形態でアドバタイジングパケットについて説明している箇所は、任意の通信規格のパケットと読み替えることができる。
例えば、本実施形態では、ペアリングを必要としない場合を説明するが、ペアリングをしたうえでユーザIDが送信されてもよく、この場合には、作成部202は、アドバタイジングパケットではない通常のパケットを作成する。また例えば、ユーザ端末20と認証装置30との間で、Wi-Fi(登録商標)などの他の無線通信規格が利用される場合には、作成部202は、その規格で送信可能なパケットを作成すればよい。また例えば、ユーザ端末20と認証装置30とは有線通信をしてもよく、この場合には、作成部202は、有線通信規格で送信可能なパケットを作成すればよい。
作成部202は、複数のアドバタイジングパケットの各々に、ユーザIDの少なくとも1つの桁が重複して複数個含まれ、かつ、ユーザIDにおける当該桁の順序に関する順序情報が含まれるように、複数のアドバタイジングパケットの各々を作成する。本実施形態では、1つのアドバタイジングパケットにつきユーザIDの1つの桁が含まれており、作成されるアドバタイジングパケットの数とユーザIDの桁数とが一致する場合を説明するが、これらは一致していなくてもよい。また、1つのアドバタイジングパケットに重複して含まれる桁の数は、4個に限られず、2個、3個、又は5個以上であってもよい。また、アドバタイジングパケットごとに、重複して含まれる桁の数が異なってもよい。
例えば、ユーザID「2791」について、1個目のアドバタイジングパケットに「27」が重複して複数個含まれて、2個目のアドバタイジングパケットに「91」が重複して複数個含まれるといったように、1つのアドバタイジングパケットにユーザIDの複数の桁が含まれていてもよい。この場合、1個目のアドバタイジングパケットの33桁目~36桁目は、「2727」のようになり、2個目のアドバタイジングパケットの33桁目~36桁目は、「9191」のようになる。これらのアドバタイジングパケットの15桁目~18桁には、「ABAB」や「CDCD」のような順序情報が格納されるようにすればよい。あるいは、1個目のアドバタイジングパケットの33桁目~36桁目は、「2277」のようになり、2個目のアドバタイジングパケットの33桁目~36桁目は、「9911」のようになる。これらのアドバタイジングパケットの15桁目~18桁には、「AABB」や「CCDD」のような順序情報が格納されるようにすればよい。
また例えば、あるアドバタイジングパケットに含まれる桁数と、他のアドバタイジングパケットに含まれる桁数と、は異なってもよい。例えば、1個目のアドバタイジングパケットにユーザIDの1桁目だけが重複して複数個含まれており、2個目のアドバタイジングパケットにユーザIDの2桁目~4桁目が重複して複数個含まれているようにしてもよい。このように、個々のアドバタイジングパケットには、ユーザIDの少なくとも1つの桁が重複して複数個含まれているようにすればよい。
個々のアドバタイジングパケットには、順序情報が1個だけ含まれていてもよいが、本実施形態では、作成部202は、複数のアドバタイジングパケットの各々に、順序情報が重複して複数個含まれるように、複数のアドバタイジングパケットの各々を作成する。1つのアドバタイジングパケットに重複して含まれる順序情報の数は、4個に限られず、2個、3個、又は5個以上であってもよい。また、アドバタイジングパケットごとに、重複して含まれる順序情報の数が異なってもよい。また、1つのアドバタイジングパケットに含まれる順序情報の数と、ユーザIDの桁の数と、は異なっていてもよい。例えば、1つのアドバタイジングパケットに、順序情報が2個だけ含まれており、ユーザIDの個々の桁が4個含まれていてもよい。
本実施形態では、作成部202は、複数のアドバタイジングパケットの各々に、順序情報が重複して複数個連続して含まれるように、複数のアドバタイジングパケットの各々を作成する。ここでの連続してとは、アドバタイジングパケット内のデータ領域が連続していることである。例えば、15桁目~18桁目に順序情報が連続して格納され、4個の順序情報の各々は、アドバタイジングパケット内の連続したデータ領域に格納される。順序情報の間には、アプリ識別IDなどの他の情報は存在しない。なお、1つのアドバタイジングパケットに格納される4個の順序情報は、10桁目、14桁目、16桁目、20桁目といったように、連続せずにばらばらに格納されていてもよい。
本実施形態では、作成部202は、複数のアドバタイジングパケットの各々において、重複した複数個の少なくとも1つの桁と、順序情報と、が所定距離以上離れるように、複数のアドバタイジングパケットの各々を作成する。ここでの距離とは、アドバタイジングパケット内のデータ領域における距離である。距離は、桁数又は文字数ということもできる。ユーザIDと順序情報との間には、アプリ識別IDの一部が存在する。図6の例であれば、15桁目~18桁目にある4個の順序情報と、33桁目~36桁目にある4個の桁と、の間には、19桁目~32桁目のアプリ識別IDの一部が存在する。このため、順序情報と桁は、14桁分の距離が離れている。なお、順序情報とユーザIDの個々の桁とは、連続して格納されていてもよい。
本実施形態では、作成部202は、複数のアドバタイジングパケットの各々に、少なくとも1つのデータ部分が重複して複数個連続して含まれるように、複数のアドバタイジングパケットの各々を作成する。連続の意味は、先述した通りである。例えば、33桁目~36桁目にユーザIDの個々の桁が連続して格納され、4個の桁の各々は、アドバタイジングパケット内の連続したデータ領域に格納される。個々の桁の間には、アプリ識別IDなどの他の情報は存在しない。なお、1つのアドバタイジングパケットに格納される4個の桁は、25桁目、30桁目、32桁目、36桁目といったように、連続せずにばらばらに格納されていてもよい。
本実施形態では、作成部202は、複数のアドバタイジングパケットの各々に、無線通信規格におけるサービスUUIDの一部として、ユーザIDの少なくとも1つの桁を重複して複数個含み、かつ、順序情報を含むように、複数のアドバタイジングパケットの各々を作成する。サービスUUIDにおけるユーザIDの個々の桁の位置、順序情報の位置、及びアプリ識別IDの位置は、予め定められているものとする。本実施形態では、1個のアドバタイジングパケットに1つのサービスUUIDが格納される場合を説明するが、無線通信規格の改訂等により、1個のアドバタイジングパケットに複数のサービスUUIDが格納されてもよい。
なお、サービスUUIDは、本実施形態で説明した128ビットのタイプのものに限られず、他のタイプのものが利用されてもよい。また、サービスUUIDではなく、キャラスタリスティックUUIDなどの他のUUIDが利用されてもよい。また、UUID以外のデータが利用されてもよく、特定のオペレーティングシステムの仕様を考慮しないのであれば、ローカルネームにユーザIDの個々の桁が格納されてもよい。他にも例えば、UUID及びローカルネーム以外の他のデータが利用されてもよい。
[送信部]
送信部203は、認証装置30に対し、複数のパケットの各々を送信する。本実施形態では、送信部203は、無線通信規格を利用して、複数のアドバタイジングパケットの各々を送信する。個々のアドバタイジングパケットは、1回だけ送信されてもよいが、本実施形態では、送信部203は、複数のアドバタイジングパケットの各々を、複数回繰り返し送信するものとする。また、送信部203は、個々のアドバタイジングパケットを別々に送信してもよいし、複数のアドバタイジングパケットを一度に送信してもよい。
送信部203は、作成部202が作成したデジタルデータとしてのアドバタイジングパケットをアナログの電気信号に変換し、アナログの電気信号に変換されたアドバタイジングパケットを、認証装置30に対して送信する。電気信号の変換手順については、無線通信規格に沿った手順で実行されるようにすればよい。他の通信規格が利用される場合には、送信部203は、利用する通信規格に沿った手順でパケットを送信すればよい。
[3-3.認証装置において実現される機能]
図7に示すように、認証装置30では、データ記憶部300、受信部301、特定部302、ユーザID取得部303、生体情報取得部304、及び実行部305が実現される。データ記憶部300は、記憶部32を主として実現される。受信部301、特定部302、ユーザID取得部303、生体情報取得部304、及び実行部305の各々は、制御部31を主として実現される。
[データ記憶部]
データ記憶部300は、認証サービスの提供に必要なデータを記憶する。本実施形態では、全てのアドバタイジングパケットがスキャンされるのではなく、一部のアドバタイジングパケットがスキャンされるので、データ記憶部300は、スキャン対象のアドバタイジングパケットが定義されたスキャン設定データDTを記憶する。なお、本実施形態のスキャンとは、アドバタイジングパケットを有効にすることであり、ユーザIDを取得する処理の対象にすることを意味する。
図9は、スキャン設定データDTのデータ格納例を示す図である。図9に示すように、スキャン設定データDTには、スキャン対象となるアドバタイジングパケットを識別可能な情報が含まれている。本実施形態では、下記の4つの条件がスキャン設定データDTに定義されている。
(条件1)サービスUUIDが含まれていること。
(条件2)サービスUUIDの1桁目~14桁目及び19桁目~32桁目にアプリ識別IDが含まれていること。
(条件3)15桁目~18桁目が互いに同じであり、かつ、個々の桁が「A」~「D」の何れかであること。
(条件4)33桁目~36桁目が互いに同じであり、かつ、個々の桁が「0」~「9」の何れかであること。
なお、図9のデータ格納例では、スキャン設定データDTをテーブル形式のデータとして示したが、スキャン設定データDTは、任意の形式のデータであってよい。例えば、スキャン設定データDTは、CSV形式、テキスト形式、又は数式形式であってもよいし、プログラムコードの一部として定義されていてもよい。また、データ記憶部300に記憶されるデータは、スキャン設定データDTに限られず、データ記憶部300は、任意のデータを記憶可能である。
[受信部]
受信部301は、ユーザ端末20から、複数のパケットの各々を受信する。本実施形態では、受信部301は、無線通信規格を利用して、複数のアドバタイジングパケットの各々を受信する。個々のアドバタイジングパケットは、繰り返し送信されることがあるので、受信部301は、複数のアドバタイジングパケットの各々を、複数回繰り返し受信することがある。受信部301は、ひとまず全てのアドバタイジングパケットを受信し、スキャン設定データDTに基づいて、その中から処理対象となるアドバタイジングパケットが、後述するユーザID取得部303によってスキャンされる。受信部301は、複数のアドバタイジングパケットを別々に受信してもよいし、複数のアドバタイジングパケットを一度に受信してもよい。
[特定部]
特定部302は、データ部分の個数を特定する。本実施形態では、送信対象データは、所定の桁数の数値であり、複数のデータ部分の各々は、数値(ユーザIDが示す4桁の数値)に含まれる個々の桁であり、順序情報は、この数値において何桁目であるかを示す値なので、特定部302は、桁数(ユーザIDにおける桁数)を、個数として特定する。本実施形態では、4桁のユーザIDが4つの数値に分割されるので、特定部302は、データ部分の個数として、4個を特定する。例えば、データ部分の個数は、データ記憶部300に記憶されているものとする。この個数は、プログラムコードの一部として定義されていてもよいし、プログラムコードとは別の設定値として定義されていてもよい。
[ユーザID取得部]
ユーザID取得部303は、複数のアドバタイジングパケットの各々に含まれる、重複した複数個の少なくとも1つの桁と、当該桁の順序に関する順序情報と、に基づいて、複数の桁を結合してユーザIDを取得する。本実施形態では、ユーザID取得部303は、複数のアドバタイジングパケットの各々にサービスUUIDの一部として含まれる、重複した複数個の少なくとも1つの桁と、順序情報と、に基づいて、ユーザIDを取得する。ユーザID取得部303は、複数のアドバタイジングパケットの各々に含まれる順序情報に基づいて、複数の桁の各々の順序を特定する。ユーザID取得部303は、複数の桁の各々を、特定した順序通りに結合してユーザIDを取得する。
本実施形態では、複数のアドバタイジングパケットの各々は、サービスUUIDの33桁目~36桁目に、少なくとも1つの桁を重複して複数個含み、サービスUUIDの15桁目~18桁目に、順序情報を含む。サービスUUIDの33桁目~36桁目は、第1のデータ領域の一例であり、サービスUUIDの15桁目~18桁目は、第2のデータ領域の一例である。このため、本実施形態でサービスUUIDの33桁目~36桁目について説明している箇所は、第1のデータ領域と読み替えることができ、サービスUUIDの15桁目~18桁目について説明している箇所は、第2のデータ領域と読み替えることができる。
第1のデータ領域は、ユーザIDの個々の桁を格納するために予め定められた領域である。データ領域とは、アドバタイジングパケットの一部である。例えば、アドバタイジングパケットのADデータ部の先頭から数えて第1のビット目から第2のビット目までの領域が第1のデータ領域である。本実施形態では、第1のデータ領域のサイズ(上記第1のビット目から第2のビット目までのサイズ)が4桁分である場合を説明するが、第1のデータ領域のサイズは、任意のサイズであってよい。第1のデータ領域は、連続した領域でなくてもよく、サービスUUIDの25桁目、28桁目、30桁目、及び34桁目といった飛び地のような領域であってもよい。
第2のデータ領域は、順序情報を格納するために予め定められた領域である。例えば、アドバタイジングパケットのADデータ部の先頭から数えて第3のビット目から第4のビット目までの領域が第2のデータ領域である。本実施形態では、第2のデータ領域のサイズ(上記第3のビット目から第4のビット目までのサイズ)が4桁分である場合を説明するが、第2のデータ領域のサイズは、第1のデータ領域と同様、任意のサイズであってよい。第2のデータ領域は、第1のデータ領域と同様、連続した領域でなくてもよい。第1のデータ領域のサイズと、第2のデータ領域のサイズと、は異なっていてもよい。
本実施形態では、ユーザID取得部303は、サービスUUIDの33桁目~36桁目に含まれる値が互いに同じであるアドバタイジングパケットをスキャンし、当該スキャンされたアドバタイジングパケットに基づいて、ユーザIDを取得する。ユーザID取得部303は、スキャン設定データDTに定められた条件1及び条件4に基づいて、サービスUUIDの33桁目~36桁目の全てが同じであり、かつ、「0」~「9」の何れかであるか否かを判定する。ユーザID取得部303は、この判定が肯定にならないアドバタイジングパケットはスキャンせずに破棄し、この判定が肯定になったアドバタイジングパケットをスキャンして処理対象とする。
なお、個々のアドバタイジングパケットには、順序情報が1個だけ含まれていてもよいが、本実施形態では、ユーザID取得部303は、複数のアドバタイジングパケットの各々に含まれる、重複した複数個の少なくとも1つの桁と、重複した複数個の順序情報と、に基づいて、ユーザIDを取得する。
例えば、ユーザID取得部303は、サービスUUIDの15桁目~18桁目に含まれる値が互いに同じであるアドバタイジングパケットをスキャンし、当該スキャンしたアドバタイジングパケットに基づいて、送信対象データを取得する。ユーザID取得部303は、スキャン設定データDTに定められた条件1及び条件3に基づいて、サービスUUIDの15桁目~18桁目の全てが同じであり、かつ、「A」~「D」の何れかであるか否かを判定する。ユーザID取得部303は、この判定が肯定にならないアドバタイジングパケットはスキャンせずに破棄し、この判定が肯定になったアドバタイジングパケットをスキャンして処理対象とする。
なお、個々のアドバタイジングパケットに含まれるユーザIDの桁と順序情報は、上記のようなスキャン以外の目的で利用されてもよい。例えば、ユーザID取得部303は、あるアドバタイジングパケットに含まれる個々の桁が互いに違っていたり、個々の順序情報が互いに違っていたりした場合に、ひとまず全通りのユーザIDを取得してもよい。アドバタイジングパケットに順序情報が1個だけ含まれる場合も同様に、ユーザID取得部303は、あるアドバタイジングパケットに含まれる個々の桁が互いに違っていた場合に、ひとまず全通りのユーザIDを取得してもよい。サーバ10及び認証装置30の処理負荷が多少は増加し、誤認証の可能性が多少は増加するが、全通りのユーザIDについて認証処理が実行されてもよい。
本実施形態では、ユーザID取得部303は、所定の個数(特定部302により特定された個数)に達するまで、複数のアドバタイジングパケットの各々からユーザIDの少なくとも1つの桁と順序情報を取得し、所定の個数に達した場合に、ユーザIDを取得する。例えば、ユーザID取得部303は、アドバタイジングパケットの順序情報を参照し、全ての桁を受信したか否かを判定する。ユーザID取得部303は、全ての桁を受信したと判定した場合に、それまでに受信した個々の桁を結合してユーザIDを取得する。
認証装置30は、複数のユーザ端末20の各々と通信可能であり、複数のアドバタイジングパケットの各々には、当該アドバタイジングパケットを送信したユーザ端末20を識別可能な識別情報が含まれており、ユーザID取得部303は、複数のアドバタイジングパケットの各々に含まれる識別情報に基づいて、ユーザ端末20ごとに、ユーザIDを取得する。この識別情報は、任意の情報であってよく、例えば、ユーザ端末20のアドレス、又は、ユーザ端末20のコンピュータ名である。本実施形態では、図3に示すフォーマットのアクセスアドレス部又はアドバタイジングアドレス部が上記識別情報に相当する。
本実施形態では、サービスUUIDには、アプリケーションを識別可能なアプリ識別IDが含まれており、ユーザID取得部303は、サービスUUIDにアプリ識別IDが含まれているアドバタイジングパケットをスキャンし、ユーザIDを取得する。ユーザID取得部303は、スキャン設定データDTに定められた条件1及び条件2に基づいて、サービスUUIDが含まれており、かつ、認証アプリのアプリ識別IDが含まれているか否かを判定する。ユーザID取得部303は、条件1及び条件2を満たさないアドバタイジングパケットはスキャンせずに破棄し、条件1及び条件2を満たすアドバタイジングパケットをスキャンして処理対象とする。
[生体情報取得部]
生体情報取得部304は、ユーザの生体情報を取得する。本実施形態では、生体認証の一例として顔認証を説明するので、生体情報取得部304は、ユーザの顔写真又は顔の特徴量を取得する。本実施形態では、生体情報取得部304によって顔写真が取得され、サーバ10によって顔の特徴量が計算される場合を説明するが、生体情報取得部304が顔の特徴量を計算してもよい。生体情報は、通信システムSで利用される生体認証に応じた方法で取得されるようにすればよい。
[実行部]
実行部305は、ユーザIDに基づいて、所定の処理を実行する。本実施形態では、送信対象データが、ユーザ端末10のユーザを識別可能なユーザIDであり、所定の処理は、ユーザIDに基づいて実行される認証処理であり、これらの点は、サーバ10の実行部102で説明した通りである。例えば、実行部305は、ユーザIDと、生体情報と、に基づいて、認証処理を実行する。本実施形態では、サーバ10の実行部102によって、ユーザIDの正当性及び顔の類否が判定されるので、認証装置30の実行部305が実行する認証処理は、ユーザIDと顔写真をサーバ10に送信する処理になる。
[4.通信システムにおいて実行される処理]
次に、通信システムSにおいて実行される処理について説明する。ここでは、ユーザが認証アプリを起動した場合に実行される起動処理と、ユーザがセキュリティゲートSGを通過するための認証処理と、について説明する。下記に説明する処理は、図7に示す機能ブロックにより実行される処理の一例である。
[4-1.起動処理]
図10は、起動処理の一例を示すフロー図である。図10に示す起動処理は、制御部11,21が、それぞれ記憶部12,22に記憶されたプログラムに従って動作することによって実行される。なお、起動処理が実行されるにあたり、ユーザは利用登録を済ませているものとする。
図10に示すように、ユーザ端末20は、操作部24の検出信号に基づいて、認証アプリを起動させるか否かを判定する(S100)。認証アプリは、任意の操作によって起動し、例えば、表示部25に表示されたメニュー画面から認証アプリを選択する操作が行われた場合に起動する。
認証アプリを起動させると判定されない場合(S100;N)、本処理は終了する。この場合、ユーザ端末20の記憶部22に記憶されたユーザIDは更新されない。一方、認証アプリを起動させると判定された場合(S100;Y)、ユーザ端末20は、認証アプリを起動させ(S101)、サーバ10に対し、認証アプリの起動通知を送信する(S102)。起動通知は、認証アプリが起動されたことを示す通知である。起動通知には、ユーザ端末20、ユーザ、及び認証アプリの少なくとも1つを識別可能な情報が含まれており、例えば、ユーザ端末20の記憶部22に記憶されたユーザIDが含まれる。
サーバ10は、起動通知を受信すると、起動通知を送信したユーザに対し、新たなユーザIDを発行する(S103)。新たなユーザIDは、現在のユーザIDとは異なるユーザIDである。S103においては、サーバ10は、所定のID発行ルールに基づいて、ユーザIDを発行する。例えば、サーバ10は、全ての他のユーザと重複しないようにユーザIDを発行してもよいし、顔の特徴量が類似する他のユーザと重複しないようにユーザIDを発行してもよい。サーバ10は、起動通知に含まれるユーザIDに代えて、新たに発行したユーザIDをユーザデータベースDBに格納する。
サーバ10は、ユーザ端末20に対し、新たなユーザIDを送信する(S104)。ユーザ端末20は、新たなユーザIDを受信すると、古いユーザIDを記憶部22から消去して、新たなユーザIDを記憶部22に記録し(S105)、本処理は終了する。以降、ユーザ端末20は、アドバタイジングパケットを利用して、新たなユーザIDを送信できるようになる。
[4-2.認証処理]
図11は、認証処理の一例を示すフロー図である。図11に示す認証処理は、制御部11,21,31が、それぞれ記憶部12,22,32に記憶されたプログラムに従って動作することによって実行される。なお、認証処理が実行されるにあたり、利用登録が完了しているものとする。利用登録後に図10の起動処理が実行された場合には、更新後の新たなユーザIDに基づいて、下記に説明する認証処理が実行される。認証処理は、認証アプリが起動された状態、認証アプリがバックグラウンドモードに移行した状態、又はユーザ端末20がスリープモードに移行した状態の何れで実行されてもよい。
図11に示すように、ユーザ端末20は、記憶部22に記憶されたユーザIDを個々の桁に分割する(S200)。S200においては、ユーザ端末20は、4桁のユーザIDを、1桁目、2桁目、3桁目、及び4桁目の各々に分割する。
ユーザ端末20は、個々の桁が重複して複数個含まれ、かつ、順序情報が重複して複数個含まれるように、複数のアドバタイジングパケットを作成する(S201)。S201では、ユーザ端末20は、S200で分割した桁ごとに、図6を参照して説明したような4個のサービスUUIDをそれぞれ含む4個のアドバタイジングパケットを作成する。
ユーザ端末20は、認証装置30に対し、複数のアドバタイジングパケットの各々を送信する(S202)。S202においては、ユーザ端末20は、S201で作成した4個のアドバタイジングパケットの各々を繰り返し送信する。認証アプリ以外の他のアプリがユーザ端末20にインストールされており、他のアプリについてもアドバタイジングパケットを利用するのであれば、ユーザ端末20は、S201で作成した4個のアドバタイジングパケット以外の他のアドバタイジングパケットを送信する。
認証装置30は、ユーザ端末20又は他のコンピュータから、アドバタイジングパケットを受信する(S203)。S203の時点では、認証装置30は、アドバタイジングパケットに何のデータが格納されているかを判別できないので、ひとまず全てのアドバタイジングパケットを受信する。認証装置30は、受信したアドバタイジングパケットのうち、スキャン設定データに定義されたアドバタイジングパケットをスキャンし、ユーザIDを取得する(S204)。
図12は、S204における処理の詳細を示す図である。図12に示すように、認証装置30は、S203で受信したアドバタイジングパケットのADタイプを参照し、サービスUUIDが格納されているか否かを判定する(S2040)。サービスUUIDが格納されていると判定されない場合(S2040;N)、認証装置30は、S203で受信したアドバタイジングパケットをスキャンせずに破棄し(S2041)、本処理は終了する。
一方、サービスUUIDが格納されていると判定された場合(S2040;Y)、認証装置30は、このサービスUUIDの1桁目~14桁目及び19桁目~32桁目を参照し、認証アプリのアプリ識別IDが格納されているか否かを判定する(S2042)。認証アプリのアプリ識別IDが格納されていると判定されない場合(S2042;N)、認証サービスとは関係のないアプリケーションにより送信されたアドバタイジングパケットなので、S2041の処理に移行し、アドバタイジングパケットが破棄される。
一方、認証アプリのアプリ識別IDが格納されていると判定された場合(S2042;Y)、認証装置30は、サービスUUIDの15桁目~18桁目が全て一致し、かつ、「A」~「D」の何れかであるかを判定する(S2043)。サービスUUIDの15桁目~18桁目が一致しないと判定された場合、又は、サービスUUIDの15桁目~18桁目が「A」~「D」の何れかではないと判定された場合(S2043;N)、ノイズの影響を受けた可能性があるので、S2041の処理に移行し、アドバタイジングパケットが破棄される。
一方、サービスUUIDの15桁目~18桁目が全て一致し、かつ、「A」~「D」の何れかであると判定された場合(S2043;Y)、認証装置30は、サービスUUIDの33桁目~36桁目(下4桁)が全て一致し、かつ、「0」~「9」の何れかであるかを判定する(S2044)。サービスUUIDの下4桁が一致しないと判定された場合、又は、サービスUUIDの下4桁が「0」~「9」の何れかではないと判定された場合(S2044;N)、ノイズの影響を受けた可能性があるので、S2041の処理に移行し、アドバタイジングパケットが破棄される。
サービスUUIDの下4桁が全て一致し、かつ、「0」~「9」の何れかであると判定された場合(S2044;Y)、認証装置30は、処理中のアドバタイジングパケットをスキャン対象とし、サービスUUIDの15桁目~18桁目の順序情報と、サービスUUIDの下4桁の数値と、に基づいて、ユーザIDの桁を記憶部22に保持する(S2045)。S2045においては、認証装置30は、スキャンしたアドバタイジングパケットに格納された、ユーザ端末20のアドレス等の識別情報ごとに、ユーザIDの桁を格納する配列UserID[i]を記憶部32に保持する。iは、桁の順序であり、「1」~「4」の何れかとなる。この配列の個々の要素は、受信済みのアドバタイジングパケットに格納された桁である。S2045においては、認証装置30は、順序情報が示す「A」~「D」の何れかを「1」~「4」の何れかに変換し、受信した桁を配列に格納する。
認証装置30は、ユーザIDの取得が完了したか否かを判定する(S2046)。S2046においては、認証装置30は、上記配列の4つの要素全てに桁が格納されたか否かを判定する。4つの要素全てに桁が格納されたと判定された場合には、認証装置30は、各要素の数値を結合してユーザIDを取得し、ユーザIDの取得が完了したと判定する。
ユーザIDの取得が完了していないと判定された場合(S2046;N)、S203の処理に戻り、アドバタイジングパケットの受信が継続される。一方、ユーザIDの取得が完了したと判定された場合(S2046;Y)、図11に戻り、認証装置30は、撮影部36の検出信号に基づいて、顔写真を取得する(S205)。認証装置30は、サーバ10に対し、S204で取得が完了したと判定されたユーザIDと、S205で取得された顔写真と、を含む認証要求を送信する(S206)。認証要求は、認証処理の実行を要求するための所定の要求である。
サーバ10は、認証要求を受信すると、ユーザデータベースDBに基づいて、ID認証と顔認証を実行する(S207)。S207においては、サーバ10は、認証要求に含まれるユーザIDがユーザデータベースDBに存在するか否かを判定する。サーバ10は、ユーザIDが存在する場合、認証要求に含まれる顔写真に基づいて、顔の特徴量を計算する。サーバ10は、ユーザデータベースDBにおいてユーザIDに関連付けられた顔の特徴量と、認証要求に含まれる顔写真から計算した顔の特徴量と、の距離を計算する。この距離が閾値未満であれば、顔認証は成功となる。この距離が閾値以上であれば、顔認証は失敗となる。
認証が失敗した場合(S207;失敗)、サーバ10は、認証装置30に対し、エラーメッセージを送信し(S208)、本処理は終了する。この場合、認証装置30の表示部35に、エラーメッセージが表示され、認証が成功しなかったことがユーザに通知される。
一方、認証が成功した場合(S207;成功)、サーバ10は、認証装置30に対し、認証が成功したことを示す成功通知を送信する(S209)。認証装置30においては、成功通知を受信すると、認証装置30の制御部31は、セキュリティゲートSGのロックを解除し(S210)、本処理は終了する。以降、認証装置30の表示部35には、認証が成功したことを示すメッセージが表示され、ユーザは、セキュリティゲートSGを通過する。
本実施形態の通信システムSによれば、ユーザ端末20は、ユーザIDの少なくとも1つの桁が重複して複数個含まれ、かつ、順序情報が含まれるように、複数のアドバタイジングパケットの各々を作成して送信する。認証装置30は、複数のアドバタイジングパケットの各々に含まれる、重複した複数個の少なくとも1つの桁と、順序情報と、に基づいて、複数の桁を結合してユーザIDを取得して所定の処理を実行する。これにより、アドバタイジングパケットがノイズの影響を受けたとしても、正確なユーザIDを送信することができ、ノイズの影響に対応することができる。正確なユーザIDを送信することによって、認証精度を向上させることもできる。また、個々のアドバタイジングパケットに含まれる桁の個数が少なすぎるとノイズの影響を受けやすく、逆に桁の個数が多すぎると認証アプリと他のアプリケーションが区別できない可能性があるが、一定程度の個数をアドバタイジングパケットに入れることによって、ノイズの影響を受けにくく、かつ、認証アプリと他のアプリケーションとを区別できる。また、個々のアドバタイジングパケットに順序情報を含めることによって、認証装置30は、ユーザIDの桁を分割して受信しても、個々の桁の順序を正確に把握できる。
また、通信システムSは、サービスUUIDの33桁目~36桁目に含まれる値が互いに同じであるアドバタイジングパケットをスキャンし、当該スキャンされたアドバタイジングパケットに基づいて、ユーザIDを取得することにより、スキャン対象となるアドバタイジングパケットを減らし、認証装置30の処理負荷を軽減できる。更に、認証装置30に、スキャン対象として定められた全通りのアドバタイジングパケットをスキャンさせることができ、ユーザIDを確実に取得させることができる。このため、認証装置30の性能が低かったとしても、ユーザIDを確実に取得させることができる。
また、通信システムSは、複数のアドバタイジングパケットの各々に含まれる、重複した複数個の少なくとも1つの桁と、重複した複数個の順序情報と、に基づいて、ユーザIDを取得することによって、認証装置30にユーザIDを取得させる確実性をより高めることができる。
また、通信システムSは、サービスUUIDの15桁目~18桁目に含まれる値が互いに同じであるアドバタイジングパケットをスキャンし、当該スキャンされたアドバタイジングパケットに基づいて、ユーザIDを取得することにより、スキャン対象となるアドバタイジングパケットを減らし、認証装置30の処理負荷を軽減できる。更に、認証装置30に、スキャン対象として定められた全通りのアドバタイジングパケットをスキャンさせることができ、ユーザIDを確実に取得させることができる。このため、認証装置30の性能が低かったとしても、ユーザIDを確実に取得させることができる。
また、通信システムSは、複数のアドバタイジングパケットの各々に、順序情報が重複して複数個連続して含まれるように、複数のアドバタイジングパケットの各々を作成することにより、認証装置30は、連続した領域を参照すれば複数個の順序情報を取得できる。このため、複数個の順序情報が別々の領域に格納されている場合に比べて、順序情報を取得する処理を単純化し、認証装置30の処理負荷を軽減できる。
また、通信システムSは、複数のアドバタイジングパケットの各々において、重複した複数個の少なくとも1つの桁と、順序情報と、が所定距離以上離れるように、複数のアドバタイジングパケットの各々を作成することにより、ノイズの影響に対応しやすくなる。例えば、一定レンジにあるサービスUUIDを同時に受信すると電気信号に差分が大きくない他の電気信号が雑音で受信される可能性があるが、ユーザIDの個々の桁と順序情報とをある程度離すことにより(図6の例であれば、これらの間に19桁目~32桁目のアプリ識別IDを入れることにより)、各電気信号の差分が大きくなりノイズが発生しにくくなる。
また、通信システムSは、複数のアドバタイジングパケットの各々に、少なくとも1つの桁が重複して複数個連続して含まれるように、複数のアドバタイジングパケットの各々を作成することにより、認証装置30は、連続した領域を参照すれば複数個の桁を取得できる。このため、複数個の桁が別々の領域に格納されている場合に比べて、複数個の桁を取得する処理を単純化し、認証装置30の処理負荷を軽減できる。
また、通信システムSは、所定の個数に達するまで、複数のアドバタイジングパケットの各々から少なくとも1つの桁と順序情報を取得し、所定の個数に達した場合に、ユーザIDを取得することにより、認証装置30にユーザIDを取得させる確実性をより高めることができる。
また、通信システムSは、ユーザID全体の桁数を特定し、その桁数に達するまで、ユーザIDを取得するための処理を繰り返すことによって、認証装置30にユーザIDを取得させる確実性をより高めることができる。
また、通信システムSは、複数のアドバタイジングパケットの各々に含まれるユーザ端末20のアドレス等の識別情報に基づいて、ユーザ端末20ごとに、ユーザIDを取得することにより、認証装置30の周囲に複数のユーザ端末20が存在したとしても、個々のユーザ端末20のユーザIDを確実に取得できる。
また、通信システムSは、複数のアドバタイジングパケットの各々にサービスUUIDの一部として含まれる、重複した複数個の少なくとも1つの桁と、順序情報と、に基づいて、ユーザIDを取得することによって、認証装置30にユーザIDを取得させる確実性をより高めることができる。例えば、認証アプリがバックグラウンドモードに移行した場合等にローカルネームが消えてしまうオペレーティングシステムであったとしても、サービスUUIDを利用することによって、このような場合でもユーザIDの個々の桁を送信でき、認証装置30に確実にユーザIDを取得させることができる。
また、通信システムSは、サービスUUIDにアプリ識別IDが含まれているアドバタイジングパケットをスキャンし、ユーザIDを取得することにより、スキャン対象となるアドバタイジングパケットを減らし、認証装置30の処理負荷を軽減できる。更に、認証装置30に、スキャン対象として定められた全通りのアドバタイジングパケットをスキャンさせることができ、ユーザIDを確実に取得させることができる。このため、認証装置30の性能が低かったとしても、ユーザIDを確実に取得させることができる。
また、通信システムSは、ユーザIDに基づいて認証処理を実行することにより、認証サービスにおけるノイズに対応できる。
また、通信システムSは、ユーザIDと、生体情報と、に基づいて、認証処理を実行することにより、2段階認証を提供する認証サービスにおけるノイズに対応できる。
[5.変形例]
なお、本開示は、以上に説明した実施の形態に限定されるものではない。本開示の趣旨を逸脱しない範囲で、適宜変更可能である。
(1)例えば、実施形態では、ユーザがセキュリティゲートSGを通過する場面を例に挙げたが、通信システムSを認証サービスに適用する場合であったとしても、他の任意の場面の認証に適用可能である。例えば、ユーザが商品を購入したりサービスを利用したりする場面の認証にも適用可能である。この場合、例えば、認証装置30は、自動販売機、券売機、POS端末、又は店舗における支払端末である。認証が成功すると、決済処理が実行され、ユーザは商品を購入したり、サービスを利用したりすることができる。
変形例(1)では、ユーザデータベースDBに決済情報を登録しておき、実行部102は、あるユーザの認証が成功した場合に、そのユーザの決済情報に基づいて決済処理を実行してもよい。決済処理の際に参照される決済情報は、認証が成功したユーザに関連付けられた決済情報である。
決済情報は、決済をするために必要な情報であり、例えば、クレジットカード情報、電子バリュー(例えば、電子マネー又はポイント)のアカウント情報、仮想通貨のアカウント情報、銀行口座情報、又はデビットカード情報などである。決済情報は、ユーザ登録時などに登録され、例えば、ユーザデータベースDBに、ユーザアカウントに関連付けて決済情報が格納されているものとする。なお、決済情報は、ユーザデータベースDBとは異なるデータベースに格納されていてもよい。
実行部102は、ID認証又は顔認証の何れか一方が失敗した場合には決済処理を実行せず、ID認証及び顔認証が成功した場合に決済処理を実行する。決済処理が実行された場合、認証装置30の表示部35又は店舗の端末などに、その旨が表示され、ユーザは商品を受け取ったり、サービスを利用したりする。他にも例えば、通信システムSは、ユーザの行動解析における認証、イベントの入場時における認証、試験会場への入場における認証、又は選挙などの投票における認証等の任意の認証に利用可能である。
(2)また例えば、通信システムSは、認証サービス以外の他のサービスに利用可能である。例えば、通信システムSは、クーポンを配布する配布サービスに適用してもよい。この場合、通信システムSには、クーポンを配布する配布装置が含まれており、配布装置が送信装置に相当し、ユーザ端末20は受信装置に相当する。送信対象データは、クーポンを識別可能なクーポンIDであり、配布装置は、クーポンIDを個々の桁に分割し、順序情報とともにアドバタイジングパケットに格納して送信する。ユーザ端末20は、個々の桁と順序情報を含むアドバタイジングパケットを受信し、クーポンIDを取得する。ユーザ端末20は、取得したクーポンIDをサーバ10に送信し、ユーザはクーポンを獲得する。
(3)また例えば、通信システムSには、サーバ10が含まれていなくてもよい。この場合、認証装置30は、サーバ10が実行するものとして説明した認証処理を実行すればよい。また例えば、通信システムSに認証装置30が含まれていなくてもよく、サーバ10が受信装置に相当してもよい。この場合、ユーザ端末20からサーバ10に対し、無線通信又は有線通信を利用して、複数のアドバタイジングパケットが送信される。サーバ10は、認証装置30が実行するものとして説明したユーザIDの取得処理を実行すればよい。