前のページ 目次 次のページ

最終更新日:2009年 9月 1日


2.2  公開鍵暗号方式

2.2.1  概要

前節の共通鍵暗号方式は、共通鍵を安全な方法でネットワーク越しに配送するための具体的手段が無いという課題があります。本節で解説する公開鍵暗号方式 (Public Key Cryptography) [12] は、この鍵配送の問題を解決した画期的な暗号方式です。

共通鍵暗号方式では、ひとつの鍵(共通鍵)を使用しますが、公開鍵暗号方式では対になっている 2つの暗号鍵を用います。この 2つの鍵は、それぞれ「公開鍵 (Public Key)」と 「プライベート鍵(Private Key)もしくは秘密鍵[13] と呼び、対となる 2つの鍵の組み合わせを「鍵ペア」と呼びます。

公開鍵暗号方式は、「片方の鍵(公開鍵)で暗号化した情報は、もう片方の鍵(プライベート鍵)でないと復号できない」という特殊な性質を持っています。この性質を用いることで、ネットワーク上の離れた相手に安全に情報を送信できます。

図 2-3 公開鍵暗号方式

2.2.2  メッセージの暗号化

公開鍵暗号方式を用いたメッセージの交換方法を説明します(図 2-4)。

図 2-4 公開鍵暗号方式によるメッセージの送信

(1)  B さんはプライベート鍵と公開鍵のペア(鍵ペア)を生成します。

(2)  B さんは、プライベート鍵は誰にも知られないよう厳重に保管し、生成した公開鍵はネットワーク上で公開します [14]

(3)  A さんは、公開されている B さんの公開鍵を取得します。

(4)  A さんは取得した公開鍵を使用して平文を暗号化し、B さんに送信します。

(5)  B さんは、自分のプライベート鍵を使用して暗号文を復号します。

公開鍵で暗号化した暗号文は、対応するプライベート鍵のみでないと復号できません。第三者が公開されている B さんの公開鍵を使用しても、暗号文は解読できません。プライベート鍵が外部に漏れない限り、暗号文はプライベート鍵を持つ B さんのみが復号できます。

公開鍵暗号方式におけるプライベート鍵と公開鍵のペアは、南京錠における鍵と錠前に例えることができます。メッセージの送信者(A さん)は、受信者(B さん)の公開鍵を使ってメッセージに錠前を掛け、受信者は自分のプライベート鍵を使って錠前を開封します。

公開鍵暗号方式は複雑な演算処理を行うため、共通鍵暗号方式の数百倍もの計算が必要になります。

そこで実際には、高速な処理を可能にするため、公開鍵暗号方式と共通鍵暗号方式を組み合わせて使用します。メッセージを送信する際には、公開鍵暗号方式を用いて共通鍵を安全に送信し、次に送信した共通鍵を使用してメッセージを暗号化します(図 2-5)。

図 2-5 公開鍵暗号方式を用いた共通鍵の配送

複数の相手にメッセージを送信することもできます。この場合は、それぞれの受信者の公開鍵を使って共通鍵を暗号化し、メッセージの一部として送信します。

以下に、A さんが、B さん、C さん、D さん宛のメッセージを送信する例を示します(図 2-6)。

図 2-6 複数の相手への送信

(1)  共通鍵 (S) を生成します。(A さん)

(2)  生成した共通鍵 (S) を用いて、平文 (T) を暗号化します。(A さん)

(3)  各送信相手の公開鍵 (B, C, D) を用いて、共通鍵を暗号化 (SB, SC, SD) します。(A さん)

(4)  暗号文 (TS) と暗号化した共通鍵 (SB, SC, SD) を送信します。(A さん)

(5)  自分の公開鍵(B)で暗号化された共通鍵 (SB) を選択し、自分のプライベート鍵(B’)を用いて復号(S)します。(B さん、C さん、D さん)

(6)  復号した共通鍵 (S) で暗号文 (TS) を復号 (T) します。(B さん、C さん、D さん)

2.2.3  プライベート鍵による変換(ディジタル署名)

2.2.2 においては、公開鍵で暗号化しプライベート鍵で復号する方法を解説しました。RSA暗号方式の場合、これとは逆に、プライベート鍵で暗号化して公開鍵で復号することもできます(図 2-7)。公開鍵は誰でも取得できるため、プライベート鍵で暗号化しても 守秘性の確保にはなりませんが、プライベート鍵が特定の個人のみ所有しているので、電子文書の真正性と完全性の保証を実現することができます。これがディジタル署名 (Digital Signature) と呼ばれる技術です。デジタル署名の詳細については、2.4節に おいて解説します。

2-7 暗号化とデジタル署名

鍵ペア(公開鍵とプライベート鍵)は、どちらの鍵を暗号に使うかによって用途と意味が変わります。暗号に使う場合は通信相手の公開鍵を使用し、ディジタル署名として使う場合は自分のプライベート鍵を使用します。暗号用途の場合、公開鍵を暗号鍵といい、プライベート鍵を復号鍵ということがあります。署名用途の場合は、プライベート鍵を署名鍵といい、公開鍵を検証鍵とも言います。

表 2-3 用途による鍵ペアの名称

用途

プライベート鍵 (Private Key)

公開鍵 (Public Key)

守秘

復号鍵

暗号鍵

ディジタル署名

署名鍵

検証鍵

2.2.4  公開鍵暗号方式の種類

以下に、主な公開鍵暗号方式の種類を示します(表 2-4)。

表 2-4 公開鍵暗号方式

種別

目的

 

DH

(Diffie-Hellman)

鍵交換

W. Diffie と M. Hellman が 1976年に発表した、共通鍵を安全に交換するための鍵配送アルゴリズムです。

RSA

(Rivest-Shamir-Adleman)

暗号化
署名
鍵交換

Rivest, Shamir, Adleman の 3名が 1978年に発明したアルゴリズムです。同じ鍵ペアを暗号化と署名の両方に利用できることが特徴です。大きな整数の素因数分解が困難であるという仮定に基づいています。

DSA

(Digital Signature Algorithm)

署名

 

NIST が 1991年に提唱した、デジタル署名のためのアルゴリズムです。離散対数問題を解くことが難しいという仮定に基づいています。デジタル署名専用のアルゴリズムであり、暗号化の機能はありません。

楕円曲線暗号

(ECC: Elliptic Curve cryptosystem)

暗号化
署名
鍵交換

Neal Koblitz と Miller が 1985年に別々に考案した方式です。特定のアルゴリズムを指すのではなく、離散対数問題に楕円曲線を適用させて、強度を保ちつつ鍵長を小さくするために用いられます [15]。主な適用例として、DSA に適用したECDSA が有名です。


前のページ 目次 次のページ Copyright © 2002 Information-technology Promotion Agency, Japan. All rights reserved.