はじめに
個人情報や業務データを保存・送信するとき、「暗号化しておけば安全」と考えることがあります。しかし、暗号化が何を変換し、誰がどのように元へ戻すのかを理解していないと、鍵の漏えいや復号後のデータを見落とします。
暗号化は、読めるデータを、鍵がなければ内容を読み取りにくい暗号文へ変える仕組みです。必要なときは、対応する鍵を使って復号し、元のデータへ戻します。
この記事では、平文・暗号文・暗号鍵の役割、暗号化から復号までの流れ、守れる範囲と限界を解説します。読み終えると、暗号化をほかのセキュリティ対策とどう組み合わせるべきか説明できるようになります。
暗号化と復号とは
暗号化とは、暗号アルゴリズムと暗号鍵を使い、元のデータである平文を、そのままでは内容を読み取れない暗号文へ変換する処理です。復号とは、暗号文へ対応する処理と鍵を使い、平文へ戻すことです。
暗号アルゴリズムは変換の方法を定め、暗号鍵は暗号処理に使用する重要な情報です。同じアルゴリズムを使っていても、正しい鍵がなければ通常は元の平文へ戻せません。安全性を、アルゴリズムの名前を隠すことではなく、適切な鍵とその管理に依存させることが基本です。
| 用語 | 役割 |
|---|---|
| 平文 | 暗号化する前、または復号した後の読めるデータ |
| 暗号文 | 暗号化され、そのままでは内容を読み取れないデータ |
| 暗号鍵 | 暗号化や復号などの暗号処理に使用する情報 |
| 暗号化 | 平文を暗号文へ変換する処理 |
| 復号 | 暗号文を平文へ戻す処理 |
暗号化と復号の流れ
暗号化と復号の基本的な流れは次のとおりです。
- 保護する平文を用意する
- 暗号アルゴリズムと暗号鍵を使って暗号化する
- 生成した暗号文を保存または送信する
- 利用時に、対応する鍵を使って復号する
- 復号した平文を必要な処理にだけ使用する
例えば、端末の保存領域を暗号化しておくと、端末や記憶装置を盗まれた場合でも、鍵を利用できなければ保存内容を読み取られにくくなります。通信を暗号化すると、通信経路でデータを取得されても、内容の読み取りを困難にできます。
ただし、暗号文と復号に必要な秘密の鍵の両方を取得された場合や、正規のシステムが復号した後のデータを不正に閲覧された場合は、暗号化だけでは守れません。誰が秘密の鍵や復号機能を利用できるかも制限する必要があります。
暗号化で守れるもの
暗号化が主に守るのは、情報セキュリティの3要素(CIA)のうち機密性です。データを取得される事故が起きても、鍵を利用できない第三者が内容を理解しにくい状態を作ります。
暗号化の対象は、大きく保存中のデータと通信中のデータに分けられます。保存中のデータには、端末、サーバー、データベース、バックアップなどがあります。通信中のデータには、Webサイトとの通信やシステム間で送受信する情報などがあります。
暗号化は、データの盗難や取得そのものを止める対策ではありません。取得された後に内容を利用される可能性を下げる対策です。この役割を理解すると、アクセス制御や端末管理など、別の対策も必要な理由が分かります。
暗号化だけでは守れないもの
暗号化していても、復号に必要な秘密の鍵が漏えいすれば暗号文を復号される可能性があります。秘密にすべき鍵を暗号化対象のデータと同じ場所へ同じ権限で保存すると、データと鍵を一緒に取得されるおそれがあります。
また、暗号化は一般に機密性を守るための処理であり、それだけでデータが改ざんされていないことや、送信者が正しいことを保証するものではありません。暗号化と改ざん検出の両方が必要な場合は、認証付き暗号などの標準機能を使用します。データの変化を検出する基本的な考え方は「ハッシュ関数とは?データ改ざん検出の仕組みを解説」で解説しています。
暗号化は、データの削除やシステム停止も防ぎません。さらに、正規の利用者が復号した画面をのぞき見する、復号後のファイルを持ち出すといった行為にも別の対策が必要です。暗号化は万能な保護ではなく、守れる範囲が限定された対策です。
共通鍵暗号と公開鍵暗号の違い
暗号化には、共通鍵暗号と公開鍵暗号という代表的な方式があります。違いは、暗号化と復号に使う鍵の関係です。
| 方式 | 鍵の使い方 | 主な特徴 | 主な役割 |
|---|---|---|---|
| 共通鍵暗号 | 同じ秘密の鍵で暗号化と復号を行う | 大量のデータを効率よく処理しやすいが、鍵を安全に共有・保管する必要がある | 保存データや通信データの暗号化 |
| 公開鍵暗号 | 公開鍵と秘密鍵の組み合わせを使う | 公開してよい鍵と秘密にする鍵を分けられるが、一般に共通鍵暗号より処理負荷が大きい | 鍵共有を支える処理や、特定の受信者だけが復号できる暗号化 |
実際のシステムでは、二つの方式を組み合わせることがあります。公開鍵暗号の仕組みで安全な鍵共有を支え、実際のデータは共通鍵暗号で効率よく処理する構成です。公開鍵と秘密鍵の役割は「公開鍵暗号とは?公開鍵・秘密鍵の役割と共通鍵暗号との違いを解説」で詳しく解説しています。
暗号化を安全に使うための基本
暗号化を採用する場合は、独自に考えた暗号や、現在の安全性が確認されていない簡易的な方式を使わず、OS、通信ソフトウェア、データベース、クラウドサービスなどが提供する標準的な暗号機能を利用します。データの重要度に応じて変えるべきなのは、弱い暗号を選ぶことではなく、暗号化の要否、アクセス範囲、保存期間、監視などの管理方法です。
鍵は暗号化されたデータと分けて保護し、必要なシステムや利用者だけが使用できるようにします。鍵の生成、保管、利用、更新、無効化、破棄までを管理し、不要な複製を増やさないことも重要です。
鍵や復号機能の利用者は「アクセス制御とは?認証・認可との違いと最小権限の基本を解説」の考え方で最小限にします。暗号化に加えて、認証、権限管理、ログ、バックアップ、端末保護などを組み合わせることで、取得前、取得後、復号後の異なるリスクへ対応できます。
パスワードは、本人確認のときに入力値が正しいかを照合できればよく、通常は元の文字列へ戻す必要がありません。そのため、サービスが認証用パスワードを保存する場合は、復号可能な暗号化ではなく、専用のパスワードハッシュ方式を使用します。
まとめ
暗号化とは、暗号アルゴリズムと鍵を使って平文を暗号文へ変える処理です。必要なときは、対応する鍵を使って復号し、元の平文へ戻します。
暗号化は、保存中や通信中のデータを取得された場合に、鍵を持たない第三者が内容を読み取ることを難しくし、主に機密性を守ります。一方で、鍵の漏えい、復号後のデータ、不正な変更、削除、システム停止まで自動的に防ぐものではありません。
標準的な暗号機能を使い、鍵をデータと分けて管理し、アクセス制御や完全性確認などの対策と組み合わせることが、安全に暗号化を利用する基本です。