(57)【特許請求の範囲】
【請求項１】
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数とし、
乱数ｒを生成する乱数生成部と、
メッセージＭと前記乱数ｒとを結合し、データＳとする乱数結合部と、
データＳを秘密分散して分割データＳ１，…，ＳＮを生成する秘密分散部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する暗号部と
を備える暗号化装置。
【請求項２】
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数とし、
メッセージＭを秘密分散して分割メッセージＭ１，…，ＭＮを生成する秘密分散部と、
乱数ｒを生成する乱数生成部と、
前記分割メッセージＭ１，…，ＭＮそれぞれに前記乱数ｒを結合し、分割データＳ１，…，ＳＮとする乱数結合部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する暗号部と
を備える暗号化装置。
【請求項３】
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数、“‖”はビット列同士を結合する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
メッセージＭを秘密分散して分割メッセージＭ１，…，ＭＮを生成する秘密分散部と、
乱数ｒ１，…，ｒＮを生成する乱数生成部と、
前記分割メッセージＭ１，…，ＭＮそれぞれに対応する前記乱数ｒ１，…，ｒＮを結合し、分割データＳ１，…，ＳＮとする乱数結合部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する暗号部と
を備え、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のように求める
ことを特徴とする暗号化装置。
【請求項４】
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数、“‖”はビット列同士を結合する記号、ΣNi=1はｉ＝１，…，Ｎについてビット列を連結することを意味する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
メッセージＭを秘密分散して分割メッセージＭ１，…，ＭＮを生成する秘密分散部と、
乱数ｒ１，…，ｒＮを生成する乱数生成部と、
前記分割メッセージＭ１，…，ＭＮそれぞれに対応する前記乱数ｒ１，…，ｒＮを結合し、分割データＳ１，…，ＳＮとする乱数結合部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する暗号部と
を備え、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（ΣNi=1Ｓi‖ｐｋi）
または
ｈｎ←Ｈｎ（ΣNi=1ｐｋi‖Ｓi）
のように求める
ことを特徴とする暗号化装置。
【請求項５】
請求項１または２記載の暗号化装置であって、
“‖”はビット列同士を結合する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のように求める
ことを特徴とする暗号化装置。
【請求項６】
請求項１または２記載の暗号化装置であって、
“‖”はビット列同士を結合する記号、ΣNi=1はｉ＝１，…，Ｎについてビット列を連結することを意味する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（ΣNi=1Ｓi‖ｐｋi）
または
ｈｎ←Ｈｎ（ΣNi=1ｐｋi‖Ｓi）
のように求める
ことを特徴とする暗号化装置。
【請求項７】
請求項１から６のいずれかに記載の暗号化装置であって、
前記ハッシュ関数Ｈｎは、分割データＳｎを暗号化する関数から、分割データＳｎごとに特定したハッシュ関数である
ことを特徴とする暗号化装置。
【請求項８】
請求項１から６のいずれかに記載の暗号化装置であって、
前記ハッシュ関数Ｈｎは、あらかじめ分割データＳｎごとに定めたハッシュ関数である
ことを特徴とする暗号化装置。
【請求項９】
請求項１から８のいずれかに記載の暗号化装置であって、
前記秘密分散部は、ＡＯＮＴまたは閾値秘密分散法によって秘密分散する
ことを特徴とする暗号化装置。
【請求項１０】
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数とし、
分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する復号部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎ’を生成する暗号部と、
すべてのｎについて、分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致することを確認する確認部と、
秘密分散されたデータである分割データＳ１，…，ＳＮから、元のデータＳを復元する復元部と、
前記データＳから、あらかじめ定めた条件にしたがってメッセージＭを切り出す取得部と
を備える復号装置。
【請求項１１】
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数とし、
分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する復号部と、
前記分割データＳｎから、あらかじめ定めた条件にしたがって分割メッセージＭｎと乱数ｒｎを切り出す取得部と、
すべての乱数ｒ１，…，ｒＮが一致することを確認する確認部と、
秘密分散されたデータである分割メッセージＭ１，…，ＭＮから、元のメッセージＭを復元する復元部と
を備える復号装置。
【請求項１２】
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数、“‖”はビット列同士を結合する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する復号部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎ’を生成する暗号部と、
すべてのｎについて、分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致することを確認する確認部と、
前記分割データＳ１，…，ＳＮから、あらかじめ定めた条件にしたがって分割メッセージＭ１，…，ＭＮを切り出す取得部と、
前記分割メッセージＭ１，…，ＭＮから、元のメッセージＭを復元する復元部と、
を備え、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のように求める
ことを特徴とする復号装置。
【請求項１３】
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数、“‖”はビット列同士を結合する記号、ΣNi=1はｉ＝１，…，Ｎについてビット列を連結することを意味する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する復号部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎ’を生成する暗号部と、
すべてのｎについて、分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致することを確認する確認部と、
前記分割データＳ１，…，ＳＮから、あらかじめ定めた条件にしたがって分割メッセージＭ１，…，ＭＮを切り出す取得部と、
前記分割メッセージＭ１，…，ＭＮから、元のメッセージＭを復元する復元部と、
を備え、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（ΣNi=1Ｓi‖ｐｋi）
または
ｈｎ←Ｈｎ（ΣNi=1ｐｋi‖Ｓi）
のように求める
ことを特徴とする復号装置。
【請求項１４】
請求項１０記載の復号装置であって、
“‖”はビット列同士を結合する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のように求める
ことを特徴とする復号装置。
【請求項１５】
請求項１０記載の復号装置であって、
“‖”はビット列同士を結合する記号、ΣNi=1はｉ＝１，…，Ｎについてビット列を連結することを意味する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（ΣNi=1Ｓi‖ｐｋi）
または
ｈｎ←Ｈｎ（ΣNi=1ｐｋi‖Ｓi）
のように求める
ことを特徴とする復号装置。
【請求項１６】
請求項１０，１２から１５のいずれかに記載の復号装置であって、
前記ハッシュ関数Ｈｎは、分割データＳｎを暗号化する関数から、分割データＳｎごとに特定したハッシュ関数である
ことを特徴とする復号装置。
【請求項１７】
請求項１０，１２から１５のいずれかに記載の復号装置であって、
前記ハッシュ関数Ｈｎは、あらかじめ分割データＳｎごとに定めたハッシュ関数である
ことを特徴とする復号装置。
【請求項１８】
請求項１０から１７のいずれかに記載の復号装置であって、
前記復元部は、ＡＯＮＴまたは閾値秘密分散法によって秘密分散されたデータを復元する
ことを特徴とする復号装置。
【請求項１９】
暗号化装置と復号装置を有する暗号化システムであって、
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数とし、
前記暗号化装置は、
乱数ｒを生成する乱数生成部と、
メッセージＭと前記乱数ｒとを結合し、データＳとする乱数結合部と、
データＳを秘密分散して分割データＳ１，…，ＳＮを生成する秘密分散部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する暗号部と
を備え、
前記復号装置は、
分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する復号部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎ’を生成する暗号部と、
すべてのｎについて、分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致することを確認する確認部と、
秘密分散されたデータである分割データＳ１，…，ＳＮから、元のデータＳを復元する復元部と、
前記データＳから、あらかじめ定めた条件にしたがってメッセージＭを切り出す取得部と
を備える
暗号化システム。
【請求項２０】
暗号化装置と復号装置を有する暗号化システムであって、
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数とし、
前記暗号化装置は、
メッセージＭを秘密分散して分割メッセージＭ１，…，ＭＮを生成する秘密分散部と、
乱数ｒを生成する乱数生成部と、
前記分割メッセージＭ１，…，ＭＮそれぞれに前記乱数ｒを結合し、分割データＳ１，…，ＳＮとする乱数結合部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する暗号部と
を備え、
前記復号装置は、
分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する復号部と、
前記分割データＳｎから、あらかじめ定めた条件にしたがって分割メッセージＭｎと乱数ｒｎを切り出す取得部と、
すべての乱数ｒ１，…，ｒＮが一致することを確認する確認部と、
秘密分散されたデータである分割メッセージＭ１，…，ＭＮから、元のメッセージＭを復元する復元部と
を備える
暗号化システム。
【請求項２１】
暗号化装置と復号装置を有する暗号化システムであって、
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数、“‖”はビット列同士を結合する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
前記暗号化装置は、
メッセージＭを秘密分散して分割メッセージＭ１，…，ＭＮを生成する秘密分散部と、
乱数ｒ１，…，ｒＮを生成する乱数生成部と、
前記分割メッセージＭ１，…，ＭＮそれぞれに対応する前記乱数ｒ１，…，ｒＮを結合し、分割データＳ１，…，ＳＮとする乱数結合部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する暗号部と
を備え、
前記復号装置は、
分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する復号部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎ’を生成する暗号部と、
すべてのｎについて、分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致することを確認する確認部と、
前記分割データＳ１，…，ＳＮから、あらかじめ定めた条件にしたがって分割メッセージＭ１，…，ＭＮを切り出す取得部と、
前記分割メッセージＭ１，…，ＭＮから、元のメッセージＭを復元する復元部と、
を備え、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のように求める
ことを特徴とする暗号化システム。
【請求項２２】
暗号化装置と復号装置を有する暗号化システムであって、
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数、“‖”はビット列同士を結合する記号、ΣNi=1はｉ＝１，…，Ｎについてビット列を連結することを意味する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
前記暗号化装置は、
メッセージＭを秘密分散して分割メッセージＭ１，…，ＭＮを生成する秘密分散部と、
乱数ｒ１，…，ｒＮを生成する乱数生成部と、
前記分割メッセージＭ１，…，ＭＮそれぞれに対応する前記乱数ｒ１，…，ｒＮを結合し、分割データＳ１，…，ＳＮとする乱数結合部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する暗号部と
を備え、
前記復号装置は、
分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する復号部と、
前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュ部と、
前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎ’を生成する暗号部と、
すべてのｎについて、分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致することを確認する確認部と、
前記分割データＳ１，…，ＳＮから、あらかじめ定めた条件にしたがって分割メッセージＭ１，…，ＭＮを切り出す取得部と、
前記分割メッセージＭ１，…，ＭＮから、元のメッセージＭを復元する復元部と、
を備え、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（ΣNi=1Ｓi‖ｐｋi）
または
ｈｎ←Ｈｎ（ΣNi=1ｐｋi‖Ｓi）
のように求める
ことを特徴とする暗号化システム。
【請求項２３】
請求項１９または２０記載の暗号化システムであって、
“‖”はビット列同士を結合する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のように求める
ことを特徴とする暗号化システム。
【請求項２４】
請求項１９または２０記載の暗号化システムであって、
“‖”はビット列同士を結合する記号、ΣNi=1はｉ＝１，…，Ｎについてビット列を連結することを意味する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（ΣNi=1Ｓi‖ｐｋi）
または
ｈｎ←Ｈｎ（ΣNi=1ｐｋi‖Ｓi）
のように求める
ことを特徴とする暗号化システム。
【請求項２５】
請求項１９から２４のいずれかに記載の暗号化システムであって、
前記ハッシュ関数Ｈｎは、分割データＳｎを暗号化する関数から、分割データＳｎごとに特定したハッシュ関数である
ことを特徴とする暗号化システム。
【請求項２６】
請求項１９から２４のいずれかに記載の暗号化システムであって、
前記ハッシュ関数Ｈｎは、あらかじめ分割データＳｎごとに定めたハッシュ関数である
ことを特徴とする暗号化システム。
【請求項２７】
請求項１９から２６のいずれかに記載の暗号化システムであって、
前記秘密分散部は、ＡＯＮＴまたは閾値秘密分散法によって秘密分散し、
前記復元部は、ＡＯＮＴまたは閾値秘密分散法によって秘密分散されたデータを復元する
ことを特徴とする暗号化システム。
【請求項２８】
暗号化装置と復号装置を有する暗号化システムを用いた暗号化方法であって、
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数とし、
前記暗号化装置で、
乱数生成部が、乱数ｒを生成する乱数生成ステップと、
乱数結合部が、メッセージＭと前記乱数ｒとを結合し、データＳとする乱数結合ステップと、
秘密分散部が、データＳを秘密分散して分割データＳ１，…，ＳＮを生成する秘密分散ステップと、
ハッシュ部が、前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュステップと、
暗号部が、前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する暗号ステップと、
前記復号装置で、
復号部が、分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する復号ステップと、
受信ハッシュ部が、前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求める受信ハッシュステップと、
受信暗号部が、前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎ’を生成する受信暗号ステップと、
確認部が、すべてのｎについて、分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致することを確認する確認ステップと、
復元部が、秘密分散されたデータである分割データＳ１，…，ＳＮから、元のデータＳを復元する復元ステップと、
取得部が、前記データＳから、あらかじめ定めた条件にしたがってメッセージＭを切り出す取得ステップと
を有する暗号化方法。
【請求項２９】
暗号化装置と復号装置を有する暗号化システムを用いた暗号化方法であって、
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数とし、
前記暗号化装置で、
秘密分散部が、メッセージＭを秘密分散して分割メッセージＭ１，…，ＭＮを生成する秘密分散ステップと、
乱数生成部が、乱数ｒを生成する乱数生成ステップと、
乱数結合部が、前記分割メッセージＭ１，…，ＭＮそれぞれに前記乱数ｒを結合し、分割データＳ１，…，ＳＮとする乱数結合ステップと、
ハッシュ部が、前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュステップと、
暗号部が、前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する暗号ステップと、
前記復号装置で、
復号部が、分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する復号ステップと、
取得部が、前記分割データＳｎから、あらかじめ定めた条件にしたがって分割メッセージＭｎと乱数ｒｎを切り出す取得ステップと、
確認部が、すべての乱数ｒ１，…，ｒＮが一致することを確認する確認ステップと、
復元部が、秘密分散されたデータである分割メッセージＭ１，…，ＭＮから、元のメッセージＭを復元する復元ステップと
を有する暗号化方法。
【請求項３０】
暗号化装置と復号装置を有する暗号化システムを用いた暗号化方法であって、
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数、“‖”はビット列同士を結合する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
前記暗号化装置で、
乱数生成部が、メッセージＭを秘密分散して分割メッセージＭ１，…，ＭＮを生成する秘密分散ステップと、
乱数生成部が、乱数ｒ１，…，ｒＮを生成する乱数生成ステップと、
乱数結合部が、前記分割メッセージＭ１，…，ＭＮそれぞれに対応する前記乱数ｒ１，…，ｒＮを結合し、分割データＳ１，…，ＳＮとする乱数結合ステップと、
ハッシュ部が、前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュステップと、
暗号部が、前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する暗号ステップと、
前記復号装置で、
復号部が、分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する復号ステップと、
受信ハッシュ部が、前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求める受信ハッシュステップと、
受信暗号部が、前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎ’を生成する受信暗号ステップと、
確認部が、すべてのｎについて、分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致することを確認する確認ステップと、
取得部が、前記分割データＳ１，…，ＳＮから、あらかじめ定めた条件にしたがって分割メッセージＭ１，…，ＭＮを切り出す取得ステップと、
復元部が、前記分割メッセージＭ１，…，ＭＮから、元のメッセージＭを復元する復元ステップと、
を有し、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のように求める
ことを特徴とする暗号化方法。
【請求項３１】
暗号化装置と復号装置を有する暗号化システムを用いた暗号化方法であって、
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数、“‖”はビット列同士を結合する記号、ΣNi=1はｉ＝１，…，Ｎについてビット列を連結することを意味する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
前記暗号化装置で、
乱数生成部が、メッセージＭを秘密分散して分割メッセージＭ１，…，ＭＮを生成する秘密分散ステップと、
乱数生成部が、乱数ｒ１，…，ｒＮを生成する乱数生成ステップと、
乱数結合部が、前記分割メッセージＭ１，…，ＭＮそれぞれに対応する前記乱数ｒ１，…，ｒＮを結合し、分割データＳ１，…，ＳＮとする乱数結合ステップと、
ハッシュ部が、前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求めるハッシュステップと、
暗号部が、前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する暗号ステップと、
前記復号装置で、
復号部が、分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する復号ステップと、
受信ハッシュ部が、前記分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求める受信ハッシュステップと、
受信暗号部が、前記ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎ’を生成する受信暗号ステップと、
確認部が、すべてのｎについて、分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致することを確認する確認ステップと、
取得部が、前記分割データＳ１，…，ＳＮから、あらかじめ定めた条件にしたがって分割メッセージＭ１，…，ＭＮを切り出す取得ステップと、
復元部が、前記分割メッセージＭ１，…，ＭＮから、元のメッセージＭを復元する復元ステップと、
を有し、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（ΣNi=1Ｓi‖ｐｋi）
または
ｈｎ←Ｈｎ（ΣNi=1ｐｋi‖Ｓi）
のように求める
ことを特徴とする暗号化方法。
【請求項３２】
請求項２８または２９記載の暗号化方法であって、
“‖”はビット列同士を結合する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のように求める
ことを特徴とする暗号化方法。
【請求項３３】
請求項２８または２９記載の暗号化方法であって、
“‖”はビット列同士を結合する記号、ΣNi=1はｉ＝１，…，Ｎについてビット列を連結することを意味する記号、ｐｋｎは暗号化装置と復号装置で共有できるｎ番目の情報とし、
前記の分割データＳｎに対応するハッシュ値ｈｎは、
ｈｎ←Ｈｎ（ΣNi=1Ｓi‖ｐｋi）
または
ｈｎ←Ｈｎ（ΣNi=1ｐｋi‖Ｓi）
のように求める
ことを特徴とする暗号化方法。
【請求項３４】
請求項２８から３３のいずれかに記載の暗号化方法であって、
前記ハッシュ関数Ｈｎは、分割データＳｎを暗号化する関数から、分割データＳｎごとに特定したハッシュ関数である
ことを特徴とする暗号化方法。
【請求項３５】
請求項２８から３３のいずれかに記載の暗号化方法であって、
前記ハッシュ関数Ｈｎは、あらかじめ分割データＳｎごとに定めたハッシュ関数である
ことを特徴とする暗号化方法。
【請求項３６】
請求項２８から３５のいずれかに記載の暗号化方法であって、
前記秘密分散ステップは、ＡＯＮＴまたは閾値秘密分散法によって秘密分散し、
前記復元ステップは、ＡＯＮＴまたは閾値秘密分散法によって秘密分散されたデータを復元する
ことを特徴とする暗号化方法。
【請求項３７】
請求項１から９のいずれかに記載の暗号化装置、もしくは請求項１０から１８のいずれかに記載の復号装置としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージを分割した上で、複数の条件で暗号化する暗号化装置と、多重に暗号化された暗号文を復号する復号装置、これらの装置を用いた暗号化システム、暗号化方法、およびプログラムに関する。
【背景技術】
【０００２】
メッセージを分割した上で、複数の条件で暗号化する方法（多重暗号化方法）としては、非特許文献１などがある。図１は、従来の複数の条件で暗号化する暗号化方式を説明するための図である。従来の暗号化方式では、平文ｍを条件の数Ｎだけ分割し、それぞれを指定された条件の暗号化手段９３２−１，…，９３２−Ｎで暗号化する。そして、得られたメッセージｃ１，…，ｃＮを連結して暗号文Ｃを出力する。また、一部だけを再利用するような攻撃が起きないようにするために、全体の完全性を保証するワンタイム署名を付加する。さらに、復号のためにラベルの情報も付加する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Yevgeniy Dodis1 and Jonathan Katz, “Chosen-Ciphertext Security of Multiple Encryption” ［平成２２年６月１１日検索］、インターネット<URL: theory.lcs.mit.edu/~yevgen/ps/2enc.ps>.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術はワンタイム署名を付加しなければならない。そして、ワンタイム署名は、署名長とラベル長が長くなるなどの問題を持つ電子署名方式であり、ワンタイム署名を用いることで暗号文が長くなってしまうという課題がある。例えば、Merkelのワンタイム署名では、１２８ビットのメッセージに対して、８７０４ビットのワンタイム署名が必要である。また、ＲＳＡ−ＯＡＥＰのラベルは１２０ビットである。
【０００５】
そこで本発明は、ワンタイム署名とラベルを付加する必要のない複数の条件で暗号化する暗号化装置、復号装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
Ｎは２以上の整数、ｎは１以上Ｎ以下の整数とする。本発明の第１の暗号化装置は、乱数生成部、乱数結合部、秘密分散部、ハッシュ部、暗号部を備える。乱数生成部は、乱数ｒを生成する。乱数結合部は、メッセージＭと乱数ｒとを結合し、データＳとする。秘密分散部は、データＳを秘密分散して分割データＳ１，…，ＳＮを生成する。ハッシュ部は、分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求める。暗号部はハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する。本発明の第１の復号装置は、復号部、ハッシュ部、暗号部、確認部、復元部、取得部を備える。復号部は、分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する。ハッシュ部は、分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求める。暗号部は、ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎ’を生成する。確認部は、すべてのｎについて、分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致することを確認する。復元部は、秘密分散されたデータである分割データＳ１，…，ＳＮから、元のデータＳを復元する。取得部は、データＳから、あらかじめ定めた条件にしたがってメッセージＭを切り出す。
【０００７】
本発明の第２の暗号化装置は、秘密分散部、乱数生成部、乱数結合部、ハッシュ部、暗号部を備える。秘密分散部は、メッセージＭを秘密分散して分割メッセージＭ１，…，ＭＮを生成する。乱数生成部は、乱数ｒを生成する。乱数結合部は、分割メッセージＭ１，…，ＭＮそれぞれに乱数ｒを結合し、分割データＳ１，…，ＳＮとする。ハッシュ部は、分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求める。暗号部は、ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成する。本発明の第２の復号装置は、復号部、取得部、確認部、復元部を備える。復号部は、分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する。取得部は、分割データＳｎから、あらかじめ定めた条件にしたがって分割メッセージＭｎと乱数ｒｎを切り出す。確認部は、すべての乱数ｒ１，…，ｒＮが一致することを確認する。復元部は、秘密分散されたデータである分割メッセージＭ１，…，ＭＮから、元のメッセージＭを復元する。
【発明の効果】
【０００８】
本発明の暗号化装置と復号装置によれば、分割データＳｎを暗号化するときに使用する乱数として、分割データＳｎに対応するハッシュ値ｈｎを使用する。このハッシュ値ｈｎは分割データＳｎに依存しているので、複数の条件で暗号化しても、暗号文にワンタイム署名とラベルを付加する必要がない。したがって、暗号文の長さを短くできる。
【図面の簡単な説明】
【０００９】
【図１】従来の複数の条件で暗号化する暗号化方式を説明するための図。
【図２】実施例１の暗号システムの構成例を示す図。
【図３】実施例１の暗号化装置の処理フローを示す図。
【図４】実施例１の復号装置の処理フローを示す図。
【図５】実施例２の暗号システムの構成例を示す図。
【図６】実施例２と実施例３の暗号化装置の処理フローを示す図。
【図７】実施例２の復号装置の処理フローを示す図。
【図８】実施例３の暗号システムの構成例を示す図。
【図９】実施例３の鍵生成装置の処理フローを示す図。
【図１０】実施例３の復号装置の処理フローを示す図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。以下の説明では、Ｎは２以上の整数、ｎは１以上Ｎ以下の整数、“‖”はビット列同士を結合する記号、ｐｋｎはｎ番目の条件に対する公開鍵、ｓｋｎはｎ番目の条件に対する秘密鍵とする。
【実施例１】
【００１１】
図２に実施例１の暗号システムの構成例を示す。また、図３は実施例１の暗号化装置の処理フローを示す図、図４は実施例１の復号装置の処理フローを示す図である。実施例１の暗号化装置１００は、Ｎ個の条件でメッセージを暗号化する暗号化装置である。暗号化装置１００は、乱数生成部１１０、乱数結合部１２０、秘密分散部１３０、ハッシュ部１４０、暗号部１５０、入出力部１８０、記録部１９０を備える。
【００１２】
暗号化装置１００の入出力部１８０がメッセージＭを受け取ると記録部１９０に記録し、乱数生成部１１０が乱数ｒを生成する（Ｓ１１０）。乱数結合部１２０は、メッセージＭと乱数ｒとを結合し、データＳとし、記録部１９０に記録する（Ｓ１２０）。例えば、
Ｓ←Ｍ‖ｒ
とすればよい。また、乱数ｒのビット数をあらかじめ定めておいてもよいし、メッセージＭの最後の数ビットを、メッセージの終了が判別できるビット列としておいてもよい。このように、あらかじめ定めた条件でメッセージＭと乱数ｒとを結合しておく。
【００１３】
秘密分散部１３０は、データＳを秘密分散して分割データＳ１，…，ＳＮを生成し、記録部１９０に記録する（Ｓ１３０）。秘密分散の方法としては、ＡＯＮＴ（All or Nothing Transform）もしくは閾値秘密分散法（ＳＳＳ：Secret Sharing Schemes）を用いればよい。
【００１４】
ハッシュ部１４０は、分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求める（Ｓ１４０）。ハッシュ関数Ｈｎは、暗号化の条件（分割データＳｎを暗号化する関数）などから、分割データＳｎごとに選定したハッシュ関数でもよいし、暗号化の条件ごと（分割データＳｎごと）にあらかじめ定めたハッシュ関数でもよい。分割データＳｎごとに選定したハッシュ関数を用いる場合には、記録部１９０は選定されたハッシュ関数を特定するインデックスｉｎｄｅｘｎを記録しておく。また、「分割データＳｎに対応するハッシュ値ｈｎ」とは、ハッシュ関数に分割データＳｎを入力した結果でもよいし、分割データＳｎに他のビット列を付加したビット列を入力した結果でもよい。例えば、
ｈｎ←Ｈｎ（Ｓｎ）
としてもよいし、
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のように、公開鍵ｐｋｎを付加して入力してもよい。なお、このとき付加した公開鍵ｐｋｎはｎを正しく認証できる情報（暗号化装置と復号装置で共有できる情報）であれば、他の情報に置き換えることもできる。また、
ｈｎ←Ｈｎ（ΣNi=1 Ｓi‖ｐｋi）
のように、全てを連結したものを入力してもよい。ここで、ΣNi=1はｉ＝１，…，Ｎについて、ビット列を連結することを意味する。例えば、ΣNi=1 Ｓi‖ｐｋiはＳ1‖ｐｋ1‖Ｓ2‖ｐｋ2‖・・・‖ＳN‖ｐｋNを意味する。なお、上記の例は、
ｈｎ←Ｈｎ（ΣNi=1ｐｋi‖Ｓi）
としてもよい。
【００１５】
暗号部１５０は、ｎ＝１，…，Ｎについて、ハッシュ値ｈｎを乱数として用いて、ｎ番目の暗号化の条件で分割データＳｎを暗号化し、分割暗号文Ｃｎを生成し、記録部１９０に記録する（Ｓ１５０）。具体的には、ハッシュ部１４０が、分割データＳｎごとに選定したハッシュ関数を用いる場合には、ｎ＝１，…，Ｎについて、
Ｃｎ←（Ｅｎｃｎ（Ｓｎ，ｐｋｎ，ｈｎ），ｉｎｄｅｘｎ）
のように分割暗号文Ｃｎを生成する。また、暗号化の条件ごと（分割データＳｎごと）にあらかじめ定めたハッシュ関数を用いる場合には、ｎ＝１，…，Ｎについて、
Ｃｎ←Ｅｎｃｎ（Ｓｎ，ｐｋｎ，ｈｎ）
のように分割暗号文Ｃｎを生成する。そして、入出力部１８０が、分割暗号文Ｃ１，…，ＣＮを暗号文として復号装置２００に送信する。
【００１６】
なお、ハッシュ値ｈｎとしてＨｎ（Ｓｎ）を用いると、
Ｃｎ’←Ｅｎｃｎ（Ｓｎ，ｐｋｎ’，ｈｎ）    ただし、ｐｋｎ’≠ｐｋｎ
のように求めた分割暗号文Ｃｎ’が分割暗号文Ｃｎと一致してしまう可能性が残る。一方、ハッシュ値ｈｎとしてＨｎ（Ｓｎ‖ｐｋｎ）を用いると、異なる公開鍵ｐｋｎ’の場合にはＥｎｃｎへ入力されるハッシュ値（乱数）も異なるので、
Ｃｎ”←Ｅｎｃｎ（Ｓｎ，ｐｋｎ’，ｈｎ’）    ただし、ｐｋｎ’≠ｐｋｎ，ｈｎ’≠ｈｎ
のように求めた分割暗号文Ｃｎ”は、分割暗号文Ｃｎとは必ず異なる。一方、ハッシュ値ｈｎとしてＨｎ（ΣNi=1 Ｓi‖ｐｋi）を用いると、全てのＳiを入手しないと復号することができないため、一部のＳiを所持している場合の悪意のある復号を防ぐことができる。
【００１７】
復号装置２００は、復号部２１０、ハッシュ部２２０、暗号部２３０、確認部２４０、復元部２５０、取得部２６０、入出力部２８０、記録部２９０を備える。復号装置２００の入出力部２８０が暗号文を受け取ると、復号装置２００は暗号文を分割暗号文Ｃ１，…，ＣＮに分けて記録部２９０に記録する。
【００１８】
復号部２１０は、複数の条件に適合した復号方法で分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する（Ｓ２１０）。具体的には、ｎ＝１，…，Ｎについて、
Ｓｎ←Ｄｅｃｎ（Ｅｎｃｎ（Ｓｎ，ｐｋｎ，ｈｎ），ｓｋｎ）
のように分割データＳｎを求める。
【００１９】
ハッシュ部２２０は、分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求める（Ｓ２２０）。なお、ハッシュ部２２０は、暗号化装置１００のハッシュ部１４０と同じ方法でハッシュ値ｈｎを求める。つまり、ハッシュ部１４０が分割データＳｎごとに選定したハッシュ関数を用いたのであれば、ハッシュ関数を特定するインデックスｉｎｄｅｘｎを用いて同じハッシュ関数を求める。また、ハッシュ部１４０が、暗号化の条件ごと（分割データＳｎごと）にあらかじめ定めたハッシュ関数を用いるのであれば、同じように定めたハッシュ関数を用いる。さらに、ハッシュ部２２０は、ハッシュ関数への入力もハッシュ部１４０と同じにする。例えば、ハッシュ部１４０が、
ｈｎ←Ｈｎ（Ｓｎ）
のようにハッシュ値ｈｎを求めるのであれば、同じようにハッシュ値ｈｎを求める。
【００２０】
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のようにハッシュ値ｈｎを求めるのであれば、同じようにハッシュ値ｈｎを求める。
【００２１】
ｈｎ←Ｈｎ（ΣNi=1 Ｓi‖ｐｋi）
のようにハッシュ値ｈｎを求めるのであれば、同じようにハッシュ値ｈｎを求める。
【００２２】
暗号部２３０は、ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎ’を生成する（Ｓ２３０）。つまり、
Ｃｎ’←Ｅｎｃｎ（Ｓｎ，ｐｋｎ，ｈｎ）
のように分割暗号文Ｃｎ’を求める。
【００２３】
確認部２４０は、すべてのｎについて、分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致することを確認する（Ｓ２４０）。いずれかの分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致しなかった場合には、処理を中止する。
【００２４】
すべての分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致した場合には、復元部２５０は、秘密分散されたデータである分割データＳ１，…，ＳＮから、元のデータＳを復元し、記録部２９０に記録する（Ｓ２５０）。なお、具体的な復元の方法は、暗号化装置１００の秘密分散部１３０と対応した方法を用いればよい。
【００２５】
取得部２６０は、データＳから、あらかじめ定めた条件にしたがってメッセージＭを切り出し、記録部２９０に記録する（Ｓ２６０）。例えば、データＳは、Ｍ‖ｒのような構造となっており、乱数ｒのビット数が決まっているのであれば、乱数のビット数分のビット列を削除することで切り出すことができる。メッセージの終了が判別できるビット列があるのであれば、そのビット列を探して切り出せばよい。
【００２６】
実施例１の暗号化装置と復号装置によれば、分割データＳｎを暗号化するときに使用する乱数として、分割データＳｎに対応するハッシュ値ｈｎを使用する。このハッシュ値ｈｎは分割データＳｎに依存しているので、暗号文にワンタイム署名とラベルを付加する必要がない。したがって、暗号文の長さを短くできる。例えば、Merkelのワンタイム署名では、１２８ビットのメッセージに対して、８７０４ビットのワンタイム署名が必要であったが、このワンタイム署名が不要となる。また、ＲＳＡ−ＯＡＥＰのラベルは１２０ビットであったが、これも不要となる。さらに、暗号時にハッシュ関数を利用することで、復号時に乱数が必要なくなる。これにより、資源の乏しい計算機でも複数の条件で暗号化する多重暗号を実行できるようになる。
【実施例２】
【００２７】
図５に実施例２の暗号システムの構成例を示す。また、図６は実施例２の暗号化装置の処理フローを示す図、図７は実施例２の復号装置の処理フローを示す図である。実施例２の暗号化装置３００も、Ｎ個の条件でメッセージを暗号化する暗号化装置である。暗号化装置３００は、秘密分散部３１０、乱数生成部３２０、乱数結合部３３０、ハッシュ部３４０、暗号部３５０、入出力部３８０、記録部３９０を備える。
【００２８】
暗号化装置３００の入出力部３８０がメッセージＭを受け取ると記録部３９０に記録する。秘密分散部３１０は、メッセージＭを秘密分散して分割メッセージＭ１，…，ＭＮを生成し、記録部３９０に記録する（Ｓ３１０）。秘密分散の方法としては、ＡＯＮＴ（All or Nothing Transform）もしくは閾値秘密分散法（ＳＳＳ：Secret Sharing Schemes）を用いればよい。
【００２９】
乱数生成部３２０は、乱数ｒを生成する（Ｓ３２０）。乱数結合部３３０は、分割メッセージＭ１，…，ＭＮそれぞれに乱数ｒを結合し、分割データＳ１，…，ＳＮとし、記録部３９０に記録する（Ｓ３３０）。例えば、乱数ｒのビット数をあらかじめ定めておいて
Ｓｎ←Ｍｎ‖ｒ
とすればよい。このように、あらかじめ定めた条件で分割メッセージＭｎと乱数ｒとを結合しておく。
【００３０】
ハッシュ部３４０は、分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求める（Ｓ３４０）。ハッシュ関数Ｈｎは、暗号化の条件（分割データＳｎを暗号化する関数）などから、分割データＳｎごとに特定したハッシュ関数でもよいし、暗号化の条件ごと（分割データＳｎごと）にあらかじめ定めたハッシュ関数でもよい。分割データＳｎごとに選定したハッシュ関数を用いる場合には、記録部３９０は選定されたハッシュ関数を特定するインデックスｉｎｄｅｘｎを記録しておく。また、「分割データＳｎに対応するハッシュ値ｈｎ」とは、ハッシュ関数に分割データＳｎを入力した結果でもよいし、分割データＳｎに他のビット列を付加したビット列を入力した結果でもよい。例えば、
ｈｎ←Ｈｎ（Ｓｎ）
としてもよいし、
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のように、公開鍵ｐｋｎを付加して入力してもよい。なお、このとき付加した公開鍵ｐｋｎはｎを正しく認証できる情報（暗号化装置と復号装置で共有できる情報）であれば、他の情報に置き換えることもできる。また、
ｈｎ←Ｈｎ（ΣNi=1 Ｓi‖ｐｋi）
のように、全てを連結したものを入力してもよい。ここで、ΣNi=1はｉ＝１，…，Ｎについて、ビット列を連結することを意味する。例えば、ΣNi=1 Ｓi‖ｐｋiはＳ1‖ｐｋ1‖Ｓ2‖ｐｋ2‖・・・‖ＳN‖ｐｋNを意味する。なお、上記の例は
ｈｎ←Ｈｎ（ΣNi=1ｐｋi‖Ｓi）
としてもよい。なお、公開鍵ｐｋｎを付加する理由は、実施例１と同じである。
【００３１】
暗号部３５０は、ｎ＝１，…，Ｎについて、ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成し、記録部３９０に記録する（Ｓ３５０）。具体的には、ハッシュ部３４０が、分割データＳｎごとに選定したハッシュ関数を用いる場合には、ｎ＝１，…，Ｎについて、
Ｃｎ←（Ｅｎｃｎ（Ｓｎ，ｐｋｎ，ｈｎ），ｉｎｄｅｘｎ）
のように分割暗号文Ｃｎを生成する。また、暗号化の条件ごと（分割データＳｎごと）にあらかじめ定めたハッシュ関数を用いる場合には、ｎ＝１，…，Ｎについて、
Ｃｎ←Ｅｎｃｎ（Ｓｎ，ｐｋｎ，ｈｎ）
のように分割暗号文Ｃｎを生成する。そして、入出力部３８０が、分割暗号文Ｃ１，…，ＣＮを暗号文として復号装置４００に送信する。
【００３２】
復号装置４００は、復号部４１０、取得部４２０、確認部４３０、復元部４４０、入出力部４８０、記録部４９０を備える。復号装置４００の入出力部４８０が暗号文を受け取ると、復号装置４００は暗号文を分割暗号文Ｃ１，…，ＣＮに分けて記録部４９０に記録する。
【００３３】
復号部４１０は、複数の条件に適合した復号方法で分割暗号文Ｃ１，…，ＣＮを分割データＳ１，…，ＳＮに復号する（Ｓ４１０）。具体的には、ｎ＝１，…，Ｎについて、
Ｓｎ←Ｄｅｃｎ（Ｅｎｃｎ（Ｓｎ，ｐｋｎ，ｈｎ），ｓｋｎ）
のように分割データＳｎを求める。
【００３４】
取得部４２０は、分割データＳｎから、あらかじめ定めた条件にしたがって分割メッセージＭｎと乱数ｒｎを切り出す（Ｓ４２０）。例えば、乱数のビット数をあらかじめ定めておき、分割データＳｎの後ろのそのビット数分を乱数ｒｎとし、残りを分割メッセージＭｎとすればよい。
【００３５】
確認部４３０は、すべての乱数ｒ１，…，ｒＮが一致することを確認する（Ｓ４３０）。いずれかの乱数ｒｎが一致しなかった場合には、処理を中止する。
【００３６】
すべての乱数ｒ１，…，ｒＮが一致した場合には、復元部４４０は、秘密分散されたデータである分割メッセージＭ１，…，ＭＮから、元のメッセージＭを復元し、記録部４９０に記録する（Ｓ４４０）。なお、具体的な復元の方法は、暗号化装置３００の秘密分散部３１０と対応した方法を用いればよい。
【００３７】
実施例２の暗号化装置と復号装置によれば、分割データＳｎを暗号化するときに使用する乱数として、分割データＳｎに対応するハッシュ値ｈｎを使用する。このハッシュ値ｈｎは分割データＳｎに依存しているので、実施例１と同じように暗号文にワンタイム署名とラベルを付加する必要がない。さらに、暗号時にハッシュ関数を利用することで、復号時に乱数が必要なくなる。これにより、資源の乏しい計算機でも複数の条件で暗号化する多重暗号を実行できるようになる。
【実施例３】
【００３８】
図８に実施例３の暗号システムの構成例を示す。また、図９は実施例３の鍵生成装置の処理フローを示す図、図６は実施例３の暗号化装置の処理フローを示す図、図７は実施例３の復号装置の処理フローを示す図である。実施例３ではメッセージを暗号化する条件が、時刻と受信者の２つの場合を説明する。この２つの条件での暗号化では、復号時刻と復号者を限定でき、新作映画の封切りや試験問題の配布などでの利用が考えられる。なお、条件は２つに限定する必要はなく、実施例１や実施例２で説明したように３個以上の条件としてもかまわない。以下の説明では条件が２つの場合について説明しながら、３個以上の条件の場合を含む一般的な場合も補足的に説明する。
【００３９】
実施例１と実施例２では、鍵は与えられた状態（生成され、記録されるべき装置が記録した状態）から説明したが、実施例３の暗号システムでは鍵生成装置についても簡単に説明する。実施例３の鍵生成装置８００は、時刻鍵生成部８１０、受信鍵生成部８２０、リリース鍵生成部８３０を備える。時刻鍵生成部８１０は、時刻に関する秘密鍵ｔｓｋと公開鍵ｔｐｋを生成する（Ｓ８１０）。受信鍵生成部８２０は、受信者用の秘密鍵ｕｓｋと公開鍵ｕｐｋを生成し、秘密鍵ｕｓｋを何らかの安全な方法で復号装置６００に送り、公開鍵ｕｐｋを公開する（Ｓ８２０）。リリース鍵生成部８３０は、指定された時刻Ｔに対する秘密鍵ｓＴを生成し、秘密鍵ｓＴを何らかの安全な方法で復号装置６００に送る（Ｓ８３０）。なお、時刻Ｔは暗号文が復号できる時刻を示す公開情報である。本実施例では、時刻Ｔが公開鍵ｐｋ１に、秘密鍵ｓＴが秘密鍵ｓｋ１に、公開鍵ｕｐｋが公開鍵ｐｋ２に、秘密鍵ｕｓｋが秘密鍵ｓｋ２に相当する。
【００４０】
実施例３の暗号化装置５００は、秘密分散部５１０、乱数生成部５２０、乱数結合部５３０、ハッシュ部５４０、暗号部５５０、入出力部５８０、記録部５９０を備える。暗号化装置５００の入出力部５８０がメッセージＭを受け取ると記録部５９０に記録する。秘密分散部５１０は、メッセージＭを秘密分散して分割メッセージＭ１，Ｍ２を生成し、記録部５９０に記録する（Ｓ５１０）。具体的には、乱数ｒｍを生成し、Ｍ１＝ｒｍ、Ｍ２＝Ｍ（＋）ｒｍのように分割メッセージＭ１，Ｍ２を生成すればよい。ただし、（＋）は排他的論理和を示す記号である。なお、３個以上を含むＮ個に分割する場合は、ＡＯＮＴ（All or Nothing Transform）もしくは閾値秘密分散法（ＳＳＳ：Secret Sharing Schemes）を用いて秘密分散すればよい。
【００４１】
乱数生成部５２０は、乱数ｒ１，ｒ２を生成する（Ｓ５２０）。なお、暗号化の条件がＮ個あるのであれば、乱数ｒ１，…，ｒＮを生成すればよい。乱数結合部５３０は、分割メッセージＭ１に乱数ｒ１を結合し、分割メッセージＭ２に乱数ｒ２を結合し、分割データＳ１，Ｓ２とし、記録部５９０に記録する（Ｓ５３０）。例えば、乱数ｒ１，ｒ２のビット数をあらかじめ定めておいて
Ｓｎ←Ｍｎ‖ｒｎ
とすればよい。このように、あらかじめ定めた条件で分割メッセージＭｎと乱数ｒｎとを結合しておく。
【００４２】
ハッシュ部５４０は、分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求める（Ｓ５４０）。ハッシュ関数Ｈｎは、暗号化の条件（分割データＳｎを暗号化する関数）などから、分割データＳｎごとに特定したハッシュ関数でもよいし、暗号化の条件ごと（分割データＳｎごと）にあらかじめ定めたハッシュ関数でもよい。分割データＳｎごとに選定したハッシュ関数を用いる場合には、記録部５９０は選定されたハッシュ関数を特定するインデックスｉｎｄｅｘｎを記録しておく。また、「分割データＳｎに対応するハッシュ値ｈｎ」とは、ハッシュ関数に分割データＳｎを入力した結果でもよいし、分割データＳｎに他のビット列を付加したビット列を入力した結果でもよい。例えば、
ｈｎ←Ｈｎ（Ｓｎ）
としてもよいし、
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のように、公開鍵ｐｋｎを付加して入力してもよい。なお、このとき付加した公開鍵ｐｋｎはｎを正しく認証できる情報（暗号化装置と復号装置で共有できる情報）であれば、他の情報に置き換えることもできる。また、
ｈｎ←Ｈｎ（ΣNi=1 Ｓi‖ｐｋi）
または
ｈｎ←Ｈｎ（ΣNi=1ｐｋi‖Ｓi）
のように、全てを連結したものを入力してもよい。実施例３の場合であれば、
ｈｎ←Ｈｎ（ｐｋ１‖Ｓ１‖ｐｋ２‖Ｓ２）
とすればよい。また、乱数結合部５３０とハッシュ部５４０の処理を一度に行うのであれば、
ｈｎ←Ｈｎ（ｐｋ１‖Ｍ１‖ｒ１‖ｐｋ２‖Ｍ２‖ｒ２）
のように処理してもよい。なお、公開鍵ｐｋｎを付加する理由は、実施例１と同じである。
【００４３】
暗号部５５０は、ｎ＝１，２について、ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎを生成し、記録部５９０に記録する（Ｓ５５０）。一般的に表現すると、ハッシュ部５４０が、分割データＳｎごとに選定したハッシュ関数を用いる場合には、ｎ＝１，…，Ｎについて、
Ｃｎ←（Ｅｎｃｎ（Ｓｎ，ｐｋｎ，ｈｎ），ｉｎｄｅｘｎ）
のように分割暗号文Ｃｎを生成する。また、暗号化の条件ごと（分割データＳｎごと）にあらかじめ定めたハッシュ関数を用いる場合には、ｎ＝１，…，Ｎについて、
Ｃｎ←Ｅｎｃｎ（Ｓｎ，ｐｋｎ，ｈｎ）
のように分割暗号文Ｃｎを生成する。そして、入出力部５８０が、分割暗号文Ｃ１，…，ＣＮを暗号文として復号装置６００に送信する。
【００４４】
復号装置６００は、復号部６１０、ハッシュ部６２０、暗号部６３０、確認部６４０、取得部６５０、復元部６６０、入出力部６８０、記録部６９０を備える。復号装置６００の入出力部６８０が暗号文を受け取ると、復号装置６００は暗号文を分割暗号文Ｃ１，Ｃ２に分けて記録部６９０に記録する。
【００４５】
復号部６１０は、複数の条件に適合した復号方法で分割暗号文Ｃ１，Ｃ２を分割データＳ１，Ｓ２に復号する（Ｓ６１０）。一般的に表現すると、ｎ＝１，…，Ｎについて、
Ｓｎ←Ｄｅｃｎ（Ｅｎｃｎ（Ｓｎ，ｐｋｎ，ｈｎ），ｓｋｎ）
のように分割データＳｎを求める。
【００４６】
ハッシュ部６２０は、分割データＳｎごとに、対応するハッシュ関数Ｈｎを用いて分割データＳｎに対応するハッシュ値ｈｎを求める（Ｓ６２０）。なお、ハッシュ部６２０は、暗号化装置５００のハッシュ部５４０と同じ方法でハッシュ値ｈｎを求める。つまり、ハッシュ部５４０が分割データＳｎごとに選定したハッシュ関数を用いたのであれば、ハッシュ関数を特定するインデックスｉｎｄｅｘｎを用いて同じハッシュ関数を求める。また、ハッシュ部５４０が、暗号化の条件ごと（分割データＳｎごと）にあらかじめ定めたハッシュ関数を用いるのであれば、同じように定めたハッシュ関数を用いる。さらに、ハッシュ部６２０は、ハッシュ関数への入力もハッシュ部５４０と同じにする。例えば、ハッシュ部５４０が、
ｈｎ←Ｈｎ（Ｓｎ）
のようにハッシュ値ｈｎを求めるのであれば、同じようにハッシュ値ｈｎを求める。
【００４７】
ｈｎ←Ｈｎ（Ｓｎ‖ｐｋｎ）
のようにハッシュ値ｈｎを求めるのであれば、同じようにハッシュ値ｈｎを求める。
【００４８】
ｈｎ←Ｈｎ（ΣNi=1 Ｓi‖ｐｋi）
のようにハッシュ値ｈｎを求めるのであれば、同じようにハッシュ値ｈｎを求める。また、上述した例のように
ｈｎ←Ｈｎ（ｐｋ１‖Ｓ１‖ｐｋ２‖Ｓ２）
のようにハッシュ値ｈｎを求めるのであれば、同じようにハッシュ値ｈｎを求める。
【００４９】
暗号部６３０は、ｎ＝１，２について、ハッシュ値ｈｎを用いて分割データＳｎを暗号化し、分割暗号文Ｃｎ’を生成する（Ｓ６３０）。一般的に表現すると、
Ｃｎ’←Ｅｎｃｎ（Ｓｎ，ｐｋｎ，ｈｎ）
のように分割暗号文Ｃｎ’を求めればよい。
【００５０】
確認部６４０は、ｎ＝１，２について、分割暗号文Ｃ１と分割暗号文Ｃ１’、分割暗号文Ｃ２と分割暗号文Ｃ２’とが一致することを確認する（Ｓ６４０）。一般的に表現すると、いずれかの分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致しなかった場合には、処理を中止する。
【００５１】
すべての分割暗号文Ｃｎと分割暗号文Ｃｎ’とが一致した場合には、取得部６５０は、分割データＳｎから、あらかじめ定めた条件にしたがって分割メッセージＭｎを切り出し、記録部６９０に記録する（Ｓ６５０）。例えば、分割データＳｎは、Ｍｎ‖ｒｎのような構造となっており、乱数ｒｎのビット数が決まっているのであれば、乱数のビット数分のビット列を削除することで切り出すことができる。分割メッセージの終了が判別できるビット列があるのであれば、そのビット列を探して切り出せばよい。
【００５２】
復元部６６０は、分割メッセージＭ１，Ｍ２から、元のメッセージＭを復元し、記録部６９０に記録する（Ｓ２５０）。なお、具体的な復元の方法は、暗号化装置５００の秘密分散部５１０と対応した方法を用いればよい。例えば、Ｍ１＝ｒｍ、Ｍ２＝Ｍ（＋）ｒｍのように分割メッセージＭ１，Ｍ２を生成したのであれば、メッセージＭをＭ＝Ｍ１（＋）Ｍ２のように計算し、復元すればよい。そして、入出力部６８０がメッセージＭを出力する。
【００５３】
実施例３の暗号化装置と復号装置でも、実施例１や実施例２と同様の効果が得られる。また、多重化する暗号の中に時刻を条件として含めることもできる。
【００５４】
［プログラム、記録媒体］
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【００５５】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【００５６】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００５７】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００５８】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００５９】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【００６０】
本発明は、暗号通信の分野に利用することができる。
【符号の説明】
【００６１】
１００、３００、５００  暗号化装置        １１０、３２０、５２０  乱数生成部
１２０、３３０，５３０  乱数結合部        １３０、３１０、５１０  秘密分散部
１４０、３４０、５４０  ハッシュ部        １５０、３５０、５５０  暗号部
１８０、３８０、５８０  入出力部          １９０、３９０、３９０  記録部
２００、４００、６００  復号装置          ２１０、４１０、６１０  復号部
２２０、６２０  ハッシュ部                ２３０、６３０  暗号部
２４０、４３０、６４０  確認部            ２５０、４４０、６６０  復元部
２６０、４２０、６５０  取得部            ２８０、４８０、６８０  入出力部
２９０、４９０、６９０  記録部            ８００  鍵生成装置
８１０  時刻鍵生成部                      ８２０  受信鍵生成部
８３０  リリース鍵生成部                  １０００  ネットワーク
【図１】
0005512559.tif 000002
【図２】
0005512559.tif 000003
【図３】
0005512559.tif 000004
【図４】
0005512559.tif 000005
【図５】
0005512559.tif 000006
【図６】
0005512559.tif 000007
【図７】
0005512559.tif 000008
【図８】
0005512559.tif 000009
【図９】
0005512559.tif 000010
【図１０】
0005512559.tif 000011