# 鍵対の生成

まず鍵対を生成してみます。公開鍵と私有鍵の対は、規定のアルゴリズムに従って乱数から生成され、

  • ある公開鍵で暗号化されたメッセージはペアになっている私有鍵のみで復号できる
  • ある私有鍵でメッセージに施された署名はペアになっている公開鍵のみで検証できる

という性質を持ちます。

このような性質を破ることによって、暗号化されたメッセージを盗聴したり、私有鍵の持ち主と偽って署名したりすることができてしまいます。これを防ぐため、既に脆弱性が知られているアルゴリズムや、現実的な時間で破ることができると知られている長さの鍵は利用しないようにします。また、生成に利用する乱数を推測できてしまう場合には、生成される鍵を推測できてしまいます。このため、鍵の生成に利用する乱数には、無作為なだけではなく、これから生成される数の推測が不可能な、暗号論的に安全なものを利用する必要があります。

注意

下記では、2048ビットのRSA鍵をブラウザ内で生成します。負荷の軽減のために鍵の長さは短か目にしてあります。ここで生成された鍵を実際に利用するのは避けてください。

# アリスの鍵対

暗号通信などの分野では、メッセージをやりとりする想定上の登場人物として、アリスやボブといった名前が使われることがあります。1人目の登場人物アリスの鍵対を生成してみます。パスフレーズを設定して私有鍵を暗号化することもできます。パスフレーズが空白の場合は私有鍵は暗号化されません。

鍵はテキストの羅列に変換されて表示されています。

ヒント

鍵の上に表示されている ボタンをクリックして鍵をクリップボードにコピーすることができます。

# ASCII Armor

ここで表示されたようなテキストの羅列は、鍵のデータをASCII radix-64と呼ばれる形式に変換し、ヘッダとフッタを追加したもので、ASCII Armorと呼ばれます。ヘッダとフッタで種類を確認できます。

# 鍵の確認

鍵の内容を確かめてみることもできます。上に表示された鍵をコピーして、下記にペーストしてみてください。

IDや指紋(fingerprint)は鍵対ごとに異なります(同じIDや指紋を持つが異なる鍵対を生成するのは非常に困難です)。このため、鍵そのものを確認しないでも、IDや指紋で鍵を同定することができます。

ヒント

確認された鍵の詳細をブラウザコンソールでも確認できます。私有鍵の内容も表示されますので注意してください。

ヒント

入力窓の右下に表示されている ボタンをクリックして入力した内容を消去することができます。

# ボブの鍵対

本稿ではこれから暗号化したメッセージのやりとりや署名の検証を試していきます。メッセージを暗号化・署名する側だけではなく、復号・署名検証する側の鍵対も生成しておきましょう。2人目の登場人物はボブとします。

それでは、鍵対を使ってメッセージを暗号化したり復号したりしてみましょう。