特開2017-17711(P2017-17711A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ イノアウス・コリア・インコーポレイテッドの特許一覧

特開2017-17711ランダムかつ固有のコードを生成する電子装置及び方法
<>
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000003
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000004
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000005
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000006
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000007
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000008
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000009
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000010
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000011
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000012
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000013
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000014
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000015
  • 特開2017017711-ランダムかつ固有のコードを生成する電子装置及び方法 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2017-17711(P2017-17711A)
(43)【公開日】2017年1月19日
(54)【発明の名称】ランダムかつ固有のコードを生成する電子装置及び方法
(51)【国際特許分類】
   H04L 9/32 20060101AFI20161222BHJP
   G09C 1/00 20060101ALI20161222BHJP
   G06F 21/46 20130101ALI20161222BHJP
   G06F 21/34 20130101ALI20161222BHJP
【FI】
   H04L9/00 675A
   H04L9/00 673
   G09C1/00 640E
   G06F21/46
   G06F21/34
【審査請求】有
【請求項の数】20
【出願形態】OL
【全頁数】27
(21)【出願番号】特願2016-131405(P2016-131405)
(22)【出願日】2016年7月1日
(31)【優先権主張番号】10-2015-0094374
(32)【優先日】2015年7月1日
(33)【優先権主張国】KR
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
(71)【出願人】
【識別番号】516198950
【氏名又は名称】イノアウス・コリア・インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】安 泳澤
(72)【発明者】
【氏名】姜 裕▲ジン▼
【テーマコード(参考)】
5J104
【Fターム(参考)】
5J104AA07
5J104KA01
5J104KA21
5J104NA05
5J104NA11
5J104NA38
(57)【要約】
【課題】本発明は、ランダムかつ固有のコードを生成する電子装置及び方法を提供する。
【解決手段】本発明による電子装置は、通信モジュールと、OTPを生成するための第1のシード、第1のユーザーに割り当てられる第1の固有コード及び文字セットを格納するメモリと、プロセッサとを含み、プロセッサは、第1のシードを用いて第1のOTPを生成し、第1のOTP及び第1の固有コードの演算結果を文字セットにマッピングして第1のサブコードを生成し、第1のOTPを文字セットにマッピングして第2のサブコードを生成し、第1のサブコード及び第2のサブコードを用いてコードを生成し、生成されたコードを通信モジュールを通じて他の電子装置に送信するように設定される。
【選択図】図8
【特許請求の範囲】
【請求項1】
コードを生成する方法であって、
ワンタイムパスワード(OTP)を生成するための第1のシード、第1のユーザーに割り当てられる第1の固有コード及び文字セットを獲得するステップと、
前記第1のシードを用いて第1のOTPを生成するステップと、
前記第1のOTP及び第1の固有コードの演算結果を前記文字セットにマッピングして第1のサブコードを生成するステップと、
前記第1のOTPを前記文字セットにマッピングして第2のサブコードを生成するステップと、
前記第1のサブコード及び前記第2のサブコードを用いて前記コードを生成するステップと、
を有することを特徴とする方法。
【請求項2】
前記第1のシードを用いて第1のOTPを生成するステップは、
前記第1のシード及び第1の時点に対応する第1の時間情報を時間ベースのOTPアルゴリズムに入力して前記第1のOTPを生成することを特徴とする請求項1に記載の方法。
【請求項3】
前記第1のOTP及び第1の固有コードのオペレーション結果を前記文字セットにマッピングして第1のサブコードを生成するステップは、
前記文字セットと比較することにより前記第1の固有コードを数字コードに変換するステップと、
前記数字コードを前記第1のOTPと合算するステップと、
前記合算結果を前記文字セットにマッピングして前記第1のサブコードを生成するステップと、を有することを特徴とする請求項1に記載の方法。
【請求項4】
前記合算結果を前記文字セットにマッピングして前記第1のサブコードを生成するステップは、
前記合算結果に対して前記文字セットのサイズとmod演算を遂行するステップと、
前記合算結果に対するmod演算の遂行結果を前記文字セットにマッピングして前記第1のサブコードを生成するステップと、を有することを特徴とする請求項3に記載の方法。
【請求項5】
前記合算結果を前記文字セットにマッピングして前記第1のサブコードを生成するステップは、
前記合算結果に所定のオフセットを適用するステップと、
前記オフセット適用された合算結果を前記文字セットにマッピングして前記第1のサブコードを生成するステップとを有することを特徴とする請求項3に記載の方法。
【請求項6】
前記オフセット適用された合算結果を前記文字セットにマッピングして前記第1のサブコードを生成するステップは、
前記オフセット適用された合算結果に対して前記文字セットのサイズとmod演算を遂行するステップと、
前記合算結果に対するmod演算遂行結果を前記文字セットにマッピングして前記第1のサブコードを生成するステップと、を有することを特徴とする請求項5に記載の方法。
【請求項7】
前記第1のOTPを前記文字セットにマッピングして第2サブコードを生成するステップは、
前記第1のOTPに前記所定のオフセットを適用するステップと、
前記オフセット適用された第1のOTPを前記文字セットにマッピングして前記第2サブコードを生成するステップと、を有することを特徴とする請求項5に記載の方法。
【請求項8】
前記オフセット適用された第1のOTPに対して前記文字セットのサイズとmod演算を遂行するステップと、
前記第1のOTPに対するmod演算の遂行結果を前記文字セットにマッピングして前記第2サブコードを生成するステップと、を有することを特徴とする請求項7に記載の方法。
【請求項9】
前記文字セットを獲得するステップは、
基本文字セットを獲得するステップと、
前記基本文字セットの要素をシャッフリングすることにより前記文字セットを獲得するステップと、を有することを特徴とする請求項1に記載の方法。
【請求項10】
前記基本文字セットの要素をシャッフリングするステップは、
システムのすべてのユーザーに同一の第2のシードを獲得するステップと、
前記第2のシードを用いて第2のOTPを生成するステップと、
前記第2のOTPに対する前記基本文字セットの要素の個数のmod演算結果を用いて前記基本文字セットの各桁の要素を他の桁の要素とスワッピングするステップと、を有することを特徴とする請求項9に記載の方法。
【請求項11】
通信モジュールと、
ワンタイムパスワード(OTP)を生成するための第1のシード、第1のユーザーに割り当てられる第1の固有コード及び文字セットを格納するメモリと、
プロセッサと、を含み、
前記プロセッサは、前記第1のシードを用いて第1のOTPを生成し、
前記第1のOTP及び第1の固有コードの演算結果を前記文字セットにマッピングして第1のサブコードを生成し、
前記第1のOTPを前記文字セットにマッピングして第2のサブコードを生成し、
前記第1のサブコード及び前記第2のサブコードを用いてコードを生成し、
前記生成されたコードを前記通信モジュールを通じて他の電子装置に送信するように設定されることを特徴とする電子装置。
【請求項12】
前記電子装置はスマートカードであり、前記他の電子装置は認証を遂行する電子装置であることを特徴とする請求項11に記載の電子装置。
【請求項13】
前記電子装置はスマートカードであり、前記他の電子装置は前記生成されたコードを中継する電子装置であり、
前記他の電子装置は、認証を遂行する電子装置に前記生成されたコードを中継することを特徴とする請求項11に記載の電子装置。
【請求項14】
前記電子装置はスマートカードであり、前記他の電子装置は開閉システムであることを特徴とする請求項11に記載の電子装置。
【請求項15】
前記開閉システムは、受信されたコードを用いて認証を遂行するか、あるいは認証を遂行する他の電子装置に前記受信されたコードに対する認証を要請するように設定されることを特徴とする請求項14に記載の電子装置。
【請求項16】
前記開閉システムは、前記認証結果又は前記他の電子装置から受信された認証結果に基づいてシステムの開閉を制御することを特徴とする請求項15に記載の電子装置。
【請求項17】
前記他の電子装置は、ホームネットワークを構成する電子装置であることを特徴とする請求項11に記載の電子装置。
【請求項18】
前記ホームネットワークを構成する電子装置は、認証結果に基づいて、前記ホームネットワークを構成する電子装置を制御し、あるいは前記ホームネットワークを構成するもう一つの電子装置を制御するように設定されることを特徴とする請求項17に記載の電子装置。
【請求項19】
認証を遂行する電子装置であって、
他の電子装置から第1のコードを受信する通信モジュールと、
ワンタイムパスワード(OTP)を生成するための第1のシード、第1のユーザーに割り当てられる第1の固有コード及び文字セットを格納するメモリと、
プロセッサと、を含み、
前記プロセッサは、前記第1のシードを用いて第1のOTPを生成し、
前記第1のOTP及び第1の固有コードの演算結果を前記文字セットにマッピングして第1のサブコードを生成し、
前記第1のOTPを前記文字セットにマッピングして第2のサブコードを生成し、
前記第1のサブコード及び前記第2のサブコードを用いて第2のコードを生成し、
前記第2のコードと前記通信モジュールを通じて受信された前記第1のコードが一致する場合に認証を遂行し、
前記第2のコードと前記通信モジュールを通じて受信された前記第1のコードが一致しない場合には認証を遂行しないように設定されることを特徴とする電子装置。
【請求項20】
前記認証を遂行する電子装置は、スマートカードで前記第1のコードを生成するための電力を送信し、
前記通信モジュールは、スマートカードから前記第1のコードを受信することを特徴とする請求項19に記載の電子装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はランダムかつ固有のコードを生成する電子装置及び方法に関するもので、より詳細には時間ベースのワンタイムパスワードを用いてランダムかつ固有のコードを生成する電子装置及び方法に関する。
【背景技術】
【0002】
オペレーティングシステム及び他のすべてのコンピュータアプリケーションシステムは、アクセスするユーザーの区分のためにIDをユニークに生成して各ユーザーに割り当てる。IDは、容易に露出又は流出される可能性があって、これを補完するためにユーザーが容易に記憶できるパスワードを生成してIDとともにマッピングして管理できる。それによって、ユーザーのIDが露出された場合に比べてパスワードをともに利用する場合には、セキュリティが一層向上できる。
【0003】
しかしながら、ユーザーは、一般的に記憶しやすいパスワード、例えば‘12345678’のように単純な形態を設定する場合が一般的である。それにより、他人又はハッカーが容易にパスワードを類推できる弱点が存在する。複雑なパスワード(例えば、aB3Pe#28dwqP)が設定される場合であっても、ハッカーは、発達したハッキング技術、例えばキーロガー(key logger)のようなハッキングツールを用いてIDとパスワードを容易に盗み出すことができる。これを補完するために、システムは、ユーザーに複雑なパスワード(一定の長さ、英文字の大/小文字、特殊文字、数字を混合)を周期的に変更して使用するように要求する。実際にユーザーがこのような複雑なパスワードを記憶することは非常に難しく、実際のユーザーは、自分のIDとパスワードをシステム別にメモして使用している。
【0004】
さらに、単純ID/パスワードベースのみでユーザーを区分することは、ハッキング技術の発達により限界を有するので、これを解決するためにユーザーが記憶する情報(ID/パスワード)とユーザーのみが持っていること(例えば、ワンタイムパスワード(OTP)生成器、OTPトークン、セキュリティカードなど)をともに使用するようにし、このようなユーザー認証方法を2ファクタ認証という。
【0005】
すなわち、ユーザーが認知(記憶)しているID/パスワードをユーザーが有しているもの(例えば、OTPトークン、セキュリティカードなど)とともに使用するようにする。これは、ユーザーが認知(記憶)しているID及びパスワードとユーザーが持っているものを用いて認証を実行するため、2ファクタ認証と称される。さらに、ユーザー認証に多様な要素、特にユーザー生体情報(指紋認識、虹彩、音声認識など)をともに使用することは、マルチファクタ(multi-factor)認証と称する。
【0006】
実際に、システムにアクセスするユーザー区分のためにはIDのみが必要であるが、セキュリティ上、これを補完するために複雑なパスワードとマルチファクタ(multi factor)をともにユーザーに要求する。これは、ユーザーのためのものでなく、システムのための形態でユーザー認証技術が研究/開発されていることを意味すると見なされる。
【0007】
ワンタイムコードは、ASCIIコードで構成された文字列であって、アルファベットと数字(alphanumeric){‘0’,…,‘9’,…,‘A’,…,‘Z’,‘a’,…,‘z’}と特殊文字(displayable ASCII character){‘!’,‘@’,…}との組み合わせで構成される。これは、システムに登録されている実際のユーザーIDを意味することでなく、一定長さの任意に生成されるIDであり、与えられた文字セットに含まれた文字で構成される文字列を意味する。
【0008】
例えば、与えられた文字セットが{‘0’,…,‘9’,‘A’,…,‘Z’}であり、長さが6である場合、ユーザーに割り当てられたランダムIDは、‘A012ZE’、‘KABFZE’、‘019D3F’、…である。このとき、ユーザーに割り当てられたワンタイムコードは固有でなければならない、すなわち、与えられた文字セットを用いて生成できる最大コードは、36(アルファベット大文字の個数(26)+数字(10))^6(ランダムID長さ)=2,176,782,336個である。
【0009】
このようなコードを周期的に異なる文字組み合わせで生成するためにTOTP(RFC6238)を使用し、生成されたTOTPの各桁を与えられた文字セットのインデックスとして使用することによって、固有かつランダムなコードを生成できる。しかしながら、OTPは、アルゴリズム的に同一の時点で他のシードを使用する場合、同一の結果が得られる。すなわち、衝突が発生する可能性がある。その結果、TOTPコードのみでは同一の時点でIDの要件である固有性を満たすことができないので、IDとして使用できない。
【0010】
従来のユーザー区分技術は、IDとパスワードが固定した方式に基づいて動作し、それによりユーザーID及びパスワードが露出するという問題があった。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】韓国特許出願公開第10−2011−0039947号
【発明の概要】
【発明が解決しようとする課題】
【0012】
したがって、上記した従来技術の問題点を解決するために、本発明の目的は、ランダムかつ固有のコードを生成する電子装置及び方法を提供することにある。
【課題を解決するための手段】
【0013】
上記のような目的を達成するために、本発明の一態様によれば、コードを生成する方法が提供される。その方法は、ワンタイムパスワード(OTP)を生成するための第1のシード、第1のユーザーに割り当てられる第1の固有コード及び文字セットを獲得するステップと、第1のシードを用いて第1のOTPを生成するステップと、第1のOTP及び第1の固有コードの演算結果を文字セットにマッピングして第1のサブコードを生成するステップと、第1のOTPを文字セットにマッピングして第2サブコードを生成するステップと、第1のサブコード及び第2のサブコードを用いてコードを生成するステップとを有する。
【0014】
本発明の他の態様によれば、コードを生成する電子装置が提供される。その電子装置は、メモリと、上記メモリに電気的に接続されるプロセッサとを含み、メモリは、実行時にプロセッサが、ワンタイムパスワードを生成するための第1のシード、第1のユーザーに割り当てられる第1の固有コード及び文字セットを獲得し、第1のシードを用いて第1のOTPを生成し、第1のOTP及び第1の固有コードの演算結果を文字セットにマッピングして第1のサブコードを生成し、第1のOTPを文字セットにマッピングして第2のサブコードを生成し、第1のサブコード及び第2のサブコードを用いてコードを生成する指示(instruction)を格納する。
【0015】
本発明の他の態様によれば、通信モジュールと、OTPを生成するための第1のシード、第1のユーザーに割り当てられる第1の固有コード及び文字セットを格納するメモリと、プロセッサとを含み、プロセッサは、第1のシードを用いて第1のOTPを生成し、第1のOTP及び第1の固有コードの演算結果を文字セットにマッピングして第1のサブコードを生成し、第1のOTPを文字セットにマッピングして第2のサブコードを生成し、第1のサブコード及び第2のサブコードを用いてコードを生成し、生成されたコードを通信モジュールを通じて他の電子装置に送信するように設定される。
【0016】
さらに、本発明の他の態様によれば、認証を遂行する電子装置が提供される。その電子装置は、他の電子装置から第1のコードを受信する通信モジュールと、OTPを生成するための第1のシード、第1のユーザーに割り当てられる第1の固有コード及び文字セットを格納するメモリと、プロセッサとを含み、プロセッサは、第1のシードを用いて第1のOTPを生成し、第1のOTP及び第1の固有コードの演算結果を文字セットにマッピングして第1のサブコードを生成し、第1のOTPを文字セットにマッピングして第2のサブコードを生成し、第1のサブコード及び第2のサブコードを用いて第2のコードを生成し、第2のコードと通信モジュールを通じて受信された第1のコードが一致する場合に認証を遂行し、第2コードと通信モジュールを通じて受信された第1のコードが一致しない場合には認証を遂行しないように設定される。
【発明の効果】
【0017】
本発明は、ランダムかつ固有のコードを生成する電子装置及び方法が提供される。生成されたランダムかつ固有のコードは、システムでユーザーを区分するためのID、電子商取引のための入力コード、文化商品券のような貨幣代用印刷物の識別コードなどの多様な技術分野で使用することができる。特に、本発明の多様な実施形態による電子装置及び方法は、ランダムかつ固有のコードを時間に従って動的に生成でき、それによってコードが流出される可能性が顕著に低下することができる。
【0018】
本発明による実施形態の上記及び他の態様、特徴、及び利点は、添付の図面と共に述べる以下の詳細な説明から、一層明らかになるはずである。
【図面の簡単な説明】
【0019】
図1】本発明の一実施形態による固有コードの生成方法を示すフローチャートである。
図2】本発明の一実施形態によるコードを生成する電子装置を示すブロック構成図である。
図3】本発明の一実施形態によるコード生成方法を示すフローチャートである。
図4】本発明の一実施形態によるコード生成方法を示すフローチャートである。
図5】本発明の一実施形態によるオフセット決定プロセスを示すフローチャートである。
図6】本発明の一実施形態による文字セット決定方法を示すフローチャートである。
図7】本発明の一実施形態による文字セット決定方法を示すフローチャートである。
図8】本発明の一実施形態によるスマートカード及びカードリーダー(reader)を示すブロック構成図である。
図9】本発明の一実施形態によるスマートカード及びリーダーの動作を示すフローチャートである。
図10】本発明の一実施形態による電子装置及び開閉システムの動作を示すフローチャートである。
図11】本発明の一実施形態によるマルチファクタ認証システムを説明するための概念図である。
図12】本発明の一実施形態によるスマートカードによる認証プロセスを説明するための概念図である。
図13】本発明の一実施形態によるシステムログインプロセスを説明するための概念図である。
図14】本発明の一実施形態によるIoT環境における電子装置の動作を説明するための概念図である。
【発明を実施するための形態】
【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)
【0077】
-R:ランダムコード
【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】
以上、本発明の詳細な説明においては具体的な実施形態に関して説明したが、特許請求の範囲の記載及びこれと均等なものに基づいて定められる本発明の範囲及び精神を逸脱することなく、形式や細部の様々な変更が可能であることは、当該技術分野における通常の知識を持つ者には明らかである。
【符号の説明】
【0131】
800 スマートカード
810、851 プロセッサ
820 メモリ
830、853 通信回路
850 カードリーダー
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14