GNUnet
GNUnetで共有されたファイルはECRS (An Encoding for Censorship-Resistant Sharing) によりエンコードされる。fsモジュールのidentifierはchk、sks、ksk、locのいずれか一つにより構成され、スラッシュとカテゴリ特有値を伴う。
chkはファイルを特定する。典型的には: gnunet://fs/chk/[ファイルハッシュ、0-9A-Vの値を使用].[クエリハッシュ、0-9A-Vの値を使用].[バイト値でのファイルサイズ]
sksは名前空間内のファイルを特定する。典型的には: gnunet://fs/sks/NAMESPACE/IDENTIFIER
kskは検索クエリを特定する。典型的には: gnunet://fs/ksk/KEYWORD[+KEYWORD]*
locは特定のマシン上での情報を特定する。典型的には: gnunet://fs/loc/PEER/QUERY.TYPE.KEY.SIZE
現時点の設計は匿名性、検閲への耐性のあるファイル共有を重視し、ユーザーに匿名ですべての種類の情報を送受信させるためのものである。GNUnetは共有されたファイルを自動的にGNU libextractorを使用しメタデータにより注釈する。
ファイル共有サービスはルーティングのクエリと返答にGNUnetの匿名プロトコルを使用する。転送されたクエリのメッセージはデータブロック等のコンテンツの検索に使用される。転送ノードの負荷状況により、メッセージはゼロまたは1以上のノードに転送される。ノードに負荷がかかっているときは近隣ノードからのリクエストを拒否し、ノード内部の信頼値が低下する。GNUnetの匿名プロトコル固有の機能としてユーザーは匿名化レベルを選択可能である。匿名化レベルは自分の通信を隠すための迂回通信回数を決定するものである。ユーザーは個別のアップロード、検索、ダウンロードのために毎回好きな匿名化レベルを設定できる。匿名化レベルゼロを選択することによることにより、非匿名で実IPを明らかにしたファイル共有も可能である。GNUnetのDHTインフラストラクチャーは非匿名が設定された場合のみ有効化される。