セキュリティ関連のキーワードに関する“素朴な疑問”を解消していく本連載。第9回のテーマは「暗号技術」です。通信に存在する3つのリスクとそれを解決するための暗号技術について学びましょう。
コンピュータの世界でよく「暗号」という言葉を目にしますが、これはどういうものなのですか?
メッセージなどを、伝えたい相手だけに、正しく伝えるために必要な仕組みです。
私たちが普段生活しているときに、「暗号」を意識することはあまりありません。友人や家族と会話をするときも、お店で商品を買うときも、私たちは暗号を使わずに相手とやりとりしています。それは多くの場合、相手と対面で、周囲に知られても問題のないやりとりをしているからです。
一方で、コンピュータを使って通信を行うインターネットなどの世界では、「相手にだけ伝えたい重要な情報を他の人に知られてしまう(盗聴)」「伝えたい内容を誰かに書き換えられてしまう(改ざん)」「やりとりしている相手が実は本人ではない(なりすまし)」といった事態が発生するリスクがあります。
これらのリスクを避けるため、インターネットなどの世界では「暗号技術」が用いられます。第3回で説明した「SSL/TLS」も、Webサイトと安全に通信を行うための暗号技術の1つです。
インターネットに存在するリスクについて理解できました。でも、暗号で通信の内容を隠すだけで、これらのリスクを全て解消できるのですか?
暗号技術には、通信の内容を秘匿する「暗号化」の他にも、いろいろな機能が含まれています。
「暗号」というと、「データの内容を他人が見ても分からないように変換する方法」をイメージする方が多いかもしれません。これは「暗号化」と呼ばれますが、インターネットの世界の暗号技術には、他にもさまざまな仕組みが含まれています。具体的には、前述の「盗聴」「改ざん」「なりすまし」を防止するために、「暗号化」「ハッシュ」「認証」という3つの仕組みが用いられます。
「ハッシュ」は、データの内容が改ざんされていないことを確認するための技術です。例えば、オンラインショッピングで商品を3個購入しようとしたときに、購入する数を誰かに勝手に“30個”に書き換えられてしまうと大変です。このような改ざんが行われていないことを、ハッシュにより確認します。
より具体的に説明すると、ハッシュの仕組みでは、「ハッシュ関数」というものを使い、元のデータから「ハッシュ値」と呼ばれる値を計算します。このハッシュ関数には、「同じデータからは同じハッシュ値が得られるが、データの内容が少しでも違えば、得られるハッシュ値は大きく異なる」という特徴があります。また、「ハッシュ値から元のデータを求めることはできない」という性質もあります。データを相手に送信するときには、ハッシュ値と元のデータをセットにして送ります。
データを受け取った相手は、送り手と同じように元データからハッシュ値を計算し、送られてきたハッシュ値と比較します。このとき、データが途中で改ざんされていれば、ハッシュ値が一致しないため、改ざんに気付くことができます。
また、「認証」は通信を行っているのが間違いなく本人であることを証明するために使われます。認証というと「ID」と「パスワード」を使って本人を確認する方法をイメージする方もいるかもしれませんが、ここでいう認証では、「デジタル署名」を用いて本人を証明します。これについては後述します。
次ページでは、「共通鍵暗号」の仕組みを解説します。
Copyright © ITmedia, Inc. All Rights Reserved.