ECDHRSA, ECDHE-RSA, ECDHE- ECDHE-PSK
4.2 プロトコル・サポート
wolfSSLはSSL3.0, TLS(1.0, 1.1および1.2)およびDTLS(1.0と1.2)をサポートしま す。ユーザは以下の関数のうちの一つを利用して使用するプロトコルを容易に選択するこ とができます(クライアントまたはサーバとして)。wolfSSLは、セキュリティー上問題 があるためSSL2.0はサポートしていません。以下のクライアントおよびサーバ関数は
OpenSSL互換レイヤーを利用する場合、若干違いがあります。OpenSSL互換関数につい
ては、ユーザ・マニュアルの第13章を参照ください。
4.2.1 サーバ関数
wolfDTLSv1_server_method(void); /*DTLS 1.0 */
wolfDTLSv1_2_server_method(void); /*DTLS 1.2 */
wolfSSLv3_server_method(void); /* SSL 3.0 */
wolfTLSv1_server_method(void); /* TLS 1.0 */
wolfTLSv1_1_server_method(void); /* TLS 1.1 */
wolfTLSv1_2_server_method(void); /* TLS 1.2 */
wolfSSLv23_server_method(void); /* SSLv3 - TLS 1.2のうち利用可能な最も高いバージョ ンを利用 */
wolfSSLはwolfSSLv23_server_method()関数を利用して堅牢なサーバ・ダウングレードをサポートしま す。詳細は2.3を参照してください。
4.2.2 クライアント関数
wolfDTLSv1_client_method(void); /*DTLS 1.0 */
wolfDTLSv1_2_client_method(void); /* DTLS 1.2 */
wolfSSLv3_client_method(void); /* SSL 3.0 */
wolfTLSv1_client_method(void); /* TLS 1.0 */
wolfTLSv1_1_client_method(void); /* TLS 1.1 */
wolfTLSv1_2_client_method(void); /* TLS 1.2 */
wolfSSLv23_client_method(void); /*SSLv3 - TLS 1.2のうち利用可能な最も高いバージョ
© 2004 – 2016 wolfSSL, Inc.
57
ンを利用*/
wolfSSLはwolfSSLv23_client_method()関数を利用して堅牢なクライアント・ダウングレードをサポート します。詳細は2.3を参照してください。
これらの関数の利用方法の詳細は本マニュアルの”第三章:使用方法”参照してください。また、
SSL3.0, TLS1.0, 1.1, 1.2およびDTLSの比較についてはユーザ・マニュアルのAppendix Aを参照 してください。
4.2.3 堅牢なクライアントおよびサーバ・ダウングレード
wolfSSL クライアントおよびサーバは双方とも堅牢なバージョン・ダウングレード機能を 持っています。もし、ある特定のプロトコル・バージョンのメソッドがどちらかの側で使 用されていると、そのバージョンだけがネゴシエートされるか、エラーが返却されてしま います。たとえば、クライアントが TLSv1 を使用していて、SSLv3のみのサーバにコネ クトしようとすると失敗となってしまいます。同じように、TLS1.1 にコネクトしようとし ても失敗となってしまいます。
この問題を解決するために、wolfSSLv23_client_method()関数を使用するクライアントは サーバ側でサポートされているもっとも高いプロトコル・バージョンを利用し、必要なら ば SSLv3 までダウングレードします。この場合、クライアントは SSLv3 から TLSv1.2 が動 作しているサーバにコネクトすることができます。長年セキュリティー上問題があるとさ れる SSLv2 にだけはコネクトすることができません。
似たように、wolfSSLv23_server_method()を使用するサーバは SSLv3 から TLSv1.2 のプロ トコル・バージョンをサポートするクライアントを取り扱うことができます。wolfSSL サ ーバはセキュリティー上問題のある SSLv2 からのコネクションについては受け入れませ ん。
4.2.4 IPv6 サポート
IPv6対応で組込みSSLを利用したいユーザは、wolfSSLがIPv6サポートかどうか疑問 に思われているかもしれません。答はYes。wolfSSLはIPv6上で動作します。
© 2004 – 2016 wolfSSL, Inc.
58
wolfSSLはIP中立に設計されており、IPv4でもIPv6でも動作しますが、現行のテスト アプリケーションではIPv4をデフォルトとしています(他の多くのシステムと同様 に)。テスト・アプリケーションをIPv6に変更するには、wolfSSLビルド時に --enable-ipv6オプションを使用してください。
IPv6に関する詳しい情報は:http://en.wikipedia.org/wiki/IPv6
4.2.5 DTLS
上のリストに挙げたように、wolfSSLはクライアント、サーバ両方のDTLS(「データグ ラム」TLS)をサポートします。現在のサポートバージョンはDTLS1.0です。
TLSプロトコルは(TCPのように)信頼性のある媒体におけるセキュアなトランスポー ト・チャネルを提供するよう設計されました。アプリケーション層のプロトコルが(SIP や各種ゲーム・プロトコルのように)UDPトランスポートを使用して開発されはじめる に従って、通信遅れに対して敏感なアプリケーションのための通信セキュリティーを提供 する方法に対するニーズが高まってきました。そのようなニーズがDTLSプロトコルの誕 生を導きました。
多くの人々はTLSとDTLSの違いはTCPとUDPと同様だと理解していますが、これは 誤解です。UDPは(TCPと比べ)ハンドシェイク無し、通信切れサポート無し、または パケットロスに対する遅れ無しなどの利点があります。一方、DTLSは拡張されたSSLハ ンドシェイク、通信切れに対するサポート、また、ハンドシェイクに対してTCPのよう な挙動を実現しなければなりません。つまり、DTLSはUDPが信頼できるコネクション と引き換えに提供する利点を無効にしてしまっています。
--enable-dtls ビルド・オプションを使用して wolfSSL をビルドすることで、
DTLS を有効化することができます。
4.2.6 Lightweight Internet Protocol (lwIP)
© 2004 – 2016 wolfSSL, Inc.
59
wolfSSLはそのまま変更なしでLightweight Internet Protocol (lwIP)をサポートします。
このプロトコルを使用するためには単にWOLFSSL_LWIP を定義するだけです。また は、 settings.h ファイルにて次の行のコメントを外します。
/*#define WOLFSSL_LWIP*/
lwIPはフルのTCPスタックを提供しながらRAM消費量の削減にフォーカスしていま す。このフォーカスはwolfSSLのSSL/TLSにおけるフォーカスと理想的なマッチングで す。