Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
authproof-sdk — AIエージェント向けの暗号署名付き委任レシート。AIが実行できること、できないことを正確に定義 — 署名済み、検証可能、改ざん防止。 | Kitploit
ツール/GitHubGitHub/commonguy25/authproof-sdk
認証と認可暗号化アイデンティティ&アクセス管理 (IAM)サプライチェーンセキュリティAPIセキュリティAIセキュリティ
GitHubcommonguy25/authproof-sdk

authproof-sdk

AIエージェント向けの暗号署名付き委任レシート。AIが実行できること、できないことを正確に定義 — 署名済み、検証可能、改ざん防止。

リポジトリを見る
62912日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

AuthProof SDK

AuthProofは、AIエージェント向けの監査および帰属レイヤーです。エージェントが行動する前にユーザーが何を承認したかを証明し、その承認に対してエージェントが実際に行ったことを記録します。

仕組みはシンプルです。ユーザーは自身の秘密鍵で委任レシートに署名します。レシートにはスコープ、境界、オペレーター指示(ハッシュ化)、および時間枠が含まれます。実行前検証器が提案された各アクションをレシートと照合し、追記専用のアクションログが実行された内容を記録します。その結果が証拠となります。何が承認され、何が実際に行われたかの差分です。

これは悪意あるオペレーターに対するセキュリティ制御ではありません。検証器はエージェントと同じプロセスで動作し、不正なオペレーターは単にそれを呼び出さないようにできます。同じランタイム内部からこれを修正できる暗号学的特性は存在しません。AuthProofはゲートを実行するデプロイメントに対して承認を証明し、監査者、規制当局、ユーザーに対して事後に検証可能な記録を提供します。

他との違い:

  • ユーザーが署名権限者である。 承認オブジェクトはオペレーター管理のポリシーに書き込まれるのではなく、ユーザーの秘密鍵で署名されます。レシート内の署名済みスコープとプログラムハッシュは、常にオペレーターのログメタデータよりも優先されます。オペレーターメタデータが署名済みレシートと矛盾する場合、ゲートはメタデータに従うのではなくアクションを拒否します。

  • 二段階のモデル状態コミットメント。 モデルは承認時に測定され、実行前に再測定されます。これらの測定値はソフトウェアで計算された自己証明であり、ハードウェアにルートを持ちません。これらは誠実なデプロイメントに対する改ざん証拠であり、敵対的なホストに対する証明ではありません。

  • プロバイダー更新と悪意ある置換の区別。 モデル状態の変化は、正当なプロバイダー更新(PROVIDER_UPDATE_REQUIRES_REAUTH)と不正な差し替え(MALICIOUS_MODEL_SUBSTITUTION)に分類されます。それぞれが、どのコンポーネントが変更されたかを識別する機械可読な拒否理由コードを生成します。

実行前検証器

エージェントのアクションが実行される前に動作するゲート。

PreExecutionVerifier.check() は、提案された各アクションを署名済み委任レシートと照合して検証します。エージェントのプロセス内で、アクションが実行される前にすべてのアクションをこれに通してください。検証器は自身の許可/拒否の決定を監査ログに署名するため、すべての結果が記録の一部となります。

前提として受け入れるべき厳しい事実が一つあります。検証器は同一プロセスです。それは証明を検証しますが、呼び出しを拒否するオペレーターを止めることはできません。コードを実行するオペレーターに対する強制が必要な場所ではなく、証拠が欲しい場所で使用してください。

なぜ重要か

今日のエージェント承認のほとんどは、オペレーターの言葉に依存しています。オペレーターが書いたポリシーを、オペレーターが管理するコードで強制するものです。何か問題が起きたとき、ユーザーが実際に何を承認したかの記録はなく、オペレーターによるその再構成があるだけです。AuthProofはこれを覆します。ユーザーの署名済みレシートは実行に先行し、アクションログはそれに対して実行された内容を記録します。「ユーザーはこれを承認したのか?」という問いは、議論の対象ではなく検証可能なものになります。

クイックスタート

import { PreExecutionVerifier, DelegationLog } from 'authproof-sdk/pre-execution-verifier'
import { RevocationRegistry } from 'authproof-sdk'

// 1. Set up the gate
const delegationLog      = new DelegationLog()
const revocationRegistry = new RevocationRegistry()
await revocationRegistry.init({ privateKey, publicJwk })

const verifier = new PreExecutionVerifier({ delegationLog, revocationRegistry })
await verifier.init({ privateKey: verifierKey, publicJwk: verifierPub })

// 2. Register your delegation receipt
delegationLog.add(receiptHash, receipt)

