confidential-computing-modules
confidential-computing-modules copied to clipboard
A Module for Privacy-preserving State Transitions with Verifiability
スケーラブルな分、Tree部分がEnclave内にも関わらず複雑な実装になってしまっている。 update handshakeのメッセージサイズがO(logN)からO(N)に肥大化する分、TCBサイズを削減可能。 https://github.com/LayerXcom/anonify/blob/1aaf0c10cdc4a1b82345b9d4e2258cd54d89b4f9/modules/anonify-enclave/src/group_key.rs#L11-L17
イベント取得〜状態反映をN回repeatしベンチマーク取れるよう、全てのメッセージの暗号化に同じ鍵を利用するstatic group keyを追加。`#[feature(benchmark)]`で有効化可能。 https://github.com/LayerXcom/anonify/blob/1aaf0c10cdc4a1b82345b9d4e2258cd54d89b4f9/modules/anonify-enclave/src/group_key.rs#L11-L17
* テスト時、key-vaultサーバのソケット closeできていない説 * test attribute有無の場合分けを統一 listenerからfdとって、`libc::shutdown`を実装 https://scrapbox.io/layerx/Graceful_exit_TcpListener.incoming()
一度key-vaultにバックアップしてもkey-vaultサーバが壊れるリスクに備え、定期的にバックアップする機能を実装する
QUOTE生成のAPIを_ex系に移行 
* `get_state`などで状態データを取得するとき、TEEノード側に対して秘匿化する必要がある * クライアントはユーザephemeral暗号鍵ペアを生成 * リクエスト時にEnclave暗号鍵でユーザephemeral暗号鍵を暗号化してリクエスト送信 * Enclave内でのみEnclave復号鍵で復号可能 * 状態データをenclave内でユーザephemeral暗号鍵で暗号化してレスポンス * ユーザはephemeral復号鍵で復号し状態データを得る
enclave生成時のlaunch_token利用の廃止(deprecated) https://github.com/LayerXcom/anonify/blob/9423a26ca79c83e89ccf74faed3f124e642f0dca/frame/host/src/init_enclave.rs#L27-L37
https://github.com/LayerXcom/anonify/blob/89127bb8ed4f5878f32a1e8217e767bad60c7faf/frame/mra-tls/src/key.rs#L208-L223
暗号ライブラリの変更やマルチスレッド化などパフォーマンスに影響出そうな部分のアップデートのために状態更新のベンチマークを取得し、CIで計測 https://github.com/LayerXcom/anonify/blob/57fa5e70eea1dc2083ce49a76955498cb71f2c3b/modules/anonify-eth-driver/src/eth/event_watcher.rs#L52-L58 https://knqyf263.hatenablog.com/entry/2020/01/14/063941
https://github.com/RustCrypto/signatures which is pure rust and compatible with no-std env.