Sól sieci
- Artur Wawrowski,
- 24.03.2009
Google udostępniło środowisko kompatybilności - Native Client - umożliwiające uruchamianie kodu napisanego dla platformy x86 w przeglądarkach internetowych.
Głównym powodem stworzenia takiej technologii jest dostępność oprogramowania dla tej platformy przy stosunkowo niskim wykorzystaniu mocy dzisiejszych stacji roboczych. W połączeniu z możliwością przenoszenia programów na inne platformy (Mac lub Linux), Native Client (NaCl) może dać programistom porównywalne możliwości, co platformy .NET czy Mono. Rdzeniem technologii jest wtyczka do przeglądarki i zestaw narzędzi do kompilacji. Te komponenty, zebrane razem, umożliwiają tworzenie aplikacji uruchamianych w ramach przeglądarki, lecz składające się z bloków czystego kodu x86.
Pakiet zawiera eksperymentalne narzędzia do kompilacji i środowisko. Można w nim pisać i uruchamiać moduły kodu, dające się uruchomić w przeglądarkach Firefox, Safari, Opera czy Google Chrome, w każdej w miarę aktualnej edycji Windows, Mac i Linuxa, na komputerze wyposażonym w procesor x86. Trwają prace nad dystrybucjami dla innych architektur (np. ARM i PPC). Powstałe w ten sposób przenośne środowisko umożliwi uruchamianie specjalnie przygotowanego kodu x86 w innych platformach, stanowiąc potencjalną konkurencję dla języka Java. Jednym z argumentów będzie lepsza wydajność NaCl w stosunku do niego oraz łatwiejsze przygotowanie istniejącego kodu x86 w celu wykonania go w tym środowisku.
Kontrola podstawą zaufania
Możliwość uruchomienia własnego kodu przez aplikacje WWW uznaje się za istotny czynnik ryzyka, podobne technologie (np. ActiveX) były nie raz elementem wykorzystywanym do ataku. Dlatego w NaCl opracowano ścisłe reguły zabezpieczeń, określone przez następujące warunki:
- wszystkie bloki spełniają wymogi strukturalne umożliwiające deasemblację (rozłożenie) na zestaw podstawowych instrukcji;
- moduły nie mogą zawierać określonych zestawów instrukcji, występujących w ustalonej kolejności, np. prowadzących do wykonania kodu poza wykonywanym modułem, co w praktyce mogłoby prowadzić do uruchomienia zewnętrznego, szkodliwego programu (np. wirusa);
- framework zawiera moduły, które pracują w swoich izolowanych procesach, komunikując się za pomocą RPC.