(57)【要約】【課題】本発明は、ランダムかつ固有のコードを生成する電子装置及び方法を提供する。【解決手段】本発明による電子装置は、通信モジュールと、ＯＴＰを生成するための第１のシード、第１のユーザーに割り当てられる第１の固有コード及び文字セットを格納するメモリと、プロセッサとを含み、プロセッサは、第１のシードを用いて第１のＯＴＰを生成し、第１のＯＴＰ及び第１の固有コードの演算結果を文字セットにマッピングして第１のサブコードを生成し、第１のＯＴＰを文字セットにマッピングして第２のサブコードを生成し、第１のサブコード及び第２のサブコードを用いてコードを生成し、生成されたコードを通信モジュールを通じて他の電子装置に送信するように設定される。【選択図】図８
2017017711.tif 000002
【特許請求の範囲】
【請求項１】
コードを生成する方法であって、
ワンタイムパスワード(ＯＴＰ)を生成するための第１のシード、第１のユーザーに割り当てられる第１の固有コード及び文字セットを獲得するステップと、
前記第１のシードを用いて第１のＯＴＰを生成するステップと、
前記第１のＯＴＰ及び第１の固有コードの演算結果を前記文字セットにマッピングして第１のサブコードを生成するステップと、
前記第１のＯＴＰを前記文字セットにマッピングして第２のサブコードを生成するステップと、
前記第１のサブコード及び前記第２のサブコードを用いて前記コードを生成するステップと、
を有することを特徴とする方法。
【請求項２】
前記第１のシードを用いて第１のＯＴＰを生成するステップは、
前記第１のシード及び第１の時点に対応する第１の時間情報を時間ベースのＯＴＰアルゴリズムに入力して前記第１のＯＴＰを生成することを特徴とする請求項１に記載の方法。
【請求項３】
前記第１のＯＴＰ及び第１の固有コードのオペレーション結果を前記文字セットにマッピングして第１のサブコードを生成するステップは、
前記文字セットと比較することにより前記第１の固有コードを数字コードに変換するステップと、
前記数字コードを前記第１のＯＴＰと合算するステップと、
前記合算結果を前記文字セットにマッピングして前記第１のサブコードを生成するステップと、を有することを特徴とする請求項１に記載の方法。
【請求項４】
前記合算結果を前記文字セットにマッピングして前記第１のサブコードを生成するステップは、
前記合算結果に対して前記文字セットのサイズとｍｏｄ演算を遂行するステップと、
前記合算結果に対するｍｏｄ演算の遂行結果を前記文字セットにマッピングして前記第１のサブコードを生成するステップと、を有することを特徴とする請求項３に記載の方法。
【請求項５】
前記合算結果を前記文字セットにマッピングして前記第１のサブコードを生成するステップは、
前記合算結果に所定のオフセットを適用するステップと、
前記オフセット適用された合算結果を前記文字セットにマッピングして前記第１のサブコードを生成するステップとを有することを特徴とする請求項３に記載の方法。
【請求項６】
前記オフセット適用された合算結果を前記文字セットにマッピングして前記第１のサブコードを生成するステップは、
前記オフセット適用された合算結果に対して前記文字セットのサイズとｍｏｄ演算を遂行するステップと、
前記合算結果に対するｍｏｄ演算遂行結果を前記文字セットにマッピングして前記第１のサブコードを生成するステップと、を有することを特徴とする請求項５に記載の方法。
【請求項７】
前記第１のＯＴＰを前記文字セットにマッピングして第２サブコードを生成するステップは、
前記第１のＯＴＰに前記所定のオフセットを適用するステップと、
前記オフセット適用された第１のＯＴＰを前記文字セットにマッピングして前記第２サブコードを生成するステップと、を有することを特徴とする請求項５に記載の方法。
【請求項８】
前記オフセット適用された第１のＯＴＰに対して前記文字セットのサイズとｍｏｄ演算を遂行するステップと、
前記第１のＯＴＰに対するｍｏｄ演算の遂行結果を前記文字セットにマッピングして前記第２サブコードを生成するステップと、を有することを特徴とする請求項７に記載の方法。
【請求項９】
前記文字セットを獲得するステップは、
基本文字セットを獲得するステップと、
前記基本文字セットの要素をシャッフリングすることにより前記文字セットを獲得するステップと、を有することを特徴とする請求項１に記載の方法。
【請求項１０】
前記基本文字セットの要素をシャッフリングするステップは、
システムのすべてのユーザーに同一の第２のシードを獲得するステップと、
前記第２のシードを用いて第２のＯＴＰを生成するステップと、
前記第２のＯＴＰに対する前記基本文字セットの要素の個数のｍｏｄ演算結果を用いて前記基本文字セットの各桁の要素を他の桁の要素とスワッピングするステップと、を有することを特徴とする請求項９に記載の方法。
【請求項１１】
通信モジュールと、
ワンタイムパスワード(ＯＴＰ)を生成するための第１のシード、第１のユーザーに割り当てられる第１の固有コード及び文字セットを格納するメモリと、
プロセッサと、を含み、
前記プロセッサは、前記第１のシードを用いて第１のＯＴＰを生成し、
前記第１のＯＴＰ及び第１の固有コードの演算結果を前記文字セットにマッピングして第１のサブコードを生成し、
前記第１のＯＴＰを前記文字セットにマッピングして第２のサブコードを生成し、
前記第１のサブコード及び前記第２のサブコードを用いてコードを生成し、
前記生成されたコードを前記通信モジュールを通じて他の電子装置に送信するように設定されることを特徴とする電子装置。
【請求項１２】
前記電子装置はスマートカードであり、前記他の電子装置は認証を遂行する電子装置であることを特徴とする請求項１１に記載の電子装置。
【請求項１３】
前記電子装置はスマートカードであり、前記他の電子装置は前記生成されたコードを中継する電子装置であり、
前記他の電子装置は、認証を遂行する電子装置に前記生成されたコードを中継することを特徴とする請求項１１に記載の電子装置。
【請求項１４】
前記電子装置はスマートカードであり、前記他の電子装置は開閉システムであることを特徴とする請求項１１に記載の電子装置。
【請求項１５】
前記開閉システムは、受信されたコードを用いて認証を遂行するか、あるいは認証を遂行する他の電子装置に前記受信されたコードに対する認証を要請するように設定されることを特徴とする請求項１４に記載の電子装置。
【請求項１６】
前記開閉システムは、前記認証結果又は前記他の電子装置から受信された認証結果に基づいてシステムの開閉を制御することを特徴とする請求項１５に記載の電子装置。
【請求項１７】
前記他の電子装置は、ホームネットワークを構成する電子装置であることを特徴とする請求項１１に記載の電子装置。
【請求項１８】
前記ホームネットワークを構成する電子装置は、認証結果に基づいて、前記ホームネットワークを構成する電子装置を制御し、あるいは前記ホームネットワークを構成するもう一つの電子装置を制御するように設定されることを特徴とする請求項１７に記載の電子装置。
【請求項１９】
認証を遂行する電子装置であって、
他の電子装置から第１のコードを受信する通信モジュールと、
ワンタイムパスワード(ＯＴＰ)を生成するための第１のシード、第１のユーザーに割り当てられる第１の固有コード及び文字セットを格納するメモリと、
プロセッサと、を含み、
前記プロセッサは、前記第１のシードを用いて第１のＯＴＰを生成し、
前記第１のＯＴＰ及び第１の固有コードの演算結果を前記文字セットにマッピングして第１のサブコードを生成し、
前記第１のＯＴＰを前記文字セットにマッピングして第２のサブコードを生成し、
前記第１のサブコード及び前記第２のサブコードを用いて第２のコードを生成し、
前記第２のコードと前記通信モジュールを通じて受信された前記第１のコードが一致する場合に認証を遂行し、
前記第２のコードと前記通信モジュールを通じて受信された前記第１のコードが一致しない場合には認証を遂行しないように設定されることを特徴とする電子装置。
【請求項２０】
前記認証を遂行する電子装置は、スマートカードで前記第１のコードを生成するための電力を送信し、
前記通信モジュールは、スマートカードから前記第１のコードを受信することを特徴とする請求項１９に記載の電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はランダムかつ固有のコードを生成する電子装置及び方法に関するもので、より詳細には時間ベースのワンタイムパスワードを用いてランダムかつ固有のコードを生成する電子装置及び方法に関する。
【背景技術】
【０００２】
オペレーティングシステム及び他のすべてのコンピュータアプリケーションシステムは、アクセスするユーザーの区分のためにＩＤをユニークに生成して各ユーザーに割り当てる。ＩＤは、容易に露出又は流出される可能性があって、これを補完するためにユーザーが容易に記憶できるパスワードを生成してＩＤとともにマッピングして管理できる。それによって、ユーザーのＩＤが露出された場合に比べてパスワードをともに利用する場合には、セキュリティが一層向上できる。
【０００３】
しかしながら、ユーザーは、一般的に記憶しやすいパスワード、例えば‘１２３４５６７８’のように単純な形態を設定する場合が一般的である。それにより、他人又はハッカーが容易にパスワードを類推できる弱点が存在する。複雑なパスワード(例えば、ａＢ３Ｐｅ＃２８ｄｗｑＰ)が設定される場合であっても、ハッカーは、発達したハッキング技術、例えばキーロガー(key  logger)のようなハッキングツールを用いてＩＤとパスワードを容易に盗み出すことができる。これを補完するために、システムは、ユーザーに複雑なパスワード(一定の長さ、英文字の大/小文字、特殊文字、数字を混合)を周期的に変更して使用するように要求する。実際にユーザーがこのような複雑なパスワードを記憶することは非常に難しく、実際のユーザーは、自分のＩＤとパスワードをシステム別にメモして使用している。
【０００４】
さらに、単純ＩＤ/パスワードベースのみでユーザーを区分することは、ハッキング技術の発達により限界を有するので、これを解決するためにユーザーが記憶する情報(ＩＤ/パスワード)とユーザーのみが持っていること(例えば、ワンタイムパスワード(ＯＴＰ)生成器、ＯＴＰトークン、セキュリティカードなど)をともに使用するようにし、このようなユーザー認証方法を２ファクタ認証という。
【０００５】
すなわち、ユーザーが認知(記憶)しているＩＤ/パスワードをユーザーが有しているもの(例えば、ＯＴＰトークン、セキュリティカードなど)とともに使用するようにする。これは、ユーザーが認知(記憶)しているＩＤ及びパスワードとユーザーが持っているものを用いて認証を実行するため、２ファクタ認証と称される。さらに、ユーザー認証に多様な要素、特にユーザー生体情報(指紋認識、虹彩、音声認識など)をともに使用することは、マルチファクタ(multi-factor)認証と称する。
【０００６】
実際に、システムにアクセスするユーザー区分のためにはＩＤのみが必要であるが、セキュリティ上、これを補完するために複雑なパスワードとマルチファクタ(multi  factor)をともにユーザーに要求する。これは、ユーザーのためのものでなく、システムのための形態でユーザー認証技術が研究/開発されていることを意味すると見なされる。
【０００７】
ワンタイムコードは、ＡＳＣＩＩコードで構成された文字列であって、アルファベットと数字(alphanumeric){‘０’，…，‘９’，…，‘Ａ’，…，‘Ｚ’，‘ａ’，…，‘ｚ’}と特殊文字(displayable  ASCII  character){‘！’，‘＠’，…}との組み合わせで構成される。これは、システムに登録されている実際のユーザーＩＤを意味することでなく、一定長さの任意に生成されるＩＤであり、与えられた文字セットに含まれた文字で構成される文字列を意味する。
【０００８】
例えば、与えられた文字セットが{‘０’，…，‘９’，‘Ａ’，…，‘Ｚ’}であり、長さが６である場合、ユーザーに割り当てられたランダムＩＤは、‘Ａ０１２ＺＥ’、‘ＫＡＢＦＺＥ’、‘０１９Ｄ３Ｆ’、…である。このとき、ユーザーに割り当てられたワンタイムコードは固有でなければならない、すなわち、与えられた文字セットを用いて生成できる最大コードは、３６(アルファベット大文字の個数(２６)＋数字(１０))＾６(ランダムＩＤ長さ)＝２，１７６，７８２，３３６個である。
【０００９】
このようなコードを周期的に異なる文字組み合わせで生成するためにＴＯＴＰ(ＲＦＣ６２３８)を使用し、生成されたＴＯＴＰの各桁を与えられた文字セットのインデックスとして使用することによって、固有かつランダムなコードを生成できる。しかしながら、ＯＴＰは、アルゴリズム的に同一の時点で他のシードを使用する場合、同一の結果が得られる。すなわち、衝突が発生する可能性がある。その結果、ＴＯＴＰコードのみでは同一の時点でＩＤの要件である固有性を満たすことができないので、ＩＤとして使用できない。
【００１０】
従来のユーザー区分技術は、ＩＤとパスワードが固定した方式に基づいて動作し、それによりユーザーＩＤ及びパスワードが露出するという問題があった。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】韓国特許出願公開第１０−２０１１−００３９９４７号
【発明の概要】
【発明が解決しようとする課題】
【００１２】
したがって、上記した従来技術の問題点を解決するために、本発明の目的は、ランダムかつ固有のコードを生成する電子装置及び方法を提供することにある。
【課題を解決するための手段】
【００１３】
上記のような目的を達成するために、本発明の一態様によれば、コードを生成する方法が提供される。その方法は、ワンタイムパスワード(ＯＴＰ)を生成するための第１のシード、第１のユーザーに割り当てられる第１の固有コード及び文字セットを獲得するステップと、第１のシードを用いて第１のＯＴＰを生成するステップと、第１のＯＴＰ及び第１の固有コードの演算結果を文字セットにマッピングして第１のサブコードを生成するステップと、第１のＯＴＰを文字セットにマッピングして第２サブコードを生成するステップと、第１のサブコード及び第２のサブコードを用いてコードを生成するステップとを有する。
【００１４】
本発明の他の態様によれば、コードを生成する電子装置が提供される。その電子装置は、メモリと、上記メモリに電気的に接続されるプロセッサとを含み、メモリは、実行時にプロセッサが、ワンタイムパスワードを生成するための第１のシード、第１のユーザーに割り当てられる第１の固有コード及び文字セットを獲得し、第１のシードを用いて第１のＯＴＰを生成し、第１のＯＴＰ及び第１の固有コードの演算結果を文字セットにマッピングして第１のサブコードを生成し、第１のＯＴＰを文字セットにマッピングして第２のサブコードを生成し、第１のサブコード及び第２のサブコードを用いてコードを生成する指示(instruction)を格納する。
【００１５】
本発明の他の態様によれば、通信モジュールと、ＯＴＰを生成するための第１のシード、第１のユーザーに割り当てられる第１の固有コード及び文字セットを格納するメモリと、プロセッサとを含み、プロセッサは、第１のシードを用いて第１のＯＴＰを生成し、第１のＯＴＰ及び第１の固有コードの演算結果を文字セットにマッピングして第１のサブコードを生成し、第１のＯＴＰを文字セットにマッピングして第２のサブコードを生成し、第１のサブコード及び第２のサブコードを用いてコードを生成し、生成されたコードを通信モジュールを通じて他の電子装置に送信するように設定される。
【００１６】
さらに、本発明の他の態様によれば、認証を遂行する電子装置が提供される。その電子装置は、他の電子装置から第１のコードを受信する通信モジュールと、ＯＴＰを生成するための第１のシード、第１のユーザーに割り当てられる第１の固有コード及び文字セットを格納するメモリと、プロセッサとを含み、プロセッサは、第１のシードを用いて第１のＯＴＰを生成し、第１のＯＴＰ及び第１の固有コードの演算結果を文字セットにマッピングして第１のサブコードを生成し、第１のＯＴＰを文字セットにマッピングして第２のサブコードを生成し、第１のサブコード及び第２のサブコードを用いて第２のコードを生成し、第２のコードと通信モジュールを通じて受信された第１のコードが一致する場合に認証を遂行し、第２コードと通信モジュールを通じて受信された第１のコードが一致しない場合には認証を遂行しないように設定される。
【発明の効果】
【００１７】
本発明は、ランダムかつ固有のコードを生成する電子装置及び方法が提供される。生成されたランダムかつ固有のコードは、システムでユーザーを区分するためのＩＤ、電子商取引のための入力コード、文化商品券のような貨幣代用印刷物の識別コードなどの多様な技術分野で使用することができる。特に、本発明の多様な実施形態による電子装置及び方法は、ランダムかつ固有のコードを時間に従って動的に生成でき、それによってコードが流出される可能性が顕著に低下することができる。
【００１８】
本発明による実施形態の上記及び他の態様、特徴、及び利点は、添付の図面と共に述べる以下の詳細な説明から、一層明らかになるはずである。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態による固有コードの生成方法を示すフローチャートである。
【図２】本発明の一実施形態によるコードを生成する電子装置を示すブロック構成図である。
【図３】本発明の一実施形態によるコード生成方法を示すフローチャートである。
【図４】本発明の一実施形態によるコード生成方法を示すフローチャートである。
【図５】本発明の一実施形態によるオフセット決定プロセスを示すフローチャートである。
【図６】本発明の一実施形態による文字セット決定方法を示すフローチャートである。
【図７】本発明の一実施形態による文字セット決定方法を示すフローチャートである。
【図８】本発明の一実施形態によるスマートカード及びカードリーダー(reader)を示すブロック構成図である。
【図９】本発明の一実施形態によるスマートカード及びリーダーの動作を示すフローチャートである。
【図１０】本発明の一実施形態による電子装置及び開閉システムの動作を示すフローチャートである。
【図１１】本発明の一実施形態によるマルチファクタ認証システムを説明するための概念図である。
【図１２】本発明の一実施形態によるスマートカードによる認証プロセスを説明するための概念図である。
【図１３】本発明の一実施形態によるシステムログインプロセスを説明するための概念図である。
【図１４】本発明の一実施形態によるＩｏＴ環境における電子装置の動作を説明するための概念図である。
【発明を実施するための形態】
【００２０】
以下、本発明の望ましい実施形態を添付の図面を参照して詳細に説明する。
【００２１】
したがって、本発明の実施形態は、説明のみを目的とし、添付の特許請求の範囲及びそれと均等なものに基づいて定義される発明を制限するものではないことは、当業者には明らかである。図面において、同一の構成要素に対してはできるだけ同一の参照符号及び参照番号を付して説明する。
【００２２】
図１は、本発明の一実施形態による固有コードの生成方法を示すフローチャートである。
【００２３】
図１による実施形態において、第１の電子装置１００は、固有コードを生成する電子装置であって、サーバ２００は、固有コードを生成し、検証要請された固有コードを検証する電子装置であり得る。サーバ２００は、固有コードを使用するサービスを管理する電子装置であり得る。例えば、サーバ２００は、Ｗｅｂサービスを管理する電子装置であって、ユーザーＩＤ及びこれに対応するログイン情報を管理する。
【００２４】
ステップ１１０において、第１の電子装置１００は、サーバ２００と第１の固有コード及び第１のシードを共有できる。一実施形態において、サーバ２００は、第１の電子装置１００を使用する第１のユーザーをシステムに加入させる場合に、第１の電子装置１００に第１の固有コード及び第１のシードを送信できる。または、サーバ２００は、第１の固有コード及び第１のシードをディスプレイできる情報を他の電子装置に送信できる。例えば、第１のユーザーは、第１の電子装置１００又は他の電子装置を通じてサーバ２００に加入を要請できる。サーバ２００は、加入要請に対応して第１のユーザーに第１の固有コードを割り当てる。サーバ２００は、第１の固有コードを第１の電子装置１００又は他の電子装置に送信できる。また、サーバ２００は、第１のユーザーに第１のシードを与えることができる。第１のシードは、時間ベースのワンタイムパスワードの生成のために第１のユーザーに与えられる。サーバ２００は、第１のシードを第１の電子装置１００又は他の電子装置に送信できる。一実施形態において、サーバ２００は、第１の固有コード及び第１のシードをＱＲコード(登録商標)イメージを第１の電子装置１００又は他の電子装置に送信できる。第１のユーザーは、他の電子装置に表示されるＱＲコード(登録商標)を第１の電子装置１００で撮影でき、それによって第１の電子装置１００は、第１の固有コード及び第１のシードを獲得できる。
【００２５】
ステップ１２０において、第１の電子装置１００は、第１のシード及び第１の時間情報を用いて第１のＯＴＰを生成できる。すなわち、第１の電子装置１００は、第１の時点で、第１の時点に対応する第１の時間情報及び第１のシードを用いて第１のＯＴＰを生成できる。さらに、第１の電子装置１００は、第２の時点で、第２の時点に対応する第２の時間情報及び第１のシードを用いて第２のＯＴＰを生成できる。第１の電子装置１００は、時間のフローに従って動的にＯＴＰを変更して生成できる。
【００２６】
ステップ１３０において、第１の電子装置１００は、第１のＯＴＰ及び第１の固有コードを用いて第１のコードを生成できる。第１の電子装置１００が第１のＯＴＰ及び第１の固有コードを用いてランダムかつ固有の第１のコードを生成するプロセスに対して、より詳細に後述する。第１のコードは、第１のＯＴＰ及び第１の固有コード全部を用いて生成されるに従って、第１のＯＴＰのランダム性及び動的な変更可能性と第１の固有コードの固有性を保証され、ランダムかつ固有であり得る。第１のコードのランダム性及び固有性に対して一層詳細に後述する。
【００２７】
ステップ１４０において、サーバ２００は、第１のシード及び第１の時間情報を用いて第１のＯＴＰを生成できる。サーバ２００は、第１の時点で第１の時点に対応する第１の時間情報と第１のシードを用いて第１の電子装置１００により生成されるものと同一の第１のＯＴＰを生成できる。サーバ２００は、第２の時点で第２の時点に対応する第２の時間情報と第１のシードを用いて第１の電子装置１００が第２の時点で生成するもとと同一の第２のＯＴＰを生成できる。すなわち、サーバ２００は、ＯＴＰを動的に変更しつつ生成できる。
【００２８】
ステップ１５０において、サーバ２００は、第１のＯＴＰ及び第１の固有コードを用いて第１のコードを生成できる。サーバ２００が第１のＯＴＰ及び第１の固有コードを用いて第１のコードを生成する方式は、第１の電子装置１００が第１のＯＴＰ及び第１の固有コードを用いて第１のコードを生成する方式と同一であり得る。それによって、サーバ２００により生成される第１のコードと第１の電子装置１００により生成される第１のコードは、同一であり得る。
【００２９】
ステップ１６０において、サーバ２００は、コード確認要請を受信できる。サーバ２００は、第１のユーザーが操作する電子装置、例えば第１の電子装置１００又は他の電子装置からコード確認要請を受信することができる。
【００３０】
ステップ１７０において、サーバ２００は、コード確認要請内のコードがサーバ２００により生成された第１のコードと同一であるか否かを判定できる。コード確認要請内のコードがサーバ２００により生成された第１のコードと同一である場合に、ステップ１８０において、サーバ２００は、コードが適合すると判定できる。コード確認要請内のコードがサーバ２００により生成された第１のコードと異なる場合に、ステップ１９０において、サーバ２００は、コードが適合しないと判定できる。サーバ２００は、コードが適合するか否かによって、ユーザーログイン又は電子商取引決裁などの追加サービスを遂行するか、あるいは遂行しないことができる。
【００３１】
図２は、本発明の一実施形態によるコードを生成する電子装置を示すブロック構成図である。
【００３２】
電子装置１００は、撮影モジュール１０１、プロセッサ１０２、及びメモリ１０３を含むことができる。
【００３３】
撮影モジュール１０１は、外部の景観を撮影するモジュールであって、例えばプロセッサ１０２は、撮影モジュール１０１を通じて獲得されるイメージを使用し、シード、固有コード、及び文字セットの情報を獲得できる。
【００３４】
プロセッサ１０２は、ＣＰＵ、電子装置１００の制御のための制御プログラムが格納されたＲＯＭ、及びディスプレイ装置１００の外部から入力される信号又はデータを記憶するか、あるいはディスプレイ装置１００で遂行される作業のための記憶領域として使用されるＲＡＭを含むことができる。ＣＰＵは、シングルコア、デュアルコア、トリプルコア、又はクアッドコアを含むことができる。ＣＰＵ、ＲＯＭ、及びＲＡＭは、内部バスを通じて相互に連結され得る。
【００３５】
メモリ１０３は、上記のＲＯＭ及びＲＡＭを両方とも含み、コードを生成するためのプログラム又はアルゴリズム、シード、固有コード、及び文字セットに関する情報を格納することができる。
【００３６】
メモリ１０３は、実行の際にプロセッサ１０２が、ワンタイムパスワードを生成するための第１のシード、第１のユーザーに割り当てられる第１の固有コード及び文字セットを獲得し、第１のシードを用いて第１のＯＴＰを生成し、第１のＯＴＰ及び第１の固有コードの演算結果を文字セットにマッピングして第１のサブコードを生成し、第１のＯＴＰを文字セットにマッピングして第２のサブコードを生成し、第１のサブコード及び第２のサブコードを用いてコードを生成する指示を格納することができる。
【００３７】
メモリ１０３は、実行時にプロセッサ１０２が、第１のシード及び第１の時点に対応する第１の時間情報を時間ベースのワンタイムパスワードアルゴリズムに入力し、第１のＯＴＰを生成する指示を格納できる。
【００３８】
メモリ１０３は、実行の際にプロセッサ１０２が、文字セットと比較することによって、第１の固有コードを数字コードに変換し、数字コードを第１のＯＴＰと合算し、その合算結果を文字セットにマッピングして第１のサブコードを生成する指示を格納することができる。
【００３９】
メモリ１０３は、実行の際にプロセッサ１０２が、その合算結果に対して文字セットのサイズでｍｏｄ演算を実行し、合算結果に対するｍｏｄ演算の実行結果を文字セットにマッピングして第１のサブコードを生成する指示を格納することができる。
【００４０】
メモリ１０３は、実行の際にプロセッサ１０２が、合算結果に予め設定されたオフセットを適用し、オフセットが適用された合算結果を文字セットにマッピングして第１のサブコードを生成する指示を格納することができる。
【００４１】
メモリ１０３は、実行の際にプロセッサ１０２が、オフセットが適用された合算結果に対して文字セットのサイズでｍｏｄ演算を実行し、その合算結果に対するｍｏｄ演算の実行結果を文字セットにマッピングして第１のサブコードを生成する指示を格納できる。
【００４２】
メモリ１０３は、実行時にプロセッサ１０２が、第１のＯＴＰに所定のオフセットを適用し、オフセット適用された第１のＯＴＰを文字セットにマッピングして第２のサブコードを生成する指示を格納できる。
【００４３】
メモリ１０３は、実行の際にプロセッサ１０２が、オフセット適用された第１のＯＴＰに対して文字セットのサイズでｍｏｄ演算を実行し、第１のＯＴＰに対するｍｏｄ演算の遂行結果を文字セットにマッピングして第２のサブコードを生成する指示を格納できる。
【００４４】
メモリ１０３は、実行の際にプロセッサ１０２が、基本文字セットを獲得し、基本文字セットの要素をシャッフリング(shuffling)することで、文字セットを獲得する指示を格納できる。
【００４５】
メモリ１０３は、実行時にプロセッサ１０２が、システムのすべてのユーザーに同一の第２のシードを獲得し、第２のシードを用いて第２のＯＴＰを生成し、第２のＯＴＰに対する基本文字セットの要素の個数のｍｏｄ演算結果を用いて基本文字セットの各桁の要素を他の桁の要素とスワッピング(swapping)する指示を格納できる。
【００４６】
一方、サーバ２００は、通信モジュール２０１及びプロセッサ２０２を含むことができる。
【００４７】
通信モジュール２０１は、要請によりシード、固有コード、及び文字セットに関する情報を他の電子装置に送信できる。さらに、通信モジュール２０１は、コードを含むコード確認要請を実行できる。
【００４８】
プロセッサ２０２は、固有コードをユーザーに割り当てる。あるいは、プロセッサ２０２は、コード確認要請に対応してコードを生成できる。プロセッサ２０２は、生成されたコードをコード確認要請内のコードと比較することにより、コード確認要請が適合するか否かを判定できる。
【００４９】
図３は、本発明の一実施形態によるコード生成方法を示すフローチャートである。
【００５０】
ステップ３１０において、第１の電子装置１００は、第１の固有コード及び各ユーザーに異なる第１のシードを獲得できる。第１のシードは、第１のユーザーにサーバ２００により与えられるものである。一方、第１の固有コードは、ＡＳＣＩＩコードに基づいた文字列であって、アルファベットと数字と特殊文字の組み合わせであり得る。第１の固有コードは、所定の文字セットの要素から選択されたコードであり得る。例えば、サーバ２００は、文字セットから固有のコードを生成するアルゴリズムを用いて第１のユーザーのための第１の固有コードを生成し、これを第１の電子装置１００に送信できる。サーバ２００は、他のユーザーのために固有コードを生成でき、ユーザーの各々に与えられる固有コードは相互に異なる。
【００５１】
ステップ３２０において、第１の電子装置１００は、第１のシード及び第１の時間情報を用いて第１のＯＴＰを生成できる。第１のＯＴＰは、例えば数字で構成され得る。
【００５２】
ステップ３３０において、第１の電子装置１００は、第１の固有コードを予め設定された文字セットにマッピングして第１の固有コードに対応する数字コードを生成できる。
【００５３】
例えば、第１の電子装置１００は、予め設定された文字セットで{‘０’，‘１’，‘２’，…，‘９’，‘Ａ’，‘Ｂ’，…，‘Ｚ’}を使用する場合を仮定する。さらに、第１の電子装置１００は、第１の固有コード“ＡＸ８３Ｚ０”を獲得すると仮定する。一実施形態では、第１の電子装置１００は、第１の固有コードの各桁の文字が文字セットで何番目のインデックスであるかを確認することによって、第１の固有コードの各桁の文字を数字コードに変換できる。例えば、第１の電子装置１００は、第１のコードの最初の桁の文字である“Ａ”が文字セットで１１番目のインデックスであることを確認することによって、“Ａ”の固有コードを“１０”の数字コードに変換できる。これは、数字コードの開始点が０であることに起因する。同一の方式で、第１の電子装置１００は、“Ｘ”が文字セットで３４番目のインデックスであることを確認することによって、“Ｘ”の固有コードを“３３”に変換できる。第１の電子装置１００は、第１の固有コードである“ＡＸ８３Ｚ０”を{１０，３３，８，３，３５，０}の数字コードに変換できる。
【００５４】
ステップ３４０において、第１の電子装置１００は、第１のＯＴＰ及び数字コードを合算できる。例えば、第１のＯＴＰが“３８２９０１”である場合、第１のＯＴＰの各桁数を変換された数字コードの各桁数と合算できる。すなわち、電子装置１００は、{１０，３３，８，３，３５，０}の数字コードを{３，８，２，９，０，１}の第１のＯＴＰと合算し、{１３，４１，１０，１２，３５，１}の合算結果を獲得することができる。一方、合算結果のうち、文字セットの要素の総個数、例えば３６個を超える場合には、第１の電子装置１００は、該当合算結果を文字セットの要素の総個数にｍｏｄ演算した結果に置換できる。この場合、第１の電子装置１００は、“４１”を“４１”に３６のｍｏｄ演算を遂行した結果である“５”に置換できる。それによって、第１の電子装置１００について後述する。{１３，５，１０，１２，３５，１}の合算結果を獲得できる。本発明の他の実施形態では、合算結果の生成時にオフセットを適用でき、これについてより詳細に説明する。
【００５５】
ステップ３５０において、第１の電子装置１００は、合算結果を文字セットにマッピングして第１のサブコードを生成できる。例えば、第１の電子装置１００は{１３，５，１０，１２，３５，１}の各数字をインデックスとして解析し、これに対応する文字を文字セットから獲得できる。すなわち、第１の電子装置１００は、‘１３’のインデックスに対応する“Ｄ”を第１のサブコードの最初の文字として獲得できる。電子装置１００は、‘５’のインデックスに対応する“５”を第１のサブコードの２番目の文字として獲得できる。上記した方式により、第１の電子装置１００は、“Ｄ５ＡＣＹ１”の第１のサブコードを獲得できる。
【００５６】
ステップ３６０において、第１の電子装置１００は、第１のＯＴＰを文字セットにマッピングして第２のサブコードを生成できる。例えば、第１の電子装置１００は、{３，８，２，９，０，１}の第１のＯＴＰの各桁の数字がインデックスであると解析し、各桁の数字に対応する第２のサブコードの文字の各桁を生成する。例えば、第１の電子装置１００は、‘３’の数字に対応して‘３’の文字を獲得し、‘８’の数字に対応して‘８’の文字を獲得する。それによって、第１の電子装置１００は、“３８２９０１”の第２のサブコードを獲得できる。本発明の他の実施形態では、数字の各桁ごとにオフセットを適用した結果を文字セットにマッピングして第２のサブコードを獲得でき、これに対してより詳細に後述する。
【００５７】
ステップ３７０において、第１の電子装置１００は、第１のサブコード及び第２のサブコードを含む第１のコードを生成できる。第１の電子装置１００は、第１のサブコード及び第２のサブコードを連結して例えば“Ｄ５ＡＣＹ１３８２９０１”の第１のコードを生成できる。上記したように、第１のコードの第１のサブコードである“Ｄ５ＡＣＹ１”は動的かつランダムに生成されるＯＴＰ及び固有コードの合算によって設定されたことに、動的かつランダム性が保障され、同時に固有コードによる固有性が保証され得る。ただし、低い確率で合算結果が同一のコードが発生できるので、本発明の多様な実施形態による第１の電子装置１００は第２のサブコードを連結させる(concatenate)ことで、固有コードである第１のコードを生成できる。
【００５８】
図４は、本発明の一実施形態によるコード生成方法を示すフローチャートである。
【００５９】
ステップ４１０において、第１の電子装置１００は、第１の固有コード及びユーザーごとに異なる第１のシードを獲得できる。上記したように、第１の電子装置１００は、サーバ２００から第１の固有コード及び第１のシードを受信するか、あるいは他の電子装置でディスプレイされるＱＲコード(登録商標)を撮影し、それにより第１の固有コード及び第１のシードを受信することができる。第１のシードは、サーバにより第１のユーザーに割り当てられたＯＴＰ生成のためのシードであり得る。
【００６０】
ステップ４２０において、第１の電子装置１００は、１のシード及び第１の時間情報を用いて第１のＯＴＰを生成できる。
【００６１】
ステップ４３０において、第１の電子装置１００は、第１の固有コードを文字セットにマッピングして第１の固有コードに対応する数字コードを生成できる。例えば、図３の実施形態と同様に、第１の電子装置１００は、“ＡＸ８３Ｚ０”の第１の固有コードを獲得でき、第１の時点で第１の時点に対応する第１の時間情報及び第１のシードを用いて“３８２９０１”の第１のＯＴＰを生成できる。第１の電子装置１００は、所定の{‘０’，‘１’，‘２’，…，‘９’，‘Ａ’，‘Ｂ’，…，‘Ｚ’}の文字セットに第１の固有コードをマッピングし、第１の固有コードである“ＡＸ８３Ｚ０”を{１０，３３，８，３，３５，０}の数字コードに変換できる。
【００６２】
ステップ４４０において、第１の電子装置１００は、第１のＯＴＰ及び数字コードを合算できる。例えば、第１のＯＴＰが“３８２９０１”である場合、第１のＯＴＰの各桁数を変換された数字コードの各桁数と合算できる。すなわち、電子装置１００は、{１０，２２，８，３，３５，０}の数字コードを{３，８，２，９，０，１}の第１のＯＴＰと合算し、{１３，４１，１０，１２，３５，１}の合算結果を獲得できる。
【００６３】
ステップ４５０において、第１の電子装置１００は、合算結果にオフセットを適用できる。第１の電子装置１００は、オフセットを例えば１８に設定できる。第１の電子装置１００は、合算結果の毎桁数の数字にオフセットである１８を合算できる。その上、図３と同様に、第１の電子装置は、オフセット適用された合算結果に文字セットのサイズをｍｏｄ演算した結果を獲得できる。それによって、第１の電子装置１００は、オフセット適用された合算結果である{３１，２３，２８，３０，１７，１９}を獲得できる。
【００６４】
ステップ４６０において、第１の電子装置１００は、オフセット適用された合算結果を文字セットにマッピングして第１のサブコードを生成できる。第１の電子装置１００は、オフセット適用された合算結果である‘３１’を文字セットでのインデックスとして解析し、３１番目の文字である‘Ｖ’を獲得できる。第１の電子装置１００は、‘２３’，‘２８’，‘３０’，‘１７’，‘１９’を順次に文字に変換でき、それによって“ＶＮＳＵＨＪ”の第１のサブコードを生成できる。
【００６５】
ステップ４７０において、第１の電子装置１００は、第１のＯＴＰにオフセットを適用できる。それによって、{３，８，２，９，０，１}の第１のＯＴＰの各数字にオフセット１８を合算し、{２１，２６，２０，２７，１８}のオフセットが適用された第１のＯＴＰを生成できる。
【００６６】
ステップ４８０において、第１の電子装置１００は、オフセット適用された第１のＯＴＰを文字セットにマッピングして第２のサブコードを生成できる。すなわち、第１の電子装置１００は、オフセット適用された第１のＯＴＰの{２１，２６，２０，２７，１８}の各数字を文字セットでのインデックスとして解析し、第２のサブコードを生成できる。例えば、第１の電子装置１００は、オフセット適用された第１のＯＴＰの最初の数字である‘２１’に基づき、文字セットでの２１番目の文字である‘Ｌ’を獲得できる。上記した方式で、第１の電子装置１００は、オフセット適用された第１のＯＴＰの{２１，２６，２０，２７，１８}から“ＬＱＫＲＩＪ”の第２のサブコードを生成できる。
【００６７】
ステップ４９０において、第１の電子装置１００は、第１のサブコード及び第２サブコードを含む第１のコードを生成できる。第１の電子装置１００は、第１のサブコード及び第２のサブコードを連結し、例えば“Ｄ５ＡＣＹ１ＬＱＫＲＩＪ”の第１のコードを生成できる。上記したように、第１のコードの第１のサブコードである“Ｄ５ＡＣＹ１”は、動的かつランダムに生成されるＯＴＰ及び固有コードの合算により設定されることで、動的かつランダム性が保証されつつ、固有コードによる固有性が保証され得る。但し、低い確率で合算結果が同一であるコードが発生する可能性もあるので、本発明の多様な実施形態による第１の電子装置１００は、第２のサブコードを連結することにより固有コードである第１のコードを生成できる。
【００６８】
以下、上記したコード生成プロセスをアルゴリズムを通じて説明する。
-定義
-Ｃ：ＡＳＣＩＩコードで表現される相異なる文字を要素とする文字セット
与えられた文字セットをＣとし、Ｃは、ＡＳＣＩＩコードで表現される異なる文字(アルファベットの大/小文字、特殊文字、数字）で構成される。例えば、Ｃが数字だけで構成される場合、Ｃ＝{‘０’，‘１’，‘２’，‘３’，‘４’，‘５’，‘６’，‘７’，‘８’，‘９’}であり、同一の数字が重複しない。また、数字と英文大文字で構成される場合、Ｃ＝{‘０’，…，‘９’，‘Ａ’，…，‘Ｚ’}である。同一の方法で与えられた文字セットＣは、多様な形態で構成され得る。また、Ｃの要素を同一の集合内でシャッフリングできる。例えば、数字だけで構成される文字セットＣ＝{‘０’，‘１’，‘２’，‘３’，‘４’，‘５’，‘６’，‘７’，‘８’，‘９’}がシャッフリングされる場合、Ｃ＝{‘８’，‘０’，‘７’，‘３’，‘１’，‘９’，‘６’，‘２’，‘４’，‘５’}のようになり得る。
【００６９】
-Ｓ：与えられた文字セットＣの要素個数
【００７０】
-Ｃ(ｎ)：ｎ番目Ｃの要素(０≦ｎ＜Ｃの文字個数)
Ｃのｎ番目の要素をＣ(ｎ)であると定義し、このとき、ｎは０≦ｎ＜Ｓである整数である。すなわち、ｎは、Ｃに含まれる要素のインデックスを意味する。数字のみで構成された文字セットＣ＝{‘８’，‘０’，‘７’，‘３’，‘１’，‘９’，‘６’，‘２’，‘４’，‘５’}である場合、０≦ｎ＜１０であり、Ｃ(０)＝‘８’、Ｃ(９)＝‘５’である。
【００７１】
-Ｉｎｄｅｘ０ｆ(ｃ)：与えられた文字ｃのＣ内のインデックス
与えられた文字セットＣ＝{‘８’，‘０’，‘７’，‘３’，‘１’，‘９’，‘６’，‘２’，‘４’，‘５’}である場合、Ｉｎｄｅｘ０ｆ(‘８’)＝０、Ｉｎｄｅｘ０ｆ(‘５’)＝９である。
【００７２】
-Ｕ：Ｃに含まれる文字で構成される任意の生成されたユーザー固有ＩＤを示す文字列
与えられた文字セットＣ＝{‘８’，‘０’，‘７’，‘３’，‘１’，‘９’，‘６’，‘２’，‘４’，‘５’}である場合、Ｕは‘０３８２’、‘７１９２’のように表現される。
【００７３】
-Ｕ(ｎ)：Ｕのｎ番目の文字(０≦ｎ＜Ｕの文字個数)
与えられたＵ＝‘０３８２’である場合、ｎは０≦ｎ＜４である整数であり、Ｕ(２)＝‘８’、Ｕ(３)＝‘２’である。
【００７４】
-Ｔ：ＴＯＴＰコード
例えば、ランダムな６桁のＴＯＴＰコードは、‘８３９０２３’、‘６５９９２１’である。
【００７５】
-Ｔ(ｎ)：ＴＯＴＰコード内のｎ番目に位置した数字(０≦ｎ＜ＴＯＴＰ桁数)
例えば、生成されたＴＯＴＰコードが‘８３９０２３’である場合、Ｔ(０)＝‘８’、Ｔ(５)＝‘３’である。
【００７６】
-Ｎ：ランダムコードの長さ(Ｎ≧１)
【００７７】
-Ｒ：ランダムコード
【００７８】
-ｎｕｍ０ｆ(ｃ)：ＡＳＣＩＩ文字数字ｃを数字に変換
【００７９】
-アルゴリズム
プログラミング言語Ｃ＋＋に類似した形態で記述する。
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));//  Ｔ(ｎ)  ＡＳＣＩＩコードを数字に変換、‘３’→３，‘９’→９
Int x=IndexOf(U(n));
preId+=C((d+x+offset)%S）;//  以前ステップで作られた文字に加える。
postId+=C((d+offset)%S）;
}
return(preId+postId);//作られた２個の文字を加えて最終Ｒを作る。
}
【００８０】
-シミュレーション
Ｎ＝６，
Ｃ＝{‘０’，…，‘９’，‘Ａ’，…，‘Ｚ’}であり、
Ｓ＝１０＋２６＝３６
Ｕ＝‘ＡＸ８３Ｚ０’であり、
Ｔ＝‘３８２９０１’である場合、
０≦ｎ＜３６，(０，…，３５)
Ｉｎｄｅｘ０ｆ(Ｕ)＝{１０，３３，８，３，３５，０}であり、
ｎｕｍ０ｆ(Ｔ)＝{３，８，２，９，０，１}であり、
各桁に対して演算を実行すると、
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’であり、
Ｒ＝ｇｅｎｅｒａｔｅ_ｒａｎｄｏｍ_ｉｄ(Ｃ，Ｕ，Ｎ，Ｔ）であり、Ｒ＝‘ＶＮＳＵＨＪ  ＬＱＫＲＩＪ’である。
【００８１】
-シミュレーション２-  同一の時点で異なるＩＤである場合、
上記と同様にＮ＝６、Ｃ＝{‘０’，…，‘９’，‘Ａ’，…，‘Ｚ’}、Ｓ＝１０＋２６＝３６に設定する。
その代わりにＵ＝‘Ｂ０５ＥＦＡ’であり、
上記のようなＴ＝‘３８２９０１’である場合、
０≦ｎ＜３６，(０，…，３５)
Ｉｎｄｅｘ０ｆ(Ｕ)＝{１１，０，６，１４，１５，１０}であり、
ｎｕｍ０ｆ(Ｔ)＝{３，８，２，９，０，１}であり、
各桁に対して演算を実行する場合、
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’であり、
Ｒ＝ｇｅｎｅｒａｔ_ｒａｎｄｏｍ_ｉｄ(Ｃ，Ｕ，Ｎ，Ｔ）であり、Ｒ＝‘ＷＱＱ５ＸＴ  ＬＱＫＲＩＪ’である。
【００８２】
したがって、同一の時点で同一のＯＴＰが出ても異なるランダムコードは、相異なる結果を有する。
【００８３】
図５は、本発明の一実施形態によるオフセット決定プロセスを示すフローチャートである。
【００８４】
ステップ５１０において、第１の電子装置１００は、すべてのユーザーに対して同一の第２のシードを獲得できる。ここで、第２のシードは、例えば時間ベースのワンタイムパスワードを生成するためのシード値であって、第１のシードとは異なり得る。ステップ５２０において、第１の電子装置１００は、第２のシード及び第１の時間情報に基づいて第２のＯＴＰを生成でき、ステップ５３０において、第２のＯＴＰを用いて図４で使用するオフセットを決定できる。例えば、第１の電子装置１００は、第２のシードを用いて生成したオフセットに文字セットの要素の個数に対するｍｏｄ演算の結果値でオフセットを設定できる。第２のシードは、第１のユーザーだけでなくシステムに加入したユーザー全部に同一であり、それによって第１の時点で生成されたオフセットは、すべてのユーザーに同一であり、生成されたコードの固有性が連続して保証され得る。
【００８５】
図６は、本発明の一実施形態による文字セット決定方法を示すフローチャートである。
【００８６】
ステップ６１０において、第１の電子装置１００は、すべてのユーザーに同一の第２のシードを獲得できる。ここで、第２のシードは、例えば時間ベースのワンタイムパスワードを生成するためのシード値であって、第１のシードとは異なり得る。
【００８７】
ステップ６２０において、第１の電子装置１００は、第２のシード及び第１の時間情報を用いて第２のＯＴＰを生成できる。ステップ６３０において、第１の電子装置１００は、第２のＯＴＰを用いて文字セットを決定できる。例えば、第１の電子装置１００は、基本文字セットを最初に獲得でき、基本文字セットを第２のＯＴＰに基づいて変形することによって、コード生成に使用する文字セットを決定できる。
【００８８】
図７は、本発明の一実施形態による文字セット決定方法を示すフローチャートである。
【００８９】
ステップ７１０において、第１の電子装置１００は、基本文字セットを獲得できる。例えば、第１の電子装置１００は、{‘０’，‘１’，‘２’，…，‘９’}の基本文字セットを獲得できる。基本文字セットの要素の個数は、１０であり得る。
【００９０】
ステップ７２０において、第１の電子装置１００は、第２のシード及び第１の時間情報を用いて第２のＯＴＰを生成できる。本発明の一実施形態では、第１の電子装置１００は、ｈＯＴＰアルゴリズムで第２のＯＴＰを生成してもよい。例えば、第１の電子装置１００は、１２３４５６の第２のＯＴＰを生成すると仮定する。
【００９１】
ステップ７３０において、第１の電子装置１００は、第２のＯＴＰ及び文字セットのサイズをｍｏｄ演算し、演算結果値を獲得できる。ステップ７４０において、第１の電子装置１００は、演算結果値を用いて基本文字セットの２個の文字の位置をスワッピングできる。例えば、第１の電子装置１００は、１２３４５６に対するｍｏｄ演算結果である６を獲得できる。第１の電子装置１００は、６の演算結果を文字セットのインデックスとして解析し、文字セットの６番目の文字を０番目の文字とスワッピングできる。
【００９２】
ステップ７５０において、第１の電子装置１００は、すべての文字に対して順次にスワッピングを実行し、基本文字セットをシャッフリングした文字セットを獲得できる。例えば、第１の電子装置１００は、文字セットの１番目の文字に対して、ＯＰＴ生成、ｍｏｄ演算、演算結果値をインデックスとして解析して１番目の文字とインデックスに対応する文字とスワッピングを実行して、上記したプロセスを２番目の文字乃至９番目の文字に対してすべて遂行できる。
【００９３】
ステップ７６０において、第１の電子装置１００は、シャッフリングした文字セットを用いて第１のコードを生成できる。
【００９４】
上記したように、文字セットは、動的に変更でき、シードのみが共有される場合、すべてのユーザーに対して同一の文字セットが生成され、上記したように生成されたコードの固有性が連続され保証できる。
【００９５】
以下、上記した文字セットシャッフリング方法のアルゴリズムを説明する。
１．基本文字セットＣ＝{‘０’，‘１’，‘３’，‘４’、‘５’，‘６’，‘７’，‘８’，‘９’}である。
２．グローバルキーを設定してこれをＯＴＰのシードとして使用される。
３．文字セットのサイズＳだけ次を反復してランダムな文字セットを作る。
１)Ｃ(ｎ）の桁を変更するために、ＨＯＴＰを一つ作り、集合サイズでｍｏｄ計算する。
２)ＨＯＴＰが１２３４５６である場合、文字セットのサイズである１０でｍｏｄ計算して６が得られる。
３)得られた６は、Ｃのインデックスを意味し、Ｃ[６]に該当する数字を現在変更しようとするＣ[０]番目の文字と桁を変え、すなわちスワッピングする。
４)１，２，３のステップを９回さらに反復してＣ[９]まで遂行する。
５)上記の計算が完了する場合、シャッフリングされた文字セットが出て、この集合を用いてランダムＩＤを生成できる。
【００９６】
シミュレーション-  文字セットシャッフリング
文字セットＣ＝{０，１，２，３，４，５，６，７，８，９}であり、ＣのサイズＳ＝１０，０≦ｎ＜１０である。
【００９７】
各ステップで生成されるＨＯＴＰをＳでモジューロした値を０とし、
０(０)＝１１１１  ２２２２％１０，
０(１)＝３３３３  ４４４４％１０，
０(２)＝５５５５  ６６６６％１０，
０(３)＝７７７７  ８８８８％１０，
０(４)＝９９９９  ００００％１０，
０(５)＝１１１１  ２２２２％１０，
０(６)＝３３３３  ４４４４％１０、
０(７)＝５５５５  ６６６６％１０，
０(８)＝７７７７  ８８８８％１０，
０(９)＝９９９９  ００００％１０であると仮定する。
【００９８】
１)Ｃ[０]＝０シャッフル
０[０]＝１１１１  ２２２２％１０＝２であるので、Ｃ[２]をＣ[０]の桁に移動させ、Ｃ[０]をＣ[２]に移動させてスワッピングする。したがって、文字セットはＣ＝{２，１，０，３，４，５，６，７，８，９}である。
２)Ｃ[１]＝１シャッフル
０[１]＝３３３  ４４４４％１０＝４であるので、Ｃ[４]をＣ[１]の桁に移動させ、Ｃ[１]をＣ[４]に移動させてスワッピングする。したがって、文字セットはＣ＝{２，４，０，３，１，５，６，７，８，９}である。
３)Ｃ[２]＝０シャッフル
０[２]＝５５５５  ６６６６％１０＝６であるので、Ｃ[６]をＣ[２]の桁に移動させ、Ｃ[２]をＣ[６]に移動させてスワッピングする。したがって、文字セットはＣ＝{２，４，６，３，１，５，０，７，８，９}である。
４)Ｃ[３]＝１シャッフル
０[３]＝７７７７  ８８８８％１０＝８であるので、Ｃ[８]をＣ[３]の桁に移動させ、Ｃ[３]をＣ[８]に移動させてスワッピングする。したがって、文字セットはＣ＝{２，４，６，８，１，５，０，７，３，９}である。
５)Ｃ[４]＝４シャッフル
０[４]＝９９９９  ００００％１０＝０であるので、Ｃ[０]をＣ[４]の桁に移動させ、Ｃ[４]をＣ[０]に移動させてスワッピングする。したがって、文字セットはＣ＝{１，４，６，８，２，５，０，７，３，９}である。
６)Ｃ[５]＝５シャッフル
０[５]＝１１１１  ２２２２％１０＝２であるので、Ｃ[２]をＣ[５]の桁に移動させ、Ｃ[５]をＣ[２]に移動させてスワッピングする。したがって、文字セットはＣ＝{１，４，５，８，２，６，０，７，３，９}である。
７)Ｃ[６]＝０  シャッフル
０[６]＝３３３３  ４４４４％１０＝４であるので、Ｃ[４]をＣ[６]の桁に移動させ、Ｃ[６]をＣ[４]に移動させてスワッピングする。したがって、文字セットはＣ＝{１，４，５，８，０，６，２，７，３，９}である。
８)Ｃ[７]＝７シャッフル
０[７]＝５５５５  ６６６６％１０＝６であるので、Ｃ[６]をＣ[７]の桁に移動させ、Ｃ[７]をＣ[６]に移動させてスワッピングする。したがって、文字セットはＣ＝{１，４，５，８，０，６，７，２，３，９}である。
９)Ｃ[８]＝３シャッフル
０[８]＝７７７７  ８８８８％１０＝８であるので、Ｃ[８]をＣ[８]の桁に移動させ、Ｃ[８]をＣ[８]に移動させてスワッピングする。したがって、文字セットはＣ＝{１，４，５，８，０，６，７，２，３，９}である。
１０)Ｃ[９]＝９シャッフル
０[９]＝９９９９００００％１０＝０であるので、Ｃ[０]をＣ[９]の桁に移動させ、Ｃ[９]をＣ[０]に移動させてスワッピングする。したがって、文字セットはＣ＝{９，４，５，８，０，６，７，２，３，１}である。
【００９９】
したがって、シャッフリングされた文字セットは、Ｃ＝{‘９’，‘４’，‘５’，‘８’，‘０’，‘６’，‘７’，‘２’，‘３’，‘１’}であり、このシャッフリング文字セットを用いてランダムコードを一度生成するようになる。
【０１００】
上記したように生成されたコードの固有性が保証される文字セットがシャッフリングされ得る。
【０１０１】
図８は、本発明の一実施形態によるスマートカード及びカードリーダーを示すブロック構成図である。図８に示すように、スマートカード８００は、プロセッサ８１０、メモリ８２０、及び通信回路８３０を含むことができる。スマートカード８００は、一般的なクレジットカードと同一の材質とサイズであるプラスチックカードの表面自体に演算機能を有することができる。スマートカード８００は、金融カードで実現するか、あるいはパスポート内にも挿入することができ、特定情報を利用して認証を遂行する分野では制限がないことは、当業者には容易に理解できることである。
【０１０２】
例えば、オペレーティングシステム(Chip  Operating  System：ＣＯＳ)がメモリ８２０に格納され得る。オペレーティングシステムは、メモリ８２０に格納されているアプレットを格納及び管理でき、アプレットから送受信されるデータをハードウェア端に送受信できる。メモリ８２０に格納されているアプレットは、ｊａｖａ言語で構成される小さいアプリケーションプログラムを意味する。ｊａｖａ言語は、インターネットベースの言語であるので、容量と速度の限界でプログラムを大きく作る必要がないので、小規模アニメーション、絵描き、天気変化表示、株価情報表示などの簡単な機能を処理する小さいプログラムを作って使用し、これを意味できる。例えば、アプレットは、メモリ８２０に格納されているセキュリティ情報から固有かつランダムなコードを出力できる。より詳しくは、アプレットは、格納されたセキュリティ情報を用いて上記したプロセスを通じて固有かつランダムなコードを出力するように設定できる。さらに、メモリ８２０は、ワンタイムパスワードを生成するための第１のシード、第１のユーザーに割り当てられた第１の固有コード及び文字セットを格納できる。
【０１０３】
プロセッサ８１０は、例えば、データライン８１１を介して生成されるコードをリーダー８５０に出力する。プロセッサ８１０は、データライン８１１を通じて受信された電力で駆動できる。他の実施形態において、プロセッサ８１０は、生成されたコードを通信回路８３０を通じてリーダー８５０の通信回路８５３に送信できる。通信回路８３０は、ブルートゥース(登録商標)、ジグビー、赤外線通信、可視光通信、ＮＦＣ通信、Ｗｉ-Ｆｉダイレクトなどの多様な通信方式に基づいてプロセッサ８１０から提供されるコードを通信回路８５３に送信できる。それにより、スマートカード８００は、接触式又は非接触式で生成されたコードをカードリーダー８５０に送信できる。
【０１０４】
カードリーダー８５０に接触式又は非接触式で受信したコードは、プロセッサ８５１に提供される。プロセッサ８５１は、コードを生成できる。プロセッサ８５１は、生成したコードと受信されたコードとを比較することによって、受信されたコードが適合するか否かを判定できる。あるいは、カードリーダー８５０は、受信されたコードを管理サーバにフォワーディングできる。この場合、管理サーバは、コードを生成でき、フォワーディングされるコードと生成されるコードとを比較することによって、受信されたコードが適合するか否かを判定できる。
【０１０５】
図９は、本発明の一実施形態によるスマートカード及びリーダーの動作を示すフローチャートである。
【０１０６】
ステップ９０５において、スマートカード９００は、リーダー９０１から電力を受信できる。スマートカード９００は、リーダー９０１からデータライン又は電力ラインを介して電力を受信してもよく、あるいは無線で電力を受信してもよい。
【０１０７】
ステップ９１０において、スマートカード９００は、リーダー９０１と第１の固有コード及び第１のシードを共有できる。割り当てられた第１の固有コードは、スマートカード９００に予め格納され得る。リーダー９０１又は管理サーバにも第１の固有コードを予め格納され得る。第１のシードは、時間ベースのワンタイムパスワード(ＯＴＰ)の生成のために第１のユーザーに割り当てられる。管理サーバは、第１のシードをスマートカード９００に割り当て、これをスマートカード９００に格納することができる。スマートカード９００は、第１のシード及び第１の時間情報を用いて第１のＯＴＰを生成できる。すなわち、スマートカード９００は、第１の時点で、第１の時点に対応する第１の時間情報及び第１のシードを用いて第１のＯＴＰを生成できる。さらに、スマートカード９００は、第２の時点では、第２の時点に対応する第２の時間情報及び第１のシードを用いて第２のＯＴＰを生成できる。スマートカード９００は、時間の流れに従って動的にＯＴＰを変更して生成してもよい。
【０１０８】
ステップ９２０において、スマートカード９００は、第１のＯＴＰ及び第１の固有コードを用いて第１のコードを生成できる。スマートカード９００が第１のＯＴＰ及び第１の固有コードを用いてランダムかつ固有の第１のコードを生成するプロセスについては詳細に説明したので、ここではその説明を省略する。第１のコードは、第１のＯＴＰ及び第１の固有コードをすべて利用して生成されるに従って、第１のＯＴＰのランダム性及び動的な変更可能性と第１の固有コードの固有性が保証されることで、ランダムかつ固有であり得る。
【０１０９】
ステップ９３０において、リーダー９０１又は管理サーバは、第１のシード及び第１の時間情報を用いて第１のＯＴＰを生成できる。リーダー９０１は、第１の時点で第１の時点に対応する第１の時間情報と第１のシードを用いてスマートカード９００により生成されたものと同一の第１のＯＴＰを生成できる。
【０１１０】
リーダー９０１は、第２の時点で第２の時点に対応する第２の時間情報と第１のシードを用いてスマートカード９００が第２の時点で生成したものと同一の第２のＯＴＰを生成できる。すなわち、リーダー９０１は、ＯＴＰを動的に変更しつつ生成できる。ステップ９４０において、リーダー９０１は、第１のＯＴＰ及び第１の固有コードを用いて第１のコードを生成できる。
【０１１１】
ステップ９５０において、リーダー９０１は、スマートカード９００からコード確認要請を受信できる。すなわち、リーダー９０１は、スマートカード９００により生成したコードを接触式又は非接触式で受信できる。
【０１１２】
ステップ９６０において、リーダー９０１は、コード確認要請内のコードがリーダー９０１により生成された第１のコードと同一であるか否かを判定できる。コード確認要請内のコードがリーダー９０１により生成された第１のコードと同一である場合には、ステップ９８０において、リーダー９０１は、コードが適合すると判定する。コード確認要請内のコードがリーダー９０１により生成された第１のコードと異なる場合には、ステップ９７０において、リーダー９０１は、コードが適合しないと判定する。
【０１１３】
図１０は、本発明の一実施形態による電子装置１０００及び開閉システム１００１の動作を示すフローチャートである。開閉システムは、自動車のドア、又はセキュリティ通過が要求されるシステム等であって、多様な形態で実現することができる。
【０１１４】
ステップ１００５において、電子装置１０００は、開閉システム１００１から電力を受信できる。電子装置１０００は、開閉システム１００１からデータライン又は電力ラインを通じて電力を受信してもよく、あるいは無線で電力を受信してもよい。
【０１１５】
ステップ１０１０において、電子装置１０００は、第１のシード及び第１の時間情報を用いて第１のＯＴＰを生成できる。ステップ１０２０において、電子装置１０００は、第１のＯＴＰ及び第１の固有コードを用いて第１のコードを生成できる。電子装置１０００は、第１のＯＴＰ及び第１の固有コードを用いてランダムかつ固有の第１のコードを生成するプロセスについては詳細に説明したので、ここでその詳細な説明を省略する。
【０１１６】
ステップ１０３０において、開閉システム１００１又は管理サーバは、第１のシード及び第１の時間情報を用いて第１のＯＴＰを生成できる。開閉システム１００１は、第１の時点で第１の時点に対応する第１の時間情報と第１のシードを用いて電子装置１０００により生成したものと同一の第１のＯＴＰを生成できる。
【０１１７】
開閉システム１００１は、第２の時点で第２の時点に対応する第２の時間情報と第１のシードを用いて電子装置１０００により第２の時点で生成されたものと同一の第２のＯＴＰを生成できる。
【０１１８】
ステップ１０５０において、開閉システム１００１は、電子装置１０００からコード確認要請を受信できる。すなわち、開閉システム１００１は、電子装置１０００により生成されたコードを接触式又は非接触式で受信できる。
【０１１９】
ステップ１０６０において、開閉システム１００１は、コード確認要請内のコードが開閉システム１００１により生成された第１のコードと同一であるか否かを判定する。コード確認要請内のコードが開閉システム１００１により生成された第１のコードと同一である場合、ステップ１０８０において、開閉システム１００１は、コードが適合すると判定できる。コード確認要請内のコードが開閉システム１００１により生成された第１のコードと異なる場合、ステップ１０７０において、開閉システム１００１は、コードが適合しないと判定できる。
【０１２０】
図１１は、本発明の一実施形態によるマルチファクタ認証システムを説明するための概念図である。
【０１２１】
図１１を参照すると、電子装置１１００は、パスワードの入力のための画面１１１０を表示できる。パスワードの入力のための画面１１１０は、複数の数字を含むことができる。例えば、電子装置１１００は、パスワード入力のための画面１１１０に“１”１１１１、“２”１１１２、“３”１１１３、“４”１１１４が連続して入力されることを検出できる。電子装置１１００は、まず入力された“１”１１１１の固有コードを用いてコードである“ＳｒＤＣＣ１０４０”を生成できる。さらに、“２”１１１２の固有コードを用いて“ＦＱｄ３ｓｅ４ｔＴ”のコードを生成し、“３”１１１３の固有コードを用いて“ＦｒＷｗｒｅ０Ｔｅ”のコードを生成し、“４”１１１４の固有コードを用いて“ｈｗＤＹＱｚＱキー”のコードを生成することができる。電子装置１１００は、生成したコードの連結である“ＳｒＤＣＣ１０４０ＦＱｄ３ｓｅ４ｔＴＦｒＷｗｒｅ０ＴｅｈｗＤＹＱｚＱ”を管理サーバ１１０１に送信できる。管理サーバ１１０１は、予め格納されている“１２３４”の各々の数字を用いるコードである“ＳｒＤＣＣ１０４０ＦＱｄ３ｓｅ４ｔＴＦｒＷｗｒｅ０ＴｅｈｗＤＹＱｚＱ”を電子装置１１００から受信されたコードと比較でき、その比較結果により、コードが適合するか否かを判定できる。それにより、ユーザーの記憶による“１２３４”の情報及びこれから生成されたコードを用いるマルチファクタ認証が可能である。
【０１２２】
図１２は、本発明の一実施形態によるスマートカードによる認証プロセスを説明するための概念図である。
【０１２３】
図１２に示すように、スマートカード１２０１は、セキュリティゲート１２０２に接触式又は非接触式で生成したコードを送信できる。スマートカード１２０１は、セキュリティゲート１２０２から有線又は無線で電力を受信してもよく、受信された電力を用いてアプレットを動作させ、コードを生成して出力してもよい。セキュリティゲート１２０２は、スマートカード１２０１から受信されたコード１２０３をセキュリティサーバ１２１０に送信できる。セキュリティサーバ１２１０は、コード１２１１を管理サーバ１２３０に送信できる。管理サーバ１２３０は、予めコードを生成し、受信されたコード１２１１と生成したコードとを比較できる。その比較結果、予め生成されたコードと受信されたコート１２１１が一致する場合、管理サーバ１２３０は、該当ユーザー識別子(ＩＤ)とパスワード関連情報１２４１をセキュリティサーバ１２１０に送信できる。セキュリティサーバ１２１０は、受信された該当ユーザー識別子とパスワード関連情報１２４１に基づいて開放命令１２４２をセキュリティゲート１２０２に送信できる。セキュリティゲート１２０２は、受信された開放命令１２４２に従ってドアを開放することができる。一方、管理サーバ１２３０の比較結果、予め生成されたコードと受信されたコード１２１１が一致しない場合、認証失敗メッセージをセキュリティサーバ１２１０に送信してもよく、この場合、セキュリティサーバ１２１０は、セキュリティゲート１２０２に閉鎖命令を送信してもよい。
【０１２４】
図１３は、本発明の一実施形態によるシステムログイン過程を説明するための概念図である。
【０１２５】
電子装置１３０１は、スマートカードを挿入できる構造で実現できる。それにより、スマートカードは、電子装置１３０１から電力を受信してアプレットを実行し、アプレットの実行結果として生成されたコードを電子装置１３０１に出力する。電子装置１３０１は、スマートカードから受信されたコード(ランダムＩＤ)とユーザー名をともに表示できる。ユーザーは、これを確認してコンピュータのようなグループウェアログイン(groupware  login）が可能な装置１３１０にユーザー名１３１１及び表示されたコード(例えば、６ＧＨｔＹ)１３１２をログインウィンドウで記載できる。グループウェアログインが可能な装置１３１０は、受信したユーザー名及びコード１３１３をグループウェアサーバ１３２０に送信し、グループウェアサーバ１３２０は、ユーザー名及びコード１３２１を管理サーバ１３３０にフォワーディングすることができる。
【０１２６】
管理サーバ１３３０は、コードを予め生成し、予め生成したコードと受信されたコードとを比較する。その比較結果、予め生成したコードと受信されたコードが同一である場合、管理サーバ１３３０は、ユーザー名及びパスワード関連情報１３４１をグループウェアサーバ１３２０に送信する。グループウェアサーバ１３２０は、受信された該当ユーザー識別子(ＩＤ)とパスワード関連情報１３４１に基づいてグループウェアログイン関連メッセージ１３４２をログインが可能な装置１３１０に送信できる。一方、管理サーバ１３３０の比較結果、予め生成したコードと受信されたコード１３２１が一致しない場合、認証失敗メッセージをグループウェアサーバ１３２０に送信する。この場合、グループウェアサーバ１３２０は、ログイン失敗メッセージを送信できる。一方、図１２及び図１３に示すように、一つのスマートカードを用いてオンライン/オフライン両方ともに認証を遂行することができる。
【０１２７】
図１４は、本発明の一実施形態によるＩｏＴ(Internet of Things)環境における電子装置の動作を説明するための概念図である。
【０１２８】
電子装置１４０１又はスマートカード１４０２は、コード１４０３を生成してホームネットワーク制御ポイント１４１０に送信できる。電子装置１４０１又はスマートカード１４０２は、ホームネットワークの複数の電子装置１４１１乃至１４１９のうち少なくとも一つに対する制御信号をともに送信する。一方、制御ポイント１４１０は、コードを生成し、これを受信されたコード１４０３と比較する。その比較結果、受信されたコード１４０３と生成したコードが一致する場合、制御ポイント１４１０は、該当命令を実行する電子装置を制御できる。それにより、例えばユーザーの安全に直接関連したガスバルブ制御システム等に対する制御がセキュリティ保証環境で実行できる。
【０１２９】
一方、本発明は、認証が要求される分野ではどこでも適用することができる。例えば、本発明による商品券番号生成器は、上記したアルゴリズムを通じて固有かつランダムなコードを生成し、商品券のタイプごとに与えられ、認証システムとも共有できる。認証システムでは、商品券番号がオンライン使用システムを通じて受信される場合に、受信された商品券番号と予め共有にされた商品券番号を比較することによって認証を実行できる。上記したように、生成されたコードは、固有かつランダム性が保証されるにしたがって、他人により商品券番号を類推及び生成されることを防止することができる。
【０１３０】
以上、本発明の詳細な説明においては具体的な実施形態に関して説明したが、特許請求の範囲の記載及びこれと均等なものに基づいて定められる本発明の範囲及び精神を逸脱することなく、形式や細部の様々な変更が可能であることは、当該技術分野における通常の知識を持つ者には明らかである。
【符号の説明】
【０１３１】
８００  スマートカード
８１０、８５１  プロセッサ
８２０  メモリ
８３０、８５３  通信回路
８５０  カードリーダー
【図１】
2017017711.tif 000003
【図２】
2017017711.tif 000004
【図３】
2017017711.tif 000005
【図４】
2017017711.tif 000006
【図５】
2017017711.tif 000007
【図６】
2017017711.tif 000008
【図７】
2017017711.tif 000009
【図８】
2017017711.tif 000010
【図９】
2017017711.tif 000011
【図１０】
2017017711.tif 000012
【図１１】
2017017711.tif 000013
【図１２】
2017017711.tif 000014
【図１３】
2017017711.tif 000015
【図１４】
2017017711.tif 000016