TLS1.2とTLS1.3の違いは何?

 TLS 1.3のリリースでは、セキュリティとスピードの向上が約束されています。しかし、TLS 1.2からTLS 1.3への変更は、これらの改善をどのように実現しているのでしょうか?以下に、改善がどのように達成されたか、TLS 1.2と1.3の相違点をあげてみましょう。

TLS1.3は、2017年4月のインタネット・ドラフトで定義されました。wolfSSLは、TLS 1.3をサポートする最初のライブラリの1つです。

TLS 1.3

•対称暗号アルゴリズムでは、全ての古いアルゴリズムは取り除かれ、TLS1.3で残っているアルゴリズムはすべて、AEAD(Authenticated Encryption with Associated Data) で認証された暗号化を使用します。

•ゼロRTT(0-RTT)モードが追加され、一部のセキュリティ特性を犠牲にすることで一部のアプリケーションデータの接続設定では往復回数を削減できるようになりました。

•ServerHello以後のすべてのハンドシェークメッセージは暗号化されます。

•HMACベースのExtract-and-Expand Key Derivation Function(HKDF)をプリミティブとして使用して、鍵導出関数を再設計しました。

•ハンドシェイク状態遷移は、より一貫性があり余分なメッセージを取り除くよう再構成されました。

•ECCは基本仕様に入り、複数の新しい署名アルゴリズムが含まれています。楕円曲線のポイント・フォーマット・ネゴシエーションは、各楕円曲線の単一ポイント・フォーマットを使用することで削除されました。

•圧縮、カスタムDHEグループ、およびDSAが削除されました。RSAパディングでPSSが使用されるようになりました。

•TLS 1.2のバージョンネゴシエーション検証メカニズムは、拡張機能のバージョンリストを使用して廃止されました。

•セッション再開については、サーバー側の状態の有無にかかわらず旧バージョンTLSのPSKベースの暗号スイートから、1つの新しいPSK交換方式に統一されました。

さらに詳しい情報は弊社問い合わせ窓口 (info@wolfssl.com, info@wolfssl.jp: 日本語)までお問い合わせください。

原文: https://www.wolfssl.com/wolfSSL/Blog/Entries/2017/6/15_Differences_between_TLS_1.2_and_TLS_1.3.html
wolfSSLホーム:www.wolfssl.jp (English:www.wolfssl.com)

TLS v1.3の優位性:何が良くなったのか?
wolfSSLは先日TLS1.3 を発表しました。 最新バージョンのTLS仕様に切り替えることでさまざまな利点を享受することができます。

いままでの仕様と大きく異なる点の一つとしてまず気づくのは、フルハンドシェイク時の往復回数の削減かと思います。TLSの旧版のプロトコルではクライアントがサーバーにアプリケーション・データを送出する前に2往復を必要としていました。TLS1.3では1往復で済んでしまいます。さらに、サーバはクライアントに対する最初のハンドシェイク・メッセージのレスポンスとしてアプリケーション・データを送ってしまうことも可能になりました!これは、ネットワークの遅れがあっても、安全な接続を確立するのに要する時間への影響は少なくなるということです。

もう一つの違いは、TLS1.3のセッション再開です。これまでのTLSではクライアントはサーバがキャッシュを探すためのセッションIDを持っていました。もし、マッチした場合は同じセキュリティ・パラメータを使うことになりました。これは、非常に単純ですが、サーバ間で状態を共有する必要がありました。

TLS1.3では、これまでのTLSのチケット・システムを再活用する形で、画期的に進歩しました。ハンドシェーク完了後にサーバはクライアントに対して新しいセッション・チケットを送るようにします。この、クライアントに対するひとかたまりのデータであるチケットは、以前のセッションIDのように鍵を探すデータベースとして利用することができます。ただしこのデータは、前の接続に対応する、自身で暗号化、認証された値とすることができます。つまり、サーバは状態を持たないということになります!

最後に、この仕様はプロトコルの安全性を証明すべく暗号化の専門家によって評価されてきました。どんなセキュリティの証明も完全ではありえませんが、以前あったような再ネゴシエーション、プロトコル・バージョンのダウングレーディング、圧縮、 CBCやパディングに対する攻撃などは改善され、プロトコルは全体的により強い攻撃耐性を実現しています。

原文: https://www.wolfssl.com/wolfSSL/Blog/Entries/2017/6/12_The_TLS_v1.3_Advantage.html

wolfSSLホーム:www.wolfssl.jp (English:www.wolfssl.com)

wolfSSL #TLS13: TLS 1.3 βバージョンを公開しました

軽量SSL/TLSライブラリwolfSSLはTLS1.3(ドラフト18)クライアント、サーバ両方のサポートを公開しました。

wolfSSL (wolfSSL 3.11.1)ベータ版リリースは弊社ダウンロードページから利用いただけます。このリリースはベータ版で、ユーザフィードバックのために設計されたものです。wolfSSLの安定版、商用利用可能バージョンを必要とされるかたは3.11.0をご利用ください。

