Bezpiecznie na Javie

W Java2 Standard i Enterprise Editon jest realizowany elastyczny model bezpieczeństwa kodu.

W Java2 Standard i Enterprise Editon jest realizowany elastyczny model bezpieczeństwa kodu.

Szybko zanikają tradycyjne granice między siecią lokalną firmy a Internetem, powodując zwiększone ryzyko dla danych i zasobów. Opracowany na platformę Java 2 elastyczny model bezpieczeństwa rozwiązuje problemy, pozwalając na konfigurowanie zakresu ochrony na poziomie poszczególnych komponentów, plików, katalogów i całej sieci.

Bezpieczny - niebezpieczny

Oryginalny model bezpieczeństwa zawarty w Java Development Kit 1.0 (JDK) opierał się na dualizmie: "bezpieczny" kod lokalny i "niebezpieczny" kod zdalny, otrzymany z sieci. Kod zdalny był ograniczany do "pudełka z piaskiem" (sandbox) - obszaru wykonywania kodu o ściśle limitowanym dostępie do zasobów lokalnych, np. kod apletu z sandboxu nie mógł zapisywać ani odczytywać pliku z lokalnego dysku. Ograniczało to możliwości tworzenia aplikacji dostępnych z sieci, np. w tym modelu nie można było opracować edytora tekstowego w formie apletu, gdyż nie mógł on zapisywać wyników pracy na dysku. Zakres ochrony został nieco złagodzony w JDK 1.1, w którym wprowadzono pojęcie "podpisanego" (signed) apletu. Aplet z sygnaturą elektroniczną, dostarczany wraz z nią w formie pliku Java Archive (JAR), jest uważany za bezpieczny. Otrzymuje więc wszystkie przywileje kodu lokalnego.

Nadal jednak ten model nie nadaje się do realizacji zaawansowanej ochrony zasobów, gdyż nie zapewnia możliwości prowadzenia bardziej "konfigurowalnej" polityki bezpieczeństwa. Podobny do JDK 1.1 model ochrony jest realizowany dla elementów ActiveX z Windows. Elektronicznie sygnowane zdalne elementy ActiveX mają wszystkie uprawnienia kodu lokalnego, łącznie z formatowaniem dysku lokalnego.

Bezpieczeństwo w Java 2

Zestaw funkcji bezpieczeństwa Java 2 Security API stosuje ten sam "drobnoziarnisty" model bezpieczeństwa dla kodu lokalnego i zdalnego: apletu, aplikacji, ziarna (beanu) czy servletu.

Model bezpieczeństwa jest oparty na polisie - zdefiniowanej strategii ochrony zasobów, oddzielającej specyficzne uprawnienia od kodu. Oznacza to, że administrator może zdefiniować uprawnienia dla określonej części kodu za pośrednictwem pliku polisy. Pozwala to na wprowadzenie dowolnego poziomu kontroli dostępu - definiowanie uprawnień do czytania, pisania i wykonywania określonych plików i katalogów oraz korzystania z połączeń sieciowych.

Kod wykonywalny Java 2 (run-time) przechowuje odwzorowania komponentów kodu na zdefiniowane domeny ochrony (np. grupy obiektów z tego samego miejsca w sieci lub z tą samą sygnaturą elektroniczną), a z domen do plików uprawnień. Jeżeli w czasie wykonywania programu wątek kodu przekracza granice domeny, jego możliwości są ograniczane do uprawnień domeny bardziej restrykcyjnej. Wówczas domena limitowana nie może uzyskać większych uprawnień przez wywołanie kodu z domeny uprzywilejowanej.

Platformy Java 2 Standard i Enterprise Edition zawierają opisany model bezpieczeństwa oraz trzy narzędzia do wspomagania działania modelu. Keytool służy do obsługi par kluczy do szyfrowania i certyfikatów sygnatur elektronicznych, zgodnych ze specyfikacją X.509 v1. Jarsigner jest przeznaczony do podpisywania i weryfikowania plików archiwalnych JAR. Sprawdzanie podpisu następuje przez porównanie z wiarygodną sygnaturą w archiwum, obsługiwanego przez Keytool. Za pomocą Policytool modyfikuje się zewnętrzny plik konfigurowania polisy bezpieczeństwa.

Narzędzia te pozwalają na definiowanie kontroli dostępu, bazując na tym, skąd pochodzi kod i kto go podpisał.

Na tym nie kończy się bezpieczeństwo platformy Java 2. Dostępne są opcjonalne pakiety.

Rozszerzenia kryptograficzne - Java Cryptography Extensions API 1.2 (JCE) - rozbudowują właściwości architektury kryptograficznej Java Cryptography Architecture (JCA) o możliwość używania dowolnych algorytmów kryptograficznych. Java Authentication and Authorization Service API (JAAS) służy do kontroli dostępu do określonych domen dla poszczególnych użytkowników czy ich grup. JASS pozwala na tworzenie programów do pojedynczego logowania się użytkownika do wielu usług i zasobów, posługujących się różnymi hasłami.

Bezpieczne gniazdka - Secure Socket Layer i Transport Layer Security - mają zapewniać bezpieczną komunikację w sieci. To rozszerzenie platformy Java 2 jest dostępne w USA i Kanadzie.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200