特許第6108970号(P6108970)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ エヌ・ティ・ティ・コミュニケーションズ株式会社の特許一覧

特許6108970データ再生成装置、データ再生成方法およびプログラム
<>
  • 特許6108970-データ再生成装置、データ再生成方法およびプログラム 図000052
  • 特許6108970-データ再生成装置、データ再生成方法およびプログラム 図000053
  • 特許6108970-データ再生成装置、データ再生成方法およびプログラム 図000054
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6108970
(24)【登録日】2017年3月17日
(45)【発行日】2017年4月5日
(54)【発明の名称】データ再生成装置、データ再生成方法およびプログラム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20170327BHJP
   G06F 21/62 20130101ALI20170327BHJP
【FI】
   G09C1/00 650Z
   G06F21/62
【請求項の数】7
【全頁数】29
(21)【出願番号】特願2013-122047(P2013-122047)
(22)【出願日】2013年6月10日
(65)【公開番号】特開2014-238546(P2014-238546A)
(43)【公開日】2014年12月18日
【審査請求日】2016年1月21日
(73)【特許権者】
【識別番号】399035766
【氏名又は名称】エヌ・ティ・ティ・コミュニケーションズ株式会社
(74)【代理人】
【識別番号】110001634
【氏名又は名称】特許業務法人 志賀国際特許事務所
(72)【発明者】
【氏名】荻原 利彦
(72)【発明者】
【氏名】稲積 孝紀
【審査官】 宮司 卓佳
(56)【参考文献】
【文献】 特開2005−229178(JP,A)
【文献】 石津晴崇,荻原利彦,電子データの長期保管に関する一考察,電子情報通信学会2004年総合大会講演論文集 情報・システム1 PROCEEDINGS OF THE 2004 IEICE GENERAL CONFERENCE,2004年 4月 1日,p.125
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 21/60−21/64
(57)【特許請求の範囲】
【請求項1】
秘密分散されたシェアを再生成するデータ再生成装置であって、
シェアを区分したシェア部分データは、秘密情報を区分した秘密部分データと乱数データを区分した乱数部分データとの排他的論理和、または、乱数部分データで構成され、
前記シェアのうち、あるシェアが消失した場合、
消失シェア以外のシェアに含まれるシェア部分データの排他的論理和によって、秘密部分データを復元することなく消失シェアのシェア部分データを再生成し、
シェアD(i=1〜3)は、秘密情報Sを2個に区分した秘密部分データS、Sと、乱数Rを2個に区分した乱数部分データR、Rとを用いて、
【数1】
によって生成され、
シェアDが消失した場合、シェアD(i≠p)を2個に区分したシェア部分データDi,1、Di,2を用いて、
【数2】
によって再生成する
ことを特徴とするデータ再生成装置。
【請求項2】
秘密分散されたシェアを再生成するデータ再生成装置であって、
シェアを区分したシェア部分データは、秘密情報を区分した秘密部分データと乱数データを区分した乱数部分データとの排他的論理和、または、乱数部分データで構成され、
前記シェアのうち、あるシェアが消失した場合、
消失シェア以外のシェアに含まれるシェア部分データの排他的論理和によって、秘密部分データを復元することなく消失シェアのシェア部分データを再生成し、
シェアD(i=1〜n,n≧3)を区分したシェア部分データDi,j(i=1〜n,j=1〜n−1)は、jが同じ値であって、シェア部分データ内での排他的論理和の演算回数の差が1である2個のシェア部分データ同士の排他的論理和によって、秘密部分データまたは乱数部分データが復元される排他的論理和の定義式に従って生成され、
n,j(j=1〜n−1)は乱数部分データで構成され、
シェアDが消失した場合、
p≠nのとき、j=1〜n−1の各jについてDp,jをDi,j(i≠p,i≠n)とDn,q(q≠j)との排他的論理和によって再生成し、
p=nのとき、j=1〜n−1の各jについてDp,jをDi,q(i≠n,q≠j)とDr,q(r≠n,r≠i)との排他的論理和によって再生成する、
ことを特徴とするデータ再生成装置。
【請求項3】
シェア部分データDi,jは、秘密情報をn−1個に区分した秘密部分データS(j=1〜n−1)と、乱数をn−1個に区分した乱数部分データR(k=1〜n−1)とを用いて、i=1〜n−1,j=1〜n−1の各i,jについてDi,jが、第m列(m=1〜n−i)の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応する乱数部分データと、Sとの排他的論理和で構成され、j=1〜n−1の各jについてDn,jがRで構成され、
シェアDが消失した場合、
p=1のとき、j=1〜n−1の各jについてD1,jを、第n−1列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応する乱数部分データと、D2,jとの排他的論理和によって再生成し、
1<p<n−1のとき、j=1〜n−1の各jについてDp,jを、第n−p列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応する乱数部分データと、Dp+1,jとの排他的論理和によって再生成するか、または、第n−p列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj回巡回させたとき成分が1である列の番号に対応する乱数部分データと、Dp−1,jとの排他的論理和によって再生成し、
p=n−1のとき、j=1〜n−1の各jについてDn−1,jを、第2列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応する乱数部分データと、Dn−2,jとの排他的論理和によって再生成し、
p=nのとき、j=1〜n−1の各jについて第n−1列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応するDのシェア部分データを、D1,jとD2,jとの排他的論理和によって再生成する、
ことを特徴とする請求項に記載のデータ再生成装置。
【請求項4】
データ再生成装置により実行される、秘密分散されたシェアを再生成するデータ再生成方法であって、
シェアを区分したシェア部分データは、秘密情報を区分した秘密部分データと乱数データを区分した乱数部分データとの排他的論理和、または、乱数部分データで構成され、
前記シェアのうち、あるシェアが消失した場合、
消失シェア以外のシェアに含まれるシェア部分データの排他的論理和によって、秘密部分データを復元することなく消失シェアのシェア部分データを再生成するステップを有し、
シェアD(i=1〜3)は、秘密情報Sを2個に区分した秘密部分データS、Sと、乱数Rを2個に区分した乱数部分データR、Rとを用いて、
【数3】
によって生成され、
シェアDが消失した場合、シェアD(i≠p)を2個に区分したシェア部分データDi,1、Di,2を用いて、
【数4】
によって再生成する、
ことを特徴とするデータ再生成方法。
【請求項5】
データ再生成装置により実行される、秘密分散されたシェアを再生成するデータ再生成方法であって、
シェアを区分したシェア部分データは、秘密情報を区分した秘密部分データと乱数データを区分した乱数部分データとの排他的論理和、または、乱数部分データで構成され、
前記シェアのうち、あるシェアが消失した場合、
消失シェア以外のシェアに含まれるシェア部分データの排他的論理和によって、秘密部分データを復元することなく消失シェアのシェア部分データを再生成するステップを有し、
シェアD(i=1〜n,n≧3)を区分したシェア部分データDi,j(i=1〜n,j=1〜n−1)は、jが同じ値であって、シェア部分データ内での排他的論理和の演算回数の差が1である2個のシェア部分データ同士の排他的論理和によって、秘密部分データまたは乱数部分データが復元される排他的論理和の定義式に従って生成され、
n,j(j=1〜n−1)は乱数部分データで構成され、
シェアDが消失した場合、
p≠nのとき、j=1〜n−1の各jについてDp,jをDi,j(i≠p,i≠n)とDn,q(q≠j)との排他的論理和によって再生成し、
p=nのとき、j=1〜n−1の各jについてDp,jをDi,q(i≠n,q≠j)とDr,q(r≠n,r≠i)との排他的論理和によって再生成する、
ことを特徴とするデータ再生成方法。
【請求項6】
秘密分散されたシェアを再生成するためのプログラムであって、
シェアを区分したシェア部分データは、秘密情報を区分した秘密部分データと乱数データを区分した乱数部分データとの排他的論理和、または、乱数部分データで構成され、
前記シェアのうち、あるシェアが消失した場合、
消失シェア以外のシェアに含まれるシェア部分データの排他的論理和によって、秘密部分データを復元することなく消失シェアのシェア部分データを再生成する処理をコンピュータに実行させ
シェアD(i=1〜3)は、秘密情報Sを2個に区分した秘密部分データS、Sと、乱数Rを2個に区分した乱数部分データR、Rとを用いて、
【数5】
によって生成され、
シェアDが消失した場合、シェアD(i≠p)を2個に区分したシェア部分データDi,1、Di,2を用いて、
【数6】
によって再生成する、
ことを特徴とするプログラム。
【請求項7】
秘密分散されたシェアを再生成するためのプログラムであって、
シェアを区分したシェア部分データは、秘密情報を区分した秘密部分データと乱数データを区分した乱数部分データとの排他的論理和、または、乱数部分データで構成され、
前記シェアのうち、あるシェアが消失した場合、
消失シェア以外のシェアに含まれるシェア部分データの排他的論理和によって、秘密部分データを復元することなく消失シェアのシェア部分データを再生成する処理をコンピュータに実行させ、
シェアD(i=1〜n,n≧3)を区分したシェア部分データDi,j(i=1〜n,j=1〜n−1)は、jが同じ値であって、シェア部分データ内での排他的論理和の演算回数の差が1である2個のシェア部分データ同士の排他的論理和によって、秘密部分データまたは乱数部分データが復元される排他的論理和の定義式に従って生成され、
n,j(j=1〜n−1)は乱数部分データで構成され、
シェアDが消失した場合、
p≠nのとき、j=1〜n−1の各jについてDp,jをDi,j(i≠p,i≠n)とDn,q(q≠j)との排他的論理和によって再生成し、
p=nのとき、j=1〜n−1の各jについてDp,jをDi,q(i≠n,q≠j)とDr,q(r≠n,r≠i)との排他的論理和によって再生成する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ再生成装置、データ再生成方法およびプログラムに関する。
【背景技術】
【0002】
情報の電子化が進展し、電子データを長期かつ安全に保管することが重要になっている。暗号や電子署名を用いると、これらの安全性は第三者が暗号鍵あるいは署名鍵を解読する計算の困難さに基づくので(計算量的安全性)、時間とともにコンピュータの性能が向上してアルゴリズムが危殆化する。そのため、機器の障害や災害に備えてバックアップを用意するコストに加えて、新たなアルゴリズムで暗号化や電子署名をやり直すなどのコストを要する。
【0003】
上記のような計算量的安全性とは異なる情報量的安全性を有するものとして、秘密分散法がある。(k,n)しきい値秘密分散法は、秘密情報をn個の分散情報(以下、シェア)に分散し、n個のシェアの中から任意のk個を組み合わせれば、元の秘密情報が復元できるが、k−1個以下のシェアの組み合わせからでは、元の秘密情報に関する情報が全く得られない、というものである。この安全性はコンピュータの性能向上によっては影響されないので、電子データを長期かつ安全に保管することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第4676695号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
例えば、(2,3)しきい値秘密分散法を用いた場合、3個のシェアのうちいずれか1個が消失すると、それ以上のシェア消失は秘密情報の復元を不可能にするので、3個のシェアが存在する状態を早急に回復する必要がある。このような場合、2個のシェアから秘密情報を復元して、任意のシェアを生成することが可能であるが、秘密情報が一時的に現われることになり、機密性が損なわれる。
【0006】
本発明は、上記に鑑みてなされたもので、その目的とするところは、秘密分散されたシェアを、秘密情報が復元されることなく再生成するデータ再生成装置、データ再生成方法およびプログラムを提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本発明は、秘密分散されたシェアを再生成するデータ再生成装置であって、シェアを区分したシェア部分データは、秘密情報を区分した秘密部分データと乱数データを区分した乱数部分データとの排他的論理和、または、乱数部分データで構成され、前記シェアのうち、あるシェアが消失した場合、消失シェア以外のシェアに含まれるシェア部分データの排他的論理和によって、秘密部分データを復元することなく消失シェアのシェア部分データを再生成し、シェアD(i=1〜3)は、秘密情報Sを2個に区分した秘密部分データS、Sと、乱数Rを2個に区分した乱数部分データR、Rとを用いて、
【数1】
によって生成され、シェアDが消失した場合、シェアD(i≠p)を2個に区分したシェア部分データDi,1、Di,2を用いて、
【数2】
によって再生成する、ことを特徴とするデータ再生成装置を提供する。
【0008】
さらに、本発明は、秘密分散されたシェアを再生成するデータ再生成装置であって、シェアを区分したシェア部分データは、秘密情報を区分した秘密部分データと乱数データを区分した乱数部分データとの排他的論理和、または、乱数部分データで構成され、前記シェアのうち、あるシェアが消失した場合、消失シェア以外のシェアに含まれるシェア部分データの排他的論理和によって、秘密部分データを復元することなく消失シェアのシェア部分データを再生成し、シェアD(i=1〜n,n≧3)を区分したシェア部分データDi,j(i=1〜n,j=1〜n−1)は、jが同じ値であって、シェア部分データ内での排他的論理和の演算回数の差が1である2個のシェア部分データ同士の排他的論理和によって、秘密部分データまたは乱数部分データが復元される排他的論理和の定義式に従って生成され、Dn,j(j=1〜n−1)は乱数部分データで構成され、シェアDが消失した場合、p≠nのとき、j=1〜n−1の各jについてDp,jをDi,j(i≠p,i≠n)とDn,q(q≠j)との排他的論理和によって再生成し、p=nのとき、j=1〜n−1の各jについてDp,jをDi,q(i≠n,q≠j)とDr,q(r≠n,r≠i)との排他的論理和によって再生成する、ことを特徴とするデータ再生成装置を提供する。
【0009】
また、本発明では、シェア部分データDi,jは、秘密情報をn−1個に区分した秘密部分データS(j=1〜n−1)と、乱数をn−1個に区分した乱数部分データR(k=1〜n−1)とを用いて、i=1〜n−1,j=1〜n−1の各i,jについてDi,jが、第m列(m=1〜n−i)の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応する乱数部分データと、Sとの排他的論理和で構成され、j=1〜n−1の各jについてDn,jがRで構成され、シェアDが消失した場合、p=1のとき、j=1〜n−1の各jについてD1,jを、第n−1列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応する乱数部分データと、D2,jとの排他的論理和によって再生成し、1<p<n−1のとき、j=1〜n−1の各jについてDp,jを、第n−p列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応する乱数部分データと、Dp+1,jとの排他的論理和によって再生成するか、または、第n−p列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj回巡回させたとき成分が1である列の番号に対応する乱数部分データと、Dp−1,jとの排他的論理和によって再生成し、p=n−1のとき、j=1〜n−1の各jについてDn−1,jを、第2列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応する乱数部分データと、Dn−2,jとの排他的論理和によって再生成し、p=nのとき、j=1〜n−1の各jについて第n−1列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応するDのシェア部分データを、D1,jとD2,jとの排他的論理和によって再生成する、ことを特徴とする。
【0010】
さらに、本発明は、データ再生成装置により実行される、秘密分散されたシェアを再生成するデータ再生成方法であって、シェアを区分したシェア部分データは、秘密情報を区分した秘密部分データと乱数データを区分した乱数部分データとの排他的論理和、または、乱数部分データで構成され、前記シェアのうち、あるシェアが消失した場合、消失シェア以外のシェアに含まれるシェア部分データの排他的論理和によって、秘密部分データを復元することなく消失シェアのシェア部分データを再生成するステップを有し、シェアD(i=1〜3)は、秘密情報Sを2個に区分した秘密部分データS、Sと、乱数Rを2個に区分した乱数部分データR、Rとを用いて、上記式1によって生成され、シェアDが消失した場合、シェアD(i≠p)を2個に区分したシェア部分データDi,1、Di,2を用いて、上記式2によって再生成する、ことを特徴とするデータ再生成方法を提供する。
【0011】
さらに、本発明は、データ再生成装置により実行される、秘密分散されたシェアを再生成するデータ再生成方法であって、シェアを区分したシェア部分データは、秘密情報を区分した秘密部分データと乱数データを区分した乱数部分データとの排他的論理和、または、乱数部分データで構成され、前記シェアのうち、あるシェアが消失した場合、消失シェア以外のシェアに含まれるシェア部分データの排他的論理和によって、秘密部分データを復元することなく消失シェアのシェア部分データを再生成するステップを有し、シェアD(i=1〜n,n≧3)を区分したシェア部分データDi,j(i=1〜n,j=1〜n−1)は、jが同じ値であって、シェア部分データ内での排他的論理和の演算回数の差が1である2個のシェア部分データ同士の排他的論理和によって、秘密部分データまたは乱数部分データが復元される排他的論理和の定義式に従って生成され、Dn,j(j=1〜n−1)は乱数部分データで構成され、シェアDが消失した場合、p≠nのとき、j=1〜n−1の各jについてDp,jをDi,j(i≠p,i≠n)とDn,q(q≠j)との排他的論理和によって再生成し、p=nのとき、j=1〜n−1の各jについてDp,jをDi,q(i≠n,q≠j)とDr,q(r≠n,r≠i)との排他的論理和によって再生成する、ことを特徴とするデータ再生成方法を提供する。
【0012】
さらに、本発明は、秘密分散されたシェアを再生成するためのプログラムであって、シェアを区分したシェア部分データは、秘密情報を区分した秘密部分データと乱数データを区分した乱数部分データとの排他的論理和、または、乱数部分データで構成され、前記シェアのうち、あるシェアが消失した場合、消失シェア以外のシェアに含まれるシェア部分データの排他的論理和によって、秘密部分データを復元することなく消失シェアのシェア部分データを再生成する処理をコンピュータに実行させ、シェアD(i=1〜3)は、秘密情報Sを2個に区分した秘密部分データS、Sと、乱数Rを2個に区分した乱数部分データR、Rとを用いて、上記式1によって生成され、シェアDが消失した場合、シェアD(i≠p)を2個に区分したシェア部分データDi,1、Di,2を用いて、上記式2によって再生成する、ことを特徴とするプログラムを提供する。
【0013】
さらに、本発明は、秘密分散されたシェアを再生成するためのプログラムであって、シェアを区分したシェア部分データは、秘密情報を区分した秘密部分データと乱数データを区分した乱数部分データとの排他的論理和、または、乱数部分データで構成され、前記シェアのうち、あるシェアが消失した場合、消失シェア以外のシェアに含まれるシェア部分データの排他的論理和によって、秘密部分データを復元することなく消失シェアのシェア部分データを再生成する処理をコンピュータに実行させ、シェアD(i=1〜n,n≧3)を区分したシェア部分データDi,j(i=1〜n,j=1〜n−1)は、jが同じ値であって、シェア部分データ内での排他的論理和の演算回数の差が1である2個のシェア部分データ同士の排他的論理和によって、秘密部分データまたは乱数部分データが復元される排他的論理和の定義式に従って生成され、Dn,j(j=1〜n−1)は乱数部分データで構成され、シェアDが消失した場合、p≠nのとき、j=1〜n−1の各jについてDp,jをDi,j(i≠p,i≠n)とDn,q(q≠j)との排他的論理和によって再生成し、p=nのとき、j=1〜n−1の各jについてDp,jをDi,q(i≠n,q≠j)とDr,q(r≠n,r≠i)との排他的論理和によって再生成する、ことを特徴とするプログラムを提供する。
【発明の効果】
【0021】
本発明では、消失したシェアを残りのシェアから直接かつ高速に再生成することができ、処理中に秘密情報が復元されることはない。
【図面の簡単な説明】
【0022】
図1】本発明の一実施形態によるシステムの構成を表わす図である。
図2】コンピュータ1の構成の一例を表わす図である。
図3】本発明の秘密情報の通信への適用例を表わす図である。
【発明を実施するための形態】
【0023】
以下、図面を参照して本発明の実施形態を説明する。図1は、本発明の一実施形態によるシステムの構成図である。本システムは、データ処理装置10、データ保管装置31、32、33、これらを接続する回線21、22、23を備える。図1は、秘密情報Sから3個のシェアを生成し、3つのデータ保管装置に保管する場合を示す。災害対策のためには、生成されたシェアを異なる場所に保管することが望ましい。従って、生成されたシェアがn個の場合、データ保管装置はn個設置することが望ましい。
【0024】
データ処理装置10は、分散手段11、復元手段12、再生成手段13、再構成手段14を備える。分散手段11は、秘密情報Sおよびそれと同じ長さの乱数Rからn(n≧3)個のシェアを生成する。復元手段12は、分散手段11によって生成されたn個のシェアのうち所定の個数のシェアから秘密情報Sを復元する。再生成手段13は、分散手段11によって生成された1個のシェアを他の2個のシェアから再生成する。再構成手段14は、分散手段11によって生成されたn個のシェアと、それらの生成に使用された乱数Rとは別の乱数Rとを用いて、新たなn個のシェアを生成する。
【0025】
ここで、本明細書で用いる記号を説明する。ビット列aとbを結合したビット列がcであるとき、これを、
【0026】
【数3】
【0027】
と表わす。また、同じ長さのビット列aおよびbに対して、それぞれのビット毎に排他的論理和を施したビット列をcとすると、これを、
【0028】
【数4】
【0029】
と表わす。排他的論理和は、次の演算規則が成り立つ。
【0030】
【数5】
【0031】
<秘密情報の分散(シェアの生成)>
次に、分散手段11について詳細に説明する。分散手段11は、秘密情報Sと乱数Rからn個(n≧3)のシェアD〜Dを生成する。
【0032】
一実施形態として、分散手段11は、コンピュータとプログラムを用いて実現することができる。図2は、コンピュータ1の構成の一例を表わす。コンピュータ1は、中央演算処理装置(CPU)2、メモリ3、ディスク装置4、入出力インタフェース5を備える。メモリ3は一次記憶装置または主記憶装置と呼ばれる記憶装置、ディスク装置4は二次記憶装置または補助記憶装置と呼ばれる記憶装置に該当する。ディスク装置4には、プログラム6が記憶されている。入出力インタフェース5は、ディスプレイ、キーボード、通信回線等とのインタフェースの役割を果たす。プログラム6は、以下に述べる分散処理をCPU2に実行させるためのプログラムを含むものとする。
【0033】
例えば、ユーザがコンピュータ1に分散処理の実行を指示すると、ディスク装置4から分散処理プログラムがメモリ3に読み込まれ、このプログラムに含まれる命令に従って、CPU2は処理を実行する。
【0034】
ここでは、秘密情報S、同じ長さの乱数Rがメモリ3に格納されているものとする。秘密情報Sは、コンピュータ1が入出力インタフェース5を介して接続された外部記憶装置からコンピュータ1のメモリ3に読み込んでもよいし、通信回線を介して接続された他のコンピュータからコンピュータ1のメモリ3に読み込んでもよい。乱数Rは、擬似乱数生成アルゴリズムを用いて生成されたものでもよいし、自然界の物理現象を利用した乱数発生器を用いて生成されたものでもよい。後述するように、事前にまとめて生成してディスク装置に書き込んでおき、そこから読み出してもよい。
【0035】
ビット列である秘密情報Sをn−1等分し、順に、S、S、・・・、Sn−1と表わし、ビット列である乱数Rをn−1等分し、順に、R、R、・・・、Rn−1と表わすと、n=3のとき、
【0036】
【数6】
【0037】
n=4のとき、
【0038】
【数7】
【0039】
n=5のとき、
【0040】
【数8】
【0041】
である。
【0042】
n=3の場合、CPU2は、次式の右辺の演算により、シェアD〜Dを生成する(以下、「分散処理(基本型)」と呼ぶ)。
【0043】
【数9】
【0044】
すなわち、CPU2は、メモリ3からS、R、Rを読み出し、これらの排他的論理和演算の結果を、メモリ3内のシェアD用の格納領域のうち前半部分に格納し、メモリ3からS、Rを読み出し、これらの排他的論理和演算の結果を、メモリ3内のシェアD用の格納領域のうち後半部分に格納する。
次に、CPU2は、メモリ3からS、Rを読み出し、これらの排他的論理和演算の結果を、メモリ3内のシェアD用の格納領域のうち前半部分に格納し、メモリ3からS、R、Rを読み出し、これらの排他的論理和演算の結果を、メモリ3内のシェアD用の格納領域のうち後半部分に格納する。
次に、CPU2は、メモリ3からRを読み出し、メモリ3内のシェアD用の格納領域のうち前半部分に格納し、メモリ3からRを読み出し、メモリ3内のシェアD用の格納領域のうち後半部分に格納する。
このようにしてメモリ3内に格納されたシェアD〜Dは、入出力インタフェース5から図1に示す回線21〜23を介してそれぞれデータ保管装置31〜33に送信され保管される。
【0045】
上記の演算におけるD1,2とD2,2を次式のように入れ替えてもよい。この場合、CPU2は、次式の右辺の演算により、シェアD〜Dを生成する(以下、「分散処理(変形3型)」と呼ぶ)。
【0046】
【数10】
【0047】
分散処理(変形3型)をシェア数が3より大きい場合に拡張すると以下の通りである。
n=4の場合、CPU2は、次式の右辺の演算により、シェアD〜Dを生成する(以下、「分散処理(変形4型)」と呼ぶ)。
【0048】
【数11】
【0049】
n=5の場合、CPU2は、次式の右辺の演算により、シェアD〜Dを生成する(以下、「分散処理(変形5型)」と呼ぶ)。
【0050】
【数12】
【0051】
一般に、シェア数nの場合、シェアD(i=1〜n,n≧3)を区分したシェア部分データDi,j(i=1〜n,j=1〜n−1)は、i=1〜n−1,j=1〜n−1の各i,jについてDi,jが、第m列(m=1〜n−i)の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応する乱数部分データと、Sとの排他的論理和で構成され、j=1〜n−1の各jについてDn,jがRで構成されたものであると言える(以下、「分散処理(変形n型)」と呼ぶ)。
【0052】
なお、上記の分散処理を行う前に、秘密情報Sを任意の整数個に分け、それぞれについて分散処理を行ってもよい。この場合、乱数は、秘密情報Sを整数個に分けた単位で異なるものを使用してもよいし、同じものを繰り返し使用してもよい。秘密情報Sを整数個に分ける場合のそれぞれの長さは、同じでもよいし、異なってもよい。
【0053】
分散処理(基本型)は、分散処理(変形n型)と比較して次の利点がある。分散処理(変形n型)によって生成されたシェアは、個々のシェアのみから、それを構成するシェア部分データ間の演算によって乱数成分が失われる場合がある。例えば、n=3(分散処理(変形3型))の場合、D1,1とD1,2の排他的論理和演算を行うと、上述した演算規則によれば次の通りである。
【0054】
【数13】
【0055】
このように乱数成分が失われると、例えば、シェア部分データSの一部が既知である場合(例えば、Sが標準フォーマットのヘッダ情報あるいはパディングを含む場合)にはSの一部が復元可能となる。一方、分散処理(基本型)によって生成されたシェアは、次式のように、シェアD、Dそれぞれを構成するシェア部分データ間で演算を行っても乱数成分が失われないため、元の秘密情報Sの一部も復元されることはない。
【0056】
【数14】
【0057】
以上のように、分散処理の過程で使われる演算は、排他的論理和演算のみであり、多項式を用いる分散方式に比べ、アルゴリズムが単純で実装が容易かつ高速である。また、n個のシェアのうちのいずれについても、1個のシェアのみからでは秘密情報に関する情報が全く得られない情報量的安全性を有している。
【0058】
シェア数3の場合で説明すると、シェアD〜DのうちシェアDは、分散処理に使用した乱数Rそのものであり、秘密情報Sを含んでいないため、シェアDだけでは、秘密情報Sに関する情報を全く得ることができない。シェアD、Dについては、秘密情報Sと、乱数R、Rの一方または両方との排他的論理和の結果となっており、バーナム暗号による暗号文と等価である。したがって、乱数Rとして物理乱数を用いれば、シェアDまたはDと秘密情報Sとは互いが確率的に独立となり、シェアDまたはDだけでは、秘密情報Sに関する情報を全く得られない。
【0059】
このように、シェアD〜Dのうち1個のシェアだけでは秘密情報Sに関する情報は全く得られない。それぞれのシェアD〜Dを結託のない独立した管理主体において保管すれば、1個のシェア(例えば、シェアD)を管理している管理主体が、他のシェア(例えば、シェアD)の一部でも知ることは無いため、秘密情報Sの長期的な機密性を保つことができる。つまり、データ保管装置31〜33の管理主体は、結託の無い物理的にも独立したデータセンタなどが望ましい。
【0060】
<秘密情報の復元>
次に、図1の復元手段12について詳細に説明する。復元手段12は、n=3の場合、上述した分散処理によって生成された3個のシェアのうち任意の2個から秘密情報Sを復元する。nが奇数のとき(n+1)/2個、nが偶数のとき(n/2)+1個あれば復元できる。
【0061】
一実施形態として、復元手段12は、コンピュータとプログラムを用いて実現することができる。図2のプログラム6は、以下に述べる復元処理をCPU2に実行させるためのプログラムを含むものとする。例えば、ユーザがコンピュータ1に復元処理の実行を指示すると、ディスク装置4から復元処理プログラムがメモリ3に読み込まれ、このプログラムに含まれる命令に従って、CPU2は処理を実行する。
【0062】
分散処理(基本型)によるシェアの場合、CPU2は、入出力インタフェース5を制御し、回線21〜23を介して、データ保管装置31、32、33のうち2つからシェアを取得してメモリ3に格納する。
【0063】
取得したシェアがD、Dである場合、D、Dのシェア部分データについて次式が成り立つので、CPU2は次式の左辺の演算によりS、Sを算出する。
【0064】
【数15】
【0065】
取得したシェアがD、Dである場合、D、Dのシェア部分データについて次式が成り立つので、CPU2は次式の左辺の演算によりS、Sを算出する。
【0066】
【数16】
【0067】
取得したシェアがD、Dである場合、D、Dのシェア部分データについて次式が成り立つので、CPU2は次式の左辺の演算によりS、Sを算出する。
【0068】
【数17】
【0069】
分散処理(変形n型)のシェアの場合、まず、次のようにして乱数Rを取得する。
n=3の場合、次式が成り立つので、シェアD、Dが取得できた場合、左辺の演算を行い、その結果を2等分することによりR、Rを取得する。
【0070】
【数18】
【0071】
n=4の場合、次式が成り立つので、シェアDとD、または、DとDが取得できた場合、それぞれ左辺の演算を行い、その結果を3等分することによりR〜Rを取得する。
【0072】
【数19】
【0073】
n=5の場合、次式が成り立つので、シェアDとD、または、DとD、または、DとDが取得できた場合、それぞれ左辺の演算を行い、その結果を4等分することによりR〜Rを取得する。
【0074】
【数20】
【0075】
すなわち、D〜Dn−1のうち番号が連続した2個のシェアが取得できれば(ケース1)、その2個の排他的論理和演算によりR〜Rn−1を取得することができる。この乱数部分データR〜Rn−1と、取得できたシェアのうちいずれかを用いれば、シェア部分データを生成した計算式において用いたのと同じ乱数部分データを用いた排他的論理和演算により、S〜Sn−1を復元することができる。
また、D〜Dn−1のうちいずれか1つとDが取得できれば(ケース2)、Dから直接にR〜Rn−1を取得することができるので、取得できたD〜Dn−1のうちいずれか1つを用いてS〜Sn−1を復元することができる。
nが奇数のとき(n+1)/2個、nが偶数のとき(n/2)+1個のシェアが取得できれば、必然的に上記のケース1または2のいずれかに該当する。
【0076】
このように、復元処理の過程で使われる演算は、分散処理と同様に排他的論理和演算のみである。また、任意の1個のシェアが消失しても他の2個のシェアから秘密情報Sが復元されるため、復元に関してバックアップと同等な可用性を確保できる。
【0077】
<シェアの再生成>
次に、図1の再生成手段13について詳細に説明する。再生成手段13は、上述した分散処理によって生成された1個のシェアを、他の2個のシェアから、秘密情報Sを復元することなく再生成する。再生成によって得られるシェアは、分散処理によって生成された元のシェアと全く同じであるので、再生成によって得られたシェアとその他のシェアとの組み合わせにより秘密情報を復元することが可能である。機器の障害や災害などで1個のシェアが消失しても、残りの2個から当該シェアを再生成することで、長期にわたって可用性を確保することができる。
2個のシェアから秘密情報を一旦復元し、改めて分散処理を行えば、任意のシェアを生成することは可能であるが、このようにすると秘密情報が一時的に復元される。以下の再生成処理においては、1個のシェアを他の2個のシェアから直接かつ高速に生成することができ、秘密情報が処理中に復元されない。
【0078】
一実施形態として、再生成手段13は、コンピュータとプログラムを用いて実現することができる。図2のプログラム6は、シェアの再生成処理をCPU2に実行させるためのプログラムを含むものとする。例えば、ユーザがコンピュータ1に再生成処理の実行を指示すると、ディスク装置4から再生成処理プログラムがメモリ3に読み込まれ、このプログラムに含まれる命令に従って、CPU2は次の処理を実行する。
【0079】
分散処理(基本型)によるシェアの場合、CPU2は、入出力インタフェース5を制御し、回線21〜23を介して、データ保管装置31、32、33のうち2つからシェアを取得してメモリ3に格納する。
【0080】
データ保管装置33のシェアDが消失した場合、CPU2は、データ保管装置31、32からそれぞれシェアD、Dを取得する。次式が成り立つので、CPU2は左辺の演算を行い、その結果を結合することによりDを再生成する。
【0081】
【数21】
【0082】
データ保管装置32のシェアDが消失した場合、CPU2は、データ保管装置31、33からそれぞれシェアD、Dを取得する。次式が成り立つので、CPU2は左辺の演算を行い、その結果を結合することによりDを再生成する。
【0083】
【数22】
【0084】
データ保管装置31のシェアDが消失した場合、CPU2は、データ保管装置32、33からそれぞれシェアD、Dを取得する。次式が成り立つので、CPU2は左辺の演算を行い、その結果を結合することによりDを再生成する。
【0085】
【数23】
【0086】
分散処理(変形3型)のシェアの場合は次の通りである。
シェアDが消失した場合、D、Dを取得する。次式が成り立つので、左辺の演算を行い、その結果を結合することによりDを再生成する。
【0087】
【数24】
【0088】
シェアDが消失した場合、D、Dを取得する。次式が成り立つので、左辺の演算を行い、その結果を結合することによりDを再生成する。
【0089】
【数25】
【0090】
シェアDが消失した場合、D、Dを取得する。次式が成り立つので、左辺の演算を行い、その結果を結合することによりDを再生成する。
【0091】
【数26】
【0092】
分散処理(変形4型)のシェアの場合は次の通りである。
シェアDが消失した場合、D、Dを取得する。次式が成り立つので、左辺の演算を行い、その結果を結合することによりDを再生成する。
【0093】
【数27】
【0094】
このように、右辺のD1,1、D1,2、D1,3を得るために、順に、乱数部分データR、R、Rが使用される。j=1〜3の各jについてD1,jを生成するために使用される乱数部分データの番号3、1、2は「第3列の成分が1で他の成分が0である1行3列の行列(0,0,1)の成分を右方向にj−1回巡回させたとき成分が1である列の番号」と表わすことができる。D1,jをこの乱数部分データとD2,jとの排他的論理和によって生成する。
【0095】
シェアDが消失した場合、D、Dを取得する。次式が成り立つので、左辺の演算を行い、その結果を結合することによりDを再生成する。
【0096】
【数28】
【0097】
このように、右辺のD2,1、D2,2、D2,3を得るために、順に、乱数部分データR、R、Rが使用される。j=1〜3の各jについてD2,jを生成するために使用される乱数部分データの番号2、3、1は「第2列の成分が1で他の成分が0である1行3列の行列(0,1,0)の成分を右方向にj−1回巡回させたとき成分が1である列の番号」と表わすことができる。D2,jをこの乱数部分データと、D3,jとの排他的論理和によって生成する。
【0098】
シェアDが消失した場合のもう1つの方法として、D、Dを取得する。次式が成り立つので、左辺の演算を行い、その結果を結合することによりDを再生成する。
【0099】
【数29】
【0100】
このように、右辺のD2,1、D2,2、D2,3を得るために、順に、乱数部分データR、R、Rが使用される。j=1〜3の各jについてD2,jを生成するために使用される乱数部分データの番号3、1、2は「第3列の成分が1で他の成分が0である1行3列の行列(0,0,1)の成分を右方向にj−1回巡回させたとき成分が1である列の番号」と表わすことができる。D2,jをこの乱数部分データと、D1,jとの排他的論理和によって生成する。
【0101】
シェアDが消失した場合、D、Dを取得する。次式が成り立つので、左辺の演算を行い、その結果を結合することによりDを再生成する。
【0102】
【数30】
【0103】
このように、右辺のD3,1、D3,2、D3,3を得るために、順に、乱数部分データR、R、Rが使用される。j=1〜3の各jについてD3,jを生成するために使用される乱数部分データの番号2、3、1は「第2列の成分が1で他の成分が0である1行3列の行列(0,1,0)の成分を右方向にj−1回巡回させたとき成分が1である列の番号」と表わすことができる。D3,jをこの乱数部分データと、D2,jとの排他的論理和によって生成する。
【0104】
シェアDが消失した場合、D、Dを取得する。次式が成り立つので、左辺の演算を行い、その結果を結合することによりDを再生成する。
【数31】
【0105】
このように、シェアD、Dそれぞれの1番目のシェア部分データD1,1とD2,1、2番目のシェア部分データD1,2とD2,2、3番目のシェア部分データD1,3とD2,3を使用して、順に、D4,3、D4,1、D4,2、すなわち、乱数部分データR、R、Rが生成される。この乱数部分データの番号3、1、2は「第3列の成分が1で他の成分が0である1行3列の行列(0,0,1)の成分を右方向にj−1回巡回させたとき成分が1である列の番号」と表わすことができる。
【0106】
シェア数が5以上の場合も同様に考えることができ、分散処理(変形n型)のシェアの場合、シェアD(1≦p≦n)の再生成は、p=1のときDはDp+1とDから再生成でき、1<p<n−1のときDはDp+1とD、または、Dp−1とDから再生成でき、p=n−1のときDはDp−1とDから再生成でき、p=nのときDはDとDから再生成できる。すなわち、
p=1のとき、j=1〜n−1の各jについてD1,jを、第n−1列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応する乱数部分データと、D2,jとの排他的論理和によって再生成し、
1<p<n−1のとき、j=1〜n−1の各jについてDp,jを、第n−p列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応する乱数部分データと、Dp+1,jとの排他的論理和によって再生成するか、または、第n−p列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj回巡回させたとき成分が1である列の番号に対応する乱数部分データと、Dp−1,jとの排他的論理和によって再生成し、
p=n−1のとき、j=1〜n−1の各jについてDn−1,jを、第2列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応する乱数部分データと、Dn−2,jとの排他的論理和によって再生成し、
p=nのとき、j=1〜n−1の各jについて第n−1列の成分が1で他の成分が0である1行n−1列の行列の成分を右方向にj−1回巡回させたとき成分が1である列の番号に対応するDのシェア部分データを、D1,jとD2,jとの排他的論理和によって再生成する。
【0107】
上記のいずれの処理においても、秘密情報Sを復元する必要がなく、処理の過程で計算機内のCPUやメモリなどからも秘密情報Sが漏洩する恐れがない。また、シェア数3でそのうち1個を失った状態では可用性が確保されていないため、再生成に要する時間を極力短縮する必要がある。各シェアを再生成する操作は、独立した2つのステップで構成されており、並列処理が可能な環境において、1回の排他的論理和演算の時間のみで完了することが期待される。
【0108】
<シェアの再構成>
次に、図1の再構成手段14について詳細に説明する。再構成手段14は、分散処理によって生成されたn個のシェアD〜Dと、それらを生成する際に使用した乱数Rとは別の同じ長さの乱数Rとを用いて、新たなn個のシェアD〜Dを生成する。新たなシェアは、元のシェアの算出に用いられたRをRで置換して算出されたものに等しい。
【0109】
一実施形態として、再構成手段14は、コンピュータとプログラムを用いて実現することができる。図2のプログラム6は、以下に述べる再構成処理をCPU2に実行させるためのプログラムを含むものとする。例えば、ユーザがコンピュータ1に再構成処理の実行を指示すると、ディスク装置4から再構成処理プログラムがメモリ3に読み込まれ、このプログラムに含まれる命令に従って、CPU2は処理を実行する。
【0110】
分散処理(基本型)の場合、CPU2は、入出力インタフェース5を制御し、回線21〜23を介して、データ保管装置31、32、33からそれぞれシェアD、D、Dを取得してメモリ3に格納する。メモリ3には、シェアD〜Dを生成する際に使用した乱数Rではない別の同じ長さの乱数Rが格納されているものとする。乱数Rは、擬似乱数生成アルゴリズムを用いて生成されたものでもよいし、自然界の物理現象を利用した乱数発生器を用いて生成されたものでもよい。
【0111】
再構成に用いる乱数R
【0112】
【数32】
【0113】
とし、再構成によって得られる新たなシェアを
【0114】
【数33】
【0115】
とする。以下、
【0116】
【数34】
【0117】
とする。例えば、D2,1はSとRの排他的論理和として生成されたので、D2,1とRの排他的論理和演算を行えばRが打ち消されてSが得られ、次にこれとRとの排他的論理和演算を行えばD2,1が得られる。このように計算すると処理中にSが復元されてしまうが、D2,1とRとの排他的論理和演算を行えば、処理中にSが復元されることはない。そこで、CPU2は、新たなシェアのそれぞれを次式の右辺の演算によって生成する。
【0118】
【数35】
【0119】
この再構成処理によって生成される新たなシェアが、秘密情報Sと乱数Rを用いて上述した分散処理(基本型)によって生成されるものと同じであることは、上記の各式がそれぞれ次のように変形できることから確認できる。
【0120】
【数36】
【0121】
従って、新たなシェアについても、上述した復元処理および再生成処理を行うことができる。
【0122】
確認のため、再構成前のシェアのうち1個と再構成後のシェアのうち1個とで秘密情報の復元を試みる。例えば、シェアDとシェアDを用いると、上述した分散処理(基本型)によるシェアDとDから秘密情報を復元する演算式のDをDで置換して演算を行うと次式の通りである。
【0123】
【数37】
【0124】
これらの演算結果には、元の乱数成分と再構成の際に用いた乱数成分とが含まれるため、秘密情報Sを得ることはできない。他の組み合わせについても同様である。このことから、再構成前のシェアのうち1個が漏洩した可能性がある場合でも、再構成を行い、再構成前の残りの2個のシェアを全て消去すれば、第三者が復元のために必要な残りのシェアを入手して秘密情報を復元する可能性を排除し、機密性を回復することができる。
【0125】
分散処理(変形n型)によるシェアの再構成処理も同様である。
【0126】
このように、再生成処理と同様、再構成処理の過程で秘密情報は復元されず、また、分散処理とほぼ同じ処理時間で新しいシェアを再構成することができる。
【0127】
<秘密情報の完全性確保>
上述した復元処理では、シェアの保管中に生じた機器の故障や改ざんなどにより、シェアに誤りが生じていたとしても、それを検出することができない。これに対して、次に示すように、ハッシュ値を併用することによって完全性を確保することができる。
【0128】
xを保管する場合、以下の手順を行う。ここで、ハッシュ関数をHとする。
(1)xのハッシュ値をh=H(x)とする。
(2)分散する秘密情報Sを
【0129】
【数38】
【0130】
とする。
(3)上述した分散処理により分散を行う。
【0131】
xを復元する場合、以下の手順を行う。
(1)上述した復元処理により秘密情報を復元し、これをS’とおく。
(2)
【0132】
【数39】
【0133】
とみなし, S’からx’とh’を取り出す。
(3)H(x’)とh’を比較する。H(x’)とh’が一致すればx=x’であり、x’が復元の結果として得られる情報の本体である。
【0134】
復元処理の(3)において、ハッシュ値が一致しなければ,復元処理に使用した2個のシェアのうちいずれか一方または両方に誤りが発生していることを示している。
シェア数3の場合、他の2通りの組み合わせによる復元を行い、どちらかの組み合わせで正しく復元されれば、そのときに使用しなかったシェアに誤りがあることがわかる。その際には,上述した再生成処理により、正しいシェアを回復することができる。どちらの組み合わせでも正しく復元されなければ、2個以上のシェアに誤りが発生していることになり、本方式では対処できない。
【0135】
上記のハッシュ値を用いた手順以外に、異なる2つのシェアの組み合わせにより、それぞれの組合せで復元した結果を突合することでも完全性を確認可能である。
【0136】
<保管容量の削減>
一般に、重要な情報を長期保管する場合、そのバックアップをとっておくのが通例であるため、可用性のみを確保する目的のために、合計で元の情報に対して2倍の容量を保管することになる。一方、上述した分散処理を行うと、機密性と可用性および完全性を同時に満たすが、シェア数3の場合、秘密情報と同じ長さの3個のシェアが生成されるので、秘密情報に対して3倍の容量を保管する必要がある。これは、バックアップにより可用性のみを確保した場合の1.5倍にあたる。ここでは、本発明におけるシェアの総容量を削減する方式について述べる。
【0137】
<擬似乱数の利用>
シェア数3の場合、シェアDは、分散処理に使用した乱数Rそのものである。そこで、物理乱数の代わりに計算量的安全性に基づき適切な擬似乱数を利用し、シェアDとして擬似乱数のシードのみを保存する方法が考えられる。シードは、それから生成される擬似乱数系列に比べて十分に小さい容量であるため、この方法ではシェアの総容量を秘密情報Sの2倍程度に抑えることができる。
【0138】
<擬似乱数を使用した長期的な機密性の確保>
本発明において擬似乱数を使用し、長期にわたって機密性を確保するには、擬似乱数生成アルゴリズムの危殆化に対する考慮が必要である。本発明では、上述した再構成処理を以下のように利用することにより、危殆化への対応が可能である。
【0139】
まず、擬似乱数生成アルゴリズムFr1とそのシードseedr1を使用して擬似乱数系列r1を生成する。次に、秘密情報Sとr1を用いて、上述した分散処理に従ってシェアDおよびDを生成する。最後に、r1ではなくseedr1をシェアDとする。
ある期間経過後Fr1が危殆化する前に、その時点で十分に安全なFr2とseedr2を新たに用意し、これらを用いて擬似乱数系列r2を生成する。また、シェアDとDから、
【0140】
【数40】
【0141】
により
【0142】
【数41】
【0143】
を得る。シェアの再構成を行うために与える新たな疑似乱数を
【0144】
【数42】
【0145】
とし、上述した再構成処理により新たなシェアDおよびシェアDを求める。その結果、
【0146】
【数43】
【0147】
であり、以降、シェアDおよびシェアDを保管する。一方、新たなシェアDとしては、seedr1を破棄してseedr2のみを保管する。
このように、擬似乱数生成アルゴリズムFr1が危殆化する前に、Fr(i+1)を用いてシェアの再構成処理を行うことで、シェアの総容量を抑えつつ、長期的な安全性を確保することができる。
【0148】
なお、この方法では、シェアDはFr2のシードであるため、上述した再生成処理を適用しても、シェアDだけはシェアDとシェアDから再生成することができない。仮に、シェアDが消失した場合、擬似乱数生成アルゴリズムが危殆化した場合と同様にシェアDおよびシェアDの再構成処理を行い、その時に使用した擬似乱数生成アルゴリズムのシードを新たなシェアDとすればよい。
【0149】
<ディザスタリカバリシステムへの適用>
上述した復元処理により、3個のシェアのうち任意の2個のシェアで秘密情報を復元でき、かつ、上述した再生成処理により、任意の2個のシェアから秘密情報を復元することなく、他の1個のシェアを迅速に再生成することができる。この特長を利用し、ディザスタリカバリシステムを容易に構築可能である。
【0150】
図1に示すデータ保管装置31〜33は、それぞれ距離が離れた地点X、Y、Zにあるデータセンタに設置され、シェアを1個ずつ格納する。分散処理や復元処理などは自社に設置されたデータ処理装置10で行うこととし、各データセンタとの間は個別の回線21〜23で接続する。仮に、1つのデータセンタが災害に見舞われても、残りの2つのデータセンタに保管されたシェアから被災したデータセンタのシェアの再生成が可能である。
このようなディザスタリカバリシステムにおいて実装を効率化するための方式を述べる。
【0151】
<乱数の事前生成>
上述した分散処理では、秘密情報と同じサイズの乱数を生成する必要がある。良質な乱数を生成する装置は、ディスク装置のアクセス速度に比べて低速であり、多量の乱数を生成する場合、その生成時間が上述した分散処理の処理速度を抑える要因となる可能性がある。
上述した分散処理においてシェアDは、分散時に使用する乱数そのものであり、秘密情報Sには依存していない。このため、事前に乱数を生成してシェアDを作成しておくことが可能である。
【0152】
例えば、地点Zにあるディスク装置の全セクタに予め生成した乱数を書き込んでおく。また、秘密情報を保管する際、秘密情報をディスクのセクタサイズに分割し、その単位で分散処理を行うこととする。このとき、必要なセクタ番号の乱数を地点Zから読み出し、シェアDおよびシェアDを生成し、使用した乱数が書かれていたセクタ番号に対応する地点Xおよび地点Yのディスク装置のセクタに書き込む。シェアDは、分散処理の前後で変化しないため、分散処理後にシェアDを書き込む必要はない。復元処理の際には、任意の2地点の対応するセクタを読み出し、セクタごとに復元処理を行い、その結果を結合することで秘密情報を得ることができる。
【0153】
一般に、ディスク装置に保管する情報とそれを記録するためのセクタ番号との対応は、ファイルシステムが管理する。このことを利用すれば、セクタ単位での分散処理および復元処理をディスクアクセスのためのデバイスドライバの機能の一部として実装することで、上述の方式を実現することができる。
【0154】
このように、乱数を事前に生成しておくことで、上述した分散処理の処理速度が乱数の生成速度により抑えられる事態を避けることが可能となる。
【0155】
<乱数からなるシェアを平時に使用しない分散方式>
図1に示したシェア数3のディザスタリカバリシステムを構築する場合、データ処理装置10を自社に設置し、データ保管装置31〜33をそれぞれ異なる地点X、Y、Zのデータセンタに設置すると、自社と各データセンタの間には、想定されるディスクへのアクセス頻度などに応じた帯域の回線を用意する必要がある。しかし、コスト面で既存の回線と共用せざるを得ず、十分な帯域を確保できないなどの場合も考えられる。ここでは、上述した乱数の事前生成がなされていることを前提として、シェアDやシェアDに誤りが発生しない限り、シェアDに対してアクセスする必要がない実装方式を示す。
【0156】
事前準備として、上述した乱数の事前生成を行った後、何らかの意味のない情報(例えば、擬似乱数など)を秘密情報として、地点Xおよび地点Yのディスク装置全体にシェアが書き込まれるように分散処理を行っておく。すなわち、地点X、Y、Zのディスク装置の対応するセクタには、何らかの意味のない情報を秘密情報として分散処理によって生成された対応するシェアが予め書き込まれ、このうち地点Zのディスク装置には事前生成された乱数が書き込まれた状態となっている。この後、次の手順により秘密情報Sを保管する。上記で乱数の事前生成に関して述べたのと同様に、分散処理によって生成されたシェアを保管するときには、地点X、Y、Zのディスク装置の対応するセクタを使用するものとする。
【0157】
まず、分散処理によって生成されるシェアD、Dを書き込むために使用されることになる地点X、Yのディスク装置のセクタから書き込まれている情報を読み出す。この情報は、そのセクタが直前に使用された際(そのセクタが初めて使用される場合は、事前準備として書き込みを行った際)に書き込まれたものである。これらのシェアから、上述した再生成処理を適用して乱数
【0158】
【数44】
【0159】
を得る。この乱数は、事前生成により地点Zのディスク装置の対応するセクタに書かれている乱数に等しい。この乱数を用い、上述した分散処理によってシェアD、Dを生成し、それぞれ地点X、Yのディスク装置に書き込む。シェアDとDのみを用いた復元処理は、上述したとおりである。
【0160】
この方式によれば,通常はシェアDにアクセスする必要はない。シェアDまたはシェアDに誤りが生じたり、災害などで消失したりした場合のみ、シェアDを用いて復元処理や再生成処理を行えばよい。
【0161】
上述したシェアDとDから乱数Rを導出する処理も、排他的論理和のみで構成されており、シェアへのアクセスに要する時間に比べ、十分に短い時間で完了することが期待できる。自社と地点Xおよび地点Yを結ぶ回線が十分広帯域で、かつ、シェアDとシェアDが同時にアクセスできるならば、この分散処理に要する時間は、ほぼ、シェアの読み出しに要する時間と書き込みに要する時間との和となる。上述した乱数を事前生成する方法でも、分散処理に要する時間は、ほぼ、シェアDの読み出しに要する時間とシェアDおよびシェアDの書き込みに要する時間との和となる。このことから、この方式を用いても分散処理に要する時間は、乱数を事前生成する方法と大差ないことがわかる。復元処理に要する時間は、どちらの方法においても、ほぼシェアの読み出しに要する時間となる。
【0162】
このように、この方式を用いれば、通常はシェアDにアクセスする必要がなく、自社と地点Zとの間における回線の帯域が十分に確保できない場合に有効である。
【0163】
<秘密情報の通信への適用>
これまで、秘密情報の長期的な安全性を確保する保管への適用を述べた。ここでは、図3に示す本発明の秘密情報の通信への適用例に関して述べる。例えば、基地局40と移動端末41の無線によるリアルタイムな音声通信を想定する。
【0164】
まず、シェア数3の場合において、シェアDが秘密情報Sから全く独立に構成されている点に着目する。つまり、シェアDが乱数のみにより構成されており、秘密情報が発生するタイミングとは、完全に非同期なタイミングで生成可能である。よって、シェアDを基地局40と移動端末41との間で事前に共有しておくことが可能である。具体的には、基地局40においてシェアDを生成し、電気通信に依存しない方法により、例えば、郵便などによりSDXCカードなどメモリーカードの格納媒体を送付して、移動端末41との間でシェアDを共有しておく。図3の点線はシェアDが基地局40から移動端末41へオフラインで渡されることを示す。シェアDはオンラインで送受信される。
【0165】
ここで注意を要するのは、シェアDを確実に1回のみの使用に留める制御である。つまり、移動端末41において音声を秘密情報Sとして、上述した分散処理を用い、例えば、シェアDを生成したタイミングにおいて、これに用いたシェアDを使い捨てとする。移動端末41においては、勿論、シェアDも生成可能であるが、この例では当該シェアを敢えて生成しない。
【0166】
移動端末41からシェアDのみを基地局40へ送ることにより、通信路上において、これ以外のシェアが出現することは無い。よって、音声は情報量的安全性を確保した状態で通信される。
【0167】
なお、移動端末41の紛失などが発生し、事前共有したシェアDの危殆化が懸念される場合、単に、基地局40にて保有している同一のシェアDを破棄するのみである。
移動端末41において生成しなかったシェアDは、シェアDを保有している基地局40において、シェアDが到着したタイミングで、上述した再生成処理を適用してリアルタイムに生成可能である。この際、基地局40においても、秘密情報である音声を復元する必要がない。
【0168】
また、通信相手が接続されている基地局40において、通信相手のシェアDを用い、上述した再構成処理を行うことにより通信相手のシェアDを生成することができる。この時、基地局40においても通信相手のシェアDを使い捨てとする必要がある。これにより、移動端末41において発生された秘密情報は、情報量的安全性を常時維持した状態で相手と通信される。
【0169】
一方、基地局40と移動端末41の間においては、秘密情報の可用性が担保されていない。しかし、一般にはパケット通信が利用されており、必要に応じてパケットの再送を行うことにより、実質的な問題は生じないと考えられる。なお、パケット再送時においても、シェアDの使い捨てに十分留意する必要がある。
【0170】
本発明の通信への適用には、シェアDの安全な事前共有が必須であるため、この事前共有の頻度を考察する。例えば、256GBのSDXCカードを利用し、音楽CDと同等な音声品質の確保を想定する。音声は、サンプリング周波数を44.1kHzとし、1回のサンプリングで16ビットの量子化を行う。また、移動端末41においては送信と受信が同量とする。この条件下では、少なく見積もっても約400時間の連続音声通信が可能となる。つまり、シェアDの事前共有間隔は、最大400時間あけることが可能となる。この時間は、移動端末41の個人的な利用において、特段の制限となるものでは無いと考えられる。
【産業上の利用可能性】
【0171】
本発明は、一例として、データのディザスタリカバリシステムに利用することができる。
【符号の説明】
【0172】
1 コンピュータ
2 中央演算処理装置
3 メモリ
4 ディスク装置
5 入出力インタフェース
6 プログラム
10 データ処理装置
11 分散手段
12 復元手段
13 再生成手段
14 再構成手段
21、22、23 回線
31、32、33 データ保管装置
40 基地局
41 移動端末
図1
図2
図3