うるふブログ

wolfSSL 4.3.0をリリースしました

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

wolfSSLライブラリに追加された最新機能の一部を紹介します:

  • libwebsocketsビルドをサポートするための–enable-libwebsocketsオプションを追加
  • NGINX 1.15.0サポートの更新とNGINX1.16.1サポートの追加
  • RSA-PSSソルト長の更新。マクロWOLFSSL_PSS_SALT_LEN_DISCOVERの使用でソルト長の検出が可能。RSA_PSS_SALT_LEN_DISCOVER値をwc_RsaPSS_Verify_exに渡すと、ソルト長の検出が試行され、より大きなソルト長が使用可能
  • wolfSSLは、OpenSSLからwolfSSLへの移行を支援するために、OpenSSL互換性APIを常に拡張しています。このリリースでは、証明書を取得するためにAPI wolfSSL_CertManagerGetCertsおよびwolfSSL_X509_STORE_GetCertsを追加
  • wolfSSLには、単精度演算用に最適化した演算ライブラリがあります。RSA、ECC、およびDHによる、特定鍵サイズの操作を大幅に高速化します。このリリースでは、4096ビットRSA / DHを新たにサポート
  • 前回のリリース(v4.2.0)でサポートしたGoogle WebRTCを、ブランチm79に更新
  • MQX 5.0サポート用に新しいFREESCALE_MQX_5_0マクロを追加
  • OpenSSL互換性レイヤーを使用するプロジェクトでは、特定のAPIだけを残し、サイズを縮小したい場合があります。このリリースでは、–enable-opensslextraオプションでビルドした場合に、余分なエラーキューが無効になるよう–disable-errorqueueビルドフラグを追加
  • その他に新機能については、ダウンロードファイルに含まれるREADMEをご覧ください。

最適化のハイライト:

  • 秘密鍵タイプを指定して鍵タイプを決定するためにPKCS11を更新
  • 単精度ビルドでのCortex-M RSA/Dアセンブリコードのパフォーマンス向上
  • 検証パラメーターhostNameおよびipasc(–enable-opensslextraビルド)をチェックするようDoVerifyCallbackを更新
  • QSHおよびCryptocell向けのビルドで入力引数に対しヌル値の正常性チェックを追加
  • 特定鍵長向け整数演算ライブラリ(SP math) のコードをMISRA-C向けに更新
  • 関数wc_CheckRsaKeyに追加されたRSA鍵の追加チェック
  • fseek、settings.hの修正されたマクロ、reallocサポートなど、EBSNETサポートの更新
  • 証明書拡張機能の名前文字列の解析の最適化
  • 回復不能なエラーが発生した場合のサンプルサーバー-xランタイム動作の調整
  • HMACを使用したBlake2bのサポートを削除
  • 生成されたテストファイルを整理するスクリプト scripts/cleanup_testfiles.shの追加
  • SendAlert呼び出しのログメッセージを追加し、証明書コールバックの検証後にアラートを送信するよう更新
  • AuthKeyIdでCRLを見つけるよう更新
  • BERからDER変換関数で再帰呼び出しをしないよう見直し
  • CRLの使用が有効な場合、マクロNO_SKIDの要件を削除

など。

主な修正:

  • IAR-EWARM 7.50.2でのIAR警告の修正
  • AESおよびハッシュアルゴリズムを使用したmmCAUのアライメント修正
  • NGINXおよびデバッグモードでのユニットテストの修正
  • ApacheがBIO再試行フラグ付きで結果が “want read” の場合の修正
  • GCC + AVX2を使用したcurve25519アセンブリ最適化の修正、入力値が大きいキャリーのPoly1305 AVX2アセンブリ最適化の修正
  • 静的メモリプールを使用し、WOLFMEM_IO_POOL_FIXEDとしてメモリをロードする場合のTLS I/Oバッファを使用したmemcpyの修正
  • X509およびwolfSSL_EVP_PKEY_freeのミューテックスを解放する修正。OPENSSL_EXTRA/ –enable-opensslextraビルドに適用
  • wolfSSL_CTX_load_static_memoryの代わりにwc_LoadStaticMemoryを呼び出すとき、WOLFSSL_CTXの前にヒープヒントが作成されるケースを修正
  • EVP CipherUpdate復号化の修正とテストケースの追加
  • wolfcrypt-pyインストールの問題を解決するwc_ed25519_check_keyのAPI可視性の修正
  • バンドルを検証するのではなくエラーになるPKCS7ストリーミングモードの修正
  • 追加のミューテックス保護、AES-GCM復号化認証タグ、CubeMXを使用したAES-CTRモード、OpenSTM32プロジェクトの更新など、STM32ポーティングの修正と更新
  • 受け入れ可能な最大ALPN長の正常性チェック
  • 構造をコピーするためにCRLを解析するときの追加の正常性チェック、境界チェックの修正
  • DH公開鍵を取得するときは、P、G、およびPubポインターをNULLに初期化してから、DHパラメーターフラグを所有するように設定。これにより、FreeSSLはDH鍵を正しく削除可能
  • シリアル番号生成時に最上位ビットをクリア
  • 確定的なECDSAを追加するよう修正し、追加ポイントのコーナーケースを修正
  • テストケース文字列のヌル終了およびPKCS7変数の初期化を含む、コベリティレポートの修正
  • –enable-scep –with-libz ビルドを使用した変数宣言が行われていなかったことを修正
  • ProcessPeerCertsがOPENSSL_EXTRAを使用してextsにメモリを適切に割り当て

