Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
authproof-sdk — AI 에이전트를 위한 암호학적으로 서명된 위임 영수증. AI가 할 수 있는 것과 할 수 없는 것을 정확히 정의합니다 — 서명 가능, 검증 가능, 변조 방지. | Kitploit
도구/GitHubGitHub/commonguy25/authproof-sdk
Authentication & AuthorizationCryptographyIdentity & Access Management (IAM)Supply Chain SecurityAPI SecurityAI Security
GitHubcommonguy25/authproof-sdk

authproof-sdk

AI 에이전트를 위한 암호학적으로 서명된 위임 영수증. AI가 할 수 있는 것과 할 수 없는 것을 정확히 정의합니다 — 서명 가능, 검증 가능, 변조 방지.

저장소 보기
662개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

AuthProof SDK

AuthProof는 에이전틱 AI를 위한 암호화 기반 위임 프로토콜입니다. 이 분야의 대부분의 프로토콜은 운영자가 정의한 정책에 대해 적용됩니다. 즉, 운영자에게 사용자의 원래 의도를 사후에 확장하거나 재해석할 수 있는 권한을 부여합니다. AuthProof는 다른 신뢰 모델을 기반으로 구축되었습니다. 사용자 자신의 개인 키가 실행을 제어하는 권한 부여 객체에 서명하고, 라이브 모델 상태는 권한 부여 시점과 실행 직전에 모두 검증됩니다. 사용자 서명 권한과 라이브 모델 상태 게이팅의 조합이 구체적인 주장이며, 광범위한 적용 강제 이야기가 아닙니다.

차별점:

  • 사용자가 서명 권한자입니다. 경쟁 프로토콜(AIP, AITH, OAP, SAGA, AgentSpec)은 모두 운영자가 정의한 정책에 대해 적용됩니다. AuthProof에서는 사용자의 개인 키가 직접 권한 부여 객체에 서명합니다. 사용자가 서명한 후에는 운영자가 범위를 확장할 수 없습니다.

  • 2단계 모델 상태 커밋. 모델은 권한 부여 시점에 측정되고 실행 직전에 다시 측정됩니다. 두 시점 사이에 모델이 변경된 경우, 실행 전 검증에서 실행이 차단됩니다.

  • 공급자 업데이트와 악의적 대체 구분. 프로토콜은 모델 상태 변경을 두 가지 범주로 분류합니다. 정당한 공급자 업데이트(PROVIDER_UPDATE_REQUIRES_REAUTH)와 무단 교체(MALICIOUS_MODEL_SUBSTITUTION)입니다. 각각 어떤 구성 요소가 변경되었는지 식별하는 기계 판독 가능한 거부 이유 코드를 생성합니다.

Pre-Execution Verifier

모든 에이전트 작업이 실행되기 전에 실행되는 결정론적 게이트입니다.

PreExecutionVerifier는 에이전트 런타임 외부에 있습니다. 런타임은 검증기가 통과할 때까지 제어권을 얻지 못합니다. 손상되었거나 악의적인 에이전트는 이를 건너뛸 수 없습니다. 런타임이 시작되기 전에 실행됩니다.

중요성

전통적인 권한 부여 검사는 에이전트 런타임 내부에서 이루어집니다. 런타임이 손상되면 해당 검사는 건너뛰거나 순서가 변경되거나 우회될 수 있습니다. PreExecutionVerifier는 권한 부여를 런타임 외부로 완전히 이동하여 이러한 공격 표면을 제거합니다. 에이전트는 여섯 가지 순차적 검사가 모두 먼저 통과된 경우에만 실행됩니다.

