DAA(Direct Anonymous Attestation) と EPID(Enhanced Privacy ID)


本記事では，ユーザのプライバシを担保しながら，ユーザが利用しているプラットフォーム（パソコンのCPU）の情報について証明をするDAA(Direct Anonymous Attestation)[1]とEPID[2]（Enhanced Privacy ID）について示す．

DAAはFIDOの登録処理に適応するか議論が行われている.一方EPIDはIntel SGX（IntelのCPUがもつセキュリティ機構）に搭載されており，多くのIntelのCPUの上で動作する．

# 背景

インターネット上のサービスを提供する際，ユーザが脆弱なプラットフォーム（パソコン，スマホ）を使っていると，サービスに関する情報がユーザを通して漏洩する可能性がある．

そこで，プラットフォームがサービスに対して,プラットフォーム自体が信頼できる製造元によって製造された証明をすることで解決が図られてきた.

なお，このような製造元に関する証明のことを，Attestationと呼ぶ．
加えて，ベンダにはプラットフォームが不正や故障をした場合など，Attestationには失効する機能がある．

# 問題意識

以下の条件1, 2が揃った場合,複数のサービスに渡るユーザの利用履歴を紐付けられる可能になる場合がある.これはプライバシの侵害になりうる．

**条件1.** ２つのAttestationが同じプラットフォームによって生成されたか判別がつく.
**条件2.** ユーザの利用する複数のサービスが悪意を持って結託する.


# 目的

ユーザのプライバシをまもったまま，プラットフォーム自体が信頼できる製造元によって製造されたことの証明するため，以下の要求a-dを同時に満たす.

**要求a. 偽装不可能性** ベンダによって生成されたプラットフォーム以外は,そのベンダの公開鍵に対応するAttestationを生成できない.
**要求b. 匿名性** プラットフォームが生成した証明から，それを生み出したプラットフォームを追跡できない，
**要求c. リンク不可能性** ２つのAttestationがあった際，それらを生み出したプラットフォームが同じか判別することができない．
**要求d. 失効可能性** ベンダはプラットフォームが有効なAttestationを生成できないようにすることができる．

# DAA: Direct Anonymous Attestation

要求a-dを満たすため，DAA（Direct Anonymous Attestation）と呼ばれ，公開鍵と秘密鍵の関係が1対多の関係になっている電子署名方式が利用される．

![28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162489/ee49e242-b87c-85d4-fddf-cf4f55f946bd.png)

<!--
![25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162489/ffb471d7-8a62-4e69-56a3-e7ba9986015d.png)
-->


ベンダがDAAの秘密鍵を各プラットフォームに乗せ，プラットフォームがDAAを用いた署名（＝Attestation）を生成することで，要求a-dを満たすことができる．

**要求a. 偽装不可能性** ベンダの公開鍵に対応する秘密鍵を持っているのはベンダの生成したプラットフォームだけなので，ベンダによって生成されたプラットフォーム以外は,そのベンダの公開鍵に対応する署名（＝Attestation）を生成できない.
**要求b. 匿名性** DAAではすべての署名（＝Attestation）を同じ公開鍵で検証するため，どの秘密鍵によって生成されたかはわからない．
**要求c. リンク不可能性** ２つの署名（＝Attestation）があった際，それらを生み出したプラットフォームが同じか判別することができない．
**要求d. 失効可能性** ベンダはプラットフォームの秘密鍵から，プラットフォームが有効な署名（＝Attestation）を生成できないようにすることができる．





**しかし，DAAではベンダがプラットフォームの秘密鍵を持たない場合に，プラットフォームを失効することができないという問題があった．**

# EPID: Entel Enhanced Privacy ID

EPIDはベンダがプラットフォームの秘密鍵を持たなくとも，署名から失効できるようにした電子署名方式である．

署名生成の際,失効リストに入っている署名を生成した秘密鍵と,プラットフォームの使おうとしている電子署名が違うことを,証明することで実現している.

![24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162489/a7f2e2ad-d00d-6c2a-377e-6691ef8fb972.png)


# まとめ


#### 背景

インターネット上のサービスを提供する際，ユーザが脆弱なプラットフォーム（パソコン，スマホ）を使っていると，サービスに関する情報がユーザを通して漏洩する可能性がある．

そこで，プラットフォームがサービスに対して,プラットフォーム自体が信頼できる製造元によって製造された証明をすることで解決が図られてきた.

#### 問題意識

Attestationの作り方等の条件によっては,複数のサービスに渡るユーザの利用履歴を紐付けられる可能になる場合がある.

#### 目的

以下を同時満たす.

- **要求a. 偽装不可能性** ベンダによって生成されたプラットフォーム以外は,そのベンダの公開鍵に対応するAttestationを生成できない.
- **要求b. 匿名性** プラットフォームが生成した証明から，それを生み出したプラットフォームを追跡できない，
- **要求c. リンク不可能性** ２つのAttestationがあった際，それらを生み出したプラットフォームが同じか判別することができない．
- **要求d. 失効可能性** ベンダはプラットフォームが有効なAttestationを生成できないようにすることができる．

#### DAA

要求a-dを満たすため，DAA（Direct Anonymous Attestation）と呼ばれ，公開鍵と秘密鍵の関係が1対多の関係になっている電子署名方式が利用される．

#### 課題

DAAではベンダがプラットフォームの秘密鍵を持たない場合に，プラットフォームを失効することができないという問題があった．

#### EPID

EPIDはベンダがプラットフォームの秘密鍵を持たなくとも，署名から失効できるようにした電子署名方式である．

# 参考

[1] FIDO ECDAA Algorithm, "FIDO ECDAA Algorithm", https://fidoalliance.org/specs/fido-v2.0-rd-20180702/fido-ecdaa-algorithm-v2.0-rd-20180702.html （2021/10/11 確認）
[2] Brickell, Ernie, and Jiangtao Li. "Enhanced Privacy ID from Bilinear Pairing." IACR Cryptol. ePrint Arch. 2009 (2009): 95.


---

# 付録
## プライバシが侵害されるAttestation

以下にプライバシが侵害されるAttestationの方式について説明する．

### チャレンジレスポンスを用いた方式

以下の方式では，各サービスに対して同じ公開鍵と証明証を送信することになる．よってサービスが結託した際，それらをもとにユーザの利用履歴を紐付けることができる．


### 手順
#### 1. 準備

ベンダは鍵ペア $PK_{vendor}, SK_{vendor}$ を生成する．

#### 2. 出荷

出荷時に以下の工程で，鍵ペア $PK_{vendor}, SK_{vendor}$ と証明証$CERT_{platform}$を保管する．

1. ベンダはプラットフォーム用の公開鍵暗号の鍵ペア$PK_{platform}, SK_{platform}$を作成する．
2. ベンダはベンダの秘密鍵を用いて，プラットフォームの公開鍵$PK_{platform}$に対する証明書$CERT_{platform}$を作成する．
3. ベンダはプラットフォームの対タンパ領域に，$PK_{platform}, SK_{platform}, CERT_{platform}$を保存する．


#### 3. 証明

サービスに対して，$SK_{platform}, PK_{platform}, CERT_{platform}$を用いて，チャレンジ & レスポンス 認証を行う．