【解決手段】本発明による電子装置は、通信モジュールと、OTPを生成するための第1のシード、第1のユーザーに割り当てられる第1の固有コード及び文字セットを格納するメモリと、プロセッサとを含み、プロセッサは、第1のシードを用いて第1のOTPを生成し、第1のOTP及び第1の固有コードの演算結果を文字セットにマッピングして第1のサブコードを生成し、第1のOTPを文字セットにマッピングして第2のサブコードを生成し、第1のサブコード及び第2のサブコードを用いてコードを生成し、生成されたコードを通信モジュールを通じて他の電子装置に送信するように設定される。
前記開閉システムは、受信されたコードを用いて認証を遂行するか、あるいは認証を遂行する他の電子装置に前記受信されたコードに対する認証を要請するように設定されることを特徴とする請求項14に記載の電子装置。
前記ホームネットワークを構成する電子装置は、認証結果に基づいて、前記ホームネットワークを構成する電子装置を制御し、あるいは前記ホームネットワークを構成するもう一つの電子装置を制御するように設定されることを特徴とする請求項17に記載の電子装置。
【発明を実施するための形態】
【0020】
以下、本発明の望ましい実施形態を添付の図面を参照して詳細に説明する。
【0021】
したがって、本発明の実施形態は、説明のみを目的とし、添付の特許請求の範囲及びそれと均等なものに基づいて定義される発明を制限するものではないことは、当業者には明らかである。図面において、同一の構成要素に対してはできるだけ同一の参照符号及び参照番号を付して説明する。
【0022】
図1は、本発明の一実施形態による固有コードの生成方法を示すフローチャートである。
【0023】
図1による実施形態において、第1の電子装置100は、固有コードを生成する電子装置であって、サーバ200は、固有コードを生成し、検証要請された固有コードを検証する電子装置であり得る。サーバ200は、固有コードを使用するサービスを管理する電子装置であり得る。例えば、サーバ200は、Webサービスを管理する電子装置であって、ユーザーID及びこれに対応するログイン情報を管理する。
【0024】
ステップ110において、第1の電子装置100は、サーバ200と第1の固有コード及び第1のシードを共有できる。一実施形態において、サーバ200は、第1の電子装置100を使用する第1のユーザーをシステムに加入させる場合に、第1の電子装置100に第1の固有コード及び第1のシードを送信できる。または、サーバ200は、第1の固有コード及び第1のシードをディスプレイできる情報を他の電子装置に送信できる。例えば、第1のユーザーは、第1の電子装置100又は他の電子装置を通じてサーバ200に加入を要請できる。サーバ200は、加入要請に対応して第1のユーザーに第1の固有コードを割り当てる。サーバ200は、第1の固有コードを第1の電子装置100又は他の電子装置に送信できる。また、サーバ200は、第1のユーザーに第1のシードを与えることができる。第1のシードは、時間ベースのワンタイムパスワードの生成のために第1のユーザーに与えられる。サーバ200は、第1のシードを第1の電子装置100又は他の電子装置に送信できる。一実施形態において、サーバ200は、第1の固有コード及び第1のシードをQRコード(登録商標)イメージを第1の電子装置100又は他の電子装置に送信できる。第1のユーザーは、他の電子装置に表示されるQRコード(登録商標)を第1の電子装置100で撮影でき、それによって第1の電子装置100は、第1の固有コード及び第1のシードを獲得できる。
【0025】
ステップ120において、第1の電子装置100は、第1のシード及び第1の時間情報を用いて第1のOTPを生成できる。すなわち、第1の電子装置100は、第1の時点で、第1の時点に対応する第1の時間情報及び第1のシードを用いて第1のOTPを生成できる。さらに、第1の電子装置100は、第2の時点で、第2の時点に対応する第2の時間情報及び第1のシードを用いて第2のOTPを生成できる。第1の電子装置100は、時間のフローに従って動的にOTPを変更して生成できる。
【0026】
ステップ130において、第1の電子装置100は、第1のOTP及び第1の固有コードを用いて第1のコードを生成できる。第1の電子装置100が第1のOTP及び第1の固有コードを用いてランダムかつ固有の第1のコードを生成するプロセスに対して、より詳細に後述する。第1のコードは、第1のOTP及び第1の固有コード全部を用いて生成されるに従って、第1のOTPのランダム性及び動的な変更可能性と第1の固有コードの固有性を保証され、ランダムかつ固有であり得る。第1のコードのランダム性及び固有性に対して一層詳細に後述する。
【0027】
ステップ140において、サーバ200は、第1のシード及び第1の時間情報を用いて第1のOTPを生成できる。サーバ200は、第1の時点で第1の時点に対応する第1の時間情報と第1のシードを用いて第1の電子装置100により生成されるものと同一の第1のOTPを生成できる。サーバ200は、第2の時点で第2の時点に対応する第2の時間情報と第1のシードを用いて第1の電子装置100が第2の時点で生成するもとと同一の第2のOTPを生成できる。すなわち、サーバ200は、OTPを動的に変更しつつ生成できる。
【0028】
ステップ150において、サーバ200は、第1のOTP及び第1の固有コードを用いて第1のコードを生成できる。サーバ200が第1のOTP及び第1の固有コードを用いて第1のコードを生成する方式は、第1の電子装置100が第1のOTP及び第1の固有コードを用いて第1のコードを生成する方式と同一であり得る。それによって、サーバ200により生成される第1のコードと第1の電子装置100により生成される第1のコードは、同一であり得る。
【0029】
ステップ160において、サーバ200は、コード確認要請を受信できる。サーバ200は、第1のユーザーが操作する電子装置、例えば第1の電子装置100又は他の電子装置からコード確認要請を受信することができる。
【0030】
ステップ170において、サーバ200は、コード確認要請内のコードがサーバ200により生成された第1のコードと同一であるか否かを判定できる。コード確認要請内のコードがサーバ200により生成された第1のコードと同一である場合に、ステップ180において、サーバ200は、コードが適合すると判定できる。コード確認要請内のコードがサーバ200により生成された第1のコードと異なる場合に、ステップ190において、サーバ200は、コードが適合しないと判定できる。サーバ200は、コードが適合するか否かによって、ユーザーログイン又は電子商取引決裁などの追加サービスを遂行するか、あるいは遂行しないことができる。
【0031】
図2は、本発明の一実施形態によるコードを生成する電子装置を示すブロック構成図である。
【0032】
電子装置100は、撮影モジュール101、プロセッサ102、及びメモリ103を含むことができる。
【0033】
撮影モジュール101は、外部の景観を撮影するモジュールであって、例えばプロセッサ102は、撮影モジュール101を通じて獲得されるイメージを使用し、シード、固有コード、及び文字セットの情報を獲得できる。
【0034】
プロセッサ102は、CPU、電子装置100の制御のための制御プログラムが格納されたROM、及びディスプレイ装置100の外部から入力される信号又はデータを記憶するか、あるいはディスプレイ装置100で遂行される作業のための記憶領域として使用されるRAMを含むことができる。CPUは、シングルコア、デュアルコア、トリプルコア、又はクアッドコアを含むことができる。CPU、ROM、及びRAMは、内部バスを通じて相互に連結され得る。
【0035】
メモリ103は、上記のROM及びRAMを両方とも含み、コードを生成するためのプログラム又はアルゴリズム、シード、固有コード、及び文字セットに関する情報を格納することができる。
【0036】
メモリ103は、実行の際にプロセッサ102が、ワンタイムパスワードを生成するための第1のシード、第1のユーザーに割り当てられる第1の固有コード及び文字セットを獲得し、第1のシードを用いて第1のOTPを生成し、第1のOTP及び第1の固有コードの演算結果を文字セットにマッピングして第1のサブコードを生成し、第1のOTPを文字セットにマッピングして第2のサブコードを生成し、第1のサブコード及び第2のサブコードを用いてコードを生成する指示を格納することができる。
【0037】
メモリ103は、実行時にプロセッサ102が、第1のシード及び第1の時点に対応する第1の時間情報を時間ベースのワンタイムパスワードアルゴリズムに入力し、第1のOTPを生成する指示を格納できる。
【0038】
メモリ103は、実行の際にプロセッサ102が、文字セットと比較することによって、第1の固有コードを数字コードに変換し、数字コードを第1のOTPと合算し、その合算結果を文字セットにマッピングして第1のサブコードを生成する指示を格納することができる。
【0039】
メモリ103は、実行の際にプロセッサ102が、その合算結果に対して文字セットのサイズでmod演算を実行し、合算結果に対するmod演算の実行結果を文字セットにマッピングして第1のサブコードを生成する指示を格納することができる。
【0040】
メモリ103は、実行の際にプロセッサ102が、合算結果に予め設定されたオフセットを適用し、オフセットが適用された合算結果を文字セットにマッピングして第1のサブコードを生成する指示を格納することができる。
【0041】
メモリ103は、実行の際にプロセッサ102が、オフセットが適用された合算結果に対して文字セットのサイズでmod演算を実行し、その合算結果に対するmod演算の実行結果を文字セットにマッピングして第1のサブコードを生成する指示を格納できる。
【0042】
メモリ103は、実行時にプロセッサ102が、第1のOTPに所定のオフセットを適用し、オフセット適用された第1のOTPを文字セットにマッピングして第2のサブコードを生成する指示を格納できる。
【0043】
メモリ103は、実行の際にプロセッサ102が、オフセット適用された第1のOTPに対して文字セットのサイズでmod演算を実行し、第1のOTPに対するmod演算の遂行結果を文字セットにマッピングして第2のサブコードを生成する指示を格納できる。
【0044】
メモリ103は、実行の際にプロセッサ102が、基本文字セットを獲得し、基本文字セットの要素をシャッフリング(shuffling)することで、文字セットを獲得する指示を格納できる。
【0045】
メモリ103は、実行時にプロセッサ102が、システムのすべてのユーザーに同一の第2のシードを獲得し、第2のシードを用いて第2のOTPを生成し、第2のOTPに対する基本文字セットの要素の個数のmod演算結果を用いて基本文字セットの各桁の要素を他の桁の要素とスワッピング(swapping)する指示を格納できる。
【0046】
一方、サーバ200は、通信モジュール201及びプロセッサ202を含むことができる。
【0047】
通信モジュール201は、要請によりシード、固有コード、及び文字セットに関する情報を他の電子装置に送信できる。さらに、通信モジュール201は、コードを含むコード確認要請を実行できる。
【0048】
プロセッサ202は、固有コードをユーザーに割り当てる。あるいは、プロセッサ202は、コード確認要請に対応してコードを生成できる。プロセッサ202は、生成されたコードをコード確認要請内のコードと比較することにより、コード確認要請が適合するか否かを判定できる。
【0049】
図3は、本発明の一実施形態によるコード生成方法を示すフローチャートである。
【0050】
ステップ310において、第1の電子装置100は、第1の固有コード及び各ユーザーに異なる第1のシードを獲得できる。第1のシードは、第1のユーザーにサーバ200により与えられるものである。一方、第1の固有コードは、ASCIIコードに基づいた文字列であって、アルファベットと数字と特殊文字の組み合わせであり得る。第1の固有コードは、所定の文字セットの要素から選択されたコードであり得る。例えば、サーバ200は、文字セットから固有のコードを生成するアルゴリズムを用いて第1のユーザーのための第1の固有コードを生成し、これを第1の電子装置100に送信できる。サーバ200は、他のユーザーのために固有コードを生成でき、ユーザーの各々に与えられる固有コードは相互に異なる。
【0051】
ステップ320において、第1の電子装置100は、第1のシード及び第1の時間情報を用いて第1のOTPを生成できる。第1のOTPは、例えば数字で構成され得る。
【0052】
ステップ330において、第1の電子装置100は、第1の固有コードを予め設定された文字セットにマッピングして第1の固有コードに対応する数字コードを生成できる。
【0053】
例えば、第1の電子装置100は、予め設定された文字セットで{‘0’,‘1’,‘2’,…,‘9’,‘A’,‘B’,…,‘Z’}を使用する場合を仮定する。さらに、第1の電子装置100は、第1の固有コード“AX83Z0”を獲得すると仮定する。一実施形態では、第1の電子装置100は、第1の固有コードの各桁の文字が文字セットで何番目のインデックスであるかを確認することによって、第1の固有コードの各桁の文字を数字コードに変換できる。例えば、第1の電子装置100は、第1のコードの最初の桁の文字である“A”が文字セットで11番目のインデックスであることを確認することによって、“A”の固有コードを“10”の数字コードに変換できる。これは、数字コードの開始点が0であることに起因する。同一の方式で、第1の電子装置100は、“X”が文字セットで34番目のインデックスであることを確認することによって、“X”の固有コードを“33”に変換できる。第1の電子装置100は、第1の固有コードである“AX83Z0”を{10,33,8,3,35,0}の数字コードに変換できる。
【0054】
ステップ340において、第1の電子装置100は、第1のOTP及び数字コードを合算できる。例えば、第1のOTPが“382901”である場合、第1のOTPの各桁数を変換された数字コードの各桁数と合算できる。すなわち、電子装置100は、{10,33,8,3,35,0}の数字コードを{3,8,2,9,0,1}の第1のOTPと合算し、{13,41,10,12,35,1}の合算結果を獲得することができる。一方、合算結果のうち、文字セットの要素の総個数、例えば36個を超える場合には、第1の電子装置100は、該当合算結果を文字セットの要素の総個数にmod演算した結果に置換できる。この場合、第1の電子装置100は、“41”を“41”に36のmod演算を遂行した結果である“5”に置換できる。それによって、第1の電子装置100について後述する。{13,5,10,12,35,1}の合算結果を獲得できる。本発明の他の実施形態では、合算結果の生成時にオフセットを適用でき、これについてより詳細に説明する。
【0055】
ステップ350において、第1の電子装置100は、合算結果を文字セットにマッピングして第1のサブコードを生成できる。例えば、第1の電子装置100は{13,5,10,12,35,1}の各数字をインデックスとして解析し、これに対応する文字を文字セットから獲得できる。すなわち、第1の電子装置100は、‘13’のインデックスに対応する“D”を第1のサブコードの最初の文字として獲得できる。電子装置100は、‘5’のインデックスに対応する“5”を第1のサブコードの2番目の文字として獲得できる。上記した方式により、第1の電子装置100は、“D5ACY1”の第1のサブコードを獲得できる。
【0056】
ステップ360において、第1の電子装置100は、第1のOTPを文字セットにマッピングして第2のサブコードを生成できる。例えば、第1の電子装置100は、{3,8,2,9,0,1}の第1のOTPの各桁の数字がインデックスであると解析し、各桁の数字に対応する第2のサブコードの文字の各桁を生成する。例えば、第1の電子装置100は、‘3’の数字に対応して‘3’の文字を獲得し、‘8’の数字に対応して‘8’の文字を獲得する。それによって、第1の電子装置100は、“382901”の第2のサブコードを獲得できる。本発明の他の実施形態では、数字の各桁ごとにオフセットを適用した結果を文字セットにマッピングして第2のサブコードを獲得でき、これに対してより詳細に後述する。
【0057】
ステップ370において、第1の電子装置100は、第1のサブコード及び第2のサブコードを含む第1のコードを生成できる。第1の電子装置100は、第1のサブコード及び第2のサブコードを連結して例えば“D5ACY1382901”の第1のコードを生成できる。上記したように、第1のコードの第1のサブコードである“D5ACY1”は動的かつランダムに生成されるOTP及び固有コードの合算によって設定されたことに、動的かつランダム性が保障され、同時に固有コードによる固有性が保証され得る。ただし、低い確率で合算結果が同一のコードが発生できるので、本発明の多様な実施形態による第1の電子装置100は第2のサブコードを連結させる(concatenate)ことで、固有コードである第1のコードを生成できる。
【0058】
図4は、本発明の一実施形態によるコード生成方法を示すフローチャートである。
【0059】
ステップ410において、第1の電子装置100は、第1の固有コード及びユーザーごとに異なる第1のシードを獲得できる。上記したように、第1の電子装置100は、サーバ200から第1の固有コード及び第1のシードを受信するか、あるいは他の電子装置でディスプレイされるQRコード(登録商標)を撮影し、それにより第1の固有コード及び第1のシードを受信することができる。第1のシードは、サーバにより第1のユーザーに割り当てられたOTP生成のためのシードであり得る。
【0060】
ステップ420において、第1の電子装置100は、1のシード及び第1の時間情報を用いて第1のOTPを生成できる。
【0061】
ステップ430において、第1の電子装置100は、第1の固有コードを文字セットにマッピングして第1の固有コードに対応する数字コードを生成できる。例えば、
図3の実施形態と同様に、第1の電子装置100は、“AX83Z0”の第1の固有コードを獲得でき、第1の時点で第1の時点に対応する第1の時間情報及び第1のシードを用いて“382901”の第1のOTPを生成できる。第1の電子装置100は、所定の{‘0’,‘1’,‘2’,…,‘9’,‘A’,‘B’,…,‘Z’}の文字セットに第1の固有コードをマッピングし、第1の固有コードである“AX83Z0”を{10,33,8,3,35,0}の数字コードに変換できる。
【0062】
ステップ440において、第1の電子装置100は、第1のOTP及び数字コードを合算できる。例えば、第1のOTPが“382901”である場合、第1のOTPの各桁数を変換された数字コードの各桁数と合算できる。すなわち、電子装置100は、{10,22,8,3,35,0}の数字コードを{3,8,2,9,0,1}の第1のOTPと合算し、{13,41,10,12,35,1}の合算結果を獲得できる。
【0063】
ステップ450において、第1の電子装置100は、合算結果にオフセットを適用できる。第1の電子装置100は、オフセットを例えば18に設定できる。第1の電子装置100は、合算結果の毎桁数の数字にオフセットである18を合算できる。その上、
図3と同様に、第1の電子装置は、オフセット適用された合算結果に文字セットのサイズをmod演算した結果を獲得できる。それによって、第1の電子装置100は、オフセット適用された合算結果である{31,23,28,30,17,19}を獲得できる。
【0064】
ステップ460において、第1の電子装置100は、オフセット適用された合算結果を文字セットにマッピングして第1のサブコードを生成できる。第1の電子装置100は、オフセット適用された合算結果である‘31’を文字セットでのインデックスとして解析し、31番目の文字である‘V’を獲得できる。第1の電子装置100は、‘23’,‘28’,‘30’,‘17’,‘19’を順次に文字に変換でき、それによって“VNSUHJ”の第1のサブコードを生成できる。
【0065】
ステップ470において、第1の電子装置100は、第1のOTPにオフセットを適用できる。それによって、{3,8,2,9,0,1}の第1のOTPの各数字にオフセット18を合算し、{21,26,20,27,18}のオフセットが適用された第1のOTPを生成できる。
【0066】
ステップ480において、第1の電子装置100は、オフセット適用された第1のOTPを文字セットにマッピングして第2のサブコードを生成できる。すなわち、第1の電子装置100は、オフセット適用された第1のOTPの{21,26,20,27,18}の各数字を文字セットでのインデックスとして解析し、第2のサブコードを生成できる。例えば、第1の電子装置100は、オフセット適用された第1のOTPの最初の数字である‘21’に基づき、文字セットでの21番目の文字である‘L’を獲得できる。上記した方式で、第1の電子装置100は、オフセット適用された第1のOTPの{21,26,20,27,18}から“LQKRIJ”の第2のサブコードを生成できる。
【0067】
ステップ490において、第1の電子装置100は、第1のサブコード及び第2サブコードを含む第1のコードを生成できる。第1の電子装置100は、第1のサブコード及び第2のサブコードを連結し、例えば“D5ACY1LQKRIJ”の第1のコードを生成できる。上記したように、第1のコードの第1のサブコードである“D5ACY1”は、動的かつランダムに生成されるOTP及び固有コードの合算により設定されることで、動的かつランダム性が保証されつつ、固有コードによる固有性が保証され得る。但し、低い確率で合算結果が同一であるコードが発生する可能性もあるので、本発明の多様な実施形態による第1の電子装置100は、第2のサブコードを連結することにより固有コードである第1のコードを生成できる。
【0068】
以下、上記したコード生成プロセスをアルゴリズムを通じて説明する。
-定義
-C:ASCIIコードで表現される相異なる文字を要素とする文字セット
与えられた文字セットをCとし、Cは、ASCIIコードで表現される異なる文字(アルファベットの大/小文字、特殊文字、数字)で構成される。例えば、Cが数字だけで構成される場合、C={‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’}であり、同一の数字が重複しない。また、数字と英文大文字で構成される場合、C={‘0’,…,‘9’,‘A’,…,‘Z’}である。同一の方法で与えられた文字セットCは、多様な形態で構成され得る。また、Cの要素を同一の集合内でシャッフリングできる。例えば、数字だけで構成される文字セットC={‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’}がシャッフリングされる場合、C={‘8’,‘0’,‘7’,‘3’,‘1’,‘9’,‘6’,‘2’,‘4’,‘5’}のようになり得る。
【0069】
-S:与えられた文字セットCの要素個数
【0070】
-C(n):n番目Cの要素(0≦n<Cの文字個数)
Cのn番目の要素をC(n)であると定義し、このとき、nは0≦n<Sである整数である。すなわち、nは、Cに含まれる要素のインデックスを意味する。数字のみで構成された文字セットC={‘8’,‘0’,‘7’,‘3’,‘1’,‘9’,‘6’,‘2’,‘4’,‘5’}である場合、0≦n<10であり、C(0)=‘8’、C(9)=‘5’である。
【0071】
-Index0f(c):与えられた文字cのC内のインデックス
与えられた文字セットC={‘8’,‘0’,‘7’,‘3’,‘1’,‘9’,‘6’,‘2’,‘4’,‘5’}である場合、Index0f(‘8’)=0、Index0f(‘5’)=9である。
【0072】
-U:Cに含まれる文字で構成される任意の生成されたユーザー固有IDを示す文字列
与えられた文字セットC={‘8’,‘0’,‘7’,‘3’,‘1’,‘9’,‘6’,‘2’,‘4’,‘5’}である場合、Uは‘0382’、‘7192’のように表現される。
【0073】
-U(n):Uのn番目の文字(0≦n<Uの文字個数)
与えられたU=‘0382’である場合、nは0≦n<4である整数であり、U(2)=‘8’、U(3)=‘2’である。
【0074】
-T:TOTPコード
例えば、ランダムな6桁のTOTPコードは、‘839023’、‘659921’である。
【0075】
-T(n):TOTPコード内のn番目に位置した数字(0≦n<TOTP桁数)
例えば、生成されたTOTPコードが‘839023’である場合、T(0)=‘8’、T(5)=‘3’である。
【0076】
-N:ランダムコードの長さ(N≧1)
【0078】
-num0f(c):ASCII文字数字cを数字に変換
【0079】
-アルゴリズム
プログラミング言語C++に類似した形態で記述する。
String generate_random_id(C,U,N,T)
{
String preId;
String postId;
Int offset=18;// 任意に指定
for(n=0;n<N;n++)
{
Int d=numOf(T(n));// T(n) ASCIIコードを数字に変換、‘3’→3,‘9’→9
Int x=IndexOf(U(n));
preId+=C((d+x+offset)%S);// 以前ステップで作られた文字に加える。
postId+=C((d+offset)%S);
}
return(preId+postId);//作られた2個の文字を加えて最終Rを作る。
}
【0080】
-シミュレーション
N=6,
C={‘0’,…,‘9’,‘A’,…,‘Z’}であり、
S=10+26=36
U=‘AX83Z0’であり、
T=‘382901’である場合、
0≦n<36,(0,…,35)
Index0f(U)={10,33,8,3,35,0}であり、
num0f(T)={3,8,2,9,0,1}であり、
各桁に対して演算を実行すると、
preld[0]=C((3+10+18)%36)=C(31%36)=C(31)=‘V’
preId[1]=C((8+33+18)%36)=C(59%36)=C(23)=‘N’
preId[2]=C((2+8+18)%36)=C(28%36)=C(28)=‘S’
preId[3]=C((9+3+18)%36)=C(30%36)=C(30)=‘U’
preId[4]=C((0+35+18)%36)=C(53%36)=C(17)=‘H’
preId[5]=C(1+0+18)%36)=C(19%36)=C(19)=‘J’であり、
postId[0]=C((3+18)%36)=C(21)=‘L’
postId[1]=C((8+18)%36)=C(26)=‘Q’
postId[2]=C((2+18)%36)=C(20)=‘K’
postId[3]=C((9+18)%36)=C(27)=‘R’
postId[4]=C((0+18)%36)=C(18)=‘I’
postId[5]=C((1+18)%36)=C(19)=‘J’であり、
R=generate_random_id(C,U,N,T)であり、R=‘VNSUHJ LQKRIJ’である。
【0081】
-シミュレーション2- 同一の時点で異なるIDである場合、
上記と同様にN=6、C={‘0’,…,‘9’,‘A’,…,‘Z’}、S=10+26=36に設定する。
その代わりにU=‘B05EFA’であり、
上記のようなT=‘382901’である場合、
0≦n<36,(0,…,35)
Index0f(U)={11,0,6,14,15,10}であり、
num0f(T)={3,8,2,9,0,1}であり、
各桁に対して演算を実行する場合、
preId[0]=C((3+11+18)%36)=C(32%36)=C(31)=‘W’
preId[1]=C((8+0+18)%36)=C(26%36)=C(26)=‘Q’
preId[2]=C((2+6+18)%36)=C(26%36)=C(26)=‘Q’
preId[3]=C((9+14+18)%36)=C(41%36)=C(5)=‘5’
preId[4]=C((0+15+18)%36)=C(33%36)=C(33)=‘X’
preId[5]=C(1+10+18)%36)=C(29%36)=C(29)=‘T’であり、
postId[0]=C((3+18)%36)=C(21)=‘L’
postId[1]=C((8+18)%36)=C(26)=‘Q’
postId[2]=C((2+18)%36)=C(20)=‘K’
postId[3]=C((9+18)%36)=C(27)=‘R’
postId[4]=C((0+18)%36)=C(18)=‘I’
postId[5]=C((1+18)%36)=C(19)=‘J’であり、
R=generat_random_id(C,U,N,T)であり、R=‘WQQ5XT LQKRIJ’である。
【0082】
したがって、同一の時点で同一のOTPが出ても異なるランダムコードは、相異なる結果を有する。
【0083】
図5は、本発明の一実施形態によるオフセット決定プロセスを示すフローチャートである。
【0084】
ステップ510において、第1の電子装置100は、すべてのユーザーに対して同一の第2のシードを獲得できる。ここで、第2のシードは、例えば時間ベースのワンタイムパスワードを生成するためのシード値であって、第1のシードとは異なり得る。ステップ520において、第1の電子装置100は、第2のシード及び第1の時間情報に基づいて第2のOTPを生成でき、ステップ530において、第2のOTPを用いて
図4で使用するオフセットを決定できる。例えば、第1の電子装置100は、第2のシードを用いて生成したオフセットに文字セットの要素の個数に対するmod演算の結果値でオフセットを設定できる。第2のシードは、第1のユーザーだけでなくシステムに加入したユーザー全部に同一であり、それによって第1の時点で生成されたオフセットは、すべてのユーザーに同一であり、生成されたコードの固有性が連続して保証され得る。
【0085】
図6は、本発明の一実施形態による文字セット決定方法を示すフローチャートである。
【0086】
ステップ610において、第1の電子装置100は、すべてのユーザーに同一の第2のシードを獲得できる。ここで、第2のシードは、例えば時間ベースのワンタイムパスワードを生成するためのシード値であって、第1のシードとは異なり得る。
【0087】
ステップ620において、第1の電子装置100は、第2のシード及び第1の時間情報を用いて第2のOTPを生成できる。ステップ630において、第1の電子装置100は、第2のOTPを用いて文字セットを決定できる。例えば、第1の電子装置100は、基本文字セットを最初に獲得でき、基本文字セットを第2のOTPに基づいて変形することによって、コード生成に使用する文字セットを決定できる。
【0088】
図7は、本発明の一実施形態による文字セット決定方法を示すフローチャートである。
【0089】
ステップ710において、第1の電子装置100は、基本文字セットを獲得できる。例えば、第1の電子装置100は、{‘0’,‘1’,‘2’,…,‘9’}の基本文字セットを獲得できる。基本文字セットの要素の個数は、10であり得る。
【0090】
ステップ720において、第1の電子装置100は、第2のシード及び第1の時間情報を用いて第2のOTPを生成できる。本発明の一実施形態では、第1の電子装置100は、hOTPアルゴリズムで第2のOTPを生成してもよい。例えば、第1の電子装置100は、123456の第2のOTPを生成すると仮定する。
【0091】
ステップ730において、第1の電子装置100は、第2のOTP及び文字セットのサイズをmod演算し、演算結果値を獲得できる。ステップ740において、第1の電子装置100は、演算結果値を用いて基本文字セットの2個の文字の位置をスワッピングできる。例えば、第1の電子装置100は、123456に対するmod演算結果である6を獲得できる。第1の電子装置100は、6の演算結果を文字セットのインデックスとして解析し、文字セットの6番目の文字を0番目の文字とスワッピングできる。
【0092】
ステップ750において、第1の電子装置100は、すべての文字に対して順次にスワッピングを実行し、基本文字セットをシャッフリングした文字セットを獲得できる。例えば、第1の電子装置100は、文字セットの1番目の文字に対して、OPT生成、mod演算、演算結果値をインデックスとして解析して1番目の文字とインデックスに対応する文字とスワッピングを実行して、上記したプロセスを2番目の文字乃至9番目の文字に対してすべて遂行できる。
【0093】
ステップ760において、第1の電子装置100は、シャッフリングした文字セットを用いて第1のコードを生成できる。
【0094】
上記したように、文字セットは、動的に変更でき、シードのみが共有される場合、すべてのユーザーに対して同一の文字セットが生成され、上記したように生成されたコードの固有性が連続され保証できる。
【0095】
以下、上記した文字セットシャッフリング方法のアルゴリズムを説明する。
1.基本文字セットC={‘0’,‘1’,‘3’,‘4’、‘5’,‘6’,‘7’,‘8’,‘9’}である。
2.グローバルキーを設定してこれをOTPのシードとして使用される。
3.文字セットのサイズSだけ次を反復してランダムな文字セットを作る。
1)C(n)の桁を変更するために、HOTPを一つ作り、集合サイズでmod計算する。
2)HOTPが123456である場合、文字セットのサイズである10でmod計算して6が得られる。
3)得られた6は、Cのインデックスを意味し、C[6]に該当する数字を現在変更しようとするC[0]番目の文字と桁を変え、すなわちスワッピングする。
4)1,2,3のステップを9回さらに反復してC[9]まで遂行する。
5)上記の計算が完了する場合、シャッフリングされた文字セットが出て、この集合を用いてランダムIDを生成できる。
【0096】
シミュレーション- 文字セットシャッフリング
文字セットC={0,1,2,3,4,5,6,7,8,9}であり、CのサイズS=10,0≦n<10である。
【0097】
各ステップで生成されるHOTPをSでモジューロした値を0とし、
0(0)=1111 2222%10,
0(1)=3333 4444%10,
0(2)=5555 6666%10,
0(3)=7777 8888%10,
0(4)=9999 0000%10,
0(5)=1111 2222%10,
0(6)=3333 4444%10、
0(7)=5555 6666%10,
0(8)=7777 8888%10,
0(9)=9999 0000%10であると仮定する。
【0098】
1)C[0]=0シャッフル
0[0]=1111 2222%10=2であるので、C[2]をC[0]の桁に移動させ、C[0]をC[2]に移動させてスワッピングする。したがって、文字セットはC={2,1,0,3,4,5,6,7,8,9}である。
2)C[1]=1シャッフル
0[1]=333 4444%10=4であるので、C[4]をC[1]の桁に移動させ、C[1]をC[4]に移動させてスワッピングする。したがって、文字セットはC={2,4,0,3,1,5,6,7,8,9}である。
3)C[2]=0シャッフル
0[2]=5555 6666%10=6であるので、C[6]をC[2]の桁に移動させ、C[2]をC[6]に移動させてスワッピングする。したがって、文字セットはC={2,4,6,3,1,5,0,7,8,9}である。
4)C[3]=1シャッフル
0[3]=7777 8888%10=8であるので、C[8]をC[3]の桁に移動させ、C[3]をC[8]に移動させてスワッピングする。したがって、文字セットはC={2,4,6,8,1,5,0,7,3,9}である。
5)C[4]=4シャッフル
0[4]=9999 0000%10=0であるので、C[0]をC[4]の桁に移動させ、C[4]をC[0]に移動させてスワッピングする。したがって、文字セットはC={1,4,6,8,2,5,0,7,3,9}である。
6)C[5]=5シャッフル
0[5]=1111 2222%10=2であるので、C[2]をC[5]の桁に移動させ、C[5]をC[2]に移動させてスワッピングする。したがって、文字セットはC={1,4,5,8,2,6,0,7,3,9}である。
7)C[6]=0 シャッフル
0[6]=3333 4444%10=4であるので、C[4]をC[6]の桁に移動させ、C[6]をC[4]に移動させてスワッピングする。したがって、文字セットはC={1,4,5,8,0,6,2,7,3,9}である。
8)C[7]=7シャッフル
0[7]=5555 6666%10=6であるので、C[6]をC[7]の桁に移動させ、C[7]をC[6]に移動させてスワッピングする。したがって、文字セットはC={1,4,5,8,0,6,7,2,3,9}である。
9)C[8]=3シャッフル
0[8]=7777 8888%10=8であるので、C[8]をC[8]の桁に移動させ、C[8]をC[8]に移動させてスワッピングする。したがって、文字セットはC={1,4,5,8,0,6,7,2,3,9}である。
10)C[9]=9シャッフル
0[9]=99990000%10=0であるので、C[0]をC[9]の桁に移動させ、C[9]をC[0]に移動させてスワッピングする。したがって、文字セットはC={9,4,5,8,0,6,7,2,3,1}である。
【0099】
したがって、シャッフリングされた文字セットは、C={‘9’,‘4’,‘5’,‘8’,‘0’,‘6’,‘7’,‘2’,‘3’,‘1’}であり、このシャッフリング文字セットを用いてランダムコードを一度生成するようになる。
【0100】
上記したように生成されたコードの固有性が保証される文字セットがシャッフリングされ得る。
【0101】
図8は、本発明の一実施形態によるスマートカード及びカードリーダーを示すブロック構成図である。
図8に示すように、スマートカード800は、プロセッサ810、メモリ820、及び通信回路830を含むことができる。スマートカード800は、一般的なクレジットカードと同一の材質とサイズであるプラスチックカードの表面自体に演算機能を有することができる。スマートカード800は、金融カードで実現するか、あるいはパスポート内にも挿入することができ、特定情報を利用して認証を遂行する分野では制限がないことは、当業者には容易に理解できることである。
【0102】
例えば、オペレーティングシステム(Chip Operating System:COS)がメモリ820に格納され得る。オペレーティングシステムは、メモリ820に格納されているアプレットを格納及び管理でき、アプレットから送受信されるデータをハードウェア端に送受信できる。メモリ820に格納されているアプレットは、java言語で構成される小さいアプリケーションプログラムを意味する。java言語は、インターネットベースの言語であるので、容量と速度の限界でプログラムを大きく作る必要がないので、小規模アニメーション、絵描き、天気変化表示、株価情報表示などの簡単な機能を処理する小さいプログラムを作って使用し、これを意味できる。例えば、アプレットは、メモリ820に格納されているセキュリティ情報から固有かつランダムなコードを出力できる。より詳しくは、アプレットは、格納されたセキュリティ情報を用いて上記したプロセスを通じて固有かつランダムなコードを出力するように設定できる。さらに、メモリ820は、ワンタイムパスワードを生成するための第1のシード、第1のユーザーに割り当てられた第1の固有コード及び文字セットを格納できる。
【0103】
プロセッサ810は、例えば、データライン811を介して生成されるコードをリーダー850に出力する。プロセッサ810は、データライン811を通じて受信された電力で駆動できる。他の実施形態において、プロセッサ810は、生成されたコードを通信回路830を通じてリーダー850の通信回路853に送信できる。通信回路830は、ブルートゥース(登録商標)、ジグビー、赤外線通信、可視光通信、NFC通信、Wi-Fiダイレクトなどの多様な通信方式に基づいてプロセッサ810から提供されるコードを通信回路853に送信できる。それにより、スマートカード800は、接触式又は非接触式で生成されたコードをカードリーダー850に送信できる。
【0104】
カードリーダー850に接触式又は非接触式で受信したコードは、プロセッサ851に提供される。プロセッサ851は、コードを生成できる。プロセッサ851は、生成したコードと受信されたコードとを比較することによって、受信されたコードが適合するか否かを判定できる。あるいは、カードリーダー850は、受信されたコードを管理サーバにフォワーディングできる。この場合、管理サーバは、コードを生成でき、フォワーディングされるコードと生成されるコードとを比較することによって、受信されたコードが適合するか否かを判定できる。
【0105】
図9は、本発明の一実施形態によるスマートカード及びリーダーの動作を示すフローチャートである。
【0106】
ステップ905において、スマートカード900は、リーダー901から電力を受信できる。スマートカード900は、リーダー901からデータライン又は電力ラインを介して電力を受信してもよく、あるいは無線で電力を受信してもよい。
【0107】
ステップ910において、スマートカード900は、リーダー901と第1の固有コード及び第1のシードを共有できる。割り当てられた第1の固有コードは、スマートカード900に予め格納され得る。リーダー901又は管理サーバにも第1の固有コードを予め格納され得る。第1のシードは、時間ベースのワンタイムパスワード(OTP)の生成のために第1のユーザーに割り当てられる。管理サーバは、第1のシードをスマートカード900に割り当て、これをスマートカード900に格納することができる。スマートカード900は、第1のシード及び第1の時間情報を用いて第1のOTPを生成できる。すなわち、スマートカード900は、第1の時点で、第1の時点に対応する第1の時間情報及び第1のシードを用いて第1のOTPを生成できる。さらに、スマートカード900は、第2の時点では、第2の時点に対応する第2の時間情報及び第1のシードを用いて第2のOTPを生成できる。スマートカード900は、時間の流れに従って動的にOTPを変更して生成してもよい。
【0108】
ステップ920において、スマートカード900は、第1のOTP及び第1の固有コードを用いて第1のコードを生成できる。スマートカード900が第1のOTP及び第1の固有コードを用いてランダムかつ固有の第1のコードを生成するプロセスについては詳細に説明したので、ここではその説明を省略する。第1のコードは、第1のOTP及び第1の固有コードをすべて利用して生成されるに従って、第1のOTPのランダム性及び動的な変更可能性と第1の固有コードの固有性が保証されることで、ランダムかつ固有であり得る。
【0109】
ステップ930において、リーダー901又は管理サーバは、第1のシード及び第1の時間情報を用いて第1のOTPを生成できる。リーダー901は、第1の時点で第1の時点に対応する第1の時間情報と第1のシードを用いてスマートカード900により生成されたものと同一の第1のOTPを生成できる。
【0110】
リーダー901は、第2の時点で第2の時点に対応する第2の時間情報と第1のシードを用いてスマートカード900が第2の時点で生成したものと同一の第2のOTPを生成できる。すなわち、リーダー901は、OTPを動的に変更しつつ生成できる。ステップ940において、リーダー901は、第1のOTP及び第1の固有コードを用いて第1のコードを生成できる。
【0111】
ステップ950において、リーダー901は、スマートカード900からコード確認要請を受信できる。すなわち、リーダー901は、スマートカード900により生成したコードを接触式又は非接触式で受信できる。
【0112】
ステップ960において、リーダー901は、コード確認要請内のコードがリーダー901により生成された第1のコードと同一であるか否かを判定できる。コード確認要請内のコードがリーダー901により生成された第1のコードと同一である場合には、ステップ980において、リーダー901は、コードが適合すると判定する。コード確認要請内のコードがリーダー901により生成された第1のコードと異なる場合には、ステップ970において、リーダー901は、コードが適合しないと判定する。
【0113】
図10は、本発明の一実施形態による電子装置1000及び開閉システム1001の動作を示すフローチャートである。開閉システムは、自動車のドア、又はセキュリティ通過が要求されるシステム等であって、多様な形態で実現することができる。
【0114】
ステップ1005において、電子装置1000は、開閉システム1001から電力を受信できる。電子装置1000は、開閉システム1001からデータライン又は電力ラインを通じて電力を受信してもよく、あるいは無線で電力を受信してもよい。
【0115】
ステップ1010において、電子装置1000は、第1のシード及び第1の時間情報を用いて第1のOTPを生成できる。ステップ1020において、電子装置1000は、第1のOTP及び第1の固有コードを用いて第1のコードを生成できる。電子装置1000は、第1のOTP及び第1の固有コードを用いてランダムかつ固有の第1のコードを生成するプロセスについては詳細に説明したので、ここでその詳細な説明を省略する。
【0116】
ステップ1030において、開閉システム1001又は管理サーバは、第1のシード及び第1の時間情報を用いて第1のOTPを生成できる。開閉システム1001は、第1の時点で第1の時点に対応する第1の時間情報と第1のシードを用いて電子装置1000により生成したものと同一の第1のOTPを生成できる。
【0117】
開閉システム1001は、第2の時点で第2の時点に対応する第2の時間情報と第1のシードを用いて電子装置1000により第2の時点で生成されたものと同一の第2のOTPを生成できる。
【0118】
ステップ1050において、開閉システム1001は、電子装置1000からコード確認要請を受信できる。すなわち、開閉システム1001は、電子装置1000により生成されたコードを接触式又は非接触式で受信できる。
【0119】
ステップ1060において、開閉システム1001は、コード確認要請内のコードが開閉システム1001により生成された第1のコードと同一であるか否かを判定する。コード確認要請内のコードが開閉システム1001により生成された第1のコードと同一である場合、ステップ1080において、開閉システム1001は、コードが適合すると判定できる。コード確認要請内のコードが開閉システム1001により生成された第1のコードと異なる場合、ステップ1070において、開閉システム1001は、コードが適合しないと判定できる。
【0120】
図11は、本発明の一実施形態によるマルチファクタ認証システムを説明するための概念図である。
【0121】
図11を参照すると、電子装置1100は、パスワードの入力のための画面1110を表示できる。パスワードの入力のための画面1110は、複数の数字を含むことができる。例えば、電子装置1100は、パスワード入力のための画面1110に“1”1111、“2”1112、“3”1113、“4”1114が連続して入力されることを検出できる。電子装置1100は、まず入力された“1”1111の固有コードを用いてコードである“SrDCC1040”を生成できる。さらに、“2”1112の固有コードを用いて“FQd3se4tT”のコードを生成し、“3”1113の固有コードを用いて“FrWwre0Te”のコードを生成し、“4”1114の固有コードを用いて“hwDYQzQキー”のコードを生成することができる。電子装置1100は、生成したコードの連結である“SrDCC1040FQd3se4tTFrWwre0TehwDYQzQ”を管理サーバ1101に送信できる。管理サーバ1101は、予め格納されている“1234”の各々の数字を用いるコードである“SrDCC1040FQd3se4tTFrWwre0TehwDYQzQ”を電子装置1100から受信されたコードと比較でき、その比較結果により、コードが適合するか否かを判定できる。それにより、ユーザーの記憶による“1234”の情報及びこれから生成されたコードを用いるマルチファクタ認証が可能である。
【0122】
図12は、本発明の一実施形態によるスマートカードによる認証プロセスを説明するための概念図である。
【0123】
図12に示すように、スマートカード1201は、セキュリティゲート1202に接触式又は非接触式で生成したコードを送信できる。スマートカード1201は、セキュリティゲート1202から有線又は無線で電力を受信してもよく、受信された電力を用いてアプレットを動作させ、コードを生成して出力してもよい。セキュリティゲート1202は、スマートカード1201から受信されたコード1203をセキュリティサーバ1210に送信できる。セキュリティサーバ1210は、コード1211を管理サーバ1230に送信できる。管理サーバ1230は、予めコードを生成し、受信されたコード1211と生成したコードとを比較できる。その比較結果、予め生成されたコードと受信されたコート1211が一致する場合、管理サーバ1230は、該当ユーザー識別子(ID)とパスワード関連情報1241をセキュリティサーバ1210に送信できる。セキュリティサーバ1210は、受信された該当ユーザー識別子とパスワード関連情報1241に基づいて開放命令1242をセキュリティゲート1202に送信できる。セキュリティゲート1202は、受信された開放命令1242に従ってドアを開放することができる。一方、管理サーバ1230の比較結果、予め生成されたコードと受信されたコード1211が一致しない場合、認証失敗メッセージをセキュリティサーバ1210に送信してもよく、この場合、セキュリティサーバ1210は、セキュリティゲート1202に閉鎖命令を送信してもよい。
【0124】
図13は、本発明の一実施形態によるシステムログイン過程を説明するための概念図である。
【0125】
電子装置1301は、スマートカードを挿入できる構造で実現できる。それにより、スマートカードは、電子装置1301から電力を受信してアプレットを実行し、アプレットの実行結果として生成されたコードを電子装置1301に出力する。電子装置1301は、スマートカードから受信されたコード(ランダムID)とユーザー名をともに表示できる。ユーザーは、これを確認してコンピュータのようなグループウェアログイン(groupware login)が可能な装置1310にユーザー名1311及び表示されたコード(例えば、6GHtY)1312をログインウィンドウで記載できる。グループウェアログインが可能な装置1310は、受信したユーザー名及びコード1313をグループウェアサーバ1320に送信し、グループウェアサーバ1320は、ユーザー名及びコード1321を管理サーバ1330にフォワーディングすることができる。
【0126】
管理サーバ1330は、コードを予め生成し、予め生成したコードと受信されたコードとを比較する。その比較結果、予め生成したコードと受信されたコードが同一である場合、管理サーバ1330は、ユーザー名及びパスワード関連情報1341をグループウェアサーバ1320に送信する。グループウェアサーバ1320は、受信された該当ユーザー識別子(ID)とパスワード関連情報1341に基づいてグループウェアログイン関連メッセージ1342をログインが可能な装置1310に送信できる。一方、管理サーバ1330の比較結果、予め生成したコードと受信されたコード1321が一致しない場合、認証失敗メッセージをグループウェアサーバ1320に送信する。この場合、グループウェアサーバ1320は、ログイン失敗メッセージを送信できる。一方、
図12及び
図13に示すように、一つのスマートカードを用いてオンライン/オフライン両方ともに認証を遂行することができる。
【0127】
図14は、本発明の一実施形態によるIoT(Internet of Things)環境における電子装置の動作を説明するための概念図である。
【0128】
電子装置1401又はスマートカード1402は、コード1403を生成してホームネットワーク制御ポイント1410に送信できる。電子装置1401又はスマートカード1402は、ホームネットワークの複数の電子装置1411乃至1419のうち少なくとも一つに対する制御信号をともに送信する。一方、制御ポイント1410は、コードを生成し、これを受信されたコード1403と比較する。その比較結果、受信されたコード1403と生成したコードが一致する場合、制御ポイント1410は、該当命令を実行する電子装置を制御できる。それにより、例えばユーザーの安全に直接関連したガスバルブ制御システム等に対する制御がセキュリティ保証環境で実行できる。
【0129】
一方、本発明は、認証が要求される分野ではどこでも適用することができる。例えば、本発明による商品券番号生成器は、上記したアルゴリズムを通じて固有かつランダムなコードを生成し、商品券のタイプごとに与えられ、認証システムとも共有できる。認証システムでは、商品券番号がオンライン使用システムを通じて受信される場合に、受信された商品券番号と予め共有にされた商品券番号を比較することによって認証を実行できる。上記したように、生成されたコードは、固有かつランダム性が保証されるにしたがって、他人により商品券番号を類推及び生成されることを防止することができる。
【0130】
以上、本発明の詳細な説明においては具体的な実施形態に関して説明したが、特許請求の範囲の記載及びこれと均等なものに基づいて定められる本発明の範囲及び精神を逸脱することなく、形式や細部の様々な変更が可能であることは、当該技術分野における通常の知識を持つ者には明らかである。