用語辞典・プライバシー・認証

暗号化

暗号化とは

暗号化は、第三者が読めない形へデータを変換し、正しい鍵を持つ相手だけが復元できるようにする処理です。英語ではencryption(エンクリプション)といいます。

読める元データをplaintext(プレーンテキスト、平文)、変換後をciphertext(サイファーテキスト、暗号文)、戻す処理をdecryption(ディクリプション、復号)といいます。

アルゴリズムは公開されても安全であることを前提にし、秘密にする中心は鍵です。独自の変換方法を隠すだけでは、検証された暗号方式の代わりになりません。

平文を鍵とアルゴリズムで暗号文へ変え、許可された復号点だけで戻す共通鍵・公開鍵と、機密性・完全性・認証の役割を分ける
平文が暗号装置と鍵を通って読めない暗号文になり、共通鍵方式と公開鍵方式の異なる鍵配置、通信途中の盗み見防止、改ざん検出、許可された相手での復号を示すピクトグラム図解
図1暗号文の長さ・送信時刻・通信相手などのメタデータは残ることがあります。暗号化が隠す範囲を具体的に確認します。

暗号化の六つの構成要素

Plaintext守る元データ

メッセージ、ファイル、ディスクブロック、パスワード保管庫など、復号前は利用できる内容です。

Algorithm変換の規則

標準化され専門家の検証を受け、目的に合うモードとパラメーターを選びます。

Key結果を左右する秘密値

十分なランダム性で生成し、用途を分け、保存・配布・回転・廃棄を管理します。

Ciphertext読めない変換結果

第三者に取得されても、鍵なしでは現実的な時間で平文を得にくい状態です。

Integrity改ざんを検出する

認証付き暗号やMACを使い、暗号文の一部を書き換えられていないか確かめます。

Endpoint復号して使う場所

正規端末でもマルウェアや画面共有があれば平文を読まれるため、終端も守ります。

共通鍵暗号と公開鍵暗号を組み合わせる

共通鍵暗号は暗号化と復号に同じ秘密鍵を使い、大量データを高速に処理できます。相手へ鍵を安全に共有する方法が課題です。AESなどが代表例です。

公開鍵暗号は公開鍵と秘密鍵の組を使います。公開鍵で暗号化し秘密鍵で復号する用途や、秘密鍵で署名し公開鍵で検証する用途があります。RSAや楕円曲線系の方式が使われますが、暗号化・署名・鍵合意は同じ操作ではありません。

TLSなどは、公開鍵技術で相手を認証して共有秘密を合意し、実データは効率のよい共通鍵暗号で守るhybrid構成を使います。

機密性だけでなく完全性と相手認証が必要

暗号化しただけでは、攻撃者が暗号文を書き換えたことを検出できない方式があります。現代の通信ではAEAD(Authenticated Encryption with Associated Data/オーセンティケーテッド・エンクリプション・ウィズ・アソシエーテッド・データ)などの認証付き暗号を使い、機密性と完全性を同時に守ります。

また、暗号化先の公開鍵が本物の相手のものかを確認しなければ、攻撃者の鍵へ安全に暗号化してしまいます。証明書や事前共有情報で相手を認証します。

保存時・通信中・エンドツーエンドでは復号地点が違う

暗号化at restはディスクやバックアップを保存中に守りますが、ログイン済み端末でファイルを開けば復号されます。暗号化inトランジットはTLSなどで通信区間を守りますが、サーバーで復号して処理できます。

エンドツーエンド暗号化は通信サービスのサーバーを含む中継点で本文を復号せず、送信者と受信者の端末だけが鍵を持つ設計です。ただし宛先、時刻、量などのメタデータ、端末バックアップ、通報機能の扱いは製品ごとに異なります。

鍵管理に失敗すると強いアルゴリズムも役に立たない

鍵をソースコードへ埋め込む、全利用者で共用する、暗号文と同じ場所へ平文で置く、退職者の鍵を失効しない、といった運用は保護を崩します。鍵を用途ごとに分け、アクセスを制限し、回転と破棄を記録します。

暗号化を評価するときは、アルゴリズム名だけでなく、何を守るか、鍵を誰が持つか、どこで復号するか、改ざんを検出するか、端末とバックアップがどう守られるかを確認します。

暗号化、平文、暗号文、鍵の用語確認資料:NIST Computer Security Resource Center「Encryption」

関連用語