私たちは、AIエージェントのシステムに「認可(authorization)」を追加する作業を進めています。
最初は、解決したように感じました:
- すべてのアクションが評価される
- 簽名付きのALLOW / DENYを取得できる
- 実行前に署名を検証する
見た感じ、とても堅牢ですよね?
そうではありませんでした。
私たちは、ほとんどすぐにいくつかの問題に直面しました:
- 承認が、実際の実行に結び付いていなかった
同じ「ALLOW」を、少しだけ異なるアクションに再利用できてしまいました。
- 状態のバインディングがなかった
状態 = X のときに承認が発行される
状態 = Y のときに実行が行われる
それでも検証は通ってしまった。
- オーディエンスのバインディングがなかった
サービスAに対する承認を、サービスBに対してリプレイできてしまいました。
- リプレイが、実際には境界(boundary)で強制されていなかった
ノンスがあっても、強制は実行が行われる場所で起きていませんでした。
つまり、私たちが持っていたのは:
署名された判断
必要だったのは:
検証可能な実行契約(execution contract)
違いは微妙ですが、決定的です:
- 「承認されたか?」 -> 監査(audit)の問い
- 「実行できるか?」 -> 強制(enforcement)の問い
ほとんどのシステムは最初の問いに答えます。
実際に2つ目を強制するシステムは、ほとんどありません。
みんなはこれをどう考えているのでしょう。
承認を次のどれに結び付けていますか:
- 正確な意図(exact intent)?
- 実行状態(execution state)?
- 実行ターゲット(execution target)?
それとも、単に署名を検証していて、うまく噛み合うことを期待しているだけでしょうか?
[link] [comments]




