うるふブログ

wolfSSL 4.4.0をリリースしました

wolfSSLの新バージョン、v4.4.0をリリースしました。このリリースには多くの新機能、最適化、不具合修正を含んでいます。

wolfSSL組み込みSSL / TLSライブラリに追加した新機能の一部を紹介します:

  • Qualcomm Hexagon SDKのサポート
  • ECC検証操作をオフロードするDSPビルド
  • 証明書マネージャーのコールバックサポート
  • ChaCha20 / Poly1305 AEADの更新を実行するための新しいAPI
  • Apache Webサーバーでの使用をサポート
  • IBM s390xのサポート
  • ED25519のPKCS8サポート
  • OpenVPNのサポート
  • Single PrecisionでP384曲線をサポート
  • BIOおよびEVP APIの追加
  • AES-OFBモードの追加
  • AES-CFBモードの追加
  • Curve448、X448、およびEd448の追加
  • Renesas Synergy S7G2ビルドとハードウェアアクセラレーションの追加

完全なリストについては、ダウンロードREADMEを確認ください。

ご質問は support@wolfssl.com までご連絡ください。

原文: https://www.wolfssl.com/wolfssl-version-4-4-0-now-available/

 

最近のウェビナーの録画版

最近開催したウェビナーの録画版をYoutubeのwolfSSLチャンネルで公開しました。

 

「IoTデバイスでcURLが使われる理由」(英語)

2020年8月5日開催、約30分

 

「IoTのためのセキュアブートとリモートファームウェア更新」(英語)

2020年7月22日開催、約30分

 

次回のウェビナーは2020年8月25日、「はじめてのwolfMQTT」です。事前登録の上、ぜひご参加ください。

cURLとtinycurlの日本語ページを公開しました

cURLとtinycurlの日本語ページを公開しました。

wolfSSLでは、さまざまなプロトコルを使用してデータを転送することができるcURLの商用サポートを提供しています。

tinycurlはHTTPSを実行できるcurlのバージョンで、典型的な32ビットアーキテクチャ上で100K (wolfSSLライブラリを含む)に収まるようになっています。wolfSSLがライセンス、商用サポートを提供するライブラリで、現在ベータ版を提供しています。

ご質問は info@wolfssl.jpまでご連絡ください。

wolfSSLウェビナー「はじめてのwolfMQTT」のご案内

wolfSSLウェビナー開催のご案内です。
2020年8月25日(火) 10:00~10:30

 

スピーカー:
wolfSSL Inc.エンジニア
Eric Blankenhorn(エリック・ブランケンホーン)

 

はじめてのMQTTウェビナーでは、IoTではなぜ独自のこのMQTTプロトコルが必要になったのか、またMQTTプロトコルの概要について説明します。後半にはwolfSSLが開発したwolfMQTTクライアントについて、サポートするMQTTの仕様、アーキテクチャ、設定とビルドプロセスなどについても紹介します。

本ウェビナーは英語での開催となります。

参加希望の方はこちらからご登録ください。ご登録後、ウェビナー参加に関する確認メールをお送りします。

 

ぜひ皆様のご参加をお待ちしています。
ご質問がおありでしたら、info@wolfssl.jp までご連絡ください。

 

wolfSSLインターンシッププログラム2020(セキュリティエンジニア、マーケティング)

SSL / TLS、暗号化、MQTT、SSH、TPM 2.0などのインターネットセキュリティを学ぶ学生インターンを募集します。

今年の夏は、コンピュータサイエンス分野での実務経験を増やし、wolfSSLグローバルチームの一員としての潜在的なキャリアに向けて取り組んでみませんか。

 

wolfSSLは、オープンソースのインターネットセキュリティ製品をもつグローバルベンダーの1つであり、世界中で20億を超えるアクティブな接続をセキュアにしています。wolfSSLインターンシッププログラムでは、この夏からの数ヶ月間、グローバルなリモート環境でセキュリティソフトウェアの開発、テスト、使用方法について学ぶことができます。wolfSSLおよび関連製品内のドキュメント、サンプルコード、テストケース、およびコミュニティサポートを改善する役割を担いながら、組み込みSSL / TLS業界の知識だけでなく、Linuxおよび組み込みシステムでの貴重なプログラミング経験を得ることができます。

 

応募条件:

