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