ブロックチェーンや電子マネーなどの経済資本や重要情報がコンピューターで扱われ続けている中、セキュリティの重要性はますます上がってきています。ウェブ開発を行う上でも、クラッカーからの攻撃の被害に合わないようセキュリティを考慮することがとても重要になっているのです。
そこで、今回はインターネット通信において最も基本的な通信方法である共通鍵暗号と公開鍵暗号の仕組みについて解説していきます。
目次
暗号とはなにか
そもそも暗号とはなんでしょうか?暗号とは「ある法則を利用して、特定の人だけが読めるようにすること」ということが出来ます。文章を誰でも読める状態から、特定の人しか読めない状態にすることを「暗号化」といいます。また、それによって作られた文章や文字列を「暗号文」と言います。逆に、誰でも読める通常の文章を「平文」といいます。暗号化の作業では、「アルゴリズム」と「鍵」が必要になります。
例えば「ブログ」という文章の文字を、2文字ずつ上にずらしてみましょう。すると「バルガ」になります。このとき、
- アルゴリズム→上にずらす動作
- 鍵→2文字
という対応関係になります。50音表を上にずらすというアルゴリズムと、2文字ずらすという鍵を両方知らなければ、暗号文の意味は分かりません。そして、アルゴリズムと鍵を使って、元の読める文章に戻すことを「復号」と言います。「復号化」ではないので要注意です。
現在、通信などで使われている暗号は、アルゴリズムは公開して鍵を秘密にしておくことで機密性を維持しています。つまり、鍵をどのようにして守るかということが重要になります。鍵のやりとりの方法として「共通鍵暗号」「公開鍵暗号」をベースとして、そのハイブリッド方式がよく使われます。
共通鍵暗号
共通鍵暗号の仕組み
共通鍵暗号は、最もシンプルな暗号方式です。上の図のように、あらかじめ全く同じ鍵を2つ作成して送信者と受信者の両方で持っておきます。
①送信者は送るテキストを共通鍵で暗号化
②受信者に送信
③受信者は暗号化された文を共通鍵で復号
上に書いた文字数をずらす暗号化や、第二次世界大戦で利用されたエニグマなど1976年以前の暗号は共通鍵暗号に分類されます。この暗号方式は1977年にアメリカ政府が策定した56ビットの鍵を用いるDES(Data Encryption Standard)として広く用いられてきました。しかし現在では総当たり攻撃で解読可能なほど安全性が低くなっており、2001年にNISTが公募し規格化したAES(Advanced Encryption Standard)が標準として利用されています。
AESでは鍵の長さを128ビット、192ビット、256ビットから選択できます。
共通鍵暗号のメリット・デメリット
共通鍵暗号のメリットは、暗号化と復号の計算が早いという点です。一方で、デメリットとしては共通鍵を安全に運ばなければいけないこと、多くの人数で送受信を行う場合に鍵の管理が大変になるという点があります。
公開暗号鍵
公開暗号鍵の仕組み
公開暗号鍵では、まず受信者側が「秘密鍵」と「公開鍵」を作成します。「秘密鍵」は絶対に漏洩しないように受信者が持っておきます。
①「公開鍵」を送信者に渡す
②次に送信者は平文を「公開鍵」で暗号化
③暗号化した文章(暗号文)を受信者に送信
④受信者は秘密鍵で暗号文を復号
公開鍵暗号は1977年にリベスト・シャミア・エーデルマンが考案したRSA暗号が代表例です。RSA暗号は大きな数の素因数分解が簡単に出来ないことを前提として作られており、量子コンピューターなど桁違いの計算機能を持つコンピュータが実用化されると、突破されるのではないかと心配されています。
その他には、RSA暗号と比べて短い鍵の長さで同等の暗号強度を保てる楕円曲線暗号などが存在します。
公開鍵暗号のメリット・デメリット
公開鍵暗号では、共通鍵暗号のように鍵を慎重に受け渡す必要がありません。また、公開鍵を公開できるので、鍵の管理も簡単になります。一方で、暗号化や復号の処理計算に時間がかかるというデメリットがあります。
ハイブリッド暗号
共通鍵暗号では鍵の受け渡しと鍵の管理、公開鍵暗号では暗号化と復号に処理時間がかかるというデメリットがありました。それならば、両者のいいところを混ぜ合わせてデメリットを打ち消してしまおうというのがハイブリッド暗号です。
まず、
①受信者は秘密鍵と公開鍵を作成し送信者に送信
②送信者はセッションキーと呼ばれる共通鍵を作成
③共通鍵で平文を暗号化
④共通鍵自体を公開鍵で暗号化
⑤暗号文と暗号鍵を受信者に送信
⑥受信者は秘密鍵を使って暗号鍵を復号し共通鍵を取得
⑦復号で手に入れた共通鍵で暗号文を復号して平文を取得
ハイブリッド暗号のメリット・デメリット
ハイブリッド暗号は、共通鍵暗号と公開鍵暗号のメリットを取り入れて、デメリットを打ち消したものとなります。そのため、鍵の受け渡しや管理が簡単で、計算時間も遅くならないという点で最も使われている暗号方式になります。
まとめ
暗号の仕組みは最初は複雑で訳が分かりませんでしたが、何度か勉強しているうちに「そういうことだったのか!」と理解できるようになるかと思います。
これらの暗号方式は、SSL/TLSや署名・証明書といったウェブにおけるセキュリティ技術につながっていくので、ここでしっかりと理解をしておくことが重要です。また、最近流行りのビットコインについても「Encryption Currency(暗号通貨)」と言われているように暗号技術が重要なコンセプトになっています。
この記事を読んで、少しでも理解を深めていただけたら幸いです。
参考文献
- 基礎から学ぶ情報処理 改訂版(培風館) 榎原博之 編著, (2018年 改定)