IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 株式会社リーディングエッジの特許一覧

特開2025-4729秘密分散方法、秘密分散システム、秘密分散プログラム
<>
  • 特開-秘密分散方法、秘密分散システム、秘密分散プログラム 図1
  • 特開-秘密分散方法、秘密分散システム、秘密分散プログラム 図2
  • 特開-秘密分散方法、秘密分散システム、秘密分散プログラム 図3
  • 特開-秘密分散方法、秘密分散システム、秘密分散プログラム 図4
  • 特開-秘密分散方法、秘密分散システム、秘密分散プログラム 図5
  • 特開-秘密分散方法、秘密分散システム、秘密分散プログラム 図6
  • 特開-秘密分散方法、秘密分散システム、秘密分散プログラム 図7
  • 特開-秘密分散方法、秘密分散システム、秘密分散プログラム 図8
  • 特開-秘密分散方法、秘密分散システム、秘密分散プログラム 図9
  • 特開-秘密分散方法、秘密分散システム、秘密分散プログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025004729
(43)【公開日】2025-01-15
(54)【発明の名称】秘密分散方法、秘密分散システム、秘密分散プログラム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20250107BHJP
【FI】
G09C1/00 650Z
【審査請求】有
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023196798
(22)【出願日】2023-11-20
(11)【特許番号】
(45)【特許公報発行日】2024-02-06
(31)【優先権主張番号】P 2023104035
(32)【優先日】2023-06-26
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】520029550
【氏名又は名称】株式会社リーディングエッジ
(74)【代理人】
【識別番号】100086232
【弁理士】
【氏名又は名称】小林 博通
(74)【代理人】
【識別番号】100092613
【弁理士】
【氏名又は名称】富岡 潔
(74)【代理人】
【識別番号】100104938
【弁理士】
【氏名又は名称】鵜澤 英久
(74)【代理人】
【識別番号】100210240
【弁理士】
【氏名又は名称】太田 友幸
(72)【発明者】
【氏名】山本 博資
(57)【要約】      (修正有)
【課題】秘密分散方法の秘匿性と可用性との両立を図る方法を提供する。
【解決手段】秘密情報システム1において、保管サーバ装置2は、分散データ生成部14が分散対象データから分散片データを生成する分散ステップと、データ復元部15が分散片データを用いて分散対象データを再構築する再構成ステップと、を有する。分散ステップは、分散対象データからk個の分散片と予備の分散片(1個または2個)とを生成し、複数の保存部22にそれぞれ保存する。再構成ステップは、各保存部22から収集した分散片群が再構成分散数を満たせば、収集された分散片群を用いて分散対象データを再構成する。一方、再構成分散数を満たさなければ、分散対象データの再構成時に予備の分散片を用いる。
【選択図】図5
【特許請求の範囲】
【請求項1】
分散対象データを符号分散化した分散片群を生成する分散データ生成部と、
前記各分散片をそれぞれ保管する複数の保存部と、
前記各保存部に保管された分散片を収集し、事前に定められた再構成分散数に基づき前記分散対象データを復号して再構成するデータ復元部と、
を備えた秘密分散システムの実行する方法であって、
前記分散データ生成部が、前記分散対象データから前記再構成分散数に応じた複数の分散片群と該分散片群を冗長化した予備の分散片とを生成し、生成された前記分散片および前記予備の分散片をそれぞれ前記保存部に分散して保管する分散データ生成ステップと、
前記データ復元部が、前記保存部から前記分散片および前記予備の分散片を収集し、前記収集された前記分散片群が前記再構成分散数を満たせば前記分散片群を用いて前記分散対象データを再構成する一方、前記収集された前記分散片が前記再構成分散数を満たさなければ存在している分散片と前記予備の分散片とを用いて存在しない前記分散片を求めて前記分散対象データを再構成する再構成ステップと、
を有することを特徴とする秘密分散方法。
【請求項2】
前記分散データ生成ステップは、前記生成された前記各分散片ついて誤り検出符号の値を求めてデータ復元部に設定するステップを有する一方、
前記再構成ステップは、前記収集された前記各分散片について誤り検出符号の値を求めて前記設定された値と照合することで前記各分散片が存在するか否かを判定するステップを有する
ことを特徴とする請求項1記載の秘密分散方法。
【請求項3】
前記再構成ステップは、前記収集された前記分散片数の個数が前記再構成分散数を満たせば、前記収集された前記分散片群を用いて前記分散対象データを再考するステップと、
前記収集された前記分散片群を用いた前記再構成が失敗すれば、前記分散片に付与された番号順に前記予備の分散片と入れ替えて再構成を実行するステップと、
を有することを特徴とする請求項1記載の秘密分散方法。
【請求項4】
分散対象データを符号分散化した分散片群を生成する分散データ生成部と、
前記各分散片をそれぞれ保管する複数の保存部と、
前記各保存部に保管された分散片を収集し、事前に定められた再構成分散数に基づき前記分散対象データを復号して再構成するデータ復元部と、
を備えた秘密分散システムの実行する方法であって、
前記分散データ生成部が、前記分散対象データから前記再構成分散数に応じた複数の分散片群と該分散片群を冗長化した予備の分散片(1個または2個)とを生成し、生成された前記分散片および前記予備の分散片をそれぞれ前記保存部に分散して保管する分散データ生成ステップと、
前記データ復元部が、前記保存部から前記分散片および前記予備の分散片を収集し、前記収集された前記分散片群が前記再構成分散数を満たせば前記分散片群を用いて前記分散対象データを再構成する一方、前記収集された前記分散片が前記再構成分散数を満たさなければ前記予備の分散片を用いて前記分散対象データを再構成する再構成ステップと、
を有し、
前記分散データ生成ステップは、前記再構成分散数(k)と前記予備の分散片数(r)と前記分散対象データのデータ長(L)と前記分散対象データとの情報を格納する分散データ機能から前記各情報を読み込む第1ステップと、
乱数を生成し、生成した前記乱数と前記データ長(L)と前記分散対象データとのデータ列S(バイト数=「k×8」の倍数)を作成する第2ステップと、
前記データ列Sを「k×8」のブロックに分割し、分割された各ブロックに対して演算を実行し、分散片「W」を求める第3ステップと、
を有し、
前記第3ステップは、「前記予備の分散片数(r)=1」の場合には式(28)(29)を用いる一方、
【数28】

xy:ブロック番号yのx(x=1.2.3...k)番目の値(8バイト)
zy:ブロック番号y、分散番号z(z=1.2.3...k)の前記分散片の値(8バイト)
(k+1)y:前記予備の分散片
【数29】

「前記予備の分散片数(r)=2」の場合には式(30)(31)を用いることを特徴とする秘密分散方法。
【数30】

【数31】