Cプログラミングの経験がある知識豊富な学生
組み込みシステムの経験、ネットワークプログラミングの経験、git / GitHubの知識があれば尚可です。

 

またセールスマーケティングのインターンも同時に募集いたします。

コンピュータソフトウェアに関する基本的な知識を持ち、マーケティング、デジタルマーケティング、セールス業務をグローバル環境で体験したい学生を募集します。

 

wolfSSLインターンシッププログラムについてもっと知りたい場合は、英文Resumeとカバーレターをinfo@wolfssl.jpまで送付ください。

 

ルネサス半導体オンラインセミナー【第2弾】GR-ROSE(RX65N)で試すSSL/TLSとハードウェア暗号化–RX65N/TSIPの実力を試してみよう–

wolfSSLでは、7月10日(金)にルネサス エレクトロニクス社主催の半導体オンラインセミナーを担当いたします。

Trusted Secure IP(TSIP)は、ルネサス製RX/RZファミリに搭載されたハードウェア暗号エンジンです。
このセミナーでは、wolfSSL社にて組み込み向けSSL/TLSプロトコルライブラリとRX65NのTSIPハードウェア暗号エンジンを使ったベンチマークを実際に行い、ハードウェア暗号化がもたらす性能改善について紹介します。

日時: 2020年 07月10日(金) 14:00~14:45
参加費:無料(事前登録制)

詳細、お申し込みは、こちらをご覧ください。

なお、本セミナーは第1弾として5/26に開催した「GR-Rose/RX65NでSSL/TLSのクイックスタート(オンラインセミナー)」の続編になりますが、どなたでもご参加可能です。

ぜひ皆様のご参加をお待ちしています。
ご質問がおありでしたら、info@wolfssl.jp までご連絡ください。

 

wolfSSLウェビナー「IoTデバイスでcURLが使われる理由」のご案内

wolfSSLウェビナー開催のご案内です。
2020年8月5日(水) 16:00~16:30

 

スピーカー:
cURL創設者兼 wolfSSL Inc.エンジニア
Daniel Stenberg(ダニエル・ステンバーグ)

 

世界中のWeb開発者に使われているcURL — そのcURLがたくさんのIoTデバイスの中でも活躍し始めています。リソース制限の厳しい組み込みデバイスの中でもcURLが選ばれている理由について、cURLのリード開発者であるDaniel Stenbergが紹介します。wolfSSLのお届けするcURLユーザーサポートなどについても話します。

本ウェビナーは英語での開催となります。

参加希望の方はこちらからご登録ください。ご登録後、ウェビナー参加に関する確認メールをお送りします。

 

ぜひ皆様のご参加をお待ちしています。
ご質問がおありでしたら、info@wolfssl.jp までご連絡ください。

 

wolfSSL 2019年のご報告

wolfSSLのお客様、またエンドユーザー様に、弊社の2019年の実績を報告いたします。

wolfSSLの2019年は、おかげさまで前年に続き大きく成長した飛躍の一年となりました。弊社の製品が持つ技術的優位性と、テストおよび品質への継続的な投資を土台に事業を大幅に拡大させました。

市場に先駆けたTLS 1.3への準拠、自動車市場に向けたMISRA-C対応、米国政府機関への納入に向けたFIPS認証、航空電子機器向けのDO-178サポートなどを行ってきました。また、ファジングリソースに含まれる社内外の追加ソースが示すように、wolfSSLは市場で最もテストされた製品を提供し続けています。弊社製品をお使いの多くのユーザによるコード監査も多数受けてきています。そして、世界最高レベルのコード監査人とテスターと称される方々にも、wolfSSLの製品のコードをレビューしてもらいました。多くのテストと多くの目によるチェックにより、今日の最もテストされたTLSおよび暗号化コードの品質を達成しています。wolfSSLに興味を持っていただきありがとうございます。私たちは2020年に素晴らしいスタートを切ることができ、本年の残りの期間も皆様の期待に応えられるよう努力してまいります。

(注目: TLS、暗号化エンジンを選んでいただく際、暗号化エンジンのプロバイダがファジングを実施していることはセキュリティ上大変重要な要素です。)

 

wolfSSL技術進歩

wolfSSL組込みTLSライブラリは、2019年に合計4つのバージョンをリリースしました。各バージョンで不具合修正、拡張、および新機能の追加を実施しています。主な変更点は次のとおりです。

