キーは、特定の順序に並べたランダムな文字のグループです。暗号化プロトコルはキーを使用してデータを変更し、データをスクランブルしてキーを持たない人が情報をデコードできないようにします。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
暗号鍵は、データをランダムなデータに見えるように変換するために暗号化アルゴリズムにて使用される文字列です。物理的な鍵と同様に、データを施錠(暗号化)し、正しい鍵を持つ人だけが開錠(復号化)できます。
元のデータは平文と呼ばれ、キーで暗号化した後のデータは暗号文と呼ばれます。
式:
平文
+キー
=暗号文:
コンピューターが登場する前、暗号文はしばしば平文の1文字を単純に別の文字に置き換えることによって作成されました。これは「置換暗号」として知られている方法です。たとえば、誰かが「こんにちは(Hello)」というメッセージを別の人に送信し、各文字がアルファベットの次の文字に置き換えられたとします。「Hello」は「Ifmmp」になります。
H | E | L | L | O |
+1 | +1 | +1 | +1 | +1 |
I | F | M | M | P |
「Ifmmp」は無意味な文字列のように見えますが、誰かがキーを知っていれば、適切な文字に置き換えてメッセージを「こんにちは」として解読できます。この例では、キーは(文字)-1です。各文字をアルファベットの1文字下に移動すると、実際の文字に到達します。
I | F | M | M | P |
-1 | -1 | -1 | -1 | -1 |
H | E | L | L | O |
このような暗号は、任意のテキストで、特定の文字が他の文字よりも頻繁に表示されるため、単純な統計分析で比較的簡単に解読できます(たとえば、Eは英語で最も一般的な文字です)。これに対処するために、暗号作成者はワンタイムパッドと呼ばれるシステムを開発しました。
ワンタイムパッドは、プレーンテキストに含まれる文字と少なくとも同じ数の値を持つ使い捨てのキーです。言い換えると、各文字は、アルファベットで文字から削除された一意の数の文字に置き換えられます。
たとえば、誰かがメッセージ「Hello」を暗号化する必要があるとします。そして、値7、17、24、9、11を持つワンタイムパッドを使用します。
H | E | L | L | O |
7 | 17 | 24 | 9 | 11 |
以前は、各文字ごとに1つの位置(文字+ 1)を移動しただけでしたが、今回は、各文字ごとに異なる数だけアルファベットの位置を移動します。最初の文字Hには7を追加します。2番目の文字に17を追加します。同様に続けます。Zを超える計算については、アルファベットの先頭に戻り、追加し続けるだけです。
H | E | L | L | O |
7 | 17 | 24 | 9 | 11 |
O | V | J | U | Z |
平文「こんにちは」から初めて、キー「7、17、24、9、11」を使って暗号文の「Ovjuz」ができました。
ワンタイムパッドを介した通信が機能するには、会話の両側で各メッセージに同じキーを使用する必要があります(対称暗号化)。ただし、新しいメッセージがあるたびに異なるキーが使用されます。第三者にとっては「Ovjuz」はランダムな意味のない言葉のように見えますが、暗号文「Ovjuz」の受信者は、複合化のためにキー「7、17、24、9、11」を使う(加える代わりに引きます)ことを知っているはずです。
O | V | J | U | Z |
7 | 17 | 24 | 9 | 11 |
H | E | L | L | O |
したがって、単純なメッセージはランダムデータ列のキーによって変更し、暗号化または復号化することができます。
上記の初期の暗号化の例は、情報のランダムな文字列を使用して平文を暗号文に変換する方法を示していますが、今日の暗号鍵ははるかに複雑です。
例えば、あるWebサイトの公開鍵は、次のようなものです。
04 CE D7 61 49 49 FD 4B 35 8B 1B 86 BC A3 C5 BC D8 20 6E 31 17 2D 92 8A B7 34 F4 DB 11 70 4E 49 16 61 FC AE FA 7F BA 6F 0C 05 53 74 C6 79 7F 81 12 8A F7 E2 5E 6C F5 FA 10 69 6B 67 D9 D5 96 51 B0(cloudflare.comのSSL証明書から複製)
これは、上記で「Hello」の暗号化に使用した「7 17 24 9 11」のキーよりもはるかに複雑です。
単純な加算または減算の代わりに、最新の暗号化はアルゴリズムとして知られる複雑な数式を使用します。また、キーとしては単なるランダムな数字の列の代わりに、通常、最新のキーはさらにランダム化されています。
これにはいくつかの理由があります:
暗号化アルゴリズムと組み合わせて、暗号化キーは人間の認識を超えてテキストをスクランブルします。
暗号化には、対称暗号化と非対称暗号化(公開鍵暗号化とも呼ばれます)の2種類があります。対称暗号化では、会話の両側で同じ鍵を使用して、平文を暗号文に、またはその逆に変換します。
非対称または公開鍵暗号化では、会話の両側がそれぞれ異なる鍵を使用します。1つの鍵は公開鍵と呼ばれ、1つの鍵は秘密鍵と呼ばれます。つまり、当事者の1人は鍵を秘密にして、誰とも共有しないのです。平文が公開鍵で暗号化されている場合、公開鍵ではなく秘密鍵のみが復号化できます。
SSL(または TLS )は、インターネット通信の安全に保つために使用される暗号化プロトコルであり、HTTPの代わりにHTTPSで提供されるウェブサイトには、この種の暗号化が使用されています。TLS/SSLでは、WebサイトやWebアプリケーションは公開鍵と秘密鍵の両方を持つことになります。公開鍵は、WebサイトのSSL証明書で公開され、誰でも見ることができます。秘密鍵は配信元サーバーにインストールされ、共有されることはありません。
TLS/SSL通信セッションはTLSハンドシェイクで始まり、その間、Webサイトとクライアントはセッションキーと呼ばれる新しいキーを生成するために公開鍵とプライベートキーを使用します。これらのセッションキーは、メッセージの送受信を暗号化するために両側で使用されます。
したがって、TLSは非対称暗号化(2つの鍵)から始まり、対称暗号化(1つの鍵)に移行します。通信セッション中に両側が同じ鍵を使用しますが、新しいセッションを開始すると、新しい鍵を一緒に生成します。