DE139,140,141:共通鍵・公開鍵・ハッシュ関数【データサイエンティスト検定(リテラシーレベル)補習ノート】
データサイエンティスト検定(リテラシーレベル)の公式リファレンスブックで躓いたところをまとめていきます。
DE139,140はデータの機密性の担保に重要な暗号化についての話です。たぶんテキストを見ただけだと片手落ちだと思うので、補足してまとめておきます。
暗号鍵
データを暗号化するための鍵です。
復号鍵
データを復号する(暗号化されていない状態に戻す)ときに使う鍵です。
共通鍵暗号方式
暗号鍵と復号鍵が同じである方式です。これはわかりやすいと思います。もし1対1で情報をやり取りするときは便利です。実際に使われている例としては無線LANの暗号化方式であるAES(Advanced Encryption Standard)などがあります。詳しくはこちらの記事をご覧ください。
通信ではないですが、ZIPファイルを暗号化してメール添付して、あとで別メールでパスワードを送るやり方(いわゆるPPAP)も共通鍵暗号方式といえると思います。
このやり方は会社のルールで仕方なく従っている人も多いと思います。しかし少し考えてみればわかりますが、ZIPファイル本体とパスワードがどちらもメールという同じ通信経路で送っているため両方とも揃って盗聴される危険性があり、もし盗聴されれば直ちに情報漏洩になるため安全な方法とは思えません。下記の記事でも紹介されているように、パスワードを電話で連絡するとかほうがより安全だと思います。
このように共通鍵暗号方式は鍵をどのようにして連絡するかが問題になります。
公開鍵暗号方式
公開鍵暗号方式は暗号鍵と復号鍵が別々に存在し、うち一方を公開しておく(公開鍵)とする方法です。RSAなどがあります。
RSA暗号では、ざっくり以下の手順で暗号化・復号化が行われます。
・受信者が公開鍵と秘密鍵を準備
・受信者が送信者に公開鍵を送る
・送信者が公開鍵でデータを暗号化し、受信者へデータを送る
・受信者が秘密鍵で復号する
たとえ公開鍵が漏洩したとしても、暗号化したデータは秘密鍵がないと復号できないので安全というわけです。ただし共通鍵暗号方式に比べて処理が遅いという弱点もあります。詳しくはこちらの記事をご覧ください。
ハイブリッド暗号方式
データ本体は共通鍵で暗号化し、共通鍵を公開鍵暗号方式で暗号化して送るという方法があります。公開鍵暗号方式で暗号化する部分が小さいため、処理速度が速くなります。詳しくはこちらの記事をご覧ください。
電子署名(デジタル署名)
銀行などから送られてくる電子メールには電子署名がついていることがあります。メールの中身が改ざんされていないですよ、という証明になり、フィッシングサイトへの誘導防止につながります。
これは先ほどの公開鍵暗号方式と似ています。ただしメール本文を暗号化するのではなくて、メール本文のハッシュ値を秘密鍵で暗号化して署名として送信します。受信者は署名を公開鍵で復号化してハッシュ値を取り出し、メール本文が改ざんされていないか確認できます。
こちらの記事の図解がわかりやすいです。
たとえば三井住友銀行から届くメールの電子署名のGmailでの確認方法は以下の通りです。
ハッシュ関数
ここで出てきたハッシュ関数は、同一データであれば必ず同じハッシュ値が出るものの、内容が少しでも変わるとまったく違うハッシュ値が出るという不思議なものです。
時々Webから容量の大きなZIPファイルをダウンロードするときに、確認用として"xxx.md5"のような謎のファイルがありますが、これがハッシュ関数の一例です。自分にはこれ以上説明できないので(汗)、以下の記事をご参照ください。
ハッシュ関数を体験してみる
以下のサイトでMD5のハッシュ値を計算できます。たとえば「今日はいい天気だ」と入力すると「7094369057962cfff5f63f7a38f945dc」となります。ここで「今日はいい天気だ。」として最後に「。」をつけると、たった一文字変わっただけなのにハッシュ値は「5989af553f110ba155c35e1a99d4427c」になり、まったく別物になってしまいます。ハッシュ値を見ることで改ざんを検知できるわけですね。
公開鍵認証基盤(PKI: Public Key Infrastructure)
先ほどの電子署名の説明で「受信者は公開鍵で署名を復号して」と書きましたが、そもそもその公開鍵自体が信頼できないものだとしたら大問題です。
そこで、送信者が信頼できる人や組織であることを証明するのがPKIです。PKIでは申請時に審査し、許可されるとPKIで運営する認証局(CA: Certification Authority)に登録されます。
たとえば三井住友銀行から届くメールの場合は、電子証明書の発行元が『Cybertrust Japan Public CA G4』となっています。
参考資料
この記事が気に入ったらサポートをしてみませんか?