このリリースで TLS1.3 を利用するには、以下のように./configureコマンドで“–enable-tls13” オプションを指定してください:

$ unzip wolfssl-3.11.1-tls13-beta.zip
$ cd wolfssl-3.11.1-tls13-beta
$ ./configure –enable-tls13
$ make

TLS1.3を指定するために、wolfSSL コンテクスト(WOLFSSL_CTX)を生成する際に、新しいクライアント/サーバメソッドとして次のような二つのメソッドが追加されました。

WOLFSSL_METHOD *wolfTLSv1_3_server_method(void);
WOLFSSL_METHOD *wolfTLSv1_3_client_method(void);

wolfSSLサンプルクライアントとサーバで簡単にTLS1.3機能を使うことができます。例えば、wolfSSLサンプルクライアントをTLS1.3、暗号スイートTLS13-AES128-GCM-SHA256 でサーバに接続する場合は、次のように、”-v” オプションに “4” を指定し、”-l”オプションで暗号スイートを指定します:

$ ./examples/server/server -v 4 -l TLS13-AES128-GCM-SHA256
$ ./examples/client/client -v 4 -l TLS13-AES128-GCM-SHA256

サンプルクライアントは外部サーバに接続することもできます。例えば、wolfSSLサイトにTLS1.3で接続する場合は次のように指定します。

$ ./examples/client/client -v 4 -l TLS13-AES128-GCM-SHA256 -h www.wolfssl.com -p 443 -g -A ./certs/wolfssl-website-ca.pem

このコマンドで”-h”はホスト、”-g”はHTTP GET要求、”-A” はサーバ認証のためのCA証明書を指定します。

このバージョンでは、TLS1.3 の暗号スイートとして下記のものをサポートしています:

TLS13-AES128-GCM-SHA256
TLS13-AES256-GCM-SHA384
TLS13-CHACHA20-POLY1305-SHA256
TLS13-AES128-CCM-SHA256
TLS13-AES128-CCM-8-SHA256

TLS1.3サポートについてさらに詳しい情報は弊社問い合わせ窓口 (info@wolfssl.com, info@wolfssl.jp: 日本語)までお問い合わせください。

原文: https://www.wolfssl.com/wolfSSL/Blog/Entries/2017/5/30_TLS_1.3_Now_Available_in_wolfSSL_TLS13.html
wolfSSLホーム:www.wolfssl.jp (English:www.wolfssl.com)

wolfSSL 3.11.0がダウンロードいただけます

wolfSSL 3.11.0がダウンロードいただけます。このリリースには数々の新しい機能がふくまれています。いくつかのセキュリティ脆弱性対応(低レベル:5、中レベル:1)も含まれています。

 

続いて、新機能と修正対応のまとめをご紹介します。

脆弱性対応

KNOX Security, Samsung Research AmericaのYueh-Hsun Lin, Peng Li氏からのレポートによる3つの低レベル脆弱性に対する修正が含まれています。

  1. wc_DhParamsLoad()関数内で、GetLength() の返却値がゼロの場合の範囲外のメモリーアクセスを修正。修正前は、wolfSSLはDhParamsLoad()関数内の範囲外メモリーを読む可能性がありました。
  2. wc_DhAgree()で不正な鍵を受け入れてしまう可能性を修正。
  3. X509_STOREにCA証明書を追加する場合、二重にメモリ解放してしまう場合を修正

静的メモリー機能を有効化した場合のメモリ管理関する低レベルの脆弱性を1件修正しました。静的メモリーはデフォルトでは無効化されています。GitHub ユーザ hajjihraf さまからのレポートに感謝します。

