Matter 12 · デバイス認証と証明書 — DAC / PAI / PAA / CD / DCL

Chapter 12

デバイス認証と証明書 — DAC / PAI / PAA / CD / DCL

この章がなぜ必要なのか——ここが製品化で最初にぶつかる壁だから.

「サンプルは動いた。さあ製品にしよう」となったとき、 証明書をどう調達し、どう量産ラインで書き込むかという問題が立ちはだかる。

これは技術の問題であると同時に、調達・契約・製造プロセスの問題でもある。 リードタイムも長い。開発の最後に考え始めると必ず間に合わない。

この章では証明書の構造と、実務での選択肢を整理する。

この章で使う既出の用語(定義は各リンク先). Matter(01 章 3 節)、コミッショニング(01 章 3 節)、セキュリティ(01 章 2 節)、ネットワーク(01 章 3 節)、相互運用性(01 章 2 節)、mDNS(03 章 4 節)、BLE(05 章 1 節)、必要(05 章 5 節)、Info(10 章 5 節)、署名(11 章 2 節)、証明書(11 章 5 節)、追跡(11 章 1 節)

1. なぜデバイス認証が必要なのか

偽造品を排除するためである.

Matter がなければ、誰でも「Matter 対応」を名乗る機器を作れてしまう。 認証を受けていない機器が相互運用性を壊し、 セキュリティの穴を持ち込み、標準全体の信頼を損なう。

Matter は暗号学的に「これは認証を受けた正規品である」ことを検証する。 コミッショニング時にコントローラが確認し、 検証に失敗した機器は(エコシステムの方針により)拒否されるか、警告が出る。

2. 証明書チェーンの構造

PAA(Product Attestation Authority)
  │  ・業界のルート CA
  │  ・DCL(分散台帳)に登録されている
  │  ・CSA 自身、またはメーカーが運営
  ↓
PAI(Product Attestation Intermediate)
  │  ・メーカー(または製品ライン)ごとの中間 CA
  │  ・VID を含む(PID を含むこともある)
  ↓
DAC(Device Attestation Certificate)
     ・個体ごとに 1 枚
     ・VID / PID を含む
     ・対応する秘密鍵が機器の中にある
証明書個数保管場所
PAA業界に数十枚DCL に公開
PAIメーカーごとに数枚機器にも格納(チェーン検証用)
DAC1 個体につき 1 枚機器に格納

すべて X.509 v3、ECDSA P-256、SHA-256 である。

証明書に含まれる Matter 固有の情報

DAC / PAI の Subject には、Matter 独自の属性が入る。

OID の意味内容
matter-vidVendor ID
matter-pidProduct ID

VID は必ず含まれる。PID は PAI では省略可能である。 検証時には、DAC の VID/PID が CD(次節)に記載された VID/PID と一致することが確認される。

3. CD(Certification Declaration)

「この VID/PID の製品は CSA の認証を受けている」という CSA の署名付き宣言。

項目内容
形式CMS(Cryptographic Message Syntax)署名
署名者CSA(の認証鍵)
含まれるものVID、PID のリスト、認証タイプ、証明書 ID、セキュリティレベル、デバイスタイプなど
保管場所機器に格納(DAC と一緒に工場で書き込む)

DAC と CD の役割の違いが分かりにくいので整理する.

DACCD
誰が発行メーカー(の PAI)CSA
何を言っている「この個体は私が作った本物だ」「この製品モデルは認証を通っている」
個体ごとに違うはいいいえ(モデル共通)
秘密鍵とペアはいいいえ(署名の検証だけ)

両方揃って初めて「認証を受けた正規品の個体」が証明される。 DAC だけなら「メーカーが作った」ことしか言えないし、 CD だけなら「そのモデルは認証済み」だが個体の真正性は分からない。

4. DCL(Distributed Compliance Ledger)

CSA が運営する分散台帳。ブロックチェーン技術を使っている。

登録されるもの内容
PAA 証明書信頼すべきルート CA の一覧
モデル情報VID/PID、製品名、メーカー、製品 URL
コンプライアンス情報認証日、認証されたバージョン、ソフトウェアバージョン範囲
OTA 情報ファームウェアの配布 URL(任意)

コントローラは DCL から PAA のリストを取得する. 「どの PAA を信頼するか」を自分で判断せず、DCL を信頼の起点にする。

ただし実運用では、エコシステムが独自にキャッシュ・管理していることが多い。 DCL に登録された直後は、各エコシステムに反映されるまで時間がかかることがある。 認証取得から実際に各社ハブで動くまでのラグは製品計画で考慮すべき点である。

5. 検証のフロー

コミッショニング中、コントローラは次を行う(13 章の一部)。

1. コントローラ → 機器: AttestationRequest(32 byte のノンス)
2. 機器 → コントローラ: AttestationResponse
       ├── attestation_elements(CD、ノンス、タイムスタンプなどを TLV で束ねたもの)
       └── attestation_signature(DAC の秘密鍵で署名)
3. コントローラ → 機器: CertificateChainRequest(DAC)
4. 機器 → コントローラ: DAC
5. コントローラ → 機器: CertificateChainRequest(PAI)
6. 機器 → コントローラ: PAI

コントローラ側の検証:
  a. DAC ← PAI ← PAA のチェーンを検証(PAA は DCL から取得)
  b. attestation_signature を DAC の公開鍵で検証
  c. ノンスが自分の送ったものと一致するか(リプレイ防止)
  d. CD の CSA 署名を検証
  e. CD の VID/PID と DAC の VID/PID が一致するか
  f. Basic Information の VID/PID とも一致するか

ノンスが要る理由. ノンスがなければ、正規品から一度取った署名を偽造品が使い回せる。 毎回違うノンスに署名させることで、鍵を実際に持っていることを証明させる。

e と f の照合が偽造対策の要である. DAC を他社製品から流用しても、CD や Basic Information の VID/PID と食い違えば弾かれる。

6. 証明書の調達 — 実務の選択肢

ここが製品化の分岐点である。

(a) CSA の PAA を使う(多くのメーカーの選択)

CSA の PAA
 └── 自社の PAI(CSA から発行してもらう、または CSA 認定の PKI ベンダー経由)
      └── DAC(自社または委託先が個体ごとに発行)
利点欠点
PAA を自分で運営しなくてよい発行プロセスに時間がかかる
DCL への登録が確実外部への依存

(b) 自社 PAA を運営する

大手メーカーが自社ルートを DCL に登録する方式。

利点欠点
発行を完全に自社で制御PKI の運営責任を全部負う
大量生産で有利ルート鍵の管理(HSM 必須)

(c) PKI ベンダーに委託

証明書サービスを提供するベンダー(半導体メーカー系、セキュリティベンダー系)を使う。

利点欠点
鍵の生成・保管・注入まで一括コスト
セキュアエレメントとセットで提供されることもベンダーロックイン

半導体メーカーの提供するサービスが有力な選択肢である. 一部の SoC ベンダーは、チップに DAC を事前注入して出荷するサービスを提供している。 これを使えば、量産ラインでの鍵注入設備が不要になる。

ただし VID は自社のものを使う必要があるので、 事前に CSA から VID を取得しておく(22 章)。

7. 量産ラインでの書き込み

DAC・PAI・CD・鍵を、個体ごとに製造時に書き込む必要がある。

書き込む内容(Factory Data)

項目個体ごとに違うか
DAC 証明書○
DAC 秘密鍵○
PAI 証明書×(製品共通)
CD×(製品共通)
Discriminator○(ランダム推奨)
SPAKE2+ 検証子(w0, L)○
SPAKE2+ の salt / iteration count○(salt は個体ごと)
VID / PID×
シリアル番号 / UniqueID○
Rotating Device ID の鍵○

課題

課題内容
鍵の生成場所機器内で生成するか、外で作って注入するか
注入の秘匿製造ラインのネットワークで鍵が流れる
委託製造EMS に鍵を渡すことの是非
速度1 個あたりの書き込み時間 × 生産数
トレーサビリティどの個体にどの証明書を入れたかの記録

最も安全なのは「機器内で鍵を生成し、公開鍵だけを外に出して CSR で署名してもらう」方式である. 秘密鍵が一度もチップの外に出ない。 セキュアエレメントを使えばこれが自然に実現できる。

ただし製造ラインがオンラインで CA と通信する必要があるため、 工場のネットワーク設計が絡む。

オフラインで事前生成した鍵を注入する方式の方が製造は簡単だが、 鍵の受け渡し経路をどう守るかという問題が残る。 どちらを取るかは、製品のセキュリティ要件とコストで決める。

8. 開発用のテスト証明書

開発中は、SDK に含まれるテスト用の証明書を使う。

項目値
テスト VID0xFFF1〜0xFFF4
テスト PID0x8000 番台など
テスト PAASDK に同梱
デフォルト passcode20202021
デフォルト discriminator3840
# chip-tool でテスト PAA を信頼する(開発時)
chip-tool pairing onnetwork 1 20202021 --paa-trust-store-path ./credentials/development/paa-root-certs

これを製品に載せてはいけない. テスト VID の機器は、各エコシステムから拒否されるか、 「認証されていない機器」として警告付きで扱われる。

しかも全開発者が同じ鍵を使っているので、セキュリティは皆無である。

量産ビルドとテストビルドを、ビルドシステムのレベルで確実に分けること。 「うっかりテスト証明書で量産した」という事故は起こりうる。

9. Rotating Device Identifier

機器を識別しつつ、追跡を防ぐための仕組み。

RDI = 上位バイト(カウンタ)+ SHA-256(カウンタ ‖ 一意な機器情報) の一部

なぜ必要か. 常に同じ ID を BLE や mDNS で広告していると、 店舗や公共の場でその機器(≒持ち主)を追跡できてしまう。 スマートフォンの MAC アドレスランダム化と同じ発想である。

10. 落とし穴

落とし穴内容・対処
証明書の調達を最後に考えるリードタイムが長い。開発初期に着手する
テスト証明書で量産ビルドを分ける。CI でチェックする
全個体で同じ DAC1 個の解析で全製品が偽造可能になる
DAC 秘密鍵を平文フラッシュに置くSE か暗号化領域を使う
CD の VID/PID と DAC が不一致検証で弾かれる。発行時に照合する
Basic Information の VID/PID が不一致同上
証明書の有効期限Matter の運用証明書は無期限(9999-12-31)とすることが多い。DAC も慎重に設計
フラッシュ容量の見積り漏れ証明書は数百バイト〜。チェーン全部で 1〜2 KB 程度
DCL 登録の遅れ認証取得後、各エコシステムに反映されるまでのラグを見込む

有効期限は要注意である. 家電は 10 年使われる。証明書が 5 年で切れたら、その時点で機器が使えなくなる可能性がある。 Matter の運用証明書では「無期限」を表す特別な値を使うのが一般的である。 DAC の有効期限をどう設定するかは、製品寿命と合わせて設計すること。

11. まとめ