Cryptography-digital-signatures

提供:Dev Guides
移動先:案内検索

暗号化デジタル署名

デジタル署名は、メッセージ認証の公開キープリミティブです。 物理的な世界では、手書きまたは入力されたメッセージに手書きの署名を使用するのが一般的です。 これらは、署名者をメッセージにバインドするために使用されます。

同様に、デジタル署名は、個人/エンティティをデジタルデータにバインドする手法です。 このバインディングは、受信者とサードパーティによって個別に検証できます。

デジタル署名は、署名者だけが知っているデータと秘密鍵から計算される暗号値です。

実際には、メッセージの受信者は、メッセージが送信者に属していることを保証する必要があり、メッセージの発信元を拒否できないようにする必要があります。 交換されたデータをめぐる紛争の可能性は非常に高いため、この要件はビジネスアプリケーションでは非常に重要です。

デジタル署名のモデル

前述のように、デジタル署名スキームは公開鍵暗号に基づいています。 デジタル署名方式のモデルは、次の図に示されています-

モデルデジタル署名

次のポイントは、プロセス全体を詳細に説明します-

  • このスキームを採用する各人には、公開鍵と秘密鍵のペアがあります。
  • 一般に、暗号化/復号化と署名/検証に使用されるキーペアは異なります。 署名に使用される秘密鍵は署名鍵と呼ばれ、公開鍵は検証鍵と呼ばれます。
  • 署名者はデータをハッシュ関数に送り、データのハッシュを生成します。
  • ハッシュ値と署名キーは、指定されたハッシュでデジタル署名を生成する署名アルゴリズムに送られます。 署名がデータに追加された後、両方が検証者に送信されます。
  • 検証者は、デジタル署名と検証キーを検証アルゴリズムに送ります。 検証アルゴリズムは、出力として何らかの値を提供します。
  • Verifierは、受信データに対して同じハッシュ関数を実行してハッシュ値を生成します。
  • 検証のために、このハッシュ値と検証アルゴリズムの出力が比較されます。 比較結果に基づいて、検証者はデジタル署名が有効かどうかを判断します。
  • デジタル署名は署名者の「プライベート」キーによって作成され、他の誰もこのキーを持つことはできません。署名者は今後データへの署名を拒否することはできません。

署名アルゴリズムによって直接データに署名する代わりに、通常、データのハッシュが作成されることに注意してください。 データのハッシュはデータの一意の表現であるため、データの代わりにハッシュに署名するだけで十分です。 署名に直接データの代わりにハッシュを使用する最も重要な理由は、スキームの効率です。

RSAが署名アルゴリズムとして使用されると仮定します。 公開鍵暗号化の章で説明したように、RSAを使用した暗号化/署名プロセスにはモジュラーべき乗が含まれます。

モジュラー累乗法を使用して大きなデータに署名すると、計算コストと時間がかかります。 データのハッシュはデータのダイジェストが比較的小さいため、ハッシュに署名する方がデータ全体に署名するよりも効率的です

デジタル署名の重要性

すべての暗号プリミティブのうち、公開鍵暗号を使用したデジタル署名は、情報セキュリティを実現するための非常に重要で有用なツールと見なされています。

メッセージの否認防止を提供する機能とは別に、デジタル署名はメッセージ認証とデータ整合性も提供します。 これがデジタル署名によってどのように達成されるかを簡単に見てみましょう-

  • メッセージ認証-検証者が送信者の公開鍵を使用してデジタル署名を検証する場合、署名は、対応する秘密秘密鍵を所有し、他の誰も所有していない送信者のみによって作成されたことが保証されます。
  • データの整合性-攻撃者がデータにアクセスしてデータを変更した場合、受信側でのデジタル署名の検証は失敗します。 変更されたデータのハッシュと検証アルゴリズムによって提供される出力は一致しません。 したがって、受信者は、データの整合性が侵害されていると想定して、メッセージを安全に拒否できます。
  • 非拒否-署名者のみが署名キーの知識を持っていると想定されているため、特定のデータに対して一意の署名のみを作成できます。 したがって、受信者は、将来紛争が発生した場合に、証拠としてデータとデジタル署名を第三者に提示できます。

デジタル署名方式に公開キー暗号化を追加することにより、セキュリティの4つの重要な要素、つまりプライバシー、認証、整合性、および否認防止を提供できる暗号システムを作成できます。

デジタル署名による暗号化

多くのデジタル通信では、機密性を確保するために、平文よりも暗号化されたメッセージを交換することが望ましいです。 公開キー暗号化スキームでは、送信者の公開(暗号化)キーがオープンドメインで利用できるため、だれでも自分の身元を偽装して、暗号化されたメッセージを受信者に送信できます。

これにより、暗号化にPKCを使用するユーザーは、メッセージ認証と否認防止を保証するために、暗号化されたデータとともにデジタル署名を探すことが不可欠になります。

これは、デジタル署名と暗号化スキームを組み合わせることによりアーカイブできます。 この要件を達成する方法について簡単に説明します。 then-then-encryptencrypt-then-sign の2つの可能性があります。

ただし、sign-then-encryptに基づく暗号化システムは、受信者が送信者の身元を偽装し、そのデータを第三者に送信するために悪用される可能性があります。 したがって、この方法は好ましくありません。 暗号化してから署名するプロセスは、より信頼性が高く、広く採用されています。 これは、次の図に示されています-

デジタル署名による暗号化

暗号化されたデータと署名を受け取った受信者は、まず送信者の公開鍵を使用して署名を検証します。 署名の有効性を確認した後、彼は自分の秘密鍵を使用して復号化してデータを取得します。