クラウド KMS の活用 1 TOKYO BLOCKCHAIN TECH MEETUP 2022 @odan3240
View Slide
自己紹介 ● Twitter: @odan3240 ● 五反田にある会社でソフトウェアエンジニア(後述) ● 最近の興味 ○ TypeScript ○ Seaport ○ EIP-2771: Secure Protocol for Native Meta Transactions ○ コントラクトウォレット 2
宣伝 ● 普段のお仕事で開発しているサービス ● ユニキス ガレージ ○ NFT の生成ができる SaaS ○ NFT の生成は API もあるので 既存サービスとのインテグレーションも可能 ● ユニマ ○ 生成した NFT を販売するマーケット 3
Web サービス開発における秘密鍵管理 ● サービスの要件によっては バックエンドからトランザクション発行が必要 ● 秘密鍵管理を環境変数で行った場合の課題 ○ 誰かがこっそり秘密鍵を MetaMask にインポート可能 4
クラウドの KMS ● AWS/GCP/Azure などのクラウドサービスには KMS (Key Management Service) というサービスがある ○ AWS Key Management Service ○ Cloud KMS ○ Azure Key Vault ● 各 KMS は Ethereum が使用している 楕円曲線暗号の secp256k1 サポートしている 5
クラウドの KMS ● クラウドの KMS で秘密鍵管理すると都合が良い ○ エンジニア含めて秘密鍵自体に誰もアクセスできない ○ 誰が秘密鍵で署名したかログが残る ■ API 呼び出しの監査ログは保存されている 6
cloud-cryptographic-wallet ● https://github.com/odanado/cloud-cryptographic-wallet ● クラウドの KMS にある秘密鍵を web3.js や ethers から扱うためのライブラリ 7
cloud-cryptographic-wallet ● 対応ライブラリ ○ web3.js ○ ethers ○ hardhat (開発中) ● 対応クラウド ○ AWS ○ GCP 8
まとめ ● 生の秘密鍵を開発で運用すると セキュリティ的な不安要素がある ● 各種クラウドの KMS の利点 ○ Ethereum の秘密鍵の形式に対応している ○ セキュアに秘密鍵を使用できる ● cloud-cryptographic-wallet を使用すると クラウドの KMS の秘密鍵で Ethereum 関係のライブラリを利用できる 9