はじめに
本稿について
本稿は、Amazon Web Services(以下、「AWS」)のサービスである「AWS CloudHSM」を用いたlegal identityおよびjksファイル管理の方法について記載したものです。英語のドキュメントはこちらを
ご参照ください。
※HSMの利用はCorda Enterpriseのみ対象となっています。
事前準備
※本稿を読み進める前に、AWS CloudHSMのクラスターおよびHSMを作成済である必要があります。
AWS CloudHSMのWebサイトのユーザーズガイドを参考にセッティングしてください。
https://docs.aws.amazon.com/ja_jp/cloudhsm/index.html
具体的には、「AWS CloudHSM の使用開始」の「クラスターのアクティブ化」まで完了する必要があります。
登録手順
本手順は、ノードがCorda Networkに参加していない状態で実行します。
HSMユーザー作成
cloudhsm_mgmt_util ユーティリティを起動し、Crypto Officer(CO)にログインしてください。
createUserコマンドにて、Crypto User (CU)を作成します。
(したの例では、ユーザー名「ce45user1」、パスワード「ce45test」のユーザーを作成しています)
aws_cloud.conf設定
HSMのユーザー名およびパスワードは、node.confに直接設定するのではなく、
別途作成するaws_cloud.conf(ファイル名は任意)に設定します。以下、設定項目と設定例です。
項目 | 説明 |
username | HSMユーザー名を設定します |
password | HSMユーザーのパスワードを設定します。 |
partition | HSM IDを設定します。(AWS上で確認できます) |
node.conf設定
node.confにAWS CloudHSMの情報を設定します。
項目 | 説明 |
cryptoServiceName | 暗号のサービス名を設定します。AWSの場合は「AWS_CLOUD」と設定します。 |
cryptoServiceConf |
HSM設定ファイル名を設定します。上記例の場合は、「aws_cloud.conf」と設定します。 |
※参考:Confidential IdentityをAWS CloudHSMに格納することも出来ます。その際は、node.confの設定方法が変わります。
Confidential Identityの場合、freshIdentitiesConfiguration内に、HSMの情報を設定します。
項目 | 説明 |
mode |
WRAPPEDもしくはDEGRADED_WRAPPEDを設定します。AWSの場合は、「WRAPPED」を設定します。 |
cryptoServiceName | 暗号のサービス名を設定します。AWSの場合は「AWS_CLOUD」と設定します。 |
cryptoServiceConf |
HSM設定ファイル名を設定します。上記例の場合は、「aws_cloud.conf」と設定します。 |
masterKeyAlias |
ラッピングキーのエイリアスを定義します。任意の設定項目です。 |
HSMを使ったConfidential Identityの管理方法に関しては、「Using an HSM with confidential identities」をご参照ください。
driver配置
cloudhsm-3.0.0.jarをAWS CloudHSMのライブラリからダウンロードし、「drivers」ディレクトリに格納します。
CENM登録
NodeがCorda Networkに参加する前は、HSMの保有している鍵は0です。
NodeからIdentity Managerに参加要求を送信します。
java -Djava.library.path=/opt/cloudhsm/lib -jar corda.jar --initial-registration --network-root-truststore-password trustpass --network-root-truststore network-root-truststore.jks
NodeがCorda Network参加後は、保有する鍵が4になっていることがわかります。
Corda Node起動
HSMを用いたCordaの起動には、AWS CloudHSMJCEプロバイダーのライブラリのパスを指定する必要があります。(以下は、「/opt/cloudhsm/lib」にライブラリを配置している例です)
java -Djava.library.path=/opt/cloudhsm/lib -jar corda.jar
終わりに
今回はAWSのケースですが、Azure KeyVaultやnCipher nShield等、複数のHSMプロダクトやサービスをサポートしています。手順等は本稿と近い部分も多いと思いますので、ご参考になれば幸いです。
Created by: Kazuto Tateyama
Last edited by: Kazuto Tateyama
Updated: 2020/11/17