IT初心者が3種類の暗号化を簡単に説明してみた!
私がこの業界に入ってはや1週間。頭の中でも今まで使ってなかった部分をフル回転させているせいで、思考回路はショート寸前ですが少しづつITパスポートを勉強しております。
そんな私が苦労して覚えた「暗号化」について私なりにまとめてみました。
ITパスポートを勉強中の皆さん、一緒に頑張りましょう!
暗号化ってなんなんだ?
「この服いいね!買っちゃおう!」
そんな時、名前や住所、場合によってはクレジットの番号をショッピングサイトに登録したとします。
しかし!インターネットというのは不特定多数のサーバを経由してデータをやり取りしています。もしかするとその個人情報……誰かに見られているかもしれません。
それを防ぐのがデータの
「暗 号 化」
と呼ばれる技術なのです。
データを暗号化すると、悪意ある第三者が上記のようなやり取りをチェックしていたとしても、何がなんやら分かりにくくすることができます。
そして暗号化されたデータは指定の相手に送られた後、受信者が復号することで読めるようになるという仕組みです。
暗号化と復号
さて先ほどさらりと出た単語「暗号化」と「復号」。これについてご説明します。
暗号化
これは暗号化されていないデータ(平文と書いて「ひらぶん」と読みます。)を暗号化されたデータ(暗号文)に変換することを指します。
暗号と言えばシャーロックホームズの踊る人形が有名ですが、要するに「一定の規則に従って第三者に容易に解読することができない」状態に変化させることです。
暗号化してしまえばその規則が分かる人以外には内容がさっぱりわかりません。
復号
そして暗号化されたデータを元に戻すことを復号と言います。
暗号化と復号には「手順(暗号アルゴリズム)」とそれに応じた「鍵」が必要になります。つまりこの二つがそろわなければ決して中身が見られることもないのです。
これさえあれば大切なデータのやり取りも怖くないですね。
割と間違えやすいのが「復号化」と表現してしまうこと。「復号」って実は「復号する」という動詞から「する」を省略したものなのです。なので「復号」に「化」をつけると日本語としておかしくなるので注意してくださいね。
さて一口に言っても暗号化と言っても色々な方式があるんです。
それはこちら!
- 共通鍵暗号方式
- 公開鍵暗号方式
- ハイブリッド鍵暗号方式
・・・といわれてもピンと来ないですよね?では順番に見ていきましょう。
共通鍵暗号方式(秘密鍵暗号方式)
まず最初にお送りするのは「共通鍵暗号方式」。
有名な方式としてはDES、トリプルDES、AESなどがあります。AESは無線LANのWPA2で使われているものなので割となじみ深いかもです。
鍵を共有することで高速処理!
共通鍵暗号方式の最大の特徴は「暗号鍵(閉める鍵)=復号(開ける鍵)」であること。
送信側と受信側で同じ形の鍵を持つことで、暗号化と復号の処理時間を短くできるというメリットがあります。
イメージとしては家の鍵をイメージするとわかりやすいかも知れません。家の鍵って合鍵を作れば自分だけじゃなくて、合鍵を持っている人なら誰でも入れますよね。
言い換えると、鍵さえ手に入れば誰でも家に侵入できてしまうとも言えます。もし家の鍵を落としたり盗まれてしまったら……おっかないですねぇ。
ということは……共通鍵暗号方式も似たようなデメリットを有しているんです。
鍵の管理は大切に!
暗号化鍵がもし盗まれればその鍵で復号できてしまうので、配布や管理に注意しないと大切なデータが簡単に流出してしまいます。
さらに問題なのが鍵の管理。
もし10人の人と相互に共通鍵暗号方式でやり取りするとします。そうなるとAさんBさん間とAさんCさん間、そしてほかの人たちの間にもそれぞれ鍵がないといけません。
つまり管理するカギは10本!さらに人数が増えれば、それだけの数を用意しなくてはいけなくなります。
なので不特定多数の人にデータを送るには向いていない方式なんですね。
公開鍵暗号方式
そんなニーズに答え、不特定多数にデータを送るための暗号方式!それが「公開鍵暗号方式」です。
代表的な方式はRSAがあります。
鍵を配ることで多くのデータを受け取れる!
「公開」の文字通り受信側は自分の暗号化鍵を公開します。こうすることで誰もが暗号化したデータを、受信側へ送信できる状態になります。
「でもこれじゃ同じ鍵を持っている人同士で中身が見放題になるのでは?」……ご安心を!復号鍵は暗号化鍵と対ではあるけれど違う形の鍵を用意しておくんです。もちろんこの復号鍵は自分で大切に持っていて秘密にしておく必要があります。
いうなれば南京錠。ロックは誰でも簡単にできますが、開けるには管理人さんの持つ鍵が必要というわけです。
公開する暗号化鍵は1本作れば配る分には問題ないですし、復号鍵もそれに対応した1本さえあれば十分です。
どうやらこの方式は共通鍵暗号方式に比べて安全性が高く、管理が楽なようです。
しかし問題がないわけではありません。
処理に時間がかかる!
鍵を誰でも持ち帰れるということは、それだけ複雑にしないと暗号化鍵をもとに復号鍵の構造がばれてしまう危険性があります。
それを防ぐには長く、複雑なアルゴリズムにして相手に解かれづらいようにしなくてはなりません。
でも凝れば凝るほど手間も時間もかかるのはどこの世界も一緒なわけで、暗号化するのも復号するのも処理が多くその分だけ遅くなります。
デジタル署名は公開鍵暗号方式と逆で、送信側の復号鍵を公開し、暗号化鍵を送信側が密かに持つ方式です。こうすることで「この暗号文を送れるのは送信者だけだから本人に間違いない!」と証明することができます。
……うーんどちらも一長一短。
安全で、管理が楽で、速い暗号方式はないものだろうか……そんな悩みを解決するのがこちら!
ハイブリッド鍵暗号方式
代表的なものにSSLがあります。
「ハイブリッド」と言うだけあってどちらの方式も使うことになりそうですが、一体どんな仕組みなのでしょうか?
鍵を鍵で包んで送る!
まず前提として送信側が受信側の公開されている暗号化鍵を持っている必要があります。
送信側はまず、「平文を暗号化するための共通鍵」を作成します。それで平文を暗号文に変えたら……なんと!その共通鍵を「受信側の公開鍵」でさらに暗号化します。そしたらそのまま両方一緒に送信するだけ!
受信側は自分の秘密鍵である復号鍵で共通鍵を復号し、復号した共通鍵で暗号文を平文に復号します。
……で、どう安全で、管理が楽で、速いのか?
文字でさらーって説明すると手順が多くて良く解らないですね。
なので少し細分化しましょう。
平文を共通鍵で暗号化
まずこの部分。
同じ鍵を使うことで処理が速い共通鍵暗号方式を採用しています。これなら公開鍵暗号方式と比べて短いアルゴリズムで暗号化できるので処理速度は速そうです。
共通鍵を公開鍵で暗号化
一般的に鍵は、平文より容量が小さいことが多いです。
家より大きな鍵なんてなかなか無いですよね?つまり平文をそのまま暗号化するよりも速い処理で暗号化できるんです。
しかもここで鍵をかけているのは、受信側の公開鍵。相手の持つ秘密の復号鍵が無ければ開けることができません。
ここで公開鍵暗号方式のメリットである安全性が出てきました。
復号鍵で共通鍵を復号
で受信側は「自身の持つ秘密の復号鍵」で、送られてきた「平文を暗号化した共通鍵」を復号します。
暗号化された共通鍵の容量なんてたかが知れているので素早く復号!
最後に共通鍵で暗号文を復号して平文に戻すだけ
最後に復号した共通鍵をそのまま使い、送られてきた暗号文を復号してフィニッシュ!
短いアルゴリズムで作成された暗号なので速いですし、ここまでに使った鍵は
- 送信側が作った共通鍵
- 受信側の公開暗号化鍵
- 受信側の秘密復号鍵
の計3本。
確かにハイブリッド鍵暗号方式は安全で、管理が楽で、速い暗号方式のようです。
最後に
いかがでしたでしょうか?
頭から煙を出しながらも、なんとか3つの暗号化についてご説明しました。
少しでも皆様の勉強にプラスになりましたら幸いです。ではまたお会いしましょう!