デジタル署名は、数値とデータの信頼性と完全性を検証するために使用される暗号化メカニズムです。これは従来の手書き署名方法のデジタル バージョンと考えることができ、署名よりも複雑で安全です。
つまり、デジタル署名はメッセージまたはドキュメントに添付されたコードとして理解できます。デジタル署名が生成されると、メッセージが送信者から受信者までの過程で改ざんされていないことの証明として機能します。
通信の機密性を保護するために暗号化を使用するという概念は古代に遡りますが、デジタル署名方式が現実のものになったのは、1970 年代の公開キー暗号化 (PKC) の開発によってのみです。したがって、デジタル署名がどのように機能するかを理解するには、まずハッシュ関数と公開キー暗号化の基本を理解する必要があります。
ハッシュ関数
ハッシュはデジタル署名の中核要素の 1 つです。ハッシュ値の演算処理とは、任意の長さのデータを固定長に変換することを指します。これは、ハッシュ関数と呼ばれる特別な演算によって実現されます。ハッシュ関数によって生成された値は、ハッシュ値またはメッセージ ダイジェストと呼ばれます。
ハッシュ値を、暗号化ハッシュ関数を使用してハッシュ値 (ダイジェスト) を生成する暗号化アルゴリズムと組み合わせると、その値は一意のデジタル フィンガープリントとして機能します。これは、入力データ (メッセージ) を変更すると、出力値 (ハッシュ値) がまったく異なるものになることを意味します。このため、数値やデータの信頼性を検証するために暗号化ハッシュ関数が広く使用されています。
公開キー暗号化 (PKC)
公開キー暗号化 (PKC) は、公開キーと秘密キーのペアのキーを使用する暗号化システムを指します。 2 つのキーは数学的に関連しており、データの暗号化とデジタル署名に使用できます。
暗号化ツールとして、PKC は対称暗号化よりも高いセキュリティを備えています。対称暗号化システムは情報の暗号化と復号化に同じキーに依存しますが、PKC ではデータの暗号化に公開キーを使用し、データの復号化に対応する秘密キーを使用します。
これに加えて、PKC はデジタル署名の生成にも適用できます。基本的に、このプロセスには、送信者が独自の秘密キーを使用してメッセージ (データ) のハッシュを暗号化することが含まれます。次に、メッセージの受信者は、署名者が提供した公開キーを使用して、デジタル署名が有効かどうかを確認できます。
場合によっては、デジタル署名自体に暗号化が含まれる場合もありますが、必ず含まれるわけではありません。たとえば、ビットコインのブロックチェーンは PKC とデジタル署名を使用しますが、多くの人が信じているのとは異なり、プロセスには暗号化がありません。技術的に言えば、ビットコインはトランザクションを検証するために、いわゆる楕円曲線デジタル署名アルゴリズム (ECDSA) を導入しています。
デジタル署名の仕組み
暗号通貨のコンテキストでは、デジタル署名システムは通常、ハッシュ、署名、検証という 3 つの基本プロセスで構成されます。
データをハッシュする
最初のステップは、メッセージまたはデータをハッシュすることです。これは、ハッシュ アルゴリズムを使用してデータを操作し、ハッシュ値 (つまり、メッセージ ダイジェスト) を生成することによって行われます。上で述べたように、メッセージの長さは大きく異なる場合がありますが、メッセージがハッシュされると、そのハッシュ値はすべて同じ長さになります。これはハッシュ関数の最も基本的な特性です。
ただし、ハッシュされていないメッセージも秘密キーを使用して暗号化できるため、デジタル署名を生成するために単にメッセージをハッシュする必要はありません。しかし、暗号通貨の場合、固定長のハッシュ値を処理することで暗号通貨プログラムの実行が容易になるため、メッセージはハッシュ関数によって処理される必要があります。
サイン
情報がハッシュされた後、メッセージの送信者はメッセージに署名する必要があります。ここでは公開キー暗号化が使用されます。デジタル署名アルゴリズムにはいくつかの種類があり、それぞれに独自の動作メカニズムがあります。基本的に、ハッシュされたメッセージ (ハッシュ値) は秘密キーを使用して署名され、メッセージの受信者は、対応する公開キー (署名者によって提供される) を使用してその有効性を確認できます。
つまり、署名の生成時に秘密キーが使用されない場合、メッセージの受信者は、対応する公開キーを使用してその有効性を検証することができません。公開キーと秘密キーは両方ともメッセージの送信者によって生成されますが、受信者と共有されるのは公開キーのみです。
デジタル署名は各メッセージのコンテンツに関連付けられていることに注意することが重要です。したがって、手書きの署名とは異なり、デジタル署名はメッセージごとに異なります。
確認する
検証の最初から最後のステップまで、プロセス全体を説明する例を見てみましょう。アリスがボブにメッセージを送信し、そのメッセージをハッシュ値にハッシュし、そのハッシュ値を彼女の秘密鍵と組み合わせてデジタル署名を生成すると仮定します。デジタル署名は、メッセージの一意のデジタル指紋として機能します。
ボブはメッセージを受信すると、アリスから提供された公開鍵を使用してデジタル署名の有効性を確認できます。このようにして、ボブは、公開鍵に対応する秘密鍵を持っているのはアリスだけであるため、署名がアリスによって作成されたことを確信できます (少なくとも私たちはそう想定していました)。
したがって、アリスにとって秘密鍵を安全に保管することが重要です。別の人がアリスの秘密鍵を入手した場合、デジタル署名を作成してアリスになりすますこともできます。ビットコインの文脈では、これは誰かがアリスの秘密鍵にアクセスし、彼女の知らないうちに彼女のビットコインを転送または使用できることを意味します。
デジタル署名はなぜ重要ですか?
デジタル署名は通常、データの整合性、認証、否認防止という 3 つの目標を達成するために使用されます。
データの整合性。ボブは、アリスのメッセージが改ざんされているかどうかを確認できます。メッセージに変更を加えると、まったく異なるデジタル署名が生成されます。
信憑性。アリスが秘密鍵を安全に保管している限り、ボブは自分の公開鍵を使用して、デジタル署名が他の人ではなくアリス自身によって作成されたことを確認できます。
否認防止。署名を生成した後、アリスは、秘密鍵が何らかの形で危険にさらされない限り、今後その署名を拒否することはできません。
場合
デジタル署名は、さまざまなデジタル文書や証明書に適用できます。したがって、いくつかの用途があります。最も一般的なケースには次のようなものがあります。
情報技術。インターネット通信システムのセキュリティを強化します。
ファイナンス。デジタル署名は、監査、財務報告書、ローン契約などに適用できます。
法。デジタル署名は、政府文書を含むさまざまなビジネス契約や法的合意に適用できます。
健康管理。デジタル署名は、処方箋や医療記録の不正行為を防ぎます。
ブロックチェーン。デジタル署名スキームにより、暗号通貨の正当な所有者のみがトランザクションに署名し、資金を移動できることが保証されます (秘密キーが侵害されない限り)。
制限
デジタル署名スキームが直面する主な課題は、主に次の 3 つの要因に限定されます。
アルゴリズム。デジタル署名スキームで使用されるアルゴリズムには、高い品質要件があります。これらには、信頼性の高いハッシュ関数と暗号化システムの選択が含まれます。
実装。アルゴリズムが完成していても適切な実装計画がない場合、電子署名システムには潜在的な危険性が潜んでいる可能性があります。
秘密鍵。秘密キーが紛失したり、何らかの方法で侵害された場合、信頼性と否認防止は保証されません。暗号通貨ユーザーにとって、秘密キーを紛失すると、重大な経済的損失が生じる可能性があります。
電子署名とデジタル署名
つまり、デジタル署名は、ドキュメントやメッセージに署名するための電子手段の使用を指す、特定のタイプの電子署名として理解できます。したがって、すべてのデジタル署名は電子署名とみなされますが、その逆はありません。
それらの主な違いは認証方法です。デジタル署名には、ハッシュ関数、公開キー暗号化、暗号化技術などの暗号化システムの導入が必要です。
要約する
ハッシュ関数と公開キー暗号化はデジタル署名システムの中心であり、現在さまざまなケースで使用されています。デジタル署名を適切に実装すると、セキュリティが向上し、整合性が確保され、あらゆる種類のデータの認証が容易になります。
ブロックチェーンの世界では、暗号通貨トランザクションの署名と承認にデジタル署名が使用されます。デジタル署名により、対応する秘密鍵を持つ人だけがトークンを使用できることが保証されるため、これらはビットコインにとって特に重要です。
私たちは何年にもわたって電子署名とデジタル署名を使用してきましたが、まだ成長の余地がたくさんあります。現在、ほとんどの公式文書はまだ紙の資料に基づいていますが、より多くのシステムがデジタルに移行するにつれて、より多くのデジタル署名ソリューションが登場するでしょう。

