
إيصالات تفويض موقعة تشفيرياً للوكلاء الذكاء الاصطناعي. حدد بالضبط ما يمكن للذكاء الاصطناعي فعله وما لا يمكنه فعله — موقعة، قابلة للتحقق، مقاومة للتلاعب.
AuthProof هي طبقة تدقيق وإسناد لوكلاء الذكاء الاصطناعي. تتيح لك إثبات ما أذن به المستخدم قبل أن يتصرف الوكيل، وتسجّل ما فعله الوكيل فعليًا مقابل ذلك التفويض.
الآلية بسيطة. يوقّع المستخدم إيصال تفويض بمفتاحه الخاص. يحمل الإيصال النطاق والحدود وتعليمات المشغّل (مُجزّأة) ونافذة زمنية. يتحقق مُدقّق ما قبل التنفيذ من كل إجراء مقترح مقابل الإيصال، ويسجّل سجل إجراءات للإضافة فقط ما تم تنفيذه. النتيجة هي دليل: ما تم التفويض به، مقارنًا بما حدث.
هذا ليس ضابطًا أمنيًا ضد مشغّل خبيث. يعمل المُدقّق في نفس العملية التي يعمل فيها الوكيل، ويمكن لمشغّل غير أمين ببساطة ألا يستدعيه. لا يمكن لأي خاصية تشفيرية إصلاح ذلك من داخل نفس بيئة التشغيل. يثبت 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
| # | الفحص | يُحظر عندما |
|---|---|---|
| 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 في استدعاء واحد، ويتم الموافقة تلقائيًا على مسودة النطاق المرصودة بالكامل دون مراجعة بشرية. للحصول على لحظة تفويض بشري حقيقية، مرِّر خطاف reviewDraft (الموافقة أو التعديل أو الرفض للمسودة قبل الإصدار) أو شغِّل الخطوات بشكل منفصل مع approve() صريح.
أغلفة جاهزة للأطر الشائعة. كل غلاف يُمرِّر كل استدعاء عبر PreExecutionVerifier قبل تنفيذ الكود المُغلَّف.
invoke()// 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 لك.