デジタル署名
デジタル署名とは送受信したデータの真正性(authenticity)を検証可能とする暗号学的な手段をいいます。
①第1章-2 ハッシュ関数で説明したMACもデジタル署名の一種と言えます。
ただし、MACは事前にMAC鍵の共有が必要な点が制約ともいえます。
手書きサインと同様なデジタル署名の運用をしたい場合、公開鍵暗号化方式を応用できます。(秘密鍵で署名したメッセージを公開鍵で検証する仕組みを作る。前記事の下図が概要としては当てはまります。)

RSAによるデジタル署名の例
デジタル署名の厳密な使用方法は利用する公開鍵暗号化方式によって変わってくるのでRSAを例に説明します。
※RSAを使ったデジタル署名の仕組みはRSAが暗号化と復号の両方に対応している事を利用した特殊ケースといえ、他の公開鍵アルゴリズム(DSA, ECDSAなど)は暗号化には利用できません。
RSAによるデジタル署名手順① デジタル署名の作成と送付
①まず、送信者アリスが自身のデジタル署名の文書を用意し、そのハッシュ値を計算します。
②次に署名の受け取り手に必要な情報(例ハッシュ値計算に使ったアルゴリズム等)のメタ情報を付加します。
③アリスの署名のハッシュ値とメタ情報をアリスの暗号鍵で暗号化します。
以上でアリスのデジタル署名が完成します。
アリスは送信文書にデジタル署名を添付してボブに送付します。
RSAによるデジタル署名手順② デジタル署名の受信者の操作
④アリスと同じアルゴリズムで受信した署名のハッシュ値を計算
⑤アリスの公開鍵を使って受信した署名のハッシュ値を計算
⑥ ④と⑤の結果を比較して合致していれば署名は正しい(真正性 authenticity)を確認できる。
以上のような手順で受け手ボブはアリスの公開鍵があればこのデジタル署名を復号化して確認ができます。
乱数生成器
原書では続いて、乱数生成器(RNG Random Number Generator)の説明があります。
暗号のかなめは既知の暗号化アルゴリズムと秘密鍵です。
秘密鍵、は言い換えると非常に長い乱数、といえる。よって乱数の質(予測されにくいこと=予測不可能性)は非常に重要な要素です。
真実の乱数は物理現象の観察結果からしか得られない(無作為性(エントロピー)を集める、という表現がある)、真実の乱数を基に乱数を生成する装置を乱数生成器と呼ぶが真実の乱数は非常に数少ない為、実際には疑似乱数生成器(PRNG Pseudorandom Number Generator)を使用します。
疑似乱数生成器は真実の乱数生成器から得られる少量のデータを利用して種まき(seeding)した疑似乱数を無限大に?生成します。疑似乱数生成器の生成した疑似乱数は統計的にはランダムだが暗号には不適格である。(出力を観察して予測可能だから)
予測不可能性を持つ乱数を生成できる装置を暗号学的な疑似乱数生成器(CSPRNG Cryptographically Secure PRNG)と呼び、暗号に利用可能な乱数を生成します。(出力を観察しても予測が不可能か非常にむつかしい。)


