DTLS1.3でEarly Data(0-RTTデータ)をサポート

wolfSSLでのDTLS1.3実装では、Early Dataまたは0-RTT Dataをサポートします。Early Dataは、クライアントが最初のClientHelloメッセージとともに送信できるアプリケーション データです。アプリケーション データを送信するまでに必要な往復時間が0であるため、0-RTTデータとも呼ばれます。DTLS1.3でEarly Dataを利用するには、サーバーはPSK接続を使用するときにCookie交換を省略する必要があります。Early Dataを使用したハンドシェイクを次の図に示します:

        Client                                      	Server
    	ClientHello
    	+ early_data
    	+ key_share
    	+ psk_key_exchange_modes
    	+ pre_shared_key
    	Early Data       	-------->
                                                    	ServerHello
                                               	      + pre_shared_key
                                                   	+ key_share
                                                      EncryptedExtensions
                                                  	+ early_data
                                                     	Finished
                            	<--------   	      Application Data
    	EndOfEarlyData
    	Finished          	-------->
    	Application Data  	<------->    	      Application Data

cookie交換を行わずにwolfSSLでDTLS1.3 Early Dataを使用するには、次の様なサーバー変更が必要です:

  • WOLFSSL_DTLS13_NO_HRR_ON_RESUME を定義して wolfSSL をコンパイル
    • configure スクリプト使用時にはCPPFLAGS=-DWOLFSSL_DTLS13_NO_HRR_ON_RESUME を追加
    • user_settings.hを使用する場合には、#define WOLFSSL_DTLS13_NO_HRR_ON_RESUME を追加 
  • WOLFSSLオブジェクトでwolfSSL_dtls13_no_hrr_on_resume(ssl, 1)を呼び出して、再開時のCookie交換を無効にします。
  • 通常の接続と同様に続行

ご質問がある方はinfo@wolfSSL.jp までご連絡ください。

原文:https://www.wolfssl.com/support-for-dtls-1-3-early-data/