AI Security

معماری اعتماد صفر برای عامل‌های هوش مصنوعی: احراز هویت پیوسته در محیط‌های پویا

ظهور عامل‌های مبتنی بر مدل‌های زبانی بزرگ (LLM) کلاس جدیدی از تهدیدات امنیتی را وارد کرده است. برخلاف برنامه‌های ایستا، عامل‌های هوش مصنوعی غیرقطعی هستند، قادر به زنجیره‌بندی چندین اقدام و اغلب از طریق API با ابزارهای خارجی تعامل می‌کنند. مدل‌های امنیتی محیطی سنتی در اینجا شکست می‌خورند زیرا یک عامل می‌تواند از طریق تزریق پرامپت دستکاری شود تا اقدامات غیرمجاز را اجرا کند، حتی اگر احراز هویت اولیه را عبور کرده باشد. برای مقابله با این مسئله، باید از معماری اعتماد صفر (ZTA) استفاده کنیم که به‌طور خاص برای جریان‌های کاری عامل‌محور طراحی شده است.

منظر تهدید: چرا امنیت محیطی برای عامل‌ها شکست می‌خورد

در یک برنامه وب استاندارد، اگر یک کاربر احراز هویت شود، یک توکن نشست به او اعطا می‌شود. این توکن تا پایان نشست معتبر باقی می‌ماند. با این حال، یک عامل هوش مصنوعی در یک حلقه عمل می‌کند: فکر → اقدام → مشاهده. در هر نقطه از این حلقه، نیت عامل می‌تواند دزدیده شود. اگر عاملی داده‌ای را از وب‌سایتی که حاوی دستور پنهان (تزریق پرامپت غیرمستقیم) با عنوان «انتقال وجه به حساب X» است بازیابی کند، یک سیستم احراز هویت سنتی ممکن است صرفاً تأیید کند که عامل *حقی* برای استفاده از یک ابزار بانکی دارد، بدون اینکه تأیید کند که *این اقدام خاص* با نیت اولیه کاربر همخوانی دارد.

اصول کلیدی اعتماد صفر برای عامل‌ها

پیاده‌سازی اعتماد صفر برای عامل‌های هوش مصنوعی نیازمند سه تغییر است:

  • هرگز اعتماد نکنید، همیشه تأیید کنید: هر فراخوانی ابزار باید به‌طور فردی مجاز شود، نه فقط نشست اولیه.
  • حداقل امتیاز بر اساس بافت: حقوق دسترسی باید بر اساس بافت فوری استدلال عامل، نه فقط نقش کلی آن، پویا باشد.
  • پایش پیوسته: تحلیل بلادرنگ مسیر تصمیم‌گیری عامل برای شناسایی رفتار غیرعادی قبل از اجرا.

پیاده‌سازی تأیید پیوسته: موتور سیاست

قلب این معماری یک موتور سیاست سبک‌وزن و خارجی است که تمام فراخوانی‌های ابزار را می‌بیند. به جای اجازه دادن به عامل برای اجرای مستقیم یک تابع، آن درخواستی را به این موتور ارسال می‌کند. موتور درخواست را بر اساس مجموعه‌ای از قوانین ارزیابی می‌کند، با در نظر گرفتن پرامپت اولیه کاربر، استدلال میانی عامل و پارامترهای خاص اقدام پیشنهادی.

در اینجا یک مثال عملی با استفاده از انتزاع مبتنی بر پایتون برای یک سرور MCP (پروتکل بافت مدل) یا یک فراخوان تابع سفارشی آورده شده است. فرض می‌کنیم عامل اقدامی برای ارسال ایمیل پیشنهاد کرده است. موتور سیاست بررسی می‌کند که گیرنده در فهرست مجاز است و آیا محتوا حاوی الگوهای حساس است یا خیر.


class ZeroTrustPolicyEngine:
    def __init__(self, allowed_domains, sensitive_patterns):
        self.allowed_domains = allowed_domains
        self.sensitive_patterns = sensitive_patterns
        self.audit_log = []

    def verify_action(self, action_name, parameters, context):
        """
        Verifies if an agent's proposed action is safe.
        Returns True if allowed, False if blocked.
        """
        # 1. Basic Rule: Action Must Be Known
        if action_name not in ["send_email", "read_file", "execute_query"]:
            self._log("BLOCKED", "Unknown action type", action_name)
            return False

        # 2. Contextual Rule: Check Parameters Against Domain Allow-list
        if action_name == "send_email":
            recipient_domain = parameters.get("to").split("@")[-1]
            if recipient_domain not in self.allowed_domains:
                self._log("BLOCKED", f"Domain {recipient_domain} not allowed", action_name)
                return False

        # 3. Content Integrity: Scan for Injection Artifacts
        content_to_scan = str(parameters)
        for pattern in self.sensitive_patterns:
            if pattern.lower() in content_to_scan.lower():
                self._log("BLOCKED", f"Sensitive pattern detected: {pattern}", action_name)
                return False

        # 4. Pass Check
        self._log("ALLOWED", "Action verified", action_name)
        return True

    def _log(self, status, reason, action):
        self.audit_log.append({
            "timestamp": __import__('datetime').datetime.now().isoformat(),
            "status": status,
            "reason": reason,
            "action": action
        })

# Usage Example
engine = ZeroTrustPolicyEngine(
    allowed_domains=["example.com", "company.org"],
    sensitive_patterns=["ignore previous instructions", "admin_password"]
)

# Simulated Agent Call
proposed_action = "send_email"
proposed_params = {"to": "user@evil-attacker.com", "subject": "Test"}

if engine.verify_action(proposed_action, proposed_params, context="initial_user_prompt"):
    print("Action Executed")
else:
    print("Action Blocked by Zero-Trust Policy")

دامنه‌بندی پویا و ضرب توکن

برای محیط‌های پیچیده‌تر، می‌توانید «میکرو-توکن‌ها» را پیاده‌سازی کنید. وقتی موتور سیاست یک اقدام خاص را تأیید می‌کند، یک JWT (توکن وب JSON) کوتاه‌عمر و یک‌بار مصرف را که دقیقاً محدود به آن عملیات است، ضرب می‌کند. سپس سرور ابزار این JWT را تأیید می‌کند. این اطمینان حاصل می‌کند که حتی اگر عامل در مرحله بعدی دستکاری شود، توکن صادر شده قبلی نمی‌تواند دوباره استفاده شود یا برای انجام اقدامات مختلف تغییر کند.

برای مثال، یک توکن ممکن است به این شکل باشد:


{
  "sub": "agent-instance-123",
  "action": "read_file",
  "resource": "/data/reports/2023_Q4.pdf",
  "exp": 1715232000,
  "jti": "unique-id-789"
}

نتیجه‌گیری

با خودمختارتر شدن عامل‌های هوش مصنوعی، امنیت دیگر نمی‌تواند یک موضوع پس از عمل یا یک دروازه محیطی باشد. باید در بافت حلقه عامل بافته شود. با پیاده‌سازی معماری اعتماد صفر با تأیید پیوسته، اطمینان حاصل می‌کنید که هر اقدام به‌صورت بلادرنگ بررسی می‌شود و از زیرساخت و کاربران شما در برابر حملات عامل‌محور پیشرفته محافظت می‌شود. با ممیزی حیاتی‌ترین فراخوانی‌های ابزار خود شروع کنید و به تدریج پوشش را به کل اکوسیستم عامل خود گسترش دهید.

Share: