第8章 8-11 / データエンジニアリング

暗号化技術

このページで学ぶこと

前のレッスンで学んだセキュリティの3要素のうち、「機密性」と「完全性」を技術的に支えているのが暗号化技術です。このページでは、暗号化・復号の基本電子署名公開鍵暗号方式の仕組みハッシュ関数による改ざん検出という4つのテーマを扱います。

数式は使わず、身近な例えを中心に「何を守るための技術か」をイメージできることを目指します。

1. 暗号化と復号 ― データを読めなくする技術

個人情報や機密情報が入ったデータをそのまま(平文※1のまま)保存・送信していると、万一不正に取得された際、誰でもそのまま中身を読めてしまいます。そこで、決まったルール(鍵)を使ってデータを第三者には読めない形式に変換することを暗号化と呼び、元の読める状態に戻すことを復号と呼びます。

たとえば、手紙の内容を特定の暗号表を使って別の文字列に置き換え、暗号表を知っている人だけが元の文章に戻せるようにするイメージです。データの機密度合いに応じて、適切なソフトウェアを使い暗号化・復号を行うことは、情報漏えい対策の基本中の基本です。

EXAMPLE
  • 顧客の氏名・住所・カード情報が入ったファイルを、パスワード付きで暗号化してから社外に送付する
  • ノートパソコンの持ち出し時に、ハードディスク全体を暗号化しておき、紛失時の情報漏えいリスクを下げる
POINT

暗号化されていないデータは、不正取得された際に容易に不正利用される恐れがあります。「どうせ社内データだから」と油断せず、機密度の高いデータには必ず暗号化を検討しましょう。

さえちゃん
さえ

暗号化は「鍵をかけて中身を読めなくする」こと、復号は「鍵を使って元に戻す」こと。まずはこのシンプルな対応関係から覚えよう!

2. 共通鍵暗号方式と公開鍵暗号方式

暗号化の方式には、大きく分けて2種類あります。共通鍵暗号方式※4は、暗号化するときも復号するときも同じ「鍵」を使う方式です。家の鍵を1本作り、送信者と受信者の両方がその同じ鍵を持ち合っているイメージです。仕組みがシンプルで処理も高速ですが、鍵そのものを安全に相手に渡す方法が課題になります。

これに対して公開鍵暗号方式※2は、「公開鍵」と「秘密鍵」という異なる2つの鍵をペアで使う方式です。公開鍵は誰でも入手できる鍵で、秘密鍵はその持ち主だけが厳重に保管する鍵です。ここで押さえておきたい重要なルールがあります。受信者の公開鍵で暗号化されたデータを復号するためには、受信者本人が持つ秘密鍵が必要だという点です。

方式 使う鍵 身近な例え 課題
共通鍵暗号方式 暗号化・復号で同じ1つの鍵 合鍵を1本作って、双方が同じ鍵を持つ 鍵を安全に渡す方法が必要
公開鍵暗号方式 公開鍵(誰でも使える)と秘密鍵(本人だけ)のペア 誰でも入れられる郵便受け(公開鍵)と、それを開けられる自分だけの鍵(秘密鍵) 処理が共通鍵方式より重くなりやすい

たとえば、Aさんが受信者Bさんに機密情報を送りたいとき、AさんはBさんの公開鍵を使ってデータを暗号化します。この暗号化されたデータは、Bさんの秘密鍵を持つBさん本人にしか復号できません。公開鍵は誰にでも配ってよいものですが、秘密鍵は絶対に他人に渡してはいけない鍵、というのが公開鍵暗号方式の大原則です。

EXAMPLE
  • 取引先に見積書データを送る際、取引先の公開鍵で暗号化し、取引先だけが自分の秘密鍵で開けられるようにする
  • ECサイトの決済情報は公開鍵暗号方式で保護され、サーバー側の秘密鍵でのみ復号される
POINT

「公開鍵で暗号化 → 秘密鍵で復号」の対応関係は、DS検定で問われやすいポイントです。「誰の」公開鍵・秘密鍵なのかを混同しないように、必ず受信者を主語にして整理しておきましょう。

さえちゃん
さえ

「送信者の公開鍵で暗号化する」って覚えちゃうのが、この分野で一番ありがちなひっかけ。暗号化に使うのは必ず「受信者」の公開鍵だよ、気をつけて!

3. 電子署名 ― なりすまし・改ざんを防ぐ

公開鍵暗号方式の仕組みは、「なりすまし」や「改ざん」を防ぐためにも応用されています。それが電子署名※5です。電子署名とは、文書が確かに本人によって作成されたものであり、送信後に改ざんされていないことを証明するための仕組みです。

紙の契約書に押す実印やサインと同じ役割を、デジタルの世界で果たすのが電子署名だとイメージするとわかりやすいでしょう。今度は逆に、送信者が自分の秘密鍵を使って署名データを作成し、受信者は送信者の公開鍵を使ってその署名を検証します。これにより、「確かにこの秘密鍵の持ち主(本人)が署名した文書である」ことを、なりすましや改ざんされた文書ではないと証明できます。

EXAMPLE
  • 契約書のPDFに電子署名を付与し、後から契約内容が書き換えられていないことを証明する
  • ソフトウェアの配布元が電子署名を付け、利用者は「本当にその開発元が作ったソフトか」を確認できる

4. ハッシュ関数による改ざん検出

データが送信中や保存中に書き換えられていないかを確認する技術にハッシュ関数※3があります。ハッシュ関数は、どんなに長いデータを入力しても、常に一定の長さの不規則な文字列(ハッシュ値)を出力する計算方法です。同じデータからは必ず同じハッシュ値が生成され、データが少しでも変わると、まったく違うハッシュ値になるという特徴があります。

ファイルA のハッシュ値: 3f7a9c1e...
(1文字でも変更すると)
ファイルA' のハッシュ値: 8b2d4f01...(まったく別の値に)

この性質を利用して、データを送る前に計算したハッシュ値と、受け取った後に計算したハッシュ値を比較することで、途中でデータが改ざんされていないかを検出できます。ハッシュ値が一致すればデータは無事、一致しなければ何らかの改ざんや破損があったと判断できます。

EXAMPLE
  • 大容量のデータファイルをダウンロードした後、公式サイトに掲載されたハッシュ値と手元のファイルのハッシュ値を比較し、破損や改ざんがないか確認する
  • パスワードをそのまま保存せず、ハッシュ値に変換して保存することで、万一データが漏れてもパスワードそのものは読み取れないようにする
POINT

ハッシュ関数は「元のデータを暗号化して隠す」技術ではなく、「データが変わっていないかを確認する」ための技術です。暗号化(隠す)と混同しないように整理しておきましょう。

さえちゃん
さえ

ハッシュ関数は「指紋」みたいなもの。データが少しでも変わると指紋(ハッシュ値)がまるっきり変わっちゃうから、改ざんチェックにぴったりなんだよ。

SSL/TLSとHTTPS ― 通信そのものを暗号化する

ここまで見てきた共通鍵暗号方式・公開鍵暗号方式・ハッシュ関数は、実は組み合わさって私たちが日常的に使う通信の安全を支えています。その代表がSSL/TLS※6という仕組みです。SSLは旧称、TLSはその後継規格で、現在はほぼTLSが使われていますが、慣習的に「SSL/TLS」とまとめて呼ばれることが多い技術です。

SSL/TLSでは、まず処理の重い公開鍵暗号方式を使って、通信相手同士が安全に「共通鍵」を交換します。そのあとは、処理が高速な共通鍵暗号方式に切り替えて実際のデータをやり取りします。公開鍵暗号方式の「安全に鍵を渡せる」という長所と、共通鍵暗号方式の「処理が速い」という長所を組み合わせた、いいとこ取りの仕組みだと考えるとイメージしやすいでしょう。

このSSL/TLSによって通信が暗号化されたHTTP(Webページのやり取りに使われる通信規格)のことをHTTPS※7と呼びます。ブラウザのアドレスバーに鍵マークが表示されているサイトは、このHTTPSで通信が暗号化されていることを示しています。

EXAMPLE
  • ネットショッピングでクレジットカード番号を入力する画面は、必ずHTTPS(鍵マーク付き)になっているか確認する
  • 企業のWebサイトがHTTPSに対応することで、閲覧者との通信内容(フォーム入力など)を盗聴や改ざんから守る
POINT

「HTTPS = HTTP + SSL/TLSによる暗号化」という対応関係を押さえておきましょう。URLが「https://」から始まっているかどうかが、通信が暗号化されているかを見分ける手がかりになります。

さえちゃん
さえ

HTTPSの「S」がSSL/TLSによる暗号化の証。「鍵マークがあるかどうか」を見る癖をつけておくと、日常でも安全確認に役立つよ。

まとめ

このページでは、データの機密性・完全性を守る暗号化技術を見てきました。最後に振り返っておきましょう。

  1. 暗号化と復号 ― データの機密度合いに応じて、ソフトウェアを使った暗号化と復号ができるようにする
  2. 共通鍵暗号方式と公開鍵暗号方式 ― 公開鍵で暗号化されたデータは、受信者の秘密鍵でしか復号できないことを理解する
  3. 電子署名 ― なりすましや改ざんされた文書でないことを証明する仕組みであることを理解する
  4. ハッシュ関数 ― データの改ざんを検出するための「指紋」のような仕組みであることを理解する
  5. SSL/TLSとHTTPS ― 公開鍵暗号方式と共通鍵暗号方式を組み合わせて通信を暗号化する仕組みであることを理解する

次のレッスンでは、データエンジニアリングの最後のテーマとして、AIモデルを開発した後の運用管理(MLOps)を扱います。作って終わりではない、AIシステムの育て方を見ていきましょう。

脚注 ─ 用語解説
  1. 平文(ひらぶん) … 暗号化されていない、そのまま読める状態のデータや文章のこと。
  2. 公開鍵暗号方式 … 「公開鍵」と「秘密鍵」という異なる2つの鍵をペアで使う暗号方式。公開鍵は誰でも入手でき、秘密鍵は本人だけが保管する。
  3. ハッシュ関数 … どんなデータを入力しても一定の長さの文字列(ハッシュ値)を出力する計算方法。同じ入力からは必ず同じ出力になり、改ざん検出に利用される。
  4. 共通鍵暗号方式 … 暗号化と復号に同じ1つの鍵を使う暗号方式。処理が高速な一方、鍵を安全に相手へ渡す方法が課題になる。
  5. 電子署名 … 文書が本人によって作成され、かつ改ざんされていないことを証明するための、公開鍵暗号方式の仕組みを応用した技術。
  6. SSL/TLS … インターネット通信を暗号化するための仕組み。SSLは旧称でTLSがその後継規格だが、慣習的に「SSL/TLS」とまとめて呼ばれることが多い。
  7. HTTPS … Webページのやり取りに使われる通信規格HTTPを、SSL/TLSによって暗号化したもの。URLが「https://」で始まる。