xy:ブロック番号yのx(x=1.2.3...k)番目の値(8バイト)
zy:ブロック番号y、分散番号z(z=1.2.3...k)の前記分散片の値(8バイト)
(k+1)y,W(k+2)y:前記予備の分散片
【請求項5】
分散対象データを符号分散化した分散片群を生成する分散データ生成部と、
前記各分散片をそれぞれ保管する複数の保存部と、
前記各保存部に保管された分散片を収集し、事前に定められた再構成分散数に基づき前記分散対象データを復号して再構成するデータ復元部と、
を備えた秘密分散システムであって、
前記分散データ生成部は、前記分散対象データから前記再構成分散数に応じた複数の分散片群と該分散片群を冗長化した予備の分散片とを生成し、生成された前記分散片および前記予備の分散片をそれぞれ前記保存部に分散して保管し、
前記データ復元部は、前記保存部から前記分散片および前記予備の分散片を収集し、
収集された前記分散片群が前記再構成分散数を満たせば、前記分散片群を用いて前記分散対象データを再構成する一方、
前記収集された前記分散片が前記再構成分散数を満たさなければ、存在している分散片と前記予備の分散片とを用いて、存在しない前記分散片を求めて前記分散対象データを再構成する
ことを特徴とする秘密分散システム。
【請求項6】
請求項1~4のいずれか記載の秘密分散方法をコンピュータに実行させる秘密分散プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散対象データの秘密情報を複数の分散片データに秘密分散化し、分散片データが揃うことで分散対象データを再構成して復元する秘密分散方法(以下、秘密分散法と呼ぶ。)、秘密分散システムおよび秘密分散プログラムに関する。
【背景技術】
【0002】
秘密分散法(secret sharing scheme,SSS)は、重要な情報(秘密情報)を破壊や漏洩などの脅威から守るための符号化として広く使用されている。
【0003】
もっとも、非特許文献1によると秘密分散法により分散処理した場合、程度の差はあるが分散片データの合計データ量が増加することが記載されている。これにより大きなデータを扱う場合に分散保管のメモリ使用効率が低下するおそれがある。
【0004】
そこで、非特許文献12の「n多重(n,n)しきい値法の秘密分散法」(マルチプレックスシークレットシェアリング:以下、「MSSS」と呼ぶ。)が提案され、非特許文献13にて実用的実装が可能であることが示されている。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Shamir, Adi,“How to Share a Secret,”Commun. ACM,vol.22. no.11, pp.612-613, Nov. 1979インターネットURL<http://doi.acm.org/10.1145/359168.359176>
【非特許文献2】ISO/IEC, “Information technology ― Security techniques― Secret sharing ―Part 2: Fundamental mechanisms,”ISO/IEC 19592-2, Oct. 2017
【非特許文献3】山澤昌夫,角田篤泰,近藤健,才所敏明,五太子政史,佐藤直,辻井重男,野田啓一,“暗号通貨(ビットコイン)・ブロックチェーンの高信頼化へ向けてのMELT-UP 活動- 秘密鍵管理を中心に-,” Proc. SCIS2018, 4F2-2.Jan. 2018.
【非特許文献4】山澤昌夫,五太子政史,山本博資,辻井重男,南重信,吉光久仁彦,野田啓一,“セキュア分散PDS システムの秘密鍵保護について,” Proc. SCIS2020, 2C2-2. Jan. 2020.
【非特許文献5】山澤昌夫,五太子政史,山本博資,松本義和,白水公康,豊島大朗,瀬瀬考平,近藤健,辻井重男,“分散個体群を認証するための秘密分散法要件の一検討,” Proc. SCIS2020,4G-1,pp.688-692,June 2020.
【非特許文献6】五太子政史, 山澤昌夫, 山本博資, 藤田亮, 松本義和, 白水公康, 豊島大朗, 瀬瀬考平, 近藤健, 辻井重男,“分散個体群認証のための秘密分散法について,” Proc. SCIS2020,4G-2. pp.693-697,June 2020.
【非特許文献7】山澤昌夫, 米津武至, 五太子政史, 山本博資, 辻井重男, “秘密分散ライブラリ応用と実装要件について”, “マルチメディア, 分散協調とモバイルシンポジウム2021 論文集”,Proc.DICOMO2021,1G-3,pp.163-164, Jun 2021.
【非特許文献8】山澤昌夫,米津武至,五太子政史,山本博資,藤田亮,辻井重男,“秘密分散ライブラリの実装における要件の検討”, “マルチメディア, 分散協調とモバイル(DICOMO2022) シンポジウム論文集”Proc.DICOMO2022,1D-1,pp.51-54,Jul. 2022.
【非特許文献9】岡本龍明,山本博資“現代暗号”,産業図書株式会社,1997年6 月30 日( 初版),2000 年6 月30 日( 第1 刷).
【非特許文献10】山本博資, “(k, L, n) しきい値秘密分散システム”, 電子通信学会論文誌, vol.J68-A, no.9, pp.945-952, Sep. 1985,[英訳: Electronics and Communications in Japan, PartI, vol.69, no.9, pp.46-54, (Scripta Technica, Inc.), Sep.1986]
【非特許文献11】西新幹彦, 滝澤克則, “多項式補間法による強いランプ型しきい値秘密分散法”, 電子通信学会論文誌, vol.J92-A,no.12, pp.1009-1013, Dec. 2009.
【非特許文献12】山本博資,“多重秘密分散法,” Proc. The 44th Symposiumon Information Theory and its Applications(SITA2021),Nishinomiya, Hyogo, Japan, Dec. 8-10,2021.
【非特許文献13】山澤昌夫,米津武至,五太子政史,山本博資,藤田亮,辻井重男,“秘密分散ライブラリの実装における要件の実証検討”,Proc. SCIS2023, 2B2-4, Jan. 24~27, 2023
【非特許文献14】五十嵐大,露崎浩太,川原祐斗 ”SHH:オブジェクトストレージ向けの超高速秘密分散ライブラリ”情報処理学会研究報告 Vol.2015-CSEC-70 No.26,Vol.2015-SPT-14 No.26,2015/7/3
【非特許文献15】“[Windows 11]MD/SHA-1/SHA-256ハッシュ値を計算してファイルの同一性を確認する”,[online],[令和5年11月2日検索],インターネット<URL:1700454096755_0.html>
【発明の概要】
【発明が解決しようとする課題】
【0006】
秘密分散法は、重要な情報をリスクから守る安全性とシステムが継続して可動できる可用性(Availability)の相反する要求を両立させていることを特徴としている。ところが、非特許文献12の「MSSS」では可用性の対応が損なわれるおそれがある。
【0007】
本発明は、このような従来の問題を解決するためになされ、非特許文献12の「MSSS」における高速演算性を保ちつつ可用性を向上させ、秘密分散法の秘匿性と可用性との両立を図ることを解決課題としている。
【課題を解決するための手段】
【0008】
本発明の一態様は、分散対象データを符号分散化した分散片群を生成する分散データ生成部と、
前記各分散片をそれぞれ保管する複数の保存部と、
前記各保存部に保管された分散片を収集し、事前に定められた再構成分散数に基づき前記分散対象データを復号して再構成するデータ復元部と、
を備えた秘密分散システムの実行する方法であって、
前記分散データ生成部が、前記分散対象データから前記再構成分散数に応じた複数の分散片群と該分散片群を冗長化した予備の分散片とを生成し、生成された前記分散片および前記予備の分散片をそれぞれ前記保存部に分散して保管する分散データ生成ステップと、
前記データ復元部が、前記保存部から前記分散片および前記予備の分散片を収集し、前記収集された前記分散片群が前記再構成分散数を満たせば前記分散片群を用いて前記分散対象データを再構成する一方、前記収集された前記分散片が前記再構成分散数を満たさなければ存在している分散片と前記予備の分散片とを用いて存在しない前記分散片を求めて前記分散対象データを再構成する再構成ステップと、を有することを特徴としている。
また、他の態様は、分散対象データを符号分散化した分散片群を生成する分散データ生成部と、
前記各分散片をそれぞれ保管する複数の保存部と、
前記各保存部に保管された分散片を収集し、事前に定められた再構成分散数に基づき前記分散対象データを復号して再構成するデータ復元部と、
を備えた秘密分散システムの実行する方法であって、
前記分散データ生成部が、前記分散対象データから前記再構成分散数に応じた複数の分散片群と該分散片群を冗長化した予備の分散片(1個または2個)とを生成し、生成された前記分散片および前記予備の分散片をそれぞれ前記保存部に分散して保管する分散データ生成ステップと、
前記データ復元部が、前記保存部から前記分散片および前記予備の分散片を収集し、前記収集された前記分散片群が前記再構成分散数を満たせば前記分散片群を用いて前記分散対象データを再構成する一方、前記収集された前記分散片が前記再構成分散数を満たさなければ前記予備の分散片を用いて前記分散対象データを再構成する再構成ステップと、
を有し、
前記分散データ生成ステップは、前記再構成分散数(k)と前記予備の分散片数(r)と前記分散対象データのデータ長(L)と前記分散対象データとの情報を格納する分散データ機能から前記各情報を読み込む第1ステップと、
乱数を生成し、生成した前記乱数と前記データ長(L)と前記分散対象データとのデータ列S(バイト数=「k×8」の倍数)を作成する第2ステップと、
前記データ列Sを「k×8」のブロックに分割し、分割された各ブロックに対して演算を実行し、分散片「W」を求める第3ステップと、
を有し、
前記第3ステップは、「前記予備の分散片数(r)=1」の場合には式(28)(29)を用いる一方、
【数28】