Quickstart```js

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 six checks pass

root@kitploit:~
### 6개의 순차 검사 (첫 번째 실패 시 중단)

| # | 검사 | 차단 조건 |
|---|-------|-------------|
| 1 | 영수증 서명 | ECDSA P-256 서명이 유효하지 않거나 영수증이 변조된 경우 |
| 2 | 취소 | `RevocationRegistry`를 통해 영수증이 취소된 경우 |
| 3 | 시간 창 | 영수증이 만료되었거나 아직 유효하지 않은 경우 (로그 타임스탬프 오라클 기준, 클라이언트 시계 아님) |
| 4 | 범위 | 작업이 `ScopeSchema.allowedActions`에 없거나 텍스트 기반 범위 매칭 실패 |
| 5 | 연산자 지침 | 현재 지침이 발행 시 영수증에 고정된 해시와 일치하지 않음 |
| 6 | 프로그램 해시 | 제공된 `programHash`가 커밋된 `executes` 해시와 일치하지 않음 (코드 대체 방지) |

모든 검사 결과(통과 또는 실패)는 검증자의 자체 키로 서명된 불변의 `ActionLog`에 자동으로 기록됩니다.

### 미들웨어 통합

일반적인 프레임워크를 위한 드롭인 래퍼입니다. 각 래퍼는 래핑된 코드가 실행되기 전에 모든 호출을 `PreExecutionVerifier`를 통해 게이트합니다.

- **[LangChain](https://github.com/commonguy25/authproof-sdk/blob/main/src/middleware/langchain.js)** — `invoke()` 메서드가 있는 모든 에이전트를 래핑합니다.
- **[Express/HTTP](https://github.com/commonguy25/authproof-sdk/blob/main/src/middleware/express.js)** — 모든 Express 호환 프레임워크용 요청 미들웨어
- **[Generic function wrapper](https://github.com/commonguy25/authproof-sdk/blob/main/src/middleware/generic.js)** — 모든 비동기 함수를 래핑```js
// 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 })

문제

기존의 모든 IETF 에이전트 신원 프레임워크 — AIP, draft-klrc-aiagent-auth, WIMSE — 는 서비스-에이전트 신뢰를 다룹니다: 하위 서비스가 에이전트가 호출할 권한이 있는지 확인하는 방법입니다. 이들 중 어느 것도 사용자-운영자 신뢰를 다루지 않습니다.

