「パープル」I2P-C ++アプリケーションの世界への窓

公式のI2PはJavaで書かれていることが知られており、Javaはそれ自体が潜在的なユーザーを寄せ付けないため、ネットワークの極性を本来よりも低下させます。 さらに、Javaアプリケーションはリソースを非常に要求するため、弱いデバイスでI2Pを実行することは難しく、時には不可能です。 また、アフリカのJavaは同じJavaではなく、強力な暗号化のサポートは国によって異なるため、ECDSAへの大規模な移行を延期する必要がありました。
したがって、C ++でのI2Pの実装は常に緊急の課題でした。 多くの試みの中で、「Purple I2P」(Purple I2P)は現在最も成功しており、実用に適しています。 名前は、I2Pアイコン上のシャツの色によって決まり、公式のI2Pと区別します。色は赤で、このI2Pの実装を使用するアプリケーションのファミリを示します。 i2pdは汎用I2Pルーターです。


画像

以前に、このようなシステムを構築するために必要なコンポーネントを検討しました。 つまり、I2Pネットワークで動作するには、次の機能を実装するルーターが必要です。

個人データを交換する必要がある場合は、ルーター上で、 ここで説明する追加のプロトコルが必要な操作用のアドレスを配置する必要があります。 ただし、クライアントと対話するには、1回のデータ転送では十分ではありません。ローカルアドレスを管理し、リモートアドレスにアクセスできる必要があります。 公式のI2Pでは、これは個別の外部アプリケーションのセットとして実装されますが、i2pdではこれらのサービスが組み込まれています。 現在実装されています:
  1. HTTPプロキシ
  2. I2Pトンネル。ローカルマシンのTCPポートへのアドレスのマッピングです。
  3. SAMはコマンドラインインターフェイスです。 もっと詳しく考えてみましょう。


SAMプロトコル


SAM (Simple Anonymous Messaging)は長い間、C ++アプリケーションからのI2Pとの完全な相互作用に適した唯一のプロトコルでした。 より正確には、実際には同じ概念を実装するBOBがありますが、SAMほど一般的ではありません。
公式のI2Pが推奨するI2CPプロトコルは、低レベルのプロトコルであり、Javaで記述された外部ストリーム実装も使用するため、これらの目的にはほとんど使用されません。 現時点ではC ++バージョンはありません。 将来的に、i2pdからのストリームの実装を、I2CPを介して動作する別個のライブラリーの形式で配置することが計画されています。
SAMには、すぐに使用できるC ++ライブラリi2psamがあります。これは、暗号通貨がトラフィックを隠すために積極的に使用します。
欠陥と批判にもかかわらず、SAMは紫色のI2Pで最も重要なプロトコルです。SA​​Mとi2pdを使用する既存のC ++アプリケーションのバンドルにより、追加の変更なしにJavaの使用をすぐに停止できるためです。
最も人気のあるもの:
  1. I2pメッセンジャー
  2. iMule
  3. ビットコイン-I2P

一般に、プロトコルは、コマンドモードまたはデータ転送モードで動作するソケットを表すクライアントの観点から、その名前を完全に正当化します。 クライアントがソケットを削除すると、対応するI2Pコンストラクトが削除されます。 作業は、クライアントが指定したキーを使用してローカルアドレスを作成するか、ランダムに生成されたキーを使用して一時アドレスを作成することから始まります。 次に、このアドレスを使用して、リモートアドレスとの接続を確立するか、リモートアドレスからの次の着信接続を待つことができます。 その後、ソケットはデータ転送モードになります。
このようなインターフェイスは、外部ルーターを使用せずにAPIとして実装し、アプリケーションから直接使用でき、エンドユーザーにI2P設定の詳細を強制することなく、既成のソリューションとして配布できます。

実装予定


  1. Javaアプリケーションがi2pdを介して動作できるようにするI2CP
  2. より高速で信頼性の高いトンネルを構築するためのノードプロファイラー
  3. 更新可能なアドレス帳
  4. データグラム
  5. フラッドフィルモード


リリース0.1.0


実際、この記事の主なアイデアは、上記の機能を含むi2pdの最初の安定リリースがリリースされたことです。

Ubuntuのバイナリ:
launchpad.net/~i2p.packages/+archive/ubuntu/i2p

Debian用
deb.i2p2.no

他のすべてのプラットフォームの場合は、 こちらからソースからコンパイルします
Crypto ++およびboostライブラリが必要です。

Source: https://habr.com/ru/post/J240815/


All Articles