Amazon Web Services ブログ

AWS IoT Core で TLS 1.3 のサポート開始

はじめに

AWS IoT Coreトランスポートセキュリティオプションの中でトランスポート層セキュリティ (TLS) バージョン 1.3 をサポートすることをお知らせでき大変嬉しく思います。TLS 1.3 は、TLS 1.2 と比較して強化されたセキュリティとパフォーマンスをお客様に提供します。お客様は、デフォルトの Amazon Trust Services (ATS) データプレーンエンドポイント、および設定可能なエンドポイント (AWS 管理ドメインカスタムドメイン) に TLS バージョンを設定できます。お客様は、単一のデータエンドポイントまたは複数のデータエンドポイントで同時に TLS 1.2 と TLS 1.3 の両方を運用でき、さまざまなデバイスをサポートおよび管理できます。

「AWS IoT Core で TLS 1.3 を使用して世界中の何百万台もの車両を接続する最初のカスタマーになれたことを嬉しく思います。車両と車両データのセキュリティは私たちの最優先事項です」と、Mercedes-Benz Research & Development North America Inc.のクラウドトランスポートおよびネットワーキングマネージャーである Brian Black 氏は言います。「新しいモデルでは、AWS IoT Core 上に構築されたコネクテッドカープラットフォームに接続する際に最新の TLS バージョン 1.3 を使用しているため、あらゆる通信の安全性が確保されています。ただし、TLS 1.2 をまだ使用している古いモデルもあります。AWS IoT Core は両方の TLS バージョンをサポートする機能を提供しています。これにより、我々のお客様はセキュリティを強化するためにいつ車をアップデートしたいかを柔軟に決定できます。」

TLS 1.3 のサポートは AWS IoT Core Device Advisor にも拡張されています。Device Advisor は、デバイスで使用されている TLS バージョンを自動的に検出して処理するようになりました。TLS テストケースは TLS 1.2 または 1.3 のどちらにも使用できます。

このブログ記事では、TLS 1.3 によって提供される機能強化の概要と、この機能が AWS IoT Core にどのように統合されるかを説明し、TLS 1.3 エンドポイントの使用を開始する方法について説明します。

TLS 1.3 の機能強化

TLS 1.3 には、1.2 に比べて次のような利点があります。

  1. セキュリティの向上: より強力な暗号化アルゴリズムと鍵交換メカニズム。
  2. 高速なハンドシェイク: ハンドシェイク処理に必要なラウンドトリップの回数を減らし、接続を高速化します。
  3. 遅延の軽減: ゼロラウンドトリップタイム (0-RTT) モードが含まれます。
  4. プライバシーの向上: 今後秘密鍵が漏洩したとしても、過去のセッションを復号することはできません。
  5. シンプルな設計: 一部のレガシー機能が削除され、実装と保守が容易になります。
  6. トラフィック分析に対する耐性の向上: 以前のバージョンよりも多くのデータを暗号化します。

AWS IoT Coreとの統合

AWS IoT Core には、多様なデバイスを AWS IoT Core データサービスに接続するため、柔軟なデータエンドポイントとドメイン設定オプションが既に用意されています。デフォルトの Amazon Trust Services (ATS) データプレーンエンドポイントを使用することも、追加のデータエンドポイントを設定することもできます。これらには別の認証方法がある場合もあれば、ユーザー管理証明書付きのカスタムドメインを使用する場合もあります。AWS IoT Core には、各データエンドポイントに関連した設定可能な TLS セキュリティポリシーという概念が追加されました。

Figure 1: Domain configurations with TLS security policies

図 1: TLS セキュリティポリシーが適用されたドメイン構成

TLS セキュリティポリシーには、次に示す 5 つの設定のうち、 1 つを設定できます。

  1. TLS 1.2+1.3                            IoTSecurityPolicy_TLS13_1_2_2022_10
  2. TLS 1.3 のみ                            IoTSecurityPolicy_TLS13_1_3_2022_10
  3. TLS 1.2 のみ                            IoTSecurityPolicy_TLS12_1_2_2022_10
  4. TLS 1+1.1+1.2 (レガシー)         IoTSecurityPolicy_TLS12_1_0_2016_01
  5. TLS 1+1.1+1.2 (レガシー)         IoTSecurityPolicy_TLS12_1_0_2015_01

