P2PBBS総合

58b066b5 :Anonymous 2015-03-27 14:23
もっとローテクに捏造を防ぎたいな。古い書き込みを受け取った時の捏造判定に使えそうな方法を考えてみた。
ある程度一貫性のあるデータが取得できるシステムが前提。新月は常駐ノードが複数あるので使えそうだけど、一般的にはDHTがないと厳しいか。

それぞれの書き込みに数百ビットのブルームフィルタを付ける。ここに同じスレッド内にある直近のいくつかの書き込みのハッシュ(さらに、ブルームフィルタを付ける方の本文+日付のハッシュか何かによって値を変化させる)を追加していく。ここで書き込み毎にハッシュ値を変化させるのは、複数の異なるハッシュ値から作られたブルームフィルタを使うことで、擬陽にあたる書き込みを捏造することを困難にするため。

タイムスタンプを過去のものに捏造した書き込みを何らかの方法で他ノードに流したとする。受け取ったノードは同じスレッド内にある時間の近い複数の書き込みのブルームフィルタを見て、受け取った書き込みのハッシュの記録が一定の割合より少なければ捏造であることを確認できる。
過去の書き込みを捏造するためには、現在の書き込み、すこし前の書き込み、さらに前の書き込み……とそれぞれの時間ごとに複数の書き込みを作ってチェーンさせる必要が出てくるため、捏造に掛かるコストが増大する。例えば書き込みにPoWなどが必要であればさらに効果的。
PoWが無いとしても、クライアントからユーザが削除した書き込みに付随するブルームフィルタは無視するようにすれば、そこから繋がっている複数の捏造された書き込みを一挙に除去できるかもしれない。

ただし、事前に書き込みを用意しておいて、その書き込みのハッシュをブルームフィルタに紛れ込ませておけば捏造できる。また、ハッシュ値が複数のブルームフィルタを通過するような、意味のない書き込みを捏造することも可能。
Powered by shinGETsu.