perfect dark architecture
1投稿者: 投稿日:2009年07月18日(土) 04時02分01秒
☆ perfect dark architecture
ここに書かれていることは、version 1.000 の実装に基づいています。
つまり実装済みです(将来のバージョンで変更される可能性はあります)。

<目標>
perfect dark の目標は、匿名性と効率性を最大限追求し、情報の共有を行うことである。


<概念>
perfect dark は既存のファイル交換ソフトとは全く異なる概念で設計された。
ファイルを交換するのではない。情報を交換するのではない。
情報の共有を行う。

つまり、個々の perfect dark の情報を共有することであり、
個々の perfect dark を組み合わせ、perfect dark に存在するあらゆる情報を統合し、
たった一つのデータベース、unity を作り上げることである。
2投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時02分13秒
<unity>
unity は 個々の perfect dark が協調して作り上げるデータベースであり、
仮身や実身、ボードやギャザー、評価に至るまで、perfect dark のあらゆる情報を包括している。
perfect dark において核となる、最も重要かつ特徴的な技術である。

unityアーキテクチャについては将来詳述する予定。
3投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時02分36秒
<匿名性>
高い匿名性の実現は perfect dark において最も重要な目標の一つである。
そのため、perfect dark のシステムは様々なレベルにおいて、匿名性の確保に細心の注意を払って設計された。
4投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時02分57秒
1. 低レベルでの匿名性
perfect dark における通信は、公開鍵暗号(RSA)と共通鍵暗号(AES)を組み合わせることにより、
情報を暗号化して送受信をしている。

通信が開始すると、perfect dark は 1024bits の RSA公開鍵暗号(接続する側が送信)を使用した共通鍵の交換を行う。
RSA公開鍵の生成にはかなり計算コストがかかるので、公開鍵を常に生成してストック(40個まで)している。
生成した公開鍵はランダムに使用され、最大8回再使用された時点で破棄されて新しい公開鍵が生成される。
接続が頻繁でない場合は、回数制限に達する前に古い公開鍵を順次新しい公開鍵に更新していく。

共通鍵暗号は 256bits の鍵長の AES暗号を使用している。暗号モードは CBC。
共通鍵は公開鍵にて暗号化され、秘密鍵で復号化される。
通信速度が速くなるとCPU負荷が上がるが、これはAES暗号の処理によるものである。

RSA公開鍵を再使用するというのは、潜在的にセキュリティリスク(匿名性の低下)になると認識している。
しかし、
1. 使用するRSA公開鍵がランダムであること。
2. 接続が頻繁でない場合は、あまり再使用されず新しい公開鍵が生成されること。
3. 接続する側のみRSA公開鍵を送信し、接続先はランダムに選択されること。
4. 中継システムにより、接続先が中継か否か、双方が全くわからないこと。
これらの理由より、実用上の匿名性の低下はまず問題ないと考えている。

以上の処理は通信の秘密を守り、匿名性を確保するための技術であるが、
P2Pの原理上、なりすまし・一人二役・man-in-the-middle攻撃による通信の傍受を防ぐことはできない。

このため、perfect dark ではこれを逆手にとって、通信の中継を積極的に行っている。
接続要求があると、perfect dark はある一定の確率で中継を行い、それ以外の場合は通常通りの通信を行う。
中継している通信は、上記の暗号により、中継している perfect dark 自身は知ることはできない。中継の記録もしない。
この仕組みにより、自他共に匿名性を確保している。
5投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時03分05秒
アーキテクチャw
6投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時03分14秒
2. 中レベルでの匿名性
perfect dark では、既存のP2Pソフトと異なり、情報(ファイル等)とIPアドレス/ポートは全く関連がない。
つまり情報と所有者をセットで管理していないため、ある情報があっても所有者/要求者は特定されない。

perfect dark はネットワークに接続されているIPアドレスを常に収集/共有し、ネットワークの形成に役立てているが、
これには特定の情報の所有/要求に関するいかなる情報も含まれない。
(dkt+dht+du で利用される、担当のキーワードとハッシュは共有している。)
情報の所有/要求がわかるのは、1対1で接続した場合のみである。

