暗号化の仕組み入門

URL欄の鍵マーク、LINEの「エンドツーエンド暗号化」表示、ZIPファイルにパスワードをかける機能。これらに共通する技術が「暗号化」です。本記事では、共通鍵暗号と公開鍵暗号という2つの方式を中心に、仕組みを解説します。

そもそも暗号化とは

暗号化とは、第三者に読まれても意味が分からないように、情報を一定のルールで変換する技術です。元の文を「平文」、変換後を「暗号文」と呼び、変換のルールを「鍵」と言います。古代ローマのカエサルは「3文字ずらして書く」というシーザー暗号を使っていたとされ、暗号の歴史は2,000年以上あります。現代の暗号は数学を使っていて、スーパーコンピュータでも数百〜数千年かかるレベルの強さがあります。

暗号化の目的は「秘密にすること」だけではありません。通信相手が本物かを確かめる、途中で内容が改ざんされていないかを確認する、送った本人があとから否定できないようにする、といった役割もあります。Web、SNS、ネット銀行、ゲームのログイン、学校のクラウドサービスまで、暗号化は見えないところで毎日動いています。

共通鍵暗号と公開鍵暗号

共通鍵暗号と公開鍵暗号の比較(実例つき) 「鍵が1つか2つか」が最大の違い。インターネットでは両方を組み合わせて使う 比較項目 共通鍵暗号(AES等) 公開鍵暗号(RSA等) 鍵の数 基本構造 1つ(同じ鍵) 送信者と受信者で共有 2つ(公開鍵+秘密鍵) 公開鍵で暗号化/秘密鍵で復号 速度 大量データの処理 速い(高速処理可) 遅い(数百倍重い) 鍵の安全な配り方 配送の課題 事前に手渡し or 別の手段で 公開鍵はネットで配ってOK 主な用途 適した場面 ファイル暗号化・通信本体 鍵交換・電子署名 ▶ シーザー暗号の例(共通鍵暗号の最古例・3文字ずらし) 「HELLO」 → 「KHOOR」(H+3=K, E+3=H, L+3=O, L+3=O, O+3=R) ▶ 現代のWebは「両方の組み合わせ」 最初の鍵交換だけ公開鍵で、本番のデータは共通鍵で(HTTPS = TLS)
図1:共通鍵暗号と公開鍵暗号の比較。シーザー暗号は2,000年以上前の共通鍵暗号の原型

共通鍵暗号は、暗号化と復号で同じ鍵を使う方式(AES等)。処理が速い反面、相手に鍵をどう安全に渡すかが課題です。公開鍵暗号は、公開鍵と秘密鍵のペアを使い、公開鍵で暗号化したものは秘密鍵でしか開けない仕組み(RSAやECC)。これにより、相手の公開鍵さえ知っていれば、誰にも見られずに秘密のメッセージを送れます。インターネットの安全はこの仕組みに支えられています。

HTTPSが安全な理由

身近なサービスで使われる暗号化(子どもも毎日使っている) 「鍵マークがあるけど中身は何が起きてるの?」を解説 サービス 使われる暗号 守られているもの 特徴 HTTPSサイト全般 URL欄の鍵マーク TLS(公開鍵+AES) RSA / ECDH + AES-256 通信途中の盗聴 入力情報・閲覧データ サーバー証明書必須 LINE / WhatsApp エンドツーエンド E2EE(端末間で完結) Signal Protocol等 サーバー側からも読めない 送信者と受信者だけ 最も強い保護 パスワード保存 サービスのDB側 ハッシュ化(不可逆) bcrypt, Argon2等 DB漏洩時もパス漏れない 元のパスワードは不明 復号できない設計 スマホロック PIN・指紋・顔認証 AES-256ストレージ暗号化 ハードウェア組込み 紛失時の中身保護 写真・連絡先・パスワード 復元不可能 ZIPファイル暗号化 7-Zip等のパス付き AES-256(共通鍵) パスワード=鍵 添付ファイルの中身 メール経由の送信 パス別送信が必要
図2:身近なサービスで使われる暗号化技術。子どもも毎日使っているが、「裏で何が起きているか」を知ると判断力が上がる

HTTPSは、最初の鍵交換だけ公開鍵暗号で安全に行い、本番のデータは速い共通鍵暗号で送る、ハイブリッド方式を採用しています。これにより「速さ」と「安全な鍵交換」を両立しています。URL欄の鍵マークは、サーバーの身元証明(証明書)が認証局によって発行されたものであるサインです。

ただし、鍵マークは「そのサイトとの通信が暗号化されている」ことを示すだけです。偽サイトでもHTTPSを使うことはできます。たとえば、銀行に似せた偽サイトが鍵マーク付きで表示されることもあります。安全確認では、鍵マークだけでなく、URLのドメイン名が本物か、メールやSNSのリンクから直接入っていないかも見ます。

身近な暗号化の例

LINEのメッセージは「エンドツーエンド暗号化(E2EE)」で守られていて、LINE社のサーバーですら中身が読めない仕組み(送信者と受信者の端末でしか復号できない)になっています。WhatsAppやSignalも同じです。Apple のiMessage、メッセンジャーアプリの一部もE2EEを採用。さらに、PCのストレージ全体を暗号化する機能(WindowsのBitLocker、MacのFileVault)も標準で利用できます。

パスワード管理でも暗号の考え方が使われます。ただし、サービス側がパスワードを保存するときは、元に戻せる暗号化ではなく、元に戻せない「ハッシュ化」を使うのが基本です。ユーザー本人が忘れたパスワードをサービス会社が教えられないのは、安全な設計では元のパスワードを保存していないからです。

気をつけたい落とし穴

暗号化に関するよくある誤解
  • 「鍵マークがあるサイトは絶対安全」と思い込む。HTTPS自体は通信路の暗号化で、サイトの中身が悪意あるかは別問題
  • 古い暗号(DES、MD5など)を今でも使う。現在のPCで簡単に破られるので、AES・SHA-256以上を使う
  • パスワードを「暗号化」と「ハッシュ化」を混同する。パスワード保存は不可逆のハッシュ化が正解

将来どう役立つ?

暗号化はインターネットの基盤技術なので、ITエンジニアは全員ある程度の知識が必要です。特にWebエンジニア、セキュリティエンジニア、クラウドエンジニア、ブロックチェーン技術者では深い理解が求められます。今のうちにシーザー暗号や公開鍵の概念を理解しておくと、大学の情報科学やCTF(セキュリティ大会)で学びやすくなります。

今日からできること

3ステップで始めよう
  1. 普段使うサイトのURL欄を見て、鍵マークとhttpsを確認する習慣をつける
  2. 大事なZIPファイルを送るとき、AES暗号化対応の7-Zipなどでパスワードをかける
  3. 「シーザー暗号」「RSA暗号」をネットで検索し、紙とペンで簡単な暗号化体験をしてみる

まとめ

暗号化はインターネットの安全を支える数学技術で、共通鍵暗号と公開鍵暗号の2つが軸です。HTTPSは両者を組み合わせて速さと安全を両立しています。LINEのE2EEやストレージの暗号化など、身近に多く使われている技術。鍵マークの意味、E2EEの存在を知るだけで、サービスの選び方が変わってきます。

確認 暗号化の目的は?