MCP (Model Context Protocol) のセキュリティ -【第3回】通信の安全性を高める！MCPにおける暗号化の基礎

## 1. はじめに
こんにちは。MCP (Model Context Protocol) のセキュリティについて学ぶブログシリーズの第3回です。

前回の[第2回](https://qiita.com/QueryPie/items/51b45e9110f9c8562c8f)では、MCPを利用する上で「誰が（認証）」、「何をして良いのか（認可）」を管理する仕組みについて解説しました。正しいユーザーだけが、許可された操作を行えるようにすることは、セキュリティの第一歩です。

しかし、認証と認可がしっかりしていても、ユーザーとMCPサーバーの間でやり取りされる通信の内容そのものが、第三者に覗き見られたり、途中で書き換えられたりしては意味がありません。そこで今回は、通信の安全性を確保するための重要な技術である **「暗号化」** について、その基本的な仕組みと重要性を説明します。

## 2. 暗号化が必要な理由およびその重要性
私たちがインターネットを使って情報をやり取りするとき、そのデータは一直線に相手に届くわけではありません。自宅や会社のコンピューターから、いくつもの中継地点（ルーターなどのネットワーク機器）を経由して、目的のサーバーに届けられます。

この通信経路の途中で、悪意のある第三者がデータを盗み見ようとする **「盗聴（とうちょう）」のリスク** があります。また、**データを不正に書き換えてしまう「改ざん（かいざん）」のリスク** も存在します。

![2. 暗号化が必要な理由およびその重要性 - visual selection (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4058228/db28753a-ba0f-4487-8351-19ce0871ab66.png)

これを例えるなら、重要な情報が書かれたハガキをそのままポストに投函するようなものです。配達の途中で誰かに読まれてしまうかもしれませんし、内容を書き換えられてしまう可能性もゼロではありません。

MCPで扱う情報には、機密性の高いモデルの構造やパラメータ、学習データ、予測結果、あるいはユーザーのアカウント情報などが含まれることがあります。もしこれらの情報が盗聴されたり、改ざんされたりすれば、企業秘密の漏洩、誤った分析結果による損害、プライバシーの侵害など、深刻な問題につながる可能性があります。

そこで登場するのが **「暗号化」** です。暗号化は、通信されるデータを、特別なルールを知らない第三者には意味が分からないように変換する技術です。これにより、たとえ通信途中でデータが傍受されたとしても、その内容を読み取ることを極めて困難にし、盗聴のリスクを大幅に減らすことができます。また、改ざんを検知する仕組みと組み合わせることで、データの完全性を守ることにも繋がります。つまり、MCPを安全に利用するためには、通信の暗号化が不可欠なのです。

## 3. 暗号化の基本的な仕組み
暗号化の基本的な考え方は、「元のデータ **（平文：誰でも読める状態のデータ）** 」を、特定の計算ルール **（暗号アルゴリズム）** と、秘密の合言葉のような情報 **（暗号鍵）** を使って、「意味不明なデータ **（暗号文）** 」に変換することです。

**例え話:** 古代ローマの将軍カエサル（シーザー）が使ったとされる簡単な暗号で考えてみましょう。
- **平文:** HELLO
- **暗号アルゴリズム:** 各アルファベットを、アルファベット順で3つ後ろにずらす。
- **暗号鍵:** 「3つ後ろにずらす」という情報。
- **暗号文:** KHOOR

この「3つずらす」というルール（鍵）を知らない人には、"KHOOR" が何を意味するのかすぐには分かりません。

![3. 暗号化の基本的な仕組み - visual selection (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4058228/6c6e697b-f622-4429-9cf5-51e8baac491d.png)

暗号化されたデータを受け取った正規の受信者は、同じアルゴリズムと正しい鍵（この例では「3つ前にずらす」という情報、**復号鍵** ）を使って、暗号文を元の平文に戻します。この逆の変換作業を **「復号」** といいます。

- **暗号文:** KHOOR
- **アルゴリズム:** 各アルファベットを3つ前にずらす。
- **復号鍵:** 「3つ前にずらす」という情報。
- **復号された平文:** HELLO

実際のコンピュータで使われる暗号アルゴリズムは、このシーザー暗号よりもはるかに複雑ですが、基本的な「鍵を使ってデータを変換し、元に戻す」という考え方は同じです。そして、この **「鍵」をいかに安全に管理するか** が、暗号システムの安全性において非常に重要になります。

## 4. 暗号化の具体例
暗号化にはいくつかの方式がありますが、ここでは代表的な2つの考え方と、それらを組み合わせた方法を紹介します。
#### 1. 共通鍵暗号方式 (Symmetric Encryption)
- **仕組み:** 暗号化に使う鍵と、復号に使う鍵が同じ方式です。
- **例え話:** 太郎さんと花子さんが、二人だけが持つ同じ合鍵を使って開け閉めできる箱で手紙を交換するようなイメージです。手紙を入れるときも出すときも、同じ鍵を使います。
- **メリット:** 計算処理が高速なので、大量のデータを効率的に暗号化・復号できます。
- **デメリット:** 通信を始める前に、どうやって相手に安全に「共通の鍵」を渡すか、という問題があります（鍵配送問題）。もし鍵が漏洩したら、第三者に通信内容が解読されてしまいます。
- **代表的なアルゴリズム:** AES (Advanced Encryption Standard) などが広く使われています。
#### 2. 公開鍵暗号方式 (Public-key Encryption / Asymmetric Encryption)
- **仕組み:** 暗号化に使う鍵（公開鍵）と、復号に使う鍵（秘密鍵）が異なるペアになっている方式です。公開鍵は文字通り、誰に知られても構いませんが、秘密鍵は自分だけが厳重に保管します。
- **例え話:** 花子さんが、誰でも手紙を投函できる「公開ポスト（公開鍵）」を設置し、そのポストを開けるための「自分専用の鍵（秘密鍵）」を持っているイメージです。太郎さんが花子さんに手紙を送りたい場合、公開ポストに手紙を入れれば、秘密鍵を持っている花子さんしかその手紙を読むことはできません。
- **メリット:** 鍵の受け渡しが安全に行えます。公開鍵を相手に送る際に、途中で盗み見られても問題ありません。
- **デメリット:** 共通鍵暗号方式に比べて、計算処理に時間がかかります。
- **代表的なアルゴリズム:** RSA (Rivest–Shamir–Adleman) などが有名です。
#### 3. ハイブリッド暗号方式 (Hybrid Encryption)
- **仕組み:** 上記の共通鍵暗号方式と公開鍵暗号方式の「良いところ取り」をした方式です。実際のインターネット通信（例えば、ウェブサイトのHTTPS通信で使われるTLS/SSLというプロトコル）で広く使われています。
- **流れ（イメージ）:** 
1. まず、処理が遅いけれど安全に鍵交換ができる **公開鍵暗号方式** を使って、通信相手との間で一時的な「共通鍵」を安全に共有します。
2. その後、実際の大量のデータ（MCPでやりとりされるモデル情報など）の暗号化・復号は、処理が高速な **共通鍵暗号方式** を使って、その共有した共通鍵で行います。
- これにより、安全性と効率性を両立させています。

MCPの通信においても、このような暗号化方式（特にハイブリッド方式を実現するTLS/SSLなど）を利用することで、通信経路の安全性を確保することが一般的です。
## 5. 盗聴や改ざんのリスクと暗号化による対策
もしMCPの通信が暗号化されていなかったら、どのような危険があるでしょうか？
#### 盗聴リスク
- ユーザーIDやパスワードが平文で送信され、第三者に盗まれる。
- 送受信されるモデルのパラメータや構造、学習データ、予測結果などの機密情報が漏洩する。
- 個人情報などが含まれていた場合、プライバシー侵害につながる。
#### 改ざんリスク:
- 攻撃者が通信途中でデータを書き換え、MCPサーバーに不正な指示を送る（例：モデルの設定を勝手に変更する）。
- サーバーからの応答データを書き換え、ユーザーに偽の情報を表示させる（例：分析結果を不正に操作する）。
- これにより、システムの誤動作、不正な操作の実行、誤った意思決定などを引き起こす可能性があります。
#### 暗号化による対策:
- **盗聴への対策:** 通信内容が暗号化されていれば、たとえ第三者に傍受されても、その内容は意味不明な文字列に見えるだけです。正しい鍵がなければ元の情報を読み取ることは極めて困難であり、機密情報の漏洩リスクを大幅に低減できます。
- **改ざんへの対策:** 暗号化は主に「機密性（盗聴防止）」を高める技術ですが、多くの場合、「完全性（改ざん防止）」を保証する仕組みも併用されます。例えば、データが送信されてから受信されるまでの間に改ざんされていないかを確認するための電子的な署名のようなもの（ **メッセージ認証コード(MAC)** や **デジタル署名** と呼ばれる技術）を付与します。受信側は、この情報を検証することで、データが途中で書き換えられていないかを確認できます。もし改ざんされていれば、それを検知して警告を発したり、そのデータを破棄したりすることができます。TLS/SSLなどのプロトコルには、このような改ざん検知の仕組みも含まれています。

![暗号化による対策_ - visual selection (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4058228/68b42c2a-8053-403d-872c-d6c86cb28537.png)


このように、暗号化と関連技術を組み合わせることで、MCP通信における盗聴と改ざんの両方のリスクに効果的に対処することができます。
## 6. まとめ
今回は、MCP通信の安全性を確保するために不可欠な「暗号化」について、その必要性、基本的な仕組み、代表的な方式、そして盗聴や改ざんといったリスクへの対策効果を解説しました。
- インターネット上の通信には盗聴や改ざんのリスクが伴うため、機密情報を扱うMCPでは暗号化が必須です。
- 暗号化は「鍵」を使ってデータを意味不明な状態に変換し、鍵を持つ人だけが元に戻せるようにする技術です。
- 「共通鍵暗号」「公開鍵暗号」、そしてそれらを組み合わせた「ハイブリッド暗号」などの方式があり、通信の安全性と効率性を両立させています。
- 暗号化は、盗聴を防ぐだけでなく、改ざん検知の仕組みと組み合わせることで、通信データの完全性も保護します。

前回の「認証・認可」と今回の「暗号化」によって、MCP利用におけるセキュリティの基盤がかなり固まってきました。しかし、どんなに頑丈に見えるシステムにも、思わぬ弱点、すなわち **「脆弱性」** が存在する可能性があります。そして、攻撃者はその弱点を巧みに突いてくることがあります。

そこで次回、 **第4回「知っておきたいMCPの脆弱性 - 攻撃手法と対策の初歩」** では、MCPシステムに潜む可能性のある脆弱性とはどのようなものか、そしてそれらを悪用した攻撃手法の例と、その基本的な対策について説明していきます。どうぞご期待ください。