현재 에이전트 시스템의 위임 체인은 다음과 같습니다:``` User → Operator → Agent → Services

root@kitploit:~
사용자가 운영자에게 지시합니다. 운영자는 에이전트에게 지시합니다. 그러나 위임 시점에 사용자의 원래 의도에 대한 암호학적 기록은 존재하지 않습니다. 운영자는 사용자의 지시가 에이전트에 도달하기 전에 이를 확장, 왜곡 또는 생략할 수 있는 무제한 권한을 가진 신뢰할 수 있는 제3자가 됩니다.

결과는 다음과 같습니다:

- 사용자는 자신이 승인한 내용을 증명할 수 없습니다.
- 규제 기관은 감사 추적을 할 수 없습니다.
- 법원은 증거 체인을 가질 수 없습니다.
- 에이전트는 합법적인 운영자 지시와 손상되거나 변조된 지시를 구분할 수 없습니다.

AuthProof가 이 격차를 메웁니다.

---

## 핵심 원시 요소(Primitive): 위임 영수증(Delegation Receipt)

**위임 영수증**은 에이전트 작업이 시작되기 전에 분산형 추가 전용 로그(append-only log)에 고정된 서명된 권한 부여 객체입니다. 다음 네 가지 필수 필드를 포함합니다.

### 범위(Scope)

허용된 작업의 명시적 허용 목록입니다. 나열되지 않은 모든 것은 기본적으로 거부됩니다. 자연어가 아닌 구조화된 형식으로 표현됩니다. 작업 클래스:

| 클래스 | 설명 |
|---|---|
| `reads` | 지정된 리소스에 대한 읽기 액세스 |
| `writes` | 지정된 리소스에 대한 쓰기 액세스 |
| `deletes` | 지정된 리소스 삭제 |
| `executes` | **정적 기능 서명 해시(static capability signature hash)**로 참조되는 특정 프로그램 실행 |

`executes`는 가장 위험한 클래스입니다. 이름, URI 또는 설명이 아닌 Safescript 프로그램의 정적 기능 DAG(Static Capability DAG)의 암호화 해시를 참조해야 합니다. 해시가 일치하지 않으면 실행이 불가능합니다.

### 경계(Boundaries)

어떠한 상황에서도 운영자 지시에 의해 재정의될 수 없는 명시적 금지 사항입니다. 사용자가 정의한 하드 리미트(Hard Limit)로, 이후의 운영자 지시에도 그대로 유지됩니다.

### 시간 창(Time Window)

권한 부여의 유효 기간입니다. **로그 타임스탬프**가 시간 오라클(Time Oracle)입니다. 클라이언트 시계는 시간 검증에서 명시적으로 제외됩니다.

### 운영자 지시 해시(Operator Instruction Hash)

위임 시점에 운영자가 명시한 지시의 암호화 해시입니다. 운영자가 이후에 에이전트에게 다르게 지시하는 경우, 추가적인 신뢰 가정 없이 로그에서 차이점을 감지할 수 있습니다.

사용자는 **WebAuthn/FIDO2를 통해 기기 보안 엔클레이브(Device Secure Enclave)**를 사용하여 개인 키로 이 객체에 서명합니다. 서명은 에이전트 작업 전에 로그에 게시됩니다. 이후의 모든 에이전트 작업은 영수증 해시를 참조합니다. 범위를 벗어난 작업은 암호학적으로 유효하지 않습니다.

---

## 신뢰 스택 아키텍처(Trust Stack Architecture)

세 가지 프로토콜 계층이 세 가지 신뢰할 수 있는 제3자를 제거합니다.

### 계층 1 — 서명된 기능 매니페스트(Signed Capability Manifest) *(레지스트리(Registry)에 대한 신뢰 제거)*

현재 MCP 생태계에서는 도구 서버의 설명이 실제 동작과 일치한다는 암호학적 증명이 없습니다. 운영자는 임의의 스키마를 제시할 수 있습니다.

해결책: 사용자 권한 부여 전에 도구 서버가 **암호학적으로 서명된 기능 매니페스트**를 게시합니다. 위임 영수증의 `scope` 필드는 운영자가 자체 보고한 스키마가 아닌 **이 매니페스트의 해시**를 참조합니다. 서버 동작과 매니페스트 간의 차이는 로그 계층에서 감지 가능합니다.

### 계층 2 — 위임 영수증(Delegation Receipt) *(운영자(Operator)에 대한 신뢰 제거)*

사용자의 원래 의도는 운영자 지시가 에이전트에 도달하기 전에 불변하게 기록됩니다. 운영자의 이탈은 증명 가능합니다.

### 계층 3 — Safescript 실행(Safescript Execution) *(코드(Code)에 대한 신뢰 제거)*

[Safescript](https://github.com/safescript)는 AI 에이전트 실행을 위한 오픈소스 샌드박스 언어입니다. 정적 DAG 구조 덕분에 모든 프로그램의 전체 기능 서명은 실행 전에 계산 가능합니다. 동적 디스패치(Dynamic Dispatch)나 런타임 기능 확장이 없습니다.

`executes` 범위 클래스는 특정 Safescript 기능 서명 해시를 참조합니다. 운영자가 제공한 프로그램이 커밋된 해시와 일치하지 않으면 실행이 차단됩니다. 위임 후 에이전트가 다른 프로그램으로 대체될 수 없습니다.

---

## 빠른 시작(Quick Start)```js
import { AuthProof, Scope, KeyCustody } from 'authproof-sdk';

// Initialize with hardware-backed key custody (recommended)
const authproof = new AuthProof({
  custody: KeyCustody.HARDWARE, // WebAuthn/FIDO2 via device secure enclave
  log: 'https://log.authproof.dev',
});

// Define permitted operations — explicit allowlist, deny-by-default
const scope = new Scope()
  .allow('reads',  ['resource://calendar/events', 'resource://email/inbox'])
  .allow('writes', ['resource://calendar/events'])
  .deny('deletes', '*')
  .execute('sha256:a3f1c9d8...', { program: 'scheduler-v1.sg' }); // Safescript hash

// Hard limits that survive any operator instruction
const boundaries = {
  never: ['external-network', 'credential-store', 'payment-methods'],
};

// Issue the Delegation Receipt — anchored to log before any agent action
const receipt = await authproof.delegate({
  scope,
  boundaries,
  window: { duration: '8h' },           // validated against log timestamp
  operatorInstructions: instructionText, // hashed and committed
});

// receipt.id    — unique receipt identifier
// receipt.hash  — reference in every agent action
// receipt.log   — append-only log anchor

// Agent-side: validate an action against the receipt
const check = await authproof.validate({
  receiptHash: receipt.hash,
  action: { class: 'writes', resource: 'resource://calendar/events' },
});

