デジタル署名は、デジタル データの信頼性と完全性を検証するために使用される暗号化メカニズムです。これは、通常の手書き署名のデジタル バージョンと考えることができますが、より高いレベルの複雑さとセキュリティが備わっています。

簡単にするために、デジタル署名はメッセージまたはドキュメントに添付されたコードとして説明できます。コードは生成されると、メッセージが送信者と受信者の間でいかなる方法でも改ざんされていないことの証明として機能します。

暗号を使用して通信を保護するという概念は人類の歴史のかなり古いものに遡りますが、公開鍵暗号 (PKC) の開発のおかげで、デジタル署名システムは 1970 年代に現実になりました。デジタル署名がどのように機能するかを知るには、まずハッシュ関数と公開キー暗号化の基本を理解する必要があります。


ハッシュ関数

ハッシュは、デジタル署名システムの主要な要素の 1 つを構成します。ハッシュ プロセスには、任意のサイズのデータ​​を事前に決定されたサイズの出力に変換することが含まれます。これは、ハッシュ関数として知られる特別なタイプのアルゴリズムで実現されます。ハッシュ関数によって生成される出力は、ハッシュ値またはフィンガープリントとして知られています。

暗号化と組み合わせると、暗号化ハッシュ関数を使用して、一意のデジタル指紋として機能するハッシュ値(フィンガープリント)を生成できます。これは、入力データ (メッセージ) が変更されると、出力 (ハッシュ値) がまったく異なるものになることを意味します。これが、デジタル データの信頼性を検証するために暗号化ハッシュ関数が広く使用される理由です。


公開キー暗号化 (PKC)

公開キー暗号化 (PKC) は、公開キーと秘密キーのペアのキーを使用する暗号化システムを指します。 2 つのキーは数学的に相関しており、データ暗号化とデジタル署名の両方に使用できます。

暗号化ツールとしての PKC は、対称暗号化の初歩的な方法よりも安全です。古いシステムは情報の暗号化と復号化に同じ鍵を使用しますが、PKC では公開鍵によるデータの暗号化と、対応する秘密鍵によるそのデータの復号化が可能です。

これとは別に、PKC スキームはデジタル署名の生成にも適用できます。本質的に、このプロセスには、署名者の秘密キーを使用してメッセージ (またはデジタル データ) をハッシュすることが含まれます。その後、メッセージの受信者は、署名者が提供した公開キーを使用して署名が有効かどうかを確認できます。

状況によっては、デジタル署名に暗号化が含まれる場合がありますが、常にそうであるとは限りません。たとえば、ビットコインのブロックチェーンは PKC とデジタル署名を使用しますが、多くの人が信じがちなこととは異なり、プロセスには暗号化がありません。技術的には、ビットコインはトランザクションを認証するために楕円曲線デジタル署名アルゴリズム (ECDSA) を導入しています。


デジタル署名の仕組み

暗号通貨のコンテキストでは、デジタル署名システムは多くの場合、ハッシュ、署名、検証という 3 つの基本ステップで構成されます。

データのハッシュ化

最初のステップは、メッセージまたはデジタル データをハッシュすることです。後者は、データをハッシュ アルゴリズムに掛けてハッシュ値(つまり、メッセージの概要)を生成することによって実現されます。前述したように、メッセージのサイズは大きく異なる場合がありますが、ハッシュされると、そのハッシュ値はすべて同じサイズになります。これはハッシュ関数の最も基本的な特性です。

ただし、ハッシュ化することなく秘密キーを使用してメッセージに署名できるため、データのハッシュ化はデジタル署名を作成するための必須条件ではありません。仮想通貨では、サイズが固定され不変のフィンガープリントを操作することで処理が容易になるため、データが体系的にハッシュ化されます。

サイン

情報をハッシュした後、メッセージの送信者はそれに署名する必要があります。ここで、公開キー暗号化が登場します。デジタル署名アルゴリズムにはいくつかの種類があり、それぞれに独自のメカニズムがあります。ただし、一般的に言えば、ハッシュされたメッセージは秘密鍵で署名され、メッセージの受信者は対応する公開鍵 (署名者が提供する) を使用してその正当性を検証できます。

つまり、署名の生成時に秘密キーが含まれていない場合、メッセージの受信者は、対応する公開キーを使用してその有効性を検証することができません。公開キーと秘密キーはメッセージの送信者によって生成されますが、受信者と共有されるのは公開キーのみです。

