情報セキュリティ
Information Securityセキュリティの3要素
情報セキュリティを守るとは、具体的に何を守ることなのでしょうか。一般的に、次の3つの要素を保つことだと説明されます。
| 要素 | 意味 |
|---|---|
| 機密性 | 許可された人だけが情報にアクセスできる状態を保つこと |
| 完全性 | 情報が改ざん・破壊されず、正確な状態を保つこと |
| 可用性 | 必要なときに、情報やシステムに正しくアクセスできる状態を保つこと |
このあと見ていく認証・暗号化・ハッシュ値といった技術は、すべてこの3要素のいずれか、あるいは複数を守るために使われています。
個人認証 ― 銀行は多要素認証を必ず
あるサービスにアクセスしてきた相手が、本当に本人であるかどうかを確かめることを個人認証と呼びます。認証の方法は、大きく「知識(パスワードのように、本人だけが知っている情報)」「所持(スマートフォンやICカードのように、本人だけが持っているもの)」「生体(指紋や顔のように、本人の身体的な特徴)」の3種類に分けられます。
このうち2種類以上を組み合わせて認証する方式を多要素認証と呼びます。パスワードだけの認証は、パスワードが漏れてしまえば突破されてしまいますが、パスワード(知識)に加えてスマートフォンに届く確認コード(所持)まで要求すれば、突破の難易度は大きく上がります。銀行関連のサービスでは、資産に直結するという性質上、多要素認証の導入が必須といってよいレベルで求められています。
httpからhttpsへ ― 通信そのものを暗号化する
Webサイトのアドレスの先頭には、http:// または https:// という表記があります。かつてはhttp(暗号化なしの通信)が広く使われていましたが、現在は暗号化通信を行うhttpsを使うことが基本になっています。httpsで通信すると、途中で第三者に通信内容を盗み見られても、中身が意味の通らない文字列にしか見えなくなります。この「意味の通らない文字列に変換する」処理を担っているのが、次に見る暗号化の技術です。
共通鍵暗号方式と公開鍵暗号方式
データを暗号化して守る方式には、大きく分けて共通鍵暗号方式と公開鍵暗号方式の2種類があります。
| 方式 | 仕組み | メリット | デメリット |
|---|---|---|---|
| 共通鍵暗号方式 | 暗号化と復号に、同じひとつの鍵を使う | 処理が軽く、暗号化・復号ともに速い | 鍵を相手に渡すとき、途中で奪われる危険がある。やり取りする相手が増えるほど、必要な鍵の種類も増えていく |
| 公開鍵暗号方式 | 受信者が「公開鍵」と「秘密鍵」の2つを作り、公開鍵だけを送信者に渡す。送信者は公開鍵で暗号化し、受信者は自分だけが持つ秘密鍵で復号する | 公開鍵が第三者に漏れても、対になる秘密鍵がなければ復号できないため、安全性が高い。受信者が用意する秘密鍵は1種類だけでよい | 共通鍵暗号方式に比べて、暗号化・復号の処理に時間がかかる |
表の中に出てくる復号とは、暗号化されたデータを元の読める状態に戻すことです。よく「複合」と書き間違えられますが、暗号を解くほうは「復号」です。
実際の通信では、用途に応じてこの2つの方式が使い分けられているほか、両方の長所を組み合わせたハイブリッド鍵交換方式も広く使われています。安全性の高い公開鍵暗号方式で共通鍵を安全に受け渡し、そのあとの実際のデータのやり取りには、処理の速い共通鍵暗号方式を使う、という組み合わせ方です。
デジタル署名と認証局
デジタル署名は、公開鍵暗号方式を利用し、インターネット上の情報が「送信者本人によるものか」「改ざんされていないか」を保証する仕組みです。送信者は秘密鍵で署名を作成し、受信者は公開鍵でそれを検証することで、データの信頼性を確認できます。電子メール、ソフトウェア配布、電子契約など、信頼性が求められる場面で広く活用されています。
ここで、もうひとつ疑問が生まれます。「その公開鍵は、本当に本人のものなのか?」という点です。この公開鍵の正当性を確認しているのが認証局(CA。公開鍵が確かに本人のものであることを証明する、信頼された第三者機関)です。私たちがブラウザでhttps通信をしているとき、この確認作業は裏側で自動的に行われています。
ハッシュ値 ― ファイルが改ざんされていないかを確かめる
ファイルが送信の途中で改ざんされていないかどうかを検知する仕組みとして、ハッシュ値(元のデータから一定の計算手順で導き出される、短い固定長の値。データがほんの少し変わるだけで、ハッシュ値は大きく変わる)があります。
Windowsのコマンドプロンプトでは、次のコマンドでファイルのハッシュ値を確認できます。
C:\Users\you> certutil -hashfile hash.txt MD5これは、hash.txtというファイルのハッシュ値を、MD5という計算方式で求めるコマンドです。ファイルを送る前と受け取った後、それぞれでこのコマンドを実行し、出てきたハッシュ値が一致していれば、途中で改ざんされていないことを確認できます。
ここからは、基礎の一歩先の話です。初心者の方は読み飛ばして構いません。でも、暗号化とハッシュ値の違いに興味を持ち始めた方ほど「そうだったのか」となる話です。
ハッシュ値は、元に戻せない
暗号化と決定的に違う点がひとつあります。暗号化は、正しい鍵さえあれば元のデータに戻せる(復号できる)仕組みですが、ハッシュ値は、そこから元のデータを逆算することができません。この「一方向にしか計算できない」という性質を利用して、多くのサービスは、私たちのパスワードそのものではなく、パスワードから計算したハッシュ値だけを保存しています。
「パスワード流出」のニュースで、被害の程度が違う理由
サービスがパスワードそのものを保存していた場合、そのデータベースが流出すると、利用者のパスワードがそのまま漏れてしまいます。一方、ハッシュ値だけを保存していれば、データベースが流出しても、そこから元のパスワードを直接読み取ることはできません。ニュースで「パスワードは暗号化(ハッシュ化)されており、直ちに悪用される可能性は低い」といった説明を目にすることがありますが、これはこの仕組みを指しています。
教室のひとこま
最後に、このテーマを教えるとき、教室で毎回のように交わされるやりとりを。
講師
講師暗号化の回は、共通鍵と公開鍵の違いでつまずく方が多い分野です。「鍵をかけるのと開けるのが同じ鍵か、別の鍵か」という一点だけ押さえてもらうと、そこから先の理解がぐっと早くなります。