Sól sieci

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 , 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 , 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.

Najciekawszą demonstracją możliwości NaCl jest demo gry Quake uruchomionej w tym środowisku, w przeglądarce.

Najciekawszą demonstracją możliwości NaCl jest demo gry Quake uruchomionej w tym środowisku, w przeglądarce.

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.