if (!check.authorized) {
  // Out-of-scope action: surface a micro-receipt request to the user
  const microReceipt = await authproof.requestMicroReceipt({
    action: check.requestedAction,
    parent: receipt.hash,
  });
}

동적 권한 부여: 마이크로 영수증

원래 위임 영수증에 포함되지 않은 도구 호출의 경우, 에이전트는 조용히 진행할 수 없습니다. 프로토콜은 다음을 요구합니다:

  1. 에이전트가 범위를 벗어난 기능 요구 사항을 식별합니다.
  2. 에이전트는 특정 작업을 설명하는 기능 요청을 사용자에게 표시합니다.
  3. 사용자는 해당 작업만을 포괄하는 마이크로 영수증에 서명합니다.
  4. 에이전트는 마이크로 영수증 해시를 참조하여 진행합니다.

알 수 없는 작업에는 명시적인 새로운 사용자 승인이 필요합니다. 종속성 해결은 동일한 규칙을 따릅니다 — 종속성은 위임 시점에 커밋된 종속성 매니페스트의 해시와 비교하여 확인됩니다. 예상치 못한 종속성은 범위 위반입니다.


동시 에이전트

각 위임 이벤트는 고유한 영수증 ID를 가집니다. 동시 에이전트는 각각 자신의 영수증 해시를 참조합니다. 이들은 에이전트 정체성이 아닌 영수증으로 구별됩니다.


키 관리

모델설명권장

하드웨어 보관이 권장되는 기본값입니다. 개인 키는 보안 엔클레이브를 절대 떠나지 않습니다. 서명은 디바이스 생체 인식 또는 PIN으로 보호됩니다.


작업 로그

위임 영수증은 AI 에이전트가 무엇을 할 권한이 있는지 정의합니다. 작업 로그는 실제로 수행한 작업을 기록하며, 모든 이탈을 즉시 확인 가능하게 합니다.

