組み込み/iotデバイスを tls 1.3でセキュアにしよう...1 seminar wolfssl...
TRANSCRIPT
1
SeminarwolfSSL Japan合同会社エンジニア松尾 卓幸
2020年5月26日
GR-Rose/RX65NでSSL/TLSの クイックスタート
2
アジェンダ
1. TLSのしくみ
2. wolfSSLでTLS ダウンロードしてみよう
展開して構成をみてみよう
ビルドしてみよう(セルフコンパイル)
ソースを見てみよう
サンプルプログラムを動かしてみよう(セルフコンパイルのアプリ同志の通信)
3. Renesas e2 studioでサンプルプログラム
プロジェクトを作成してみる(クロスコンパイル)
PCとTLS通信してみる(GR-ROSEとPC上のアプリの通信)
パケットをみてみよう
4. Q&A
3
TLSのしくみ
4
IoT機器の通信
5
悪意の第3者
6
TLSの登場
Transport Layer Security
7
TLS の役割
1. なりすましの防止 - 通信相手を証明書によって検証
2. 秘匿性の提供 - データを暗号化して第3者の盗聴を防ぐ
3. データ改ざん防止 - ダイジェストにより第3者の改ざんを検出
8
TLS の進化
SSL3.0 TLS1.0 TLS1.2 TLS1.3 (RFC8446)2018/8
1995 2000
TLS1.1
2005 2010
既に使用が停止 安全で高速!
20202015
9
SSL/TLS
トランスポート層のセキュリティ
IP
TCP
TLS
Ethernet ネットワークインターフェース層
ネットワーク層
トランスポート層
アプリケーション層
TCP/IPの階層モデル
FTP HTTP
10
SSL/TLS
トランスポート層のセキュリティ
IP
TCP
TLS
Ethernet ネットワークインターフェース層
ネットワーク層
トランスポート層
アプリケーション層
TCP/IPの階層モデル
FTP HTTP
独自の通信プロトコルにも使える
11
wolfSSLでTLS
12
wolfSSLとは?
Application Data
1. C言語で記述されたTLSライブラリ
2. 組み込み製品に搭載実績多数
3. 多くのMPU / IDE / OSをサポート
13
wolfSSLのダウンロード
1. wolfSSL ダウンロードページへ
www.wolfssl.jp/download
2. お客様の情報を記入し
3. wolfSSL-4.4.0.zipを選択してダウンロード!
14
wolfSSLパッケージの構成
wolfSSL-4.4.0
testsuite
IDE 各IDE用プロジェクト/アプリ
examples サンプルアプリ
src wolfSSLソースファイル
テスト用アプリケーション
wolfssl ヘッダーファイル群
wolfcrypt 暗号化ライブラリ
certs 証明書データ
15
サンプルプログラムwolfSSLをビルドするとこれらサンプルも全て作成されるwolfSSL-4.4.0
wolfcrypt
benchmark
echoserver
examples
client
server
echoclient
TLS通信ベンチマーク
TLS通信クライアント側アプリ
TLS通信サーバー側アプリ
TLS通信エコークライアント側アプリ
TLS通信エコーサーバー側アプリ
暗号化ベンチマークbenchmark
暗号化テストtest
16
アプリケーションはどのように作る?
17
socket APIを使ったアプリケーションの構造application 対向application
fd = socket();
connect( fd, peer);
listen();
accept();
write( fd, data,.);
read( fd, buff,.);
read( fd, buff,.);
write( fd, data,.);
socket Lib
時間
18
対向application
listen();
accept();
TLS
wolfSSL を使ったアプリケーションの構造application
socket Lib
wolfSSL Lib
19
対向application
listen();
accept();
TLS
application wolfSSL Lib
wolfSSL_Init();ctx = wolfSSL_Ctx_new(..);
wolfSSL_CTX_load_verify_location(cert);
socket Lib
wolfSSLのセットアップ(証明書)
wolfSSL を使ったアプリケーションの構造
20
対向application
listen();
accept();
TLS
wolfSSL を使ったアプリケーションの構造application
fd = socket();connect( fd, peer);
wolfSSL Lib
wolfSSL_Init();ctx = wolfSSL_Ctx_new(..);
wolfSSL_CTX_load_verify_location(cert);
socket Lib
socketの作成と接続
21
対向application
listen();
accept();
TLS
wolfSSL を使ったアプリケーションの構造application
fd = socket();connect( fd, peer);
wolfSSL Lib
wolfSSL_Init();ctx = wolfSSL_Ctx_new(..);
wolfSSL_CTX_load_verify_location(cert);
socket Lib
wolfSSL_connect(ssl);wolfSSL_set_fd(ssl,fd);
TLSハンドシェーク開始
TLSハンドシェーク
22
対向application
listen();
accept();
TLS
wolfSSL を使ったアプリケーションの構造application
fd = socket();connect( fd, peer);
wolfSSL Lib
wolfSSL_Init();ctx = wolfSSL_Ctx_new(..);
wolfSSL_CTX_load_verify_location(cert);
socket Lib
wolfSSL_connect(ssl);wolfSSL_set_fd(ssl,fd);
TLSハンドシェーク
暗号化通信
wolfSSL_write();wolfSSL_read(); 暗号化通信
終了処理
終了処理
23
セルフコンパイル(PC上でビルド、PC上で動作)
アプリケーションを動かしてみる
24
Windows上でのビルド方法
VisualStudio
wolfSSLパッケージには VS用のプロジェクトファイルも同梱
• WSLは手軽にインストール可• ツールの追加が簡単
Autotools
Linux環境(WSL)
今日はこっちを使います
or
25
WSLのインストール方法(参考)
WSL
Autotools
Windows Subsystemfor Linux( MS提供)
Linux
Windows
Linuxを構築しソースもツールもLinux用を使う開発
12
3
4
26
PC上でwolfSSLをビルドする
1. Windows上にWSL(Windows Subsystem for Linux)を導入する
2. WSLターミナルを開いてmake 等のツールをインストール
3. 右のコマンドを実行
$ unzip wolfssl-4.4.0.zip$ cd wolfssl-4.4.0$ ./configure –enable_tls13$ make
27
サンプルアプリを動作させてみる
Ubuntu
WindowsPC
Ubuntu
examples/server/serverexamples/client/client
TLS1.2
28
デモンストレーション
wolfSSlの解凍 -> ビルド -> サンプルアプリ動作
をデモします
29
サンプルアプリ動作結果
サンプルclient
サンプルserver
TLSv1.2
30
クロスコンパイルしてみる(PC上でビルド、GR-ROSE上で動作)
31
GR-ROSEのクロスコンパイル環境 -H/W-
必要なハードウェア
1. GR-ROSE
2. Renesas E1 エミュレーター
3. Windows PC
4. E1接続ケーブル、LANケーブル
GR-ROSE(RX65N)
e2studioE1
wolfSSL WindowsPC
LAN
32
GR-ROSEのクロスコンパイル環境 -S/W-
必要なソフトウエア
1. e2studio
2. CCRXツールチェイン(V.3.02.00)
3. RX Driver Package (V.1.25)
4. wolfSSL (V.4.4.0)
GR-ROSE(RX65N)
e2studioE1
wolfSSL WindowsPC
LAN
33
e2studio 用のサンプルアプリ作成手順
H/Wドライバー等のソースファイルを生成 (Smart Configurator)
wolfSSLパッケージのサンプルアプリプロジェクトに、1の生成ファイルを追加
プロジェクト設定(インクルードファイルパス等の設定)
マクロ設定、通信設定
プロジェクトをビルド
デバッグ構成の設定
1
2
3
4
5
6
34
プロジェクト設定(プロパティ)
1. Testプロジェクト
ツール設定: ツールチェーン: Renesas CCRX バージョン:Ver v3.02.00
デバイス: グループ:RX65N デバイス:R5F565NEHxFP
リンクモジュールパス:
"${workspace_loc:/${ProjName}/src/smc_gen/r_t4_rx/lib/ccrx/T4_Library_ether_ccrx_rxv1_little_debug.lib}“
※変更が必要
2. wolfsslプロジェクト
ツール設定: ツールチェーン: Renesas CCRX バージョン:Ver v3.02.00
3
35
マクロ設定5
wolfSSL-4.4.0IDE
Renesas
e2studio
test
common
Projects
src
wolfSSL_demo.h
#define TLS_CLIENT を有効化
(クライアントとして振る舞う為に設定)
user_settings.h
1. 次の定義を追加#define WOLFSSL_TLS13#define HAVE_HKDF#define HAVE_FFHKDF_2048#define WC_RSA_PSS#define NO_ASN_TIME
2.次の定義をコメントアウト#define USER_TIME #define XTIME time#define USE_WOLF_SUSECONDS_T#define USE_WOLFTIMEVAL_T#define OPENSSL_EXTRA
wolfSSL_client.c
1.通信相手のIPアドレスを設定2. TLS1.3通信の処理関数に変更
36
GR-ROSE上のClientとPC上のServerとの通信
Ubuntu
GR-ROSE(RX65N)
example/server/server
e2studioE1
LAN
testTLS 1.3
37
GR-ROSE上のClientとServerとの通信結果
Ubuntu
GR-ROSE(RX65N)
e2studioE1
LAN
38
GR-ROSE上のClientとPC上のServerの通信
パケット
サーバー
Serverからの応答
GR-ROSEからのメッセージ
39
GR-ROSE上のClientと PC上のServerとの通信
デモします
40
TLS通信パケットをみてみよう
PC上のClient/Serverアプリの通信パケットTLS1.2
GR-ROSE上のClientとPC上のServerのパケットTLS1.3
41
TLS通信パケットをみてみよう
PC上のClient/Serverアプリの通信パケットTLS1.2
GR-ROSE上のClientとPC上のServerのパケットTLS1.3
1往復
2往復
暗号化データ
暗号化データ
1往復
42
Q & A
43
Currently Available!
組込み向けTLSライブラリであるwolfSSLは、
世界初のTLS1.3商用版です。
44
ウェビナーへのご参加、ありがとうございました。
wolfSSL Japan
wolfに関するご要望や追加質問などありましたら、アンケートにご記入いただければと思います。
あるいは [email protected]までお寄せくださっても結構です。