// 3. Gate every action — before the agent runs
const result = await verifier.check({
  receiptHash,
  action:               { operation: 'read', resource: 'calendar' },
  operatorInstructions: 'Summarize meetings. Stay within scope.',
  programHash,          // optional: prevents code substitution attacks
})

if (!result.allowed) {
  throw new Error(`Blocked: ${result.blockedReason}`)
}
// Agent runtime only reaches here after all thirteen checks pass

13 の連続チェック (最初の失敗で停止)

#チェックブロック条件
1レシート署名ECDSA P-256 署名が無効、またはレシートが改ざんされている
2失効レシートが RevocationRegistry 経由で失効している (カスケード: 失効した祖先はその子孫を拒否する)
3時間枠レシートが期限切れ、またはまだ有効でない (クライアントクロックではなくログタイムスタンプオラクル)
4スコープアクションが ScopeSchema.allowedActions に含まれていない。構造化スキーマがない場合、キーワードマッチングは助言的のみで、決してゲートしない
5オペレータ指示提供された指示が発行時にレシートにロックされたハッシュと一致しない。呼び出し元が省略した場合は警告付きでスキップされる
6プログラムハッシュ提供された programHash がコミットされた executes ハッシュと一致しない (オプション)
7セッションリスク信頼/リスク閾値を超えている (オプション)
8ツールスキーマ整合性toolSchemaHash がレシートと一致しない (オプション)
9モデル状態モデルドリフトが検出された (オプション; ソフトウェア計算による自己申告測定)
10ツール出力ハッシュバインディング出力ハッシュがレシートと一致しない (オプション)
11指示の来歴指示ソースがレシートの trustedSources に含まれていない (オプション)
14親スコープ封じ込めサブレシートが親のスコープを超えている (サブレシートのみ); 任意の祖先を失効させると、チェック時に子が拒否される
15権限状態ドリフトauthorityStateCommitment が発行以降にドリフトしている (オプション)

スロット 12 と 13 は実装されたことがなく、番号の欠番は歴史的なものです。ゲートは最初に失敗したチェックで停止します。ワンタイムユースの消費はすべてのチェックが通過した後に最後に実行されるため、別の理由で拒否されるレシートで消費スロットが無駄に消費されることはありません。

すべてのチェック結果は、合格・不合格を問わず、検証者自身の鍵で署名された不変の ActionLog に自動的に記録されます。

署名済みデータが優先されます。 署名済みレシートのスコープとプログラムハッシュは、常にオペレータログのメタデータよりも優先されます。署名されていない DelegationLog メタデータが署名済みレシートと矛盾する場合、ゲートはアクションを拒否します (SCOPE_METADATA_MISMATCH / PROGRAM_METADATA_MISMATCH)。ログメタデータは、レシートに構造化スコープまたは署名済み executes 値が含まれていない場合にのみフォールバックとなります。

ガイド付き委任は観察によって導かれます。 ScopeDiscovery.guided() と AuthProofClient.delegateGuided() は observe → generateScope → approve → finalize を 1 回の呼び出しで実行し、観察されたドラフトスコープ全体が人間のレビューなしで自動承認されます。真の人間による承認の瞬間を得るには、reviewDraft フックを渡すか (発行前にドラフトを承認、修正、または拒否する)、明示的な approve() を伴う各ステップを個別に実行してください。

ミドルウェア統合

一般的なフレームワーク向けのドロップインラッパー。各ラッパーは、ラップされたコードが実行される前に、すべての呼び出しを PreExecutionVerifier 経由でゲートします。

  • LangChain — invoke() メソッドを持つ任意のエージェントをラップします
  • Express/HTTP — Express 互換の任意のフレームワーク向けリクエストミドルウェア
  • 汎用関数ラッパー — 任意の非同期関数をラップします
// LangChain
import { authproofMiddleware } from 'authproof-sdk/middleware/langchain'
const guardedAgent = authproofMiddleware(agent, { receiptHash, verifier })

// Express
import { authproofMiddleware } from 'authproof-sdk/middleware/express'
app.use(authproofMiddleware({ verifier, getReceiptHash: (req) => req.headers['x-receipt-hash'] }))

// Any function
import { guardFunction } from 'authproof-sdk/middleware/generic'
const guardedExecute = guardFunction(executeAction, { receiptHash, verifier, action })

そうではないもの

