公開キー暗号化はどのように機能しますか? /公開鍵暗号化とSSL
公開鍵暗号化とは何ですか?
公開鍵暗号化、または公開鍵暗号は、二つの異なる鍵でデータを暗号化し、誰でも使用できるようにする方法です。 他のキーは秘密キーとして知られています。 公開キーで暗号化されたデータは秘密キーでのみ復号化でき、秘密キーで暗号化されたデータは公開キーでのみ復号化できます。 公開鍵暗号化は、非対称暗号化とも呼ばれます。, これは、特にHTTPSを可能にするTLS/SSLのために広く使用されています。
暗号キーとは何ですか?
暗号化では、キーはデータをスクランブルするために使用される情報の一部であり、ランダムに表示されます。 平文とも呼ばれる暗号化されていないデータを鍵を使って暗号化アルゴリズムに入れると、平文はランダムに見えるデータとして反対側に出てきます。 ただし、データを復号化するための正しいキーを持つ人は誰でも平文形式に戻すことができます。,
Plaintext+key=ciphertext:
hello + 2jd8932kd8 = X5xJCSycg14=
Ciphertext+key=plaintext:
X5xJCSycg14= + 2jd8932kd8 = hello
(これは対称暗号化の例であり、一つのキーのみが使用されます。)
*Blowfishアルゴリズム、CBCモード、Base64エンコーディングを使用します。
公開鍵暗号化はどのように機能しますか?
公開鍵暗号は初心者にとっては複雑に見えるかもしれませんが、幸いなことにPanayotis Vryonisという作家が大まかに次のような類推を思いつきました。
二人、ボブとアリスは、前後に文書を出荷するために使用するロック付きのトランクを想像してみてください。, 一般的なロックは、lockedとunlockedの二つの状態しかありません。 鍵のコピーを持っている人は誰でもロックされている場合はトランクのロックを解除できます。 ボブがトランクをロックしてアリスに送信すると、アリスはトランクのロックを解除するためにキーのコピーを使用できることを知っ これは本質的に対称暗号として知られているものがどのように機能するかです:一方の秘密鍵は暗号化と復号化の両方に使用され、会話の両側は同じ
代わりに、Bobが特別な種類のロックを持つトランクを作ると想像してください。 このロックには、
- Aの代わりに三つの状態があります。, ロックされた、キーは左にすべての方法を回しました
- b.ロック解除、途中で。
一つのキーの代わりに、二つのキーがこのロックで行きます:
- キー no.1は左にのみ回すことができます
- キー No.2は右にのみ回すことができます
これは、トランクがロックされていてキーが位置Aに回されている場合、キー No.2だけが右に回してロックを解除できることを意味します。 トランクが位置Cでロックされている場合、ロックを左に回して位置Bにロックを解除できるのはキー1のみです。,
言い換えれば、どちらかのキーがトランクをロックできますが、ロックされると、もう一方のキーだけがロックを解除できます。
ここで、Bobが右に曲がるだけの鍵であるkey No.2の数十コピーを作成し、彼が知っているすべての人とコピーを望むすべての人と共有し、それを彼の公開鍵 彼は自分自身のために鍵No.1を保持しています–それは彼の秘密鍵です。 これは何を達成するのですか?
- Aliceはトランクを介してBobの機密データを送信でき、Bobだけがロックを解除できると確信しています。, Aliceが左から右に曲がる公開鍵でトランクをロックすると、右から左に曲がることができる鍵だけがロックを解除できます。 つまり、Bobの秘密鍵だけがロックを解除できます。
- Aliceは、トランクが自分の秘密鍵でロックされている場合、トランクが実際にBobからのものであり、偽装ではないことを確認できます。 ロックが位置Aにあるか、またはずっと左に回されるようにトランクをロックできるキーは一つだけです:Bobの秘密キー。 確かに、キーを右に回すことで誰でも公開鍵でロックを解除できますが、トランクがBobからのものであることは保証されています。,
この類推から、トランクに平文データを、物理キーに暗号キーを置き換えます。 一方、誰でも公開鍵でデータを暗号化できますが、秘密鍵の所有者のみが復号化できます。
したがって、誰でも秘密鍵所有者にデータを安全に送信することができます。, また、秘密鍵の所有者から受け取ったデータが実際にはそのソースからのものであり、偽装からのものではないことを誰でも確認できます(オンパス攻撃).
TLS/SSLは公開鍵暗号化をどのように使用しますか?
公開キー暗号化は、インターネット経由で(HTTPS経由で)安全な通信を確立するのに非常に便利です。 公開されているwebサイトのSSL/TLS証明書には公開鍵が含まれており、秘密鍵は元のサーバーにインストールされています–webサイトが”所有”しています。,
TLSハンドシェイクは、公開鍵暗号を使用して、発信元サーバーのidを認証し、セッション鍵の生成に使用されるデータを交換します。 RSAやDiffie-Hellmanなどの鍵交換アルゴリズムは、公開鍵と秘密鍵のペアを使用してセッション鍵に同意し、ハンドシェイクが完了すると対称暗号化に使用 クライアントとサーバーは、通信セッションごとに新しいセッションキーに同意できるため、悪意のあるアクターは、いずれかのセッションキーを識別または盗