Ukrytí kódu – co na to matematika?

Matematika |

Profesor computer science Amit Sahai a jeho kolegové z University of California v Los Angeles tvrdí, že přišli s konceptem kódu softwaru, který vylučuje zpětné (reverzní) inženýrství.

Ukrytí kódu – co na to matematika?



Software lze pak použít pouze jediným, předem zamýšleným způsobem, původní kód nelze nijak zrekonstruovat.

Podobných pokusů dnes existuje celá řada, třeba umožnit práci s daty tak, aby měl uživatel/program přístup pouze k těm, které právě potřebuje, ale vše přitom bylo stále šifrováno, každý kousek dat souboru či databáze uvolňován jen přechodně a na vyžádání. Má to celé nějaký kloudný matematický základ? Přece lze-li software používat, postupně se zpřístupní nutně všechna data, asi jako libovolně chráněný film při přehrávání půjde nahrát na kameru.

Sahai nicméně tvrdí, že skutečně techniku „software obfuscation“ dovedli do stavu, kdy je matematicky neprolomitelná – nebo by vyžadovala najít dosud neznámé matematické postupy. Samotný vývoj softwaru lze nadále provádět běžným způsobem, až poté se příslušným trikem převede; funkčnost zůstane stejná, ale nikdo se už nevyzná v tom, co program dělá.

Zatímco předcházející techniky software obfuscation reverzní inženýrství pouze ztěžovaly a prodlužovaly, nyní prý ochranu nelze obejít. Kromě samotné funkčnosti nelze brát výstupy/vstupy, dále je analyzovat či různě předkládat programu; výsledek se nedostaví, zadrátování je natvrdo jako u puzzle. Bez zbytku kódu je prý jakákoliv jeho část víceméně jen náhodnou sekvencí. Základem metody je funkční šifrování. Kód nemá podobu zašifrované zprávy, ale zašifrované funkce: tento přístup byl již znám, ale Sahaiův tým dokáže takto implementovat libovolnou spočitatelnou funkci.

Na projektu se přitom podílela i řada dalších expertů, mj. bývalí studenti dnes působící v komerční sféře (Sanjam Garg, Craig Gentry, Shai Halevi a Mariana Raykova z IBM Research).

Zdroj: Phys.org
Podrobnější informace

Poznámky: Bohužel to (subjektivně) není celé moc jasné, má jít pouze o zcela kompilovaný kód nebo i o byte-code? Jak se v tom vyznat v době různých vrstev virtualizace, hypervisorů a webových aplikací? Jde o obecný přístup nezávislý na konkrétní platformě, typu hardwaru/softwaru…?

A zdálo by se, že sledováním funkčnosti půjde možná ne získat původní kód, ale vytvořit zcela ekvivalentní ve smyslu komunikace s rozhraními? (Od toho se zase odvíjí motivace pro takovéhle skrývání kódu. Jedním z důvodů má třeba být, že bezpečnostní opravy půjde distribuovat, aniž by z toho potenciální útočníci mohli zjistit podstatu zranitelnosti.)



Úvodní foto: Slonzor, Wikipedia, licence public domain




Související články




Komentáře

28.07.2014, 01:53

.... ñïàñèáî çà èíôó!...

Napsat vlastní komentář

Pro přidání příspěvku do diskuze se prosím přihlašte v pravém horním rohu, nebo se prosím nejprve registrujte.