SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

エンジニアが生き残るためのテクノロジーの授業

セキュリティリスクを減らすために知っておきたい暗号のこと

エンジニアが生き残るためのテクノロジーの授業 第6回


  • X ポスト
  • このエントリーをはてなブックマークに追加

 本連載では、ITエンジニアが時代の波に飲み込まれず、ITの世界で生き残っていくための知識を解説していきます。第6回のテーマは暗号です。セキュリティリスクを減らすために、安全性を高める暗号化技術の基本を知っておきましょう。盲点になりがちな「暗号化される範囲」についても解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

新刊のお知らせ

 2016年12月17日に、この連載をベースにした新刊『エンジニアが生き残るためのテクノロジーの授業』が発売されました!

 ITとビジネスの関係、コンピュータ、ネットワーク、プログラミング、データベース、セキュリティ、人工知能など、本連載で解説した内容も含め、エンジニアなら誰もが知っておくべきテーマを一冊で学ぶことができます。

安全性を高める暗号技術

 前回はエンジニアが気をつけるべきセキュリティについて考えましたが、今回はもう少し踏み込んで、安全性を高める技術である「暗号」について解説します。エンジニアの多くはすでにある暗号技術を利用する立場ですが、仕組みを理解していないと、無意味な対策になってしまったり、現実的でない実装をしようとしてしまったりします。基本的な暗号技術と、暗号化される範囲を押さえておきましょう。

暗号の基本的な考え方

コンピュータの世界ならではの危険

 日常生活を送る中で、私たちは「暗号」を意識していません。友人や家族との会話、店頭での商品の購入など、私たちは暗号を使わずに相手とやりとりしています。それは周囲に知られても問題のない内容で、相手と対面で会話しているからです。

 コンピュータを使った通信では、「相手にだけ伝えたい重要な情報を、ほかの人に知られてしまう(盗聴)」だけでなく、「伝えたい内容を誰かに書き換えられてしまう(改ざん)」「やり取りしている相手が実は本人ではない(なりすまし)」といった事態が発生するリスクがあります。これは、対面でのコミュニケーションが中心だった従来の社会では存在しなかったリスクです。

暗号化とは

 盗聴や改ざんなどによる被害を防ぐために、通信相手とは相互に理解でき、第三者には理解できないメッセージに変換して通信を行います。この変換を「暗号化」といい、元に戻すことを「復号」といいます。また、元の内容を「平文」、変換されたメッセージを「暗号文」と呼びます。

 古くからあるものに、平文の文字に別の文字を割り当てる「換字式暗号」があります。図1のようにアルファベットを1文字ずらすだけでも、人間には分かりにくくなります。正規の受信者は、逆方向に1文字ずらせば復号できます。

図1 換字式暗号
図1 換字式暗号

 この暗号は、ずらす文字数が分からないと元のメッセージを理解できません。しかしこの程度の暗号では、コンピュータを使えば簡単に復号されてしまいます。そこで、現在使われている暗号はもっと複雑になっています。上記のような、旧来の単純な暗号は「古典暗号」といい、現在使われている複雑な暗号は「現代暗号」といいます。

現代暗号の代表「共通鍵暗号」

共通鍵暗号の仕組み

 現代暗号の代表的な例として「共通鍵暗号」があります。名前のとおり、送信者と受信者が共通の鍵を使う方法です。身近な例で考えると、大事なものを金庫に入れて鍵をかけ、それを配送するイメージです。受け取った人はスペアキーで金庫を開けて中身を手に入れます(図2)。

 共通鍵暗号では、これと似たような作業をデータに対して行います。送信者はデータを鍵で暗号化し、出力された暗号文を送信します。受信者は送信者と同じ鍵を使って復号し、元のデータを得ます。途中の経路は暗号文しか通らないので、鍵を持っていないとデータを見ることはできません。

図2 共通鍵暗号のイメージ
図2 共通鍵暗号のイメージ

 共通鍵暗号は実装が容易で、暗号化や復号を行う際の負荷も小さく、高速に処理できます。大きなファイルを暗号化するとき、処理に膨大な時間がかかるようでは実用に耐えないため、高速に処理できることは重要です。

鍵の渡し方が難しい

 一方で、「鍵をどうやって相手に渡すか」という問題があります。ネットワーク経由で鍵を渡すと、ほかの人に知られてしまう可能性があり、暗号文を復号できてしまいます。

 また、やり取りする相手が増えると鍵の数が膨大になり、管理が大変です(図3)。2人が通信する場合には1つの鍵でよいですが、3人になると各通信に別々の鍵が必要です。つまり、3人だと3個の鍵、4人だと6個、5人だと10個……のように増えていきます。n人の場合、n(n-1)/2の数が必要になってしまいます。

図3 共通鍵暗号の鍵の数
図3 共通鍵暗号の鍵の数

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
鍵の問題をクリアした「公開鍵暗号」

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
エンジニアが生き残るためのテクノロジーの授業連載記事一覧

もっと読む

この記事の著者

増井 敏克(マスイ トシカツ)

増井技術士事務所 代表。技術士(情報工学部門)、テクニカルエンジニア(ネットワーク、情報セキュリティ)、その他情報処理技術者試験に多数合格。 ITエンジニアのための実務スキル評価サービス「CodeIQ」にて、情報セキュリティやアルゴリズムに関する問題を多数出題している。 また、ビジネス数学検定1級に合格し、...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9841 2016/12/20 15:52

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング