(57)【要約】  サイドチャネル攻撃に安全な演算を実行するための装置および方法が提供される。前記装置および方法は、事前生成されたパラメーター候補値の集合から抽出された値とサイドチャネル攻撃に安全な演算を用いて指数演算またはスカラー積演算を実行して獲得される値と同じ値を生成することにより、性能の低下なしにサイドチャネル攻撃についての安全性を向上させる。
2020520613.tif 000002
【特許請求の範囲】
【請求項１】
シード（Ｓｅｅｄ）値を生成するシード値の生成部と、
前記シード値を複数のブロックに分割する分割部と、
複数の第１パラメーター候補値のそれぞれを用いて生成された複数の第２パラメーター候補値を含む第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックのうち、１つに対応する複数の第２パラメーター値を抽出する抽出部と、
前記複数の第２パラメーター値に基づいて乱数（Ｒａｎｄｏｍ  Ｎｕｍｂｅｒ）を生成する演算部を実行するプロセッサを含み、
前記プロセッサは、前記乱数に基づいてデータを暗号化するか、または前記データについての電子署名を生成する装置。
【請求項２】
前記第２パラメーター候補値の集合に含まれた複数の第２パラメーター候補値のそれぞれは、前記複数の第１パラメーター候補値のうち、対応する値を指数（Ｅｘｐｏｎｅｎｔ）として用いた指数演算（Ｅｘｐｏｎｅｎｔｉａｔｉｏｎ  Ｏｐｅｒａｔｉｏｎ）を実行するか、または前記複数の第１パラメーター候補値のうち、対応する値をスカラー乗数（Ｓｃａｌａｒ  Ｍｕｌｔｉｐｌｉｅｒ）として用いたスカラー積演算（Ｓｃａｌａｒ  Ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  Ｏｐｅｒａｔｉｏｎ）を実行して生成  される請求項１に記載の装置。
【請求項３】
前記抽出部は、前記第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロック内のビット列および前記分割されたブロックの前記シード値内の位置に対応する複数の第２パラメーター値を抽出する請求項１に記載の装置。
【請求項４】
前記抽出部は、前記第２パラメーター候補値の集合に含まれた前記複数の第２パラメーター候補値を生成するために用いられた前記複数の第１パラメーター候補値を含む第１パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックに対応する複数の第１パラメーター値を抽出する第１抽出部と、
前記第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックに対応する前記複数の第２パラメーター値を抽出する第２抽出部を含み、
前記演算部は、前記複数の第１パラメーター値に基づいて第１乱数を生成し、前記複数の第２パラメーター値に基づいて第２乱数を生成する請求項２に記載の装置。
【請求項５】
前記第１抽出部は、前記第１パラメーター候補値の集合から、それぞれ前記複数の分割されたブロック内のビット列および前記分割されたブロックの前記シード値内の位置に対応する複数の第１パラメーター値を抽出し、
前記第２抽出部は、前記第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロック内のビット列および前記分割されたブロックの前記シード値内の位置に対応する複数の第２パラメーター値を抽出する請求項４に記載の装置。
【請求項６】
前記演算部は、前記抽出された複数の第１パラメーター値を加えて前記第１乱数を生成する請求項４に記載の装置。
【請求項７】
前記第２乱数は、前記第１乱数を指数として用いた指数演算を実行するか、または前記第１乱数をスカラー乗数として用いたスカラー積演算を実行して獲得可能な値と同一である請求項４に記載の装置。
【請求項８】
前記プロセッサは、前記第１乱数および前記第２乱数に基づいて前記データを暗号化するか、または前記データについての電子署名を生成する請求項７に記載の装置。
【請求項９】
前記シード値は、任意のビット列（Ｒａｎｄｏｍ  Ｂｉｔ  Ｓｔｒｉｎｇ）を含む請求項１に記載の装置。
【請求項１０】
シード値を生成するステップと、
前記シード値を複数のブロックに分割するステップと、
複数の第１パラメーター候補値のそれぞれを用いて生成された複数の第２パラメーター候補値を含む第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックのうち、１つに対応する複数の第２パラメーター値を抽出するステップと、
前記抽出された複数の第２パラメーター値に基づいて乱数を生成するステップと、
データを暗号化するか、または前記データについての電子署名を生成するために前記乱数を適用するステップと、を含む方法。
【請求項１１】
前記第２パラメーター候補値の集合に含まれた複数の第２パラメーター候補値のそれぞれは、前記複数の第１パラメーター候補値のうち、対応する値を指数として用いた指数演算を実行するか、または前記複数の第１パラメーター候補値のうち、対応する値をスカラー乗数として用いたスカラー積演算を実行して生成される請求項１０に記載の方法。
【請求項１２】
前記複数の第２パラメーター値を抽出するステップは、前記第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロック内のビット列および前記分割されたブロックの前記シード値内の位置に対応する複数の第２パラメーター値を抽出する請求項１０に記載の方法。
【請求項１３】
前記複数の第２パラメーター値を抽出するステップは、
前記第２パラメーター候補値の集合に含まれた前記複数の第２パラメーター候補値を生成するために用いられた前記複数の第１パラメーター候補値を含む第１パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックに対応する複数の第１パラメーター値を抽出するステップと、
前記第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックに対応する前記複数の第２パラメーター値を抽出するステップを含み、
前記乱数を生成するステップは、
前記複数の第１パラメーター値に基づいて第１乱数を生成するステップと、
前記複数の第２パラメーター値に基づいて第２乱数を生成するステップを含む請求項１１に記載の方法。
【請求項１４】
前記第１パラメーター値を抽出するステップは、前記第１パラメーター候補値の集合から、それぞれ前記複数の分割されたブロック内のビット列および前記複数の分割されたブロックの前記シード値内の位置に対応する複数の第１パラメーター値を抽出し、
前記第２パラメーター値を抽出するステップは、前記第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロック内のビット列および前記複数の分割されたブロックの前記シード値内の位置に対応する複数の第２パラメーター値を抽出する請求項１３に記載の方法。
【請求項１５】
前記第１乱数を生成するステップは、前記抽出された複数の第１パラメーター値を加えて前記第１乱数を生成する請求項１３に記載の方法。
【請求項１６】
前記第２乱数を生成するステップは、前記抽出された複数の第２パラメーター値を用い、前記第１乱数を指数として用いた指数演算または前記第１乱数をスカラー乗数として用いたスカラー積演算を通じて、獲得可能な値と同じ第２乱数を生成する請求項１３に記載の方法。
【請求項１７】
前記第１乱数および前記第２乱数を用いて電子署名を生成するステップをさらに含む請求項１６に記載の方法。
【請求項１８】
前記シード値は、任意のビット列を含む請求項１０に記載の方法。
【請求項１９】
コンピューターをして請求項１０の方法を実行させるようにするプログラムが保存された非一時的なコンピュータ読み取り可能な媒体（Ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  Ｃｏｍｐｕｔｅｒ  Ｒｅａｄａｂｌｅ  Ｍｅｄｉｕｍ）。
【請求項２０】
シード値を受信し、
前記シード値を複数のブロックに分割し、
前記各ブロックのナンバーおよび前記各ブロック内の値を第１インデックスで用い、複数の第１パラメーター候補値を用いて生成された複数の第２パラメーター候補値を含む第２パラメーター候補値の集合から、前記複数のブロックのそれぞれについての第２パラメーター値を抽出し、
前記複数のブロックのそれぞれについて抽出された前記第２パラメーター値に基づいて乱数を生成し、
前記乱数に基づいてデータを暗号化するか、または前記データについての電子署名を生成するために前記乱数を適用するプロセッサを含む装置。
【請求項２１】
前記第２パラメーター候補値の集合に含まれた前記第２パラメーター候補値の数は、前記シード値の長さおよび前記複数のブロックの数に応じて変更される請求項２０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、サイドチャネル攻撃の防止技術と係る。
【背景技術】
【０００２】
ＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）デバイスが進化するにつれて、鍵交換、暗号化、電子署名などのための数学的な計算の実行中に、デバイスから流出する物理的な情報を用いて重要情報を探り出すサイドチャネル攻撃（Ｓｉｄｅ  Ｃｈａｎｎｅｌ  Ａｔｔａｃｋ）の危険性がますます高まっている。
【０００３】
サイドチャネル攻撃（Ｓｉｄｅ  Ｃｈａｎｎｅｌ  Ａｔｔａｃｋ）は、鍵交換、暗号化、電子署名などのためのアルゴリズム駆動時に実行される演算についてのサイドチャネル情報（例えば、電力消費、電磁波放出量、アルゴリズムの実行時間など）の流出を用いて秘密情報を獲得する。
【０００４】
サイドチャネル攻撃中で、電力解析攻撃（Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  Ａｔｔａｃｋ）は、最も強力なサイドチャネル攻撃として知られており、攻撃装備も低価で実現可能性が高く、非常に効率的な攻撃手段として知られている。だから、現在最も多くの研究が行われている分野である。このような電力解析攻撃方法には、大きく単純電力解析（Ｓｉｍｐｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ、ＳＰＡ）、差分電力解析（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ、ＤＰＡ）がある。
【０００５】
例えば、指数演算（Ｅｘｐｏｎｅｎｔｉａｔｉｏｎ  Ｏｐｅｒａｔｉｏｎ）またはスカラー積演算（Ｓｃａｌａｒ  Ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）は、従来の暗号鍵交換技法、公開鍵暗号化技法、電子署名技法などで必ず必要な演算である。指数（またはスカラー積）演算の場合、指数値をビット列として表記したときに、ビット列の各桁が１のときは二乗演算と掛け算演算を、０のときは掛け算演算のみを実行する。
【０００６】
電力解析攻撃は、指数値の各桁のビット値が１のときと０のときに実行される演算についての電力消費量が異なることを用いた攻撃である。すなわち、１のときの累乗後の掛け算演算は、電力消費量が大きく、０のときの電力消費量は、相対的に少ないため、指数演算時に消費される電力解析を通じて秘密値である指数値の情報を取得する方法として秘密値（秘密鍵など）についての情報を獲得できる。
【０００７】
このようなサイドチャネル攻撃についての防止方法は、一部のサイドチャネル攻撃のみを防御する方法であって、全般的なサイドチャネル攻撃に安全な方法は提案されなかった。また、現在までに提案されたサイドチャネル防止方法は、追加演算量が多く要求され、性能の低下、すなわち、電子署名の生成時間遅延の問題点がある。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の実施例は、サイドチャネル攻撃によって重要情報が露出されることを防止するための演算装置および方法を提供するためのものである。
【課題を解決するための手段】
【０００９】
一実施例によると、シード値を生成するシード値の生成部と、前記シード値を複数のブロックに分割する分割部と、複数の第１パラメーター候補値のそれぞれを用いて生成された複数の第２パラメーター候補値を含む第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックのうち、１つに対応する複数の第２パラメーター値を抽出する抽出部と、前記複数の第２パラメーター値に基づいて乱数（Ｒａｎｄｏｍ  Ｎｕｍｂｅｒ）を生成する演算部を実行するプロセッサを含み、前記プロセッサは、前記乱数に基づいてデータを暗号化するか、または前記データについての電子署名を生成する装置が提供される。
【００１０】
前記第２パラメーター候補値の集合に含まれた複数の第２パラメーター候補値のそれぞれは、前記複数の第１パラメーター候補値のうち、対応する値を指数（Ｅｘｐｏｎｅｎｔ）として用いた指数演算（Ｅｘｐｏｎｅｎｔｉａｔｉｏｎ  Ｏｐｅｒａｔｉｏｎ）を実行するか、または前記複数の第１パラメーター候補値のうち、対応する値をスカラー乗数（Ｓｃａｌａｒ  Ｍｕｌｔｉｐｌｉｅｒ）として用いたスカラー積演算（Ｓｃａｌａｒ  Ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  Ｏｐｅｒａｔｉｏｎ）を実行して生成され得る。
【００１１】
前記抽出部は、前記第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロック内のビット列および前記分割されたブロックの前記シード値内の位置に対応する複数の第２パラメーター値を抽出し得る。
【００１２】
前記抽出部は、前記第２パラメーター候補値の集合に含まれた前記複数の第２パラメーター候補値を生成するために用いられた前記複数の第１パラメーター候補値を含む第１パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックに対応する複数の第１パラメーター値を抽出する第１抽出部と、前記第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックに対応する前記複数の第２パラメーター値を抽出する第２抽出部をさらに含み、前記演算部は、前記複数の第１パラメーター値に基づいて第１乱数を生成し、前記複数の第２パラメーター値に基づいて第２乱数を生成し得る。
【００１３】
前記第１抽出部は、前記第１パラメーター候補値の集合から、それぞれ前記複数の分割されたブロック内のビット列および前記分割されたブロックの前記シード値内の位置に対応する複数の第１パラメーター値を抽出し、前記第２抽出部は、前記第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロック内のビット列および前記分割されたブロックの前記シード値内の位置に対応する複数の第２パラメーター値を抽出し得る。
【００１４】
前記演算部は、前記抽出された複数の第１パラメーター値を加えて前記第１乱数を生成し得る。
【００１５】
前記第２乱数は、前記第１乱数を指数として用いた指数演算を実行するか、または前記第１乱数をスカラー乗数として用いたスカラー積演算を実行して獲得可能な値と同一であり得る。
【００１６】
前記プロセッサは、前記第１乱数および前記第２乱数に基づいて、前記データを暗号化するか、または前記データについての電子署名を生成し得る。
【００１７】
前記シード値は、任意のビット列（Ｒａｎｄｏｍ  Ｂｉｔ  Ｓｔｒｉｎｇ）を含み得る。
【００１８】
一実施例によると、シード値を生成するステップと、  前記シード値を複数のブロックに分割するステップと、複数の第１パラメーター候補値のそれぞれを用いて生成された複数の第２パラメーター候補値を含む第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックのうち、１つに対応する複数の第２パラメーター値を抽出するステップと、前記抽出された複数の第２パラメーター値に基づいて乱数を生成するステップと、データを暗号化するか、または前記データについての電子署名を生成するために前記乱数を適用するステップと、を含む方法が提供される。
【００１９】
前記第２パラメーター候補値の集合に含まれた複数の第２パラメーター候補値のそれぞれは、前記複数の第１パラメーター候補値のうち、対応する値を指数として用いた指数演算を実行するか、または前記複数の第１パラメーター候補値のうち、対応する値をスカラー乗数として用いたスカラー積演算を実行して生成され得る。
【００２０】
前記複数の第２パラメーター値を抽出するステップは、前記第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロック内のビット列および前記分割されたブロックの前記シード値内の位置に対応する複数の第２パラメーター値を抽出し得る。
【００２１】
前記複数の第２パラメーター値を抽出するステップは、前記第２パラメーター候補値の集合に含まれた前記複数の第２パラメーター候補値を生成するために用いられた前記複数の第１パラメーター候補値を含む第１パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックに対応する複数の第１パラメーター値を抽出するステップと、前記第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックに対応する前記複数の第２パラメーター値を抽出するステップを含み、前記乱数を生成するステップは、前記複数の第１パラメーター値に基づいて第１乱数を生成するステップと、前記複数の第２パラメーター値に基づいて第２乱数を生成するステップを含み得る。
【００２２】
前記第１パラメーター値を抽出するステップは、前記第１パラメーター候補値の集合から、それぞれ前記複数の分割されたブロック内のビット列および前記複数の分割されたブロックの前記シード値内の位置に対応する複数の第１パラメーター値を抽出し、前記第２パラメーター値を抽出するステップは、前記第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロック内のビット列および前記複数の分割されたブロックの前記シード値内の位置に対応する複数の第２パラメーター値を抽出し得る。
【００２３】
前記第１乱数を生成するステップは、前記抽出された複数の第１パラメーター値を加えて前記第１乱数を生成し得る。
【００２４】
前記第２乱数を生成するステップは、前記抽出された複数の第２パラメーター値を用い、前記第１乱数を指数として用いた指数演算または前記第１乱数をスカラー乗数として用いたスカラー積演算を通じて、獲得可能な値と同じ第２乱数を生成し得る。
【００２５】
前記方法は、前記第１乱数および前記第２乱数を用いて電子署名を生成するステップをさらに含み得る。
【００２６】
前記シード値は、任意のビット列を含み得る。
【００２７】
一実施例によると、コンピューターをしてシード値を生成するステップと、前記シード値を複数のブロックに分割するステップと、複数の第１パラメーター候補値のそれぞれを用いて生成された複数の第２パラメーター候補値を含む第２パラメーター候補値の集合から、それぞれ前記複数の分割されたブロックのうち、１つに対応する複数の第２パラメーター値を抽出するステップと、前記抽出された複数の第２パラメーター値に基づいて乱数を生成するステップと、データを暗号化するか、または前記データについての電子署名を生成するために前記乱数を適用するステップと、を含む方法を実行させるようにするプログラムが保存された非一時的なコンピュータ読み取り可能な媒体が提供される。
【００２８】
一実施例によると、シード値を受信し、前記シード値を複数のブロックに分割し、前記各ブロックのナンバーおよび前記各ブロック内の値を第１インデックスで用い、複数の第１パラメーター候補値を用いて生成された複数の第２パラメーター候補値を含む第２パラメーター候補値の集合から、前記複数のブロックのそれぞれについての第２パラメーター値を抽出し、前記複数のブロックのそれぞれについて抽出された前記第２パラメーター値に基づいて乱数を生成し、前記乱数に基づいてデータを暗号化するか、または前記データについての電子署名を生成するために前記乱数を適用するプロセッサを含む装置が提供される。
【００２９】
前記第２パラメーター候補値の集合に含まれた前記第２パラメーター候補値の数は、前記シード値の長さおよび前記複数のブロックの数に応じて変更できる。
【発明の効果】
【００３０】
本発明の実施例によると、事前生成されたパラメーター候補値の集合から抽出された値とサイドチャネル攻撃に安全な演算を用いて指数演算またはスカラー積演算を実行して獲得される値と同じ値を生成できるようにすることにより、性能の低下なしにサイドチャネル攻撃についての安全性を向上させ得る。
【図面の簡単な説明】
【００３１】
【図１】本発明の一実施例による演算装置の構成図。
【００３２】
【図２】本発明の一実施例による第２パラメーター候補値の集合の一例を示す図面。
【００３３】
【図３】本発明の一実施例による第２パラメーター値の抽出の一例を示す図面。
【００３４】
【図４】本発明の他の実施例による演算装置の構成図。
【００３５】
【図５】本発明の一実施例による第１パラメーター候補値の集合の一例を示す図面。
【００３６】
【図６】本発明の一実施例による第１パラメーター値の抽出の一例を示す図面。
【００３７】
【図７】本発明のまた他の実施例による演算装置の構成図。
【００３８】
【図８】本発明の一実施例による第３パラメーター候補値の集合の一例を示す図面。
【００３９】
【図９】本発明の一実施例による第３パラメーター候補値の集合の他の例を示す図面。
【００４０】
【図１０】本発明の一実施例による第３パラメーター値の抽出の一例を示す図面。
【００４１】
【図１１】本発明の一実施例による第３パラメーター値の抽出の他の例を示す図面。
【００４２】
【図１２】本発明の一実施例による演算方法のフローチャート。
【００４３】
【図１３】本発明の他の実施例による演算方法のフローチャート。
【００４４】
【図１４】本発明の他の実施例による演算方法のフローチャート。
【発明を実施するための形態】
【００４５】
以下、図面を参照して本発明の具体的な実施形態を説明する。以下の詳細な説明は、本明細書で記述された方法、装置および／またはシステムについての包括的な理解を助けるために提供される。しかし、これは例示に過ぎず、本発明はこれに限定されない。
【００４６】
本発明の実施例を説明するにおいて、本発明と係る公知技術についての具体的な説明が本発明の要旨を不必要に曖昧にし得ると判断される場合には、その詳細な説明を省略する。そして、後述される用語は、本発明での機能を考慮して定義された用語として、これは使用者、運用者の意図または慣例などによって変わることができる。したがって、その定義は、本明細書の全般にわたる内容に基づいてなされるべきである。詳細な説明で使用される用語は、単に本発明の実施例を記述するためのものであり、決して限定的であってはならない。明確に別の方法で使用されていない限り、単数形態の表現は、複数形態の意味を含む。本説明において、「含み」または「備え」のような表現は、ある特性、数字、ステップ、動作、要素、これらの一部または組み合せを示すためのものであり、記述されたもの以外に、１つまたはその以上の他の特性、数字、ステップ、動作、要素、これらの一部または組み合せの存在または可能性を排除するように解釈されてはならない。
【００４７】
図１は、本発明の一実施例による演算装置の構成図である。
【００４８】
図１を参照すると、本発明の一実施例による演算装置１００は、シード値の生成部１１０、分割部１２０、抽出部１３０および演算部１４０を含む。
【００４９】
シード値の生成部１１０は、シード値を生成する。一実施例によると、シード値は、任意のビット列で構成され得る。
【００５０】
このとき、シード値の生成部１１０は、例えば、任意のビット値を連続的に生成してシード値を生成し得る。
【００５１】
他の例として、シード値の生成部１１０は、外部装置から獲得されたアイディーを任意のビット列に変換してシード値を生成し得る。このとき、獲得されたアイディーを任意のビット列に変換するために例えば、ＳＨＡ−２５６のようなハッシュ関数を用い得る。
【００５２】
しかし、シード値の生成部１１０によるシード値の生成方式は、必ずしも特定の方式に限定されるものではないため、シード値の生成部１１０は、予め設定された長さの任意のビット列を生成し得る公知の様々な方式を用いてシード値を生成し得る。
【００５３】
分割部１２０は、シード値の生成部１１０によって生成されたシード値を複数のブロックに分割する。
【００５４】
具体的に、本発明の一実施例によると、分割部１２０は、シード値を予め設定されたサイズに分割し、複数のブロックを生成し得る。このとき、分割部１２０によって生成されるブロックの数は、実施例に応じて変更可能である。
【００５５】
例えば、シード値の生成部１１０で生成されたシード値が２５６ビット長さのビット列の場合、分割部１２０は、シード値を８ビットの単位に分割し、３２個のブロックを生成し得る。
【００５６】
抽出部１３０は、複数の第１パラメーター候補値のそれぞれを用いて生成された複数の第２パラメーター候補値を含む第２パラメーター候補値の集合から、分割部１２０によって分割された複数のブロックのそれぞれに対応する複数の第２パラメーター値を抽出する。
【００５７】
このとき、本発明の一実施例によると、複数の第１パラメーター候補値は、事前生成され、ストーリッジに保存された任意の値であり得る。
【００５８】
また、本発明の一実施例によると、第２パラメーター候補値の集合に含まれた第２パラメーター候補値は、複数の第１パラメーター候補値のそれぞれを指数（Ｅｘｐｏｎｅｎｔ）として用いた指数演算（Ｅｘｐｏｎｅｎｔｉａｔｉｏｎ  Ｏｐｅｒａｔｉｏｎ）または複数の第１パラメーター候補値のそれぞれをスカラー乗数（Ｓｃａｌａｒ  Ｍｕｌｔｉｐｌｉｅｒ）として用いたスカラー積演算（Ｓｃａｌａｒ  Ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  Ｏｐｅｒａｔｉｏｎ  ）を通じて事前生成された値であり得る。
【００５９】
一方、本発明の一実施例によると、第２パラメーター候補値の集合は、２ｎ×Ｍ個の第２パラメーター候補値を含み得る。このとき、Ｍは、分割部によって生成されるブロックの数を示し、ｎは、分割された各ブロックに含まれるビット列の長さを示す。すなわち、第２パラメーター候補値の集合に含まれる第２パラメーター候補値の数は、シード値の生成部１１０で生成されるシード値の長さおよび分割部１２０で生成されるブロックの数に応じて変更できる。
【００６０】
一方、本発明の一実施例によると、抽出部１３０は、第２パラメーター候補値の集合から分割部１２０によって分割された各ブロックのビット列およびシード値内の位置に対応する第２パラメーター値を抽出し得る。
【００６１】
具体的に、第２パラメーター候補値の集合に含まれた各第２パラメーター候補値は、それぞれｎビットの長さを有する２ｎ個の互いに異なるビット列のうちの１つのビット列と当該のビット列を含むブロックのシード値内の位置にインデキシングされ得る。これにより、抽出部１３０は、分割部１２０によって分割された各ブロックに含まれたビット列および当該のブロックのシード値内の位置と第２パラメーター候補値の集合に含まれた第２パラメーター候補値のそれぞれのインデックス値を比較し、対応する第２パラメーター候補値を第２パラメーター値として抽出し得る。
【００６２】
図２は、一実施例による第２パラメーター候補値の集合の一例を示す図面である。
【００６３】
図２に示された例では、シード値の生成部１１０によって生成されたシード値の長さが２５６ビットであり、分割部１２０でシード値を８ビット長さの３２個のブロックに分割する。これにより、図２に示された第２パラメーター候補値の集合２１０は、２８×３２個の第２パラメーター候補値を含み得る。
【００６４】
具体的に、第２パラメーター候補値ｒｉ、ｊは、例えば、下の数１のように、第１パラメーター候補値ｋｉ、ｊを指数として用いた指数演算を通じて生成され得る。
【００６５】
【数１】
2020520613.tif 000003
【００６６】
【００６７】
数１で、ｐは任意の素数であり、ｇは位数がｐである掛け算群の生成元（Ｇｅｎｅｒａｔｏｒ）を示す。
【００６８】
他の例として、第２パラメーター候補値ｒｉ、ｊは、下の数２および数３のように、第１パラメーター候補値ｋｉ、ｊをスカラー乗数として用いたスカラー積演算を実行して生成され得る。
【００６９】
【数２】
2020520613.tif 000004
【００７０】
【００７１】
【数３】
2020520613.tif 000005
【００７２】
【００７３】
数２および数３で、ｐは任意の素数であり、Ｐは位数がｐである加算群の生成元を示す。
【００７４】
一方、第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値のそれぞれは、８ビット長さの２５６個のビット列のうちの１つと当該のビット列を含むブロックのシード値内の位置に対応する。
【００７５】
具体的に、ｒ１、１は、「００００００００」であるビット列とシード値内の１番目のブロック（すなわち、１ｂｌｏｃｋ）にインデキシングされた第２パラメーター候補値を示し、ｒ２５６、３２は、「１１１１１１１１」であるビット列とシード値内の３２番目のブロック（すなわち、３２ｂｌｏｃｋ）にインデキシングされた第２パラメーター候補値を示す。
【００７６】
図３は、一実施例による第２パラメーター値の抽出の一例を示す図面である。
【００７７】
図３に示された例では、シード値の生成部１１０によって生成されたシード値３１０の長さが２５６ビットであり、分割部１２０でシード値３１０を８ビット長さの３２個のブロックに分割する。また、第２パラメーター候補値の集合３３０は、図２に示された第２パラメーター候補値の集合２１０と同一である。他の実施例によると、第２パラメーター候補値の集合３３０は、図２に示された第２パラメーター候補値の集合２１０と異なり得る。
【００７８】
図３に示された例において、シード値３１０から分割された３２個のブロックのうち、１番目のブロックに含まれたビット列は、「１１１１１１０」であるため、抽出部１３０は、第２パラメーター候補値の集合３３０で「１ｂｌｏｃｋ」とビット列「１１１１１１０」に対応する第２パラメーター候補値であるｒ２５５、１を１番目のブロックに対応する第２パラメーター値として抽出し得る。
【００７９】
また、シード値３１０から分割されたブロックのうち、２番目のブロックに含まれたビット列は、「００００００１０」であるため、抽出部１３０は、第２パラメーター候補値の集合３３０で「２ｂｌｏｃｋ」とビット列「００００００１０」に対応する第２パラメーター候補値であるｒ３、２を２番目のブロックに対応する第２パラメーター値として抽出し得る。
【００８０】
これと同一の方法で、抽出部１３０は、第２パラメーター候補値の集合３３０でシード値３１０から分割された３２個のブロックのそれぞれに対応する第２パラメーター値を抽出し得る。
【００８１】
これにより、図３に示された例において、抽出部１３０によって抽出される第２パラメーター値は、｛ｒ２５５、１、ｒ３、２、ｒ１、３、…、ｒ３、３０、ｒ２５６、３１、ｒ２５５、３２｝のようである。
【００８２】
再び、図１を参照すると、演算部１４０は、抽出部１３０で抽出された第２パラメーター値を用いて乱数を生成する。
【００８３】
このとき、本発明の一実施例によると、演算部１４０は、第２パラメーター候補値の集合で抽出された第２パラメーター値を掛けるか、または加えて乱数を生成し得る。
【００８４】
例えば、第２パラメーター候補値の集合が前述した数１のように、第１パラメーター候補値を用いた指数演算を実行して生成された第２パラメーター候補値を含む場合、演算部１４０は、下の数４を用いて図３に示された例で抽出された第２パラメーター値から乱数ｒを生成し得る。
【００８５】
【数４】
2020520613.tif 000006
【００８６】
【００８７】
一方、前述した数１を数４に代入すると、数４は、下の数５のように表現できる。
【００８８】
【数５】
2020520613.tif 000007
【００８９】
【００９０】
すなわち、数４によって生成される乱数ｒは、抽出部１３０で抽出された第２パラメーター値を生成するために指数値に用いられた第１パラメーター候補値｛ｒ２５５、１、ｒ３、２、ｒ１、３  ．．ｒ３、３０、ｒ２５６、３１、ｒ２５５、３２｝の合ｋを指数として用いた指数演算を実行して獲得される値と同一である。
【００９１】
他の例として、第２パラメーター候補値の集合が例えば、前述した数２および数３のように、第１パラメーター候補値を用いたスカラー積演算を実行して生成された第２パラメーター候補値を含む場合、演算部１４０は、下の数６を用いて図３に示された例で抽出された第２パラメーター値から乱数ｒを生成し得る。
【００９２】
【数６】
2020520613.tif 000008
【００９３】
【００９４】
一方、前述した数３を数６に代入すると、数６は、下の数７のように表現できる。
【００９５】
【数７】
2020520613.tif 000009
【００９６】
【００９７】
また、数２から数７の（ｘ２５５、１＋ｘ３、２＋ｘ１、３＋．．＋ｘ３、３０＋ｘ２５６、３１＋ｘ２５５、３２）は、下の数８のようなスカラー積演算を用いて導出された値と同一であることが知れる。
【００９８】
【数８】
2020520613.tif 000010
【００９９】
【０１００】
したがって、数６によって生成される乱数ｒは、抽出部１３０で抽出された第２パラメーター値を生成するために、スカラー乗数に用いられた第１パラメーター候補値｛ｋ２５５、１、ｋ３、２  、ｋ１、３、．．ｋ３、３０、ｋ２５６、３１、ｋ２５５、３２｝の合ｋをスカラー乗数として用いたスカラー積演算を実行して導出される値と同一である。
【０１０１】
他の実施例によると、演算部１４０は、前述した数４および数６のように抽出された第２パラメーター値を掛けるか、または加えること以外にも、様々な形態の一方向関数を用いて乱数ｒを生成し得る。
【０１０２】
また、本発明の一実施例によると、演算部１４０は、生成された乱数ｒを用い、データを暗号化するか、または電子署名を生成し得る。
【０１０３】
具体的に、演算部１４０は、暗号化または電子署名の生成のために、指数演算またはスカラー積演算が要求される様々な方式の暗号アルゴリズムないしは電子署名アルゴリズムを用い、データを暗号化または電子署名を生成し得る。このとき、演算部１４０は、指数演算またはスカラー積演算を直接実行せずに、乱数ｒを指数演算またはスカラー積演算の結果値として用い得る。このように、一実施例によると、鍵交換、暗号化または電子署名のために直接的な指数演算または直接的なスカラー積演算が実行されないため、数学的演算の実行中にサイドチャネル攻撃によって装置から流出する物理的情報の悪用が防止される。
【０１０４】
例えば、アイディーベース公開鍵暗号化の場合、暗号化されたデータの受信者のアイディーから受信者の公開鍵を生成した後に、生成された公開鍵を用いて暗号化されたデータが受信者に送信される。この場合、シード値の生成部１１０は、受信者のアイディーを任意のビット列に変換してシード値を生成し得、分割部１２０は、生成されたシード値を複数のブロックに分割できる。以後、抽出部１３０は、第２パラメーター候補値の集合から、分割された各ブロックに対応する第２パラメーター値を抽出し、演算部１４０は、抽出された第２パラメーター値を用いて乱数ｒを生成した後に、生成された乱数ｒを受信者の公開鍵として用い得る。このとき、第２パラメーター候補値の集合は、例えば、鍵生成サーバーのような外部装置によって予め生成されて安全なチャネルを介して提供され得る。
【０１０５】
具体的な例として、演算部１４０は、任意の乱数ｔを選択し、下のような暗号文Ｃ１を生成し得る。
【０１０６】
Ｃ１＝ｇｔ（Ｍｏｄ  ｐ）
【０１０７】
以後、演算部１４０は、第２パラメーター候補値の集合から抽出された第２パラメーター値を用いて生成された乱数ｒを公開鍵ｐｋに用い、下のような暗号文Ｃ２を生成し得る。
【０１０８】
Ｃ２＝（ｐｋｔ  Ｍｏｄ  ｐ）ＸＯＲ  Ｍ＝（（ｇｘ）ｔ  Ｍｏｄ  ｐ）ＸＯＲ  Ｍ
【０１０９】
このとき、Ｍは送信するメッセージを示し、ｘはデータが送信される受信者の秘密鍵を示す。
【０１１０】
一方、一実施例において、図１に示されたシード値の生成部１１０、分割部１２０、抽出部１３０および演算部１４０は、１つ以上のプロセッサおよびそのプロセッサと接続されたコンピューター読み取り可能な記録媒体を含む１つ以上のコンピューティング装置上で実装できる。コンピューター読み取り可能な記録媒体は、プロセッサの内部または外部にあり得、よく知られている様々な手段でプロセッサと接続され得る。コンピューティング装置内のプロセッサは、各コンピューティング装置をして本明細書で記述される例示的な実施例に応じて動作させ得る。例えば、プロセッサは、コンピューター読み取り可能な記録媒体に保存された命令語を実行でき、コンピューター読み取り可能な記録媒体に保存された命令語は、プロセッサによって実行される場合、コンピューティング装置をして本明細書に記述される例示的な実施例による動作を実行させるように構成され得る。
【０１１１】
図４は、本発明の他の実施例による演算装置の構成図である。
【０１１２】
図４を参照すると、本発明の一実施例による演算装置４００は、シード値の生成部４１０、分割部４２０、第１抽出部４３０、第２抽出部４４０および演算部４５０を含む。
【０１１３】
一方、図４に示された例において、シード値の生成部４１０、分割部４２０および第２抽出部４４０は、それぞれ図１に示されたシード値の生成部１１０、分割部１２０および抽出部１３０と同じ構成であるため、これについての重複的な説明は省略する。
【０１１４】
第１抽出部４３０は、複数の第１パラメーター候補値を含む第１パラメーター候補値の集合から、それぞれ分割部４２０によって分割された複数のブロックのそれぞれに対応する複数の第１パラメーター値を抽出する。一実施例によると、複数の第１パラメーター候補値は、図２および図３で前述した第２パラメーター候補値の集合に含まれた第２パラメーター候補値のそれぞれを生成するために用いられた値と同一であり得る。
【０１１５】
このとき、本発明の一実施例によると、第１パラメーター候補値の集合は、２ｎ×Ｍ個の第１パラメーター候補値を含み得る。また、第１パラメーター候補値の集合に含まれる第１パラメーター候補値の数は、シード値の生成部４１０で生成されるシード値の長さおよび分割部４２０で生成されるブロックの数に応じて変更できる。
【０１１６】
本発明の一実施例によると、第１抽出部４３０は、第１パラメーター候補値の集合から、それぞれ分割部４２０によって生成された各ブロックのビット列および各ブロックのシード値内の位置に対応する第１パラメーター値を抽出し得る。
【０１１７】
具体的に、第１パラメーター候補値の集合に含まれた第１パラメーター候補値は、それぞれｎビット長さの２ｎ個の互いに異なるビット列のうちの１つのビット列と当該のビット列を含むブロックのシード値内の位置にインデキシングされ得る。
【０１１８】
これにより、第１抽出部４３０は、分割部４２０によって分割された各ブロックに含まれたビット列および当該のブロックのシード値内の位置と第１パラメーター候補値の集合に含まれた第１パラメーター候補値のそれぞれのインデックス値を比較し、対応する第１パラメーター候補値を第１パラメーター値として抽出し得る。
【０１１９】
一方、第１パラメーター候補値の集合に含まれた第１パラメーター候補値のそれぞれは、第２パラメーター候補値の集合に含まれた第２パラメーター候補値のうち、対応する第２パラメーター候補値と同じインデックス値を有し得る。
【０１２０】
図５は、本発明の一実施例による第１パラメーター候補値の集合の一例を示す図面である。
【０１２１】
具体的に、図５は、図２に示された第２パラメーター候補値の集合に含まれた第２パラメーター候補値のそれぞれを生成するために用いられた第１パラメーター候補値を含む第１パラメーター候補値の集合の例を示す。
【０１２２】
すなわち、図５に示された第１パラメーター候補値ｋ１、１は、図２に示された第２パラメーター候補値をｒ１、１を生成するために用いられた第１パラメーター候補値を示し、ｒ１、１と同様に「００００００００」であるビット列とシード値内の１番目のブロック（すなわち、１ｂｌｏｃｋ）にインデキシングされる。
【０１２３】
同様に、図５に示された第１パラメーター候補値ｋ３、３は、図２に示された第２パラメーター候補値ｒ３、３を生成するために用いられた第１パラメーター候補値を示し、ｒ３、３と同様に「００００００１０」であるビット列とシード値内の３番目のブロック（すなわち、３ｂｌｏｃｋ）にインデキシングされる。
【０１２４】
図６は、本発明の一実施例による第１パラメーター値の抽出の一例を示す図面である。
【０１２５】
図６に示された例において、シード値６１０は、図３に示されたシード値３１０と同じ値であり、分割部４２０でシード値６１０を８ビット長さの３２個のブロックに分割する。また、第１パラメーター候補値の集合６３０は、図１に示された第１パラメーター候補値の集合５１０と同一である。しかし、他の実施例によると、第１パラメーター候補値の集合６３０は、図１に示された第１パラメーター候補値の集合５１０と異なり得る。
【０１２６】
図６に示された例において、シード値６１０から分割された３２個のブロックのうち、１番目のブロックに含まれたビット列が「１１１１１１０」の場合、第１抽出部４３０は、第１パラメーター候補値の集合６３０で「１ｂｌｏｃｋ」とビット列「１１１１１１０」に対応する第１パラメーター候補値であるｋ２５５、１を１番目のブロックに対応する第１パラメーター値として抽出し得る。
【０１２７】
また、シード値６１０から分割されたブロックのうち、２番目のブロックに含まれたビット列は、「００００００１０」であるため、第１抽出部４３０は、第１パラメーター候補値の集合６３０で「２  ｂｌｏｃｋ」とビット列「００００００１０」に対応する第１パラメーター候補値であるｋ３、２を２番目のブロックに対応する第１パラメーター値として抽出し得る。
【０１２８】
これと同一の方法で、第１抽出部４３０は、第１パラメーター候補値の集合６３０でシード値６１０から分割された３２個のブロックのそれぞれに対応する第１パラメーター値を抽出し得る。
【０１２９】
これにより、図６に示された例において、第１抽出部４３０によって抽出される第１パラメーター値は、｛ｋ２５５、１、ｋ３、２、ｋ１、３、．．ｋ３、３０、ｋ２５６、３１、ｋ２５５、３２｝のようである。
【０１３０】
再び、図４を参照すると、演算部４５０は、第１抽出部４３０で抽出された第１パラメーター値を用いて第１乱数を生成し、第２抽出部４４０で抽出された第２パラメーター値を用いて第２乱数を生成する。
【０１３１】
このとき、本発明の一実施例によると、演算部４５０は、第１パラメーター候補値の集合で抽出された第１パラメーター値を加えて第１乱数を生成し得る。
【０１３２】
例えば、演算部４５０は、下の数９を用い、図６に示された例で抽出された第１パラメーター値から第１乱数ｋを生成し得る。
【０１３３】
【数９】
2020520613.tif 000011
【０１３４】
【０１３５】
一方、演算部４５０は、前述した数９以外にも、様々な形態の一方向関数を用いて第１乱数ｋを生成し得る。
【０１３６】
一方、第２パラメーター候補値の集合が例えば、前述した数１のように、第１パラメーター候補値を用いた指数演算を実行して生成された第２パラメーター候補値を含む場合、演算部４５０は、前述した数４を用い、図３に示された例で抽出された第２パラメーター値から第２乱数ｒを生成し得る。
【０１３７】
他の例として、第２パラメーター候補値の集合が例えば、前述した数２および数３のように、第１パラメーター候補値を用いたスカラー積演算を実行して生成された第２パラメーター候補値を含む場合、演算部４５０は、前述した数６を用い、図３に示された例で抽出された第２パラメーター値から第２乱数ｒを生成し得る。
【０１３８】
一方、本発明の一実施例によると、演算部４５０は、生成された第１乱数ｋおよび第２乱数ｒを用い、データを暗号化するか、または電子署名を生成し得る。
【０１３９】
具体的に、演算部４５０は、暗号化または電子署名の生成のために、指数演算またはスカラー積演算が要求される様々な方式の暗号アルゴリズムないしは電子署名アルゴリズムを用い、データを暗号化するか、または電子署名を生成し得る。このとき、演算部４５０は、指数演算またはスカラー積演算を直接実行せずに、第２乱数ｒを指数演算またはスカラー積演算の結果値として用い得る。
【０１４０】
このように、一実施例によると、鍵交換、暗号化または電子署名のために直接的な指数演算または直接的なスカラー積演算が実行されないため、数学的演算の実行中にサイドチャネル攻撃によって装置から流出する物理的情報の悪用が防止される。
【０１４１】
例えば、演算部４５０は、電子署名技術の１つであるＤＳＡ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ａｌｇｏｒｉｔｈｍ）を用いて電子署名を生成し得る。
【０１４２】
具体的に、ＤＳＡ  による電子署名は、下記のように生成される。
【０１４３】
１）ｋ∈［１、ｑ−１］であるランダム値ｋ選択
【０１４４】
２）ｒ＝（ｇｋ  ｍｏｄ  ｐ）ｍｏｄ  ｑ計算（このとき、ｐは任意の素数、ｐは素数としてｐ−１の約数、ｇは位数がｐである掛け算群の生成元）
【０１４５】
３）ｓ＝ｋ−１（Ｈ（ｍ）＋ｃｒ）ｍｏｄ  ｑ計算（このとき、ｃは秘密鍵、Ｍはメッセージ、Ｈ（）はハッシュ関数）
【０１４６】
４）メッセージについての署名値（ｒ、ｓ）出力
【０１４７】
このとき、演算部４５０は、第１乱数をランダム値ｋとして用い得、第２乱数を署名値ｒとして用い得る。すなわち、署名値ｒは、ｋを用いた指数演算ではなく、第２パラメーター候補値の集合で抽出された第２パラメーター値を用いた掛け算演算のように、サイドチャネル攻撃に安全な他の演算を実行して獲得できる。これにより、サイドチャネル攻撃によって署名値ｒを生成するために使用されたランダム値ｋが知れなくなり、署名値ｓを生成するために使用された秘密鍵ｃも安全になる。
【０１４８】
他の例として、演算部４５０は、電子署名技術の１つであるＥＣＤＳＡ（Ｅｌｌｉｐｔｉｃ  Ｃｕｒｖｅ  Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ａｌｇｏｒｉｔｈｍ）を用いて電子署名を生成し得る。
【０１４９】
具体的に、ＥＣＤＳＡによる電子署名は、下記のように生成される。
【０１５０】
１）ｋ∈［１、ｑ−１］であるランダム値ｋ選択（ｑは素数としてｐ−１の約数、ｐは任意の素数）
【０１５１】
２）ｋ・Ｐ＝（ｘ、ｙ）計算（このとき、Ｐは位数がｐである加算群の生成元）
【０１５２】
３）ｒ＝ｘ  ｍｏｄ  ｐ  計算
【０１５３】
４）ｓ＝ｋ−１（Ｈ（ｍ）＋ｃｒ）ｍｏｄ（ｐ−１）計算（このとき、ｃは秘密鍵、Ｍはメッセージ、Ｈ（）はハッシュ関数）
【０１５４】
５）メッセージについての署名値（ｒ、ｓ）出力
【０１５５】
このとき、演算部４５０は、第１乱数値をランダム値ｋとして用い得、第２乱数を署名値ｒとして用い得る。すなわち、署名値ｒは、ｋを用いたスカラー積演算ではなく、第２パラメーター候補値の集合で抽出された第２パラメーター値を用いた加算演算のように、サイドチャネル攻撃に安全な他の演算を実行して獲得できる。これにより、サイドチャネル攻撃によって署名値ｒを生成するために使用されたランダム値ｋが知れなくなり、署名値ｓを生成するために使用された秘密鍵ｃも安全になる。
【０１５６】
一方、一実施例において、図４に示されたシード値の生成部４１０、分割部４２０、第１抽出部４３０、第２抽出部４４０および演算部４５０は、１つ以上のプロセッサおよびそのプロセッサと接続されたコンピューター読み取り可能な記録媒体を含む１つ以上のコンピューティング装置上で実装できる。コンピューター読み取り可能な記録媒体は、プロセッサの内部または外部にあり得、よく知られている様々な手段でプロセッサと接続され得る。コンピューティング装置内のプロセッサは、各コンピューティング装置をして本明細書で記述される例示的な実施例に応じて動作させ得る。例えば、プロセッサは、コンピューター読み取り可能な記録媒体に保存された命令語を実行でき、コンピューター読み取り可能な記録媒体に保存された命令語は、プロセッサによって実行される場合、コンピューティング装置をして本明細書に記述される例示的な実施例による動作を実行させるように構成され得る。
【０１５７】
図７は、本発明の他の実施例による演算装置の構成図である。
【０１５８】
図７を参照すると、本発明の一実施例による演算装置７００は、シード値の生成部７１０、分割部７２０、第１抽出部７３０、第２抽出部７４０、第３抽出部７５０および演算部７６０を含む。
【０１５９】
一方、図７に示された例において、シード値の生成部７１０、分割部７２０、第１抽出部７３０および第２抽出部７４０は、それぞれ図４に示されたシード値の生成部４１０、分割部４２０、第１抽出部４３０、第２抽出部４４０と同じ構成であるため、これについての重複的な説明は省略する。
【０１６０】
第３抽出部７５０は、第２パラメーター候補値の集合に含まれた複数の第２パラメーター候補値のそれぞれを用いて生成された複数の第３パラメーター候補値を含む第３パラメーター候補値の集合から、分割部７２０によって分割された複数のブロックのそれぞれに対応する複数の第３パラメーター値を抽出する。
【０１６１】
本発明の一実施例によると、第３パラメーター候補値の集合は、第１パラメーター候補値の集合および第２パラメーター候補値の集合と同様に２ｎ×Ｍ個の第３パラメーター候補値を含み得る。すなわち、第３パラメーター候補値の集合に含まれる第３パラメーター候補値の数は、シード値の生成部７１０で生成されるシード値の長さおよび分割部７２０で生成されるブロックの数に応じて変更できる。
【０１６２】
また、本発明の一実施例によると、第３パラメーター候補値の集合に含まれた第３パラメーター候補値は、第２パラメーター候補値の集合に含まれた第２パラメーター候補値のそれぞれを用いて生成され、第３パラメーター候補値の集合に含まれた第３パラメーター候補値のうち、少なくとも一部は暗号化または電子署名の生成に用られる秘密鍵を掛けた値を含み得る。
【０１６３】
具体的に、第３パラメーター候補値の集合に含まれた第３パラメーター候補値は、例えば、第２パラメーター候補値の集合に含まれた第２パラメーター候補値のそれぞれに秘密鍵を掛けた値であり得る。
【０１６４】
他の例として、第３パラメーター候補値の集合に含まれた第３パラメーター候補値のうちの一部は、第２パラメーター候補値の集合に含まれた第２パラメーター候補値のうちの一部と同じ値であり、第３パラメーター候補値の集合に含まれた第３パラメーター候補値のうちの残りの一部は、第２パラメーター候補値の集合に含まれた残りの第２パラメーター候補値のそれぞれに秘密鍵を掛けた値であり得る。
【０１６５】
一方、本発明の一実施例によると、第３パラメーター候補値の集合に含まれた第３パラメーター候補値は、それぞれｎビット長さの２ｎ個の互いに異なるビット列のうちの１つのビット列と当該のビット列を含むブロックのシード値内の位置にインデキシングされ得る。これにより、第３抽出部７５０は、分割部７２０によって分割された各ブロックに含まれたビット列および当該のブロックのシード値内の位置と第３パラメーター候補値の集合に含まれた第３パラメーター候補値のそれぞれのインデックス値を比較し、対応する第３パラメーター候補値を第３パラメーター値として抽出し得る。
【０１６６】
一方、第３パラメーター候補値の集合に含まれた第３パラメーター候補値のそれぞれは、第２パラメーター候補値の集合に含まれた第２パラメーター候補値のうち、対応する第２パラメーター候補値と同じインデックス値を有し得る。
【０１６７】
図８は、本発明の一実施例による第３パラメーター候補値の集合の一例を示す図面である。
【０１６８】
具体的に、図８は、図２に示された第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値から生成された第３パラメーター候補値を含む第３パラメーター候補値の集合の例を示す。
【０１６９】
図８に示された例において、第３パラメーター候補値の集合８１０は、図２に示された第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値と同じ数（すなわち、２８×３２個）の第３パラメーター候補値を含む。
【０１７０】
具体的に、第３パラメーター候補値の集合８１０に含まれた第３パラメーター候補値のそれぞれは、３２個のブロックのうちの１つのブロックと互いに異なる８ビット長さのビット列のうちの１つのビット列を用いてインデキシングされる。このとき、第３パラメーター候補値の集合８１０に含まれた第３パラメーター候補値のそれぞれは、第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値のうち、対応する第２パラメーター候補値と同じインデックス値を有する。
【０１７１】
一方、第３パラメーター候補値の集合８１０のうち、「３２ｂｌｏｃｋ」をインデックス値に有する第３パラメーター候補値（すなわち、ｃｒ１、３２、ｃｒ２、３２、ｃｒ３、３２、．．．、ｃｒ２５５、３２、ｃｒ２５６、３２）を除いた残りの第３パラメーター候補値は、第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値のうち、同じインデックス値を有する第２パラメーター候補値と同じ値を有する。
【０１７２】
一方、第３パラメーター候補値の集合８１０のうち、「３２ｂｌｏｃｋ」をインデックス値に有する第３パラメーター候補値（すなわち、ｃｒ１、３２、ｃｒ２、３２、ｃｒ３、３２、．．．、ｃｒ２５５、３２、ｃｒ２５６、３２）は、第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値のうち、同じインデックス値を有する第２パラメーター候補値（すなわち、ｒ１、３２、ｒ２、３２、ｒ３、３２、．．．、ｒ２５５、３２、ｒ２５６、３２）のそれぞれに秘密鍵ｃを掛けた値と同じ値を有する。
【０１７３】
具体的に、第３パラメーター候補値ｒ１、１は、第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値ｒ１、１と同じ値を示し、「００００００００」であるビット列と１番目のブロック（すなわち、１ｂｌｏｃｋ）にインデキシングされる。
【０１７４】
また、第３パラメーター候補値ｃｒ１、３２は、第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値ｒ１、３２に秘密鍵ｃを掛けて生成された第３パラメーター候補値を示し、ｒ１、３２と同様に「００００００００」であるビット列と３２番目のブロック（すなわち、３２ｂｌｏｃｋ）にインデキシングされる。
【０１７５】
一方、図８に示された例においては、「３２ｂｌｏｃｋ」をインデックス値に有する第３パラメーター候補値（すなわち、ｃｒ１、３２、ｃｒ２、３２、ｃｒ３、３２、．．．、ｃｒ２５５、３２、ｃｒ２５６、３２）が同じブロックをインデックス値として有する第２パラメーター候補値（すなわち、ｒ１、３２、ｒ２、３２、ｒ３、３２、．．．、ｒ２５５、３２、ｒ２５６、３２）のそれぞれに秘密鍵ｃを掛けた値であると例示しているが、必ずしもこれに限定されるものではない。具体的に、第３パラメーター候補値の集合に含まれた第３パラメーター候補値のうち、特定ブロックをインデックス値に有する第３パラメーター候補値は、同じブロックをインデックス値に有する第２パラメーター候補値のそれぞれに秘密鍵ｃを掛けた値と同じ値を有し得る。
【０１７６】
図９は、本発明の一実施例による第３パラメーター候補値の集合の他の例を示す図面である。
【０１７７】
具体的に、図９は、図２に示された第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値から生成された第３パラメーター候補値を含む第３パラメーター候補値の集合の例を示す。
【０１７８】
図９に示された例において、第３パラメーター候補値の集合９１０は、図２に示された第２パラメーター候補値の集合２１０と同じ数（すなわち、２８×３２個）の第３パラメーター候補値を含む。
【０１７９】
具体的に、第３パラメーター候補値の集合９１０に含まれた第３パラメーター候補値のそれぞれは、３２個のブロックのうちの１つのブロックと互いに異なる８ビット長さのビット列のうちの１つのビット列を用いてインデキシングされる。このとき、第３パラメーター候補値の集合９１０に含まれた第３パラメーター候補値のそれぞれは、第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値のうち、対応する第２パラメーター候補値と同じインデックス値を有する。
【０１８０】
また、第３パラメーター候補値の集合９１０に含まれた第３パラメーター候補値のそれぞれは、第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値のうち、同じインデックス値を有する第２パラメーター候補値に秘密鍵ｃを掛けた値と同じ値を有する。
【０１８１】
具体的に、図９に示された例において、第３パラメーター候補値ｃｒ１、１は、第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値ｒ１、１に秘密鍵ｃを掛けて生成された第３パラメーター候補値を示し、ｒ１、３２と同様に「００００００００」であるビット列と３２番目のブロック（すなわち、３２ｂｌｏｃｋ）にインデキシングされる。
【０１８２】
また、第３パラメーター候補値ｃｒ２５５、３２は、第２パラメーター候補値の集合２１０に含まれた第２パラメーター候補値ｒ２５５、３２に秘密鍵ｃを掛けて生成された第３パラメーター候補値を示し、ｒ２５５、３２と同様に「１１１１１１１０」であるビット列と３２番目のブロック（すなわち、３２ｂｌｏｃｋ）にインデキシングされる。
【０１８３】
図１０は、本発明の一実施例による第３パラメーター値の抽出の一例を示す図面である。
【０１８４】
図１０に示された例において、シード値１０１０は、図３および図６に示されたシード値３１０、６１０と同じ値であり、分割部７２０でシード値１０１０を８ビット長さの３２個のブロックに分割する。また、第３パラメーター候補値の集合１０３０は、図８に示された第３パラメーター候補値の集合８１０と同一である。しかし、他の実施例によると、第３パラメーター候補値の集合１０３０は、図８に示された第３パラメーター候補値の集合８１０と異なり得る。
【０１８５】
図１０に示された例において、シード値１０１０から分割された３２個のブロックのうち、１番目のブロックに含まれたビット列は、「１１１１１１０」であるため、第３抽出部７５０は、第３パラメーター候補値の集合１０３０で「１ｂｌｏｃｋ」とビット列  「１１１１１１０」に対応する第３パラメーター候補値であるｒ２５５、１を１番目のブロックに対応する第３パラメーター値として抽出し得る。
【０１８６】
また、シード値１０１０から分割されたブロックのうち、２番目のブロックに含まれたビット列は、「００００００１０」であるため、第３抽出部７５０は、第３パラメーター候補値の集合１０３０で「２ｂｌｏｃｋ」とビット列「００００００１０」に対応する第３パラメーター候補値であるｒ３、２を２番目のブロックに対応する第３パラメーター値として抽出し得る。
【０１８７】
これと同一の方法で、第３抽出部７５０は、第３パラメーター候補値の集合１０３０でシード値１０１０から分割された３２個のブロックのそれぞれに対応する第３パラメーター値を抽出し得る。
【０１８８】
これにより、図１０に示された例において、第３抽出部７５０によって抽出される第３パラメーター値は、｛ｒ２５５、１、ｒ３、２、ｒ１、３、．．．、ｒ３、３０、ｒ２５６、３１、ｃｒ２５５、３２｝のようである。
【０１８９】
図１１は、本発明の一実施例による第３パラメーター値の抽出の他の例を示す図面である。
【０１９０】
図１１に示された例において、シード値１１１０は、図３および図６に示されたシード値３１０、６１０と同じ値であり、分割部７２０でシード値１１１０を８ビット長さの３２個のブロックに分割することと仮定する。また、第３パラメーター候補値の集合１１３０は、図９に示された第３パラメーター候補値の集合９１０と同じものと仮定する。
【０１９１】
図１１に示された例において、シード値１１１０から分割された３２個のブロックのうち、１番目のブロックに含まれたビット列は、「１１１１１１０」であるため、第３抽出部７５０は、第３パラメーター候補値の集合１１３０で「１ｂｌｏｃｋ」とビット列「１１１１１１０」に対応する第３パラメーター候補値であるｃｒ２５５、１を１番目のブロックに対応する第３パラメーター値として抽出し得る。
【０１９２】
また、シード値１１１０から分割されたブロックのうち、２番目のブロックに含まれたビット列は、「００００００１０」であるため、第３抽出部７５０は、第３パラメーター候補値の集合１１３０で「２ｂｌｏｃｋ」とビット列「００００００１０」に対応する第３パラメーター候補値であるｃｒ３、２を２番目のブロックに対応する第３パラメーター値として抽出し得る。
【０１９３】
これと同一の方法で、第３抽出部７５０は、第３パラメーター候補値の集合１１３０でシード値１１１０から分割された３２個のブロックのそれぞれに対応する第３パラメーター値を抽出し得る。
【０１９４】
これにより、図１１に示された例において、第３抽出部７５０によって抽出される第３パラメーター値は、｛ｃｒ２５５、１、ｃｒ３、２、ｃｒ１、３、．．．、ｃｒ３、３０、ｃｒ２５６、３１、ｃｒ２５５、３２｝のようである。
【０１９５】
再び、図７を参照すると、演算部７６０は、第１抽出部７３０で抽出された第１パラメーター値を用いて第１乱数を生成し、第２抽出部７４０で抽出された第２パラメーター値を用いて第２乱数を生成し、第３抽出部７５０で抽出された第３パラメーター値を用いて第３乱数を生成する。
【０１９６】
このとき、第１乱数および第２乱数の生成については既に前述したので、これについての重複的な説明は省略する。
【０１９７】
本発明の一実施例によると、演算部７６０は、第３パラメーター候補値の集合で抽出された第３パラメーター値を掛けるか、または加えて第３乱数を生成し得る。
【０１９８】
例えば、演算部７６０は、下の数１０を用い、図１０に示された例で抽出された第３パラメーター値から第３乱数ｃｒを生成し得る。
【０１９９】
【数１０】
2020520613.tif 000012
【０２００】
【０２０１】
他の例として、演算部７６０は、下の数１１を用い、図１１に示された例で抽出された第３パラメーター値から第３乱数ｃｒを生成し得る。
【０２０２】
【数１１】
2020520613.tif 000013
【０２０３】
【０２０４】
すなわち、演算部７６０で生成される第３乱数ｃｒは、秘密鍵ｃに第２乱数ｒを掛けた値と同一である。
【０２０５】
一方、演算部７６０は、抽出された第３パラメーター値を掛けるか、または加えること以外にも、抽出された第３パラメーター値から第２乱数ｒに秘密鍵ｃを掛けた値と同じ値を生成し得る様々な形態の一方向関数を用いて第３乱数ｃｒを生成し得る。
【０２０６】
一方、本発明の一実施例によると、演算装置１００の１つ以上のプロセッサは、生成された第１乱数ｋ、第２乱数ｒおよび第３乱数ｃｒを用い、データを暗号化するか、または電子署名を生成し得る。一実施例によると、演算部７６０は、生成された第１乱数ｋ、第２乱数ｒおよび第３乱数ｃｒを用い、データを暗号化するか、または電子署名を生成し得る。他の実施例によると、演算装置１００の１つ以上のプロセッサの他のコンポネントまたは他の要素は、生成された第１乱数ｋ、第２乱数ｒおよび第３乱数ｃｒを用い、データを暗号化するか、または電子署名を生成し得る。
【０２０７】
具体的に、演算部７６０は、暗号化または電子署名の生成のために、指数演算またはスカラー積演算と指数演算またはスカラー積を実行して生成された値に秘密鍵を掛ける演算が要求される様々な方式の暗号アルゴリズムないしは電子署名アルゴリズムを用い、データを暗号化または電子署名を生成し得る。このとき、演算部７６０は、指数演算またはスカラー積演算を直接実行せずに、第２乱数ｒを指数演算またはスカラー積演算の結果値として用い得る。また、演算部７６０は、第２乱数ｒに秘密鍵ｃを直接掛けず、第３乱数ｃｒを第２乱数ｒと秘密鍵ｃの積の結果値として用い得る。このように、一実施例によると、鍵交換、暗号化または電子署名のために直接的な指数演算または直接的なスカラー積演算が実行されないため、数学的演算の実行中にサイドチャネル攻撃によって装置から流出する物理的情報の悪用が防止される。
【０２０８】
例えば、ＤＳＡ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ａｌｇｏｒｉｔｈｍ）を用いて電子署名を生成する場合、前述したように、演算部７６０は、第１乱数をランダム値ｋとして用い得、第２乱数を署名値ｒとして用い得る。また、演算部７６０は、第１乱数と第３パラメーター候補値の集合で抽出された第３パラメーター値を用いた加算演算のようにサイドチャネル攻撃に安全な他の演算を実行して獲得された第３乱数を用いて署名値ｓを生成し得る。すなわち、署名値ｒは、ランダム値ｋを用いた指数演算を実行せずに生成可能であり、署名値ｓは、署名値ｒに秘密鍵ｃを掛ける演算を実行せずに生成可能になる。したがって、サイドチャネル攻撃によって署名値ｒを生成するために使用されたランダム値ｋと署名値ｓを生成するために使用された秘密鍵ｃが知れなくなる。
【０２０９】
他の例として、ＥＣＤＳＡを用いて電子署名を生成する場合、前述したように、演算部７６０は、第１乱数をランダム値ｋとして用い得、第２乱数を署名値ｒとして用い得る。また、演算部７６０は、第１乱数と第３パラメーター候補値の集合で抽出された第３パラメーター値を用いた掛け算演算のようにサイドチャネル攻撃に安全な他の演算を実行して獲得された第３乱数を用いて署名値ｓを生成し得る。すなわち、署名値ｒは、ランダム値ｋを用いたスカラー積演算を実行せずに生成可能であり、署名値ｓは、署名値ｒに秘密鍵ｃを掛ける演算を実行せずに生成可能になる。したがって、サイドチャネル攻撃によって署名値ｒを生成するために使用されたランダム値ｋと署名値ｓを生成するために使用された秘密鍵ｃが知れなくなる。
【０２１０】
一方、一実施例において、図７に示されたシード値の生成部７１０、分割部７２０、第１抽出部７３０、第２抽出部７４０、第３抽出部７５０および演算部７６０は、１つ以上のプロセッサおよびそのプロセッサと接続されたコンピューター読み取り可能な記録媒体を含む１つ以上のコンピューティング装置上で実装できる。コンピューター読み取り可能な記録媒体は、プロセッサの内部または外部にあり得、よく知られた様々な手段でプロセッサと接続され得る。コンピューティング装置内のプロセッサは、各コンピューティング装置をして本明細書で記述される例示的な実施例に応じて動作させ得る。例えば、プロセッサは、コンピューター読み取り可能な記録媒体に保存された命令語を実行でき、コンピューター読み取り可能な記録媒体に保存された命令語は、プロセッサによって実行される場合、コンピューティング装置をして本明細書に記述される例示的な実施例による動作を実行させるように構成され得る。
【０２１１】
図１２は、本発明の一実施例による演算方法のフローチャートである。
【０２１２】
図１２に示された方法は、例えば、図１に示された演算装置１００によって実行できる。
【０２１３】
図１２を参照すると、演算装置１００は、シード値を生成する１２１０。一実施例によると、シード値は、任意のビット列で構成され得る。
【０２１４】
以後、演算装置１００は、生成されたシード値を複数のブロックに分割する１２２０。
【０２１５】
以後、演算装置１００は、複数の第１パラメーター候補値から生成された複数の第２パラメーター候補値を含む第２パラメーター候補値の集合から、分割された各ブロックに対応する複数の第２パラメーター値を抽出する１２３０。
【０２１６】
このとき、本発明の一実施例によると、第２パラメーター候補値の集合に含まれた第２パラメーター候補値は、複数の第１パラメーター候補値のそれぞれを指数として用いた指数演算または複数の第１パラメーター候補値のそれぞれをスカラー乗数として用いたスカラー積演算を実行して生成された値であり得る。
【０２１７】
また、本発明の一実施例によると、演算装置１００は、第２パラメーター候補値の集合から、分割された各ブロックのビット列およびシード値内の位置に対応する第２パラメーター候補値を第２パラメーター値として抽出し得る。
【０２１８】
以後、演算装置１００は、抽出された第２パラメーター値から乱数を生成する１２４０。
【０２１９】
このとき、本発明の一実施例によると、演算装置１００は、抽出された第２パラメーター値を掛けるか、または加えて乱数を生成し得る。
【０２２０】
一方、本発明の一実施例によると、演算装置１００は、生成された乱数を用い、データを暗号化するか、または電子署名を生成し得る。
【０２２１】
図１３は、本発明の他の実施例による演算方法のフローチャートである。
【０２２２】
図１３に示された方法は、例えば、図４に示された演算装置４００によって実行できる。
【０２２３】
図１３を参照すると、演算装置４００は、シード値を生成する１３１０。一実施例によると、シード値は、任意のビット列で構成され得る。
【０２２４】
以後、演算装置４００は、生成されたシード値を複数のブロックに分割する１３２０。
【０２２５】
以後、演算装置４００は、複数の第１パラメーター候補値を含む第１パラメーター候補値の集合から、分割された各ブロックに対応する複数の第１パラメーター値を抽出する１３３０。
【０２２６】
このとき、本発明の一実施例によると、演算装置４００は、第１パラメーター候補値の集合から、分割された各ブロックのビット列およびシード値内の位置に対応する第１パラメーター値を抽出し得る。
【０２２７】
以後、演算装置４００は、抽出された第１パラメーター値から第１乱数を生成する１３４０。
【０２２８】
このとき、本発明の一実施例によると、演算装置４００は、抽出された第１パラメーター値を加えて第１乱数を生成し得る。
【０２２９】
以後、演算装置４００は、第１パラメーター候補値の集合に含まれた第１パラメーター候補値のそれぞれを用いて生成された複数の第２パラメーター候補値を含む第２パラメーター候補値の集合から、分割された各ブロックに対応する複数の第２パラメーター値を抽出する１３５０。
【０２３０】
このとき、本発明の一実施例によると、第２パラメーター候補値の集合に含まれた第２パラメーター候補値は、第１パラメーター候補値の集合に含まれた第１パラメーター候補値のそれぞれを指数として用いた指数演算または第１パラメーター候補値のそれぞれをスカラー乗数として用いたスカラー積演算を実行して生成された値であり得る。
【０２３１】
また、本発明の一実施例によると、演算装置４００は、第２パラメーター候補値の集合から、分割された各ブロックのビット列およびシード値内の位置に対応する第２パラメーター値を抽出し得る。
【０２３２】
以後、演算装置４００は、抽出された第２パラメーター値から第２乱数を生成する１３６０。
【０２３３】
このとき、本発明の一実施例によると、演算装置４００は、抽出された第２パラメーター値を掛けるか、または加えて第２乱数を生成し得る。
【０２３４】
一方、本発明の一実施例によると、演算装置４００は、生成された第１乱数および第２乱数を用い、データを暗号化するか、または電子署名を生成し得る。
【０２３５】
図１４は、本発明の他の実施例による演算方法のフローチャートである  。
【０２３６】
図１４に示された方法は、例えば、図７に示された演算装置７００によって実行できる。
【０２３７】
図１４を参照すると、演算装置７００は、シード値を生成する１４１０。一実施例によると、シード値は、任意のビット列で構成され得る。
【０２３８】
以後、演算装置７００は、生成されたシード値を複数のブロックに分割する１４２０。
【０２３９】
以後、演算装置７００は、複数の第１パラメーター候補値を含む第１パラメーター候補値の集合から、分割された各ブロックに対応する複数の第１パラメーター値を抽出する１４３０。
【０２４０】
このとき、本発明の一実施例によると、演算装置７００は、第１パラメーター候補値の集合から、分割された各ブロックのビット列およびシード値内の位置に対応する第１パラメーター値を抽出し得る。
【０２４１】
以後、演算装置７００は、抽出された第１パラメーター値から第１乱数を生成する１４４０。
【０２４２】
このとき、本発明の一実施例によると、演算装置７００は、抽出された第１パラメーター値を加えて第１乱数を生成し得る。
【０２４３】
以後、演算装置７００は、第１パラメーター候補値の集合に含まれた第１パラメーター候補値のそれぞれを用いて生成された複数の第２パラメーター候補値を含む第２パラメーター候補値の集合から、分割された各ブロックに対応する複数の第２パラメーター値を抽出する１４５０。
【０２４４】
このとき、本発明の一実施例によると、第２パラメーター候補値の集合に含まれた第２パラメーター候補値は、第１パラメーター候補値の集合に含まれた第１パラメーター候補値のそれぞれを指数として用いた指数演算または第１パラメーター候補値のそれぞれをスカラー乗数として用いたスカラー積演算を実行して生成された値であり得る。
【０２４５】
また、本発明の一実施例によると、演算装置７００は、第２パラメーター候補値の集合から、分割された各ブロックのビット列およびシード値内の位置に対応する第２パラメーター値を抽出し得る。
【０２４６】
以後、演算装置７００は、抽出された第２パラメーター値から第２乱数を生成する１４６０。
【０２４７】
このとき、本発明の一実施例によると、演算装置７００は、抽出された第２パラメーター値を掛けるか、または加えて第２乱数を生成し得る。
【０２４８】
以後、演算装置７００は、第２パラメーター候補値の集合に含まれた第２パラメーター候補値のそれぞれを用いて生成された複数の第３パラメーター候補値を含む第３パラメーター候補値の集合から、分割された各ブロックに対応する複数の第３パラメーター値を抽出する１４７０。
【０２４９】
このとき、本発明の一実施例によると、第３パラメーター候補値の集合に含まれた第３パラメーター候補値のうち、少なくとも一部は、第２パラメーター候補値の集合に含まれた第２パラメーター候補値のうち、少なくとも一部に秘密鍵を掛けた値を含み得る。
【０２５０】
また、本発明の一実施例によると、演算装置７００は、第３パラメーター候補値の集合から、分割された各ブロックのビット列およびシード値内の位置に対応する第３パラメーター値を抽出し得る。
【０２５１】
以後、演算装置７００は、抽出された第３パラメーター値から第３乱数を生成する１４８０。
【０２５２】
このとき、本発明の一実施例によると、演算装置７００は、抽出された第３パラメーター値を掛けるか、または加えて第３乱数を生成し得る。
【０２５３】
一方、本発明の一実施例によると、演算装置７００は、生成された第１乱数、第２乱数および第３乱数を用い、データを暗号化するか、または電子署名を生成し得る。
【０２５４】
一方、図１２ないし図１４に示されたフローチャートでは、前記方法を複数のステップに分けて記載したが、少なくとも一部のステップは、順序を変えて実行したり、他のステップと結合されてともに実行されたり、省略されたり、細部ステップに分かれて実行されたり、または図示されない１つ以上のステップが付加されて実行できる。
【０２５５】
前述した本発明の様々な実施例による方法は、ＩｏＴ装置のような電子装置にインストールできるアプリケーション形態で実装できる。
【０２５６】
前述した本発明の様々な実施例による方法は、ＩｏＴ装置のような電子装置のソフトウェアまたはハードウェアのアップグレードによって実装できる。
【０２５７】
例示的な実施例によると、本明細書に説明された要素、コンポネント、方法または動作は、ハードウェアコンポネント、ソフトウェアコンポネントまたはこれらの組み合わせを用いて実装できる。例えば、ハードウェアコンポネントは、プロセッシング装置を含み得る。一実施例によると、ディスプレー装置は、イメージプロセッサまたはコントローラーのように、例えば、ハードウェアプロセッサ、ＣＰＵ、ハードウェアコントローラー、ＡＬＵ、ＤＳＰ、マイクロコンピューター、ＦＰＧＡ、ＰＬＵ、マイクロプロセッサまたは定義された方式で命令に応答し、命令を実行できるその他の装置のような１つ以上の汎用または特殊目的のコンピューターを用いて実装できるプロセッシング装置を含み得る。プロセッシング装置は、オペレーティングシステム（ＯＳ）およびオペレーティングシステムで実行される１つ以上のソフトウェアアプリケーションを実行できる。また、プロセッシング装置は、ソフトウェアの実行に応答してデータをアクセス、保存、操作、処理および生成し得る。簡略化のために、プロセッシング装置の説明は、単数として使用される。しかし、当業者は、プロセッシング装置が多数のプロセッシングエレメントおよび多数のタイプのプロセッシングエレメントを含み得ることを理解するであろう。例えば、プロセッシング装置は、多数のプロセッサまたは１つのプロセッサおよびコントローラーを含み得る。また、並列プロセッサのような他のプロセッシング構成が可能である。
【０２５８】
一方、本発明の実施例は、本明細書で記述した方法をコンピューター上で実行するためのプログラムを含むコンピューター読み取り可能な記録媒体を含み得る。前記コンピューター読み取り可能な記録媒体は、プログラム命令、ローカルデータファイル、ローカルデータ構造などを単独または組み合わせて含み得る。前記媒体は、本発明のために特別に設計されて構成されたものであるか、またはコンピューターソフトウェア分野で通常的に使用可能なものであり得る。コンピューター読み取り可能な記録媒体の例には、ハードディスク、フロッピーディスクおよび磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体、フロッピーディスクのような光磁気媒体、およびロム（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ラム（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリーなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例には、コンパイラによって作られるような機械語コードだけでなく、インタプリタなどを使用してコンピューターによって実行できる高級言語コードを含み得る。
【０２５９】
前述した様々な実施例による各要素（例えば、モジュールまたはプログラム）は、単一のエンティティー（Ｅｎｔｉｔｙ）または複数のエンティティーを含み得、前述したサブ要素のうちの一部は、省略されるか、または他のタイプのサブ要素が様々な実施例に追加に含まれ得る。代替的または付加的に、一部要素（例えば、モジュールまたはプログラム）は、１つのエンティティーとして統合され得、統合されない対応する要素のそれぞれによって実行される機能を同一または類似に実行できる。様々な実施例によるモジュール、プログラムまたは他のタイプの要素によって実行される動作は、順次に、並列的に、または経験的に（Ｈｅｕｒｉｓｔｉｃａｌｌｙ）実行されるか、または少なくとも一部の動作が異なる手順で実行されるか、省略されるか、または他のタイプの動作が追加され得る。
【０２６０】
以上で、本発明の代表的な実施例を具体的に説明したが、本発明が属する技術分野で通常の知識を有する者は、前述した実施例について本発明の範疇から逸脱しない範囲内で様々な変形が可能であることを理解するであろう。したがって、本発明の権利の範囲は、説明された実施例に限定されて定められてはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものなどによって定められるべきである。
【図１】
2020520613.tif 000014
【図２】
2020520613.tif 000015
【図３】
2020520613.tif 000016
【図４】
2020520613.tif 000017
【図５】
2020520613.tif 000018
【図６】
2020520613.tif 000019
【図７】
2020520613.tif 000020
【図８】
2020520613.tif 000021
【図９】
2020520613.tif 000022
【図１０】
2020520613.tif 000023
【図１１】
2020520613.tif 000024
【図１２】
2020520613.tif 000025
【図１３】
2020520613.tif 000026
【図１４】
2020520613.tif 000027
【国際調査報告】
2020520613.tif 000028
2020520613.tif 000029