【暗号技術の役割】誰でも分かる暗号技術①

2018年6月10日

仮想通貨とデジタル背景

1990年代にはパソコン、2000年代には携帯電話、2010年代にはスマートフォン・・・以前では考えられない発明品がものすごい速さで広まる変革の時代に私たちはいます。これからも、AI・IoTといったテクノロジーの進歩により、ますます便利な時代がやってくるでしょう。

しかしテクノロジーが進歩すればするほど、人間も進化しなくてはなりません。私たちは現在どこからでもネットワークに繋がることができ、常に情報にアクセスすることができます。そして、正しい知識を持たずにネットワークにアクセスするということは、知らずのうちに自身の情報を危険にさらすことになりかねません。

セキュリティは、これからの情報時代を生きるすべての人が心得ておかなくてはならないものです。今回はそのセキュリティの根幹を支える暗号技術について、誰でも分かるように説明したいと思います。暗号技術を理解することで、セキュリティに対する理解・興味はいっそう深まる事でしょう。

固い表現は可能な限りで抑えて理解のしやすさを重視して書こうと思うので、気軽にお付き合いいただければと思います。

情報セキュリティで守るべき6つの特性

普段何気なく使っている通信・・例えば、Webページでショッピングを楽しむとき、ATMで現金を引き下ろすとき、車のETCカードなど、私たちが意識していなくても暗号技術は身近に存在しています。

これらの暗号技術は何を守るために存在しているのでしょうか?暗号技術について学ぶ前に、守るべきものをしっかり理解しておきましょう。

情報セキュリティには守らなければならないとされる6つの特性があります。それを1つ1つ見ていくことで、「暗号技術がセキュリティを守る上でどういった役割をしているのか」、「暗号技術の他にセキュリティを守る上で重要なものは何か」といったことが見えてくると思います。

というわけでさっそく、まずはこれらの性質についてイメージを持ってもらうために簡潔に説明します。

機密性

機密性とは、「情報を見せたくない人に見せないようにする」ことをいいます。

機密性をおろそかにしてしまうと、見せたくない情報を他人に見られてしまう恐れがあります。「情報資産」という言葉にもある通り、情報は「資産」です。漏えいする情報によっては、お金を盗られるよりも恐ろしい損失を被ることがあります。

機密性

 POINT

情報は正当な権利を持った人だけがアクセスできるようにしておくこと

完全性

完全性とは、「情報が正しい状態を維持し、保証する」ことをいいます。

完全性は全ての情報システムに必要となる特性です。誤った情報にアクセスしてしまうことは、何も得られないよりもはるかに恐ろしい事です。特に恐ろしいのが、攻撃者による情報の改ざんです。これについては、暗号技術によりしっかりと対策しておく必要があります。

完全性

 POINT

情報は改ざんされることなく常に正しい状態で維持されること

可用性

可用性とは、「情報を使いたいときに使える」ことをいいます。

可用性は、情報にアクセスできる人の利便性に関わる特性です。「サーバーがダウンしてしまい情報にアクセスできない」、「レスポンスが遅い」といったことが頻繁に起きるシステムは、特に災害警報など、リアルタイムで情報にアクセスする必要がある場合に使い物になりません。

また、可用性は最もユーザーが体感しやすく、システムに対するユーザーの満足度に影響しやすい特性であるとも言えます。

可用性

 POINT

情報は必要なときに使用できること

真正性

真正性とは、「利用者・プロセス・システム・情報などが本物であること」をいいます。

真正性は、身近なものを挙げると、パスワードや生体認証などの本人認証によって高めることのできる特性です。攻撃者は、正規の利用者になりすましてシステムに侵入しようとします。このなりすましを防ぐためには、真正性を高めておく必要があります。

真正性

 POINT

利用者・プロセス・システム・情報は本物であることが保証されること

責任追跡性

責任追跡性とは、「利用者・プロセス・システムなどの動作について、行った人と内容を一意に追跡できること」をいいます。

「一意に」とは、一つに確定していることを言います。例えば、Bさんが自身の口座のデータベースに不正アクセスして、口座残高を勝手に1万円から1億円に増やしてしまったとしましょう。この場合、動作を行った人「Bさん」と動作の内容「口座残高を1万円から1億円に増やした」が必ずもれなく記録されている必要があります。

そしてこの記録(「ログ」といいます)はあとから誰かが改ざんできるものであってはなりません

責任追跡性

 POINT

利用者・プロセス・システムの動作について、動作の「主体」と「内容」は一意に追跡できること

信頼性

信頼性とは、「情報システムにおいて、処理の結果に矛盾がないこと」をいいます。

信頼性は、その名の通り、「情報システムがどれだけ信頼できるか」ということです。情報システムにおいて行われる様々な操作や処理が、バグが発生することなくきちんと期待した通りに動作することは、どの情報システムについても重要であると言えます。

きまぐれな結果を出力を出してくる情報システムは、おみくじにはいいかもしれませんが、普通は使い物になりません。

信頼性

 POINT

情報システムにおいて、操作や処理の結果には矛盾が無く、期待した通りの結果が出力されること。

これら6つの特性は全てを最大限まで高めることはできません。いくつかの特性はトレードオフの関係にあります。

