💻
Azure Confidential Computing VMでAnonifyを動かそう
前回は秘匿化モジュールAnonifyの開発について書かせていただきました。
記事中でも言及しましたが、AnonifyのバックエンドはIntel SGX®︎を採用しています。Anonifyはソースコードを公開しているので、誰でも動かすことができるのですが、Intel SGXが動作する環境でないと実行できない等、少々ハードルが高くなっています。そこで今回はIntel SGXを動作可能なAzure Confidential Computing VMを利用して、Linux(Ubuntu)でAnonifyを動かすまでの初期セットアップ手順を紹介します。
ゴールは「AnonifyのCIで実行しているスクリプトを動作させること」です。スクリプトの内容は、Anonify上で実装したERC201相当の送金ロジックを含む結合テストです2。実際の内容はこちらから見ることができます。
Azure Confidential Computing VMのセットアップ
Intel SGXに対応した仮想マシンを提供しているAzure Confidential Computingを利用します。仮想マシンのシリーズとしては「DCsv2」がAzure Confidential Computing VMに該当します。残念ながらDCsv2シリーズは日本のリージョン(Japan EastとJapan West)には対応していません。対応しているリージョンはこちらから確認できるので、お好きなものを選んでいただいて大丈夫です。本記事ではEast USを選びました。

「作成」を押下すると、以下の画面が出てくるので必要事項を埋めてください。認証用の公開鍵はご自身のものを使ってください。

「確認および作成」を押下するとデプロイ可否の検証が始まります。少し待ち、検証に成功したあともう一度「作成」を押下するとVMが作成されます。数分待つと登録したSSH公開鍵を用いて、SSHでアクセスができます。今回の例ではでアクセスできます。3
VM内のセットアップ
さて、SSHができたらVMのセットアップを行います。大きくAnonifyに関わるセットアップと、SGXに関わるセットアップがあります。
Anonify関連のセットアップ
必要な依存やバイナリをインストールします。
dockerを再起動します。
docker groupが存在するか確認します。存在しなければ作成してください。
dockerグループにazureインスタンスのユーザを追加します。
更新を反映するため、ここで再度SSHし直します。 再SSH後、以下のsocketがあることを確認してください。
次にdokcer-composeをインストールします。 dockerとversion合わせる必要があるので、上述のdockerのversionに合わせてインストールしてください。
最後にsolcをインストールします。Anonifyでは、ノード同士で状態遷移命令を共有するためのバックエンドとしてQuorumを利用しています。Solidityで記述されたスマートコントラクトをコンパイルするためインストールします。
Intel SGX関連のセットアップ
IntelとMicrosoftのaptレポジトリを設定します。
Intel SGXを動作させるために必要な依存をインストールします。Intelが提供しているライブラリはこちらです。適宜必要なものをインストールいただければと思いますが、ここでは以下の依存をインストールします。
にsocketができていれば無事起動ができています。なおSGXへのアクセスはを介して行われます。
Anonifyではにdevicesファイルとして指定し、コンテナ内からenclaveにアクセスできるようにしています。
Intelに開発者登録
前回のブログよりAnonifyが有する2つの性質「Confidentiality」「Execution Integrity」について触れました。
Intel SGXがもたらすセキュリティ・プロパティの観点では、ハードウェアレベルでの分離およびメモリ暗号化で「Confidentiality」を、Remote Attestationで「Execution Integrity」を実現します。
後者のRemote Attestationでは、Intelが運営するAttestation Service(IAS)を利用します5。Anonifyを動作させるために、と(APIキーのようなものです)が必要なので、IntelのAPI webポータルで開発者登録を行います。
Intel API webポータルにアクセスし、「Sign up」を押下します。

各種情報を入力します。

メール認証が必要なため、「Confirm email address」を押下します。

メール認証が完了したらSign Inします。

Sing Inした状態で、以下の「Intel® SGX Attestation Service Utilizing Enhanced Privacy ID (EPID)」の文中のリンクを押下します。

今回は開発用の「Development Attestation」欄にある「Subscribe(unlikable)」を選びます。

確認画面が表示されるので「Subscribe」を押下してください。

と(以下、)が表示されると思います。次のステップで使うのでメモしておいてください。
Anonifyを動かす
長い道のりでしたが、いよいよAnonifyを動かします。VMに戻り、Anonifyをcloneしてください。
内にご自身のと を設定してください。
最後にテスト用のスクリプトを実行します。最後までエラーが起きなければ無事成功です。
最後に
Azure Confidential Computing VMとAnonifyのセットアップ、Intelの開発者登録の手順を紹介しました。Intel SGXは気になっているけど、なかなか動かすハードルが高いなぁと思っている方の一助になれば幸いです。Confidential Computing関連の技術は低レイヤで楽しいので、ぜひお試しいただけると嬉しいです!
- 単体テストや異常系、ツール群のビルドなども含まれており、テスト自体が膨大ですが、わかりやすい代表例として挙げました。↩
- アクセスできない場合は、Seruity GroupでSSHが許可されていない可能性があるので、適切な許可設定を行ってください。↩
- Data Center Attestation Primitives (DCAP) と呼ばれるサードパーティが運営するAttestation Serviceも存在します↩