AWS CloudHSMを使った鍵管理

はじめに

本稿について

本稿は、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」のユーザーを作成しています)

mceclip0.png

aws_cloud.conf設定

HSMのユーザー名およびパスワードは、node.confに直接設定するのではなく、
別途作成するaws_cloud.conf(ファイル名は任意)に設定します。以下、設定項目と設定例です。

項目 説明
username HSMユーザー名を設定します
password HSMユーザーのパスワードを設定します。
partition HSM IDを設定します。(AWS上で確認できます)

mceclip3.png

node.conf設定

node.confにAWS CloudHSMの情報を設定します。mceclip2.png

項目 説明
cryptoServiceName 暗号のサービス名を設定します。AWSの場合は「AWS_CLOUD」と設定します。
cryptoServiceConf

HSM設定ファイル名を設定します。上記例の場合は、「aws_cloud.conf」と設定します。

※参考:Confidential IdentityをAWS CloudHSMに格納することも出来ます。その際は、node.confの設定方法が変わります。

mceclip0.png

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です。

mceclip1.png

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になっていることがわかります。

mceclip4.png

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

 

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています