Na nabídku

Jak na biologické viry - programátorská edice


I biologické viry lze omezit v rozvoji. Jen je třeba nechodit na to jako zdravotník.

Předpoklad č.1 - pochopení chování DNA/RNA podle programátora.

DNA/RNA jsou na roveň Assembly language (Assembler). Jednotlivé báze lze kódovat jako čtyřkovou soustavu; v případě správného provedení je dokonce triviální odvozovat protistranu. A = 0; C = 1; G = 2; T/U = 3; V binárním pojetí pak A je jako "00", C = "01", G = "10", T/U = "11". Krása pro doplňkové počty, protože A je proti T/U a C proti G. Takže každá báze dává binární součet "11".

Druhá věc je, že pro 1 instrukci jsou potřeba 3 báze. Tedy 6 bitů. To ale podle posledních poznatků není dost - je potřeba ještě určit úhel v prostoru. Takže se vezme 16 bitů s tím, že prvních 6 dává krok a zbytek úhel vůči předchozí. Je to kulový vrchlík, není potřeba tam mít komplet prostor. Při přepočtu přes procenta na 64 hodnot to docela stačí.

Množství instrukcí může být libovolné, stejně jako u reálného programu. Ale jsou známy body, kde to začíná a kde to končí. Tyhle instrukce jsem měl dokonce popsané v biologické učebnici na střední (v roce 2006!). To jsou místa, kde startují a kde končí práci ribozomy, které instrukce klonují a posílají dál ke zpracování (takže čtou). Ribozom potřebuje pouze informaci, kde má začít. Tu dostane. Ať už z legitimního zdroje nebo právě od vira. Konec je jasný.

Mimochodem oněch 16 bitů jsou 2 bajty na běžných systémech. Jako má třeba kódování Unicode, kterým se bavíte, pokud používáte třeba východní nebo arabské jazyky. Tím máme nakódováno a připraveno pro další zábavu, hlavně pro simulace.

Předpoklad č.2 - je třeba si říct, co že to biologický vir je.

Je to hnusný balík, co nese informaci, jak se zase seskládat. Z pohledu programátora se takhle chovají loadery. Tedy kód, co odkazuje na další kód a volá ho k provedení. To nám ale říká celkem podstatnou informaci. Tedy že v tom viru docela velká část není - nepotřebuje jí nést, už jí má v sobě oběť. Mimochodem se takhle chovají i digitální viry. Protože je poměrně náročné najít společný jmenovatel, který zajistí infekci a šíření. Máme docela dost prostředí, čímž se omezuje prostor pro útok. Ať už je to stolní počítač nebo mobil (jedno mívá dole Windows, druhé Android). Za starších dob DOSu byla volání až téměř u železa v Assembleru, protože ten systém se bránit vůbec nezvládl. Avšak takový vir nebyl schopen napadnout třeba Appla, protože tam byly ty instrukce odlišné - a to i když ten systém byl s ochranou obdobně na štíru. Dneska takhle nízko píší jen špičkoví odborníci na velmi cílené útoky (pozdravujeme jablečný Izrael).

A biologické viry řeší obdobný problém. Co všchno si potřebují nést a co je v cíli k využití. V oběti bývá zpravidla stavba schránky, naopak třeba nožička, kterou se chytá, je v samotném viru. To ale ukazuje na místa vhodná pro obranu.

Co páchá běžná lečba?

Běžná léčba funguje na principu "nakopnutí" vnitřních ochran těla. V IT světě tohle nemá obdoby, protože pokud žádná instrukce není, tak se prostě nic neprovede. Což u biologické složky neplatí. Tam je nějaká instrukce vždy.

A tady je první kámen úrazu - biologické viry dávají instrukce cyklické, takže jejich provádění probíhá až do vyčerpání zdrojů. A právě tím hubí hostitele. V programování je to typická chyba "overflow", tedy že přetekly požadavky na zdroje. Počítač program, co se snaží roztahovat mimo vymezený prostor, pošle do prdele, případně ho rovnou odstřelí. Buňka tohle neumí. Z historických důvodů. Zatímco programátoři velmi rychle přišli na to, že pokud taková situace nastane, tak je v zájmu systému se toho zbavit, u buněk se počítá s úmrtím a jejich nahrazením. Což je ale vektor útoku pro vira.

A druhá chyba je ve chvíli, kdy je krmením pro vira samotný antivirový program. Některé viry jsou "slavné" tím, že útočí přímo na obranný systém těla, tedy buňky, co mají tělo chránit. V tu chvíli "nakopávat" tenhle systém vede jen ke zvětšení hostiny, kterou si vir dá. Takže místo toho, abyste zločince nechali o hladu, tak mu ještě budete podstojovat. Tedy totální chyba vedoucí ke kolapsu systému.

Léčba podle programátora

Nechat vir rozpadnout. V praxi to znamená zaměřit se na instrukce, které používá ke své stavbě, jsou jinak nevyužité a tedy nehrozí vedlejší škody. Spousta genetického kódu je při normáním fungování těla nepotřebná a veze se jako historická zátěž. Ale viry tam mají odložené části, na které samy odkazují. Jenže my už máme genetické nůžky CRISPR, které změny zvládají. Stačí vyměnit pár správně zvolených písmenek v DNA, kam ukazuje kód vira a vir se rozpadne během sestavování - nevytvoří se nová kopie. Řečí programátora: Make (utilitka, která pomáhá překládat programy z programovacího jazyku do kódu stroje) vrátí chybu a výsledek se zahodí. Mimochodem už vím o několika provedeních tohohle kroku, ač jsou hodnoceny vysoce kontroverzně. Hlavně pokud jde o zachování změny pro další generace.

Léčba podle chemika

Nechat vir chcípnout hlady. Tohle je trochu náročnější. Dva klíče a "guma". Tady se útočí na podobné místo jako má brát antivirový systém těla. Jen na nižší úrovni. Jde o to, že chemické prvky, ze kterých je chňapající nožička viru, jde přesvědčit, aby se chytly na něco jiného, co je zajímavější z hlediska navázání. Nejdřív je potřeba izolovat, na co že se nožička ráda chytá. Pak lze nasimulovat a následně otestovat, která součenina je pro vira zajímavější. Pak příjdou na řadu klíče. První vypne tvorbu stávající stravy - zacpe "hubu", co čte instrukce ke tvorbě dalších kopií. Dále se tělo chvíli krmí látkou, co je pro vira zajímavější a on se váže na ní. Po otestování, že je všechen vypuzen, se použije druhý klíč a ten čtecí "hubu" opět uvolní. Vir totiž zpravidla udělá jednu věc - sedne si hned za továrnu, co vyrábí krmení, a tam dále spokojeně vegetí. Tenhle postup mu továrnu na nějakou dobu zavře a on se bude muset poohlédnout po stravě jinde. A pokud je cílová látka výživově a pro rozmnožování naprosto k ničemu, tak je to jako kdyby žral gumu. On do ní svůj kód k provedení nacpe, avšak v ní není nic, co by onen kód dále provádělo a tak zůstane inertní. Navíc jeden takový kus "gumy" je schopen nabrat několik desítek až stovek virových jednotek, závisí jak se okolo naskládají a jak je sám velký. A jako inertní se dá přirozenou cestou vyhodit. Venku se pak může po zásahu vybrané látky "guma" rozpadnout a virový kód nedlouho poté taky, protože volně v přírodě RNA prostě dlouho nevydrží.

Petr Plšek, 182 00 Praha, me@kalanys.com