IoT SAFE¶
IoT SAFEとは¶
IoT SAFE (IoT SIM Applet For Secure End-2-End Communication) は、GSMAによって策定された、IoT機器とクラウド間の通信を安全に行うために、SIMカードをRoot of Trustとして利用するための標準規格です。
認証や暗号化の機能をもつSIMアプレットを搭載することで、デバイス認証とデータのエンドツーエンドの暗号化を実現する仕組みであり、セルラーネットワークを利用するIoT機器におけるデバイスセキュリティを実現する技術の一つとして期待されています。
本アプレットは、IoT SAFEの標準規格に沿って実装を行ったものです。
IoT SAFEの動作概要¶
IoT SAFEアプレットは、以下の流れで動作を行います。
注釈
本ドキュメントは、Applet Consoleの操作を通して、IoT SAFEアプレットの動作をご理解いただくための解説です。
IoT SAFEアプレットを用いたより実践的なVPN構成の構築については、 IoT SAFE チュートリアル をご確認ください。
証明書の生成処理¶
IoT SAFEアプレットは、起動するとキーペアの生成を行った後、Applet Consoleへコマンドの確認を行います。
Applet Consoleは、キーペア読み取りの指示(ReadPublicKeyコマンド)を行います。
IoT SAFEアプレットは、キーペアの公開鍵をApplet Consoleへ送信します。
Applet Consoleは、CSRの生成と送信の指示(GenerateCSRコマンド)を行います。
IoT SAFEアプレットは、CSRの生成を行い、Applet Consoleへ送信します。
Applet Consoleは、CSRをもとにクライアント証明書を署名します。
Applet Consoleは、クライアント証明書の配布(DeliveryClientCertコマンド)を行います。
クライアント証明書の利用¶
mTLS通信を確立します。
上記の動作により、IoT SAFEアプレットにはキーペア(秘密鍵/公開鍵)、CSR、クライアント証明書が格納され、セキュアな通信を行うことが可能になります。
IoT SAFEの動作確認¶
ここでは、IoT SAFEアプレット搭載のアプレットSIMおよびApplet Consoleを利用して、クライアント証明書を用いた基本的なmTLS通信の動作確認を行います。
動作確認の環境¶
本手順では、以下のソフトウェア、ハードウェアの条件で動作確認を行っています。
Applet Console
IoT SAFEアプレットのOTAインストール、鍵の管理などIoT SAFEに関わる操作、管理機能を提供します。
通信モジュール
IoT SAFEアプレットが動作する通信モジュールです。
対応機種は、 こちら をご確認ください。
IoT機器
上記の通信モジュールが装着でき、IoT SAFE Clientが動作するIoT機器です。
IoT機器名 |
ディストリビューション |
ディストリビューションバージョン |
|---|---|---|
Raspberry Pi 4または5 |
Raspberry Pi OS |
12(bookworm) または 13(trixie) |
PC |
Debian |
12(bookworm) または 13(trixie) |
PC |
Ubuntu |
24.04(Noble Numbat) |
IoTサーバー
IoT機器にサービスを提供するサーバーです。
事前準備¶
- IoT SAFEをLinux上で動作させるためのパッケージ(libifd-atcmdとpkcs11-iotsafe)をインストールします。
IoT SAFE Clientをインストールすることで、必要なパッケージを一括でインストールすることが出来ます。
IoT SAFE Clientのインストール方法は こちら を参照してください。
注釈
本ドキュメントでは、直接IoT SAFE Clientは使用しません。
IoT SAFE Clientの利用方法は、IoT SAFE チュートリアル および IoT SAFE Client コマンドリファレンス をご確認ください。
IoT SAFEアプレットのインストール¶
- SIMカードにIoT SAFEアプレットをインストールします。
注釈
Applet Consoleの操作方法 をご確認ください。
- SIMカードに正常にIoT SAFEアプレットがインストールされていることを確認します。
Applet ConsoleのSIMメニューから該当のSIMカードのSIM詳細画面を開きます。
OTAステータスが「Install:Succeeded」となっていることを確認します。
識別情報をApplet Consoleに登録¶
「SIM個別の識別情報」または「識別情報テンプレート」の登録を行います。
ここでは、識別情報テンプレートを用いて登録する方法を例として示します。
「SIM個別の識別情報」の登録方法は、こちら をご確認ください。
注釈
識別情報テンプレートを既に登録済みの場合、この手順は不要です。 「CSRの生成とクライアント証明書の署名」へ進んでください。
- 「設定」メニュー > 「IoT SAFE」タブ > 「識別情報テンプレート」ボタンの「編集」ボタンより、識別情報テンプレートを編集します。
識別情報テンプレートが登録されたことを確認します。
CSRの生成とクライアント証明書の署名¶
IoT機器の電源を入れ、IoT SAFEアプレットを起動します。
- 「IoT SAFE」メニュー > {IoT SAFEアプレットをインストールしたSIMのICCID} > 「クライアント証明書一覧」に表示されている「ID」をクリックし、クライアント証明書の詳細情報を表示します。
- 「ReadPublicKeyコマンド」、「ReadCSRコマンド」、「DeliveryClientCert」ステータスが「Succeeded」になったことを確認します。
- 公開鍵、CSR、クライアント証明書についても同画面の「PEM形式データ」から確認することが可能です。
ファイルの配布¶
設定ファイルなどをIoT SAFEアプレットに配布することができます。
注釈
ファイルは、IoT SAFEアプレットに任意のデータを送信する仕組みです。直接mTLS通信に関係しませんので、ファイル配布は必須の操作ではありません。
- 「IoT SAFE」メニュー > {IoT SAFEアプレットをインストールしたSIMのICCID}の「ファイル一覧」で「追加」ボタンをクリックします。
IoT機器の電源を入れて、IoT SAFEアプレットを起動します。
- ファイル一覧に表示されている「ID」をクリックすることで、ファイルの詳細情報を表示します。
- 「DeliveryFile」ステータスが「Succeeded」になったことを確認します。
オブジェクトIDの取得¶
IoT SAFEアプレットに配布されているクライアント証明書のオブジェクトIDを取得します。
- 「IoT SAFE」メニュー > {IoT SAFEアプレットをインストールしたSIMのICCID} > 「クライアント証明書一覧」に表示されている「ID」をクリックし、クライアント証明書の詳細情報を表示します。
- クライアント証明書詳細画面「基本情報」に表示される「オブジェクトID」を確認します。
mTLS通信の確立¶
以下、IoT SAFEのクライアント証明書を用いて、mTLS通信を確立する方法のイメージです。
- IoTサーバーを起動します。
openssl s_server \ -trace \ -accept {IoTサーバーのポート番号} \ -key ${IoTサーバーのサーバー秘密鍵ファイル} -cert ${IoTサーバーのサーバー証明書ファイル} \ -chainCAfile ${プライベートCAのルート証明書ファイル} \ -Verify 10 -verify_return_error \ -CAfile ${プライベートCAのルート証明書ファイル} \ -WWW
- mTLS通信でIoTサーバーに接続します。
openssl s_client \ -connect {IoTサーバーのIPアドレス}:{IoTサーバのポート番号} \ -cert "pkcs11:token=IoTSAFE;type=cert;id={オブジェクトID}" \ -key "pkcs11:token=IoTSAFE;type=private;id={オブジェクトID}"
注釈
通常のmTLS接続では、「-cert」や「-key」でローカルのファイルを指定しますが、上記の通りIoT SAFEでは、アプレットSIM内のIoT SAFEアプレット内の鍵、証明書情報を参照しています。