xy:ブロック番号yのx(x=1.2.3...k)番目の値(8バイト)
zy:ブロック番号y、分散番号z(z=1.2.3...k)の前記分散片の値(8バイト)
(k+1)y:前記予備の分散片
【数29】

「前記予備の分散片数(r)=2」の場合には式(30)(31)を用いることを特徴とsている。
【数30】

【数31】

xy:ブロック番号yのx(x=1.2.3...k)番目の値(8バイト)
zy:ブロック番号y、分散番号z(z=1.2.3...k)の前記分散片の値(8バイト)
(k+1)y,W(k+2)y:前記予備の分散片
【0009】
本発明のさらに他の態様は、分散対象データを符号分散化した分散片群を生成する分散データ生成部と、
前記各分散片をそれぞれ保管する複数の保存部と、
前記各保存部に保管された分散片を収集し、事前に定められた再構成分散数に基づき前記分散対象データを復号して再構成するデータ復元部と、
を備えた秘密分散システムであって、
前記分散データ生成部は、前記分散対象データから前記再構成分散数に応じた複数の分散片群と該分散片群を冗長化した予備の分散片とを生成し、生成された前記分散片および前記予備の分散片をそれぞれ前記保存部に分散して保管し、
前記データ復元部は、前記保存部から前記分散片および前記予備の分散片を収集し、
収集された前記分散片群が前記再構成分散数を満たせば、前記分散片群を用いて前記分散対象データを再構成する一方、
前記収集された前記分散片が前記再構成分散数を満たさなければ、存在している分散片と前記予備の分散片とを用いて、存在しない前記分散片を求めて前記分散対象データを再構成することを特徴としている。
【0010】
なお、本発明は、前記秘密分散方法をコンピュータに実行させる秘密分散プログラムの態様に構成してもよいものとする。
【発明の効果】
【0011】
本発明によれば、秘密分散法の秘匿性と可用性との両立を図ることができる。
【図面の簡単な説明】
【0012】
図1】秘密分散法の概念図。
図2】「(k,n)しきい値法」の説明図。
図3】秘密鍵情報Sの復元原理を示すグラフ。
図4】復元できない場合のグラフ。
図5】本発明の実施形態に係る秘密分散法を実現するシステム構成図。
図6】同 コンピュータ構成図。
図7】同 システム処理の概念図。
図8】同 分散ステップの処理図。
図9】同 独立一様分布化の処理図。
図10】同 復元ステップの処理図。
【発明を実施するための形態】
【0013】
以下、本発明の実施形態に係る秘密分散法を説明する。この秘密分散法は、非特許文献12の「MSSS」を応用した「k多重(k,k+1)および(k,k+2)しきい値法」に関する。ここでは「拡張マルチプレックスシークレットシェアリングスキーム」、即ち「AMSSS」と省略して呼ぶ。
【0014】
≪AMSSSの説明≫
まず、秘密分散法の基本的な考え方を説明する。秘密分散法のライブラリ実装にあたっては、以下の観点が要考慮事項としてあげられている。
A:分散されるデータ(分散対象データ)の規模
B:分散数(分散片数)
C:データ再構成で使われる分散片の運用形態
D:秘密分散及び再構成に要求される処理時間(速度)
E:乱数性などに要求されるセキュリティ強度
F:運用時に想定されるエラーの内容
G:ライブラリ機能及びそれを使うアプリケーションに対して想定される攻撃
H:商品としてユーザーに提供する場合に保証すべき安全性や機能,サポートすべき機能,及びユーザーの混乱やレスポンスの低下を防ぐためあえて限定,または削除すべき機能
特に要考慮事項Hについては、可用性要求への考察しなければならない。すなわち、秘密分散法の実装にあたっては、前述した安全性と可用性の相反する要求を両立させる必要がある。
【0015】
図1に基づき「大事な情報」に対するリスクを考えると、「故障,破壊」により情報が失われる方向のリスクと、「漏洩」によって望まぬ相手に奪取される方向のリスクとが普通に予想される。
【0016】
「故障,破壊」に備えるには冗長性を持たせることが有効である。すなわち、複製を作ってリスク分散を図るのである。一方、「漏洩」リスクに対しては、複製を作るとリスクが益すので複製することは避けたい。あるいは部分的に奪取されても情報は漏れないようにしたい。
【0017】
前者は可用性を増す方向の施策である一方、後者は秘匿性を増す方向の施策であり、両者は相反する要求である。このジレンマは、非特許文献1,2に示すように、秘密分散法を用いると緩和される。
【0018】
1.秘密分散法の概要
非特許文献9に示すように、情報セキュリティ施策には「秘密性、可用性、完全性」の実現がもとめられる。図1中の「漏洩」への対策が秘密性の実現に相当し、「故障,破壊」への対策が可用性の実現に相当する。
【0019】
秘密性と可用性とは相反する要求であり、実装には相応に技術が必要となるものの、通常は秘密性を重視し暗号が用いられている。しかしながら、暗号における危殆化・可用性への対応を考慮すると秘密分散法が優位といえる。
【0020】
(1)Shamirの秘密分散法
秘密分散法の一つとして、非特許文献1の「(k,n)しきい値法,n>k≧2」が存在する。この方法は、直感的には「x,y」平面上で(k+1)個の異なる点を通る「k次以下の関数」が、ただ1つ存在する。」という定理を利用している。
【0021】
例えば、図3に示すように、「k=1」のときにy軸上に秘密情報(分散態様データ)Sを置き、点(0,S)を通って傾き「a」の直線を引いてx軸上の異なる点「x,(i=1,n)」を与えると対応するy座標の値「y,(i=1,n)が、式(1)で計算することができる。
【0022】
【数1】

