Share via


デジタル署名

デジタル署名を 使用すると、受信者がメッセージ送信者を識別して確認する必要がある場合に 、プレーンテキスト 形式でメッセージを配布できます。 メッセージに署名しても、メッセージは変更されません。単にデジタル署名文字列を生成するだけで、メッセージと一緒にバンドルすることも、個別に送信することもできます。 デジタル署名は、送信者の 秘密キーで暗号化された短いデータです。 送信者の公開キーを使用して署名データを復号化すると、送信者または送信者の 秘密キー にアクセスできるユーザーによってデータが暗号化されたことが証明されます。

デジタル署名は、 公開キー 署名アルゴリズムを使用して生成されます。 秘密キーによって署名が生成され、対応する公開キーを使用して署名を検証する必要があります。 このプロセスを次の図に示します。

デジタル署名の生成

メッセージからデジタル署名を作成するには、2 つの手順が必要です。 最初の手順では、メッセージから ハッシュ 値 ( メッセージ ダイジェストとも呼ばれます) を作成します。 その後、署名者の秘密キーを使用して、このハッシュ値が署名されます。 デジタル署名の作成に関連する手順の図を次に示します。

メッセージからのデジタル署名の作成

署名を確認するには、メッセージと署名の両方が必要です。 最初に、署名が作成されたのと同じ方法で、メッセージからハッシュ値を作成する必要があります。 このハッシュ値は、署名者の公開キーを使用して署名に対して検証されます。 ハッシュ値と署名が一致する場合は、メッセージが実際に署名者が最初に署名したものであり、改ざんされていないことを確信できます。 次の図は、デジタル署名の検証に関連するプロセスを示しています。

デジタル署名の検証

ハッシュ値は、少量のバイナリ データ (通常は約 160 ビット) で構成されます。 これは 、ハッシュ アルゴリズムを使用して生成されます。 これらのアルゴリズムの数については、このセクションの後半で説明します。

すべてのハッシュ値は、使用されるアルゴリズムに関係なく、次のプロパティを共有します。

  • ハッシュ値の長さは、使用されるアルゴリズムの種類によって決まります。その長さはメッセージのサイズによって変わりません。 最も一般的なハッシュ値の長さは、128 ビットまたは 160 ビットです。
  • 2 つのメッセージが 1 ビットだけ異なる場合でも、同一でないメッセージのペアはすべてまったく異なるハッシュ値に変換されます。 今日のテクノロジを使用すると、ハッシュ アルゴリズムを中断することなく、同じハッシュ値に変換されるメッセージのペアを検出することはできません。
  • 同じアルゴリズムを使用して特定のメッセージがハッシュされるたびに、同じハッシュ値が生成されます。
  • すべてのハッシュ アルゴリズムは一方向です。 ハッシュ値を指定すると、元のメッセージを回復することはできません。 実際、ハッシュ値だけで元のメッセージのプロパティを決定することはできません。