メインコンテンツまでスキップ

5. Examples (例)

5. Examples (例)

図 6、7、8 は、交換の例を示しています。前方秘匿性を提供する Diffie-Hellman 交換を使用する TLS 暗号スイートは、生の公開鍵で使用できますが、このドキュメントでは、後続のメッセージフローとのそのレベルでの情報交換は示されていません。

5.1. TLS Server Uses a Raw Public Key (TLS サーバーが生の公開鍵を使用する)

このセクションでは、TLS クライアントがサーバーから生の公開鍵を受信して検証する能力を示す例を示します。この例では、クライアントはサーバーによって送信された他の証明書タイプを処理できないため、非常に制限されています。また、TLS レイヤーにサーバーに送信できる資格情報がないため、client_certificate_type 拡張を省略します。したがって、(1) に示すように、クライアントは server_certificate_type 拡張に生の公開鍵タイプのみを入力します。

TLS サーバーは client hello を受信すると、拡張を処理します。生の公開鍵があるため、(2) で SubjectPublicKeyInfo 構造体を Certificate ペイロード (3) に配置することを選択したことを示します。

クライアントは、この生の公開鍵を TLS ハンドシェイクで使用し、DANE などの帯域外検証手法と一緒に検証します。

  client_hello,
server_certificate_type=(RawPublicKey) // (1)
->
<- server_hello,
server_certificate_type=RawPublicKey, // (2)
certificate, // (3)
server_key_exchange,
server_hello_done

client_key_exchange,
change_cipher_spec,
finished ->

<- change_cipher_spec,
finished

Application Data <-------> Application Data

Figure 6: Example with Raw Public Key Provided by the TLS Server (Figure 6: TLS サーバーによって提供される生の公開鍵の例)

5.2. TLS Client and Server Use Raw Public Keys (TLS クライアントとサーバーが生の公開鍵を使用する)

このセクションでは、TLS クライアントと TLS サーバーが生の公開鍵を使用する例を示します。これは、スマートオブジェクトネットワーキングで想定されているユースケースの1つです。この場合の TLS クライアントは、TLS で使用するための生の公開鍵で構成されている組み込みデバイスであり、サーバーから送信された生の公開鍵を処理することもできます。したがって、(1) でこれらの機能を示します。前に示した例と同様に、サーバーはクライアントの要求を満たし、server_certificate_type ペイロード (2) の RawPublicKey 値を介してこれを示し、Certificate ペイロードの生の公開鍵をクライアントに返します ((3) を参照)。TLS サーバーはクライアント認証を要求するため、certificate_request (4) を含めます。(5) の client_certificate_type ペイロードは、TLS サーバーが生の公開鍵を受け入れることを示します。生の公開鍵が事前にプロビジョニングされている TLS クライアントは、それを Certificate ペイロード (6) でサーバーに返します。

client_hello,
client_certificate_type=(RawPublicKey) // (1)
server_certificate_type=(RawPublicKey) // (1)
->
<- server_hello,
server_certificate_type=RawPublicKey // (2)
certificate, // (3)
client_certificate_type=RawPublicKey // (5)
certificate_request, // (4)
server_key_exchange,
server_hello_done

certificate, // (6)
client_key_exchange,
change_cipher_spec,
finished ->

<- change_cipher_spec,
finished

Application Data <-------> Application Data

Figure 7: Example with Raw Public Key provided by the TLS Server and the Client (Figure 7: TLS サーバーとクライアントによって提供される生の公開鍵の例)

5.3. Combined Usage of Raw Public Keys and X.509 Certificates (生の公開鍵と X.509 証明書の組み合わせ使用)

このセクションでは、生の公開鍵と X.509 証明書を組み合わせた例を示します。クライアントはクライアント認証に生の公開鍵を使用し、サーバーは X.509 証明書を提供します。この交換は、クライアントが X.509 証明書、OpenPGP 証明書、またはサーバーによって提供される場合は生の公開鍵を処理する能力を示すことから始まります。RawPublicKey 値は server_certificate_type ベクトルの他の値よりも前にあるため、生の公開鍵が優先されます。さらに、クライアントはクライアント側認証用の生の公開鍵を持っていることを示します ((1) を参照)。サーバーは (3) で X.509 証明書を提供することを選択し、(2) でその選択を示します。クライアント認証の場合、サーバーは (4) で生の公開鍵フォーマットを選択したことを示し、(5) でクライアントに証明書を要求します。TLS クライアントは、TLS サーバー hello メッセージを受信して処理した後、(6) で生の公開鍵を提供します。

client_hello,
server_certificate_type=(RawPublicKey, X.509, OpenPGP)
client_certificate_type=(RawPublicKey) // (1)
->
<- server_hello,
server_certificate_type=X.509 // (2)
certificate, // (3)
client_certificate_type=RawPublicKey // (4)
certificate_request, // (5)
server_key_exchange,
server_hello_done
certificate, // (6)
client_key_exchange,
change_cipher_spec,
finished ->

<- change_cipher_spec,
finished

Application Data <-------> Application Data

Figure 8: Hybrid Certificate Example (Figure 8: ハイブリッド証明書の例)