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

簡単に言えば、デジタル署名とは、メッセージや文書に添付されるコードです。生成されたコードは、メッセージが送信者から受信者に渡る途中で改ざんされていないことの証明として機能します。

暗号化を使用して通信を保護するという概念は古代にまで遡りますが、デジタル署名方式は 1970 年代に公開鍵暗号化 (PKC) の開発により実現可能になりました。したがって、デジタル署名の仕組みを理解するには、まずハッシュ関数と公開鍵暗号化の基礎を理解する必要があります。


ハッシュ関数

ハッシュは、デジタル署名システムの中核要素の 1 つです。ハッシュのプロセスでは、任意のサイズのデータ​​を固定サイズの出力に変換します。これは、ハッシュ関数と呼ばれる特殊なアルゴリズムによって行われます。ハッシュ関数によって生成される出力は、ハッシュ値またはメッセージ ダイジェストと呼ばれます。

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


公開鍵暗号 (PKC)

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

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

それ以外に、PKC 方式はデジタル署名の生成にも適用できます。基本的に、このプロセスは、署名者の秘密鍵とともにメッセージ (またはデジタル データ) をハッシュすることから構成されます。次に、メッセージの受信者は、署名者が提供する公開鍵を使用して、署名が有効かどうかを確認できます。

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


デジタル署名の仕組み

暗号通貨の分野では、デジタル署名システムはハッシュ、署名、検証という 3 つの基本的なステップで構成されることが多いです。

データのハッシュ化

最初のステップは、メッセージまたはデジタル データをハッシュすることです。これは、ハッシュ アルゴリズムを使用してデータを送信し、ハッシュ値 (つまり、メッセージ ダイジェスト) を生成することによって行われます。前述のように、メッセージのサイズは大きく異なる場合がありますが、ハッシュすると、すべてのハッシュ値の長さは同じになります。これがハッシュ関数の最も基本的な特性です。

ただし、デジタル署名を作成するためにデータのハッシュ化は必須ではありません。なぜなら、秘密鍵を使用して、ハッシュ化されていないメッセージに署名できるからです。しかし、暗号通貨の場合、固定長のダイジェストを扱うことでプロセス全体が簡単になるので、データは常にハッシュ化されます。

署名

情報がハッシュ化された後、メッセージの送信者はそれに署名する必要があります。ここで公開鍵暗号が役立ちます。デジタル署名アルゴリズムにはいくつかの種類があり、それぞれ独自のメカニズムを持っています。しかし、基本的にハッシュ化されたメッセージは秘密鍵で署名され、メッセージの受信者は対応する公開鍵 (署名者によって提供) を使用してその有効性をチェックできます。

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

デジタル署名は各メッセージの内容に直接関連していることに注意してください。したがって、手書きの署名はメッセージに関係なく同じになる傾向がありますが、デジタル署名されたメッセージにはそれぞれ異なるデジタル署名が付きます。

検証中

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

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

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


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

デジタル署名は、データの整合性、認証、否認不可という 3 つの結果を達成するためによく使用されます。

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

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

  • 否認不可。署名が生成されると、アリスは自分の秘密鍵が何らかの理由で侵害されない限り、将来署名したことを否定できなくなります。


ユースケース

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

  • 情報技術。インターネット通信システムのセキュリティを強化します。

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

  • 法務。政府文書を含むあらゆる種類のビジネス契約や法的合意のデジタル署名。

  • ヘルスケア。デジタル署名は処方箋や医療記録の不正を防止できます。

  • ブロックチェーン。デジタル署名スキームにより、暗号通貨の正当な所有者だけが資金を移動する取引に署名できるようになります(秘密鍵が侵害されない限り)。


制限事項

デジタル署名スキームが直面する主な課題は、少なくとも次の 3 つの要件に依存します。

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

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

  • 秘密鍵。秘密鍵が漏洩したり、何らかの理由で侵害されたりした場合、真正性と否認不可性の特性は無効になります。暗号通貨ユーザーにとって、秘密鍵を紛失すると、大きな経済的損失につながる可能性があります。


電子署名とデジタル署名

簡単に言えば、デジタル署名は、文書やメッセージに署名する電子的な方法を指す、特定の種類の電子署名に関係します。したがって、すべてのデジタル署名は電子署名ですが、その逆は必ずしも当てはまりません。

両者の主な違いは認証方法です。デジタル署名では、ハッシュ関数、公開鍵暗号、暗号化技術などの暗号化システムが採用されています。


最後に

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

ブロックチェーンの世界では、デジタル署名は暗号通貨の取引に署名し、承認するために使用されます。デジタル署名はビットコインにとって特に重要です。なぜなら、署名によって、対応する秘密鍵を所有する個人だけがコインを使用できることが保証されるからです。

私たちは長年にわたり電子署名とデジタル署名の両方を使用していますが、まだ成長の余地は大きくあります。今日の官僚制度の大部分は依然として書類に基づいていますが、よりデジタル化されたシステムに移行するにつれて、デジタル署名スキームの採用が増える可能性があります。