AuthProof があなたにとって何を証明するかを判断する前に、これを読んでください。

  • 悪意ある運用者に対する障壁ではない。 検証器はエージェントと同じプロセスで動作します。SDK の中に、不正な運用者がゲートをスキップすることを止めるものは何もありません。AuthProof はゲートを実行するデプロイメントに対する証明であり、実行を拒むデプロイメントを制御するものではありません。
  • ハードウェア認証はない。 TEE およびモデル状態の機能は、ソフトウェアで計算された自己申告の測定値であり、正直なデプロイメントにおける監査と改ざん証跡のためのものです。ハードウェア保証には実際の TEE ハードウェアが必要であり、この SDK では提供されません。
  • 署名は正規化されていない。 JS SDK は挿入順の JSON に署名します。実装間の検証は壊れ、JWS/COSE の正規プロファイルは将来の課題です。Python SDK は部分的な移植であり、ミラーではありません。JavaScript SDK とはワイヤ非互換です(フィールド名、署名エンコーディング、正規化が異なる)。そのため、両者は互いのレシートを検証できません。
  • タイムスタンプは存在確認のみ。 SDK は RFC 3161 トークンのバイト列にエントリダイジェストが含まれていることを確認します。TSA の暗号署名や証明書チェーンは検証しません。完全な RFC 3161 署名検証は対象外です。
  • テキストスコープのマッチングは参考情報にすぎない。 構造化された ScopeSchema がない場合、スコープマッチングは可観測性のために記録されるキーワード重複シグナルです。許可や拒否を行うことはありません。実際のスコープ強制には ScopeSchema が必要です。
  • チェック 5 はスキップできる。 呼び出し元が運用者の主張する指示を提供しない場合、チェック 5 は警告付きでスキップされます。その呼び出しでは運用者のドリフトは検証されません。ドリフト検出が重要な場合は常に operatorInstructions を渡してください。
  • 鍵管理の話はない。 鍵のローテーション、KMS/HSM 統合、侵害時の手順はこの SDK の一部ではありません。
  • レシートノンスはない。 単回使用のセマンティクスには永続的な ConsumptionStore が必要です(Redis アダプタが含まれています)。これがないと、プロセス間のリプレイ検出は保証されません。

問題

エージェントアイデンティティに関する既存の IETF フレームワーク — AIP、draft-klrc-aiagent-auth、WIMSE — はすべて、サービス対エージェントの信頼を扱っています。つまり、下流のサービスがエージェントに呼び出し権限があることをどのように検証するかです。これらのいずれも ユーザー対運用者の信頼 を扱っていません。

現在のエージェントシステムにおける委任チェーンは次のとおりです:

User → Operator → Agent → Services

ユーザーはオペレーターに指示を出す。オペレーターはエージェントに指示を出す。しかし、委任の瞬間にユーザーの元の意図を記録した暗号学的な記録は存在しない。オペレーターは、ユーザーの指示がエージェントに届く前に、それを拡大、歪曲、または省略する無制限の権限を持つ信頼された第三者となる。

その結果:

  • ユーザーは自分が何を承認したかを証明できない。
  • 規制当局には監査証跡がない。
  • 裁判所には証拠の連鎖がない。
  • エージェントは、正当なオペレーターの指示と、侵害されたものや不正なものを区別できない。

AuthProofはこのギャップを埋める。


中核となるプリミティブ: 委任レシート

委任レシートとは、エージェントのアクションが始まる前に、分散型の追記専用ログに固定された署名済みの認可オブジェクトである。これには4つの必須フィールドが含まれる:

スコープ

許可された操作の明示的な許可リスト。リストにないものはすべてデフォルトで拒否される。自然言語ではなく、構造化された形式で表現される。操作クラス:

クラス説明
reads指定されたリソースへの読み取りアクセス
writes指定されたリソースへの書き込みアクセス
deletes指定されたリソースの削除
executes特定のプログラムの実行。その静的ケイパビリティ署名ハッシュによって参照される

executesは最も危険なクラスである。名前、URI、または説明ではなく、Safescriptプログラムの静的ケイパビリティDAGの暗号学的ハッシュを参照しなければならない。ハッシュが一致しなければ実行されない。

境界

いかなる状況下でもオペレーターの指示によって上書きできない明示的な禁止事項。その後のオペレーターの指示を経ても存続する、ユーザー定義のハードリミット。

時間枠

認可の有効期間。ログのタイムスタンプが時間のオラクルであり、クライアントの時計ではない。クライアントの時計は時間検証から明示的に除外される。

オペレーター指示ハッシュ

委任時点におけるオペレーターの表明された指示の暗号学的ハッシュ。オペレーターがその後エージェントに異なる指示を出した場合、その不一致は追加の信頼前提なしにログから検出可能である。

ツールをダウンロード