共通鍵暗号方式(AES)と公開鍵暗号方式(RSA)との違いを解説!

COLUMN

暗号方式について、お調べですね。

暗号方式はセキュリティ対策の1つで、重要なデータを安全に送ることを目的に使われます。

その暗号方式には、主に2種類あります。

 

それが「公開鍵暗号方式」と「共通鍵暗号方式」です。

しかし、名前だけ聞いても違いはおろか、どのような特徴を持つのかわかりません。

 

そこでこの記事は、「公開鍵暗号方式」と「共通鍵暗号方式」の違いについて解説。

そもそも暗号方式とは何かについてもお話するので、セキュリティのことがよくわからなくても理解できるでしょう。

 

  • 暗号方式の違いがわからない
  • 暗号化について知りたい
  • 暗号化の必要性ってなんだろう

 

こんな悩みをお持ちの人は、ぜひ本記事をご覧ください。

疑問が解消できるよう、わかりやすく解説します。

暗号方式とは

まずは、暗号方式について確認しましょう。

暗号方式とは、暗号化の方法のことを言います。

それでは、暗号化とは一体何でしょうか?

 

暗号化とは、データに特殊な処理を施して、別のデータに変換することです。

別のデータに変換することで、第三者に盗み見られるといった情報漏えいを防止します。

要するに、「重要なデータを安全に送るための対策」が暗号化というわけです。

 

この暗号化にはいくつか種類があり、その種類のことを暗号方式と言います。

主な暗号方式は、次の3つです。

 

  1. 共通鍵暗号方式
  2. 公開鍵暗号方式
  3. ハイブリッド暗号方式

 

この記事では、各方式の特徴や違いについてお話していきます。

 

暗号化と復号化

ここでは、もう少し暗号化について掘り下げます。

暗号化したデータは、そのままで終わりとはなりません。

暗号化した後は必ず、データを元に戻す「復号化」が発生します。

 

復号化とは、データを暗号化される前に戻すこと。

復号化する理由は単純で、暗号化したままでは誰もデータの中身を読めないからです。

安全にデータを送ったものの、受け取った人すらも読めなければ元も子もないでしょう。

 

そのため、暗号化したデータは送られた後、復号化されます。

その復号化に使われるのが「鍵」です。

この鍵は、データを暗号化した際に一緒に作られます。

 

そして、作られた鍵を使って、暗号化したデータを復号するわけです。

後述する共通鍵暗号方式と公開鍵暗号方式の違いは、この鍵がポイントになるので覚えておきましょう。

 

暗号化とハッシュ化の違い

ちなみに、暗号化と一緒によく聞く言葉で「ハッシュ化」があります。

どちらも情報漏えい防止を目的に、データに特殊な処理を施す点は同じ。

しかし、両者には明確な違いがあります。

 

それは「データを復号化できるかどうか」です。

つまり、データを元に戻せるかの違いですね。

暗号化はすでにお話した通り、復号化によってデータを元に戻すことが可能です。

 

一方で、ハッシュ化はデータを元に戻せません。

ハッシュ化は、ハッシュ関数と呼ばれる特殊な計算手順によって、全く別のデータへと変換されます。

この変換されたデータのことを「ハッシュ値」と呼ぶのですが、これは元のデータに戻すことができません。

 

その理由は、絶対に第三者に見られてはいけないデータを守るためです。

ハッシュ化が利用される場面で、代表的なのはサイトやアプリにログインするとき。

たとえば、ログイン用のパスワードが、万一情報漏えいしてしまったらいかがでしょうか?

 

悪意のある人間に知られたら、不正にログインされてしまう可能性がありますよね。

こうした不正ログインを防止するために、ハッシュ化があります。

パスワードを入力して送信すると、ハッシュ化によってパスワードが別のデータに変換されます。

 

そのため、仮にハッシュ化されたデータ(ハッシュ値)が第三者に漏えいしたとしても、不正利用はできません。

別のデータに変わっているため、そのデータを使ってログインはできないわけです。

 

もしこれが暗号化だった場合、鍵さえ手に入ればデータを復号できてしまいます。

その結果、正しいパスワードが知られてしまい、本人になりましてのログインを許してしまうでしょう。