各ポリシーでサポートされている TLS バージョン、TCPポート、暗号スイートの詳細については、TLS ポリシー表を参照してください。

既存のドメインとデータエンドポイントは、既存のデバイス群との互換性のためにデフォルトで TLS 1.2 になっています。新しいドメインとデータエンドポイントのデフォルトは TLS 1.2+1.3 です。レガシーポリシーは一部の地域でのみ利用可能であり、新しく設計する際には使用しないでください。

AWS IoT Core で TLS 1.3 を使用する

データエンドポイントに TLS セキュリティポリシーを割り当てるには、AWS コンソールまたは AWS CLI のいずれかで実施できます。

このセクションでは以下について説明します。

  • AWS コンソールを使用してデフォルトの ATS ドメインデバイスデータエンドポイントに TLS 1.3 を適用します
  • AWS コンソールを使用して、AWS 管理対象ドメインの設定可能なエンドポイントに TLS 1.3 を適用します
  • AWS CLI を使用してデフォルトの ATS ドメインデバイスデータエンドポイントに TLS 1.3 を適用します
  • AWS CLI を使用して AWS 管理対象ドメインの設定可能なエンドポイントに TLS 1.3 を適用します

前提条件

以下の AWS IoT Core の権限が必要です。

  • describe-endpoint
  • list-domain-configurations
  • describe-domain-configuration
  • update-domain-configuration

ご自身の環境(ローカルターミナル、AWS アカウント、およびリージョン)を設定した 2.11.17 以上の AWS CLI を準備します。

AWS コンソールを使用してデフォルトの ATS ドメインデバイスデータプレーンエンドポイントに TLS 1.3 を適用する

ステップ 1: ATS データプレーンエンドポイントの更新

  1. AWS IoT コンソールを開きます。
  2. メニューで [設定] を選択します。
  3. デバイスデータエンドポイントで、ドロップダウンから セキュリティポリシー を選択します。

Figure 2: Device data endpoint - Select Security Policy

図 2: デバイスデータエンドポイント — セキュリティポリシーの選択

ドロップダウンで行った選択は、デバイスデータエンドポイントに自動的に保存されます。

AWS コンソールを使用して、AWS 管理対象ドメインの設定可能なエンドポイントに TLS 1.3 を適用する

ステップ 1: ドメイン設定を作成する

  1. AWS IoT コンソールを開きます。
  2. メニューで [設定] を選択します。
  3. ドメイン設定を作成」をクリックします。
  4. ドメイン設定名を入力してください。
  5. カスタムドメイン設定パネルで、ドロップダウンから「セキュリティポリシー」を選択します。
  6. ドメイン設定を作成」をクリックして、新しい構成を保存します。

Figure 3: Create domain configuration with TLS1.3 only

図 3: TLS 1.3 のみでドメイン構成を作成

メイン設定パネルで新しいドメイン設定を確認します。

Figure 4: Saved domain configuration

図 4: 保存されたドメイン構成

AWS CLI を使用してデフォルトの ATS ドメインデバイスデータプレーンエンドポイントに TLS 1.3 を適用する

ステップ 1: AWS CLI を使用してデフォルトのデバイスデータエンドポイントを取得します。

aws iot describe-endpoint --endpoint-type iot:Data-ATS

これにより、TLS 設定を適用するエンドポイントアドレスが返されます。

{ 
    "endpointAddress": "your_specificendpointxxxx-ats.iot.us-west-2.amazonaws.com"
}

ステップ 2: デフォルトのデバイスデータエンドポイントの現在の TLS 設定を確認します。

aws iot describe-domain-configuration --domain-configuration-name "iot:Data-ATS"

これにより、セキュリティポリシーの TLS バージョンを含む現在のエンドポイント設定の詳細が返されます。

{    
    "domainConfigurationName": "iot:Data-ATS",     
    "domainConfigurationArn": "arn:aws:iot:us-west-2:AWSACCOUNTID:domainconfiguration/iot:Data-ATS",
    "domainName": "your_specific_endpointxxxx-ats.us-west-2.iot.amazonaws.com",
    "serverCertificates": [],     
    "domainConfigurationStatus": "ENABLED",
    "serviceType": "DATA",
    "domainType": "ENDPOINT",     
    "lastStatusChangeDate": "2023-03-16T17:57:59.194000+08:00",
    "tlsConfig": {
         "securityPolicy": "IoTSecurityPolicy_TLS12_1_2_2022_10" 
    }
 }