さらに、perfect dark は情報を所有している場合でも、一定の割合で情報を所持していないと嘘をつく。
匿名性の向上にはほとんど役に立たないが、心理的な効果を狙った処理である。
7投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時03分45秒
3. 高レベルでの匿名性
perfect dark においてファイルは仮身(ファイル名など)と実身(ファイルの中身)で管理されているが、
仮身と実身は完全に分離して管理されている。
つまり、あるファイルの仮身を持っている perfect dark と実身を持っている perfect dark は別であり、
それぞれ独立して管理されている。
8投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時04分07秒
更に重要なことは、実身は共通鍵暗号(AES)により暗号化されており、復号化する鍵は仮身に含まれている。
つまり実身それ自体は、なんら意味のない情報の羅列であり、仮身と合わせることで初めて意味が生じる(@)。
繰り返すが、仮身それ自体、実身それ自体ではなんら意味を持たない情報である。

perfect dark ではdht(分散ハッシュテーブル)とdu(分散ユニティ)という仕組みにより、
自身の担当する unity をネットワークから自動的に収集・共有している(A)。

アップロードの処理では、まず実身をネットワークにアップロードし、次に仮身をアップロードする。
実身のアップロードが完了するまで仮身をアップロードしない。
@の原理と上記のアップロードの処理により、情報の一次発信者を保護している。
実身のアップロードが完了するまで仮身をアップロードせず、結果として perfect dark の
アップロードが完了し難いのは、偏に一次発信者の匿名性の確保のためである。
さらにアップロードの処理は、dht+du による unity の共有の処理と全く同じであり、
アップロードの処理を特定することは不可能である。

また、Aの仕組みとダウンロード処理は全く同じであり、ダウンロード処理を特定することは不可能。
つまり、dht+du により情報の受信者の保護も実現している。

Aの仕組みにより、perfect dark では unity が自動的に増えていく。
ダウンロードされた unity の内容を知りたいという要望が多いが、これは@の理由により難しい。
仮身と実身は完全に別々に管理されているため、ダウンロードされた unity(実身) の内容は
perfect dark 自体も知ることは出来ない。

perfect dark は様々な仕組みにより匿名性の向上に注力しているが、
IP通信を使用している以上、perfect dark の利用自体の匿名性はないこと、
統計的な解析により匿名性が破られる可能性があることに注意して欲しい。
9投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時04分30秒
<dkt+dht+du(分散キーワードテーブル+分散ハッシュテーブル+分散ユニティ)>
10投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時04分46秒
<自動アップデートの安全性>
perfect dark には自動アップデート機能があるが、
この機能が悪用されると、任意のコードがダウンロード・実行されてしまう危険性がある。
このため、perfect dark の自動アップデート機能は、極めて厳重に実行ファイルのチェックを行っている。

まず、新しいバージョンの実行ファイルを検出した場合、仮身をチェックし、
正当な "会長サイン" により認証があるかチェックする。
このチェックにより、偽実行ファイルのダウンロード・実行は防げると考えている。

次に、実行ファイルそのものをダウンロードし、"会長サイン" とは別の、
公開鍵暗号方式により認証をチェックしている。
このチェックで、前述のチェックが破られた場合でも偽実行ファイルの実行は防ぐことが出来る。

仮身のチェック(サイン)は ecdsa-160bits、実行ファイルのチェックは rsa-2048bits の
電子署名を使い二重チェックを行っている。
セキュリティの分野で絶対はないが、実用上安心できる強度・安全性だと考えてる。

逆に、perfect dark を不正に改造した場合、これらの認証コードを改変している可能性が高いため、
改造した perfect dark の使用は非常に危険である。
11投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時05分06秒
<匿名性についての考察>
perfect dark は様々な仕組みにより匿名性の向上を計っているが、
ここでは逆に匿名性を破る立場から、perfect dark の匿名性について考察した。
まずは言葉の定義を下に挙げる。

被攻撃者:ある特定の情報を持ち、攻撃者により匿名性を破ろうとする行為を受ける者。
匿名性を破る:特定の情報と特定の人物の関連性を "かなり" 高い確率で証明すること。
攻撃者:匿名性を破ろうとする行為を行う者。perfect dark の思想・概念・ソースコードを完全に理解し、
perfect dark を自由に改変し、ネットワークを観察できる能力を持つと仮定する。