ここまでの話をまとめると、暗号化とハッシュ化の役割は以下の通りです。

 

  • 暗号化:データを複合できる。重要情報や他人に読ませる資料などのデータ送付に適している
  • ハッシュ化:データを複合できない。ログインパスワードなど、他人に絶対知られてはいけないデータの送付に適している

 

暗号化とハッシュ化の違いは以上です。

次は、いよいよ各暗号方式の特徴をお話していきます。

 

共通鍵暗号方式(AES)とは

ここからは、各暗号方式の特徴を解説します。

まずは、共通鍵暗号方式から見ていきましょう。

共通化暗号方式は、別名でAESとも呼ばれます。

 

AESとは「Advanced Encryption Standard」の略で、共通鍵暗号方式の暗号化アルゴリズムの1つです。

専門用語がたくさん出てきて、混乱しますよね。順番にお話します。

 

共通鍵暗号方式にはいくつか種類があり、その種類のことを暗号化アルゴリズムと呼びます。

その暗号化アルゴリズム内の1つが、AESなわけです。

そして、共通鍵暗号方式の「代表的な暗号化アルゴリズム」がAESなので、現在は「AES=共通鍵暗号方式」と呼ばれることが多くあります。

 

前置きが長くなってしまいましたが、それでは共通鍵暗号方式はどのような特徴があるのでしょうか?

先ほど、暗号化したデータを元に戻すには、「鍵」を使って復号する必要があるとお話しました。

実はこの鍵は復号化だけでなく、データを暗号化するときにも使われます。

 

共通鍵暗号方式は、この「暗号化」と「復号化」の鍵が一緒です。

ある鍵を使って暗号化をおこない、その後に同じ鍵を使ってデータの復号をおこないます。

暗号化と復号化の鍵が共通しているので、共通鍵暗号方式と呼ぶわけです。

 

この共通鍵暗号方式には、以下のようなメリットとデメリットがあります。

 

  • メリット:ファイルやデータの暗号化にかかる処理速度が早い
  • デメリット:データを送る人の数だけ管理する鍵が増える。送信した鍵が第三者に盗まれる危険がある

 

共通鍵暗号方式の暗号化にともなう計算はシンプルなため、処理速度が早いのがメリットです。

しかし、鍵が共通ゆえに大きなデメリットもあります。

それが「管理の手間」と「鍵の送信問題」です。

 

共通鍵暗号方式では、データをやり取りする人ごとに鍵を作られなければいけません。

そのため、鍵の作成や管理の手間がデメリットとなります。

それに加えて、鍵をどのように送るかも悩みどころの1つです。

 

せっかくデータを暗号化しても、鍵を盗まれてしまっては意味がありません。

盗まれた鍵を使って、データを復号されてしまうわけですから。

このように、鍵をいかに送るかは共通鍵暗号方式の大きな課題であり、デメリットと言えるでしょう。

 

公開鍵暗号方式(RSA)とは

次に、公開鍵暗号方式の特徴を見ていきましょう。

公開鍵暗号方式もいくつかの種類(暗号化アルゴリズム)がありますが、ここでは一般的に知られているRSA=公開鍵暗号方式と認識していただければ問題ありません。

ちなみにRSAの由来は、このアルゴリズムを作った開発者3名の頭文字から取られています。

 

さて、そんな公開鍵暗号方式の特徴には次の2つがあります。

 

  1. 「暗号化」と「復号化」の鍵を別々に作る
  2. データの送信者ではなく、受信者が鍵を作る

 

先ほどの共通鍵暗号方式では、1つの鍵で暗号化と復号化をおこないました。

しかし、公開鍵暗号方式では、それぞれ別の鍵を作ります。

暗号化する鍵を「公開鍵」、復号化する鍵を「秘密鍵」と呼びます。

 

また、共通鍵暗号方式はデータの送信者が鍵を作り、暗号化したデータと鍵を受信者に送っていました。

ですが、公開鍵暗号方式では、データの受信者が鍵を作ります。

ここでは、実際のデータのやり取りをもとに、暗号化の手順を見てみましょう。

 