など。

全修正点は、wolfSSL 4.3.0のダウンロード( https://www.wolfssl.jp/download/ )に含まれるREADMEまたはChangeLog.mdでご確認いただけます。
wolfSSLでは、常に最新バージョンの使用を推奨しています。お使いのwolfSSLをv4.3.0に更新し、最新のセキュリティを維持、また全ての修正と追加機能をご利用ください。

またこのリリースには、一部の脆弱性に関する修正が含まれております。ここでは概要を説明します。脆弱性の完全なリストは、READMEもしくは https://www.wolfssl.com/docs/security-vulnerabilities/ でご確認いただけます。詳細については、support@wolfssl.com へお問い合わせください。

対応項目の概要

    1. 証明書ドメイン名領域の最大値超え
    2. DTLSハンドシェイク時のメッセージサイズ
    3. ECCキャッシュ –enable-fpecc オプション使用時のみ
    4. wc_SignatureGenerateHash API使用時のみ
    5. DSA署名におけるサイドチャネル攻撃
    6. 内部ECC関数wc_ecc_mulmod_exにおけるサイドチャネル攻撃

wolfSSL 4.3.0に含まれる脆弱性対応:

  1. 証明書ドメイン名の解析時に追加の健全性チェックを行うための修正が追加されました。この修正により、ドメイン名の場所のインデックスが設定前に最大値を超えていないことが確認されます。報告された問題は、証明書を解析しており、-enable-opensslextra(マクロOPENSSL_EXTRA)を使用しているユーザー、またはこれをオンにする–enable-allなどのビルドオプションを利用している場合に影響します。修正に関連するCVEはCVE-2019-18840です。
  2. DTLSハンドシェイクメッセージの最大サイズに制限を設定するための修正。デフォルトでは、RFCは最大2 ^ 24-1バイト長のハンドシェイクメッセージサイズを受け入れますが、一般的な利用ケースでは、ハンドシェイクメッセージはそれほど大きくありません。ハンドシェイクメッセージに最大サイズの制限を設定すると、メモリの割り当てによる潜在的なDoS攻撃の回避に有効です。新しいデフォルトの最大サイズは、証明書チェーンの長さが9前後、2048ビットのRSA証明書を処理するように設定されています。これは、DTLSがオンになっていて、DTLSを使用しているアプリケーションがあるビルドのみに影響します。
  3. ECCキャッシングが有効(デフォルトではオフ)で、-enable-fastmathが使用されている場合の潜在的なハングを修正。 ECCキャッシュはデフォルトでオフになっており、-enable-allまたは–enable-fpeccを使用しているビルドでオンになります。この問題は、インポートされたすべてのECCキーの検証を有効にするマクロWOLFSSL_VALIDATE_ECC_IMPORTを使用しているビルドには影響しません。この潜在的なハングケースを修正するために、内部invmod関数への入力値の健全性チェックが追加されました。
  4. wolfCrypt RSA署名生成のラッパー関数で発生する可能性のあるフォールトインジェクション攻撃を修正するために作成後に署名を検証する追加の健全性チェックを追加しました。このチェックは、TLS接続(TLSステートマシン中のVerifyRsaSignの内部関数呼び出し)を備えたwolfSSLの現在のバージョンですでに自動的に行われています。このレポートは、wolfCrypt関数wc_SignatureGenerateHashを呼び出すユーザーにのみ影響し、現在のTLSユースケースには影響しません。レポートを提供いただいたウースター工科大学のダニエル・モギミ(@danielmgmi)氏に感謝します。
  5. DSA署名操作にブラインドが追加されました。 DSA署名は、ノンスのモジュラー反転中にBEEAアルゴリズムを使用します。これは、キャッシュや電力変動などのサイドチャネルを通じてノンスをリークする可能性があります。 ブラインド化を追加する修正により、DSA署名操作のサイドチャネル攻撃に対する耐性が高まります。 DSA(デフォルトでは無効)を有効にし、署名操作を実行しているユーザーは更新する必要があります。 DSAはTLS接続では使用されていません。 レポートを提供いただいたウースター工科大学のダニエル・モギミ(@danielmgmi)氏に感謝します。
  6. 内部ECC関数wc_ecc_mulmod_exに追加のサイドチャネルキャッシュ攻撃抵抗を追加する修正。 この機能は、デフォルトでECDSA署名操作で使用されます。 ユーザーは、ECDSA歌唱操作(サーバー側ECC TLS接続、クライアント側での相互認証)を実行するか、wolfCrypt ECC署名関数を呼び出す場合に更新する必要があり、外部ユーザーがキャッシュの高度な監視を実行できる可能性があります。レポートを提供いただいたウースター工科大学のダニエル・モギミ(@danielmgmi)に感謝します。

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

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

 

連載「wolfの実力」 第一回:Single Precision最適化

wolfSSLのようなライブラリを自社の製品に組み込む上でまず気になることの一つは、処理性能やメモリー資源の消費量といった性能指標ではないでしょうか。また、wolfSSLはお客様のそれぞれ異なる組み込み要件を満みたせるように豊富なビルドオプションを用意しています。この連載では、こうした豊富なオプションを使いこなしてwolfの実力を最大限に発揮させる方法について紹介していきたいと思っています。

wolfSSLでは製品に付帯してベンチマークプログラムを提供していて、お客様の製品の実装条件にあわせて実機でのベンチマークテストができるようになっています。この連載で紹介する様々な性能指標やオプションの効果についても、そのほとんどは手元の実機で実際に確認することができるはずです。ぜひ、評価用に提供しているオープンソース版wolfSSLのメリットをいかして、実際に確かめながらスムーズな製品導入を実現してください。

さて、連載第一回はSingle Precision最適化をとりあげることにします。ご存知の通り公開鍵暗号技術はTLSセキュリティの基盤となる最重要技術ですが、一方でTLS処理のなかで一番時間やリソースを消費してしまうやっかいな代物でもあります。

その公開鍵暗号アルゴリズムの基本をささえているのが大きな整数を効率的に演算する整数演算ライブラリです。その整数演算ライブラリの処理方法を大幅に見直し最適化するのがSingle Precision(SP, 特定鍵長向け)最適化です。通常の整数演算ライブラリが任意の整数長、鍵長の演算(Multiple Precision)に対応できるようになっているのに対して、SPでは特定の鍵長のアルゴリズムだけに着目して最適化します。

RSAやECCなどの公開鍵長やフォーマットは標準化されていて、その中から求められる鍵の強度により自由に選択することができるようになっています。しかし現実には実用的な見地から、多くの場合、例えばRSAならば2048ビット、ECCならば256ビットなど特定の鍵長を利用することになります。また、処理時間はおおざっぱには鍵長の二乗に比例して長くなるので、長い鍵ほど最適化への要求が高まります。

現在wolfSSL(v4.3.0)のSP最適化は、RSA 2048, 3072, 4096ビット、ECC 256ビットに特化した最適化オプションです。この最適化によって、該当する鍵長の処理では大幅に処理時間を短縮することができます。また、スタックなどメモリー使用量も削減することができます。

ただし、最適化のためにループの排除などを行っているために、トレードオフとしてコードサイズが大きくなってしまうので、コード用のフラッシュメモリー領域には余裕が必要です。

図1は公開鍵暗号処理ごとの処理時間(相対値)を通常モードとSP最適化時で比較したものです。ご覧のように処理時間を大幅に短縮できます。

公開鍵暗号の処理はTLSハンドシェークの中で多数使用され、オーバーオールなハンドシェーク処理時間のなかでも大きなウエイトを占めています。SP最適化によってその部分の処理が大幅に短縮されるので、ハンドシェーク全体の処理時間から見ても大きく改善されます。図2は暗号スイート別に見たTLSハンドシェーク処理時間を通常モードとSP最適化時で比較したものです。

SP最適化オプションの利用方法:

現在のwolfSSLでは、SP最適化オプションはデフォルトでは無効化されています。最適化を有効化するには以下のオプションを指定します。

 

configureコマンドを利用する場合:

$ configure –enable-sp –enable-sp-asm –enable-sp-math

 

ヘッダーファイルを利用する場合:

#define WOLFSSL_HAVE_SP_RSA

#define WOLFSSL_HAVE_SP_DH

#define WOLFSSL_HAVE_SP_ECC

#define WOLFSSL_SP_ASM        // gcc利用の場合

#define WOLFSSL_SP_ARM32_ASM // ARMアーキテクチャ向け、gcc利用の場合

#define WOLFSSL_SP_MATH

 

 

ベンチマーク方法:

今回紹介した性能改善効果について実機で具体的にデータ収集したい場合は、製品に同梱されている下記のツールを使ってください。

 

アルゴリズム毎のベンチマーク

wolfSSLルート/wolfcrypt/benchmark/benchmark

 

TLSハンドシェークのベンチマーク

wolfSSLルート/examples/benchmark/tls_bench

 

ご質問がありましたら info@wolfssl.jp までご連絡ください。

wolfTips: 言語ラッパーを使いこなす– C# 編 —

C#言語用インターフェースを提供するwolfSSL C# ラッパーを使用する

wolfSSL をC# 言語から使用したいという方は、wolfSSL C# ラッパーを利用することが出来ます。wolfSSL C# ラッパー はSSL/TLS組み込みライブラリである wolfSSL とC#言語間のインターフェースを提供し、既存のC#アプリケーションへの wolfSSL ライブラリの統合を容易にします。

“言語ラッパーを使いこなす”、連載の最後は、wolfSSL C# ラッパー使用方法及びC#言語を使用したサーバーサンプルプログラムについて紹介します。

wolfSSL C# ラッパー に関する詳細は下記URLから参照可能です。

また、wolfSSL C# ラッパーのソースコードは wolfSSL のソースコードの“<wolfssl_root>/wrapper/CSharp” フォルダーに含まれます。

wolfSSL C# ラッパーをビルドする為に、Visual Studioの下記ソリューションファイルを開きます。

”<wolfssl_root>”/wrapper/CSharp/ wolfSSL_CSharp.sln

下記画面は、Visual Studio 2017 でソリューションファイルを開いたところです。wolfSSL C# ラッパーは、wolfSSL ライブラリと依存関係のある為、ソリューションファイルにプロジェクトとして含まれています。wolfSSL_CSharp プロジェクトをビルドすると wolfSSL ライブラリのプロジェクトもビルドされます。

この時wolfSSL ライブラリのプラットフォームツールセットはデフォルトでは、Visual Studio 2012(v110)ですので、お使いの Visual Studio のバージョンにあわせて変更します。また、.Net Framework はデフォルトで v4.5 です。こちらも、お使いの .Net Frameworkに変更するか v4.5 をインストールします。

ビルドを行うために、まず構成を選択するために、メニューの「ビルド」→「構成マネージャー」から構成マネージャーを起動します。

例えばRelease ビルド、64ビット版を作成する場合は、構成マネージャーのアクティブソリューション構成を「DLL Release」、アクティブソリューションプラットフォームを「x64」にそれぞれ選択します。

次に wolfSSL のビルドオプションとして HAVE_CSHARP をプリプロセッサマクロに追加します。wolfSSL プロジェクトのプロパティページから「C/C++」→プリプロセッサ→プリプロセッサの定義に HAVE_CSHARP を追加します。

ソリューションをビルドします。ビルドが成功すると、”<wolfssl_root>”/wrapper/CSharp/以下のフォルダーにDLL及び実行可能ファイルが作成されます。x64 の場合は下記フォルダーに作成されます。

”<wolfssl_root>”/wrapper/CSharp/x64/DLL Release

 

作成されたサンプルプログラムを実行してみます。コマンドプロンプトを起動し、上記フォルダーに移動し、実行します。

例えば、Pre-SharedKey を使用したTLSサーバーサンプルを起動します。

$cd ”<wolfssl_root>”/wrapper/CSharp/x64/DLL Release
$wolfSSL-TLS-PSK-Server.exe
Calling ctx Init from wolfSSL
Finished init of ctx …. now load in cert and key
Ciphers : RC4-SHA:RC4-MD5:DES-CBC3-SHA:AES128-SHA:AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-PSK-AES256-GCM-SHA384:DHE-PSK-AES128-GCM-SHA256:DHE-PSK-AES256-CBC-SHA384:DHE-PSK-AES128-CBC-SHA256:HC128-MD5:HC128-SHA:RABBIT-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-RC4-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-RC4-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-SHA256:AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDH-RSA-AES128-SHA:ECDH-RSA-AES256-SHA:ECDH-ECDSA-AES128-SHA:ECDH-ECDSA-AES256-SHA:ECDH-RSA-RC4-SHA:ECDH-RSA-DES-CBC3-SHA:ECDH-ECDSA-RC4-SHA:ECDH-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES128-GCM-SHA256:ECDH-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES128-GCM-SHA256:ECDH-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDH-RSA-AES128-SHA256:ECDH-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDH-RSA-AES256-SHA384:ECDH-ECDSA-AES256-SHA384:ECDHE-PSK-AES128-CBC-SHA256:EDH-RSA-DES-CBC3-SHA
Setting cipher suite to DHE-PSK-AES128-CBC-SHA256
Started TCP and waiting for a connection

 

対向のクライアントは wolfSSL ライブラリ付属の/example/client を使用できます。PSKを有効にし、wolfSSL ライブラリをビルドします。

$./configure –enable-psk

$make

/example/client を PSK を使用し起動します。下記例では、サーバーのアドレスは192.168.163.1 です。お使いの環境にあわせて変更ください。

$ ./example/client/client -s -l DHE-PSK-AES128-CBC-SHA256 -h 192.168.163.1

TLS通信が成功するとWindows側のコマンドプロンプトに下記のようなメッセージが出力されます。

Connection made wolfSSL_accept
SSL version is TLSv1.2
SSL cipher suite is TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
hello wolfssl!

 

DTLSのサンプルプログラムを使用する際には、対向のクライアントは下記のオプションを有効にしてください。

$./configure –enable-dtls –enable-psk

$make

 

今回はwolfSSL を C# 言語より利用するためのwolfSSL C#ラッパーを紹介しました。サポート済みAPIに関する情報は下記を参照ください。

https://www.wolfssl.com/documentation/wolfSSL-CSharp-API-Reference.pdf

wolfSSL C#ラッパーやサンプルプログラムの使い方に関するご質問はお気軽に support@wolfssl.com までお知らせください。

wolfTips: 言語ラッパーを使いこなす– Python 編 —

Python言語用インターフェースを提供するwolfSSL Python を使用する

wolfSSL をPython環境で使用したいという方は、wolfSSL Pythonパッケージを利用することが出来ます。wolfSSL PythonはSSL/TLS組み込みライブラリである wolfSSL とPython言語間のインターフェースを提供します。

Python の標準TLSライブラリは OpenSSL を利用していますが、リソース環境の制限が厳しい場合にはwolfSSLが有効な場合があります。そのようなケースでは一度wolfSSL Python を試してみてください。

今回は、wolfSSL Python の使用方法について紹介します。

wolfSSL Python に関する詳細は下記URLから参照可能です。

また、wolfSSL Python のソースコードは下記からダウンロード可能です。

 

OSX 64 や Linux 64 ビットをお使いの場合、wolfSSL Pythonをインストールするには事前にコンパイル済みの Python Wheelから簡単にインストール可能です。下記、コマンドを実行します。

$ pip install wolfssl

 

その他の環境やカスタマイズを行った wolfSSL ライブラリに対応したwolfSSL Pythonを使用するには次の手順を行います。

1.事前にgithub から取得したwolfSSL を少なくとも次の2つのオプションを指定し、ビルド・インストールを行います。

$./configure –enable-opensslextra –enable-sni
$make && make check
$sudo make install
  1. 事前にgithub から取得した wolfssl-py のビルドを行いインストールします
$ cd wolfssl-py
// wolfSSL ライブラリがデフォルトのフォルダーにインストールされている場合
$USE_LOCAL_WOLFSSL=1 pip install .//wolfSSL ライブラリがカスタムのパスへインストールされている場合
$USE_LOCAL_WOLFSSL=/tmp/install pip install .

 

wolfSSL Python インストール後の確認は wolfssl-py フォルダーで下記コマンドを実行します。

$ pytest

または

$ py.test tests

インストールが正常に行われている場合、下記のようなログが出力されます。

$ pytest
====================== test session starts =================================
platform linux2 — Python 2.7.15+, pytest-3.3.2, py-1.5.2, pluggy-0.6.0
rootdir: /home/xxxx/gitrepo/wolfssl-py, inifile:
collected 35 items 

tests/test_client.py ….                                          [ 11%]
tests/test_context.py ……………………                [ 80%]
tests/test_methods.py …….                                  [100%]

================= 35 passed in 0.88 seconds =================================

 

 

次にhttps://wolfssl.github.io/wolfssl-py/index.html#document-installation にあるソケットを利用したTLSクライアントの例を試してみます。

wolfssl_TLSclient_ex.py などとファイル名で Python プログラムを作成します。このプログラムでは、TLS 1.2 を使用しwww.python.org と通信を試みます。

import socket
import wolfssl
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
context = wolfssl.SSLContext(wolfssl.PROTOCOL_TLSv1_2)
secure_socket = context.wrap_socket(sock)
secure_socket.connect((“www.python.org”, 443))
secure_socket.write(b”GET / HTTP/1.1\n\n”)
print(secure_socket.read())
secure_socket.close()

作成したプログラムを実行します。

$ python wolfssl_exa2.py
HTTP/1.1 500 Domain Not Found
Server: Varnish
Retry-After: 0
content-type: text/html
Cache-Control: private, no-cache
connection: keep-alive
X-Served-By: cache-hnd18736-HND
Content-Length: 221
Accept-Ranges: bytes
Date: Mon, 27 Jan 2020 00:50:34 GMT
Via: 1.1 varnish
Connection: keep-alive<html>
<head>
<title>Fastly error: unknown domain </title>
</head>
<body>
<p>Fastly error: unknown domain: . Please check that this domain has been added to a service.</p>
<p>Details: cache-hnd18736-HND</p></body></html>

 

WireShark などのツールを使うと TLS 1.2 で通信を行っていることが分かります。

今回wolfSSL を Python言語より利用するためのパッケージwolfSSL Python を紹介しました。Python言語用のインターフェースは、他にも wolfCrypt 使用のみに特化した wolfCrypt Python パッケージもございます(URL: https://wolfssl.github.io/wolfcrypt-py/)。wolfSSL Python の使い方や、wolfCrypt Python に興味がある方はお気軽に support@wolfssl.com までお知らせください。

ET/IoT Technology 名古屋 2020出展、セミナー開催のご案内

wolfSSL Japanは、2020/2/5 ~ 6に開催されるET/IoT Technology 名古屋 2020に出展いたします。

日時: 2020年 2月5日(水)〜2月6日(木)10:00〜17:00(最終日は16時まで)
会場: 吹上ホール(名古屋市中小企業振興会館)
wolfSSLブース番号: K19
展示会ウェブサイト: http://www.jasa.or.jp/etnagoya/
同時開催展:TECH Biz EXPO 2020 / フロンティア21エレクトロニクスショー2020

セミナーを期間中会場内で開催いたします。

【E-2】IoTデバイスのための「安全なファームウェア更新」 <<事前登録制>>

日時: 2020年2月 6日(木)15:00~15:45

IoTは今、実証実験から実用化の時代に入りつつあり、IoTデバイスにも本格的なセキュリティが求められるようになっています。ネットワーク通信の安全性はもちろん、長期間使用されるデバイスが将来にわたり安全に進化し、製品競争力を常に強化し続けていけるための、安全なファームウェア更新が注目されはじめています。
このセッションでは、ファームウェア更新を安全に実行するための基本的コンポーネントとしてセキュアブートローダーの仕組みから始まり、ハードウェアセキュリティとの連携や遠隔更新への拡張などIoTシステム全体が継続して安全に進化していくために必要な仕組みについて紹介していきます。

展示会への事前登録の上、セミナーへの事前登録ください。

みなさまのご来場を心よりお待ちしております。
現地での個別打ち合わせをご希望の方は、info@wolfssl.jp までご連絡ください。

wolfCrypt FIPS 140-3

FIPS 140-3が承認されたことに伴い、wolfCryptは今後FIPS 140-3での認証取得を計画しています。

2019年3月22日に連邦情報処理標準FIPS 140-3が承認されました。FIPS 140-3は、FIPS 140-2の漸進的な進歩であり、ISO 19790:2012およびISO 24759:2017の参照を含み標準化されています。歴史的にISO 19790はFIPS 140-2に基づいていましたが、その時から進歩を続けています。 FIPS 140-3は、セキュリティ要件についてISO 19790を基にしています。FIPS 140-3を別の標準として保持することで、NISTは必要に応じてISO標準に含れない要件を追加で義務付けることが可能となっています。

wolfCrypt FIPS 暗号モジュールは、2つのFIPS 140-2認証証明書#2425と#3389を取得しています。認証証明書#3389にはTLS 1.3に必要なアルゴリズムサポートが含まれており、wolfSSL組み込みSSL / TLSライブラリと組み合わせて使用することで、TLS 1.3クライアントおよびサーバーをサポートできます。

wolfCryptはFIPS 140-3の認証取得を計画しています。wolfCryptの最新FIPS 140-2認証証明書(#3389)の詳細については、こちらをご覧ください。 wolfSSLでは今年、wolfSSL FIPS Ready版もリリースしています!wolfSSL FIPS Ready版オープンソース版は、ダウンロードページからご利用いただけます。このリリースの詳細はブログで紹介しています。

 

wolfCryptのFIPS 140-3検証済みバージョン、また御社製品がFIPS要件を満たす為にwolfSSLがどう役立つのかご興味のある方は、fips@wolfssl.com  までご連絡ください。

さらに詳しい情報は弊社問い合わせ窓口 info@wolfssl.jp までご連絡ください。
原文: https://www.wolfssl.com/wolfcrypt-fips-140-3-2/

Japan IT Week 関西内「組込みシステム開発技術展」出展のご案内

wolfSSL Japanは、来年1月に開催される第4回 Japan IT Week 関西内、組込みシステム開発技術展に出展いたします。

日時: 2020年1月29日(水)〜1月31日(金) 10:00~18:00(最終日のみ17時まで)
会場: インテックス大阪
wolfSSLブース番号: 3号館13-8
展示会ウェブサイト: https://www.japan-it-osaka.jp/

TLS 1.3対応wolfSSL組み込みシステム向けTLSライブラリ、FIPS140-2認証済みwolfCrypt FIPSほか、wolfBoot、wolfTPM、wolfMQTT、wolfSSHなどのご紹介を行います。ぜひお気軽にwolfSSLのブースへお立ち寄りください。

みなさまのご来場を心よりお待ちしております。

wolfTips: 言語ラッパーを使いこなす — JAVA 編 —

JAVA言語用インターフェースを提供するwolfSSL JNI を使用する

wolfSSL をJAVA環境でも使用したいという方は、wolfSSL JNIを利用することが出来ます。wolfSSL JNI はSSL/TLS組み込みライブラリである wolfSSL とJAVA言語間のインターフェースを提供します。今回は、wolfSSL JNI の使用方法について紹介します。

wolfSSL JNI は下記URL、もしくはGithubからダウンロード可能です。

[Github URL]

 

まずwolfSSL でJNIオプションを指定しビルドを行います。オプションは下記を指定します。

$./configure –enable-jni

$make

$sudo make install

 

次にJAVAのコンパイルを行いますが、事前に下記パッケージのインストールが必要になります。

  • Java SDK
    • Oracle JDK, Open JDK や Android を含むいずれかの JDK
  • JUnit (junit.org よりダウンロード可能)
    • junit-4.12.jar
    • hamcrest-core-1.3.jar

 

junit-4.12.jar 及び hamcrest-core-1.3.jarのダウンロード後にCLASSPATH環境変数を設定します。Linux 環境では例えば下記のように設定します。

$export CLASSPATH=$CLASSPATH:/usr/share/java/junit­4.12.jar:/usr/share/java/hamcrest­core­1.3.jar

 

次にJUNIT_HOME環境変数もセットします。

$export JUNIT_HOME=/usr/share/java

 

wolfSSL JNI のコンパイルを行います。ダウンロードサイトまたはGithub より取得したwolfSSL JNIソースコードのトップフォルダに移動後、次のコマンドを実行します。

$./java.sh

$ant

 

ant により、Unitテストも同時に実行されます。ビルドが成功している場合、下記のようなログが出力されます。

Buildfile: /home/foo/tmp/wolfssl-jni-1.4.0/build.xml

 

clean:

[delete] Deleting directory /home/ foo /tmp/wolfssl-jni-1.4.0/build/test

[delete] Deleting directory /home/ foo /tmp/wolfssl-jni-1.4.0/build

[delete] Deleting directory /home/ foo /tmp/wolfssl-jni-1.4.0/examples/build

 

default-javac-flags:

 

init:

[mkdir] Created dir: /home/ foo /tmp/wolfssl-jni-1.4.0/build

[mkdir] Created dir: /home/ foo /tmp/wolfssl-jni-1.4.0/examples/build

[mkdir] Created dir: /home/ foo /tmp/wolfssl-jni-1.4.0/build/test

[mkdir] Created dir: /home/ foo /tmp/wolfssl-jni-1.4.0/build/reports

……

[junit]          usePskIdentityHint()                       … passed

[junit]          getPskIdentityHint()                        … passed

[junit]          getPskIdentity()                 … passed

[junit]          freeSSL()                                         … passed

[junit]          Testing use after free                        … passed

[junit] RSA Class

[junit]          RSA()                                              … passed

[junit] ECC Class

[junit]          ECC()                                              … passed

[junit] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.904 sec

 

build:

 

BUILD SUCCESSFUL

Total time: 8 seconds

 

wolfSSL JNI パッケージには、サンプルのクライアントとサーバーが含まれています。使用方法は、ソースコードのルートフォルダでサーバーを起動します。

$./example/server.sh

 

次にクライアントを起動します。

$./example/client.sh

 

TLS通信が成功している場合、以下のログが表示されます。

$ ./examples/server.sh

Started server at ubuntu/127.0.1.1, port 11111

 

waiting for client connection…

client connection received from 127.0.0.1 at port 11111

 

issuer : /C=US/ST=Montana/L=Bozeman/O=wolfSSL_2048/OU=Programming-2048/CN=www.wolfssl.com/emailAddress=info@wolfssl.com

subject : /C=US/ST=Montana/L=Bozeman/O=wolfSSL_2048/OU=Programming-2048/CN=www.wolfssl.com/emailAddress=info@wolfssl.com

SSL version is TLSv1.2

SSL cipher suite is TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

client says: hello from jni

 

$ ./examples/client.sh

Connected to 127.0.0.1 on port 11111

 

issuer : /C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/

CN=www.wolfssl.com/emailAddress=info@wolfssl.com

subject : /C=US/ST=Montana/L=Bozeman/O=wolfSSL/OU=Support/

CN=www.wolfssl.com/emailAddress=info@wolfssl.com

SSL version is TLSv1.2

SSL cipher suite is TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

got back: I hear you fa shizzle, from Java!

 

サンプルのクライアントとサーバーには wolfSSL に含まれるサンプルのクライアントとサーバー同様、さまざまなオプションが存在しますので “-h” オプションで確認してみてください。

今回は wolfSSL を JAVA言語より利用するためのパッケージwolfSSL JNI を紹介しました。wolfSSL JNIは wolfSSL API のうちよく使われる主要なものだけを JNI として提供するものです。その他にも必要な API がある場合は追加サービスも提供しますのでお気軽にご相談ください。

またwolfSSL では wolfSSL JNI 以外にも、JavaでSSL/TLSプロトコルのフレームワークである JSSE をサポートする wolfJSSE の提供を予定しています。今回紹介しました、wolfSSL JNI の使い方や、新機能 wolfJSSE に興味がある方はお気軽に support@wolfssl.com までお知らせください。

オートモーティブ ワールド出展のお知らせ

wolfSSLは2020年開催のオートモーティブ ワールド内、第 8 回 コネクティッド・カー EXPOに出展します。

会期:2020年1月15日(水) – 17日(金)、10:00 – 18:00 (最終日は17:00まで)
会場:東京ビッグサイト
wolfSSLブース番号: S26-29
展示会ウェブサイト: https://www.connected-car.jp/ja-jp.html

米国シアトルに本社を置くwolfSSLは、組み込みシステム向けに軽量なセキュリティライブラリを提供しています。2004年の創業以来、世界各国で1,000社以上のOEMカスタマーを持ち、中でも自動車業界では早くから採用が進んできました。TLS1.3に世界で初めて対応したwolfSSL SSL/TLSライブラリと、自動車業界での採用事例をご紹介いたします。

またFIPS140-2取得済みwolfSSL FIPS暗号ライブラリ、安全なファームウェアアップデートを実現するwolfBootほか、wolfTPM、wolfMQTT、wolfSSHなどもご案内しております。ぜひwolfSSLのブースへお気軽にお立ち寄りください。

みなさまのご来場を心よりお待ちしております。
現地での個別打ち合わせをご希望の方は、info@wolfssl.jp までご連絡ください。

Posts navigation

1 2 3 4 35 36 37