暗号化

データを第三者が読めない形式に変換する技術。復号鍵を持つ者だけが元のデータを復元できる。

暗号化とは、平文 (プレーンテキスト) を暗号文に変換し、正当な復号鍵を持つ者だけが元のデータを読めるようにする技術です。インターネット上の通信傍受、データベースへの不正アクセス、デバイスの盗難など、さまざまな脅威からデータを保護するために不可欠な技術であり、現代の情報セキュリティの根幹を成しています。

暗号化方式は大きく 2 つに分類されます。共通鍵暗号 (対称鍵暗号) は暗号化と復号に同じ鍵を使う方式で、AES (Advanced Encryption Standard) が代表格です。処理速度が速く大量データの暗号化に適していますが、鍵の安全な受け渡しが課題となります。公開鍵暗号 (非対称鍵暗号) は暗号化用の公開鍵と復号用の秘密鍵のペアを使う方式で、RSA や楕円曲線暗号 (ECC) が代表的です。鍵配送問題を解決しますが、処理速度は共通鍵暗号より遅くなります。暗号化入門の書籍で基礎から学べます。

実際の通信では、両方式を組み合わせたハイブリッド暗号が使われます。HTTPS 通信の TLS プロトコルでは、まず公開鍵暗号で共通鍵を安全に交換し、その後の通信は高速な共通鍵暗号で行います。AES-256 は現在最も広く使われている共通鍵暗号の一つで、256 ビットの鍵長を持ち、総当たり攻撃に対して事実上解読不可能とされています。

暗号化とハッシュ化は混同されやすい概念です。暗号化は復号鍵があれば元のデータに戻せる「可逆変換」ですが、ハッシュ化は元のデータに戻せない「不可逆変換」です。パスワードの保存にはハッシュ化 (bcrypt、Argon2 など) を使い、通信データの保護には暗号化を使うのが正しい使い分けです。暗号化でパスワードを保存すると、鍵が漏洩した場合に全パスワードが復元されるリスクがあります。

近年注目されている技術として、エンドツーエンド暗号化 (E2EE) があります。送信者と受信者の間でのみ復号が可能で、サービス提供者でさえ内容を読めない仕組みです。Signal や WhatsApp などのメッセージングアプリで採用されています。また、量子コンピュータの発展に備えた耐量子暗号 (ポスト量子暗号) の研究も進んでおり、NIST は 2024 年に新しい標準アルゴリズムを発表しました。情報セキュリティ基礎の書籍も参考になります。

文字数の観点では、暗号化されたデータは元のデータよりも長くなることが一般的です。ブロック暗号ではパディングにより数バイトから十数バイト増加し、Base64 エンコードを併用するとさらに約 33% サイズが増加します。たとえば 100 文字の平文を AES-256-CBC で暗号化し Base64 エンコードすると、出力は 200 文字前後になります。API のリクエストサイズ制限やデータベースのカラムサイズを設計する際には、暗号化によるデータ膨張を考慮に入れる必要があります。