仮で、データを送る人をAさん、データを受け取る人をBさんとします。

 

手順 Aさんの作業(データを送る) Bさんの作業(データを受け取る)
1 ●      秘密鍵(復号化の鍵)と公開鍵(暗号化の鍵)を生成する

●      その内、公開鍵をAさんに送る

2 ●      Bさんから送られてきた公開鍵を使って、データを暗号化する

●      暗号化したデータをBさんに送る

3 ●      Aさんから送られきたデータを、自分が持つ秘密鍵で復号する

 

これが、公開鍵暗号方式の暗号化の流れです。

複雑な手順を踏んでいることがわかりますね。

ちなみに、公開鍵はインターネット上などで公開されることから、その名前で呼ばれています。

 

公開鍵暗号方式のメリット・デメリットは、以下の通りです。

 

  • メリット:作る鍵が1つで済むので管理が楽。鍵を盗まれる危険がない
  • デメリット:データの暗号化にかかる処理速度が遅い

 

公開鍵暗号方式のポイントは、鍵が2つあること。

これにより、共通鍵暗号方式のような鍵の送信問題を気にする必要がありません。

Aさん(データを送る人)は公開鍵を使って暗号化し、そのままBさん(データを受け取る人)に送るだけです。

 

後はBさんのほうで、自分が持つ秘密鍵で復号するのみ。

鍵のやり取りは一切発生していません。

ですので、より安全性の高い暗号方式と言えるでしょう。

 

また、データを暗号化する公開鍵鍵は、文字通りインターネット上で公開されています。

Aさんに限らず、Bさんにデータを送りたい人は、誰も公開鍵を使って暗号化が可能。

つまり、人ごとに鍵を増やす必要がないため、非常に管理が楽なわけです。

 

その反面、データの暗号化にかかる時間=処理速度は、共通鍵暗号方式よりも遅くなります。

公開鍵暗号方式は、共通鍵暗号方式よりも複雑な計算や処理を必要とするため、データの暗号化に時間がかかってしまいます。

先ほどの共通鍵暗号方式とは、真逆のメリット・デメリットとなっているわけです。

共通鍵暗号・公開鍵暗号の違い(表で分かり易く)

共通鍵暗号方式と公開鍵暗号方式を説明しましたが、いまいち両者の違いがわかりづらいですよね。

各方式の特徴と違いを以下の表にまとめましたので、ご覧ください。

 

安全性の高さや管理の手間を考えると、公開鍵暗号方式のほうがメリットは大きいと言えるでしょう。

ただし、そのぶん処理速度の高さが気になります。

だからといって、早さを求めて共通鍵暗号方式を選択すると、鍵の送信方法など安全性の問題が。

 

処理速度と安全性のどちらを優先するか、悩ましいところですよね。

 

項目/方式 共通鍵暗号方式 公開鍵暗号方式
処理速度 早い 遅い
安全性 低い

※公開鍵暗号方式と比較して

高い
管理の手間 高い 低い
鍵の作成者 データの送信者

※用途によっては反対になることも

データの受信者

※用途によっては反対になることも

鍵の数 データをやり取りする人ごと 1つ

ここまでのお話で、処理速度と安全性のどちらかしか手に入らないと思っていませんか?

実は、どちらも満たす暗号方式があります。

ハイブリッド暗号方式とは

共通鍵暗号方式と公開鍵暗号方式は表裏一体の関係です。

どちらかを選べば、一方のメリットが失われるでしょう。

そうなると、処理速度と安全性のどちらかを諦めなければいけないのでしょうか?

 

いいえ、そんなことはありません。

実は、双方のメリットを満たす暗号方式があります。

それがハイブリッド暗号方式です。

 

この暗号方式は、その名の通り「共通鍵暗号方式」と「公開鍵暗号方式」を組み合わせた方法となっています。

まさにハイブリッドというわけですね。

では、この暗号方式はどのように暗号化しているのでしょうか。

 

この説明については、公開鍵暗号方式のお話と同様に、流れに沿って見ていきましょう。

先ほどと同じく、データを送る人をAさん、データを受け取る人をBさんとします。

 

