デジタル署名は、データの信頼性の検証に利用される暗号出力です。デジタル署名アルゴリズムでは次の 2 つの操作を実施できます。
署名操作。署名鍵を使用して元データに対する署名を生成します。
検証操作。署名鍵を知らない当事者が署名を検証できます。
デジタル署名は主に次の目的に使用されます。
- 署名されたデータの整合性の検証
- 署名者が署名は本物ではないと申し立てた場合の否認防止
デジタル署名は、公開鍵暗号とも呼ばれる非対称暗号を利用しています。非対称鍵は、公開鍵と秘密鍵のペアで構成されます。署名の作成には秘密鍵が使用され、署名の検証には対応する公開鍵が使用されます。
デジタル署名の使用事例
デジタル署名を使用すると、ビルドを検証できます。たとえば、秘密鍵によってデジタル署名されたバイナリの有効性を、その秘密鍵に対応する公開鍵を使用して確認できます。バイナリの署名が有効でない場合、そのバイナリは改ざんされているか破壊されています。
認証局(CA)によって発行される証明書のサブジェクトを検証する事例もあります。CA は、サブジェクトが公開鍵/秘密鍵ペアの秘密鍵部分を所有しているかどうかによって、そのサブジェクトに証明書を発行します。証明書には、サブジェクトの秘密鍵によって作成されたデジタル署名が含まれています。 また、公開鍵/秘密鍵ペアの、サブジェクトの公開鍵部分も含まれています。 サブジェクトとやり取りする機関は、サブジェクトの公開鍵やその他の証明書検証ルールを使用して署名を検証します。署名がその対象となっているデータに対応しない場合や、証明書によって規定された検証ルールに違反がある場合、署名は無効と判断されます。
デジタル署名のワークフロー
ここでは、署名の作成と検証のワークフローについて説明します。このワークフローは、データの署名者とデータの受信者で構成されます。
署名者は、デジタル署名をサポートする非対称鍵を作成します。
署名者はこの鍵を使用して複数の署名を作成できます。
署名者は、データに対して秘密鍵の操作を行ってデジタル署名を作成します。
署名者は、データとデジタル署名をデータの受信者に渡します。
受信者は、署名者の公開鍵/秘密鍵ペアの公開鍵部分を使用してデジタル署名を検証します。検証が成功しなかった場合、データは改ざんされています。
署名アルゴリズム
Cloud Key Management Service では、デジタル署名のアルゴリズムとして楕円曲線(EC)と RSA がサポートされます。この 2 つの業界標準アルゴリズムでは、鍵のサイズとダイジェスト アルゴリズムを任意で選べるようになっています。
楕円曲線暗号は、一方向ハッシュ関数と点乗算を利用して楕円曲線上の点を計算しますが、それと併せて、ある点とその元の点から被乗数を特定するのは困難であることも利用しています。 被乗数の特定が困難であることは、EC 暗号の暗号的メリットです。 曲線のサイズが大きいほど、被乗数の計算は難しくなります。EC 暗号のメリットは、EC 鍵が同じ暗号強度の RSA 鍵に比べて鍵のサイズが小さい点です。
RSA 暗号は、大きい整数を 2 つ以上の素因数に分解する難しさを利用しています。鍵のサイズが大きいほど、整数の素因数分解は難しくなります。
Cloud KMS のデジタル署名の機能
Cloud KMS に用意された、デジタル署名の作成と検証に関連する機能は次のとおりです。
鍵の目的が
ASYMMETRIC_SIGN
の 非対称鍵を作成する機能。非対称署名用の Cloud KMS の鍵により、楕円曲線署名アルゴリズムと RSA 署名アルゴリズムの両方がサポートされます。デジタル署名を作成する機能
非対称鍵の公開鍵を取得する機能。
Cloud KMS には、デジタル署名を直接検証する機能はありません。その代わりに、OpenSSL などの公開されている SDK やツールを使用してユーザーがデジタル署名を検証します。こうした SDK やツールを使用するときに、Cloud KMS から取得した公開鍵が必要になります。公開されている SDK やツールを使用する方法については、楕円曲線署名の検証と RSA 署名の検証をご覧ください。