2011-02-09 13 views
0

SSLは、私がやりたいことでかなり膨らんでいるようですが、OpenSSL(NSSも使用可能かもしれません)に対する情熱的な憎悪があります。 RPC /暗号化されたRPC /イベントストリーム/暗号化されたイベントストリームに使用される2つのノード間でTCPチャネルを開く必要があります。私はプロトコルバッファを使用して、異なるトラフィックソースを定義し、多重化しています。RFC /アドバイス:セキュア/セキュアでないrpc /イベントストリームプロトコルの設計

私はSSLを使い始めるのは嫌です。暗号化されたイベントストリームと暗号化されたRPCを暗号化および復号化するために、認証された安全な鍵の確立(認証されたdiffie-hellman)と、おそらくブロック暗号ベースのストリームオブジェクトが必要です。

最初に考えたのは、SSL実装からビルドすることで、コーディング時間と設計時間を節約できました。ただし、SSL実装からソケットハンドルを取得し、暗号化されていない交換や暗号化された交換に使用できます。しかし、これはおそらく醜い実装に終わるでしょう。これを行うことがわかっているのは、SSLプロトコル(つまり、TCP状態とSSL状態の間の強い結合)と互換性がない可能性があるからです。

複数のソケットを開くことで、コーディング時間とデザイン時間を節約できました。しかし、私たちが知っているように、マルチソケットプロトコルの設計は悪いことです。

3つ目の考えは、すべてを暗号化するだけですが、問題のサービスは高性能イベントスイッチの機能を果たし、同じマシン上で動作するデータベースサーバーも備えています。このアプローチのオーバーヘッドは、トラフィックの大部分が平文であるため満足しません。

だから、これらのアプローチは私にとって満足のいくものではないようです。したがって、私は、cryptoppとboost :: asioを使用して私自身のソリューションをロールし、私自身のプロトコルを構築することができるという結論に達しました。私はかなり能力のあるシステムプログラマであり、エンジニアは暗号化技術を適用することを理解しています。

私はすべて再利用しています。この場合はSSLを再利用したいと考えていますが、できないと思います。あなたが似たような状況であなたの経験から私に与えることができるアドバイス(あなたはネットワークプロトコルを設計していなければなりません。私の最大の印象を与えるアドバイスは、ティックを取得します。:

p.s.、私のアプリケーションはまた、私はcryptoppを引っ張っているいくつかのエキゾチックな暗号化を実行する必要があります。

+0

"肥大化"という言い方はわかりませんが、SSLを再発明しようとしているようです。実際、あなたはあなたの質問に多くの仮定をしています。実際には、すでに接続されているTCP接続の上にSSL接続をレイヤーすることができます。多くのSSLアップグレードプロトコルは、このような動作に依存しています。 –

答えて

0

確かにSSLを再利用することができます.TCP状態との間に悪影響がありません。あなたが好きな基本的なストリームにSSLを使うことができます。唯一の依存関係は双方向でなければならないということです。

これを行う最も簡単な方法は、送信または受信する暗号化側のデータがある場合に、SSLライブラリによって呼び出される独自の送受信機能を提供できるようにするSSLライブラリを使用することです。次に、独自のプロトコル内の特別なフレーム内にSSLデータをラップすることによって、これらの機能を実装します。

(これはOpenSSLライブラリがどのようにこれを行うか、すなわちSSL_set_bio()の機能にしか慣れていませんが、他のSSL実装でも同様のことが可能です)。

プロトコルの鍵合意部分の計算のオーバーヘッドは、SSLまたは独自のロールで行われても、実際のブロック暗号の暗号化/復号化をはるかに上回るため、「すべて暗号化」はあなたが期待しているほど多くの損失があります。

+0

オープンされたソケットは永続的であるため、鍵交換のオーバーヘッドは最小限に抑えられ、ノードは常に安全なネットワーク内に存在します。鍵交換、安全なチャネル、単純な認証(安全なチャネル上の平文パスワードで十分です)だけです。 SSLソケットとTCPソケットが疎結合しているという洞察は大歓迎です、ありがとうございます。私はまだSSLを再使用しているのか、自分自身を使用しているのか、 Boost :: asioにはopensslのサポートがあり、ほとんどのマシンにはSSLがインストールされています。私はちょうどcryptopp + SSLの依存性がかなり重いので、かなり有罪だと感じています。 –

関連する問題