ブログ

証明書の役割

ショーン・ライト サムネイル
ショーン・ライト
2022年5月23日公開

このゲストブログはシリーズの一部であり、F5 との提携により作成されました。

CSR、PEM、DER、X509…証明書がある種の魔法のように見られるのも不思議ではありません。

初めて証明書を取得しなければならなかったとき、何をすればいいのか全く分かりませんでした。 私は無目的にたくさんのコマンドをコピーし、それが機能することを願いました。 しかし、セキュリティに関して言えば、誰かが盲目的にコマンドをコピーすることを期待するのは危険なことです。 証明書ほど重要なものはありません。

証明書は、TLS (および最も一般的には TLS を使用する HTTPS) 接続の基礎となります。 これを間違えると、接続が攻撃者に傍受されるリスクにさらされることになります (つまり、TLS 接続が提供する保護が実質的に無効になります)。

このブログは、証明書の役割、特に証明書管理について説明するシリーズの一部です。 最初の部分では、証明書の目的と、証明書が接続(つまり TLS 接続)のセキュリティ保護において重要な役割を果たす理由について説明します。

機密性の保証と完全性の確立

クライアントがサーバーに接続する場合、考慮する必要があるセキュリティ原則が 2 つあります。

1つ目は機密性です。 これは、クライアントとの間で送受信されるデータがそのトラフィックの外部の誰にも見られないようにするために重要です。 ログインページが良い例です。 入力したユーザー名とパスワードが、ログインしようとしているサーバーに転送される際に誰にも見られないようにする必要があります。 また、機密性はプライバシーの側面にも影響し、詮索好きな人があなたが閲覧しているアクションや情報を見るのを防ぐことにも留意する必要があります。

2 番目の原則は誠実さです。 これは、TLS に関して多くの人が忘れたり、気づいていないことです。 整合性とは、クライアントとの間で送受信されるデータを誰も改ざんできないことを意味します。 リソースが公開されている場合でも、このデータの整合性を確保する必要があります。

一般に公開されているニュースサイトを考えてみましょう。 このページは公開されているため、機密性の側面についてはあまり心配していません (プライバシーは別ですが、この例ではそれは脇に置いておきます)。 ただし、サーバーからクライアント (ユーザーのブラウザ) に送信されるデータが操作されていないことを確認する必要があります。 サーバーの整合性を考慮せずに、攻撃者はニュース記事の内容を編集したり(フェイクニュースを考えてください)、ブラウザエクスプロイトフレームワークフックなどの悪意のあるコンテンツをページに挿入したりする可能性があります。

証明書の重要性

では、証明書はこれらすべての中でどのような役割を果たすのでしょうか? クライアントがサーバーに接続するときは、まず目的のサーバーに接続していることを確認する必要があります。 攻撃者が模倣したサーバーではありません。 また、接続がエンドツーエンドで暗号化されることも保証したいと考えています。 これは、トラフィックの検査と変更を可能にするために接続がどこかで終了されておらず、元のサーバーに転送されていないことを意味します。 これは中間マシン攻撃と呼ばれます

誤解のないように言っておくと、特に組織のセキュリティ向上のためにインターネット トラフィックを頻繁に検査する企業環境では、この方法が有効な使用例となります。 ここで証明書が重要になります。 クライアントが TLS のサーバーに接続する場合、サーバーはクライアントに (サーバーの) 証明書を提供する必要があります。 次に、クライアントはこの証明書を検証し、クライアントが最初に接続しようとしていた正しいサーバーに属していることを確認します。 これが確立されると (TLS ハンドシェイクの一部)、クライアントとサーバー間の通信を開始できます。

このシリーズの次のパートでは、私自身のブログでこのトピックについて引き続き検討します。 そこで、証明書を検証するプロセスについて説明します。 ここでは、証明書管理の人間的側面とその重要性について詳しく説明します。

それまでは、David Warburton と Nigel Ashworth による有益な F5 myForum セッション (変化する SSL 環境に備える)をぜひチェックすることをお勧めします。 これは、継続的に進化する SSL および TLS の状況に関する優れた概要であり、時間をかけて読む価値があります。

Sean Wright 氏は、ソフトウェア開発者としてキャリアをスタートした、経験豊富なアプリケーション セキュリティ エンジニアです。 彼は主に Web ベースのアプリケーション セキュリティに焦点を当てており、TLS とサプライ チェーン関連のテーマに特に興味を持っています。 Sean は、アプリケーション セキュリティに関する技術的リーダーシップの提供や、開発および保守するシステムやアプリケーションのセキュリティ向上のためにチームと連携する経験も豊富です。 彼のブログはここで読めます。