Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 13094] ファイルの概要

本コミットは、Go言語の標準ライブラリであるcrypto/tlsパッケージに、AES256ビット暗号化をサポートする新しいTLS暗号スイートを追加するものです。具体的には、TLS_RSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHAの2つの暗号スイートが追加され、これによりTLS通信におけるより強力な暗号化オプションが提供されるようになりました。

コミット

commit 57557c0d49c7153c520f0fb947378b9a573af26c
Author: Benjamin Black <b@b3k.us>
Date:   Fri May 18 11:06:58 2012 -0400

    tls: add AES256 ciphers
    
    R=golang-dev, rsc, agl
    CC=golang-dev
    https://golang.org/cl/6188061
---
 src/pkg/crypto/tls/cipher_suites.go | 4 ++++\n 1 file changed, 4 insertions(+)

diff --git a/src/pkg/crypto/tls/cipher_suites.go b/src/pkg/crypto/tls/cipher_suites.go
index 5039f319f5..a647e19aa1 100644
--- a/src/pkg/crypto/tls/cipher_suites.go
+++ b/src/pkg/crypto/tls/cipher_suites.go
@@ -55,9 +55,11 @@ var cipherSuites = []*cipherSuite{
 	{TLS_RSA_WITH_RC4_128_SHA, 16, 20, 0, rsaKA, false, cipherRC4, macSHA1},\n 	{TLS_RSA_WITH_3DES_EDE_CBC_SHA, 24, 20, 8, rsaKA, false, cipher3DES, macSHA1},\n 	{TLS_RSA_WITH_AES_128_CBC_SHA, 16, 20, 16, rsaKA, false, cipherAES, macSHA1},\n+\t{TLS_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, rsaKA, false, cipherAES, macSHA1},\n \t{TLS_ECDHE_RSA_WITH_RC4_128_SHA, 16, 20, 0, ecdheRSAKA, true, cipherRC4, macSHA1},\n \t{TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, 24, 20, 8, ecdheRSAKA, true, cipher3DES, macSHA1},\n \t{TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 16, 20, 16, ecdheRSAKA, true, cipherAES, macSHA1},\n+\t{TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, ecdheRSAKA, true, cipherAES, macSHA1},\n }\n \n func cipherRC4(key, iv []byte, isRead bool) interface{} {\n@@ -182,7 +184,9 @@ const (\n \tTLS_RSA_WITH_RC4_128_SHA            uint16 = 0x0005\n \tTLS_RSA_WITH_3DES_EDE_CBC_SHA       uint16 = 0x000a\n \tTLS_RSA_WITH_AES_128_CBC_SHA        uint16 = 0x002f\n+\tTLS_RSA_WITH_AES_256_CBC_SHA        uint16 = 0x0035\n \tTLS_ECDHE_RSA_WITH_RC4_128_SHA      uint16 = 0xc011\n \tTLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0xc012\n \tTLS_ECDHE_RSA_WITH_AES_128_CBC_SHA  uint16 = 0xc013\n+\tTLS_ECDHE_RSA_WITH_AES_256_CBC_SHA  uint16 = 0xc014\n )\n```

## GitHub上でのコミットページへのリンク

[https://github.com/golang/go/commit/57557c0d49c7153c520f0fb947378b9a573af26c](https://github.com/golang/go/commit/57557c0d49c7153c520f0fb947378b9a573af26c)

## 元コミット内容

このコミットの目的は、Go言語の`crypto/tls`パッケージにAES256暗号スイートを追加することです。具体的には、以下の2つの暗号スイートが追加されます。

*   `TLS_RSA_WITH_AES_256_CBC_SHA`
*   `TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA`

これにより、TLS通信においてより強力な256ビットAES暗号化の利用が可能になります。

## 変更の背景

このコミットが行われた2012年当時、インターネットにおけるセキュリティ意識は高まりつつあり、より強力な暗号化アルゴリズムへの移行が求められていました。AES(Advanced Encryption Standard)は、米国政府によって採用されたブロック暗号であり、その中でも256ビット鍵長を持つAES256は、当時から現在に至るまで非常に高いセキュリティ強度を持つとされています。

TLS(Transport Layer Security)プロトコルは、インターネット上での安全な通信を確立するために不可欠な技術です。TLS通信のセキュリティは、使用される「暗号スイート」に大きく依存します。暗号スイートは、鍵交換、認証、暗号化、ハッシュといった複数のアルゴリズムの組み合わせを定義します。

AES128は当時すでに広く利用されていましたが、より高いセキュリティ要件を持つアプリケーションや、将来的な脅威(例えば量子コンピュータの発展)に対する耐性を考慮すると、AES256のサポートは重要なステップでした。このコミットは、Go言語の`crypto/tls`パッケージが提供するセキュリティ機能を強化し、より幅広いセキュリティ要件に対応できるようにすることを目的としています。

## 前提知識の解説

### TLS (Transport Layer Security)

TLSは、インターネットなどのコンピュータネットワーク上で安全な通信を行うための暗号化プロトコルです。ウェブブラウジング(HTTPS)、電子メール、VoIPなど、様々なアプリケーションで利用されています。TLSは、以下の主要な機能を提供します。

*   **認証**: 通信相手が正当なサーバーまたはクライアントであることを確認します。
*   **機密性**: 通信内容が第三者に傍受されても解読されないように暗号化します。
*   **完全性**: 通信内容が途中で改ざんされていないことを保証します。

TLSのバージョンには、TLS 1.0, 1.1, 1.2, 1.3などがあり、新しいバージョンほどセキュリティが強化されています。

### Cipher Suite (暗号スイート)

暗号スイートは、TLSハンドシェイク中にクライアントとサーバーが合意する、一連の暗号アルゴリズムの組み合わせです。通常、以下の4つの主要な要素で構成されます。

1.  **鍵交換アルゴリズム (Key Exchange Algorithm)**: クライアントとサーバーが共有秘密鍵を安全に確立する方法を決定します。例: RSA, Diffie-Hellman (DH), Elliptic Curve Diffie-Hellman (ECDH)。
2.  **認証アルゴリズム (Authentication Algorithm)**: サーバー(およびオプションでクライアント)の身元を検証するために使用されます。通常、デジタル署名アルゴリズムが用いられます。例: RSA, DSA, ECDSA。
3.  **暗号化アルゴリズム (Encryption Algorithm)**: 実際のアプリケーションデータを暗号化するために使用される対称鍵暗号アルゴリズムです。例: AES, 3DES, RC4。
4.  **ハッシュアルゴリズム (Hashing Algorithm)**: メッセージの完全性を保証するために使用されるハッシュ関数です。例: SHA-1, SHA-256, SHA-384。

暗号スイートの命名規則は、通常`TLS_KEY_EXCHANGE_WITH_ENCRYPTION_ALGORITHM_HASH_ALGORITHM`の形式に従います。

### AES (Advanced Encryption Standard)

AESは、米国国立標準技術研究所(NIST)によって2001年に制定された対称鍵ブロック暗号です。現在、最も広く使用されている暗号化アルゴリズムの一つであり、非常に高いセキュリティ強度を持つと評価されています。AESは、鍵長によってAES128(128ビット鍵)、AES192(192ビット鍵)、AES256(256ビット鍵)の3つのバリアントがあります。鍵長が長いほど、理論的なセキュリティ強度が高まります。

*   **AES128**: 128ビットの鍵を使用し、10ラウンドの暗号化処理を行います。ほとんどの用途で十分なセキュリティを提供し、AES256よりも高速です。
*   **AES256**: 256ビットの鍵を使用し、14ラウンドの暗号化処理を行います。AESの中で最も強力なバリアントであり、最高レベルのセキュリティが要求される環境(例: 政府機関の機密データ)で利用されます。

### CBC (Cipher Block Chaining) モード

CBCは、ブロック暗号の動作モードの一つです。各ブロックの暗号化が前のブロックの暗号化結果に依存するため、同じ平文ブロックが連続しても異なる暗号文ブロックが生成されます。これにより、パターン分析による攻撃を防ぐことができます。しかし、CBCモードはパディングオラクル攻撃(例: Lucky Thirteen, POODLE)などの脆弱性が発見されており、実装によってはセキュリティ上の問題を引き起こす可能性があります。TLS 1.3では、CBCモードは廃止され、より安全なAEAD(Authenticated Encryption with Associated Data)モード(例: GCM)が推奨されています。

### SHA (Secure Hash Algorithm)

SHAは、メッセージのハッシュ値を計算するための暗号学的ハッシュ関数群です。ハッシュ値は、メッセージの「指紋」のようなもので、メッセージが改ざんされていないことを確認するために使用されます。

*   **SHA-1**: 160ビットのハッシュ値を生成します。2017年に衝突攻撃の脆弱性が実証され、現在では安全ではないと見なされています。
*   **SHA-2**: SHA-256, SHA-384, SHA-512など、複数のバリアントがあります。SHA-1よりも強力で、現在広く使用されています。
*   **SHA-3**: SHA-2の後継として開発された新しいハッシュ関数です。

### RSA Key Exchange

RSA鍵交換は、TLSハンドシェイクにおいて、クライアントが生成した「プリマスターシークレット」をサーバーの公開鍵で暗号化し、サーバーに送信することで共有秘密鍵を確立する方式です。サーバーは自身の秘密鍵でプリマスターシークレットを復号します。

**問題点**: RSA鍵交換の最大の欠点は、「前方秘匿性 (Perfect Forward Secrecy, PFS)」を提供しないことです。もしサーバーの秘密鍵が将来的に漏洩した場合、その秘密鍵で暗号化された過去のすべての通信が解読されてしまう可能性があります。これは、同じサーバーの秘密鍵が複数のセッションの鍵交換に使用されるためです。

### ECDHE Key Exchange

ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) 鍵交換は、楕円曲線ディフィー・ヘルマン鍵交換の「一時的 (Ephemeral)」なバリアントです。各TLSセッションごとに新しい一時的な鍵ペアを生成して鍵交換を行います。

**利点**: ECDHEの最大の利点は、**前方秘匿性 (PFS)** を提供することです。各セッションの鍵ペアが使い捨てであるため、たとえサーバーの長期的な秘密鍵が漏洩したとしても、過去の通信が解読されることはありません。また、従来のDiffie-Hellmanよりも少ない計算量で同等のセキュリティ強度を実現できるため、パフォーマンス面でも優れています。現代のTLS通信では、ECDHEが推奨される鍵交換方式です。

## 技術的詳細

本コミットで追加された2つの暗号スイートは以下の通りです。

1.  `TLS_RSA_WITH_AES_256_CBC_SHA`
2.  `TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA`

それぞれの暗号スイートの構成要素と、当時のセキュリティ状況における位置づけを詳細に解説します。

### `TLS_RSA_WITH_AES_256_CBC_SHA`

*   **鍵交換**: RSA
*   **認証**: RSA
*   **暗号化**: AES-256-CBC
*   **ハッシュ**: SHA-1

この暗号スイートは、鍵交換と認証にRSAを使用し、データ暗号化にAES256をCBCモードで、メッセージ認証にSHA-1を使用します。

**セキュリティ評価(2012年当時と現在)**:
2012年当時、AES256は非常に強力な暗号化アルゴリズムとして認識されており、その採用はセキュリティ強化の一環として歓迎されました。しかし、この暗号スイートは以下の点で現在では推奨されません。

*   **前方秘匿性の欠如**: RSA鍵交換を使用しているため、サーバーの秘密鍵が漏洩すると過去の通信がすべて解読されるリスクがあります。
*   **CBCモードの脆弱性**: CBCモードは、Lucky ThirteenやPOODLEなどのパディングオラクル攻撃に対して脆弱であることが判明しています。これらの攻撃は、TLS 1.2以前のバージョンで特に問題となります。
*   **SHA-1の脆弱性**: SHA-1は2017年に衝突攻撃が実証され、暗号学的に安全ではないと見なされています。メッセージ認証コード(MAC)としての利用はデジタル署名ほど致命的ではありませんが、それでもより強力なハッシュ関数(SHA-256など)への移行が推奨されます。

### `TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA`

*   **鍵交換**: ECDHE (Elliptic Curve Diffie-Hellman Ephemeral)
*   **認証**: RSA
*   **暗号化**: AES-256-CBC
*   **ハッシュ**: SHA-1

この暗号スイートは、鍵交換にECDHEを使用することで前方秘匿性を提供します。認証にはRSA、データ暗号化にはAES256をCBCモードで、メッセージ認証にはSHA-1を使用します。

**セキュリティ評価(2012年当時と現在)**:
2012年当時、ECDHEの導入は前方秘匿性を提供する点で画期的な進歩でした。これにより、サーバーの秘密鍵が漏洩しても過去の通信が安全に保たれるという重要なセキュリティ特性が追加されました。AES256の強力な暗号化と組み合わせることで、当時としては非常に堅牢な暗号スイートと見なされました。

しかし、現在では以下の点で推奨されません。

*   **CBCモードの脆弱性**: `TLS_RSA_WITH_AES_256_CBC_SHA`と同様に、CBCモードの脆弱性が存在します。
*   **SHA-1の脆弱性**: SHA-1の脆弱性も同様に問題となります。

### Go言語の `crypto/tls` パッケージ

Go言語の`crypto/tls`パッケージは、TLSプロトコルを実装するための標準ライブラリです。このパッケージは、TLSクライアントとサーバーの両方を構築するために必要な機能を提供します。これには、TLSハンドシェイクの管理、証明書の処理、暗号スイートの選択と適用などが含まれます。

このコミットは、`crypto/tls`パッケージがサポートする暗号スイートのリストにAES256ベースのものを追加することで、Go言語で開発されたアプリケーションがより強力な暗号化を利用できるようにしました。これにより、Go言語は当時の最新のセキュリティ要件に対応し、安全なネットワーク通信を実現するための基盤を強化しました。

## コアとなるコードの変更箇所

変更は`src/pkg/crypto/tls/cipher_suites.go`ファイルに対して行われています。

具体的には、`cipherSuites`という`cipherSuite`構造体のスライスに、新しい2つの暗号スイートの定義が追加されています。

```diff
--- a/src/pkg/crypto/tls/cipher_suites.go
+++ b/src/pkg/crypto/tls/cipher_suites.go
@@ -55,9 +55,11 @@ var cipherSuites = []*cipherSuite{
 	{TLS_RSA_WITH_RC4_128_SHA, 16, 20, 0, rsaKA, false, cipherRC4, macSHA1},\n 	{TLS_RSA_WITH_3DES_EDE_CBC_SHA, 24, 20, 8, rsaKA, false, cipher3DES, macSHA1},\n 	{TLS_RSA_WITH_AES_128_CBC_SHA, 16, 20, 16, rsaKA, false, cipherAES, macSHA1},\n+\t{TLS_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, rsaKA, false, cipherAES, macSHA1},\n \t{TLS_ECDHE_RSA_WITH_RC4_128_SHA, 16, 20, 0, ecdheRSAKA, true, cipherRC4, macSHA1},\n \t{TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, 24, 20, 8, ecdheRSAKA, true, cipher3DES, macSHA1},\n 	{TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 16, 20, 16, ecdheRSAKA, true, cipherAES, macSHA1},\n+\t{TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, ecdheRSAKA, true, cipherAES, macSHA1},\n }\n \n func cipherRC4(key, iv []byte, isRead bool) interface{} {\n@@ -182,7 +184,9 @@ const (\n \tTLS_RSA_WITH_RC4_128_SHA            uint16 = 0x0005\n \tTLS_RSA_WITH_3DES_EDE_CBC_SHA       uint16 = 0x000a\n \tTLS_RSA_WITH_AES_128_CBC_SHA        uint16 = 0x002f\n+\tTLS_RSA_WITH_AES_256_CBC_SHA        uint16 = 0x0035\n \tTLS_ECDHE_RSA_WITH_RC4_128_SHA      uint16 = 0xc011\n \tTLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA uint16 = 0xc012\n \tTLS_ECDHE_RSA_WITH_AES_128_CBC_SHA  uint16 = 0xc013\n+\tTLS_ECDHE_RSA_WITH_AES_256_CBC_SHA  uint16 = 0xc014\n )\n```

また、これらの新しい暗号スイートに対応する`uint16`定数も追加されています。

## コアとなるコードの解説

`cipher_suites.go`ファイルは、Go言語の`crypto/tls`パッケージがサポートするTLS暗号スイートの定義を含んでいます。

### `cipherSuites` スライスへの追加

`cipherSuites`は、`cipherSuite`構造体のポインタのスライスであり、各要素が特定の暗号スイートのプロパティを定義しています。追加された2行は以下の通りです。

1.  `{TLS_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, rsaKA, false, cipherAES, macSHA1},`
    *   `TLS_RSA_WITH_AES_256_CBC_SHA`: 暗号スイートの識別子。
    *   `32`: 鍵の長さ(バイト単位)。AES256は256ビット = 32バイトです。
    *   `20`: MAC(Message Authentication Code)の長さ(バイト単位)。SHA-1は160ビット = 20バイトです。
    *   `16`: IV(Initialization Vector)の長さ(バイト単位)。CBCモードのAESではブロックサイズと同じ16バイト(128ビット)が使用されます。
    *   `rsaKA`: 鍵交換アルゴリズムとしてRSAを使用することを示す定数。
    *   `false`: 前方秘匿性 (PFS) がないことを示すフラグ。RSA鍵交換はPFSを提供しません。
    *   `cipherAES`: 暗号化アルゴリズムとしてAESを使用することを示す関数ポインタまたは定数。
    *   `macSHA1`: メッセージ認証アルゴリズムとしてSHA-1を使用することを示す関数ポインタまたは定数。

2.  `{TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, ecdheRSAKA, true, cipherAES, macSHA1},`
    *   `TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA`: 暗号スイートの識別子。
    *   `32`: 鍵の長さ(バイト単位)。AES256は256ビット = 32バイトです。
    *   `20`: MACの長さ(バイト単位)。SHA-1は160ビット = 20バイトです。
    *   `16`: IVの長さ(バイト単位)。CBCモードのAESではブロックサイズと同じ16バイト(128ビット)が使用されます。
    *   `ecdheRSAKA`: 鍵交換アルゴリズムとしてECDHE-RSAを使用することを示す定数。
    *   `true`: 前方秘匿性 (PFS) があることを示すフラグ。ECDHE鍵交換はPFSを提供します。
    *   `cipherAES`: 暗号化アルゴリズムとしてAESを使用することを示す関数ポインタまたは定数。
    *   `macSHA1`: メッセージ認証アルゴリズムとしてSHA-1を使用することを示す関数ポインタまたは定数。

### `const` 定数の追加

`const`ブロックには、これらの新しい暗号スイートに対応する`uint16`型の識別子(コードポイント)が追加されています。これらの値は、TLSプロトコルにおいて特定の暗号スイートを一意に識別するために使用されます。

*   `TLS_RSA_WITH_AES_256_CBC_SHA uint16 = 0x0035`
*   `TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA uint16 = 0xc014`

これらの変更により、Go言語の`crypto/tls`パッケージは、TLSハンドシェイク中にこれらのAES256ベースの暗号スイートをネゴシエートし、利用できるようになります。これにより、Goアプリケーションはより強力な暗号化オプションを選択できるようになり、通信のセキュリティが向上します。

## 関連リンク

*   GitHubコミットページ: [https://github.com/golang/go/commit/57557c0d49c7153c520f0fb947378b9a573af26c](https://github.com/golang/go/commit/57557c0d49c7153c520f0fb947378b9a573af26c)
*   Go CL (Code Review): [https://golang.org/cl/6188061](https://golang.org/cl/6188061)

## 参考にした情報源リンク

*   TLS cipher suites AES256: [https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEU8wFAI1Sch-txvf_HWMojBl6VtfmSWhEZ8t0uuJa-G-eUV-xeRoemDTL0U_gOjnkaCKvTmEU9ChI7rvSFa9U-rxKzVlAhueAiwolxUEJum1ugNZXBr-anVKwcRsmjk81Z6Pk326DqkSbBO7YiS57NIejmdF0XXbeQsPg=](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEU8wFAI1Sch-txvf_HWMojBl6VtfmSWhEZ8t0uuJa-G-eUV-xeRoemDTL0U_gOjnkaCKvTmEU9ChI7rvSFa9U-rxKzVlAhueAiwolxUEJum1ugNZXBr-anVKwcRsmjk81Z6Pk326DqkSbBO7YiS57NIejmdF0XXbeQsPg=)
*   TLS_RSA_WITH_AES_256_CBC_SHA: [https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEEuSulgBFDdlUHaBCGvrRnj7MNscHJThHp4X-0G2rhUnGkypamDE2UdzFqZsVV7s5_--gGXOCM4nP8icwERPZoskAJYzgItIHAQ1_yOBvX5RKzI7z_Cl7ecyUCN_35wOdZ5_5HohGAdmVSyynvoA3tEWLfzFAT7CncttzWvfwnVd9Fgxw=](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEEuSulgBFDdlUHaBCGvrRnj7MNscHJThHp4X-0G2rhUnGkypamDE2UdzFqZsVV7s5_--gGXOCM4nP8icwERPZoskAJYzgItIHAQ1_yOBvX5RKzI7z_Cl7ecyUCN_35wOdZ5_5HohGAdmVSyynvoA3tEWLfzFAT7CncttzWvfwnVd9Fgxw=)
*   TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: [https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG-fapyj2SIn1Bz_v0Tja9FHe-htO7bI0CI8L_PwjbiawmWBHf-9yB9A09J_zD8qoEQegrJKIYG2AFm2tG_BbpC1nY6lrhiz76M8_rffLR6El-9mYZDb7P98mWx6PeEQar3eJyfcmuRjHAF8fT9dsGxHOHPDkf7zuJJoXRLRf-7FccO4szym07dg3JtJdAevSjVb6xhttltMrBZaJxHA3x19eXIvAFwblFhT4_vG7aVHBdC5qiLpo3vtn7jEaK7rQE=](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQG-fapyj2SIn1Bz_v0Tja9FHe-htO7bI0CI8L_PwjbiawmWBHf-9yB9A09J_zD8qoEQegrJKIYG2AFm2tG_BbpC1nY6lrhiz76M8_rffLR6El-9mYZDb7P98mWx6PeEQar3eJyfcmuRjHAF8fT9dsGxHOHPDkf7zuJJoXRLRf-7FccO4szym07dg3JtJdAevSjVb6xhttltMrBZaJxHA3x19eXIvAFwblFhT4_vG7aVHBdC5qiLpo3vtn7jEaK7rQE=)
*   Go crypto/tls package: [https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHVHMbFEzn3Y4-MBXe7aMStaqpYtJWFMQhMjEh5nxn-1g6Lfzw4Dl6wA8M68McLHH5bBIyTiMVgGSfyFKE7535VGjGApFggrfVr9CvbKmpY3Kkw6v6EGy9C](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHVHMbFEzn3Y4-MBXe7aMStaqpYtJWFMQhMjEh5nxn-1g6Lfzw4Dl6wA8M68McLHH5bBIyTiMVgGSfyFKE7535VGjGApFggrfVr9CvbKmpY3Kkw6v6EGy9C)
*   AES256 vs AES128 TLS security: [https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE-nCP3Qfw7EVpx5AC-QqJi3FcgowCejYaPCi-YPSg9-_nhelPtuWfxyAk8PhW05aevVBhTPC8LqkeCmqaxDhv1-XBvfALzun-Mi0qwIFZdDmy6mVtmnHbxqO_hX6NuTe2zkWJ-UDghjL-6sZf6BL4EuZ6YP1og7-YQAa5__q-oFc=](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQE-nCP3Qfw7EVpx5AC-QqJi3FcgowCejYaPCi-YPSg9-_nhelPtuWfxyAk8PhW05aevVBhTPC8LqkeCmqaxDhv1-XBvfALzun-Mi0qwIFZdDmy6mVtmnHbxqO_hX6NuTe2zkWJ-UDghjL-6sZf6BL4EuZ6YP1og7-YQAa5__q-oFc=)
*   CBC SHA TLS: [https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGpI9sPTqYoUPVDpTGBAw5i8EQF7IBycWFPn2Ebm5YcM5woSrOvKD9-9PLBS2xy1YLThF4TpZdJ2QzNU-aNTQ7i_tpCQLW6l62IUbAfSD5a5ye6_ktPL8ancLK_DYdMmhp6e4XTlOQ7wobixNMAzgjXWNd1BcX1nvr7_h_qCZ8HwHP7o2fCwFwVe9-ulQyNbHtIPA==](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGpI9sPTqYoUPVDpTGBAw5i8EQF7IBycWFPn2Ebm5YcM5woSrOvKD9-9PLBS2xy1YLThF4TpZdJ2QzNU-aNTQ7i_tpCQLW6l62IUbAfSD5a5ye6_ktPL8ancLK_DYdMmhp6e4XTlOQ7wobixNMAzgjXWNd1BcX1nvr7_h_qCZ8HwHP7o2fCwFwVe9-ulQyNbHtIPA==)
*   RSA key exchange TLS: [https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHtz_uUgaHVOU9h65T1F_zsYh8wPPFgjMa4QQuMlNHfOxyqkQasvOk_7dRDxtNUV7-p6M9acar6IXSH_dDFV9mQ1bH9YbbKeRZATZ5YCprbA0LMwdfBcRE_3SE9FbBbxMv2zYuQ-ADssK4uhBesyw==](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHtz_uUgaHVOU9h65T1F_zsYh8wPPFgjMa4QQuMlNHfOxyqkQasvOk_7dRDxtNUV7-p6M9acar6IXSH_dDFV9mQ1bH9YbbKeRZATZ5YCprbA0LMwdfBcRE_3SE9FbBbxMv2zYuQ-ADssK4uhBesyw==)
*   ECDHE key exchange TLS: [https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQF17VoYVW6K0-7RzFEsEmQ4Ylu0uc4h41BS_Ibt62wyilZXTldSELl0RyKZqbLCbvCWA9gGTNALgINgkkvA8rM_n3SRtwWijiqB6E1eDxIMhlJxzP0U7xCecJmjGBeo0NCI4ka4xfpI3747w8TPlTARZY1PfRraPhj7CC-fr2NEWmyMt6wac_Qe2-MSrg==](https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQF17VoYVW6K0-7RzFEsEmQ4Ylu0uc4h41BS_Ibt62wyilZXTldSELl0RyKZqbLCbvCWA9gGTNALgINgkkvA8rM_n3SRtwWijiqB6E1eDxIMhlJxzP0U7xCecJmjGBeo0NCI4ka4xfpI3747w8TPlTARZY1PfRraPhj7CC-fr2NEWrg==)