たとえば機密性(情報を見せたくない人に見せない)を高めるために、何重にも認証をかけたとしましょう。その場合、可用性(情報を使いたい時に使える)は自ずと低くなってしまいます。

情報システムの性質をしっかりと見極め、6つの特性のうちどの特性がその情報システムに対して重要なのか考察し、優先順位を付けて対策することが重要といえます。

暗号技術ってどんなものがあるの?

「誰でも分かる暗号技術」シリーズの記事では暗号技術についてお話しをします。しかし、ひとことに暗号技術といってもイメージがつきませんね。

そこで、まずはじめに暗号技術について、具体的にどのようなものがあるかを簡単に見ておきましょう。

「暗号技術」と「暗号」の違い

細かいことですが、暗号技術を確認する前に「暗号」と「暗号技術」の違いについて定義しておきます。

暗号

暗号とは「ある内容を伝える時に、第三者に内容を知られないようにデータを加工(暗号化)して、受け渡す方法」です。

暗号において、データを加工することを「暗号化」、加工したデータを元に戻すことを「復号」といいます。また、暗号について、暗号化されたデータのことを「暗号文」、暗号化される前のデータのことを「平文」といいます。

暗号

暗号技術

暗号技術は、暗号より広い意味で、「暗号理論を使った技術の総称」を指します。もちろん「暗号」も「暗号技術」の一種です。

当ブログでは以下の4つの主要な暗号技術を取り上げます。

暗号

暗号の定義はさきほどした通りですが、もう少し詳しくおはなししておきましょう。

暗号では、当事者間同士でのみ分かる形でデータをやりとりしますが、「その過程でデータをどのようにして加工するか」を決めておく必要があります。この加工の手順のことを、暗号のアルゴリズムといいます。

このアルゴリズムによって、暗号の強度が決まります。当ブログでは、いくつかの代表的な暗号についてアルゴリズムを紹介する予定です。

脆弱な(欠陥があり、すぐに破られてしまう)アルゴリズムが危険なのはいうまでもないことですが、強固なアルゴリズムの暗号を使っても、使い方次第では必ずしも安全ではないことを覚えておいてください。

鍵配送

暗号の仕組みで、重要な役割を持つのが「鍵」です。

平文を暗号化するときにも、暗号文を復号するときにも鍵を使います。正しい鍵を使わないと暗号文が復号できないように暗号を設計しておくことで、鍵を持った人だけが暗号文を復号できます。

つまり何らかの方法で、復号に必要な鍵が攻撃者に渡ってしまった場合、攻撃者は暗号文を復号出来てしまいます。したがって、安全に鍵を配送する仕組みが必要となります。

暗号には、暗号化と復号で同じ鍵を使う「共通鍵暗号」と、異なる鍵を使う「公開鍵暗号」があります。それぞれにメリット・デメリットがありますが、これらについては次の記事で詳しくおはなしします。

ハッシュ関数

セキュリティの「完全性」の項でおはなしした通り、情報は改ざんされていない正しい状態であることが必要です。暗号や鍵配送は機密性を高めるための暗号技術でしたが、ハッシュ関数は完全性を高めるための技術です。

ハッシュ関数を簡潔に説明すると、ランダム(に見える)値を出力する関数です。ハッシュ関数に同じデータが入力されると同じ値が出力され、異なるデータが入力されると異なる値が出力されます。

これを利用することで、送信前後でデータが改ざんされていないかを確認することができます。

ハッシュ関数1
改ざんされていない例
ハッシュ関数2
改ざんされた例

ディジタル署名

ディジタル署名は、名前の通り、データの送信者が本当の送信者であるのか、データは改ざんされていないかを示す、現実世界での「署名」の役割をします。

ディジタル署名は本人にしか作れないため、署名者が後になって署名したことを否認することが出来ません。よって、ディジタル署名は、「否認防止」の役割を果たすことができます。

ディジタル署名は、「公開鍵暗号」や「ハッシュ関数」といった暗号技術を組み合わせて実現されます。これにより、情報セキュリティの「完全性真正性責任追跡性」を高めることができます。ディジタル署名の仕組みについては、それぞれの暗号技術について学習したあとにじっくり見ていきたいと思います。

暗号の鉄則

本記事のしめくくりに、暗号に対する考え方として持っておくべき3つの鉄則をお伝えします。

  1. 暗号のアルゴリズムは公開されるべきである
  2. 弱い暗号を使うのは、何もしないよりも危険である
  3. 永遠に解読されない暗号は存在しない

これら3つの考え方は、互いに関わりあっているものです。

強固な暗号のアルゴリズムを作るのは非常に難しく、多くの優秀な専門家の意見を取り入れて決定するべきです。中身が分からない暗号が実は脆弱であり、それが原因で情報が危険にさらされるのなら、最初から十分な議論を踏まえて決定された強固なアルゴリズムを使うべき、というわけです。

「アルゴリズムを秘密にすること」によって得られる効果は、「強固であることが保証された公開アルゴリズムを使うこと」に比べると微々たるものです。

ケルクホフスの原理として知られる「暗号方式は、秘密鍵以外の全てが公知になったとして、なお安全であるべきである」は、まさにこれらの考え方を表しています。