暗号化キーとは?|キーとSSL暗号化

キーは、特定の順序に並べたランダムな文字のグループです。暗号化プロトコルはキーを使用してデータを変更し、データをスクランブルしてキーを持たない人が情報をデコードできないようにします。

Share facebook icon linkedin icon twitter icon email icon

暗号化キー

学習目的

この記事を読み終えると、以下のことができます。

  • 暗号化における「キー」とは何かを学ぶ
  • 暗号化でデータをスクランブルするためにキーがどのように使用されるかを理解する
  • 公開鍵を交換することでHTTPSが可能になる方法を説明する
Cryptographic Key

暗号鍵とは?

暗号化では、キーは、暗号化アルゴリズム内で使用される文字列であり、データを変更してランダムに見えるようにします。物理鍵と同様に、データをロック(暗号化)し、正しいキーを持つ人だけがロックを解除(復号化)できます。

Cryptographic Key Hello

元のデータは平文と呼ばれ、キーで暗号化した後のデータは暗号文と呼ばれます。

式:

平文
+ キー
=暗号文

初期の暗号化形式のキー

コンピューターが登場する前、暗号文はしばしば平文の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

したがって、単純なメッセージはランダムデータ列のキーによって変更し、暗号化または復号化することができます。

最新の暗号化形式のキー

上記の初期の暗号化の例は、情報のランダムな文字列を使用して平文を暗号文に変換する方法を示していますが、今日の暗号鍵ははるかに複雑です。

たとえば、cloudflare.comの公開鍵は次のとおりです。

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」のキーよりもはるかに複雑です。

単純な加算または減算の代わりに、最新の暗号化はアルゴリズムとして知られる複雑な数式を使用します。また、キーとしては単なるランダムな数字の列の代わりに、通常、最新のキーはさらにランダム化されています。

これにはいくつかの理由があります:

  1. コンピューターは、人間の暗号学者よりも短時間ではるかに複雑な計算が可能であり、より複雑な暗号化を可能にするだけでなく、必要なものにします。
  2. コンピューターは、個々の文字や数字のレベルだけでなく、データを構成する1と0のバイナリレベルで情報を変更できます。
  3. 暗号化されたデータが十分にランダム化されていない場合、コンピュータープログラムはそれを復号化できます。真のランダム性は、真に安全な暗号化にとって非常に重要です。100%の確率で真にランダムなデータを生成するプログラムを作成することはできませんが、コンピューターは人間が自分で行うよりもはるかに優れています。

暗号化アルゴリズムと組み合わせて、暗号化キーは人間の認識を超えてテキストをスクランブルします。

例として、cloudflare.comの公開鍵でメッセージ「Hello」を暗号化してみましょう。暗号化アルゴリズムにそのキーを使用すると、暗号文として「KZ0KVey8l1c=」が取得されます。(技術に詳しい人へ:Blowfishアルゴリズム、CBCモード、base64エンコーディングです。)

SSL暗号化(HTTPS)での鍵の利用の仕組みは?

暗号化には、対称暗号化と非対称暗号化(公開鍵暗号化とも呼ばれます)の2種類があります。対称暗号化では、会話の両側で同じ鍵を使用して、平文を暗号文に、またはその逆に変換します。

非対称または公開鍵暗号化では、会話の両側がそれぞれ異なる鍵を使用します。1つの鍵は公開鍵と呼ばれ、1つの鍵はプライベートキーと呼ばれます。つまり、当事者の1人は鍵を秘密にして、誰とも共有しないのです。平文が公開鍵で暗号化されている場合、公開鍵ではなくプライベートキーのみが復号化できます。これは逆も同様です。平文がプライベートキーで暗号化されるとき、公開鍵のみがそれを解読できます。

SSL(または今日ではTLSと呼ばれます)は、インターネット通信を安全に保つために使用される暗号化プロトコルであり、HTTPではなく HTTPS上で提供されるWebサイトはこの種類の暗号化を使用します。TLS/SSLでは、WebサイトまたはWebアプリケーションは公開鍵とプライベートキーの両方を持ちます。公開鍵は、誰でも見ることができるようにWebサイトの SSL証明書で公開されています。プライベートキーは配信元サーバーにインストールされ、決して共有されません。

TLS/SSL通信セッションはTLSハンドシェイクで始まり、その間、Webサイトとクライアントはセッションキーと呼ばれる新しいキーを生成するために公開鍵とプライベートキーを使用します。これらのセッションキーは、メッセージの送受信を暗号化するために両側で使用されます。

したがって、TLSは非対称暗号化(2つの鍵)から始まり、対称暗号化(1つの鍵)に移行します。通信セッション中に両側が同じ鍵を使用しますが、新しいセッションを開始すると、新しい鍵を一緒に生成します。