1.ハードウェアとOSの新たなサポート

2.ソフトウェアの新たなサポート

  • Apache Webサーバー(–enable-apache-httpd、WOLFSSL_APACHE_HTTPD)
  • OpenVSwitch
  • Google WebRTC
  • 198の新しいOpenSSL互換性API
  • Qt(–enable-qt、–enable-qt-test、WOLFSSL_QT)
  • OpenVPN

3.既存のポートの更新

  • Arduino (デフォルト設定の更新/リファクタリング、スケッチサンプルコードの改善)
  • ザイリンクス (Xilinx FreeRTOS ビルドに対する更新)
  • Nginx (1.15.0 パッチ更新、1.16.1 と 1.17.5 のサポート)

4. オペレーティングシステムの更新

  • Micrium uC/OS-III (ポートの更新、静的マクロとインラインマクロの調整)
  • Windows (カスタム ECC曲線、ディレクトリ機能の修正)
  • NetBSD (デフォルトビルドとmutexの使用)
  • SafeRTOS (ビルド問題の修正)
  • VxWorks (ポート更新)
  • Yocto Linux (使いやすさの向上、アップデート、ビルド手順)

5.コンパイラとIDEの更新

  • IAR-EWARM(Cortex-Mの変更、コンパイラ警告の修正)
  • Renesas CS+(ユーザー設定サポートの改善、サンプルの更新)
  • XCode(プロジェクトファイルの更新、i386 上の iPhone シミュレータのビルドの修正)
  • Visual Studio(ビルド警告の修正、snprintfのラッパー)
  • Cygwin(可視性タグの修正)

6.TLS 1.3のアップデート

  • 相互運用性の向上
    • 相互運用性の修正とバージョンネゴシエーションの改善
  • 移植性の向上
    • 移植性改善(時間要件の簡素化、XTIME_MS)
  • テストの強化
    • ファジングの追加
    • 一部の組み込みターゲットの自動テスト
    • 既知のユースケースと構成を対象とした顧客テストの改善
  • その他の暗号スイート
    • NULL暗号スイートの追加(TLS_SHA256_SHA256、TLS_SHA384_SHA384)

7.新しいハードウェア暗号サポート

  • nRF52840のARM CryptoCell-310
  • RX65NのRenesas TSIP
  • HMAC、AES-CBCおよびRNGのPKCS#11サポート
  • Intel QuickAssist v1.7ドライバのサポート
  • Intel QuickAssist RSA鍵生成とSHA-3サポート
  • STM32WB PKA ECC署名検証

8.既存のハードウェア暗号サポートの改善

  • STM32(AES-GCM性能改善)
  • STSAFE(wolfSSL暗号化コールバックサポート、エラーコード処理の改善)
  • TI(既存のハードウェア暗号のアップデート)
  • NXP mmCAU性能改善(35-78%の向上)
  • 暗号コールバック(3DESのサポート、機能改善)
  • Microchip ATECC508/608A、AES-NI、AVX2、ARMv8、devcrypto/afalg、ST CubeMXへの修正

9.新しいアルゴリズムと更新されたアルゴリズム

  • Ed25519ctxとEd25519phの追加(署名/検証-RFC 8032)
  • Blake2sの追加(32ビットBlake2サポート)
  • CMS / PKCS#7の改善

10.アルゴリズムの性能最適化

  • ARMアーキテクチャ
    • SIMD NEON拡張を使用したChaCha20
    • SIMD NEON拡張を使用したPoly1305
    • Curve25519 / Ed25519
    • SIMD NEON拡張を使用したSHA-384 / 512

11.新規および更新されたビルドオプション

  • “-enable-ecccustcurves=all” – すべての曲線タイプを有効化
  • “-enable-16bit” – 16 ビットコンパイラのサポートを有効化
  • “-enable-rsavfy” – RSA検証のみのビルド
  • “-enable-rsapub” – RSA 公開鍵のみのビルド
  • “-enable-armasm” – autotools で使いやすくするために更新
  • “-enable-fallback-scsv” – サーバー側のフォールバックSCSV
  • “-enable-titancache” – 新しいセッションキャッシュサイズ、200万以上のセッションを保持可能