手順 Aさんの作業(データを送る) Bさん作業(データを受け取る)
1 ●      共通鍵を生成して、送りたいデータを暗号化する ●      公開鍵暗号方式で、秘密鍵と公開鍵を生成する

●      その内、公開鍵をAさんに送る

2 ●      Bさんから受け取った公開鍵で、共通鍵を暗号化する

●      手元に「共通鍵で暗号化したデータ」と「公開鍵で暗号化した共通鍵」の2つがある

3 ●      暗号化した「データ」と「共通鍵」をAさんに送る ●      Aさんから送られてきた、暗号化された「データ」と「共通鍵」を受け取る
4 ●      自分が持つ秘密鍵を使って、暗号化された共通鍵を復号する
5 ●      復号された共通鍵を使って、暗号化されたデータを復号する

 

 

ハイブリッド暗号方式は、このような流れで暗号化とデータの送信をおこないます。

ポイントは、共通鍵を暗号化している点ですね。

公開鍵暗号方式は、送りたいデータを暗号化するのに時間がかかります。

 

しかし、ハイブリッド暗号方式では「共通鍵を暗号化」。

共通鍵のデータの大きさは、相手に送るファイルなどのデータよりもずっと小さくなります。

データが小さいほど暗号化にかかる時間は短くなるので、結果として処理時間が短縮されるわけです。

 

加えてハイブリッド暗号方式なら、「暗号化された共通鍵」が盗まれても、第三者には復号できません。

その共通鍵を復号できるのは、秘密鍵を持つデータ受信者だけですから。

仮に復号できたとしても肝心のデータはないですし、共通鍵しか復号されないので安全性も高くなっています。

 

つまり、この暗号方式は、既存2つの方式のいいとこ取りをしているのです。

処理速度・安全性の両方を兼ね備える暗号方式です。

もし重要データを送る必要があるなら、ハイブリッド暗号方式を採用しましょう。

 

暗号化の必要性

ここまでのお話で、暗号化の種類やその特徴についてお分かりいただけたかと思います。

しかし、そもそもなぜ暗号化が必要なのでしょうか?

必要性がなければ、わざわざ手間をかけて暗号化するのは面倒ですよね。

 

暗号化には主に、次の2つの必要性があります。

 

  1. 情報漏えい防止
  2. 内部不正防止

 

1つ目の情報漏えい防止は、イメージしやすいでしょう。

機密情報や個人情報が記載されたデータを誰かに送るとき、安全に送りたいですよね。

もし悪意のある第三者に漏えいしてしまったら、企業の信用に関わります。

そのため、情報漏えい防止を目的として、暗号化は重要な対策と言えるでしょう。

 

2つ目の内部不正防止も、目的自体は同じく情報漏えいの防止になります。

ただし、対策の矛先は外部の第三者ではなく、内部の従業員です。

JNSAの「JNSA内部不正対策ソリューションガイドの紹介」にもある通り、企業の重要情報を持ち出して、お金に買える従業員がいます。

 

こうした内部不正の防止にも、暗号化は役立ちます。

たとえば、ある暗号化システムでは、会社のデータが個人のUSBメモリにコピーされると、自動でデータを暗号化。

これにより、USB内のデータを見ようとも、暗号化されているために確認できません。

いずれにせよ暗号化は、企業の重要情報ひいては信頼を守るために、必要なセキュリティ対策と言えるでしょう。

まとめ

ここまで、暗号化について解説してきました。

共通鍵暗号方式と公開暗号方式は、どちらも一長一短。

それぞれにメリット・デメリットがあります。

 

しかし、どちらか一方を選ぶ必要はありません。

両者のメリットを兼ね備えたハイブリッド暗号方式があるからです。

この方式を使えば、安全性を高めながらも、早い処理速度を実現できるでしょう。

 

今の時代、暗号化は必須と言ってもいい重要なセキュリティの1つです。

ほとんどの企業が、メールやインターネットを活用して、重要情報をやり取りしています。

そうした大切な情報を守るためにも、暗号化は必要不可欠な存在と言えるでしょう。

 

もしあなたの会社がまだ暗号化を実施していないのであれば、この記事をきっかけに検討してみてはいかがでしょうか。

関連記事