에이전트가 수행하는 모든 작업은 활성 영수증에 연결된 서명되고 타임스탬프가 찍힌 항목을 생성합니다. 항목들은 변조 방지 체인을 형성합니다. 각 항목은 이전 항목의 SHA-256 해시를 포함하므로, 신뢰할 수 있는 제3자 없이도 사후 수정이 감지 가능합니다. diff() 메서드는 감사 기본 요소입니다. 이는 영수증의 승인된 범위를 기록된 모든 작업과 비교하여 모든 이탈을 반환합니다.```js import AuthProof, { ActionLog } from 'authproof-sdk';

// 1. Issue a delegation receipt as normal const { privateKey, publicJwk } = await AuthProof.generateKey();

const { receipt, receiptId } = await AuthProof.create({ scope: 'Search the web for competitor pricing. Read calendar events.', boundaries: 'Do not send emails. Do not make purchases.', instructions: 'Cite sources. Keep under 500 words.', ttlHours: 4, privateKey, publicJwk, });

// 2. Initialize the action log with the agent's signing key const log = new ActionLog(); await log.init({ privateKey, publicJwk });

// Register the receipt so diff() knows what was authorized log.registerReceipt(receiptId, receipt);

// 3. Record each action the agent takes const e1 = await log.record(receiptId, { operation: 'Search competitor pricing', resource: 'web/search', parameters: { query: 'rival.com pricing 2024' }, });

const e2 = await log.record(receiptId, { operation: 'Read calendar events', resource: 'calendar/events', parameters: { range: 'this_week' }, });

// 4. Verify an individual entry (signature + chain integrity) const check = await log.verify(e1.entryId); // { valid: true, reason: 'Signature and chain integrity verified' }

// 5. Diff: authorized scope vs. everything that was done const report = log.diff(receiptId); // { // clean: true, // totalEntries: 2, // compliant: [{ entry: {...}, reason: '"Search competitor pricing" matches authorized scope' }, ...], // violations: [], // }

// A scope violation surfaces immediately await log.record(receiptId, { operation: 'Send email', resource: 'email/outbox' }); const auditReport = log.diff(receiptId); // auditReport.violations[0].reason → // '"Send email" outside authorized scope (0% scope match, 92% boundary overlap)'

root@kitploit:~
### Action Log API

| Method | Description |
|---|---|
| `new ActionLog()` | 새 로그 인스턴스를 생성합니다. 상태는 인메모리입니다. |
| `log.init({ privateKey, publicJwk })` | 에이전트의 ECDSA P-256 키로 초기화합니다. `record()` 전에 필요합니다. |
| `log.registerReceipt(receiptHash, receipt)` | 범위 비교를 위한 영수증을 등록합니다. `diff()` 전에 필요합니다. |
| `log.record(receiptHash, action)` | 서명되고 체인으로 연결된 항목을 추가합니다. 봉인된 항목을 반환합니다. |
| `log.verify(entryId)` | 하나의 항목의 서명과 체인 위치를 확인합니다. `{ valid, reason }`을 반환합니다. |
| `log.getEntries(receiptHash)` | 특정 영수증에 대한 모든 항목을 시간순으로 반환합니다. |
| `log.diff(receiptHash)` | 모든 항목을 영수증의 범위와 비교합니다. `{ compliant, violations, clean }`을 반환합니다. |

### 프로덕션 경고

v1의 타임스탬프는 클라이언트 시계를 사용합니다. 타임스탬프가 독립적으로 검증 가능해야 하는 규정 준수 또는 법적 맥락의 경우, 프로덕션에 배포하기 전에 RFC 3161 신뢰 타임스탬프 기관으로 대체하십시오.

### 중요

항상 명시적인 `allowedActions` 배열을 사용하여 범위를 정의하십시오. 텍스트 기반 범위 매칭은 개발 전용으로 제공되며 프로덕션이나 규정 준수 컨텍스트에는 적합하지 않습니다.

---

## 기밀 배포

하드웨어 인증 신뢰 실행 환경(TEE) 내에서 AuthProof 에이전트를 실행합니다. `ConfidentialRuntime` 클래스는 위임 영수증을 엔클레이브 측정값에 바인딩하므로, 모델 가중치, 검증기 코드 또는 플랫폼의 대체가 실행 전에 감지 가능합니다.

### 하드웨어 요구 사항

- **Intel TDX** — Intel Ice Lake Xeon 이상 (4세대 Xeon Scalable). Azure DCdsv3-series, GCP C3 Confidential VMs.
- **AMD SEV-SNP** — AMD EPYC 3세대 (Milan) 이상. Azure DCasv5-series, AWS m6a with Nitro Enclaves.

### TEE 측정값 바인딩을 사용한 영수증 생성```javascript
import { AuthProofClient } from 'authproof-sdk';

const client = new AuthProofClient();
const { receipt } = await client.delegate({
  scope: 'Summarize calendar events',
  operatorInstructions: 'Stay within scope.',
  expiresIn: '2h',
  privateKey,
  publicJwk,
  teeConfig: {
    platform:     'intel-tdx',
    verifierHash: verifierCodeHash,   // SHA-256 of your verifier binary
    modelHash:    modelWeightsHash,   // SHA-256 of model weights
  },
});
// receipt.teeMeasurement.expectedMrenclave is now bound to the receipt

Azure Confidential Computing (Intel TDX)에 배포```javascript

import { ConfidentialRuntime } from 'authproof-sdk';

// Generate deployment configuration const config = ConfidentialRuntime.azureTDXConfig({ receiptHash, verifierHash, modelHash, region: 'eastus', }); // config.vmSize === 'Standard_DC4ds_v3' // config.attestationEndpoint === 'https://sharedeus.eus.attest.azure.net' // config.receiptBinding binds the receipt to the VM measurement

// At runtime inside the VM: const runtime = new ConfidentialRuntime({ platform: 'intel-tdx', verifier, actionLog, }); const result = await runtime.launch({ receiptHash, agentFn, operatorInstructions, verifierHash, modelHash, teeMeasurement: receipt.teeMeasurement, // mismatch blocks execution });

root@kitploit:~
Azure SKU 요구 사항: `Standard_DC4ds_v3` 또는 DCdsv3 시리즈의 더 큰 규모. 기밀 OS 디스크 암호화를 활성화합니다. 견적 검증을 위해 Microsoft Azure Attestation (MAA) 공유 엔드포인트를 사용합니다.

### AWS Nitro Enclaves에 배포```javascript
const config = ConfidentialRuntime.awsNitroConfig({
  receiptHash,
  verifierHash,
  modelHash,
  region: 'us-east-1',
});
// config.instanceType === 'c6a.xlarge'
// config.enclaveOptions.enabled === true
// config.pcr0 is the combined receipt+verifier+model measurement

