Java-kielen turvallisuudesta (2-A)

Java on yleiskäyttöinen ohjelmointikieli, jolla voi kirjoittaa alustariippumattomia sovelmia, appletteja, joita voi ajaa turvallisesti www-selainten Java-virtuaalikoneissa (JVM). Kieltä voi käyttää muissakin yhteyksissä: yleisiä turvallisuutta edistäviä piirteitä itse kielessä on vahva tyypitys ja esim. C-kielelle ominaisten osoittimien puuttuminen.

Alustariippumattomuutta edistää lähdekoodin ja ajettavan koodin välillä oleva tavukoodi, jolle ladattavat appletit käännetään ja jota kaikki JVM:t ymmärtävät. Sillä on vaikutusta myös turvallisuuteen, sillä se mahdollistaa JVM:ssä tapahtuvan todennuksen, jossa tarkastetaan ennen suorituksen alkua, että

  • ohjelma, eli luokkatiedosto, on muodoltaan oikein;
  • pinot eivät vuoda yli;
  • muuttujien tyypit ovat oikein eikä niitä viittauksissa yritetä muuntaa toisikseen (staattinen tyypintarkistus);
  • viittaukset muihin luokkiin (eli aliohjelmiin) ovat laillisia.

Ajovaiheeseen jää silti turvatarkistuksia. Ensinnäkin luokanlataaja pitää erillisten nimiavaruuksien avulla huolen, että appletit eivät voi ladata asiaankuulumattomia luokkia. Varsinainen viitemonitori on JVM:ssä toimiva turvamanageri. Se tarkastaa turvakriittisten metodikutsujen oikeutuksen, joka voi riippua siitä, mistä luokasta kutsu tulee. Tällä tavoin viime kädessä turvamanageri toteuttaa vaaditun turvapolitiikan. Ei-luotetun appletin tapauksessa vaaditaan tyypillisesti, että koodilla ei ole pääsyä paikalliseen kiintolevyyn (tai enintään väliaikainen pääsy rajattuun hakemistoon) ja se saa kommunikoida vain sen isäntäkoneen kanssa, josta se on peräisin.

Turvallisuuden perusmallia luonnehtii E. Feltenin kirjoitus Byte'ssä? vuodelta 1997. Tarkempaa tietoa saa McGraw?'n ja Feltenin kirjan Securing Java verkkoversiosta? . Tuorein tieto löytyy Javaa kehittävän Sun'in sivustolta? (ja koko Java-tutoriaalista? .) Java-alustaan on mm. kytketty monenlaisia uusia turvapalveluja:

  • politiikkaperustaista pääsynvalvontaa
  • avaintenhallintaa
  • X.509-varmenteita
  • JAAS: Java Authentication and Authorization Service
  • JCE: Java Cryptography Extension
  • JSSE: Java Secure Socket Extension (JSSE)
  • Kerberos-piirteitä GSS-APIn kautta.

-- JukkaKoskinen?

SivuTiedotLaajennettu edit

Vaativuus Perus
Valmius Valmisteilla
Tyyppi Ydin
Luokitus Uhkat
Mitä Luottamuksellisuus
Miltä Ihmisetön uhka
Missä Organisaatio
Kuka Tite-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Print version |  PDF  | History: r2 < r1 | 
Topic revision: r2 - 26 Sep 2010 - 11:10:23 - MarkoHelenius
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback