公開鍵暗号方式とディジタル署名
目次
公開鍵暗号とディジタル署名
データ暗号化技術のひとつである公開鍵暗号方式と、それの仕組みを利用した認証方式のディジタル署名について解説します。
公開鍵暗号方式
公開鍵暗号方式では公開鍵と秘密鍵という2種類からなる鍵の仕組みを利用してデータの暗号化を実現します。
公開鍵と秘密鍵
鍵の種類 | 利用目的 | 公開範囲(利用者) |
---|---|---|
公開鍵 | データの暗号化 | 不特定多数 |
秘密鍵 | データの復号化 | データを復号化する本人のみ |
公開鍵はその名のとおり他者へ公開してよい鍵で、逆に秘密鍵の方はデータを暗号化する本人のみが所持し、他者に渡ってはいけない鍵となります。
データを送信する人(送信者)が公開鍵でデータを暗号化し、データを受信する人(受信者)は本人の秘密鍵でそのデータを復号化します。
それぞれの鍵は一対(鍵ペア)で作成されていることが条件であり、秘密鍵はデータの暗号化に用いられた公開鍵のペアのものでなければそのデータを復号することはできないため、データの受信者ごとに鍵ペアの作成が必要となります。
データを暗号化する送信者は何らかの手段で暗号に使う公開鍵を事前に入手しておく必要があります。
復号鍵(秘密鍵)から暗号化鍵(公開鍵)は生成できるが、その逆はできない一方向性関数という技術によって暗号化の強度が保たれています。
(例)AさんがBさんへデータを暗号化して送信する
Aさん(送信者)
Bさん(受信者)
AさんはBさんの公開鍵を使ってデータを暗号化し、Bさんへ送る。
BさんはAさんから送られてきたデータを、Bさん本人の秘密鍵で復号化する
(AさんはBさんの公開鍵を事前に入手しておく必要がある)
(例)BさんがCさんへデータを暗号化して送信する
Bさん(送信者)
Cさん(受信者)
BさんはCさんの公開鍵を使ってデータを暗号化し、Cさんへ送る。
CさんはBさんから送られてきたデータを、Cさん本人の秘密鍵で復号化する
暗号化技術
公開鍵暗号方式の実現には、RSA暗号や楕円曲線暗号といった暗号化の技術が採用されています。
- 「RSA暗号」 巨大な数の素因数分解が困難であることを利用した暗号化技術
- 「楕円曲線暗号」 楕円曲線上の離散対数問題が困難であることを利用した暗号化技術
ディジタル署名
ディジタル署名で実現できること
- 利用者のなりすましの検知
- データ改ざんの検知
ディジタル署名とは利用者認証を行う本人であることと、データの内容に改ざんがないことを証明するための暗号化された署名データのことで、公開鍵暗号方式の鍵ペアのうち、利用者の秘密鍵を使って生成します。
ここでいう利用者とは認証を行う本人を指しており、認証先(受信側)にとってデータの送信者となります。
鍵の役割が逆になる
送信者は本人の秘密鍵によって生成したハッシュ値と元の平文からなるディジタル署名を送信し、
データ受信側である認証先は、受信したディジタル署名を事前に取得しておいた送信者の公開鍵を使って復号し、ハッシュ値と一緒に送られてきた平文から得られるハッシュ値を※比較することによって利用者のなりすましとデータの改ざんがないかを確かめることができます。
※ データの内容が(平文)ひとつでも異なるとそこから計算されるハッシュ値も異なるものとなる
このディジタル署名では鍵ペアのうち利用者本人しか秘密鍵を持っていないという特性を利用して、暗号化された署名データが送信者の公開鍵で復号化できたのなら、認証する利用者がペアの秘密鍵を持っている、つまり、なりすましではない利用者本人であることを証明できる仕組みになっており、暗号化用の鍵と復号化用の鍵が通常の公開鍵暗号方式とは逆ということになります。
公開鍵認証
ディジタル署名を利用した具体的な例としてクライアントからサーバへSSH接続する際の認証方式である、公開鍵認証が存在します。
公開鍵認証は認証にディジタル署名つまり、公開鍵暗号方式を採用した認証方式のことです。
(例) SSH公開鍵認証