Skip to content

feat(security): commission で DAC / PAI の失効照合(任意の revocation set) - #27

Merged
nogu3 merged 2 commits into
mainfrom
feat/revocation-set
Nov 14, 2026
Merged

nogu3 merged 2 commits into
mainfrom
feat/revocation-set

Conversation

@nogu3

@nogu3 nogu3 commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner

変更

mat commission に、任意の失効照合を追加する。

  • 入力は connectedhomeip の credentials/generate_revocation_set.py が出す JSON(revocation set)。mat は DCL にも CRL 配布元にもアクセスしない。
  • 解決順は PAA trust store と同じ: MAT_REVOCATION_SET > <store>/revocation-set.json。どちらも無ければ従来どおり照合なし。
  • DAC / PAI が失効していれば commissioning を止める(device_rejected、exit 4)。
  • 指定されたファイルが読めない・不正なら、機器に触る前に other で止める(照合なしへ落とさない)。
  • ファイルの mtime が 30 日より古ければ warn して続行。
  • 公開 API: X509Cert.serial、AttestationError::{Revoked, RevocationSet}、CommissionParams / BleThreadParams / CommissionRequest に revocation_set(いずれも semver 上は break、minor 方針)。

確認

  • task check 合格
  • matv 相手にローカルで実 mat commission を 3 脚: 壊れたファイル → other(機器に触らず即時)/ PAI を失効させた set → device_rejected(pai certificate is revoked)/ 空の set → success
  • SDK 同梱のサンプル revocation set(7 エントリ)を読み込めることを確認
  • 本番 DCL から generate_revocation_set.py from-dcl --use-main-net-http で生成した実ファイル(97 エントリ、失効シリアル 409 件)を読み込めることを確認
  • 実機(Nanoleaf NL68、Thread)で on-network commission。本番 fabric から open-window し、jarvis 上の使い捨て fabric で 2 つ目の管理者として commission、各回の後に unpair:
    • 実ファイル → success。debug ログで DAC の発行者(Nanoleaf PAI)のエントリに当たり(issuer_covered=true)、失効なし。PAI の発行者(Nanoleaf PAA)は DCL に失効点が無い(issuer_covered=false)
    • 実ファイルにこの機器の DAC シリアルを足した set → device_rejected(dac certificate is revoked)。AddNOC 前に止まるので機器に fabric は残らない
    • 実施後、機器の fabric 数は 1 のまま・本番の購読 20/20
  • BLE 経路(BleThreadParams)は値を渡すだけで、実機では未確認

🤖 Generated with Claude Code

nogu3 and others added 2 commits November 10, 2026 21:00
connectedhomeip の generate_revocation_set.py が出す JSON を
MAT_REVOCATION_SET または <store>/revocation-set.json で渡すと、attestation の
チェーン検証後に DAC / PAI を照合し、失効していれば commissioning を止める
(device_rejected)。どちらも無ければ従来どおり照合なし。

- mat は DCL にも CRL 配布元にもアクセスしない(ネットワーク・状態なし)
- 指定されたファイルが読めない・不正なら、機器に触る前に other で止める
- mtime が 30 日より古ければ warn して続行
- X509Cert に serial を追加

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
実機で「発行者のエントリに当たったうえで失効なし」なのか「どのエントリにも
当たらず素通り」なのかを区別できるよう、照合した証明書ごとに serial /
issuer_key_id / issuer_covered / revoked を debug で出す。
RevocationSet::covers_issuer を追加(判定には使わない、表示用)。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@nogu3
nogu3 merged commit 3243e7b into main Nov 14, 2026
1 check passed
@nogu3
nogu3 deleted the feat/revocation-set branch November 14, 2026 01:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant