Čvrste kontrole · Agenti · Nacrt
Sićušni agent za host: bez modela, bez dolaznog porta
Status: ovo je napisan projekat, nacrt; nije izgrađen i nije u upotrebi. Uvođenje je planirano prvo samo sa činjenicama i samo za čitanje, komande na kraju.
Većina razgovora o AI agentima govori o tome šta oni mogu. Ovaj članak govori o delu koji je namerno projektovan da radi vrlo malo: malom agentu koji bi živeo na hostu. Ne bi sadržao model. Izveštavao bi o činjenicama o hostu, izvršavao samo komande sa fiksne liste, uputstva primao kao potpisane poruke preko gita i ne bi slušao ni na jednom dolaznom portu.
To je najmanji primer ideje koja prolazi kroz ovu seriju: kada komponentu ne možete učiniti pouzdanom lepim molbama, učinite je dovoljno malom da je malo šta potrebno verovati.
Čemu služi
Neki hostovi uopšte nisu pod kontrolom AI asistenta. Ipak ih treba poznavati i, na uske načine, njima upravljati: šta na njima radi, u kakvom su stanju i šačica rutinskih radnji. Sićušni host agent je projektovan da sedi na takvom hostu i radi upravo to i ništa više.
Radio bi tri stvari. Izveštavao bi o činjenicama o hostu. Primao bi uputstva kao potpisane poruke. Izvršio bi komandu samo ako je komanda na njegovoj listi dozvola.
Zašto svaki izbor u projektu
Svaki izbor postoji zbog onoga što oduzima od površine napada.
Bez modela. Sa modelom se može raspravljati: tekst koji čita može usmeriti ono što radi. Mali fiksni program ne može da se nagovori na radnju, a dovoljno je mali da ga osoba pročita i pregleda u jednom sedenju. Uklanjanje modela uklanja s hosta čitavu klasu manipulacije.
Lista dozvola. Agent bi odbio svaku komandu koja nije na njegovoj listi. Greška, loša poruka ili falsifikovan zahtev tada mogu da dopru samo do onoga što lista dozvoljava. Nepoznato znači odbijeno.
Potpisane poruke. Host bi delovao samo po uputstvima čiji potpis može da proveri. Nije dovoljno moći doći do kanala; samo vlasnik ključa za potpisivanje može da uputi host.
Git kao kanal. Host bi od gita tražio nove poruke, umesto da čeka da ga neko pozove. Svako uputstvo postaje commit, pa je istorija zapis o tome šta je traženo i od koga, a transportu ne treba ništa posebno.
Bez dolaznog porta. Pošto bi host uvek sam izlazio prema spolja, a ništa ne bi dolazilo unutra, nema usluge koja sluša, koju bi se moglo skenirati, ispitivati ili iskoristiti sa mreže.
Jedna poruka, pet fiksnih koraka
Svaka poruka bi prolazila kroz iste korake istim redom: povući je, proveriti potpis, proveriti komandu prema listi dozvola, izvršiti jednu navedenu komandu, izvestiti o rezultatu i činjenicama o hostu. Ako bilo koji korak ne uspe, poruka se tu zaustavlja. Nepotpisano, nepoznato ili nenavedeno znači da ništa ne radi, a u sredini nema rasuđivanja na koje bi se neko mogao osloniti.
Šta bi koštalo
Malo i strogo ima cenu.
- Fleksibilnost. Nova vrsta zadatka znači novu stavku na listi dozvola, koju treba napisati i pregledati. To je poenta, a ujedno i trenje.
- Upravljanje ključevima. Potpisivanje traži ključeve: neko ih mora napraviti, čuvati, odlučiti ko sme da potpisuje i zameniti ih kada zatreba. Projekat zahteva da se taj posao uradi dobro; način na koji se ključ za potpisivanje drži je otvorena tačka projekta, a ovaj članak ne opisuje nikakvo podešavanje.
- Brzina. Host koji proverava saznaje za uputstvo pri sledećoj proveri, ne odmah.
- Oslanjanje na git. Kanal zavisi od toga da je git usluga dostupna i da se ponaša kako treba.
- Dijagnoza. Fiksni program sa uskim izlazom malo govori kada nešto pođe naopako, pa izveštavanje i evidentiranje traže pažnju.
Od čega ovaj projekat ne štiti
Imenovati granice je važnije od nabrajanja prednosti.
Ključ za potpisivanje. Ko drži ključ za potpisivanje, može da šalje važeće poruke. Lista dozvola ograničava šta može da traži, ali štetna radnja koja je na listi bila bi izvršena. Kako se ključ drži i kako bi se zamenio je otvorena tačka projekta.
Ponavljanje. Originalna potpisana poruka može se poslati ponovo kasnije. Projekat zahteva način da se razlikuju sveže poruke od starih, poput isteka ili brojača; bez toga je ponavljanje moguće.
Kompromitovana git usluga. Usluga ne može da falsifikuje potpise, ali može da zadrži poruke, odloži ih ili pokaže stare. To utiče na dostupnost i svežinu, ne na autentičnost.
Loša lista dozvola. Lista dozvola je stvarna granica dozvola. Sigurna je koliko i njene stavke i argumenti koje prihvataju; široka stavka je široka dozvola.
Kompromitovan host. Host koji je preuzet može da izveštava lažne činjenice o sebi. Šteta je ograničena na sopstvene putanje tog hosta: preko ovog projekta ne bi dopro do drugih hostova.
Ovi rizici bi bili sužavani malim listama dozvola sa fiksnim argumentima, svežim porukama, pažljivim rukovanjem ključevima i praćenjem onoga o čemu host izveštava. Ne bi bili uklonjeni.
Kako se uklapa u ostatak serije
Host agent bi bio najniži sloj iste slike. Agenti iznad njega predlažu, ljudi odobravaju, a potpisane, zabeležene poruke nose odobreno uputstvo naniže. Na dnu bi bio deo koji sledi svoju listu i vodi zapis, i koji ima malo toga drugog što bi se moglo napasti.