12.TLS拡張サポートの追加と更新

  • TLS Trusted CA拡張機能を追加
  • TLS 1.2以下にEncrypt-then-MACを追加
  • 署名アルゴリズム拡張を無効にする機能
  • SNI拡張の解析効率の向上
  • ALPNの解析時にエラーチェックを追加

13.Single Precisionの更新

  • Cortex-Mサポート
  • 素数判定のサポート
  • 基数が2の場合のmod expの特殊な実装
  • 4096ビットRSAおよびDH操作のサポート

14.FIPS 140-2検証の追加

  • wolfCrypt v4.0.0 FIPS認証を取得(証明書#3389)
  • 新しくFIPS Ready版をリリース
  • configure.acにwolfRandビルドオプションを追加
  • FIPS 140-2 運用環境の追加
    • プロセッサアルゴリズムアクセラレータ(以後PAA)あり/なしのARM Cortex-A72のHP PN 3PZ95-60002上で動作するHP Imaging&Printing Linux 4.9
      • PPAありでのARMv8 / NEONアセンブリ最適化を含む
    • Intel®Core™i5-5300U CPU @ 2.30GHz x 4を搭載したIntel Ultrabook 2 in 1で動作するLinux 4.4(Ubuntu 16.04 LTS)(PAAあり/なし)
      • PAAありのIntel AESNIとRDSEEDサポートを含む
    • STMicroelectronics STM32L4Rx(PAAなし)を搭載したSTMicroelectronics STM32L4R9I-DISCO(ディスカバリーキット)で動作するOpenRTOS v10.1.1
    • PAAあり/なしのIntel®Core™i7-7820 @ 2.9GHz x 4を備えたRadar FCL Package Utilityで実行されるWindows 10 Enterprise
      • PAA ありのIntel AESNIおよびRDSEEDサポートを含む
    • PAAあり/なしのIntel®Core™i5-5300U CPU @ 2.30GHz x 4を搭載したIntel Ultrabook 2 in 1で実行されるWindows 10
    • PAA ありのIntel AESNIおよびRDSEEDサポートを含む

15.テスト

  • Coverity、scan-build、およびcppcheckレポートの修正
  • 増加したコードカバレッジ向けのテストケースの強化
  • プルリクエストとナイトリーテストの追加
  • APIのサブセットに対するABIコンプライアンステスト

16.サンプルコード

  • 新しいColdfire MCF5441X NetBurnerのサンプルコード
  • Microsoft Azure Sphereデバイス用の新しいVisual Studioソリューション
  • 新しいNXP Kinetis Design Studio(KDS)サンプルプロジェクト

17.その他の製品の機能強化

  • wolfMQTT(2リリース)
    • マルチスレッドサポート (-enable-mt)
    • ポートのアップデート
      • Visual Studio
      • NXP MQX / RTCS
      • Microchip Harmony
    • サンプルコード
      • 新しいマルチスレッドのサンプルコード
      • Azure認証の更新
      • サンプルコードにデフォルトのブローカー
      • 新しいシンプルなクライアントのサンプル
      • 新しいノンブロッキングのサンプル
  • wolfSSH(3リリース)
    • クライアント側の公開鍵認証のサポート
    • 送信された公開鍵をチェックするコールバック関数
    • Windows CE、Micrium 3、MQX 4.2のSFTPクライアントとサーバーのサポート
    • NucleusとWindowsのポートの更新
    • ウィンドウサイズの最適化
    • 自動化テストとファジングの改善
    • ノンブロッキングサポートの更新
    • その他のサンプルコード:Renesas CS +、SFTP
    • AES-CTR接続のサポートを追加
    • 相互運用性と信頼性の向上
    • TCPポート転送
    • グローバルなリクエストメッセージのサポート
    • クライアント側の疑似端末サポート
  • wolfTPM(3リリース)
    • Microchip ATTPM20のサポート
    • Bareboxのサポート
    • 複数の並行プロセスのサポート
    • チップ検出、互換性、起動性能の改善
    • 新しいAPIユニットテストフレームワークによるより良いテスト
    • 認証付きのNVのサポート
    • HMAC / AES、ECDHE、PCRの新しいラッパーとサンプルコード
    • TLSクライアント/サーバーのサンプルコードを追加
    • スタック使用量の削減
    • 拡張されたベンチマークサポート
    • FIPSモードとSymmetricオプションの暗号化コールバックフラグ
    • ST33 TPM2_SetModeコマンドのサポート(省電力)
  • wolfBoot(3リリース)
    • Cortex-M0用のコンパイルオプション
    • RV32 RISC-Vアーキテクチャのサポート
    • STM32F76x / 77xハードウェア支援デュアルバンクサポート
    • 新しいHAL対応
      • Atmel SAMR21
      • TI CC26X2
      • NXP / Freescale Kinetis SDK
      • RV32 FE310(SiFive HiFive-1)
      • STM32L0
      • STM32G0
      • STM32F7
      • STM32H7
      • STM32WB55
    • ECC-256 DSAのサポート
    • 更新/スワップ用の外部フラッシュのサポート
    • アンチロールバック保護
    • 鍵生成と署名のための新しいPythonツール
    • フラッシュ書き込み機能をRAMに移動する機能
    • ブートローダーが自身を更新する機能
    • TPM2.0対応
      • wolfTPMとの統合
      • デュアルTPM / FLASH通信をサポートする拡張STM32 SPIドライバー
      • インフィニオン9670とSTM32でテスト済み
      • RSA 2048ビットデジタル署名検証
  • cURL
    • 商用サポート開始
  • wolfSSL-py(2リリース)
    • Python3の修正
    • ネイティブ機能検出
  • wolfCrypt-py(1リリース)
    • Ed25519暗号を追加
    • ECC鍵処理のメソッドを追加
    • Ed25519の未加工の署名/検証の新しいメソッド
    • RSAの新しいメソッド:make_key()encode_key()
    • wolfSSLビルドに基づくネイティブ機能の検出

wolfSSLトップ10ブログポスト/技術発表(グローバル)

2019開催のウェビナー(グローバル)

  1. TLS 1.3を使用する利点
  2. wolfSSL:TLS 1.3、OpenSSLの比較
  3. セキュアブートの概要
  4. OpenSSLからwolfSSLへの移行
  5. アビオニクスのセキュリティ

wolfSSL組織の成長

  • wolfSSLは、TLS/暗号の単一の実装のみに特化したチームとして世界最大級のチームです。グローバルチームで活躍するエンジニアを募集しています。
  • wolfSSLは顧客基盤を大幅に拡大し、現在で1,000社以上のお客様の製品で採用され、30以上のベンダーとパートナー関係を持ち、世界中で20億を超える接続をセキュアにしています。
  • wolfSSLは、2019年にヨーロッパでの体勢を強化し新メンバーが2人加わりました。
  • wolfSSLは62のイベント、展示会に参加しました(下記参照)。世界中のネットワークセキュリティをお探しの方々にwolfSSLをご紹介し、信頼できる暗号化とTLSの実装をお勧めしています。

wolfSSLイベントと展示会

2019年は合計で62のイベント、展示会に参加しました。2018年の50回から増加しています(2017年は30回)。参加したイベント、展示会の開催地は10か国、18のアメリカの州、44の都市に及びました。昨年参加したイベントは次のとおりです。

  1. CES(ラスベガス、ネバダ州)
  2. スマートファクトリーエキスポ(東京)
  3. Japan IT Week West(大阪)
  4. Embedded Tech India Expo(インド、ニューデリー)
  5. FOSDEM(ブリュッセル、ベルギー)
  6. DistribuTECH(ニューオーリンズ、LA)
  7. Embedded Technology Nagoya(名古屋)
  8. Embedded World 2019(ドイツ、ニュルンベルク)
  9. RSA(カリフォルニア州サンフランシスコ)
  10. Medtec Japan 2019(東京)
  11. MtoM Embedded Systems(フランス、パリ)
  12. Black Hat Asia 2019(マリーナベイサンズ、シンガポール)
  13. cURL UP(プラハ、チェコ共和国)
  14. NXP Tech Days Chicago(シカゴIL)
  15. SIdO(フランス、リヨン)
  16. Japan IT Week Spring(東京)
  17. NXP Tech Days MInneapolis(ミネアポリス、ミネソタ州)
  18. IoT Tech Expo Global(ロンドン、イギリス)
  19. LinuxFest(ワシントン州ベリンガム)
  20. Satellite 2019(ワシントンDC)
  21. NXP Tech Days Seattle(ベルビュー、ワシントン州)
  22. ICMC(バンクーバー、BC)
  23. Internet of Things World(カリフォルニア州サンタクララ)
  24. ESC Boston(ボストン、マサチューセッツ)
  25. Wireless IoT(東京)
  26. RTCA(クリスタルシティ、バージニア州)
  27. TU Automotive(チューリッヒ、スイス)
  28. Risc-Vサミット(ドイツ、チューリッヒ)
  29. NXPコネクト(カリフォルニア州サンタクララ)
  30. Embedded Technology West(大阪)
  31. IoT TechExpo Europe(アムステルダム、オランダ)
  32. Sensors Expo West(カリフォルニア州サンノゼ)
  33. IoT Security Forum(東京)
  34. Microchip Master 2019(フェニックス、アリゾナ州)
  35. Black Hat 2019(ラスベガス、ネバダ)
  36. NXP Tech Days(カリフォルニア州アーバイン)
  37. Billington International Cyber​​ Security Summit(ワシントンDC)
  38. RIOTサミット(フィンランド、ヘルシンキ)
  39. NXP Tech Days Boston(ボストン、マサチューセッツ)
  40. IoT World Asia 2019(シンガポール)
  41. ST Dev Con(カリフォルニア州サンタクララ)
  42. FACEコンソーシアム(オハイオ州デイトン)
  43. Federal Identityフォーラム(フロリダ州タンパ)
  44. ST Tech Tour(バンクーバー、BC)
  45. ArmTech Con(サンノゼ、カリフォルニア州)
  46. NXP Tech Days Detroit(デトロイト、MI)
  47. Japan IT Week Autumn(千葉幕張メッセ)
  48. ST Techツアー(ミネソタ州ミネアポリス)
  49. ザイリンクスXSWG(ロングモント、CO)
  50. Embedded Conference Scandinavia(ストークホルム、スウェーデン)
  51. ETSI / IQC量子安全暗号ワークショップ(ワシントン州シアトル)
  52. ST Techツアー(マサチューセッツ州ボストン)
  53. NXP Tech Days Toronto(トロント、カナダ)
  54. ザイリンクスXWSG(バージニア州ハーンドン)
  55. IoT Tech Expo North America(カリフォルニア州スタンタクララ)
  56. Embedded Technology / IoT Technology(パシフィコ横浜)
  57. オープンソースカンファレンス(東京)
  58. Embedded Software Engineering Kongress(ドイツ、ジンデルフィンゲン)
  59. ザイリンクスXWSG(ドイツ、ミュンヘン)
  60. ARM Tech Symposium(東京)
  61. RSC-Vサミット(カリフォルニア州サンノゼ)
  62. トロンショー(東京)

まとめると2019年は晴らしい年でした。2020年には、これまで以上に安全で機能的なソフトウェアをお客様とコミュニティに提供できるよう努めてまいります。

wolfSSLではみなさまからのフィードバックをお待ちしております。 info@wolfssl.jp までお寄せください。

wolfSSLウェビナー「IoTのためのセキュアブートとリモートファームウェア更新」のご案内

wolfSSLウェビナー開催のご案内です。
2020722日(水) 16:00~16:30

 

スピーカー:
wolfSSL Inc. シニアエンジニア
Daniele Lacamera(ダニエレ・ラカメラ)

 

300億台にも達すると言われる今日のIoTデバイス。そのセキュリティはどのように強化していけばいいのか — 長期間使用されるデバイスが将来にわたり安全に進化し、かつ製品競争力を強化し続けていくために、安全なファームウェア更新が注目されています。IETFドラフト”A Firmware Update Architecture for Internet of Things Devices(IoTデバイス向けファームウェア更新のアーキテクチャ)”とは、そこで示されるファームウェア更新の要件とは、またwolfSSLが提供するwolfBootセキュアブートローダの特徴とアーキテクチャなどを説明します。

本ウェビナーは英語での開催となります。

参加希望の方はこちらからご登録ください。ご登録後、ウェビナー参加に関する確認メールをお送りします。

 

ぜひ皆様のご参加をお待ちしています。
ご質問がおありでしたら、info@wolfssl.jp までご連絡ください。

 

連載「wolfの実力」 第五回:ヒープメモリーを深堀りしてみる

組込みデバイスの設計で気になるのは処理スピードだけではありません。メモリー容量についても以前よりは制約は緩くなってきたとはいえ、多くの場合できるかぎりの節減がもとめられるのが実情で、特にRAMエリアの容量には注意が求められるケースが多いかと思います。

 

wolfSSLの場合、設計ポリシーとして静的に確保されるデータエリアは最小限となるよう設計されていますので、今回は、必要の都度確保されるヒープ領域について、その挙動、サイズについて見ていくことにします。

 

TLSの通信をヒープエリア利用の観点からみると、次のようなステップを踏むことになります。かっこの中はそれぞれのステップで代表的に使用するwolfSSLのAPI名です。

 

1)コンテクストの確保 (wolfSSL_CTX_new)

