(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-16
(45)【発行日】2024-04-24
(54)【発明の名称】コード提供装置、コード提供方法及びコード提供プログラム
(51)【国際特許分類】
G06F 21/44 20130101AFI20240417BHJP
G06K 19/06 20060101ALI20240417BHJP
【FI】
G06F21/44
G06K19/06 037
G06K19/06 112
(21)【出願番号】P 2021127441
(22)【出願日】2021-08-03
【審査請求日】2023-07-20
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【氏名又は名称】林 一好
(72)【発明者】
【氏名】田淵 純一
【審査官】吉田 歩
(56)【参考文献】
【文献】特開2016-170464(JP,A)
【文献】特表2019-505872(JP,A)
【文献】特開2021-077067(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/44
G06K 19/06
(57)【特許請求の範囲】
【請求項1】
所定のウェブサイトを表示した端末からの要求に応じて、有効期限付きのデータを埋め込んだ二次元コードを生成するコード生成部と、
前記二次元コードを含む動画を前記所定のウェブサイト上に表示するためのプログラムに対して、当該動画が実際に表示されているウェブサイトが正当であることを検証するための検証用プログラム部品を挿入したワンタイムプログラムを生成するプログラム生成部と、
前記ワンタイムプログラムを前記端末に送信する送信部と、を備え、
前記要求を、前記所定のウェブサイトの記載に従って、所定時間毎に受信するコード提供装置。
【請求項2】
前記プログラム生成部は、並べ替え可能な動画用プログラム部品、及び前記検証用プログラム部品をランダムに組み合わせて、前記ワンタイムプログラムを生成する請求項1に記載のコード提供装置。
【請求項3】
前記プログラム生成部は、前記二次元コードを構成するセル単位に、所定の図形を当該セルの位置に移動させるアニメーション表示のためのプログラムを、前記動画用プログラム部品として組み合わせる請求項2に記載のコード提供装置。
【請求項4】
前記アニメーション表示は、イージングにより前記図形を減速させて前記セルの位置に停止させるものである請求項3に記載のコード提供装置。
【請求項5】
前記プログラム生成部は、前記図形の移動元として、前記二次元コードを構成する複数のセルのいずれかをランダムに決定し、
前記アニメーション表示は、前記移動元の図形の色を変化させ、かつ、当該図形を曲線移動させるものである請求項3又は請求項4に記載のコード提供装置。
【請求項6】
所定のウェブサイトを表示した端末からの要求に応じて、有効期限付きのデータを埋め込んだ二次元コードを生成するコード生成ステップと、
前記二次元コードを含む動画を前記所定のウェブサイト上に表示するためのプログラムに対して、当該動画が実際に表示されているウェブサイトが正当であることを検証するための検証用プログラム部品を挿入したワンタイムプログラムを生成するプログラム生成ステップと、
前記ワンタイムプログラムを前記端末に送信する送信ステップと、をコンピュータが実行し、
前記要求を、前記所定のウェブサイトの記載に従って、所定時間毎に受信するコード提供方法。
【請求項7】
請求項1から請求項5のいずれかに記載のコード提供装置としてコンピュータを機能させるためのコード提供プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、二次元コードを特定のサイトに表示させるための装置、方法及びプログラムに関する。
【背景技術】
【0002】
従来、認証又は決済等、重要な目的でQRコード(登録商標)等の二次元コードが利用される場合、ウェブサイト上に表示する二次元コードが意図しない別サイトへ転載されることを抑止したいという課題がある。このため、例えば、二次元コードに埋め込むURL等の値に有効期限を付与する方法(例えば、非特許文献1参照)、あるいは、連続的に二次元コードを表示し、連続的に取得した情報を用いてデータを再現する等、二次元コード自体を拡張する方法(例えば、特許文献1参照)が採られている。
【先行技術文献】
【特許文献】
【0003】
【非特許文献】
【0004】
【文献】Young Sil Lee, Nack Hyun Kim, Hyotaek Lim, Heung Kuk Jo and Hoon Jae Lee, "Online Banking Authentication System using Mobile-OTP with QR-code", IEEE Fifth Int. Conf. on Computer Sciences and Convergence Information Technology (ICCIT), Dec. 2010.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、非特許文献1のように有効期限を付与するだけでは、有効期限毎に転載を行うことでサイトの複製が可能だった。
また、特許文献1のように二次元コード自体を拡張する場合、動画としてキャプチャすることで再配信が可能であり、さらに、既存の二次元コード読み取り機器で読み取った値が利用できなくなるにもかかわらず、ユーザの視覚的には従来の二次元コードと見えるため、ユーザが操作方法を間違う可能性が高いという問題があった。
【0006】
本発明は、ウェブサイト上に表示する二次元コードの別サイトへの転載を抑制できるコード提供装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係るコード提供装置は、所定のウェブサイトを表示した端末からの要求に応じて、有効期限付きのデータを埋め込んだ二次元コードを生成するコード生成部と、前記二次元コードを含む動画を前記所定のウェブサイト上に表示するためのプログラムに対して、当該動画が実際に表示されているウェブサイトが正当であることを検証するための検証用プログラム部品を挿入したワンタイムプログラムを生成するプログラム生成部と、前記ワンタイムプログラムを前記端末に送信する送信部と、を備え、前記要求を、前記所定のウェブサイトの記載に従って、所定時間毎に受信する。
【0008】
前記プログラム生成部は、並べ替え可能な動画用プログラム部品、及び前記検証用プログラム部品をランダムに組み合わせて、前記ワンタイムプログラムを生成してもよい。
【0009】
前記プログラム生成部は、前記二次元コードを構成するセル単位に、所定の図形を当該セルの位置に移動させるアニメーション表示のためのプログラムを、前記動画用プログラム部品として組み合わせてもよい。
【0010】
前記アニメーション表示は、イージングにより前記図形を減速させて前記セルの位置に停止させるものであってもよい。
【0011】
前記プログラム生成部は、前記図形の移動元として、前記二次元コードを構成する複数のセルのいずれかをランダムに決定し、前記アニメーション表示は、前記移動元の図形の色を変化させ、かつ、当該図形を曲線移動させるものであってもよい。
【0012】
本発明に係るコード提供方法は、所定のウェブサイトを表示した端末からの要求に応じて、有効期限付きのデータを埋め込んだ二次元コードを生成するコード生成ステップと、前記二次元コードを含む動画を前記所定のウェブサイト上に表示するためのプログラムに対して、当該動画が実際に表示されているウェブサイトが正当であることを検証するための検証用プログラム部品を挿入したワンタイムプログラムを生成するプログラム生成ステップと、前記ワンタイムプログラムを前記端末に送信する送信ステップと、をコンピュータが実行し、前記要求を、前記所定のウェブサイトの記載に従って、所定時間毎に受信する。
【0013】
本発明に係るコード提供プログラムは、前記コード提供装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0014】
本発明によれば、ウェブサイト上に表示する二次元コードの別サイトへの転載を抑制できる。
【図面の簡単な説明】
【0015】
【
図1】実施形態における認証システムを構成するサーバの機能構成を示す図である。
【
図2】実施形態における二次元コードを例示する図である。
【
図3】実施形態におけるプログラム部品を例示する図である。
【
図4】実施形態におけるワンタイムプログラムの構成を例示する図である。
【
図5】実施形態におけるコード提供方法の流れを示すシーケンス図である。
【発明を実施するための形態】
【0016】
以下、本発明の実施形態の一例について説明する。
図1は、本実施形態における認証システム1を構成するコード提供装置としてのサーバ10の機能構成を示す図である。
【0017】
サーバ10は、制御部、記憶部及び各種の入出力・通信インタフェースを備えた情報処理装置であり、認証又は決済等に用いる二次元コードを有効期限付きで端末20のブラウザに表示させるウェブサイトを提供する。
制御部は、記憶部に格納された各種のソフトウェアを実行することにより、本実施形態の機能を実現する。具体的には、制御部は、コード提供プログラムを実行することにより、コード生成部11、プログラム生成部12、及び送信部13として機能する。
【0018】
コード生成部11は、所定のウェブサイトを表示した端末20からの要求に応じて、有効期限付きのデータを埋め込んだ二次元コードを生成する。
この要求は、ウェブサイトの記載に従って所定時間毎にサーバ10に送信され、コード生成部11は、その都度、新たな二次元コードを生成する。
【0019】
プログラム生成部12は、二次元コードを含む動画を所定のウェブサイト上に表示するためのプログラムに対して、この動画が実際に表示されているウェブサイトが正当であることを検証するための検証用プログラム部品を挿入したワンタイムプログラムを生成する。
【0020】
このとき、プログラム生成部12は、並べ替え可能な動画用プログラム部品をランダムに組み合わせて、ワンタイムプログラムを生成する。
具体的には、プログラム生成部12は、例えば、二次元コードを構成するセル単位に、所定の図形を該当のセルの位置に移動させるアニメーション表示のためのプログラムを、動画用プログラム部品として組み合わせる。
【0021】
送信部13は、生成されたワンタイムプログラムを、要求元の端末20に送信し、ブラウザに実行させることで、二次元コードを含む所定時間(例えば、数秒)の動画を表示させる。
【0022】
図2は、本実施形態における二次元コードを例示する図である。
ここでは、二次元コードの一例としてQRコード(登録商標)を示している。本実施形態では、このようなマトリクス型の二次元コードを、図のように、画像を構成する最小単位のセル毎に分割して処理する。
【0023】
例えば、黒を1、白を0とし、セル数をNとした場合、この画像は、値に0又は1を持つN2の配列Aで表現できる。なお、簡単のため5×5の二次元コードで説明すると、各セルは、例えば、次のように番号付けされる。
0,1,2,3,4
5,6,7,8,9
・・・
ここで、セルのサイズをSとした場合、x番目のセルの位置(座標)は、pos(x)=((x mod N)S,(x-x mod N)S/N)となる。
【0024】
例えば、[0,0,0,1,1,0,1,0,1,0,1,0,1,1,…]のような配列は、次のような画像を示している。
0,0,0,1,1
0,1,0,1,0
1,0,1,1,…
【0025】
次に、二次元コードを動画で表示するためのプログラムを生成する手法を示す。
本実施形態では、黒又は白の色の矩形の図形を移動させ最終的にpos(a)に色cで表示するプログラム部品を用いる。
ここで、移動する初期位置は任意でよく、経路については、イージングとして各種の動画表示に用いられている、2点間を連続的に結ぶ曲線を作る数式が用いられてよい。例えば、イージングにより図形を減速させてセルの位置に停止させるものであってもよい。
【0026】
また、図形の移動元として、二次元コードを構成する複数のセルのいずれかをランダムに決定し、アニメーション表示は、移動元の図形の色を変化させ、かつ、この図形を曲線移動させて、該当の位置に停止させるものであってもよい。
具体的には、例えば、長さN2のセル移動に必要な、(0,1,2,…,N2)の要素を並び替えた配列Rが用意される。この並び替えは、完全なランダムであってもよいし、一定の領域をまとめて並び替えたものや、並び替えを行う回数を限定する等、部分的にランダムなものであってもよい。
【0027】
時刻tnの二次元コード表示を行うために必要な動画用プログラム部品群は、Ps(x,c)がR[x]からxへのセル移動のプログラムとしたとき、Ps(1,c)~Ps(N2,c)である。
【0028】
これらの動画用プログラム部品群に対して、表示中のウェブサイトを検証するための検証用プログラム部品Pc1~Pcwを加えたプログラム部品群を、ランダムに並び替えて構成されるプログラムをPtnとする。
【0029】
図3は、本実施形態におけるプログラム部品を例示する図である。
showDot(x,c)がx番目のセルを色cにする手続きであり、動画用プログラム部品Ps(x,c)に相当する。ここでは、位置0,1,2,3,4に、それぞれ0(白),0,0,1(黒),1のセルを表示させるための動画用プログラム部品を例示している。
【0030】
また、検証用プログラム部品Pc1~Pcwは、表示中のウェブサイトに関する情報を収集し、これらが期待された値であるかどうかをチェックし、期待された値でない場合にプログラムの実行を中止するか、又は異なる動作をさせるプログラム部品である。
【0031】
そして、これらのプログラム部品を動作させる為に必要な依存関係プログラムをPtnの前後及びプログラム部品間に付与したプログラムを、時刻tnにおけるワンタイムプログラムPtnAとする。
【0032】
図4は、本実施形態におけるワンタイムプログラムの構成を例示する図である。
この例では、依存関係プログラムと共に、動画用プログラム部品Ps(0,0)~Ps(4,1)と、検証用プログラム部品Pc
1~Pc
3とがランダムに配置されている。
なお、これらのプログラム部品は、互いに独立した動作を指示するものであるため、並び順に制約はない。
【0033】
図5は、本実施形態におけるコード提供方法の流れを示すシーケンス図である。
ステップS1において、端末20は、サーバ10が提供するサイトにアクセスする。
ステップS2において、サーバ10は、要求に応じたレスポンスを端末20に送信する。
【0034】
ステップS3において、端末20は、レスポンス(HTML)の記載に従い、サイト上に二次元コードを含んだ動画を表示させるための、時刻tnのワンタイムプログラムPtnAをサーバ10に要求する。
ステップS4において、サーバ10は、二次元コードを生成し、このコードを表示させるためのワンタイムプログラムPtnAを端末20に送信する。
ステップS5において、端末20は、受信したPtnAを実行し、ブラウザに二次元コードの動画を表示させる。
【0035】
ステップS6において、端末20は、HTMLの記載、又はPtnAの記載に従って、一定時間後(数秒後)に、時刻tn+1のワンタイムプログラムPtn+1Aをサーバ10に要求する。
ステップS7において、サーバ10は、新たに二次元コードを生成し、このコードを表示させるためのワンタイムプログラムPtn+1Aを端末20に送信する。
ステップS8において、端末20は、受信したPtn+1Aを実行し、ブラウザに二次元コードの動画を表示させる。
【0036】
以下、端末20は、一定時間間隔でワンタイムプログラムをサーバ10から取得し、都度異なる二次元コードの動画を表示させる。
【0037】
本実施形態によれば、サーバ10は、二次元コードを画像として配信するのではなく、都度生成したワンタイムプログラムにより、例えば、HTML上のDOMアニメーション等を用いて、さらに、表示中のウェブサイトの正当性を検証しながら画面上に動画として二次元コードを表示させる。
これにより、最終的に表示される二次元コードは、従来と同様の仕様になるため、既存の読み取り機器で読み取り可能であるという特徴を残しながら、別のサイトへの転載を抑止することができる。
【0038】
また、一定間隔で二次元コードを繰り返し表示させることにより、二次元コードが表示されてからユーザが読み取る(撮影する)準備をするまでの時間を考慮する必要がなくなるため、二次元コードに埋め込むURL等の有効期限を短くすることができる。例えば、固定の二次元コードの場合、ユーザがスマートフォンのアプリで撮影するために、通常数10分程度の猶予を用いるが、本実施形態では、動的に二次元コードを書き換え続けることにより、撮影に必要な数秒又は数十秒の期限に短縮できる。このとき、たとえ二次元コードとして正しく表示されている時間がさらに短くても、読み取り機器(カメラ)のフォーカスさえ合っていれば正常に認識することができる。
この結果、表示された二次元コードの転載による不正利用を、期限切れにより抑制することができる。
【0039】
サーバ10は、並べ替え可能な動画用プログラム部品、及び検証用プログラム部品をランダムに組み合わせて、ワンタイムプログラムを生成する。
これにより、サーバ10は、二次元コードの動画表示をさせるプログラムを難読化でき、別のサイトへの転載をより困難にできる。
【0040】
サーバ10は、端末20で動画表示をさせるにあたって、二次元コードを構成するセル単位に、白又は黒の矩形を該当のセルの位置に移動させるアニメーション表示のためのプログラムを、動画用プログラム部品として組み合わせる。
これにより、プログラム部品それぞれは、互いに依存しない表示領域を担当することとなるため、サーバ10は、並べ替えにより、難読化したワンタイムプログラムを容易に生成できる。
また、移動ではなく、例えば、特定のセルの色を次の二次元コードにおける色に単純に変化させるような動画の場合には、変化途中の色によって容易に次の色が予想可能となってしまう。これに対して、本実施形態のセルの移動を伴う動画では、次に表示される二次元コードの予測が困難となる。
【0041】
アニメーション表示は、例えば、イージングにより図形を減速させて該当のセルの位置に停止させるものであってもよい。
例えば、完全にランダムな挙動を示す動画の場合、人間が動画の終わり(二次元コードの完成)を予測できず、現在表示されている動画が二次元コードであることが分からなくなってしまう。これに対して、本実施形態では、イージングを用いてセル位置の曲線的な移動を伴う動画とすることで、人間には二次元コードが表示されるタイミングを分かりやすく、逆に、攻撃者(ロボット)による自動認識を難しくすることができる。
【0042】
また、ワンタイムプログラムは、例えば、アニメーション表示における図形の移動元として、二次元コードを構成する複数のセルのいずれかをランダムに決定し、移動元の図形の色を変化させ、かつ、曲線移動させるものであってもよい。
このような動画表示により、ランダムな動きでありながら、ユーザの視認性を向上できるので、実用性を損なうことなく、別サイトへの転載を抑制することができる。
【0043】
なお、前述の実施形態により、例えば、認証システム等の安全性を向上できることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進するとともに、イノベーションの拡大を図る」に貢献することが可能となる。
【0044】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0045】
サーバ10によるコード提供方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0046】
1 認証システム
10 サーバ
11 コード生成部
12 プログラム生成部
13 送信部
20 端末