公開鍵暗号方式とは?初心者でもわかる公開鍵暗号方式の基礎

企業のIT施策予算の使い方として、”攻め”の予算と”守り”の予算があります。

”攻め”は派手で効果が分かりやすく人気がありますが、”守り”も企業を維持していく上で必要不可欠な要素です。
”守り”の予算といえばセキュリティが筆頭に上がりますが、情報を外部から「いかに守るか」が焦点となります。

そこで今回は、情報を守る代表的な方法である「公開鍵暗号方式」を紹介します。

公開鍵暗号方式の考え方は、セキュリティを考える上での基礎となりますのでしっかり押さえていきましょう。

公開鍵暗号方式とは?仕組みをわかりやすく解説

まずはデータの暗号方法の基本となっている公開鍵暗号方式の仕組みをご説明します。データの送信者と受信者が何をしているのか確認していきましょう。

公開鍵暗号方式の仕組み

公開鍵暗号方式では2つの鍵を利用してデータのやり取りを行います。

2つの鍵とは受信者が作成する「公開鍵」と「秘密鍵」です。
公開鍵は誰でも簡単に入手できる公開された鍵ですが、秘密鍵は1つしかない大切な鍵です。

それでは2つの鍵を使ったデータの送信を見てみましょう。

公開鍵暗号方式の仕組み

1. 受信者が秘密鍵を使って公開鍵を作成する
2. 送信者は受信者の公開鍵を取得する
3. 平文(暗号化したい文)を送信者が公開鍵を使い暗号化し送付する
4. 受信者が暗号文を受け取る。
5. 受信者は暗号文を秘密鍵で平文に復号化する

このように、受信者(秘密鍵を持っている人)のみが暗号を解くことができる仕組みになっています。
秘密鍵は受信者が大切に保管し、公開鍵は誰でも取得できる場所に公開されています。

共通鍵暗号方式との違い

公開鍵暗号方式とよく比較されるのが共通鍵暗号方式です。

公開鍵暗号方式では秘密鍵と公開鍵の2つの鍵を使いましたが、共通鍵暗号方式では1つだけ鍵を使います。
そしてデータの流れは下記のように簡単のものになっています。

共通鍵暗号方式

1. 送信者は共通鍵を使って平文を暗号化する
2. 受信者は共通鍵を使って暗号文を復号化する

同じ共通鍵で暗号化したり復号化したりするのですが、

公開鍵暗号方式と共通鍵暗号方式を組み合わせたものとして、SSLが有名です。

SSLではまず、公開鍵暗号方式を使い、通信内容を暗号化するための「共通鍵」をサイトの運営者と閲覧者の間で共有します。
そして、共有された「共通鍵」を用いた共通鍵暗号方式で、個人情報やログイン情報などの通信データを暗号化して通信します。

ECサイトなどでクレジットカード番号などを登録する際には、このSSLを使ってデータを送受信しているので、第三者が盗み見たとしても、内容を特定されることはありません。

ホームページのアドレスの冒頭が「https」で始まっているものはSSLが適用されています。

 

公開鍵暗号方式のメリットは?何に使える?

暗号方式としてスタンダードとなっている公開鍵暗号方式ですが、適用することにより、どのようなメリットがあるのでしょうか。

公開鍵暗号方式のメリットとデメリット

公開鍵暗号方式の最も大きなメリットはデータの安全性の高さです。
あたかも本人のような立ち振舞いをする「なりすまし」や、送受信されているデータを横から閲覧する「盗聴」などの脅威への対策となります。

また、1つだけ公開鍵を作成し公開すればいいだけなので、公開鍵の管理も容易です。

デメリットは高い安全性の裏返しとなりますが、暗号化・復号が複雑で処理時間がかかるという点です。
共通鍵暗号方式と比べて鍵のデータの長さを長く確保する必要があり、その分暗号化や復号化の処理に時間がかかります。

 

公開鍵暗号方式はデジタル署名に使える!

公開鍵暗号方式は送信者と受信者の鍵を逆にするとデジタル署名(電子署名)としても使えます。データの流れとしては下記のようになります。

デジタル署名の仕組み

1. 送信者は自分の名前を秘密鍵で暗号化し、受信者へ送付する
2. 受信者は公開されている送信者の公開鍵を使って復号化する
3. 送信者の名前が表示される

1つしかない秘密鍵で暗号化されているからこそ、信用度の高いデータとして認識できます。

 

【上級者向け】RSA暗号を使った公開鍵暗号方式!アルゴリズムは?

公開鍵暗号方式にはRSA暗号や楕円曲線暗号などが使われています。今回はその中でもRSA暗号についてご紹介します。

RSA暗号の仕組み

RSA暗号は、発明者である3人の名前(R. L. Rivest、A. Shamir、L. Adleman)の頭文字をつなげたものです。

任意の2つの素数を使って公開鍵暗号方式の仕組みを実現していますが、べき乗と余剰だけを使ったシンプルなアルゴリズムです。

このアルゴリズムの公式は下記となります。(mod:XをYで割った余り)

(暗号文)≡(平文)E mod N
(平文)    ≡(暗号文)D mod N

暗号文を作成するEとNのペアが公開鍵、平文に復号化するDとNのペアが秘密鍵となります。

今回は仮に公開鍵(3、33)、秘密鍵(7、33)として、実際に17という数を暗号化してみましょう。

暗号文=173 mod 33
   =4913 mod 33
   =29

受信者は29という暗号化されたものを受け取り、自分の秘密鍵を使って復号化します。

平文=297 mod 33
  =17249876309 mod 33
  =17

このように17という平文に戻り復号化された状態になりました。

 

公開鍵暗号方式は秘密鍵と公開鍵を使って平文を暗号化する、安全性が高い暗号方式です。
単独で利用されることもあれば、共通鍵方式と組み合わせてSSLとして利用することも可能です。
セキュリティの基礎となる暗号化の仕組みをきっちりと押さえておきましょう。

目的別!ITスキル講座

基礎的なパソコン操作の知識があればOK!

最新!iOS12アプリ開発講座

日本を代表するデータサイエンティスト辻真吾氏による人気講座

初級者から学べる人工知能講座の決定版