組み込み/iotデバイスを tls 1.3でセキュアにしよう...1 seminar wolfssl...

44
Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020526GR-Rose/RX65NSSL/TLSのクイックスタート

Upload: others

Post on 17-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

1

SeminarwolfSSL Japan合同会社エンジニア松尾 卓幸

2020年5月26日

GR-Rose/RX65NでSSL/TLSの クイックスタート

Page 2: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL 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

Page 3: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

3

TLSのしくみ

Page 4: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

4

IoT機器の通信

Page 5: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

5

悪意の第3者

Page 6: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

6

TLSの登場

Transport Layer Security

Page 7: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

7

TLS の役割

1. なりすましの防止 - 通信相手を証明書によって検証

2. 秘匿性の提供 - データを暗号化して第3者の盗聴を防ぐ

3. データ改ざん防止 - ダイジェストにより第3者の改ざんを検出

Page 8: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

8

TLS の進化

SSL3.0 TLS1.0 TLS1.2 TLS1.3 (RFC8446)2018/8

1995 2000

TLS1.1

2005 2010

既に使用が停止 安全で高速!

20202015

Page 9: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

9

SSL/TLS

トランスポート層のセキュリティ

IP

TCP

TLS

Ethernet ネットワークインターフェース層

ネットワーク層

トランスポート層

アプリケーション層

TCP/IPの階層モデル

FTP HTTP

Page 10: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

10

SSL/TLS

トランスポート層のセキュリティ

IP

TCP

TLS

Ethernet ネットワークインターフェース層

ネットワーク層

トランスポート層

アプリケーション層

TCP/IPの階層モデル

FTP HTTP

独自の通信プロトコルにも使える

Page 11: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

11

wolfSSLでTLS

Page 12: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

12

wolfSSLとは?

Application Data

1. C言語で記述されたTLSライブラリ

2. 組み込み製品に搭載実績多数

3. 多くのMPU / IDE / OSをサポート

Page 13: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

13

wolfSSLのダウンロード

1. wolfSSL ダウンロードページへ

www.wolfssl.jp/download

2. お客様の情報を記入し

3. wolfSSL-4.4.0.zipを選択してダウンロード!

Page 14: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

14

wolfSSLパッケージの構成

wolfSSL-4.4.0

testsuite

IDE 各IDE用プロジェクト/アプリ

examples サンプルアプリ

src wolfSSLソースファイル

テスト用アプリケーション

wolfssl ヘッダーファイル群

wolfcrypt 暗号化ライブラリ

certs 証明書データ

Page 15: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

15

サンプルプログラムwolfSSLをビルドするとこれらサンプルも全て作成されるwolfSSL-4.4.0

wolfcrypt

benchmark

echoserver

examples

client

server

echoclient

TLS通信ベンチマーク

TLS通信クライアント側アプリ

TLS通信サーバー側アプリ

TLS通信エコークライアント側アプリ

TLS通信エコーサーバー側アプリ

暗号化ベンチマークbenchmark

暗号化テストtest

Page 16: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

16

アプリケーションはどのように作る?

Page 17: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

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

時間

Page 18: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

18

対向application

listen();

accept();

TLS

wolfSSL を使ったアプリケーションの構造application

socket Lib

wolfSSL Lib

Page 19: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

19

対向application

listen();

accept();

TLS

application wolfSSL Lib

wolfSSL_Init();ctx = wolfSSL_Ctx_new(..);

wolfSSL_CTX_load_verify_location(cert);

socket Lib

wolfSSLのセットアップ(証明書)

wolfSSL を使ったアプリケーションの構造

Page 20: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

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の作成と接続

Page 21: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

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ハンドシェーク

Page 22: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/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(); 暗号化通信

終了処理

終了処理

Page 23: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

23

セルフコンパイル(PC上でビルド、PC上で動作)

アプリケーションを動かしてみる

Page 24: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

24

Windows上でのビルド方法

VisualStudio

wolfSSLパッケージには VS用のプロジェクトファイルも同梱

• WSLは手軽にインストール可• ツールの追加が簡単

Autotools

Linux環境(WSL)

今日はこっちを使います

or

Page 25: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

25

WSLのインストール方法(参考)

WSL

Autotools

Windows Subsystemfor Linux( MS提供)

Linux

Windows

Linuxを構築しソースもツールもLinux用を使う開発

12

3

4

Page 26: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

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

Page 27: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

27

サンプルアプリを動作させてみる

Ubuntu

WindowsPC

Ubuntu

examples/server/serverexamples/client/client

TLS1.2

Page 28: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

28

デモンストレーション

wolfSSlの解凍 -> ビルド -> サンプルアプリ動作

をデモします

Page 29: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

29

サンプルアプリ動作結果

サンプルclient

サンプルserver

TLSv1.2

Page 30: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

30

クロスコンパイルしてみる(PC上でビルド、GR-ROSE上で動作)

Page 31: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

31

GR-ROSEのクロスコンパイル環境 -H/W-

必要なハードウェア

1. GR-ROSE

2. Renesas E1 エミュレーター

3. Windows PC

4. E1接続ケーブル、LANケーブル

GR-ROSE(RX65N)

e2studioE1

wolfSSL WindowsPC

LAN

Page 32: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

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

Page 33: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

33

e2studio 用のサンプルアプリ作成手順

H/Wドライバー等のソースファイルを生成 (Smart Configurator)

wolfSSLパッケージのサンプルアプリプロジェクトに、1の生成ファイルを追加

プロジェクト設定(インクルードファイルパス等の設定)

マクロ設定、通信設定

プロジェクトをビルド

デバッグ構成の設定

1

2

3

4

5

6

Page 34: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

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

Page 35: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

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通信の処理関数に変更

Page 36: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

36

GR-ROSE上のClientとPC上のServerとの通信

Ubuntu

GR-ROSE(RX65N)

example/server/server

e2studioE1

LAN

testTLS 1.3

Page 37: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

37

GR-ROSE上のClientとServerとの通信結果

Ubuntu

GR-ROSE(RX65N)

e2studioE1

LAN

Page 38: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

38

GR-ROSE上のClientとPC上のServerの通信

パケット

サーバー

Serverからの応答

GR-ROSEからのメッセージ

Page 39: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

39

GR-ROSE上のClientと PC上のServerとの通信

デモします

Page 40: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

40

TLS通信パケットをみてみよう

PC上のClient/Serverアプリの通信パケットTLS1.2

GR-ROSE上のClientとPC上のServerのパケットTLS1.3

Page 41: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

41

TLS通信パケットをみてみよう

PC上のClient/Serverアプリの通信パケットTLS1.2

GR-ROSE上のClientとPC上のServerのパケットTLS1.3

1往復

2往復

暗号化データ

暗号化データ

1往復

Page 42: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

42

Q & A

Page 43: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

43

Currently Available!

組込み向けTLSライブラリであるwolfSSLは、

世界初のTLS1.3商用版です。

Page 44: 組み込み/IoTデバイスを TLS 1.3でセキュアにしよう...1 Seminar wolfSSL Japan合同会社 エンジニア 松尾 卓幸 2020年 5 月26日 GR-Rose/RX65Nで SSL/TLSのクイックスタート

44

ウェビナーへのご参加、ありがとうございました。

wolfSSL Japan

wolfに関するご要望や追加質問などありましたら、アンケートにご記入いただければと思います。

あるいは [email protected]までお寄せくださっても結構です。