wolfSSL_X509_NAME_get_text_by_NID()関数内の領域外への書き込みに関して低レベルの脆弱性を1件修正しました。この関数はTLSや暗号化処理では使用されていませんが、アプリケーションから明示的に呼ばれた場合、範囲外への書き込みを許してしまう可能性がありました。Cisco Talos(http://talosintelligence.com/vulnerability-reports/).のAleksandar Nikolic氏によって発見されました。

中レベル1件の脆弱性は証明書署名のチェックに関するものです。3.9.10, 3.10.0, 3.10.2 では、相手方の証明書の署名が壊れていても適切にフラグ付けされない可能性がありました。Castles TechnologyのWens Lo, James Tsai, Kenny Chang, Oscar Yang氏に感謝します。

NGINX support

wolfSSLのNGINX Webサーバビルド時のサポートを開始しました。NginxとwolfSSLは、大規模接続に対して、軽量、高速、スケーラブルである点で、大変相性が良い組み合わせとなるはずです。

HAproxy support

wolfSSLはHAproxyロードバランサーへのコンパイル組み込みサポートを開始しました。HAproxyはTCP, HTTPベースのアプリケーションに負荷バランス、プロキシ機能を提供します。

Intel QuickAssist 非同期サポート

新たに、インテルQuickAssist非同期暗号サポートが加わりました。もう少し詳しい説明は、別のブログ投稿をご蘭ください。

性能強化

  • 51-ビットのCurve25519 が追加されました。これによって、128ビットタイプに比べた性能が改善されます。
  • fastmath (USE_FAST_MATHオプション) で、ALT_ECC_SIZEを使用しない場合のヒープサイズが削減されます。

ソフトウェア・ポーティング

既存のwolfSSLソフトウェアのポーティングが更新されました:

wpa_supplicant
stunnel 5.40
–  uTKernel  (WOLFSSL_uTKERNEL2オプション) の改善
– 最近のファイルと追加のArduinoスクリプト
– Windows向けCRLビルドの修正

そして、新しいポーティングの追加:

  • tenAsys社 INtime RTOS

ハードゥエア・ポーティング

  • NXP Hexiwear の例の追加。 “IDE/HEXIWEAR” ディレクトリー下にあります。
  • STM32 ハードウェア・アクセラレータの修正。. wolfSSLのSTM32プラットフォームでの使用に関してはこちらを参照してください。

プロトコルと暗号スイートのアップデート

SSL/TLS/DTLS プロトコル・レベル、暗号スイートサポートでも以下のような修正をしています:

  • 旧版ベースのChaCha20-Poly1305 暗号スイートとの互換性
  • 一つのDTLSレコード内で複数ハンドシェークメッセージを可能に
  • セッションチケットの一部としてセッションIDをエコーする場合を除いてセッションキャッシュがオフの場合は、サーバ側のセッションID送出を禁止するよう修正
  • IIS互換性のためにTLS1.2でSHA1を使用できるよう新たなオプションを追加 (WOLFSSL_ALLOW_TLS_SHA1)
  • PSKアイデンティティーバッファーの最大サイズを128文字のアイデンティティー長を考慮するよう修正
  • 全てのデフォルト暗号が正しくセットアップされるよう修正 (PR #830参照)
  • 並列アクセスのための送信のみのためのWOLFSSLオブジェクトを生成するwolfSSL_write_dup()を追加
  • プライベイト鍵インポート時のTLS楕円曲線選択に関する修正
  • 鍵と証明書の切り替えのためのTLSレイヤーコンテキスト操作の改善
  • HAVE_CRL_IOが定義された際の、インラインCRLサポートの追加
  • サブジェクト鍵アイデンティファイヤーが非クリティカルであるマークと証明書ポリシー拡張にてポリシーOIDSが二回以上現れないことのチェックの追加。中国Xidian 大学Institute of Computing Theory and Technology (ICTT) のZhenhua Duan教授、Cong Tian教授、博士課程Chu Chen氏に感謝します。Zhenhua Duan教授、Cong Tian教授はChu Chen氏の指導教官。

 

暗号化の追加、変更

wolfCrypt暗号ライブラリーにもいくつかの変更があります:

  • ASN1解析関数の整理見直し
  • ECDSAによるSignedDataのPKS#7サポート追加
  • インテルRDRAND と RDSEED のためのRNGスピードアップ
  • 64ビット出力を使ったインテルRDRANDの性能改善
  • RNGソースにRDRANDを使用するための “–enable-intelrand”オプション追加
  • RNG ARC4サポートの削除
  • 曲線名からサイズとIDを得るためのECCヘルパー関数
  • ECCプライベイト鍵のみのインポートとエクスポート
  • ECC Cofactor DH (ECC-CDH) のサポート
  • PKCS#8生成関数
  • mp_intのアロケーションをmp_growまで遅延させる通常整数演算のスピードアップ
  • AES-GCMの最小認証タグサイズの正常性チェック。サジェッションをいただいたSamsung Research America、KNOX SecurityのYueh-Hsun Lin氏、 Peng Li氏に感謝します。

テストと警告の修正

  • Coverity Scan警告レポートの修正で、さらによくテストされたwolfSSL SSL/TLSインプリメンテーションをお届けすることができました。弊社のテストに関してはブログポストをご蘭ください。
  • さらに充実したwolfCryptのテストアプリケーション(test.c)がwolfSSLにバンドルされます。

 

さらに詳しい情報は弊社問い合わせ窓口 (info@wolfssl.com, info@wolfssl.jp: 日本語)までお問い合わせください。

原文: https://wolfssl.com/wolfSSL/Blog/Entries/2017/5/4_wolfSSL_3.11.0_Now_Available.html
wolfSSLホーム:www.wolfssl.jp (English:www.wolfssl.com)

Japan IT Week、IoT/M2M展に出展します

Japan IT Week: IoT/M2M展 (組込みシステム開発技術展(ESEC)併催)に出展します。イベントご参加の方はぜひお立ち寄りください。

日時:2017年5月10日(水)から12日(金)まで
場所:東京ビッグサイト
ブース:W14-35

ioT_m2m_logo

さらに詳しい情報は弊社問い合わせ窓口 (info@wolfssl.com, info@wolfssl.jp: 日本語)までお問い合わせください。

wolfSSLホーム:www.wolfssl.jp (English:www.wolfssl.com)