公開日:2023/07/20
もはや現代社会には欠かすことのできないインターネット。皆さんもスマートフォンやPCで日常的に使っていると思います。
しかし、インターネットは便利な一方で、盗聴や改ざんなど、さまざまなリスクが潜んでおり、たびたびニュースでも取り上げられています。
組込み機器においても、IoTの普及が拡大しているいま、セキュリティの重要性はますます高まっています。IoT機器からのカメラやセンサデータの不正取得や、ハッキングによる不正操作など、さまざまな脅威から守るために、IoT機器にもセキュリティ対策は必須となっています。
そこで今回は、セキュリティ技術の一つとして、暗号通信技術SSL/TLSを組込み機器に実装する方法をご紹介します。
1.wolfSSLの概要
(1)SSL/TLSの概要
SSL(Secure Socket Layer) / TLS(Transport Layer Security)は、インターネット上でデータを暗号化して通信を行うセキュリティ技術です。
通信を暗号化することにより、クレジットカードやWebサイトへのログイン情報を第三者が盗聴したり、改ざんしたりすることができなくなります。また、"電子証明書"と呼ばれる、通信相手の信頼性を担保するデータを使用することで「なりすまし」サイトを検知することもでき、広く使用されています。
SSLはTCPを使った暗号通信技術として1990年代に開発されましたが後に大きな脆弱性が発見され、後継となるTLSが1999年にリリースされました。その後SSLは最終版の「SSL 3.0」が2015年に廃止され、現在ではTLSしか残っていません。(TLSの最新版は「TLS 1.3」です。)
しかし初期のセキュリティ技術としてSSLは広く認知されていたため、今でもTLSを指してSSLと呼ぶ方も多く、TLSの紹介の際にはSSLと組み合わせて、「SSL/TLS」「TLS/SSL」と表記する場合もあります。
(2)wolfSSLの製品概要
wolfSSLは、米国ワシントン州シアトルに本社を持つwolfSSL Inc.が開発する組込み製品向けのセキュリティライブラリです。
wolfSSLという名称ですが、もちろん最新のTLS 1.3にも対応しています。また、組込み製品向けに軽量かつ高速で、移植性にも優れたソフトウェアとなっています。
対応プロトコル | TLS 1.3、DTLS 1.3※までサポート (SSL 3.0、TLS 1.0、TLS 1.1は保守) ※Datagram TLS:TLSのUDP版 |
---|---|
プログラムサイズ | ROM:20~128KByte RAM:1~36KByte |
標準APIのOS依存性 | なし |
サポートOS | TRON/ITRON/μITRON、FreeRTOS™、ThreadX、Yocto Linux、TOPPERS、ベアメタル(非RTOS)、他多数 |
wolfSSLの動作ベンチマークの結果は以下から確認できます。
BENCHMARKING WOLFSSL AND WOLFCRYPT
※当社製品、AP-RX71M-0A(RX71M CPU)でのベンチマーク結果も掲載されています。
wolfSSLはオープンソース版、商用版の2種類のライセンスが提供されています。オープンソース版は商用の内容をすべて含んでいるため、社内での技術評価などGPLの範囲内であれば、無償でダウンロード・機能確認を行うことができます。
商用版はGPLのライセンス条項に縛られることなくライブラリの使用が可能となります。製品に組み込んで利用する場合は、商用版をご利用ください。商用サポートは日本国内の日本人専任スタッフによるサポートサービスが提供されています。
2. wolfSSLを使って暗号通信を確かめてみる
弊社では、RAファミリ、RXファミリ、RZファミリの各CPUボードのユーザー向けにwolfSSLのサンプルプログラムを公開しています。
CPUボードシリーズ | CPU | CPUボード |
---|---|---|
RA | RA6M | AP-RA6M-0A |
RX | RX72N | AP-RX72N-0A |
RX72M | AP-RX72M-0A | |
RX71M | AP-RX71M-0A | |
RX65N | AP-RX65N-0A | |
RX64M | AP-RX64M-0A | |
RX63N | AP-RX63N-0A | |
RX62N | AP-RX62N-0A | |
RZ | RZ/A3UL | AP-RZA3-0A(近日公開予定) |
サンプルプログラムの詳細は各ボード製品ページに公開されているアプリケーションノートをご参照ください。
今回は、AP-RX72N-0Aを使って、実際にTLS 1.3の暗号通信が行われていることをネットワークアナライザソフトの「Wireshark」のログから確認していきます。
AP-RX72N-0Aのサンプルプログラムは以下の環境で、TLS通信を行います。
また、wolfSSLサンプルプログラムの動作のために、特別に必要な機材は無く、CPUボードとデバッガ(E2エミュレータlite等)の他には、LANケーブルが一本あれば動作が可能です。
※サンプルプログラムのTLS通信でエラーが出る場合の対処方法
もし、サンプルプログラムの動作が確認できない場合、サンプルプログラムに同梱した電子証明書の有効期限が切れている可能性が考えられます。この場合は、最新のwolfSSLのオープンソース版データを入手し、最新のwolfSSLを差し替えたプログラムを準備する必要があります。
アプリケーションノートAN1573の「6. wolfSSLの入手方法」にて、wolfSSLの差し替え手順を紹介していますので、wolfSSLの資料と併せて参考にしてください。
(1)TLSサーバ機能サンプルの動作ログ
(2)TLSクライアント機能サンプルの動作ログ
3. まとめ
今回は、組込み向けのSSL/TLSライブラリであるwolfSSLの概要と、実際に組み込んで暗号化通信を行っている様子をご紹介しました。IoT機器のセキュリティ対策は、まだまだ、万全に普及している状況ではありませんが、製品の信頼性に直結しますので、今後、ますます重要度が増してくると思います。
今回、ご紹介したwolfSSLは、組込み機器の採用実績も十分で、すぐに動作するサンプルプログラムも用意されているので、これからセキュリティ対策を行おうとする方でも比較的容易に組み込めると思います。また、オープンソース版と商用版のデュアルライセンスで展開されているので、サポートが必要な場合も安心して利用できると思います。
弊社では、wolfSSLサンプルプログラムを多数公開しているので、是非ご活用ください。
製品のご案内
本コラム以外にも開発にお役立ていただける技術情報をアプリケーションノートとして公開しております。
ご興味のある方は、ぜひ製品をご利用ください。
- ※ArmおよびCortexは、米国および/またはその他の地域におけるArm Limited(またはその子会社)の登録商標です。
- ※wolfSSL は、wolfSSL Inc.の登録商標、商標または商品名称です。
- ※記載されている会社名、製品名は、各社の登録商標または商標です。
- ※記載の内容は改良のため、予告なく変更する場合がございます。