この例では、セキュリティポリシーに TLS 1.2 のみのポリシーが適用されている例を示します。これは、TLS 1.3 機能がリリースされる前に存在していたエンドポイントのケースに該当します。新しいエンドポイントはすべてデフォルトで TLS 1.2 以上に設定されます。また、古いエンドポイントについては、TLS 1.2+1.3にアップグレードするか(サーバーとデバイスが可能な限り高いものを選択できるようにする)、TLS 1.3のみを適用するか(デバイスが TLS 1.3を受け入れられない場合は TLS ハンドシェイクが失敗する)を選択できます。

ステップ 3: エンドポイント設定を TLS 1.2+1.3 に更新するには、次のように入力します。

aws iot update-domain-configuration --domain-configuration-name "iot:Data-ATS" --tls-config securityPolicy="IoTSecurityPolicy_TLS13_1_2_2022_10"

ステップ 4: エンドポイントの TLS バージョンの互換性をテストするには、次のコマンドを実行します。

curl https://your_specific_endpointxxxx-ats.us-west-2.iot.amazonaws.com --insecure --verbose --tlsv1.2 --tls-max 1.3

正しく設定されていれば、使用可能な最高レベル (TLS 1.3) でハンドシェイクが成功したことを返します。

........ 
* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256 
.......

AWS CLI を使用して AWS 管理対象ドメインの設定可能なエンドポイントに TLS 1.3 を適用する

デバイス群に AWS が管理するドメインまたはカスタムドメインを使用する場合は、そのドメインで設定可能なエンドポイントを設定することもできます。上記の手順を繰り返して、ドメイン設定名「IoT: data-ats」をカスタムドメイン設定名に置き換えます。完全修飾ドメイン名 (FQDN) エンドポイントの場合は、必ず FQDN エンドポイント URL を使用してください。詳細は、AWS 管理ドメインの作成と設定およびカスタムドメインの作成と設定を参照してください。

aws iot update-domain-configuration --domain-configuration-name "foobar" --tls-config securityPolicy="IoTSecurityPolicy_TLS13_1_2_2022_10"

まとめ

このブログでは、TLS 1.3 の利点と、それを AWS IoT Core に統合する方法について紹介しました。次に、さまざまなタイプのデータエンドポイントとドメインの TLS バージョンを設定する手順を説明しました。TLS セキュリティポリシーにより、ユーザーはデフォルトの ATS データプレーンエンドポイントだけでなく、ユーザー設定可能なエンドポイントやカスタムドメインにも必要な TLS バージョンを設定できます。

TLS 1.2 および 1.3 デバイスを AWS IoT Core に接続し始めるには、デベロッパーガイドを参照するか、「AWS IoT Core の TLS セキュリティポリシー」をご覧ください。

AWS IoT サービスとソリューションの詳細については、AWS IoT にアクセスするか、お問い合わせください。

著者について

Greg BreenGreg Breen は、アマゾンウェブサービスのシニア IoT スペシャリストソリューションアーキテクトです。オーストラリアを拠点に、アジア太平洋地域のお客様の IoT ソリューションの構築を支援しています。組み込みシステムに関する豊富な経験を持つ彼は、製品開発チームがデバイスを市場に投入するのを支援することに特に関心があります。
Jen O'HehirJen O’Hehir は、アマゾンウェブサービスのシニアソリューションアーキテクトです。西オーストラリア州の鉱業に強いバックグラウンドを持つ Jen は、AWS を初めて使用するお客様が、革新的で運用上最適化されたクラウドおよびハイブリッドソリューションを構築できるよう支援することを楽しんでいます。彼女は、OT データを解放して、データ主導の運用上の意思決定と運用モデルの改善を促進することに情熱を注いでいます。

この記事は Introducing TLS 1.3 support in AWS IoT Core の日本語訳です。IoT Consultant の正村 雄介が翻訳しました。