1
1

More than 1 year has passed since last update.

KMSでSecp256k1の署名と検証(前編)

Last updated at Posted at 2022-09-11

はじめに(Introduction)

BitcoinやEthereumでは署名にECDSA(楕円曲線DSA)を用いています。
そこで使用される、楕円曲線はSecp256k1と呼ばれるパラメータです。
AWS Key Management Service (AWS KMS) では、Secp256k1のECDSAを用いることが出来るのでこれをJavaを使用して署名、検証を行います。

筆者は、AWSもEthereumも素人なので、そこら辺の間違いについてはご指摘いただけるとありがたいです。

記事が長くなってしまったので、前編、後編にわけて投稿します。
この記事は、AWS KMSで鍵を作るまでの手順となります。

IAMユーザー作成

AWSのIAMユーザーを作成します。
内容としては、ユーザーを追加して、「AWSKeyManagementServicePowerUser」の権限を持つグループに所属させます。
最終的にIAMユーザーの「アクセスキーID」と「シークレットアクセスキー」を取得します。

IAM画面へ遷移

①:左上の「■サービス」を押下します。
②:メニューから「セキュリティ、ID、およびコンプライアンスデータベース」を押下します。
③:一覧から「IAM」を押下します。(スクロールの必要あり)

2022-09-08_09h09_53.png

ユーザー

①:「IAM ダッシュボード」の左メニュー「アクセス管理」「ユーザー」を押下します。
②:右上の「ユーザーを追加」を押下します。

2022-09-08_09h10_22.png

ユーザーを追加①

①:「ユーザー名」に名前を設定します。(例:test_user)
②:「AWS認証情報タイプを選択」は「アクセスキー・プログラムによるアクセス」を選択します。
①:「次のステップ:アクセス権限」を押下します。

2022-09-08_09h10_54.png

ユーザーを追加②

①:「グループの作成」を押下します。

2022-09-08_09h11_02.png

グループの作成

①:「グループ名」に名前を設定します。(例:test_group)
②:ポリシーのフィルタを利用して「AWSKeyManagementServicePowerUser」のみをフィルタします。(例:KeyM)
③:「AWSKeyManagementServicePowerUser」に☑を入れます。
④:「グループの作成」を押下します。

2022-09-08_09h11_39.png

ユーザーを追加②

①:「AWSKeyManagementServicePowerUser」ポリシーを持つグループに☑を入れます。(例:test_group)
②:「次のステップ:タグ」を押下します。

2022-09-08_09h12_02.png

ユーザーを追加③

※:タグの追加(オプション)は設定しません。

①:「次のステップ:確認」を押下します。

2022-09-08_09h12_16.png

ユーザーを追加④

①:内容を確認して「ユーザーの作成」を押下します。

2022-09-08_09h12_24.png

ユーザーを追加⑤

「アクセスキーID」と「シークレットアクセスキー」を自身のみの環境へ保存します。

①:「閉じる」を押下します。

2022-09-08_09h12_34.png

キーの作成(KMS)

「キーの作成」を行います。
内容としては、「キーのタイプ」が「非対称」、「キーの使用」が「署名および検証」、「キーの仕様」が「ECC_SECG_P256K1」の鍵を生成し、「キーの使用アクセス許可を定義」でIAMで作成したユーザーを選択します。
最終的に作成したキーの「キーID」を取得します。

Key Management Serviceへ遷移

①:左上の「■サービス」を押下します。
②:メニューから「セキュリティ、ID、およびコンプライアンスデータベース」を押下します。
③:一覧から「Key Management Service」を押下します。(スクロールの必要あり)

2022-09-08_09h14_39.png

キーの作成

①:AWSのリージョンを「アジアパシフィック (東京) ap-northeast-1」(表示は「東京」)にします。
②:「キーの作成」を押下します。

2022-09-08_09h51_42.png

キーを設定

①:「キーのタイプ」は「非対称」を選択します。
②:「キーの使用」は「署名および検証」を選択します。
③:「キーの仕様」は「ECC_SECG_P256K1」を選択します。
④:「次へ」を押下します。

FireShot Capture 104 - KMS Console - ap-northeast-1.console.aws.amazon.com.png

ラベルを追加

①:「エイリアス」を設定します。(例:test_kms)
②:「次へ」を押下します。

FireShot Capture 106 - KMS Console - ap-northeast-1.console.aws.amazon.com.png

キーの管理アクセス許可を定義

①:「キー管理者」の「AWSServiceRoleForSupport」を☑します。
②:「キー管理者」の「AWSServiceRoleForTrustedAdvisor」を☑します。
③:「次へ」を押下します。

2022-09-08_09h58_15.png

キーの使用アクセス許可を定義

①:「このアカウント」のIAMで作成したユーザーを☑します。(例:test_user)
②:「このアカウント」の「AWSServiceRoleForSupport」を☑します。
③:「このアカウント」の「AWSServiceRoleForTrustedAdvisor」を☑します。
④:「次へ」を押下します。

FireShot Capture 107 - KMS Console - ap-northeast-1.console.aws.amazon.com.png

確認

①:内容を確認して「完了」を押下します。

FireShot Capture 108 - KMS Console - ap-northeast-1.console.aws.amazon.com.png

完了

①:キーの作成が完了したので、「キーID」を取得します。

2022-09-08_10h00_10.png

まとめ

前編はここまでです。
後編はここで作成したIAMユーザの「アクセスキーID」と「シークレットアクセスキー」、
KSMで作成した鍵の「キーID」を利用して、Javaで署名と検証を行います。

後編はこちら

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1