0
0

HTTPSの暗号化の仕組みをわかりやすく説明してみた

Last updated at Posted at 2024-08-08

はじめに

この記事は、ITについて全く知らない人に、インターネットでの暗号化の仕組み(特にHTTPS)についてわかりやすく説明することを目的としています。そのため、具体的な暗号化手法やプロトコルについては、あえて触れていません。技術的、専門的な知識を求めている方は、別の記事をご参照ください。

説明に使用するもの

この記事では、登場人物としてAさん、Bさん、Cさんを用意します。*1

AさんとCさんでメッセージをやりとりしたいのですが、メッセージは毎回Bさん経由でなければいけない、という設定です。

では、順を追って説明していきます。

1.メッセージを暗号化する

Aさんは次のような仕組みを考えCさんと共有します。

  • メッセージをすべてN文字ずつずらして書き直す
  • 例えばN=1の時、「こんにちは」→「さあぬつひ」*2

Aさんはこの仕組みで暗号化した手紙をCさん宛てに送りたいです。

ですが、この方法だとNという値をBさんに知られずにCさんに共有することができなければ意味がありません。
直接会って教えれば可能ですが、ここではそれは無理だと仮定します。

2.暗号化用の鍵、復号用の鍵を作成

手紙のやり取りだけで、Bさんにバレることなく鍵を共有したいと考えたAさんは新たにこんなものを発明します。

  • 暗号化だけできる鍵 → 公開鍵とよぶ
  • 復号だけできる鍵  → 秘密鍵とよぶ*3

また、さっきまで使用していた鍵N共通鍵とよぶことにします。

Aさんは、公開鍵秘密鍵を作り、公開鍵だけをCさんに渡します。

Cさんは、共通鍵を作り、それをAさんから受け取った公開鍵で暗号化してAさんに返します。

Aさんは、自分だけが持っている秘密鍵でCさんからのメッセージを復号し、共通鍵を手にいれます。

この時点でそれぞれが持っている(知っている)鍵はこうなります
・Aさん → 公開鍵、秘密鍵、共通鍵
・Bさん → 公開鍵
・Cさん → 公開鍵、共通鍵

Bさんに知られることなく、共通鍵を共有することができていますね!

その後、AさんとCさんは共有した共通鍵を使って安全にメッセージを通信することができました。めでたしめでたし。*4

注釈

*1 Aさんがサーバー、Cさんがブラウザ、Bさんが不特定多数の人々と想定しています。

*2 シーザー暗号と呼ばれる方法で、原始的な暗号化方法です。実際はAESという複雑な方法で暗号化が行われています。

*3 実際にはRSA暗号というアルゴリズムで作成され、二つの素数が秘密鍵、その積が公開鍵となります。

*4 本記事の暗号化に加え、公開鍵が本当に正しい相手のものであることを確認するために、公開鍵認証という仕組みも存在します。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0