デジタル署名 とは?
デジタル署名は、秘密鍵を使ってメッセージまたはドキュメントに対して署名を生成する暗号方式で、対応する公開鍵を持つ誰でもデータの真正性と完全性を確認するために署名を検証できます。
別名: code signing, message signing
デジタル署名は 3 つの保証を提供します。認証(メッセージが主張された送信者によって作成された)、完全性(メッセージは署名後に変更されていない)、否認不可(署名者は署名したことを否定できない)。これらの特性により、デジタル署名は多くの法域で法的拘束力を持ち、ソフトウェア配布、金融取引、本人確認に不可欠です。
署名プロセスは、まず SHA-256 のような暗号ハッシュ関数でメッセージをハッシュ化して固定サイズのダイジェストを生成し、そのダイジェストを署名者の秘密鍵で暗号化します。検証はプロセスを逆転します。検証者は署名者の公開鍵で署名を復号し、独立してメッセージをハッシュ化して 2 つのダイジェストを比較します。一致すれば署名は有効です。一般的なアルゴリズムには RSA 署名、ECDSA(Elliptic Curve Digital Signature Algorithm)、EdDSA があります。
デジタル署名は HMAC とは異なります。どちらも完全性を検証しますが、HMAC は共有秘密鍵を使用し、両方の当事者がコードを生成・検証できるため、否認不可を提供できません。デジタル署名は非対称鍵を使用し、秘密鍵所有者のみが署名でき、公開鍵を持つ誰でも検証できます。この非対称性が否認不可を可能にし、デジタル署名を公開検証シナリオに適したものにします。
Vaulted における デジタル署名 の使われ方
Vaulted は、共有モデルが対称的であり、送信者と受信者が URL フラグメントを通じて同じ鍵を共有し、否認不可や公開検証の必要がないため、コア暗号フローでデジタル署名を使用しません。しかし、Vaulted の HTTPS 接続を保護する TLS 証明書はデジタル署名に依存してブラウザにサーバーのアイデンティティを証明し、Vaulted のデプロイされたコードの完全性は CI/CD パイプラインのコード署名を通じて検証されます。