デジタル署名は、デジタルデータの信頼性と整合性を検証するために使用される暗号化メカニズムです。通常の手書き署名のデジタル版と見なすこともできますが、より高度なレベルの複雑さとセキュリティを備えています。
単純化すると、デジタル署名はメッセージ、もしくはドキュメントに付随しているコードと説明できるかもしれません。発行後、このコードはメッセージが送信者から受信者に渡すまでの間に改ざんされなかったことの証明として機能します。
確かに、コミュニケーションを暗号を使って、安全にするというコンセプトは古くから行われてきましたが、デジタル署名が実現したのは、公開鍵暗号(PKC)が発展した、1970年代です。つまり、デジタル署名がどのように機能するのかを学ぶためには、ハッシュ関数と公開鍵暗号の基礎について、まず理解する必要があるということです。
ハッシュはデジタル署名システムの核となる要素の1つです。このハッシュのプロセスには、あらゆるサイズのデータを固定のサイズの出力に転換するプロセスが含まれています。これはハッシュ関数という特別な種類のアルゴリズムによって行われています。このハッシュ関数による出力はハッシュ値、もしくはメッセージダイジェストとして知られています。
暗号学と組み合わせると、いわゆる暗号学的ハッシュ関数は固有のデジタルフィンガープリントとして機能するハッシュ関数(ダイジェスト)を発行するために使われます。つまり、入力データ(メッセージ)へのいかなる変更も出力(ハッシュ値)をまったく違うものにするという結果になります。このため、暗号学的ハッシュ関数はデジタルデータの真正性を検証するために広く使われています。
公開鍵暗号、もしくはPKCは暗号鍵と公開鍵のペアを使う暗号システムを指しています。この2つの鍵は数学的に関係していて、データの暗号化とデジタル署名両方のために使うことができます。
暗号化ツールとして、PKCは基本的に対称鍵暗号による方法よりも安全です。このより古いシステムは情報の暗号化と復号のために同じ鍵を使いますが、PKCはデータの暗号化は公開鍵で行い、復号はその公開鍵と一致する暗号鍵で行うことができます。
それ以外にも、PKCスキームはデジタル署名の発行にも適用できるかもしれません。実質的に、このプロセスは署名者の暗号鍵でメッセージ(もしくは、デジタルデータ)をハッシュします。次に、メッセージの受信者は署名者の公開鍵を使うことで、その署名が有効かどうかを確認できます。
一定の状況においては、デジタル署名の暗号化が含まれますが、必須ではないです。例えば、ビットコイン(Bitcoin)ブロックチェーンはPKCとデジタル署名を使いますが、このプロセスには暗号化は含まれていません。技術的な話をすると、ビットコイン(Bitcoin)はトランザクションの認証のために、いわゆる楕円曲線暗号(ECDSA)をデプロイしています。
仮想通貨において、デジタル署名システムはハッシュ、署名、検証の基本的な3つのステップによって構成されています。
最初のステップはメッセージ、もしくはデジタルデータをハッシュします。これはデータを ハッシュ アルゴリズムに提出し、ハッシュ値が発行されることで行われます。前述のように、メッセージのサイズは大きく異なる可能性がありますが、ハッシュされると、すべてのハッシュ値の長さが同じになります。これはハッシュ関数の最もベーシックな特徴です。
しかしながら、データをハッシュするのはデジタル署名を作るのに必須ではないです。なぜなら、まったくハッシュされていない暗号鍵でメッセージに署名をすることが可能だからです。しかし、仮想通貨においては、データは必ずハッシュされます。なぜなら、固定長のハッシュ値を処理するとプロセス全体のセキュリティが低下するからです。
情報がハッシュされたら、メッセージの送信者はそれに署名をする必要があります。ここで、公開鍵暗号が登場します。いろんな種類のデジタル署名アルゴリズムがあり、それぞれが独自のメカニズムを持っています。しかし、本質的にハッシュされたメッセージは暗号鍵によって署名され、そのメッセージの受信者は一致する公開鍵(署名者が提供する)を使って、その正当性を確認します。
別の言い方をすれば、署名の生成時に秘密鍵が含まれていない場合、メッセージの受信者は対応する公開鍵を使用して、その有効性を検証することはできません。公開鍵、暗号鍵の両方ともメッセージの送信者によって発行されますが、暗号鍵は受信者には共有されません。
それぞれのメッセージにコンテンツに、デジタル署名は直接関連されています。そのため、メッセージに関わらず、同じとなる手書きでの署名と違い、デジタル署名されたメッセージはそれぞれ違うデジタル署名を持ちます。
検証の最終ステップまでのプロセス全体を説明するために例を見てみましょう。アリスがボブにメッセージを書き、それをハッシュし、デジタル署名を発行するために暗号鍵とハッシュ値を組み合わせます。この署名はその特定のメッセージの固有のデジタルフィンガープリントとして機能します。
ボブがメッセージを受け取ったら、彼はアリスの公開鍵を使って、デジタル署名の有効性を確認します。この方法で、ボブはこの署名がアリスによって作られたものだと確認できます。なぜなら、彼女がその公開鍵と一致する暗号鍵を持っている、唯一の人物だからです。
そのため、アリスにとっては暗号鍵を安全に保管することが大切です。もしも、誰かがアリスの暗号鍵を手に入れた場合、その人物はアリスのデジタル署名を作って、なりすますことができます。ビットコイン(Bitcoin)においては、これは誰かがアリスの暗号鍵を使って、彼女の許可なしで、ビットコイン(Bitcoin)を使ったり、動かしたりすることができるということです。
デジタル署名はデータの整合性、認証、そして否認不可という3つの結果を実現するためによく使われます。
デジタル署名は様々な種類のデジタル署名と証明書に適用することができます。そのため、実際にいくつかのアプリケーションがあります。そして、最も一般的なユースケースとしては以下のような例が挙げられます。
デジタル署名スキームが直面している主要な課題は最低でも3つの要件に依存しています。
簡単に言えば、デジタル署名は、特定の種類の電子署名に関連しています。こ子で言う電子署名は文書やメッセージに電子的に署名する方法を指します。そのため、全てのデジタル署名は電子署名の1形態ですが、電子署名が必ずしもデジタル署名を意味するわけではないです。
こういった電子署名の色んな方法における違いは認証メソッドです。デジタル署名はハッシュ関数、 公開鍵暗号化、暗号化技術のような暗号学のシステムをデプロイしています。
ハッシュ関数と公開鍵暗号化がデジタル署名システムのコアであり、現代では幅広いユースケースで採用されています。適切に実装されたら、デジタル署名はセキュリティを強化し、整合性を確保し、あらゆる種類のデジタルデータの認証を促進します。
ブロックチェーンにおいては、デジタル署名を使用して、仮想通貨のトランザクションに署名し、承認します。これは特にビットコイン(Bitcoin)では重要です。なぜなら、署名によってそのコインは対応する暗号鍵を保有している個人によって使われたことを保証するからです。
電子署名とデジタル署名の両方を何年も使用していますが、これらの技術にはまだ成長の余地があります。現代の行政において、大きな部分がペーパーワークに基づいていますが、よりデジタル化されたシステムに移行するにつれて、デジタル署名スキームがより採用されていくでしょう。