デジタル署名は各メッセージの内容に直接リンクされていることに注意することが重要です。そのため、添付されるメッセージに関係なく体系的に同じになる傾向がある手書き署名とは異なり、デジタル署名された各メッセージには異なるデジタル署名が付けられます。

検証

最終検証ステップに至るまでのプロセス全体を例として説明しましょう。アリスがボブにメッセージを書き、それをハッシュし、そのハッシュ値と秘密キーを組み合わせてデジタル署名を生成すると想像してください。署名は、その特定のメッセージの一意のデジタル指紋として機能します。

ボブはメッセージを受信すると、アリスから提供された公開鍵を使用してデジタル署名の有効性を検証できます。このようにして、ボブは、この公開鍵と一致する秘密鍵を持っているのはアリスだけであるため、署名がアリスによって作成されたことを確信できます (少なくともボブはそれを期待しています)。

したがって、アリスにとって秘密鍵を秘密にしておくことが重要です。他の誰かがアリスの秘密鍵を手に入れた場合、その人はデジタル署名を作成してアリスになりすますことができます。ビットコインの文脈では、これは、誰かがアリスの秘密鍵を使用して、彼女の許可なくビットコインを移動または使用できることを意味します。


デジタル署名はなぜ重要ですか?

デジタル署名は、その特性によりデータの整合性、認証、否認防止という 3 つの目的を達成するためによく使用されます。

  • データの整合性。ボブは、アリスのメッセージが送信と受信の間に変更されていないことを確認できます。メッセージに変更を加えると、まったく異なる署名が生成されます。

  • 信憑性。アリスの秘密鍵が秘密に保たれている限り、ボブは自分の公開鍵を使用して、デジタル署名がアリスによって作成されたものであり、他の誰でもないことを確認できます。

  • 否認防止。署名が生成されると、アリスは、秘密鍵が何らかの方法で侵害されない限り、将来的に署名を適用したことを否定できなくなります。


ユースケース

デジタル署名は、さまざまな種類のデジタル文書や証明書に適用できます。そのため、いくつかの用途があります。最も一般的な使用例には次のようなものがあります。

  • インターネット通信システムのセキュリティを向上させるための情報技術。

  • ファイナンス。デジタル署名は、監査、経費報告書、ローン契約書などに実装できます。

  • 法的。あらゆる種類の企業間契約および法的合意のデジタル署名。政府の文書も同様です。

  • 社会保障。デジタル署名は、処方箋や医療記録の不正行為を防止する役割を果たします。

  • ブロックチェーン。デジタル署名により、資金の正当な所有者のみがトランザクションに署名できることが保証されます (秘密キーが危険にさらされない限り)。


制限

デジタル署名システムが直面する主な課題は、少なくとも 3 つの要件によって決まります。

  • アルゴリズム。デジタル署名スキームで使用されるアルゴリズムの品質は重要です。これには、信頼できるハッシュ関数と暗号システムの選択が含まれます。

  • 実装。アルゴリズムは優れていても実装が良くない場合、デジタル署名システムには欠陥がある可能性があります。

  • 秘密鍵。秘密キーが何らかの形で漏洩または危険にさらされた場合、信頼性と否認防止のプロパティは無効になります。暗号通貨ユーザーにとって、秘密キーを紛失すると、重大な経済的損失が発生する可能性があります。


電子署名とデジタル署名

簡単にまとめると、デジタル署名は特別な種類の電子署名であり、ドキュメントまたはメッセージに署名する電子的な方法を指します。したがって、すべてのデジタル署名は電子署名ですが、その逆は体系的に当てはまりません。

それらの主な違いは認証方法です。デジタル署名は、ハッシュ関数、公開鍵暗号化、暗号化技術などの暗号化システムを導入します。


結論としては

ハッシュ関数と公開キー暗号化はデジタル署名システムの中核であり、現在では幅広いユースケースに適用されています。デジタル署名を正しく実装すると、セキュリティが強化され、整合性が確保され、あらゆる種類のデジタル データの認証が容易になります。

ブロックチェーンでは、デジタル署名は暗号通貨トランザクションの署名と承認に使用されます。署名により、対応する秘密鍵を持っている個人のみがコインを使用できることが保証されるため、これらはビットコインにとって特に重要です。

何年も前から使用されてきましたが、デジタル署名および電子署名の分野ではまだ多くの進歩が見られます。今日の官僚制度の大部分は依然として紙の使用に依存していますが、ますますデジタル化された社会に向かうにつれて、デジタル署名が広く採用されることになるでしょう。