デジタル署名は、デジタル データの信頼性と完全性を検証するために使用される暗号化メカニズムです。これは、従来の手書き署名のデジタル バージョンと考えることができますが、より高いレベルの複雑さとセキュリティが備えられています。
簡単に言うと、デジタル署名はメッセージまたはドキュメントに添付されたコードとして説明できます。コードが生成されると、メッセージが送信者から受信者に届く途中で改ざんされていないことを証明するものとして機能します。
暗号を使用して通信を保護するという概念は古代に遡りますが、デジタル署名スキームは 1970 年代に公開キー暗号 (PKC) の開発により実現可能になりました。したがって、デジタル署名がどのように機能するかを学ぶには、まずハッシュ関数と公開キー暗号化の基本を理解する必要があります。
ハッシュ関数
ハッシュは、デジタル署名システムの主要な要素の 1 つです。ハッシュのプロセスでは、任意のサイズのデータを固定サイズの出力データに変換します。これは、ハッシュ関数として知られる特別な種類のアルゴリズムを使用して行われます。ハッシュ関数によって生成される出力は、メッセージのハッシュ値またはダイジェストと呼ばれます。
暗号化と組み合わせて、いわゆる暗号化ハッシュ関数を使用して、一意のデジタル指紋として機能するハッシュ値 (ダイジェスト) を生成できます。これは、入力 (メッセージ) を変更すると、異なる出力 (ハッシュ値) が生成されることを意味します。このため、デジタル データを検証するために暗号化ハッシュ関数が広く使用されています。
公開キー暗号化 (PKC)
公開キー暗号化 (PKC) は、1 つの公開キーと 1 つの秘密キーのペアのキーを使用する暗号化システムを指します。 2 つのキーは数学的に関連しており、データ暗号化とデジタル署名の両方に使用できます。
暗号化ツールとしての PKC は、単純な対称暗号化方式よりも安全です。古いシステムは情報の暗号化と復号化に同じキーに依存していますが、PKC ではデータを公開キーで暗号化し、データを対応する秘密キーで復号化できます。
さらに、デジタル署名を作成するときに PKC スキームを使用することもできます。基本的に、このプロセスは、メッセージ (またはデジタル データ) と署名者の秘密キーをハッシュすることで構成されます。メッセージの受信者は、署名者が提供した公開キーを使用して署名が有効であることを検証できます。
状況によっては、デジタル署名に暗号化が含まれる場合がありますが、常にそうであるとは限りません。たとえば、ビットコインのブロックチェーンは PKC とデジタル署名を使用しますが、多くの人が信じていることに反して、暗号化は含まれていません。技術的には、ビットコインはいわゆる楕円曲線デジタル署名アルゴリズム (ECDSA) を使用してトランザクションを認証します。
デジタル署名の仕組み
暗号通貨のコンテキストでは、デジタル署名システムは多くの場合、ハッシュ、署名、検証という 3 つの主要なステップで構成されます。
データのハッシュ化
最初のステップは、メッセージまたはデジタル データをハッシュすることです。これは、ハッシュ アルゴリズムを使用してデータを送信し、ハッシュ値 (つまり、メッセージのダイジェスト) を作成することによって行われます。前述したように、メッセージのサイズは大きく異なりますが、ハッシュされると、すべてのハッシュ値は同じ長さになります。これはハッシュ関数の主要なプロパティです。
ただし、まったくハッシュされていないメッセージに秘密キーを使用して署名できるため、デジタル署名を作成するためにデータをハッシュする必要はありません。しかし、暗号通貨の場合、固定長ダイジェストを使用するとプロセス全体が簡素化されるため、データは常にハッシュされます。
サイン
情報をハッシュした後、メッセージの送信者はそれに署名する必要があります。ここで公開キー暗号化が登場します。デジタル署名アルゴリズムにはいくつかの種類があり、それぞれに独自のメカニズムがあります。ただし、本質的に、ハッシュされたメッセージは秘密キーで署名され、メッセージの受信者は対応する秘密キー (署名者が提供する) を使用してその信頼性を検証できます。
つまり、署名の作成時に秘密キーが有効になっていない場合、メッセージの受信者は、対応する公開キーを使用してその信頼性を検証することができません。公開キーと秘密キーはどちらもメッセージの送信者によって生成されますが、公開キーは受信者に送信されます。
デジタル署名は各メッセージの内容に直接関係していることに注意してください。したがって、メッセージに関係なく通常は同じである手書き署名とは異なり、デジタル署名されたメッセージごとに異なるデジタル署名が付けられます。
監査
検証の最後のステップに至るまでのプロセス全体を例として説明しましょう。アリスがボブにメッセージを書き、それをハッシュし、そのハッシュ値と秘密キーを組み合わせてデジタル署名を作成すると想像してください。署名は、このメッセージの一意のデジタル指紋として機能します。
ボブはメッセージを受信すると、アリスから提供された公開鍵を使用してデジタル署名の有効性を検証できます。したがって、ボブは、この公開鍵と一致する秘密鍵を持っているのはアリスだけであるため、署名がアリスによって作成されたことを確信できます (少なくともそれが私たちが期待していることです)。
したがって、アリスにとって秘密鍵を秘密にしておくことが非常に重要です。別の人がアリスの秘密鍵を入手すると、デジタル署名を作成してアリスになりすますことができます。ビットコインの文脈では、これは、誰かがアリスの秘密鍵を使用して、彼女の許可なくビットコインを移動または使用できることを意味します。
デジタル署名はなぜ重要ですか?
デジタル署名は、データの整合性、認証、フェイルオーバーという 3 つの結果を達成するためによく使用されます。
データの整合性。ボブは、アリスのメッセージが途中で変更されていないことを確認できます。メッセージを変更すると、まったく異なる署名が作成されます。
信憑性。アリスの秘密鍵が秘密に保たれていれば、ボブは彼女の公開鍵を使用して、デジタル署名が他の者ではなくアリスによって作成されたことを検証できます。
信頼性。署名が生成されると、アリスは秘密鍵が危険にさらされない限り、今後署名したことを否定できません。
使用上のオプション
デジタル署名は、さまざまな種類のデジタル文書や証明書に適用できます。そのため、いくつかの用途があります。最も一般的な用途は次のとおりです。
情報技術: インターネット通信システムのセキュリティを向上させます。
財務: デジタル署名は、監査、経費報告書、信用契約などに適用できます。
法的規制: 政府文書を含む、あらゆる種類のビジネス契約および法的協定のデジタル署名。
ヘルスケア: デジタル署名は、処方箋や医療記録の偽造を防ぐことができます。
ブロックチェーン: デジタル署名スキームにより、暗号通貨の正当な所有者のみが資金を移動するトランザクションに署名できることが保証されます (秘密キーが危険にさらされていない場合)。
制限
デジタル署名スキームが直面する主な課題は、少なくとも 3 つの要件に基づいています。
アルゴリズム: デジタル署名スキームで使用されるアルゴリズムの品質は重要です。これは特に、信頼できるハッシュ関数と暗号化システムの選択です。
実装: アルゴリズムが優れていても実装が不十分な場合、デジタル署名システムには欠陥がある可能性があります。
秘密キー: 秘密キーが紛失したり、何らかの方法で侵害された場合、信頼性と非障害性の特性は無効になります。暗号通貨のユーザーにとって、秘密キーの紛失は重大な経済的損失を引き起こす可能性があります。
電子署名とデジタル署名
デジタル署名は、ドキュメントやメッセージに署名する電子的な方法に属する 1 つの特定のタイプの電子署名を指します。したがって、すべてのデジタル署名は電子署名ですが、その逆はありません。
それらの主な違いは認証方法です。デジタル署名では、ハッシュ関数、公開キー暗号化、暗号化技術などの暗号化システムが使用されます。
結果
ハッシュ関数と公開キー暗号化はデジタル署名システムの中心であり、現在多くの用途に使用されています。デジタル署名を正しく適用すると、セキュリティが向上し、整合性が確保され、あらゆる種類のデジタル データの認証が容易になります。
ブロックチェーンの分野では、暗号トランザクションの署名と承認にデジタル署名が使用されます。署名により、対応する秘密鍵を持っている人だけがコインを使用できることが保証されるため、これらはビットコインにとって特に重要です。
私たちは長年にわたって電子署名とデジタル署名の両方を使用してきましたが、まだ成長の余地があります。今日の官僚業務の多くは依然として紙ベースですが、よりデジタル的な種類のデータ処理システムに移行するにつれて、デジタル署名の採用がさらに進む可能性があります。

