このトピックでは、KMS の非対称キーについて説明します。 非対称キーは、対称キーとは異なり、異なる信頼レベルのシステム間でのデジタル署名の検証、機密情報の暗号化などに使用されます。

KMS では、非対称カスタマーマスターキー (CMK) を作成できます。 非対称キーペアは、公開鍵と秘密鍵で構成され、暗号的に相互に関連しています。 公開鍵は誰でも使用できるようにすることができますが、秘密鍵は安全に保ち、信頼できるユーザー間でのみ使用する必要があります。 Alibaba Cloudは、一般的な非対称キーアルゴリズムをサポートし、強力な暗号化とデジタル署名を使用して高レベルのデータセキュリティを実現します。

現在、この機能はベータ版です。 非対称キーの無料試用版を有効にする場合、弊社のコンサルタントまでご連絡ください。

非対称キーの分類

KMS では、以下の 2 種類の非対象キーがサポートされています。
  • RSA

    RSAは、広く利用されている非対称暗号システムです。 RSA キーは、データの暗号化、復号、および署名に使用できます。 KMS は 2048 ビット RSA キーをサポートしています。 RSA を使用する場合、KeySpec パラメーターをRSA_2048 に設定します。

  • ECC
    デジタル署名の生成には、ECC (楕円曲線暗号化) も使用できます。 KMS では、以下の 2 種類の楕円曲線がサポートされています。
    • NIST 推奨の楕円曲線 P-256。 この楕円曲線を使用する場合、KeySpec パラメーターを EC_P256 に設定します。
    • SECG 楕円曲線 secp256k1。 この楕円曲線を使用する場合は、KeySpec パラメーターを EC_P256K に設定します。

データ暗号化

非対称キーは機密情報を送信する場合に使用されます。 次の手順では、典型的なシナリオについて説明します。
  1. 情報の受信者は、公開鍵を送信者に配布します。
  2. 送信者は公開鍵を使用して機密情報を暗号化します。
  3. 送信者は、機密情報から生成された暗号文を受信者に送信します。
  4. 受信者は秘密鍵を使用して暗号文を復号します。

秘密鍵は情報受信者のみ使用できます。これにより、送信中に権限のない者が機密情報の平文を傍受および復号できないことが保証されます。 この暗号化方式は、鍵の交換に広く使用されています。 たとえば、セッションキーは TLS (Transport Layer Security) で交換され、暗号化キーは異なる HSM (ハードウエアセキュリティモジュール) 間でエクスポートおよびインポートされます。

詳細については、「非対称CMKを使用してデータを暗号化および復号化する」をご参照ください.

デジタル署名

非対称キーは、デジタル署名の生成にも適しています。 秘密鍵は、メッセージまたは情報への署名に使用できます。 秘密鍵は厳重に保護され、信頼できるユーザーが署名を作成するために使用できます。 公開鍵を使用して署名を検証することにより、以下を実現できます。
  • データの整合性検証:データが署名と一致しない場合、データが改ざんされている可能性があります。
  • メッセージの信頼性検証:メッセージが署名と一致しない場合、メッセージ送信者は秘密鍵を保持していません。
  • 署名に対する否認防止:データが署名と一致する場合、署名者はこの署名を否認できません。
次の手順では、典型的な署名検証シナリオについて説明します。
  1. 署名者が公開鍵を受信者に送信します。
  2. 署名者は秘密鍵を使用してデータに署名します。
  3. 署名者はデータと署名を受信者に送信します。
  4. データと署名を受信した受信者は、公開鍵を使用して署名を検証します。

デジタル署名は、データの改ざんを防ぎ、身元を認証するために広く使用されています。 たとえば、デジタル署名を使用すると、バイナリコードの整合性を維持でき、またコードが改ざんされていないことを検証できるため、信頼できる実行環境を提供できます。 デジタル署名は、デジタル証明書システムでも使用されます。 デジタル証明書システムでは、認証局 (CA) がデジタル証明書に署名を提供して、エンティティ情報、公開鍵と秘密鍵の情報、鍵の目的、有効期限、および発行者を認証します。 具体的には、証明書の秘密鍵保有者は秘密鍵を使用してメッセージに署名します。 受信者は、証明書に含まれる公開鍵を使用してメッセージの署名を検証し、証明書発行者の公開鍵を使用して証明書を検証します。

詳細については、「非対称 CMK によるデジタル署名」をご参照ください.

キーバージョン

KMS では、非対称 CMK の自動ローテーションはサポートされていません。 CreateKeyVersion を呼び出して、特定の CMK に新しいキーバージョンを作成し、公開鍵と秘密鍵の新しいペアを生成できます。 デジタル署名またはデータ暗号化に新しいキーバージョンを使用する場合は、公開キーの新しいバージョンも配布する必要があります。

さらに、対称 CMK とは異なり、プライマリキーバージョン (PrimaryKeyVersion) の概念は非対称 CMK には適用されません。 したがって、KMS で非対称キーに関連する操作を呼び出すには、CMK ID (または CMK エイリアス) とキーバージョンを指定する必要があります。

公開鍵の操作

ほとんどの場合、暗号化と検証のためにユーザーに配布される公開鍵は、GetPublicKey を呼び出して取得できます。 アプリケーションで OpenSSL や Java JCE などの暗号化ライブラリを使用することにより、公開鍵の操作をローカルで実行できます。

また、KMS ではビジネスサービスの実装を支援するための AsymmetricEncryptおよび AsymmetricVerify も提供しています。 特別なビジネスニーズを満たすために、公開鍵の操作に関連する KMS API を呼び出して、監査ログを簡単に記録したり、RAM を使用して公開キーの使用を制限したりできます。

秘密鍵の操作

秘密キーでデータを復号化またはデジタル署名する場合、KMS が提供する AsymmetricDecrypt および AsymmetricSign を使用する必要があります。