そ の よ う な 場 合 に、 最 初 の フ ル ハ ン ド シ ェ イ ク で 鍵 を 共 有 し て い て、 そ の 鍵 に よ る
「
事 前 共 有 鍵」
機 能 で、 よ り オー
バー
ヘ ッ ド の 少 な い 安 全 な 通 信 が 可 能 に な り ま す。ふうっ
Copyright 2017, wolfSSL Inc. All rights reserved.
Wikipedia TLS
Implementafons
こ の 表 は
wi ki ped ia
か ら 引 用 さ せ て い た だ い て い る
も の で す が、 現 在 の 世 界 各 社 の
TLS . 1
の3
実 現 状 況で す。 少 し 細 か い で す が、 サー バ 向 け の 各 社 製 品 が
概 ね 提 供 開 始 し て い る の に 対 し、 組 込 み 系 に 関 し て は
、 唯 一 弊 社
wo lfS SL
が 世 界 に 先 駆 け て 提 供 開 始 し て い ま す
。
wolfSSL の TLS 1.3
最 後 に こ の 機 会 に
wo lfS SL
の
TLS
. 1
機3
能 に つ 少 し ご 紹 介 さ せ て い た だ き ま す。
ダウンロード
wolfssl.jp サイト
wo lfS SL
の
TLS
. 1
機3
能 は、 み な さ ま の パ ソ コ ン、 マ イ コ ン の 上 で も 簡 単 に ご 評 価 い た だ く こ と が
で き ま す
。
ダウンロードフォーム
wolfSSL
を選択アルファベットで 記入お願いします
wo lfssl .jp
サイ ト で、 簡 単 な ダ ウ ン ロー ド フ 記 入 い た だ い け ば、 製 品 版 と ま っ た く 同 じ 無 償 で ダウ ン ロー ド い た だ く こ と が で き
wo lfS SL
は 各 社 の
ID E,
開 発 環 境 に 対 応 し てTLS
. 1
に3
関 す るTLS
. 1
の3
変 更 点、 追 加 点 は コ マン ド ベー ス で 比 較 し た ほ う が わ か か と 思 い ま す。 こ こ で は コ マン ド ベー ス で し ま す。
ダウンロードファイルを解凍
$ unzip wolfssl-‐3.12.2.zip
$ cd wolfssl-‐3.12.2
デフォルトのビルド
$ ./configure
$ make
サンプルサーバとクライアントの実行
$ ./examples/server/server
$ ./examples/client/client 127.0.0.1
デフオルトのビルド
サンプルサーバ、クライアントの実行
ダ ウ ン ロー ド し た フ ァイ ル を 適 当 な ディ レ ク ト リ に お き
U nzi p
し ま す。 デ フォ ル ト の ビ ル ド の 場con figu re
合、 コ マン ド で
Mak efi le
を 作 り
m ak e
、コ マン ド
で ビ ル ド し ま す。 こ れ で
wo lfS SL
、ライ ブ ラ リ と 同 時
に 簡 単 な
te st
や ベ ン チ マー ク プ ロ グ ラ ム、 サ ン プ ルサー
バ、 ク ライ ア ン トプ ロ グ ラ ム が ビ ル ド さ れ ま す
。 ビ ル ド が 終 わ っ た ら、 サ ン プ ル サー バ と ク ライ ア ン ト を 別 々 の ウィ ン ド ウ で 実 行 し て み ま す
。 ク ライ ア ン ト の アー ギ ュ メ ン ト は サー バ の
IP
ア ド レ ス、 こ の 場 合lo cal ho st
、を 指 定 し ま し ょ う
。 サ ン プ ル ク ライ ア ン ト と サー バ の 間 で
TLS
セ ッ シ ョ ン を 確 立 し て 1 往 復 の 簡 単 な メッ セー ジの や り と り を し て 終 了 し ま
す
。
ダウンロードファイルを解凍
$ unzip wolfssl-‐3.12.2.zip
$ cd wolfssl-‐3.12.2
デフォルトのビルド
$ ./configure –enable-‐tls13
$ make
サンプルサーバとクライアントの実行
$ ./examples/server/server – v 4
TLS1.3 オプション指定のビルド
サンプルサーバ、クライアントの実行
TLS1.3
の有効化オプションConfig ur e
コ マン ド で T L S
. 1
オ3
プ シ ョ ン 指 ビ ル ド す る と T L S. 1
機3
能 が 組 み 込 ま れ ま サ ン プ ル ク ライ ア ン ト を 実 行 さ せ る と き、 プ ロ バー ジ ョン の オ プ シ ョ ン–v
を4
指 定 す る と T L S. 1
で3
サー バ を 呼 び 出 し ま す。こ れ は、 サ ン プ ル サー
バ、 ク ライ ア ン ト コ マン ド を、 ま ず
TLS
. 1
で2
、 実 際 に 実 行 さ せ て み た ス ク リー ン シ ョ ッ ト で す。 サー
バ、 ク ライ ア ン ト、 そ れ ぞ れ の ウィ ン ド ウ に 使 わ れ た プ ロ ト コ ル の バー ジ ョ ン、
暗 号 ス イー ト
や 受 け 取 っ た メ ッ セー ジ が 表 示 さ れ ま す。
次 は
. 1
で3
す。ご 覧 の よ う に、 プ ロ ト コ ル の
バー ジ ョ ン が
. 1
に3
な り 対 応 す る 暗 号 ス イー 表 示 さ れ る だ け で、 見 た 目 は ほ と ん ど 変 わ りW ire sh ar k
の よ う な も の で パ ケ ッ ト キ ャ プ チ ャ し て い た だ くと、
ご 覧 の よ う に
. 1
の2
場 合 は ハ ン ド シ ェ イ ク と ア プ リ ケー シ ョ ン デー タ の や り 取 り が 見 え ま す。
. 1
の3
場 合 は、ご 覧 の よ う に
Cli en t He llo /S erv er
後 は 暗 号 化 さ れ て い る た め に 内 容 を 見 る こ と で き ま せ ん。Copyright 2017, wolfSSL Inc. All rights reserved.
Cli en t He llo
の 中 身 を み て い た だ く と、 ご 覧 の よ う に 暗 号 ス イー ト リ ス ト に
TLS
. 1
独3
自 の も の が 含 ま れ て い る こ と が わ か り ま す。
method = wolfTLSv1_2_client_method(); /*
プロトコルバージョン指定*/
Ctx = wolfSSL_CTX_new(method); /*
コンテクストディスクリプタ確保*/
ssl = wolfSSL_new(ctx); /*
セッションディスクリプタ確保*/
wolfSSL_connect(ssl); /* TLS
セッション確立*/
wolfSSL_write(ssl, buff, size); /*
メッセージ送信*/
wolfSSL_read(ssl, buff, size); /*
メッセージ受信*/
wolfSSL_free(ssl); /* TLS
セッション解放*/
通常のクライアント処理イメージ
次 に 関 数
API
で すwo lfS SL
が、 の 通 常 の ク ライ ア ン ト の 処 理 で は の よ う な 関 数 を 使 っ て サー バ 側 と 通 信 す な っ て い ま す
。 ま ず は、 事 前 の ディ ス ク リ プ タ を 確 保。 次 に、 実 際 に サー バ と の ハ ン ド シ ェ イ ク セ ッ シ ョ ン が 確 立 し た ら、 サー バ と 目 的 ジ の 送 受 信 を し ま す。 最 後 に セ ッ シ ョ ン と そ の 他 リソー
ス を 解 で す。
method = wolfTLSv1_3_client_method(); /*
プロトコルバージョン指定*/
Ctx = wolfSSL_CTX_new(method); /*
コンテクストディスクリプタ確保*/
ssl = wolfSSL_new(ctx); /*
セッションディスクリプタ確保*/
wolfSSL_connect(ssl); /* TLS
セッション確立*/
wolfSSL_write(ssl, buff, size); /*
メッセージ送信*/
wolfSSL_read(ssl, buff, size); /*
メッセージ受信*/
wolfSSL_free(ssl); /* TLS
セッション解放*/
wolfSSL_CTX_free(ctx); /*
コンテクスト解放*/
TLS1.3 のクライアント処理イメージ
TLS1.3 指定
TLS
. 1
を3
使 い た い 場 合 は、 基 本 的 に は、 最 初 の プ ロ ト コ ル の バー ジ ョ ン 指 定 を 1. 3 と 指 定 し て い た だ く だ け で す が、
l TLS
コネクト、アクセプト(TLS1.2
へのダウングレードあり)int wolfSSL_connect_TLSv13(WOLFSSL* ssl);
int wolfSSL_accept_TLSv13(WOLFSSL* ssl);
l
セッションチケットを送らないint wolfSSL[_CTX]_no_fcket_TLSv13(WOLFSSL[_CTX]* ctx/ssl);
int wolfSSL_no_fcket_TLSv13(WOLFSSL* ssl);
l
セッション再開時DHE
なし指定int wolfSSL[_CTX]_no_dhe_psk(WOLFSSL[_CTX]* ctx/ssl);
l
鍵の更新int wolfSSL_update_keys(WOLFSSL* ssl);
l
ハンドシェイク後の認証int wolfSSL[_CTX]_allow_post_handshake_auth(WOLFSSL[_CTX]* ctx/ssl);
int wolfSSL_request_cerfficate(WOLFSSL* ssl);
も ち ろ ん そ の 他 に
TLS
、1. 3 で 追 加 さ れ た 機 利 用 す る た め に、 機 能 ご と に ご 覧 の よ う な 関 そ れ ぞ れ に 用 意 さ れ て い る の で、 追 加 機 能 を す る 場 合 は 必 要 に 応 じ て こ れ ら を 使 い ま す
こ
こ ま で ご 覧 い た だ い た 様 に
wo lfS SL
、の
TLS
. 1
能 は、 ア プ リ ケー シ ョ ン 側、 ユー ザ 側 と し て ず は、 こ れ ま で の 使 い 方 と ほ と ん ど 変 え る こ く、 そ の ま ま の 形 で 使 っ て い た だ き、 必 要 に 順 次 追 加 し て い く こ と が で き る、 と い う こ と わ か りい た だ け た か と 思 い ます
。
Copyright 2017, wolfSSL Inc. All rights reserved.
性能の向上
安全性の向上
1.2
1.1
TLS1.0
SSL3
1.3
さ て こ こ ま で
TLS
、. 1
に3
お け る 安 全 性 を 高 め つ つ、 性 能、 ス ルー プ ッ ト を 向 上 さ せ る 施 策 に つ い て ご 紹 介 し て き ま した
。
TLS1.3 は実質 2.0 の大整理
安全性と性能の両面で改善 性能の改善は、
まず、サーバー側での普及を加速
クライアント側はそれに追従するかたち
しばらく、 1.2 との併存期間はあるものの 普 及のスピードは従来より、ずっと速そ
今 日 は
Io T
、 ネ ッ ト ワー ク セ キ ュ リ ティ の 新 ジ ョ ンTLS
、. 1
に3
つ い て、 安 全 性 と 性 能 の 両 改 善 が あ る こ と。 そし て そ れ が、 ま ず サー バー 及 を 促 進 し、 ク ライ ア ン ト 側 も そ れ に 追 従 す ま っ て い く だ ろ う こ と を お 話 し ま した
。 も ち ろ ん、 こ れ か ら し ば ら く の 間、
併 存 期 間 も の の、 普 及 の ス ピー ド は 従 来 よ り も だ い ぶ 速 そ う で す