Imony Project
FlashBox
トップページImonyとは

Imonyで使用する捏造判定

はじめに

現在のファイル共有P2P(WinnyやShare)では捏造警告という機能があります。しかしこの機能を使用している人が少ないことから、判定が本当に正しいか不透明である上に捏造でも大抵の場合警告がついていない、という現状です。これらの主な原因は本物であるという報告をする機能が(*1)ほとんど無いに等しいからだと考えた上で考え直してみました。

(*1) トリップという一時的な解決策は存在します

WinnyやShareの捏造警告の問題点

ファイルキーと捏造キーが独立している

独立していることにより捏造と判定されているファイルでも次の瞬間には捏造判定が消える可能性が高いという問題がありました。解決策は明らかでキー自体に捏造判定機能を搭載するということです。

本物判定が無い

たくさんの人目にふれるファイルの場合は本物であっても捏造判定がつけられやすくなり、逆に人目にふれないファイルの場合は捏造であっても捏造判定をつけられにくくなります。解決策は捏造判定だけではなく本物判定もつけるということです。

Imonyでの実現方法

キー自体につけるためにできる限り「固定長でありたい」「短い長さで実現したい」という希望があり、またできる限り「たくさんの人の判定を無駄なく維持したい」という希望もあります。そこで2つの方法を提案します。

判定内容

内容領域としては4Bit分取得します。よって16種の状態を入れることができます。以下に最低限必要であると思われるものを挙げておきます。
  1. 評価A…品質最高
  2. 評価B…品質良好
  3. 評価C…品質良
  4. 評価D…品質通常
  5. 評価E…品質悪
  6. 未設定
  7. 警告E…品質最悪
  8. 警告D…別に良いファイルが存在
  9. 警告C…ファイル名違い
  10. 警告B…カテゴリー違い→同一カテゴリー内に存在する同一ハッシュキーにも設定
  11. 警告A…捏造・警告→同一ハッシュキーにも設定

衝突時の合成処理

できる限りどちらの情報も残るように処理します。
  1. どちらも同一の情報が入っている個所を取得
  2. 両方とも評価が入っている項目の平均を取得
  3. 20個を超えない範囲で残りをランダムに取得
2番の処理での平均が評価の間に入ってしまった場合は、真ん中(C)から遠い項目を取ります。

手法A

すべて固定長4Bitを使用します。Mac-ID-Hashを32で割った余りでどの領域に追加するか判定します。

この手法を使うと20人分の判定が判定人数30人で実現できます。

また判定人数が80人で29件個所埋まる、など概算判定人数も求められます。

手法B

未判定ならば1Bitの領域で[0]を、判定済みならば5Bitの領域で[1XXXX]を使用します。これにより128Bitの領域を未判定28個、判定済み20個でちょうど埋めることができます。Mac-ID-Hashを48で割った余りでどの領域に追加するか判定します。

この手法を使うと20人分の判定が判定人数25人で実現できます。

結論

手法Bは参加人数が少ない場合に有効な方法です。しかし処理が面倒な上、最大判定人数が20人に制限されてしまいます。ユーザが増えると予測して開発しているImonyでは手法Aを使うのが良いと思うので、手法Aを採用する予定です。

付録―判定人数の計算方法

親領域をA、有効数(記録数)をI、評価数(判定人数)をRとすると「I = (A * (1 - 1 / exp(R / A)))」「R = A * log(1 / (1 - I / A))」が近似値となります。数学的証明は長くなりますのでここでは省略させていただきます。

手法Aでの20人分の判定が出る判定人数の計算をする場合はAに32をIに19.5を代入します。
∴32 * log(1 / (1 - 19.5 / 32)) = 30.080232271727 = R

また手法Aにおいて全て埋まっている場合の期待評価数はAに32をIに31.5を代入して計算します。
∴32 * log(1 / (1 - 31.5 / 32)) = 133.08425866751 = R