1.2. デジタル署名
改ざん検出は、一方向ハッシュ (メッセージダイジェストとも呼ばれる) と呼ばれる数学関数に依存します。一方向ハッシュは、以下の特性を持つ多数の固定長です。
- ハッシュの値はハッシュデータに対して一意です。1 文字を削除または変更しても、データの変更は異なります。
- ハッシュされたデータの内容をハッシュから推測することはできません。
「公開鍵の暗号化」で説明されているように、秘密鍵を暗号化に使用して、対応する公開鍵を復号に使用できます。機密情報を暗号化する場合は推奨されませんが、データをデジタル署名する上では重要となります。署名ソフトウェアは、データ自体を暗号化する代わりに、データの一方向ハッシュを作成し、秘密鍵を使用してハッシュを暗号化します。暗号化したハッシュと、ハッシュアルゴリズムなどの他の情報はデジタル署名と呼ばれます。
図1.3「デジタル署名を使用したデータの整合性の検証」 は、デジタル署名を使用して署名されたデータの整合性を検証する方法を説明します。
図1.3 デジタル署名を使用したデータの整合性の検証
図1.3「デジタル署名を使用したデータの整合性の検証」 は、一部の署名済みデータの受信者に転送される 2 つの項目を示しています。元のデータとデジタル署名は、署名側の秘密鍵で暗号化した元のデータの一方向ハッシュです。データの整合性を検証するために、受信側のソフトウェアは最初に公開鍵を使用してハッシュを復号化します。その後、元のハッシュを生成したものと同じハッシュを使用して、同じデータの新しい一方向ハッシュを生成します。(使用されるハッシュアルゴリズムに関する情報がデジタル署名で送信されます。) 最後に、受信ソフトウェアは、新しいハッシュを元のハッシュと比較します。2 つのハッシュが一致する場合、データは署名されてから変更されていません。一致しない場合は、署名後にデータが改ざんされているか、署名者が提示した公開鍵に対応しない秘密鍵を使用して署名が作成されている可能性があります。
2 つのハッシュが一致する場合は、デジタル署名の復号に使用する公開鍵が、デジタル署名の作成に使用される秘密鍵に対応していることを確認することができます。署名側のアイデンティティーを検証するには、公開鍵が特定のエンティティーに属することを確認する方法も必要になります。認証の詳細は、「証明書および認証」 を参照してください。
デジタル署名は手書きの署名に似ています。データが署名されたら、秘密鍵が侵害されていないと、後で実行を拒否するのが困難になります。この品質のデジタル署名は、高度な否認防止を提供します。デジタル署名は、署名者がデータに署名したことを否定することを困難にします。場合によって、デジタル署名は、手動で記述された署名として合理的にバインドされます。