SHOEISHA iD

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

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

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

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

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


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

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

公開鍵暗号の仕組み

 共通鍵暗号の「鍵の配送問題」を解決したのが、「公開鍵暗号」です(図4)。この方法では、暗号化と復号で異なる鍵を使い、一方を公開しても問題ありません。この公開される鍵を「公開鍵」と呼びます。

 もう一方は「秘密鍵」と呼ばれ、他人には絶対に知られないようにする必要があります。これらはそれぞれ独立しているものではなく対になっています。暗号化と復号で異なる鍵を使うことから、「非対称暗号」とも呼ばれます。

 公開鍵暗号で暗号化する場合は、受信者の公開鍵を送信者が入手します。これは公開されている鍵なので、誰でも入手できます。送信者はこの公開鍵を使ってデータを暗号化し、出力された暗号文を送信します。受信者は受信した暗号文を自身の持つ秘密鍵で復号します。このときほかの人は秘密鍵を持っていないので、暗号文を復号できません。

図4 公開鍵暗号
図4 公開鍵暗号

負荷が高いので部分的に使う

 公開鍵暗号は共通鍵暗号よりも複雑な計算が必要なため、負荷が高くなります。そのため大きなファイルの暗号化には向きませんが、小さいデータを暗号化するには十分です。この特徴に合わせて、「共通鍵暗号の鍵をネットワーク経由で渡す」「通信相手が正しいかどうか判定する認証用のデータをやり取りする」といった重要なデータに対して使います。

 公開鍵暗号では、1人に1つ公開鍵と秘密鍵のペアがあれば十分です。2人ならペアが2つ、10人なら10個、100人でも100個あれば、安全にやり取りできます。

暗号化される範囲を意識する

HTTPとHTTPS

 インターネットを利用していて暗号化を確認する場面といえば、Webサイトでの入力フォームが挙げられます。ショッピングサイトなどで個人情報を入力する場合、ブラウザの鍵マークを確認するように教えられた人も多いと思います。

 Webサイトを閲覧するときのプロトコルであるHTTP(Hypertext Transfer Protocol)には暗号化の仕組みがありませんが、鍵マークが表示されるHTTPS(Hypertext Transfer Protocol Secure)での通信なら暗号化されます。文字どおり、HTTPをより「Secure(安全)」にした通信方式で、「SSL/TLS」という暗号化の仕組みが使用されます。

 HTTPSでは公開鍵暗号を用いてWebサーバーに配置されているサーバー証明書を、Webブラウザにインストールされているルート証明書を使って検証します。その上で共通鍵暗号の鍵を生成、公開鍵暗号を用いてWebサーバーと鍵交換を行います。以降のやり取りは共通鍵暗号で行われます。これらの処理はすべてブラウザが行ってくれるため、利用者が意識する必要はありません。

無線LANの暗号化設定は安全?

 最近は自宅だけでなく、外出先でも無線LANによりインターネットに接続する場面が増えてきました。無線LANの接続設定を行うとき、WEPやWPA、WPA2などの暗号方式を選択しています。このため、HTTPSを使わなくても通信が暗号化されていると考えてしまう人がいます。

 しかしこれには落とし穴があります。無線LANの暗号化によって暗号化されるのは、コンピュータと無線LAN機器の間の通信だけです。そこから先のインターネット上の通信は暗号化されません(図5)。

図5 暗号化の範囲
図5 暗号化の範囲

 つまり、無線LANで暗号化設定を行っていても、Webサイトとの通信にHTTPが使用されていると、通信の内容を第三者に盗聴されてしまう可能性があります(図6)。HTTPSなら、「WebブラウザとWebサーバーの間」の通信も暗号化されます。

 もちろん、インターネットへのアクセスはWebの閲覧だけではありません。メールの送受信やFTPなど、暗号化されない通信があります。通信の暗号化を考えるときには、「どの範囲が暗号化されているのか」を理解しておきましょう。

図6 無線LANの設定だけではブラウザとサーバーの間が無防備
図6 無線LANの設定だけではブラウザとサーバーの間が無防備

次のページ
メールの暗号化はどうなっている?

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング