2017-10-04 14 views
0

boost::asioライブラリは、boost::asio::ssl::streamデコレータクラステンプレートでソケットオブジェクトをラップすることにより、ソケット上でSSL暗号化されたトラフィックをサポートします。たとえば:tcp::socketboost :: asio :: ssl :: stream :: next_layer()を読み書きすると、SSLの復号化/暗号化をバイパスできますか?

boost::asio::ssl::stream<boost::asio::ip::tcp::socket> sslSocket; 

一部の操作はssl::streamによってサポートされていません。 ssl::stream::next_layerメソッドを呼び出すと、ラップされたオブジェクトへの参照が返され、この方法はssl::streamでサポートされていないため、ラップされたオブジェクトに対して直接操作を実行できます。

ラップされたソケットオブジェクトに直接読み書き操作を実行すると、SSLの復号化と暗号化をバイパスし、正しいSSLの動作のためにはsslSocketの読み取りと書き込みは、ssl::streamオブジェクトの上に直接実行する必要があります。

この権利はありますか、ラップされたオブジェクトに対して自由に読み書き操作を実行できますか?

答えて

1

下位のソケットを使用すると暗号化をバイパスするだけでなく、すべてのプロトコルがバイパスされます。ハンドシェイク、交渉、サイドチャネル、キープアライブなどを含む。

実際に動作する保証はありません。あなたが最初にSSL操作を初期化する前に基底のソケットを使用しているときだけ動作することが期待できます。

それ以外は、opensslによって管理されているソケットのファイル記述子にランダムなデータを書き込むようなものです。

関連する問題