対称鍵によるデータの暗号化と復号 (original) (raw)

このページでは、Cloud Key Management Service(Cloud KMS)を使用して次の対称鍵操作を行う方法について説明します。

非対称鍵を使用して暗号化を行う場合は、非対称鍵によるデータの暗号化と復号をご覧ください。未加工の対称暗号化については、未加工の対称暗号化をご覧ください。

始める前に

  1. キーリングを作成し、鍵を作成します。
  2. 暗号化メソッドと復号メソッドを呼び出すユーザーに、鍵に対する cloudkms.cryptoKeyVersions.useToEncrypt 権限と cloudkms.cryptoKeyVersions.useToDecrypt 権限があることを確認してください。
    暗号化または復号をユーザーに許可する方法の 1 つは、ユーザーをその鍵の roles/cloudkms.cryptoKeyEncrypterroles/cloudkms.cryptoKeyDecrypter、または roles/cloudkms.cryptoKeyEncrypterDecrypter IAM 役割に追加することです。roles/cloudkms.admin ロールでは、これらの 2 つの権限は付与されません。詳細については、権限と役割をご覧ください。

暗号化

gcloud

コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします

gcloud kms encrypt
--key KEY_NAME
--keyring KEY_RING
--location LOCATION
--plaintext-file FILE_TO_ENCRYPT
--ciphertext-file ENCRYPTED_OUTPUT

以下を置き換えます。

すべてのフラグと有効な値については、--help フラグを指定してコマンドを実行してください。

C#

このコードを実行するには、まず C# 開発環境を設定し、Cloud KMS C# SDK をインストールします。

Go

このコードを実行するには、まず Go 開発環境を設定し、Cloud KMS Go SDK をインストールします。

Java

このコードを実行するには、まず Java 開発環境を設定し、Cloud KMS Java SDK をインストールします。

Node.js

このコードを実行するには、まず Node.js 開発環境を設定し、Cloud KMS Node.js SDK をインストールします。

PHP

このコードを実行するには、まず Google Cloudでの PHP の使用について学び、Cloud KMS PHP SDK をインストールします。

Python

このコードを実行するには、まず Python 開発環境を設定し、Cloud KMS Python SDK をインストールします。

Ruby

このコードを実行するには、まず Ruby 開発環境を設定し、Cloud KMS Ruby SDK をインストールします。

API

これらの例では、HTTP クライアントとして curl を使用して API の使用例を示しています。アクセス制御の詳細については、Cloud KMS API へのアクセスをご覧ください。

JSON と REST API を使用する場合は、Cloud KMS で暗号化する前にコンテンツを base64 でエンコードする必要があります。

データを暗号化するには、POST リクエストを行い、適切なプロジェクトと鍵情報を指定し、リクエスト本文の plaintext フィールドに、暗号化する base64 でエンコードされたテキストを指定します。

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:encrypt"
--request "POST"
--header "authorization: Bearer TOKEN"
--header "content-type: application/json"
--data "{"plaintext": "PLAINTEXT_TO_ENCRYPT"}"

以下を置き換えます。

base64 でエンコードされたデータを含むペイロードの例を次に示します。

{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }

復号

gcloud

コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします

gcloud kms decrypt
--key KEY_NAME
--keyring KEY_RING
--location LOCATION
--ciphertext-file FILE_TO_DECRYPT
--plaintext-file DECRYPTED_OUTPUT

以下を置き換えます。

すべてのフラグと有効な値については、--help フラグを指定してコマンドを実行してください。

C#

このコードを実行するには、まず C# 開発環境を設定し、Cloud KMS C# SDK をインストールします。

Go

このコードを実行するには、まず Go 開発環境を設定し、Cloud KMS Go SDK をインストールします。

Java

このコードを実行するには、まず Java 開発環境を設定し、Cloud KMS Java SDK をインストールします。

Node.js

このコードを実行するには、まず Node.js 開発環境を設定し、Cloud KMS Node.js SDK をインストールします。

PHP

このコードを実行するには、まず Google Cloudでの PHP の使用について学び、Cloud KMS PHP SDK をインストールします。

Python

このコードを実行するには、まず Python 開発環境を設定し、Cloud KMS Python SDK をインストールします。

Ruby

このコードを実行するには、まず Ruby 開発環境を設定し、Cloud KMS Ruby SDK をインストールします。

API

これらの例では、HTTP クライアントとして curl を使用して API の使用例を示しています。アクセス制御の詳細については、Cloud KMS API へのアクセスをご覧ください。

Cloud KMS から JSON で返される復号されたテキストは、base64 でエンコードされています。

暗号化されたデータを復号するには、POST リクエストを行い、適切なプロジェクトと鍵情報を指定し、リクエスト本文の ciphertext フィールドに、復号する暗号化されたテキスト(_暗号テキスト_とも呼ばれます)を指定します。

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:decrypt"
--request "POST"
--header "authorization: Bearer TOKEN"
--header "content-type: application/json"
--data "{"ciphertext": "ENCRYPTED_DATA"}"

以下を置き換えます。

base64 でエンコードされたデータを含むペイロードの例を次に示します。

{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }

次のステップ