はじめに(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」を押下します。(スクロールの必要あり)
ユーザー
①:「IAM ダッシュボード」の左メニュー「アクセス管理」「ユーザー」を押下します。
②:右上の「ユーザーを追加」を押下します。
ユーザーを追加①
①:「ユーザー名」に名前を設定します。(例:test_user)
②:「AWS認証情報タイプを選択」は「アクセスキー・プログラムによるアクセス」を選択します。
①:「次のステップ:アクセス権限」を押下します。
ユーザーを追加②
①:「グループの作成」を押下します。
グループの作成
①:「グループ名」に名前を設定します。(例:test_group)
②:ポリシーのフィルタを利用して「AWSKeyManagementServicePowerUser」のみをフィルタします。(例:KeyM)
③:「AWSKeyManagementServicePowerUser」に☑を入れます。
④:「グループの作成」を押下します。
ユーザーを追加②
①:「AWSKeyManagementServicePowerUser」ポリシーを持つグループに☑を入れます。(例:test_group)
②:「次のステップ:タグ」を押下します。
ユーザーを追加③
※:タグの追加(オプション)は設定しません。
①:「次のステップ:確認」を押下します。
ユーザーを追加④
①:内容を確認して「ユーザーの作成」を押下します。
ユーザーを追加⑤
「アクセスキーID」と「シークレットアクセスキー」を自身のみの環境へ保存します。
①:「閉じる」を押下します。
キーの作成(KMS)
「キーの作成」を行います。
内容としては、「キーのタイプ」が「非対称」、「キーの使用」が「署名および検証」、「キーの仕様」が「ECC_SECG_P256K1」の鍵を生成し、「キーの使用アクセス許可を定義」でIAMで作成したユーザーを選択します。
最終的に作成したキーの「キーID」を取得します。
Key Management Serviceへ遷移
①:左上の「■サービス」を押下します。
②:メニューから「セキュリティ、ID、およびコンプライアンスデータベース」を押下します。
③:一覧から「Key Management Service」を押下します。(スクロールの必要あり)
キーの作成
①:AWSのリージョンを「アジアパシフィック (東京) ap-northeast-1」(表示は「東京」)にします。
②:「キーの作成」を押下します。
キーを設定
①:「キーのタイプ」は「非対称」を選択します。
②:「キーの使用」は「署名および検証」を選択します。
③:「キーの仕様」は「ECC_SECG_P256K1」を選択します。
④:「次へ」を押下します。
ラベルを追加
①:「エイリアス」を設定します。(例:test_kms)
②:「次へ」を押下します。
キーの管理アクセス許可を定義
①:「キー管理者」の「AWSServiceRoleForSupport」を☑します。
②:「キー管理者」の「AWSServiceRoleForTrustedAdvisor」を☑します。
③:「次へ」を押下します。
キーの使用アクセス許可を定義
①:「このアカウント」のIAMで作成したユーザーを☑します。(例:test_user)
②:「このアカウント」の「AWSServiceRoleForSupport」を☑します。
③:「このアカウント」の「AWSServiceRoleForTrustedAdvisor」を☑します。
④:「次へ」を押下します。
確認
①:内容を確認して「完了」を押下します。
完了
①:キーの作成が完了したので、「キーID」を取得します。
まとめ
前編はここまでです。
後編はここで作成したIAMユーザの「アクセスキーID」と「シークレットアクセスキー」、
KSMで作成した鍵の「キーID」を利用して、Javaで署名と検証を行います。