説明

ストレージ装置、ストレージ方法およびプログラム

【課題】耐タンパデバイスやOSの特殊な領域を使用すること無しに、暗号学的に安全、かつ効率的なストレージ装置を提供する。
【解決手段】ソフトウェアのみで構成されるストレージ装置であって、秘密鍵生成手段は、N個の秘密鍵を生成する。隠蔽手段は、N個の秘密鍵をプログラム内に隠蔽する。乱数生成手段は、乱数を生成する。暗号鍵生成手段は、N個の秘密鍵と生成した乱数とから暗号鍵を生成する。暗号化手段は、格納されるデータを生成した暗号鍵で暗号化する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、耐タンパデバイスやOSの特殊な領域を使用すること無しに、暗号学的に安全、かつ効率的なストレージ装置、ストレージ方法およびプログラムに関する。
【背景技術】
【0002】
一般に、プログラムには、価値のあるアルゴリズムおよびコンテンツの暗号鍵等、利用者に対して秘密にすべき情報が含まれる場合がある。一方で、プログラムを解析するための技術(RE:Reverse Engineering)も数多く開発されているのが現状である。このため、これらの技術によりプログラムが解析されると、不正者に秘密情報が入手されるという脅威が考えられる。
【0003】
このような脅威を回避するために、例えば、UIMカード(User Identity Module Card)やUSIMカード(Universal Subscriber Identity Module Card)等の耐タンパデバイスを用いた技術が知られている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−66883号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
一方、近年、オープンプラットフォームでのセキュリティ確保が重要な課題となっている。このようなオープンプラットフォーム環境では、耐タンパデバイスが必ずしも利用できる訳ではなく、ソフトウェアのみでセキュリティ確保が必要となり、秘密情報を格納するセキュアストレージも、ソフトウェアのみで構成しなければならない。また、セキュアストレージに対しては、サイドチャネル攻撃が想定され、そのような攻撃に対して耐性を持つ方式が必要である。
【0006】
そこで、本発明は、上述の課題に鑑みてなされたものであり、耐タンパデバイスやOSの特殊な領域を使用すること無しに、暗号学的に安全、かつ効率的なストレージ装置、ストレージ方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【0008】
(1)本発明は、ソフトウェアのみで構成されるストレージ装置であって、N個の秘密鍵を生成する秘密鍵生成手段(例えば、図1の秘密鍵生成部101に相当)と、該N個の秘密鍵を前記プログラム内に隠蔽する隠蔽手段(例えば、図1の秘密鍵秘匿部102に相当)と、乱数を生成する乱数生成手段(例えば、図1の乱数生成部103に相当)と、前記N個の秘密鍵と生成した乱数とから暗号鍵を生成する暗号鍵生成手段(例えば、図1の暗号鍵生成部104に相当)と、格納されるデータを該生成した暗号鍵で暗号化する暗号化手段(例えば、図1の暗号化部106に相当)と、を備えたことを特徴とするストレージ装置を提案している。
【0009】
この発明によれば、秘密鍵生成手段は、N個の秘密鍵を生成する。隠蔽手段は、N個の秘密鍵をプログラム内に隠蔽する。乱数生成手段は、乱数を生成する。暗号鍵生成手段は、N個の秘密鍵と生成した乱数とから暗号鍵を生成する。暗号化手段は、格納されるデータを生成した暗号鍵で暗号化する。したがって、鍵生成手段が、N個の秘密鍵を生成するため、秘密鍵がN−1個漏洩しても耐性を有する。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【0010】
(2)本発明は、(1)のストレージ装置について、前記秘密鍵生成手段(例えば、図3の秘密鍵生成部201に相当)が、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とし、前記暗号鍵生成手段(例えば、図3の暗号鍵生成部204に相当)が前記N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とすることを特徴とするストレージ装置を提案している。
【0011】
この発明によれば、秘密鍵生成手段が、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とし、暗号鍵生成手段がN個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする。したがって、暗号鍵生成手段がN個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とするため、さらにセキュリティ能力を向上させることができる。
【0012】
(3)本発明は、(2)のストレージ装置について、前記使用した乱数と使用した秘密鍵のインデックス情報をデータに付与するインデックス情報付与手段(例えば、図3のインデックス付与部207に相当)を備えたことを特徴とするストレージ装置を提案している。
【0013】
この発明によれば、インデックス情報付与手段は、使用した乱数と使用した秘密鍵のインデックス情報をデータに付与する。したがって、これにより、N個の秘密鍵のうち、どのn個の秘密鍵を用いたのかを明確に把握することができる。
【0014】
(4)本発明は、(1)のストレージ装置について、前記秘密鍵生成手段(例えば、図5の秘密鍵生成部201に相当)が、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とし、前記暗号鍵生成手段(例えば、図5の暗号鍵生成部304に相当)が前記N個の秘密鍵のそれぞれに生成した乱数を乗じることにより、暗号鍵を生成することを特徴とするストレージ装置を提案している。
【0015】
この発明によれば、秘密鍵生成手段が、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とし、暗号鍵生成手段がN個の秘密鍵のそれぞれに生成した乱数を乗じることにより、暗号鍵を生成する。したがって、暗号鍵生成手段がN個の秘密鍵のそれぞれに生成した乱数を乗じることにより、生成した暗号鍵を第3者からの攻撃に対して、秘匿化することができる。
【0016】
(5)本発明は、(1)のストレージ装置について、前記秘密鍵生成手段(例えば、図7の秘密鍵生成部401に相当)が、暗号鍵のシードとなるマスターシークレットを生成し、該生成したマスターシークレットをn(N>n)個の情報が集まれば、マスターシークレットを復元できる閾値秘密分散法によりN個に分割し、これを秘密鍵とし、前記暗号鍵生成手段(例えば、図7の暗号鍵生成部404に相当)が前記n個の情報からマスターシークレットを復元し、該復元したマスターシークレットと生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とすることを特徴とするストレージ装置を提案している。
【0017】
この発明によれば、秘密鍵生成手段が、暗号鍵のシードとなるマスターシークレットを生成し、生成したマスターシークレットをn(N>n)個の情報が集まれば、マスターシークレットを復元できる閾値秘密分散法によりN個に分割し、これを秘密鍵とし、暗号鍵生成手段がn個の情報からマスターシークレットを復元し、復元したマスターシークレットと生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする。したがって、n−1個までのマスターシークレットの漏洩に対して、漏洩耐性を得ることができる。
【0018】
(6)本発明は、(1)から(5)のストレージ装置について、前記暗号鍵生成手段(例えば、図1の暗号鍵生成部104、図3の暗号鍵生成部204、図5の暗号鍵生成部304、図7の暗号鍵生成部404に相当)が、暗号化処理ごとに異なる暗号鍵を生成することを特徴とするストレージ装置を提案している。
【0019】
この発明によれば、暗号鍵生成手段が、暗号化処理ごとに異なる暗号鍵を生成する。したがって、暗号化に使用する鍵が暗号化ごとに異なるため、さらに、第三者の攻撃に対して、耐性を持つことができる。
【0020】
(7)本発明は、ソフトウェアのみで構成されるストレージ装置のストレージ方法であって、N個の秘密鍵を生成する第1のステップ(例えば、図2のステップS101に相当)と、該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップ(例えば、図2のステップS102に相当)と、乱数を生成する第3のステップ(例えば、図2のステップS103に相当)と、前記N個の秘密鍵と生成した乱数とから暗号鍵を生成する第4のステップ(例えば、図2のステップS104に相当)と、格納されるデータを該生成した暗号鍵で暗号化する第5のステップ(例えば、図2のステップS105に相当)と、を備えたことを特徴とするストレージ方法を提案している。
【0021】
この発明によれば、N個の秘密鍵を生成し、生成したN個の秘密鍵をプログラム内に隠蔽する。さらに、乱数を生成し、N個の秘密鍵と生成した乱数とから暗号鍵を生成する。そして、格納されるデータを生成した暗号鍵で暗号化する。したがって、N個の秘密鍵を生成するため、秘密鍵がN−1個漏洩しても耐性を有する。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【0022】
(8)本発明は、ソフトウェアのみで構成されるストレージ装置のストレージ方法であって、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする第1のステップ(例えば、図4のステップS201に相当)と、該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップ(例えば、図4のステップS202に相当)と、乱数を生成する第3のステップ(例えば、図4のステップS203に相当)と、前記N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする第4のステップ(例えば、図4のステップS204に相当)と、格納されるデータを該生成した暗号鍵で暗号化する第5のステップ(例えば、図4のステップS205に相当)と、を備えたことを特徴とするストレージ方法を提案している。
【0023】
この発明によれば、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする。このN個の秘密鍵をプログラム内に隠蔽する。さらに、乱数を生成し、N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とし、格納されるデータを生成した暗号鍵で暗号化する。したがって、N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とするため、秘密鍵がn−1個漏洩しても耐性を有する。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【0024】
(9)本発明は、ソフトウェアのみで構成されるストレージ装置のストレージ方法であって、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする第1のステップ(例えば、図6のステップS301に相当)と、該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップ(例えば、図6のステップS302に相当)と、乱数を生成する第3のステップ(例えば、図6のステップS303に相当)と、前記N個の秘密鍵のそれぞれに生成した乱数を乗じることにより、暗号鍵を生成する第4のステップ(例えば、図6のステップS305に相当)と、格納されるデータを該生成した暗号鍵で暗号化する第5のステップ(例えば、図6のステップS306に相当)と、を備えたことを特徴とするストレージ方法を提案している。
【0025】
この発明によれば、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする。このN個の秘密鍵を前記プログラム内に隠蔽する。さらに、乱数を生成し、N個の秘密鍵のそれぞれに生成した乱数を乗じることにより、暗号鍵を生成し、格納されるデータを生成した暗号鍵で暗号化する。したがって、暗号鍵生成手段がN個の秘密鍵のそれぞれに生成した乱数を乗じることにより、生成した暗号鍵を第3者からの攻撃に対して、秘匿化することができる。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【0026】
(10)本発明は、ソフトウェアのみで構成されるストレージ装置のストレージ方法であって、暗号鍵のシードとなるマスターシークレットを生成し、該生成したマスターシークレットをn(N>n)個の情報が集まれば、マスターシークレットを復元できる閾値秘密分散法によりN個に分割し、これを秘密鍵とする第1のステップ(例えば、図8のステップS401に相当)と、該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップ(例えば、図8のステップS402に相当)と、乱数を生成する第3のステップ(例えば、図8のステップS403に相当)と、前記n個の情報からマスターシークレットを復元し、該復元したマスターシークレットと生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする第4のステップ(例えば、図8のステップS404に相当)と、格納されるデータを該生成した暗号鍵で暗号化する第5のステップ(例えば、図8のステップS405に相当)と、を備えたことを特徴とするストレージ方法を提案している。
【0027】
この発明によれば、暗号鍵のシードとなるマスターシークレットを生成し、生成したマスターシークレットをn(N>n)個の情報が集まれば、マスターシークレットを復元できる閾値秘密分散法によりN個に分割し、これを秘密鍵とする。このN個の秘密鍵をプログラム内に隠蔽する。さらに、乱数を生成し、n個の情報からマスターシークレットを復元し、復元したマスターシークレットと生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵として、格納されるデータを生成した暗号鍵で暗号化する。したがって、n−1個までのマスターシークレットの漏洩に対して、漏洩耐性を得ることができる。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【0028】
(11)本発明は、ソフトウェアのみで構成されるストレージ装置のストレージ方法をコンピュータに実行させるためのプログラムであって、N個の秘密鍵を生成する第1のステップ(例えば、図2のステップS101に相当)と、該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップ(例えば、図2のステップS102に相当)と、乱数を生成する第3のステップ(例えば、図2のステップS103に相当)と、前記N個の秘密鍵と生成した乱数とから暗号鍵を生成する第4のステップ(例えば、図2のステップS104に相当)と、格納されるデータを該生成した暗号鍵で暗号化する第5のステップ(例えば、図2のステップS105に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0029】
この発明によれば、N個の秘密鍵を生成し、生成したN個の秘密鍵をプログラム内に隠蔽する。さらに、乱数を生成し、N個の秘密鍵と生成した乱数とから暗号鍵を生成する。そして、格納されるデータを生成した暗号鍵で暗号化する。したがって、N個の秘密鍵を生成するため、秘密鍵がN−1個漏洩しても耐性を有する。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【0030】
(12)本発明は、ソフトウェアのみで構成されるストレージ装置のストレージ方法をコンピュータに実行させるためのプログラムであって、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする第1のステップ(例えば、図4のステップS201に相当)と、該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップ(例えば、図4のステップS202に相当)と、乱数を生成する第3のステップ(例えば、図4のステップS203に相当)と、前記N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする第4のステップ(例えば、図4のステップS204に相当)と、格納されるデータを該生成した暗号鍵で暗号化する第5のステップ(例えば、図4のステップS205に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0031】
この発明によれば、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする。このN個の秘密鍵をプログラム内に隠蔽する。さらに、乱数を生成し、N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とし、格納されるデータを生成した暗号鍵で暗号化する。したがって、N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とするため、秘密鍵がn−1個漏洩しても耐性を有する。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【0032】
(13)本発明は、ソフトウェアのみで構成されるストレージ装置のストレージ方法をコンピュータに実行させるためのプログラムであって、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする第1のステップ(例えば、図6のステップS301に相当)と、該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップ(例えば、図6のステップS302に相当)と、乱数を生成する第3のステップ(例えば、図6のステップS303に相当)と、前記N個の秘密鍵のそれぞれに生成した乱数を乗じることにより、暗号鍵を生成する第4のステップ(例えば、図6のステップS305に相当)と、格納されるデータを該生成した暗号鍵で暗号化する第5のステップ(例えば、図6のステップS306に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0033】
この発明によれば、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする。このN個の秘密鍵を前記プログラム内に隠蔽する。さらに、乱数を生成し、N個の秘密鍵のそれぞれに生成した乱数を乗じることにより、暗号鍵を生成し、格納されるデータを生成した暗号鍵で暗号化する。したがって、暗号鍵生成手段がN個の秘密鍵のそれぞれに生成した乱数を乗じることにより、生成した暗号鍵を第3者からの攻撃に対して、秘匿化することができる。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【0034】
(14)本発明は、ソフトウェアのみで構成されるストレージ装置のストレージ方法をコンピュータに実行させるためのプログラムであって、暗号鍵のシードとなるマスターシークレットを生成し、該生成したマスターシークレットをn(N>n)個の情報が集まれば、マスターシークレットを復元できる閾値秘密分散法によりN個に分割し、これを秘密鍵とする第1のステップ(例えば、図8のステップS401に相当)と、該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップ(例えば、図8のステップS402に相当)と、乱数を生成する第3のステップ(例えば、図8のステップS403に相当)と、前記n個の情報からマスターシークレットを復元し、該復元したマスターシークレットと生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする第4のステップ(例えば、図8のステップS404に相当)と、格納されるデータを該生成した暗号鍵で暗号化する第5のステップ(例えば、図8のステップS405に相当)と、をコンピュータに実行させるためのプログラムを提案している。
【0035】
この発明によれば、暗号鍵のシードとなるマスターシークレットを生成し、生成したマスターシークレットをn(N>n)個の情報が集まれば、マスターシークレットを復元できる閾値秘密分散法によりN個に分割し、これを秘密鍵とする。このN個の秘密鍵をプログラム内に隠蔽する。さらに、乱数を生成し、n個の情報からマスターシークレットを復元し、復元したマスターシークレットと生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵として、格納されるデータを生成した暗号鍵で暗号化する。したがって、n−1個までのマスターシークレットの漏洩に対して、漏洩耐性を得ることができる。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【発明の効果】
【0036】
本発明によれば、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができるという効果がある。また、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができるという効果がある。
【図面の簡単な説明】
【0037】
【図1】本発明の第1の実施形態に係るストレージ装置の構成を示す図である。
【図2】本発明の第1の実施形態に係るストレージ装置の処理を示す図である。
【図3】本発明の第2の実施形態に係るストレージ装置の構成を示す図である。
【図4】本発明の第2の実施形態に係るストレージ装置の処理を示す図である。
【図5】本発明の第3の実施形態に係るストレージ装置の構成を示す図である。
【図6】本発明の第3の実施形態に係るストレージ装置の処理を示す図である。
【図7】本発明の第4の実施形態に係るストレージ装置の構成を示す図である。
【図8】本発明の第4の実施形態に係るストレージ装置の処理を示す図である。
【発明を実施するための形態】
【0038】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0039】
<第1の実施形態>
図1および図2を用いて、本発明の第1の実施形態について説明する。
【0040】
<ストレージ装置の構成>
本実施形態に係るストレージ装置は、図1に示すように、秘密鍵生成部101と、秘密鍵秘匿部102と、乱数生成部103と、暗号鍵生成部104と、データ格納部105と、暗号化部106とから構成されている。なお、各構成要素は、すべてソフトウェアで構成されている。
【0041】
ここで、秘密鍵生成部101は、N個の秘密鍵を生成する。秘密鍵秘匿部102は、秘密鍵生成部101が生成したN個の秘密鍵をプログラム内に隠蔽する。乱数生成部103は、乱数を生成する。
【0042】
暗号鍵生成部104は、秘密鍵生成部101が生成したN個の秘密鍵と乱数生成部103が生成した乱数とから暗号鍵を生成する。なお、暗号鍵生成部104は、暗号化処理ごとに異なる暗号鍵を生成するようにしてもよい。データ格納部105は、暗号化の対象となるデータを格納する。暗号化部106は、データ格納部105に格納されるデータを暗号鍵生成部104が生成した暗号鍵で暗号化する。
【0043】
<ストレージ装置の処理>
図2を用いて、本実施形態に係るストレージ装置の処理について説明する。
【0044】
まず、秘密鍵生成部101は、N個の秘密鍵を生成する(ステップS101)。秘密鍵秘匿部102は、生成したN個の秘密鍵をプログラム内に隠蔽する(ステップS102)。次に、乱数生成部103は、乱数を生成し(ステップS103)、暗号鍵生成部104がN個の秘密鍵と生成した乱数とから暗号鍵を生成する(ステップS104)。そして、データ格納部105に格納されるデータを暗号化部106が、生成された暗号鍵で暗号化する(ステップS105)。
【0045】
したがって、本実施形態によれば、N個の秘密鍵を生成するため、秘密鍵がN−1個漏洩しても耐性を有する。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【0046】
<第2の実施形態>
図3および図4を用いて、本発明の第2の実施形態について説明する。
【0047】
<ストレージ装置の構成>
本実施形態に係るストレージ装置は、図3に示すように、秘密鍵生成部201と、秘密鍵秘匿部102と、乱数生成部103と、暗号鍵生成部204と、データ格納部105と、暗号化部206と、インデックス付与部207とから構成されている。なお、各構成要素は、すべてソフトウェアで構成されている。また、第1の実施形態と同様の符号を付す構成要素については、同様の機能を有するため、その詳細な説明は省略する。
【0048】
ここで、秘密鍵生成部201は、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする。暗号鍵生成部204は、N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする。なお、暗号鍵生成部204は、暗号化処理ごとに異なる暗号鍵を生成するようにしてもよい。
【0049】
暗号化部206は、データ格納部105に格納されるデータを暗号鍵生成部204が生成した暗号鍵で暗号化する。インデックス付与部207は、使用した乱数と使用した秘密鍵のインデックス情報をデータに付与する。
【0050】
<ストレージ装置の処理>
図4を用いて、本実施形態に係るストレージ装置の処理について説明する。
【0051】
まず、秘密鍵生成部101は、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする(ステップS201)。秘密鍵秘匿部102は、生成したN個の秘密鍵をプログラム内に隠蔽する(ステップS202)。
【0052】
次に、乱数生成部103は、乱数を生成し(ステップS203)、暗号鍵生成部204がN個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする(ステップS204)。そして、データ格納部105に格納されるデータを暗号化部206が、生成された暗号鍵で暗号化する(ステップS205)。
【0053】
したがって、本実施形態によれば、N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とするため、秘密鍵がn−1個漏洩しても耐性を有する。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【0054】
<第3の実施形態>
図5および図6を用いて、本発明の第3の実施形態について説明する。
【0055】
<ストレージ装置の構成>
本実施形態に係るストレージ装置は、図5に示すように、秘密鍵生成部201と、秘密鍵秘匿部102と、乱数生成部103と、暗号鍵生成部304と、データ格納部105と、暗号化部306と、インデックス付与部207とから構成されている。なお、各構成要素は、すべてソフトウェアで構成されている。また、第1の実施形態または第2の実施形態と同様の符号を付す構成要素については、同様の機能を有するため、その詳細な説明は省略する。
【0056】
ここで、暗号鍵生成部304は、N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする。なお、暗号鍵生成部204は、暗号化処理ごとに異なる暗号鍵を生成するようにしてもよい。暗号化部206は、データ格納部105に格納されるデータを暗号鍵生成部204が生成した暗号鍵で暗号化する。
【0057】
<ストレージ装置の処理>
図6を用いて、本実施形態に係るストレージ装置の処理について説明する。
【0058】
まず、秘密鍵生成部101は、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする(ステップS201)。秘密鍵秘匿部102は、生成したN個の秘密鍵をプログラム内に隠蔽する(ステップS202)。
【0059】
次に、乱数生成部103は、乱数を生成し(ステップS203)、暗号鍵生成部204がN個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする(ステップS204)。そして、データ格納部105に格納されるデータを暗号化部206が、生成された暗号鍵で暗号化する(ステップS205)。
【0060】
したがって、本実施形態によれば、N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とするため、秘密鍵がn−1個漏洩しても耐性を有する。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【0061】
<第4の実施形態>
図7および図8を用いて、本発明の第4の実施形態について説明する。
【0062】
<ストレージ装置の構成>
本実施形態に係るストレージ装置は、図7に示すように、秘密鍵生成部401と、秘密鍵秘匿部102と、乱数生成部103と、暗号鍵生成部404と、データ格納部105と、暗号化部406とから構成されている。なお、各構成要素は、すべてソフトウェアで構成されている。また、第1の実施形態と同様の符号を付す構成要素については、同様の機能を有するため、その詳細な説明は省略する。
【0063】
ここで、秘密鍵生成部401は、暗号鍵のシードとなるマスターシークレットを生成し、生成したマスターシークレットをn(N>n)個の情報が集まれば、マスターシークレットを復元できる閾値秘密分散法によりN個に分割し、これを秘密鍵とする。
【0064】
暗号鍵生成部404は、n個の情報からマスターシークレットを復元し、復元したマスターシークレットと生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする。なお、暗号鍵生成部404は、暗号化処理ごとに異なる暗号鍵を生成するようにしてもよい。
【0065】
暗号化部406は、データ格納部105に格納されるデータを暗号鍵生成部404が生成した暗号鍵で暗号化する。
【0066】
<ストレージ装置の処理>
図8を用いて、本実施形態に係るストレージ装置の処理について説明する。
【0067】
まず、秘密鍵生成部401は、暗号鍵のシードとなるマスターシークレットを生成し、生成したマスターシークレットをn(N>n)個の情報が集まれば、マスターシークレットを復元できる閾値秘密分散法によりN個に分割し、これを秘密鍵とする(ステップS401)。秘密鍵秘匿部102は、生成したN個の秘密鍵をプログラム内に隠蔽する(ステップS402)。
【0068】
次に、乱数生成部103は、乱数を生成し(ステップS403)、暗号鍵生成部404は、n個の情報からマスターシークレットを復元し、復元したマスターシークレットと生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする(ステップS404)。そして、データ格納部105に格納されるデータを暗号化部406が、生成された暗号鍵で暗号化する(ステップS405)。
【0069】
したがって、本実施形態によれば、n−1個までのマスターシークレットの漏洩に対して、漏洩耐性を得ることができる。また、耐タンパデバイスやOSの特殊な領域を用いることなく、暗号学的に安全、かつ効率的なストレージ装置を構成することができる。さらに、ソフトウェアのみで構成されるため、オープンプラットフォームにおいても十分なセキュリティを確保することができる。
【0070】
なお、ストレージ装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをストレージ装置に読み込ませ、実行することによって本発明のストレージ装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
【0071】
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0072】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0073】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0074】
101;秘密鍵生成部
102;秘密鍵秘匿部
103;乱数生成部
104;暗号鍵生成部
105;データ格納部
106;暗号化部
201;秘密鍵生成部
204;暗号鍵生成部
206;暗号化部
207;インデックス付与部
304;暗号鍵生成部
306;暗号化部
401;秘密鍵生成部
404;暗号鍵生成部
406;暗号化部

【特許請求の範囲】
【請求項1】
ソフトウェアのみで構成されるストレージ装置であって、
N個の秘密鍵を生成する秘密鍵生成手段と、
該N個の秘密鍵を前記プログラム内に隠蔽する隠蔽手段と、
乱数を生成する乱数生成手段と、
前記N個の秘密鍵と生成した乱数とから暗号鍵を生成する暗号鍵生成手段と、
格納されるデータを該生成した暗号鍵で暗号化する暗号化手段と、
を備えたことを特徴とするストレージ装置。
【請求項2】
前記秘密鍵生成手段が、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とし、前記暗号鍵生成手段が前記N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とすることを特徴とする請求項1に記載のストレージ装置。
【請求項3】
前記使用した乱数と使用した秘密鍵のインデックス情報をデータに付与するインデックス情報付与手段を備えたことを特徴とする請求項2に記載のストレージ装置。
【請求項4】
前記秘密鍵生成手段が、鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とし、前記暗号鍵生成手段が前記N個の秘密鍵のそれぞれに生成した乱数を乗じることにより、暗号鍵を生成することを特徴とする請求項1に記載のストレージ装置。
【請求項5】
前記秘密鍵生成手段が、暗号鍵のシードとなるマスターシークレットを生成し、該生成したマスターシークレットをn(N>n)個の情報が集まれば、マスターシークレットを復元できる閾値秘密分散法によりN個に分割し、これを秘密鍵とし、前記暗号鍵生成手段が前記n個の情報からマスターシークレットを復元し、該復元したマスターシークレットと生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とすることを特徴とする請求項1に記載のストレージ装置。
【請求項6】
前記暗号鍵生成手段が、暗号化処理ごとに異なる暗号鍵を生成することを特徴とする請求項1から請求項5のいずれかに記載のストレージ装置。
【請求項7】
ソフトウェアのみで構成されるストレージ装置のストレージ方法であって、
N個の秘密鍵を生成する第1のステップと、
該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップと、
乱数を生成する第3のステップと、
前記N個の秘密鍵と生成した乱数とから暗号鍵を生成する第4のステップと、
格納されるデータを該生成した暗号鍵で暗号化する第5のステップと、
を備えたことを特徴とするストレージ方法。
【請求項8】
ソフトウェアのみで構成されるストレージ装置のストレージ方法であって、
鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする第1のステップと、
該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップと、
乱数を生成する第3のステップと、
前記N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする第4のステップと、
格納されるデータを該生成した暗号鍵で暗号化する第5のステップと、
を備えたことを特徴とするストレージ方法。
【請求項9】
ソフトウェアのみで構成されるストレージ装置のストレージ方法であって、
鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする第1のステップと、
該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップと、
乱数を生成する第3のステップと、
前記N個の秘密鍵のそれぞれに生成した乱数を乗じることにより、暗号鍵を生成する第4のステップと、
格納されるデータを該生成した暗号鍵で暗号化する第5のステップと、
を備えたことを特徴とするストレージ方法。
【請求項10】
ソフトウェアのみで構成されるストレージ装置のストレージ方法であって、
暗号鍵のシードとなるマスターシークレットを生成し、該生成したマスターシークレットをn(N>n)個の情報が集まれば、マスターシークレットを復元できる閾値秘密分散法によりN個に分割し、これを秘密鍵とする第1のステップと、
該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップと、
乱数を生成する第3のステップと、
前記n個の情報からマスターシークレットを復元し、該復元したマスターシークレットと生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする第4のステップと、
格納されるデータを該生成した暗号鍵で暗号化する第5のステップと、
を備えたことを特徴とするストレージ方法。
【請求項11】
ソフトウェアのみで構成されるストレージ装置のストレージ方法をコンピュータに実行させるためのプログラムであって、
N個の秘密鍵を生成する第1のステップと、
該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップと、
乱数を生成する第3のステップと、
前記N個の秘密鍵と生成した乱数とから暗号鍵を生成する第4のステップと、
格納されるデータを該生成した暗号鍵で暗号化する第5のステップと、
をコンピュータに実行させるためのプログラム。
【請求項12】
ソフトウェアのみで構成されるストレージ装置のストレージ方法をコンピュータに実行させるためのプログラムであって、
鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする第1のステップと、
該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップと、
乱数を生成する第3のステップと、
前記N個の秘密鍵のうちn個の秘密鍵と生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする第4のステップと、
格納されるデータを該生成した暗号鍵で暗号化する第5のステップと、
をコンピュータに実行させるためのプログラム。
【請求項13】
ソフトウェアのみで構成されるストレージ装置のストレージ方法をコンピュータに実行させるためのプログラムであって、
鍵長Lと鍵の個数Nとを入力し、長さLの乱数をN個生成して、これを秘密鍵とする第1のステップと、
該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップと、
乱数を生成する第3のステップと、
前記N個の秘密鍵のそれぞれに生成した乱数を乗じることにより、暗号鍵を生成する第4のステップと、
格納されるデータを該生成した暗号鍵で暗号化する第5のステップと、
をコンピュータに実行させるためのプログラム。
【請求項14】
ソフトウェアのみで構成されるストレージ装置のストレージ方法をコンピュータに実行させるためのプログラムであって、
暗号鍵のシードとなるマスターシークレットを生成し、該生成したマスターシークレットをn(N>n)個の情報が集まれば、マスターシークレットを復元できる閾値秘密分散法によりN個に分割し、これを秘密鍵とする第1のステップと、
該N個の秘密鍵を前記プログラム内に隠蔽する第2のステップと、
乱数を生成する第3のステップと、
前記n個の情報からマスターシークレットを復元し、該復元したマスターシークレットと生成した乱数とをハッシュ関数に入力して、その出力を暗号鍵とする第4のステップと、
格納されるデータを該生成した暗号鍵で暗号化する第5のステップと、
をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−151546(P2012−151546A)
【公開日】平成24年8月9日(2012.8.9)
【国際特許分類】
【出願番号】特願2011−6824(P2011−6824)
【出願日】平成23年1月17日(2011.1.17)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】