2)鍵、証明書の格納 (wolfSSL_CTX_load_verify_locations)

3)セッション管理エリアの確保 (wolfSSL_new)

4)ハンドシェイク (wolfSSL_connect/accept)

5)アプリケーションデータ転送 (wolfSSL_write/read)

 

図1は、1)~4)の準備段階でのヒープエリアの使用量の一例を示しています。必要とするヒープエリアは、前のステップで確保し引き続き必要とされるエリア(濃い青の部分)とそのフェーズで使用するエリア(薄い青の部分)があります。図1ではTLSクライアント側での値を示しています。サーバ側では絶対値に多少の違いはあるものの、全体として大きな傾向は変わりません。

 

1)と2)は特定のTLSコンテクストで使用される共通情報を設定するステップです。このフェーズでは、メモリー容量としては使用される鍵や証明書のサイズが大きなファクターとなります。この例では、サーバ認証用の証明書だけが確保されています。実際の利用状況では、クライアント認証のための鍵、証明書を格納する必要がある場合もあります。

 

3)は、特定の相手方との通信を行うためのTLSセッションの管理エリアを確保します。この例では、1セッション分のエリアを確保していますが、同時に複数のセッションを扱う場合はその分だけのエリアを確保する必要があります。

 

4)は通信の相手方とのハンドシェークを実際に行うステップです。このステップではメモリー消費の観点からも公開鍵の大きな処理が行われます。

 

