15.7.1. 暗号と署名
安全な通信のためには、通信の暗号化だけではなく、通信相手の認証、偽造の防止など、さまざまな観点で危険を排除することが必要です。 ユーザのインターネット利用時の安全を支えている HTTPS も、これらの技術の組合せで安全を担保しています。
基本の技術として以下の二つの技術があり,できることは大まかに次の通りです
- 電子署名
- 署名時点から文補の内容が書き換わっていないことを検証できる
- 暗号化と復号
- 暗号化後に正当な受信者だけが復号できる
電子署名 #
電子署名を使うストーリーとして,推薦状の署名を考えます.
電子署名は,公開鍵暗号アルゴリズムの発展とともに実用化されました.
公開鍵暗号アルゴリズムは 公開鍵
と秘密鍵
のペアを使います (あとで詳しく学びます).
推薦状を受け取った人
は,署名に使った 秘密鍵とペア になる公開鍵を用いて,検証
します.
以下の時に検証は失敗します
- 署名後に文章が改竄された
- 丸ごと別の推薦状と署名に差し替えられた
- ペアをなさない公開鍵と秘密鍵が使われた
つまり,検証成功は,秘密鍵が漏洩していなければ 本人の正しい署名です.
このとき,受け取った人
のイラストに沢山の公開鍵
が描かれていることに注意してください.典型的には複数の知り合いがいるので,それぞれの署名を検証するには,対応する公開鍵をを持っている必要があります.
つまり,
\(N\)
人のコミュニティで全員の署名の検証には,全員が \(N\)
個の公開鍵 (自分のものを含めて) を持ちます.
実用的には,電子署名を施す際に暗号化を同時に行うことも多いですが,まずは分けて理解します.
暗号化と復号 #
暗号アルゴリズムは、データを秘匿するために暗号化と復号を提供する手順です。歴史では,電子署名より前から,暗号は使われてきました. 秘密のデータをコンピュータに保存したり、通信で送る際に暗号化しておけば、盗聴されても盗聴者が復号できない、できてもとても時間がかかるといった効果を期待できます。
化 を復号にはつけない慣習です。このような暗号化を施す目的は,たとえば,盗聴の防止です.企業・自治体などで,秘密の情報を長期保存する場合も役立つかもしれません.
目的に応じて様々なアルゴリズムが使われますが,大別すると2種類に分けられます.
- 共通鍵暗号
- 暗号化の鍵と復号の鍵が共通です.そのため,鍵を秘密にします.AES256 などが有名です
- 公開鍵暗号
- 暗号化の鍵 (公開鍵) と復号の鍵 (秘密鍵) のペアを使います.公開鍵は暗号化だけができ,復号はできません. 秘密鍵だけが復号でます.公開鍵を多くの人に知ってもらって,秘密鍵だけを秘匿します. RSA や 楕円曲線暗号 が有名です。
公開鍵暗号で暗号文を送るときの流れを,下のイラストで示します.
電子署名の時と同じで,右の鳥
は,左の
さんの公開鍵を持っています.
文章の伝達は先ほどと逆で,右の鳥
から,左の
さんに送ります.
鳥
は,想定する受信者の公開鍵
で暗号化し,送ります.受信した
左の
は,自分 だけ が持つ秘密鍵で復号して中身を読みます.
公開鍵は暗号化専用で復号できないということは、慣れないと戸惑うかもしれません。 たとえば電子メールでは、送信したコピーを取っておくと便利ですが、公開鍵で暗号化した場合はそのコピーを送信者は読めません。 また複数人に同報することも電子メールでは多いですが、公開鍵暗号を使う場合は、受信者毎に別々に暗号化して送付する必要があります。