- PR -

情報の隠蔽したまま,情報が一致している事を確かめる方法

投稿者投稿内容
banboo
大ベテラン
会議室デビュー日: 2003/12/05
投稿数: 210
投稿日時: 2005-08-24 15:36
「互いにどんな情報を持っているかという事を
お互いに隠蔽したまま,共通する情報のみを明らかにする」
方法がありましたらご教授下さい.

やりたい事のイメージは,以下の通りです.

・A,Bの二つの集合が在るとする.

A  @ A B 

B    A B C

・Aの情報を隠蔽する.

A  ● ● ● 

B    A B C

・A,Bが互いにどんな情報を持っているかという事を
お互いに隠蔽したまま,共通する情報のみを明らかにする.

   一致 一致
    ↓ ↓
   
A  ● ● ●

B    A B C
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-08-24 15:52
どもです。がると申します。
んっと。
・第三者を介在させる
では駄目でしょうか?

banbooさんの記述ですと
引用:

「互いにどんな情報を持っているかという事を
お互いに隠蔽したまま


とあるのですが。この「隠蔽」の定義がもうひとつ
曖昧なので(苦笑
つまり
・Aの情報を"Bに対して"隠蔽したい
のか
・Aの情報を"A以外の全てに対して"隠蔽したい
のかが不明です。

で、原則として
「共通する情報」を拾い上げるためには「比較」が
必要なので、比較する人間は当然のことながら
「双方の情報が閲覧できること」が必須になります。

ので、上記の条件を可能な限り満たす条件を考えると
「第三者の介在」になるかと思うのですが。

どうでしょうか?
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-08-24 16:05
「情報」や「比較」がコンピュータで扱うデータであるならば、
チャレンジ/レスポンス方式を応用して、
・Bが単一のチャレンジを送る
・Aが全ての「情報」に対してレスポンスを生成して送り返す
・Bも生成して、比較する
・一致したものは互いに持っている
を思いつきました。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-08-24 16:10
若干の不一致のリスクを許容できるなら、Hashを取って比較、
無理なら公開キーで暗号化して比較(秘密キーはどちらにも持たない)とか。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2005-08-24 16:10
引用:

「互いにどんな情報を持っているかという事を
お互いに隠蔽したまま,共通する情報のみを明らかにする」


「どんな情報」という情報が無いのでなんとも言えないけど、
項目ごとにハッシュした情報同士を比較して・・・でいいのでは?

(と言っても、ハッシュが一致したからといって必ず元データも一致する、という訳では無いですが)
hakone
会議室デビュー日: 2005/08/24
投稿数: 2
投稿日時: 2005-08-24 16:11
こんにちは。

PKIなんかでよく使われる公開鍵と秘密鍵を応用すればできないですか?

両者で暗号化方式とどの公開鍵を使うかを合意しておき、
その公開鍵とペアの秘密鍵は、両者が入手できないものを使います。

で、その公開鍵で情報を個別に暗号化した情報をやり取りします。

そうすると同じ情報があれば、暗号化後の情報は同じになるはずですし、
元の情報が異なれば暗号化後の情報も異なると思います。

で、秘密鍵を双方が持っていなければどちらも復号できない。


って、ことになりませんかね?
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-08-24 16:11
こんにちは。

極々シンプルに行きますと…、
A、B 双方で、持っている個々の情報のダイジェストを作って交換し合う、というのは如何でしょうか?

つまり、
1. ダイジェスト作成
 A: M1, M2, M3 → D1, D2, D3作成
 B: M2, M3, M4 → D2, D3, D4作成

2. 交換 & 比較
 A: D2, D3一致、D4は一致する情報なし
  → M2, M3 は共通、その他 1つの不明情報あり
 B: D2, D3一致、D1は一致する情報なし
  → M2, M3 は共通、その他 1つの不明情報あり
 C ( 第三者 ): D1,D2,D3,D4 を盗聴
  → 元が何の情報かさっぱり分からず

という感じで。
※ 勿論、持っている情報が綺麗に分割でき、かつ情報の個数はバレても構わない、という前提が要りますが。

以上、ご参考まで。

追記:おぉ、大量の返信が一気に… もろにかぶりましたね。

[ メッセージ編集済み 編集者: angel 編集日時 2005-08-24 16:13 ]
banboo
大ベテラン
会議室デビュー日: 2003/12/05
投稿数: 210
投稿日時: 2005-08-24 17:25
皆様アドバイスを頂きありがとう御座います.

前提条件の記述が不足しておりました.
また,情報の隠蔽についても定義が不足しておりました.
すみません.

知りたいことを改めて書きますと,以下の通りです.

【問題】A,Bの二者間での情報のやりとりとする.AとBは,相手がどんな情報を
    持っているか知らないものとする.
    A,B間で,お互いに情報を隠蔽したまま,共通する情報のみを明らかにする.

【前提】A,B二者間での情報のやりとりとする.第三者は介在しない.

    例えば,二人の情報は以下とする.

    A: M1, M2, M3
    B: M2, M3, M4

【情報の隠蔽の定義】以下の二種類のタイプの情報の隠蔽を行う.

 type1:情報の中身が何かという事を隠蔽する

 type2:情報を持っていないという事を隠蔽する
   ~~~~~~~~~~~~~~~~~~
------------------------------------------------------------
私自身も,「情報のダイジェストを作って交換し合う」という方法
までは思いつきました.

例えば,以下の方法により,お互いの値の情報が何か隠蔽できます.

・Hash(M1) 比較 Hash(M2)

しかし,値が一致しなかった場合,相手がその情報を持っていないという情報が漏洩します.                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Aは,BがM1を持っていないという事がわかる.逆に,Bは,AがM2を持っていないという事がわかる.
つまり,type2の情報の隠蔽ができません.

■何かいい方法はありませんでしょうか?

マルチパーティプロトコル
(http://www.ep.u-tokai.ac.jp/~kikn/SEC2005/SEC04-5SS.pdf)
を利用すれば,
A,Bの情報が何かわからなくても,一致しているものがある事が
確認できそうな気がしております.
どの値が一致しているかまではわかないかもしれませんが...

スキルアップ/キャリアアップ(JOB@IT)