ただし、「i=1,n(n≡「分散片番号」),「a」は任意の数である。なお、数(2)に示すように、各「x」に対応した「y」の組み合わせを分散片として用いる。
【0023】
【数2】

復元するときは、式(3-1)(3-2)に示すように、分散番号の異なる二つの分散片「W」,「W」を任意に選択し、連立させて「a」を消去する。これにより式(4)に示すように秘密情報Sが求められる。
【0024】
【数3】
【0025】
【数4】

一方、図4のように分散片1つだけでは直線が固定されず、秘密情報Sを復元することができない。しきい値「k」が「3以上」のときは使用する関数を(k-1)次関数、即ち「f(t):tの(k-1)次関数」とする。
【0026】
また、上記では直感的な理解のために実数平面で説明したが、プログラム上の実装では有限体、即ち「ガロア体:GF(q)」で計算を進める。まず、以下に示すように、分散すべき秘密情報をSとし、秘密分散符号化に用いる乱数群をUとする。
【0027】
・秘密情報:S∈GF(q)
・乱数:U=(U,U,U,・・・,Uk-1∈GF(q)
これらを用いてf(t)を、式(5)のように定義する。
【0028】
【数5】

「α∈GF(q),i=1,2,・・・,n(ただし,i≠jに対して,α≠α)」を用いて,分散片{W,W,W,・・・,W}への符号化および復号は下記のように行われる。
符号化:W=f(α)∈GF(q)
復号:ラグランジェ補間による。Ik={i,i,i,・・・,i
【0029】
【数6】

式(5)から「S=f(0)」である。よって、式(6-2)により式(7)で復号することができる。
【0030】
【数7】
【0031】
(2)前記しきい値法の特徴
このような「(k,n)しきい値法」によれば、任意の「k」個の分散片でf(t)が定まり、Sが復元できる。一方、任意の(k-1)個の分散片ではSが全くわからない。
【0032】
また、「n-k」個を消失してもSを復元でき、「k-1」個を盗まれてもSの情報が全く漏洩しない。すなわち、Sの保全について可用性を担保しながら、秘匿性を担保している。この特徴を用いてPKIの重要情報を分散し、アクセス権の制御を行うことや(非特許文献4~6)、暗号通貨の保護を行う(非特許文献3)などの応用が試みられている。
【0033】
2.秘密分散法と合計データ量
「(k,n)しきい値秘密分散法」では、秘密情報Sがn個の分散片「W=1,2,・・・,n」に分散符号化される。一方、各Wのビット長(データ量)は,少なくともSと同じビット長を必要とする。
【0034】
そのため、全分散片の総データ量は、Sのデータ量のn倍である。この特性は、分散対象のデータサイズが小さければ、分散片を保存するコストが相対的に小さく済むため、問題にならない。
【0035】
その一方で、大きなデータを分散保管したいときは、問題が生じる。すなわち、もともと大きいデータの分散数倍を保存するコストは非常に大きくなる。そのため、総データ量を減らす方式が実用化では重要となる.
【0036】
(1)分散法とデータ量
秘密分散法として非特許文献2には、データ量を減らす方式と計算を簡単化する方式とが提案されている。
【0037】
前者は、「Shamir型」の構成による「(k,L,n)ランプしきい値秘密分散法」(表1の方式3)として提案されている。一方、後者は、「(n,n)しきい値秘密分散法」(表1の方式2)として提案されている。
【0038】
【表1】

前者によれば分散結果の総データ量は、秘密情報Sのデータ量の「n/L」倍になり、「Shamir型」の「(k,n)しきい値秘密分散法」の「1/L」に削減することができる。
【0039】
しかしながら、「Shamir型」では「L=n」にすると漏洩に対する安全性を担保できないおそれがある。したがって、分散片の合計は常にSのデータ量を上回ることとなる。その一方で、非特許文献10,11の方式(表1の方式5)を用いると「k=L=n」にでき,分散片の総データ量がSのデータ量と同じとなるように符号化することができる。
もっとも、この方式は計算量が多い欠点がある。また、「(n,n)しきい値秘密分散法」を用いると計算量が非常に少なくて済むが、「Shamir型」の方式と同様に総データ量がSのデータ量のn倍に増え、ランプ型のようにデータ量を削減できない欠点がある。
【0040】
よって、表1の方式1~5では、データ量削減と計算量削減を両立することが難しい。これに対して非特許文献12の「MSSS」(表1の方式6)は、非特許文献13において実装結果を報告したように,計算量とデータ削減性能の両方に優れた利点を持っている。
【0041】
(2)予備の分散片を作る方式の考察
表1の方式6では、すべての分散片が集まらないと(1つでも欠けると)元の秘密情報Sを復元することができない。これは分散片の総データ量がSのデータ量と同じなので、情報理論的にも当然の性質といえる。
【0042】
しかし、大きなデータのバックアップシステムのような応用を考えると、故障や破壊に対するリスクに対応できないため、システム設計上の欠点となる問題があり、予備の分散片が作れる方式が望まれる。
【0043】
確かに一般の強安全な「(k,L,n)しきい値法」や、「k多重(k,n)しきい値法」を用いれば前記問題を解決できるものの、符号化・復号の計算量が増加するおそれがある。
【0044】
その一方で実用的には、予備の分散片数(n-k)が「1または2」程度で十分な場合が多い。そこで、以下では(n-k=1,2)の場合に対する「k多重(k,n)しきい値」、即ち「AMSSS」による予備の分散片の導出が好ましい。
【0045】
3.AMSSSによる符号化・復号
「AMSSS」による符号化・復号の計算には、数体として「q=2」を使用する。ただし、「m>3k」とし、「α」を「GF(q)」の原始元とする。「k×(k+2)」行列Gを式(8)で定義する。
【0046】
【数8】

なお、「GF(2)」の演算では、「-1=1」であるため、式の減法の「-」記号は全て「+」記号に置き換えることができる。
【0047】
(1)符号化計算(予備2の符号化計算)
まず、秘密情報を「(S,S,・・・,S),S∈GF(q)」,
分散片(シェア)を「(W,W,・・・,Wk+1,Wk+2),W∈GF(q)」とし、
Gを「GF(q)」上の値を要素として持つ「k×(k+2)」行列とする。このとき符号化を式(9)で行う。
【0048】
【数9】
【0049】
【数10】

このとき「W,j=1,2,・・・,k」に関しては、式(11)(12)で求めることができる。
【0050】
【数11】
【0051】
【数12】

また、Wk+1,Wk+2は式(9)(10)より、式(13)(14)で求められる。
【0052】
【数13】
【0053】
【数14】
【0054】
(2)復号計算(予備2の複号計算)
次に復号を考える。「W,W,・・・,W」が与えられているときは、式(15)(16)のように「S,S,・・・S」を求めることができる。
【0055】
【数15】
【0056】
【数16】

式(16)の関係は,式(11)(12)(15) より、式(17)の関係が成り立つことから得られる。
【0057】
【数17】

また、「Wk+1」を用いて復号する場合を考える。「Wk+1」は、式(9)~(16)より式(18)で求められる(ここでは「k」が偶数の場合で表記してある。「k」が奇数の場合は,式(16)に従って「(α-1)-1」を「α-1」に変更すればよい。)。
【0058】
【数18】

さらに「β」を式(19)で定義する。
【0059】
【数19】

このとき「Wk+1」は、式(20)で与えられる。
【0060】
【数20】

同様に「γ」を式(21)で定義する。
【0061】
【数21】

そうすると「Wk+2」は、式(22)で与えられる。
【0062】
【数22】
【0063】
(3)中間の分散片が壊れた(失われた)ときの復元
「W,1≦j≦k」が1つ又は2つ失われたときの復号方法をケース1,2に分けて説明する。
【0064】
<ケース1>
「W,1≦a≦k」が1つ存在しない場合の復号方法は、式(23)または式(24)より「W」を求めた後に式(16)で複号する。
【0065】
【数23】
【0066】
【数24】

<ケース2>
「W,W,1≦a≦b≦k」が存在しない場合の復号方法は、式(25)(26)と置く。
【0067】
【数25】
【0068】
【数26】
【0069】
【数27】

このとき式(27)により、「W,W」を求めた後に式(16)で復号する。
【0070】
上記では、k多重(k,k+2)しきい値法の場合を説明したが、k多重(k,k+1)しきい値法の場合は、「Wk+2」を無くして考えればよい。すなわち、符号化では式(21)(22)の処理を無くし、復号では式(15)(16)あるいはケース1の式(23)を行なえばよい。
【0071】
符号化に用いる式(10)の行列「G」の非対称性によれば、「W,W,・・・,W」が与えられた場合は高速に復号できるが、そうでない場合は復号時間が少し遅くなる。そのため,「W,W,・・・,W,Wk+1,Wk+2」が全て利用できる場合は、「W,W,・・・,W」用いて高速な復号を行なえばよい。
【0072】
(3)リカバリー手順は欠落部位に依存
分散片は、「k+2」個生成される。そのうちの2個失われても元の情報Sを復元することができる。復元手順は、どのピースが失われたによってケース1,2のように異なる。ただし、いずれのケースもマトリックス演算により元の情報Sを復元(再構成)することができる。
【実施例0073】
実施例として、データセンターのバックアップシステムに「AMSSS」を用いた応用例を説明する。すなわち、大容量データのバックアップシステムに秘密分散法を採用した場合にはシステム設計上、予備の分散片が無いとデータ復元に困難が生じるおそれがある。そこで、本実施例では予備の分散片を用いたバックアップシステムを構築する際に表1の方式6「MSSS」を発展させた「AMSSS」により構築し、分散片データの冗長化を図っている。
従来技術(例えば表1の方式7)によって本実施例と同じ機能の「しきい値秘密分散法」を構成しようとすると、非特許文献10の式27に示すファンデルモンド行列式(Vandermonde determinant)のような複雑な計算が必要となるため、計算量が多く実用化が困難な問題があった。本実施例は、この問題を解決することを主眼とし、表1の方式6「MSSS」を発展させた「AMSSS」を採用する。これにより式10の計算で済み、高速処理が実現し、実装化が容易となる。
【0074】
≪システム構成例≫
図5および図6に基づき本実施例の前記秘密分散法を実行する秘密分散システムの構成例を説明する。このシステム1は、クラウド型のストレージサービスとしてデータセンターに構築され、前述の「AMSSS」を採用することで多重秘密分散法「MSSS」の高速性を生かしつつ、1個または2個の予備の分散片を作成する。本実施例では、分散片の必要数がすべて揃えば(すべて存在すれば)、それにより分散対象データを再構成する。
一方、必要数がすべて揃わなければ(不存在があれば)、揃っている分(存在している分)の分散片と予備の分散片とを用いて足りない分散片を求め、その後に分散対象データを再構築する。
【0075】
具体的に前記システム1は、図5に示すように、保管サーバ装置2により構成され、ネットワーク4(図6参照)に接続されている。この保管サーバ装置2は単数であってもよく、複数の保管サーバ装置2群としてシステムを構成してもよいものとする。なお、図5中では、一例として単一の保管サーバ装置2によるシステム構成を示している。
【0076】
保管サーバ装置2は、通信部21,保管ストレージ装置3-1~3-n,分散データ生成部14,データ復元部15,乱数生成部16を実装する。この分散データ生成部14は、分散対象データ(秘密情報S)を符号分散化した分散片データ(複数の分散片・予備の分散片)群を生成し、それぞれを保管ストレージ3-1~3-nの保存部22に分散して保存する。なお、複数の保管サーバ2群を用いる場合には、各保管サーバ2の保管ストレージ3に分散片データをそれぞれ分散して保存することができる。
【0077】
データ復元部15は、秘密情報Sの復元時に保管ストレージ3-1~3-nから分散片データを収集して分散対象データの復元を行う。もっとも、非特許文献13に示すように、各分散片が通信経由で受け渡されることやメモリへの書き込む読み出しが行わるため、エラーフリーとは言い切れず、欠落や欠損が生じる場合があり、何らかの誤り検出手段をアプリケーションレベルで付加すべきことが当業者の共通認識となっている。そこで、本実施例では各分散片に誤り検出符号(EDC)、即ちチェックサム(checksum)を付加し、エラーチェックを図っている。
【0078】
収集された分散片群に欠落・欠損がなく、前記必要数を満たせば収集された分散片群により秘密情報Sを復元する。一方、収集された分散片群に欠落・欠損が生じ、前記必要数を満たさなければ、存在する分散片群および予備の分散片を用いて不存在(欠落・欠損)の分散片を求め、その後に秘密情報Sを復元する。
【0079】
乱数発生部16は、分散データ生成部14の指令に応じて乱数(8バイト)を生成する。なお、保管サーバ装置2は、図6に示すように、コンピュータを主体に構成され、通信装置51,入力装置52,メモリ(主記憶装置)53,補助記憶装置(SSD,HDDなど)54,CPU55,出力装置56を備え、各ハードウェア51~56がバス57を介して接続され、各ハードウェアとソフトウェアとの協働により前記各部3,14,15,16,21,22を実装する。
【0080】
≪分散データ生成部14・データ復元部15の処理内容≫
分散データ生成部14は、分散対象データ(秘密情報S)から分散片および予備の分散片を生成する分散データ生成機能(関数:amsss_generate)を備える。
【0081】
一方、データ復元部15は、分散片群・予備の分散片を用いて分散対象データを再構成して復元する再構成機能(関数:amsss_reconstruct)を備えている。ここでは分散データ生成機能および再構成機能に「AMSSS」が用いられている。以下、図7に基づき詳細を説明する。
【0082】
(1)分散データ生成機能
分散データ生成部14は、図7中の矢印A,Bに示すように、分散データ生成機能を使って分散対象データから分散片(1)~(k)と予備の分散片(k+1),(k+2)とを生成する。
【0083】
分散データ生成機能(関数)は、引数(入力)の1次元配列の先頭アドレス「Si(unsigned charSi)」に分散対象データ(秘密情報S)の分散片が格納され、以下の情報が指定により設定される。
A:分散対象データの再構成に必要な分散片数(いわゆる閾値「2~6の範囲」:以下、再構成分散数とする)
B:予備の分散片数(1~2の範囲:以下、予備分散数とする。)
C:分散対象データのデータ長(1~250バイトの範囲)
また、分散データ生成機能(関数)は、引数(出力)の2次元配列の先頭アドレス「Sni(unsigned charSni)」の各行に「分散番号(1バイト)+分散片データ(ブロック総数×8)バイト」が設定される。
【0084】
ブロック総数は、「(分散対象データ長+16)÷(再構成分散数×8)」となる。ここで、「(分散対象データ長+16)÷(再構成分散数×8)」は小数点以下を切り上げた数を表す。本実施例では、各分散片データのチェックサムにハッシュ値を用いる。ハッシュ値を計算してファイルの同一性をチェックする点は、非特許文献15などの公知文献から当業者の周知技術といえるが、後述のように分散片が正常/異常を確認する手段として設定されている。例えば再構成分散数を「3」・予備の分散数を「2」・2次元配列を[Sni]とすると、
Sni[0]:分散番号1+分散番号1の分散片データ(分散片)+ハッシュ値
Sni[1]:分散番号2+分散番号2の分散片データ(分散片)+ハッシュ値
Sni[2]:分散番号3+分散番号3の分散片データ(分散片)+ハッシュ値
Sni[3]:分散番号4+分散番号4の分散片データ(予備の分散片)+ハッシュ値
Sni[4]:分散番号5+分散番号5の分散片データ(予備の分散片)+ハッシュ値
となる。
【0085】
そのため、2次元配列の行数・列数は、
・2次元配列の行数=再構成分散数+予備分散数
・同 列数=ブロック総数×8+1(バイト)
となる。以下、図8に基づき分散データ生成機能による処理内容(S01~S06)を説明する。
【0086】
S01:処理が開始されると、分散データ生成部14は分散データ生成機能の1次元配列Siに設定された再構成分散数(k:1バイト)・予備分散数(r:1バイト)・分散対象データのデータ長(L:8バイト)・分散対象データ(Lバイト)を読み取る。
【0087】
S02:分散対象データのハッシュ値(OpenSSLのSHA-256)を求める。ここで求めたハッシュ値を分散データ生成機能の1次元配列の先頭アドレス「CS(unsigned charCS)」に設定する。
【0088】
S03:乱数生成部16に指令を出力し、時刻をもとに乱数(8バイト)を生成する。このとき乱数は、時刻を取得する関数「clock_gettime()」を使って生成する。
【0089】
ここで生成された乱数を取得し、「乱数+分散対象のデータ長L+分散対象データ」のデータ列を作成する。その際、作成したデータ列のバイト数が「k×8」の倍数でない場合には、該データ列の後ろに「x’00’」をパディングして「k×8」の倍数とする。
【0090】
S04:S03で作成したデータ列を後述のように独立一様分布化する。
【0091】
S05:S04で独立一様分布化したデータ列Sを「k×8」のブロックに分割し、分割された各ブロックに対して非特許文献14の「GF(264)」上で以下の演算を行って分散片データ「W(Wzy)」を求める。その際に「α」を「GF(264)」の原始元とする。
【0092】
具体的にはS01で読み込んだ予備分散数rを確認し、「予備分散数r=1」であれば式(28)(29)を用いる。
【0093】
【数28】
【0094】
【数29】

一方、「予備分散数r=2」であれば、式(30)(31)を用いる。
【0095】
【数30】
【0096】
【数31】

式(28)(29)中、
xy:ブロック番号yのx番目の値(8バイト)
zy:ブロック番号y・分散番号zの分散片の値(8バイト)
このとき「Wzy,z=1,2,3,...k」に関しては、式(32)(33)の演算で求める。
【0097】
【数32】
【0098】
【数33】

また、「W(k+1)y」,「W(k+2)y」は、式(28)~(31)より式(34)(35)で求められる。
【0099】
【数34】
【0100】
【数35】

S06:S05で求めた各分散片データ「Wzy」のハッシュ値を求める。その後、各分散片データ「Wzy」およびハッシュ値を分散データ生成機能の2次元配列「Sni」に設定する。このとき分散番号iの分散片データおよびハッシュ値は、前記2次元配列「Sni」のi行目に割り当てられ、例えば分散番号2であれば2行目に割り当てられる。
【0101】
そして、各分散片データ「Wzy」は、それぞれを保管ストレージ3-1~3-nの保存部22に分散して保存される。なお、図8では「予備分散数r=2」の場合を示しており、「予備分散数r=1」の場合はS05の計算式が式(30)から式(28)に置き換わり、かつS06の2次元配列「Sni」には最後の(k+2)行目がなくなって(k+1)行目までとなる。
【0102】
(2)S04の詳細
「MSSS」によれば、安全性をクリアするためのアルゴリズム上の制約として、「S(秘密情報:分散対象データ)=(S1y,S2y,・・・,Sxy)」に対して、各「Sxy」が独立で一様分布する必要がある。そこで、S04では、以下に示す独立一様分布化の処理(S11~S14)を行う。
【0103】
S11:処理が開始されると、有限体上で適切なマトリクスをもって乗算を行う。例えば式(36)に示すように、「法264(1word 64bit)」上で行列Aの要素を乱数で決め、その逆行列Bを求めておくものとする。逆行列Bは、行列式|A|の値が「264」と互いに素、即ち奇数であれば求めることができる。
【0104】
【数36】

「mod264」=法264
S12:独立一様分布化する前のデータ列に対し、前から順に「法264」上で行列Aの演算を行って新たなデータ列を生成する。
【0105】
【数37】



式(37)に基づき処理例を説明する。ここでは独立一様分布化する前のデータ列をデータ列X(X(1)(2)(3)(4)(5)(6)・・・・・・・・X(M-2)(M-1)(M))と示している。また、新たなデータ列をデータ列Y(Y(1)(2)(3)(4)(5)(6)・・・・・・・・Y(M-2)(M-1)(M))と示し、各X,Yは8バイトとする。この処理例の各生成は、それぞれ「法264」上における行列Aの演算を利用しているものとする。
【0106】
まず、式(37-1)に示すデータ列X中の(X(1)(2)(3))に対し、式(37-2)に示すように、前記演算を行って(Y(1)(2)(3))とする。
【0107】
つぎに式(37-3)のデータ列(Y(1)(2)(3)(4)(5)(6)・・・・・・・・X(M-2)(M-1)(M))中の(Y(2)(3)(4))に対し、式(37-4)に示すように、前記演算を行って(Y(2)(3)(4))とする。これにより式(37-5)のデータ列(Y(1)(2)(3)(4)(5)(6)・・・・・・・・X(M-2)(M-1)(M))が生成される。
【0108】
このようにデータ列X中の(X(1)(2)(3)(4)(5)(6)・・・・・・・・
(M-2)(M-1)(M))の前から順に3個ずつに対して前記演算を行うことにより、式(37-6)の左式に示すデータ列(Y(1)(2)(3)(4)(5)(6)・・・・・・・・Y(M-2)(M-1)(M))を生成する。
【0109】
その後、式(37-7)に示すように、(Y(M-2)(M-1)(M))に対し、前記演算を行って(Y(M-2)(M-1)(M))とし、式(37-8)のデータ列Y(Y(1)(2)(3)(4)(5)(6)・・・・・・・・Y(M-2)(M-1)(M)))を生成する。
【0110】
S13:S12で生成したデータ列Yに対し、隣接するデータ間で上位32ビット(bit)と下位32ビット(bit)の置換を行って、新たなデータ列Zを生成する。
【0111】
例えば図9に示すように、データY(1)の下位32ビットとデータY(2)の上位32ビットを置換し、データY(2)の下位32ビットとデータY(3)の上位32ビットを置換し、データY(3)の下位32ビットとデータY(4)の上位32ビットを置換し、それ以降のデータYに対しても同様の置き換えを行い、最後にデータY(M)の下位32ビットとデータY(1)の上位32ビットを置換することでデータ列Zを生成する。
【0112】
S14:S13で作成したデータ列Zに対し、後ろから順に「法264」上で行列Aの乗算を行って、新たなデータ列Sを生成する。
【0113】
【数38】

式(38)に基づき処理例を説明する。この処理例の各生成も、それぞれ「法264」上における行列Aの演算を利用する。
【0114】
式(38-1)は前記置換後のデータ列Z(Z(1)(2)(3)(4)(5)(6)・・・・・・・・(M―4)(M―3)(M―2)(M―1)(M))を示す。まず、式(38-2)(38-3)に示すように、データ列Z中の(Z(M―2)(M―1)(M))に対し、前記演算を行って(S(M-2)(M-1)(M))を生成する。その後、式(38-4)(38-5)に示すように、(Z(M-3)(M-2)(M-1))に対し、前記演算を行って(S(M-3)(M-2)(M-1))を生成する。
【0115】
このようにデータ列Zの後ろから順に3個ずつ前記演算を行うことにより、式(38-6)の(Z(1)(2)(3)(4)(5)(6)-------(M―4)(M―3)(M―2)(M―1)(M))が生成される。
【0116】
その後、式(38-7)に示すように(Z(1)(2)(3))に対し、前記演算を行って(S(1)(2)(3))を生成する。これにより式(38-8)に示すように、新たなデータ列S(S(1)(2)(3)(4)(5)(6)-------(M―4)(M―3)(M―2)(M―1)(M))が生成される。
【0117】
(2)再構成機能
図10に基づき再構成機能を説明する。ここでは基本的に分散データ生成機能と逆の処理を実行することにより、分散片データ(分散片・予備の分散片)群を用いて元の分散対象データを再構成し、復元する。
【0118】
図7中の矢印C,Dは、分散データ(2)が破損・紛失しているため、予備の分散片(k+2)を用いて元の分散対象データを復元する状態を示している。なお、再構成機能(関数)の引数には以下の情報が設定されている。
【0119】
<引数(入力)>
・「N(unsigned charN)」
再構成分散数と予備分散数とを格納した1次元配列の先頭アドレス(分散データ生成機能の「Si」と同じ値を設定する。)
・「P(unsigned charP)」
分散対象データのデータ長(8バイト)を格納した1次元配列の先頭アドレス(分散データ生成機能の「Si」と同じ値を設定する。)
・「CS(unsigned charCS)」
分散対象データのハッシュ値(32バイト)を格納した1次元配列の先頭アドレス(分散データ生成機能の「CS」で返ってきたハッシュ値と同じ値を設定する。)
・「Sni(unsigned charSni)」
再構成に用いる分散片を格納した2次元配列の先頭アドレスとし、該2次元配列は分散データ生成機能の「Sni」と同様に設定される。例えば再構成分散数(3個)・予備分散数(2個)の場合、分散番号「1」「3」の分散片が欠落・欠損により収集できなければ予備の分散片を2個使って再構成する。この場合、2次元配列は以下のようになる(分散番号は順に並べる必要はない。)。
Sni[0]:分散番号2+分散番号2の分散片データ(分散片)+ハッシュ値
Sni[1]:分散番号4+分散番号4の分散片データ(予備の分散片)+ハッシュ値
Sni[2]:分散番号5+分散番号5の分散片データ(予備の分散片)+ハッシュ値
なお、2次元配列の行数は再構成分散数となり、同列数は「ブロック総数×8+1(バイト)」となる。このブロック総数は分散データ生成機能の「Sni」と同じである。
【0120】
<引数(出力)>
・「Si(unsigned charSi)」
復号した分散対象データを格納する1次元配列の先頭アドレスであって、配列のサイズは引数(入力)の「P」に設定されたデータ長と同じとする。以下、再構成機能による処理内容(S21~S23)を説明する。
【0121】
S21:処理が開始されると保管ストレージ3-1~3-nから分散片データ、即ち分散片「W,W,...,W」および予備の分散片(予備分散=2個の場合「Wk+1」「 Wk+2」/予備の分散片=1個の場合「Wk+1」)を収集する。その後、収集された分散片「W,W,...,W」が再構成分散数を満たすか否かを判定する。本実施例では、前記判定を二段階のステップで実行する。
【0122】
保管ストレージ3の故障やネットワークエラーなどにより事前に定められた時間内に分散片を収集できず、タイムアウトにより欠落が生じる場合がある。そこで、ファーストステップ(第1段階)として、収集された各分散片の分散番号に基づき再構成分散数分の個数が揃っているか否かを確認する。例えば分散番号「1」「3」の分散片の収集がタイムアウトした場合、分散番号「1」「3」の分散片が欠落する。この場合、分散番号「1」「3」の分散片は存在しないため、再構成分散数を満たさないものと判定される。一方、収集された分散片群の個数が再構成分散数分を満たす場合にセカンドステップ(第2段階)のエラーチェックに進む。
【0123】
セカンドステップ(第2段階)では、収集された各分散片「W,W,...,W」のハッシュ値を求め、これを再構成機能(関数)の「Sni」に設定されたハッシュ値と照合する。
【0124】
照合の結果、前記両ハッシュ値が同じであれば、その分散片は正常と認定される。すべての分散片「W,W,...,W」が正常認定されれば、再構成分散数分の正常な個数が揃っているため、再構成分散数を満たすと判定される。この場合、分散片「W,W,...,W」だけで元の分散対象データを復号する。
【0125】
一方、前記両ハッシュ値が同じでなければデータ破損などが生じているため、その分散片は異常と認定される。例えば分散番号「3」の分散片について前記両ハッシュ値が同じでなければ異常と認定する。この場合、分散番号「3」の分散片は欠損により存在しないものと扱われ、再構成分散数を満たさないものと判定される。なお、予備の分散片についても同様なエラーチェックを実行し、正常/異常を確認する設定が好ましい。
【0126】
そして、再構成分散数を満たさないと判定した場合には、予備の分散片「Wk+1」「 Wk+2」(予備分散=2個の場合)を用いる。例えば図10のS21は、図7と同様に分散片番号「2」の分散片が不存在とされ、代わりに「k+2」番目の予備の分散片を使って、存在する分散片とともに復号する場合を示している。ただし、エラーチェックで正常と認定された予備の分散片に限ることが好ましい。
【0127】
このように本実施例は、「AMSSS」により分散片データが冗長化されているため、分散片「W,W,...,W」に1個または2個の欠落・欠損が生じている場合であっても分散対象データの復元が可能となっている。復元の際は、2次元配列「Sni」に設定された分散片データを基に各ブロックに対して「GF(264)」上で所定の演算を実行し、分散対象データを復号する。以下に演算の内容を示す(ブロック番号yを省略して標記する。)。
【0128】
≪「W,W,...,W」だけで復号する場合≫
再構成分散数を満たすと判定された場合は、式(39)(40)を用いて、分散片「W,W,...,W」だけで復号する。
【0129】
【数39】
【0130】
【数40】

:復号するブロックの分散番号zの分散片の値(8バイト)
z:復号したブロックのz番目の値(8バイト)
ここで「(α-1)-1」を「α-1」を事前に計算して、プログラム上で「unsigned long long」型定数として定義して、復号処理を速くする。
<(W,1≦a≦k)が存在しない場合>
前記分散片(W:1≦a≦k)が存在しない場合(Wが欠落・欠損している場合)は、まず(k-1)個の前記分散片Wi(1≦i≦k,i≠a)と前記予備の分散片(1個)とを使って前記分散片(W)を求める。その際には式(41)~(43)を用いる。ここで、式(41)の上の式は式(23)と、下の式は式(24)と同値になる。
【0131】
【数41】
【0132】
【数42】
【0133】
【数43】

この場合に計算時間を短縮するため、事前に式(41)の「W,Wk+1,Wk+2」にかかる係数の値を求めて配列に設定しておくことが好ましい。例えば、「Wk+1,Wk+2」にかかる係数はkとaによって決まる値であるので、kとaを配列の要素とする2次元配列に初期設定しておく。また「W」にかかる係数はk, a, iによって決まる値であるので、これらを要素とする3次元配列に初期設定しておく。つぎに式(41)~(43)で求めた分散片(W)と分散片Wi(1≦i≦k,i≠a)とを用いて、式(40)で分散対象データを復号する。
【0134】
<(W,Wb:1≦a≦b≦k)が存在しない場合>
分散片(W,Wb:1≦a≦b≦k)が存在しない場合(欠落・欠損している場合)は、まず(k-2)個の分散片Wi(1≦i≦k,i≠a,i≠b)と予備の分散片(2個)とを使って分散片(W,Wb)を求める。ここでは式(44)~(46)を用いる。ここで式(44)は式(27―1)と、式(45)は式(27-2)と同値になる。
【0135】
【数44】
【0136】
【数45】
【0137】
【数46】

この場合も計算時間を短縮するため、事前に式(44)(45)の「W,Wk+1,Wk+2」にかかる係数の値を求めて配列に設定しておくことが好ましい。例えば、「Wk+1,Wk+2」にかかる係数はk,a,bによって決まる値であるので、これらを要素とする3次元配列に初期設定しておく。また「W」にかかる係数はk,a,b,iによって決まる値であるので、これらを要素とする4次元配列に初期設定しておく。つぎに式(44)~(46)で求めた分散片(W,Wb)と分散片Wi(1≦i≦k,i≠a,i≠b)とを用いて、式(40)で分散対象データを復号する。
【0138】
S22:S21で復号したデータ列に対して、S04の独立一様分布化の逆の操作を行う。具体的には
【0139】
(a)行列Aの逆行列Bを用いて、前記データ列の前から順に「法264」上で行列Bの演算を行う(S14の逆操作)。
【0140】
(b)前記逆行列Bの演算後のデータ列中、隣接するデータ間で上位32ビットと下位32ビットとの逆置換を行う(S13の逆操作)。
【0141】
(c)前記逆置換後のデータ列に対して逆行列Bを用いて、後ろから順に「法264」上で逆行列Bの乗算を行う(S12の逆操作)。
【0142】
S23:S22の処理後に生成されたデータ列から分散対象データを抽出し、ハッシュ値(OpenSSLのSHA-256)を求める。ここで求めたハッシュ値と再構成機能(関数)の「CS」に設定したハッシュ値と比較し、再構成された分散対象データの正否確認を行う。
【0143】
すなわち、両者のハッシュ値が同じであれば、復号した分散対象データを1次元配列「Si」に設定し、戻り値「0」を返す。一方、両者のハッシュ値が異なっていれば、正しく再構成できなかったため、戻り値として「0」以外の値を返す(図6では戻り値「6」が示されているが、それ以外の値でもよい。)。この場合には再度の復元を試みる設定が好ましい。
【0144】
このように本実施例によれば、「AMSSS」を採用することで「MSSS」の高速性を生かしつつ1個または2個の予備の分散片を作成し、予備の分散片を用いて分散対象データを再構成することができる。これによりデータセンターなどの大容量のバックアップシステムにて可用性と秘匿性の両立を図ることが可能となる。
【実施例0145】
実施例1では、分散片群が再構成分散数を満たすか否かを二段階のステップで実行していたが、本実施例ではセカンドステップを省略し、ファーストステップだけで判定する。
【0146】
したがって、本実施例のS06で各分散片データのハッシュ値を求める必要はなく、また分散データ生成機能および再構成機能に各分散片データのハッシュ値を設定する必要もない。
【0147】
具体的には、
(1)保管ストレージ3-1~3-nから分散片「W,W,...,W」をタイムアウトせずに、すべて収集できれば再構成分散数を満たすと判定される。この場合は、実施例1と同様に式(39)(40)を用いて分散片データ「W,W,...,W」だけで復号される。
【0148】
ただし、復号に用いた分散片「W,W,...,W」のいずれかにデータ破損などによる欠損があれば、S23の成否確認の際に戻り値「0」以外が返され、再度の復元が試みられる。このとき「分散変数=1」であれば、分散番号順に分散片データを予備分散片「Wk+1」と入れ替え、式(39)(40)により復号する。また、「分散変数=2」であれば、分散番号順に分散片データを2個ずつ予備分散片「Wk+1」「 Wk+2」と入れ替え、式(39)(40)により復号する。
【0149】
(2)一方、分散片「W,W,...,W」のいずれかの収集がタイムアウトすれば、再構成分散数を満たさないと判定される。
この場合には実施例1の
<(W,1≦a≦k)が存在しない場合>
<(W,1≦a≦k)が存在しない場合>
と同じ処理を行って分散対象データを復元する。
【0150】
なお、本発明は、上記実施形態に限定されるものではなく、各請求項に記載された範囲内で変形して実施することができる。例えばコンピュータに実施例の秘密分散方法の処理ステップ(S01~S06,S11~S14,S21~S23)を実行させる秘密分散プログラムとして構成することが可能である。
【0151】
このプログラムによればコンピュータ上に秘密分散システム1を構築することができ、また該プログラムは記録媒体に格納して配布してもよく、あるいはインターネットからダウンロードする形式で配布してもよい。
【符号の説明】
【0152】
1…秘密情報システム
2…保管サーバ装置
3-1~3-n…保管ストレージ装置
4…ネットワーク
14…分散データ生成部
15…データ復元部
16…乱数生成部
21…通信部
22…保存部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10