AWS 요구 사항: c6a.xlarge 이상이며 --enclave-options Enabled가 설정되어 있어야 합니다. nitro-cli를 사용하여 enclave 이미지를 빌드하고 실행합니다. 증명 문서의 PCR0는 영수증 바인딩이 유효하려면 config.pcr0와 일치해야 합니다.

Kubernetes에 배포```javascript

const manifest = ConfidentialRuntime.kubernetesConfig({ receiptHash, platform: 'intel-tdx', namespace: 'production', }); // manifest is a full K8s List containing: // - Pod with TDX node selector and attestation sidecar // - ServiceAccount with minimal RBAC // - ConfigMap with receipt binding

root@kitploit:~
YAML로 직렬화한 후 `kubectl apply -f`로 적용하십시오. 노드 선택자 `intel.feature.node.kubernetes.io/tdx: "true"`는 Kubernetes용 Intel Device Plugin이 필요합니다.

### eBPF 커널 모듈 — 도움 요청

TEE 시행 계층은 사용자 공간 측면(`ConfidentialRuntime`, `TokenPreparer`)을 통해 완료되었습니다. 최종 시행 단계—eBPF LSM 후크를 통해 모든 시스템 호출에서 서명된 기능 토큰을 검증하는 것—은 기여가 열려 있는 커널 모듈이 필요합니다.

eBPF LSM 경험이 있는 엔지니어(Isovalent, Red Canary 또는 유사한 분들)를 특히 환영합니다. https://github.com/Commonguy25/authproof-sdk/issues에서 이슈나 PR을 열어주세요.

---

## 예제

실행 가능한 두 가지 예제가 `examples/` 디렉토리에 있습니다.

**[`examples/langchain-example.js`](https://github.com/commonguy25/authproof-sdk/blob/main/examples/langchain-example.js)** — 전체 LangChain 통합 경로를 보여줍니다: 키 쌍 생성, 위임 수신 발행, `PreExecutionVerifier` 초기화, 그리고 `authproofMiddleware`로 모든 에이전트를 감싸서 `invoke()` 호출이 에이전트 런타임 제어 전에 게이트되도록 합니다. 즉시 실행할 수 있는 모의 에이전트와 실제 `AgentExecutor`를 위한 정확한 코드 패턴을 포함합니다. `npm run example:langchain`으로 실행하십시오.

**[`examples/webauthn-example.html`](https://github.com/commonguy25/authproof-sdk/blob/main/examples/webauthn-example.html)** — 완전한 위임 흐름을 보여주는 자체 포함된 3-카드 브라우저 데모입니다. 카드 1에서는 범위, 경계 및 운영자 지침을 정의하고 로컬 키로 수신에 서명할 수 있습니다(실제 WebAuthn의 경우 `navigator.credentials`로 교체). 카드 2에서는 수신 ID, 만료 시간, 시스템 프롬프트 및 원시 JSON을 표시합니다. 카드 3에서는 제안된 작업을 입력하고 수신에 대해 실시간으로 검증하여 각 검사 결과를 보여줍니다. 브라우저에서 직접 열 수 있으며 빌드 단계가 필요하지 않습니다.

---

## 설치```bash
npm install authproof-sdk
  • npm: https://www.npmjs.com/package/authproof-sdk
  • GitHub: https://github.com/Commonguy25/authproof-sdk
  • 프로토콜 명세: WHITEPAPER.md
도구 다운로드
하드웨어
디바이스 보안 엔클레이브를 통한 WebAuthn/FIDO2. 개인 키는 하드웨어를 절대 떠나지 않습니다.
예 — 기본값
위임됨신뢰할 수 있는 키 관리자가 사용자를 대신하여 키를 보유합니다.FIDO2를 지원하지 않는 환경
자가 보관사용자가 자신의 개인 키를 보유하고 관리합니다.고급 사용자, 에어갭 워크플로우