公開鍵処理の最適化についてはこのシリーズの第一回でも紹介したSingle Precision (特定鍵長)最適化が大きな効果を発揮します。ヒープ領域の使用量についてもこの最適化が大きな効果を示しますので、ここではその最適化を適用した場合の例をお見せしています。現在のwolfSSLのバージョンでは、ECCのP-256, RSAの1024, 2048, 3072ビットの各鍵長をサポートしていますが、それ以外の場合はこの最適化は適用できません。また、SP最適化はトレードオフとしてコードサイズが大きくなる傾向にあるので、ROMエリアに制限がある場合には注意が必要です。

 

 

 

図2はアプリケーションデータ転送時のヒープエリアの使用量の一例を示しています。アプリケーションデータ転送時には、公開鍵のようなヒープを多用する暗号化アルゴリズムは必要とされないため、暗号化処理に関するデータエリアは比較的小さくなります。

 

一方、データ転送のためのバッファエリアが大きなウェイトを占めることになります。TLSレコードはデフォルトでは最大16kバイトとなるため、wolfSSLでもデフォルトではそのサイズのバッファを確保することになるので、ヒープエリアが潤沢に利用で着ない場合は、このサイズを気にする必要が出てきます。

 

TLSではこの最大レコードサイズをプロトコル実行時に制限することができ、サーバ側が合意するならば、そのサイズを例えば4096、あるいは8196バイトなどの2のn乗バイトで指定することができます。wolfSSLでもこのオプションをサポートしており、利用する場合は ビルド時に –enable-maxfragment (あるいはHAVE_MAX_FRAGMENT)を指定し、実行時にwolfSSL_CTX_UseMaxFragmentまたはwolfSSL_UseMaxFragment にて実際のサイズを指定します。

 

この記事に関して、ご質問、あるいはご意見、ご希望などありましたら info@wolfssl.jp までお知らせください。

 

連載「WOLFの実力」を最新版から続けて読む
第一回:SP最適化でハンドシェイク所要時間を大幅削減
第二回:データ転送速度をさぐる
第三回:DTLSの実力(その1 DTLSの動作)
第四回:DTLSの実力(その2 性能編)

Posts navigation

1 2 3 4 38 39 40