前置きとして、前述した 低レベルでの匿名性・中レベルでの匿名性の向上の処理により、
100%の確率で匿名性を破ることは不可能だ。
そのため、匿名性を "かなり" 高い確率で破ることができるかどうかを、それぞれの場合に分けて考察した。
12投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時05分28秒
コピペ厨か
ツマラン
13投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時05分34秒
1. ボード
ボードのアップロードが完了すると、ボードはダウンロード登録されるが、これは通常のダウンロード登録と同じである。
つまり、ボードはアップロードが終わるとすぐに作成者の手から離れ、dht+du に移される。
作成者の痕跡は全くないため、作成者の匿名性は極めて高いと考えている。
14投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時05分55秒
次にメッセージの投稿者の匿名性だが、perfect dark ではメッセージが投稿されると、
メッセージは周囲の接続している perfect dark に拡散される。
拡散されたメッセージは、dht+du のボード所持者に送られ、投稿が完了する。
メッセージは暗号化されており、ボード所持者に届いて初めて復号化される。
15投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時06分16秒
攻撃者がメッセージの投稿者の匿名性を破るには、
@被攻撃者に頻繁に接続し、被攻撃者によるメッセージの拡散をキャッチする。
Aメッセージの復号のために、ボードの情報を前もって取得しておく。
Bボードの情報を使って、メッセージを復号化する。
上記の手順を踏む必要があるが、
@のメッセージの拡散は多段中継されており、1次発信者の特定は困難である。
攻撃者がボード所持者になりすます可能性もあるが、メッセージは拡散しているため、
なりすました所で投稿者の特定の難度は変わらない。
攻撃者は長期間被攻撃者を観察し、拡散されたメッセージを解読することにより
ある程度の確率で投稿者を推測することはできるかもしれない。
しかしそれは投稿者の特定にはほど遠いだろう。
総じて、メッセージの投稿者の匿名性はかなり高いと考えている。
16投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時06分39秒
最後に、ボードの管理者(ボードを作成したサインを持っている者)の匿名性だが、
ボードの管理情報は拡散されず、perfect dark 同士がボードの情報を交換したときのみ管理情報も交換される。
ボードの管理情報が十分拡散されたときはボードの管理者を特定することは難しい。
逆に言うと、管理情報の拡散が不十分なときは匿名性の低下は免れない。
17投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時06分58秒
攻撃者が、被攻撃者を注意深く観察し、管理情報の更新が被攻撃者により行われることを長期間観察すれば、
一定の確率で管理者を特定することは可能である。
しかし、管理情報は被攻撃者の他に、dht+du のボード所持者、ボードのダウンロード登録者も
共有しており、被攻撃者により管理情報が更新されたことを証明することはかなり難しい。
また、管理者であっても、管理情報の更新が行われなければ他のボードのダウンロード登録者と同じに見える。

つまり管理者の匿名性が低下するのは、ボードの管理を頻繁かつ長期間行い、それが被攻撃者によって長期間観察された場合である。
それ以外の場合では、管理者の匿名性は問題のないレベルだと考えている。
18投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時07分19秒
用語の説明
ボード作成者:ボードをアップロードした人。
ボード所持者:ボードの情報を所持している人。dht+du により自動で割り当てられる。本人が意識することはない。
ボード管理者:ボードを作成したサインを持っている者。
メッセージの投稿者:メッセージを投稿した人。
ダウンロード登録者:ボードをダウンロード登録した人。
19投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時07分41秒
<オープンソース>
perfect dark は当初よりクラック対策がほとんど施されていない。
これは、クローズドシステムにすることにより匿名性の維持を計るのではなく、
アーキテクチャ上の工夫や技術的な努力により、perfect dark が解析・改変されても
ネットワークの匿名性・効率性を維持できるようにする、という思想に基づいているためである。

ソースコードを公開しオープンシステムにする事による弊害には、
1. 改変によるフリーライド版(ダウンロードのみ可能なバージョン)の出現。
フリーライド版が蔓延することによる、ネットワークの結果的な衰退。
2. 改変により、ネットワークの利便性を低下させるいたずらが容易になる(ゴミファイルの流布など)。
3. perfect dark ネットワークを詳しく解析することで、匿名性が破られる可能性がある。

以上のことが考えられるが、仮に現在 perfect dark をオープンシステムにしても
上記の事項が大きな問題にならない程度の実装にはなっていると考えている。
しかし、匿名性のさらなる向上にまだ改良の余地があること、システムに脆弱性がある可能性があることから、
現在 perfect dark はオープンシステムにはなっていない。

将来これらの問題が解決できたら、適切な時期に perfect dark のソースコードを公開し、
perfect dark をオープンシステムにする予定である。
20投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時08分19秒
おしまい
21投稿者:ヾ(゚д゚)ノ゛バカー  投稿日:2009年07月18日(土) 04時13分36秒
なんちう
無駄
投稿者 メール  
(゚Д゚) <