Скачать презентацию JAVA Security Tóth Gergely tgm mit bme hu Tóth Скачать презентацию JAVA Security Tóth Gergely tgm mit bme hu Tóth

7050ae03bd91545882270eb3385b34f3.ppt

  • Количество слайдов: 33

JAVA Security Tóth Gergely tgm@mit. bme. hu Tóth Gergely, 2003. április 22. ELTE Security JAVA Security Tóth Gergely [email protected] bme. hu Tóth Gergely, 2003. április 22. ELTE Security Speci

Tartalom • Gyors JAVA ismertető • JAVA security alapok • J 2 SE security Tartalom • Gyors JAVA ismertető • JAVA security alapok • J 2 SE security • J 2 ME security • Saját projektem Tóth Gergely, 2003. április 22. ELTE Security Speci (2)

JAVA-ról általánosságban • • JAVA nem Java. Script viszonylag egyszerű teljesen objektum-orientált virtuális gépen JAVA-ról általánosságban • • JAVA nem Java. Script viszonylag egyszerű teljesen objektum-orientált virtuális gépen fut – lassabb mint a gépi kód – platformfüggetlen • magasszintű Tóth Gergely, 2003. április 22. ELTE Security Speci (3)

JAVA történet • JAVA 1. 1 – az első viszonylag használható verzió • JAVA JAVA történet • JAVA 1. 1 – az első viszonylag használható verzió • JAVA 1. 2 • JAVA 1. 3 – a legelterjedtebb verzió (1. 3. 1) • JAVA 1. 4 – jelenlegi verzió – rengeteg új csomagot integráltak Tóth Gergely, 2003. április 22. ELTE Security Speci (4)

JAVA felépítése Tóth Gergely, 2003. április 22. ELTE Security Speci (5) JAVA felépítése Tóth Gergely, 2003. április 22. ELTE Security Speci (5)

JAVA editions J 2 EE J 2 SE J 2 ME Tóth Gergely, 2003. JAVA editions J 2 EE J 2 SE J 2 ME Tóth Gergely, 2003. április 22. ELTE Security Speci (6)

JAVA életciklus • . JAVA đ forráskód • . CLASS đ „futtatható osztály” (bytecode) JAVA életciklus • . JAVA đ forráskód • . CLASS đ „futtatható osztály” (bytecode) • . JAR đ az applikáció (gyakorlatilag ZIPpelt. CLASS-ok és egyéb szükséges fájlok, valamint manifest) Tóth Gergely, 2003. április 22. ELTE Security Speci (7)

JAVA security alapkövek • nyelvi szinten – beépített kriptográfiai csomagok (J 2 SE és JAVA security alapkövek • nyelvi szinten – beépített kriptográfiai csomagok (J 2 SE és J 2 EE) – security architektúra – buffer overflow elleni védelem • SDK szinten – applikáció authentikációs utilityk • • kulcskészítés biztonságos kulcstárolás applikáció aláírás ellenőrzés Tóth Gergely, 2003. április 22. ELTE Security Speci (8)

Buffer Overflow • buffer overflow: magasan a leggyakoribb kihasznált biztonsági lyuk Tóth Gergely, 2003. Buffer Overflow • buffer overflow: magasan a leggyakoribb kihasznált biztonsági lyuk Tóth Gergely, 2003. április 22. ELTE Security Speci (9)

Buffer Overflow – JAVA-ban • VM szinten valószinűtlen – nagyon kemény buffer-overflow elleni projekt Buffer Overflow – JAVA-ban • VM szinten valószinűtlen – nagyon kemény buffer-overflow elleni projekt a SUN-on belül • nyelvi szinten lehetetlen – nincs pointer művelet – tömböt nem lehet túlcímezni • a tömb tudja a hosszát (length mező) Tóth Gergely, 2003. április 22. ELTE Security Speci (10)

JAVA 1. 2 security architektúra I. • java. security. Permission – jogosultságok leírására – JAVA 1. 2 security architektúra I. • java. security. Permission – jogosultságok leírására – File. Permission • File. Permission(„/tmp/*”, „read”) – Socket. Permission • Socket. Permission(„localhost: 1024 -”, „listen”) – Runtime. Permission – AWTPermission –. . . Tóth Gergely, 2003. április 22. ELTE Security Speci (11)

JAVA 1. 2 security architektúra II. • java. security. Protection. Domain • osztályok halmazához JAVA 1. 2 security architektúra II. • java. security. Protection. Domain • osztályok halmazához rendel jogosultságokat • minden osztály pontosan egy domain-hez tartorzik • minden új objektum példány az osztálya domainjének jogosultságait kapja Tóth Gergely, 2003. április 22. ELTE Security Speci (12)

JAVA 1. 2 security architektúra III. • java. security. Policy • leképezés: a futó JAVA 1. 2 security architektúra III. • java. security. Policy • leképezés: a futó kód bizonyos jellemzőihez (Code. Source) jogosultságok halmazát rendeli – jelenleg a futó kódot jellemzi: • . CLASS fájljának URL-je ÉS • a hozzá tartozó certificate-ek • bár több Policy objektum is létezhet, egyszerre csak egy lehet aktív Tóth Gergely, 2003. április 22. ELTE Security Speci (13)

JAVA 1. 2 security architektúra IV. • amellett, hogy melyik osztály objektuma hajtja végre JAVA 1. 2 security architektúra IV. • amellett, hogy melyik osztály objektuma hajtja végre az utasítást, azt is figyelembe kell venni, hogy melyik szálon ki hívta meg őt – user domainbeli objektum ki akar írni valamit, meghívja a system domainbeli objektum metódusát (privilege gain) – a system domain frissíti a képernyőt és meghívja egy user domainbeli objektum paint metódusát (privilege loss) Tóth Gergely, 2003. április 22. ELTE Security Speci (14)

JAVA 1. 2 security architektúra V. • az aktuális szál jogosultsága: az általa bejárt JAVA 1. 2 security architektúra V. • az aktuális szál jogosultsága: az általa bejárt összes domain által biztonsított jogosultságok metszete • java. security. Access. Controller – annak eldöntésére, hogy van-e jogunk valamire • Access. Controller. check. Permission( Permission permission) – privilegizált művelet végrehajtására (a hívó domainjének összes jogosultságával) • Access. Controller. do. Privileged( Privileged. Action action) Tóth Gergely, 2003. április 22. ELTE Security Speci (15)

J 2 SE – JAVA 2 Standard Edition • „a JAVA programok” • programok J 2 SE – JAVA 2 Standard Edition • „a JAVA programok” • programok készítésére (J 2 SDK) – javac, a JAVA fordítóprogram • programok futtatására (JRE) – java, a JAVA virtual machine (pl. Hotspot) • utilityk – jar (. JAR fájlok készítésére) – keytool (kulcskezelésre – jarsigner (. JAR fájlok aláírására) Tóth Gergely, 2003. április 22. ELTE Security Speci (16)

JCE – JAVA Cryptography Extension • javax. crypto és java. security csomagok – titkosító JCE – JAVA Cryptography Extension • javax. crypto és java. security csomagok – titkosító algoritmusok • szimmetrikus: RC 2, IDEA, blowfish, DES, 3 DES • aszimmetrikus: RSA – hash algoritmusok • MD 5, SHA 1 – biztonsági véleltenszám-generálás – aláíró algoritmusok • DSS, SHA 1 RSA, MD 5 RSA, Tóth Gergely, 2003. április 22. ELTE Security Speci (17)

JCE példa • SHA 1 hash érték kiszámolása Message. Digest sha = Message. Digest. JCE példa • SHA 1 hash érték kiszámolása Message. Digest sha = Message. Digest. get. Instance("SHA-1"); sha. update(to. Hash); byte[] hash=sha. digest(); System. out. println(to. Hex(hash)); • futtatás: > java sha 1 abc A 9993 E 364706816 ABA 3 E 25717850 C 26 C 9 CD 0 D 89 D Tóth Gergely, 2003. április 22. ELTE Security Speci (18)

J 2 SE – applikáció authentikáció I. • aszimmetrikus kulcsok (RSA) – generálása (keytool) J 2 SE – applikáció authentikáció I. • aszimmetrikus kulcsok (RSA) – generálása (keytool) – biztonságos tárolása (keystore-ban) • szoftverfejlesztőnél: . JAR fájl aláírása (jarsigner) – aszimmetrikus kulcsú digitális aláírás (pl. SHA 1 RSA) • szoftver felhasználónál: . JAR fájl aláírásának ellenőrzése (jarsigner) Tóth Gergely, 2003. április 22. ELTE Security Speci (19)

J 2 SE – applikáció authentikáció II. • a program gyártója aláírja a futtatható J 2 SE – applikáció authentikáció II. • a program gyártója aláírja a futtatható kódot – igazolja, hogy ő írta a programot – de tulajdonképpen mit is csinál a program? • ez már csak így fog maradni : ( • a tendencia – nem a program jogosultságait állítják be – hanem megbízol a gyártójában : ( Tóth Gergely, 2003. április 22. ELTE Security Speci (20)

Applikáció authentikáció példa I. • Kulcsgenerálás >keytool -genkey -alias tgm -keystore. jks Enter keystore Applikáció authentikáció példa I. • Kulcsgenerálás >keytool -genkey -alias tgm -keystore. jks Enter keystore password: password What is your first and last name? [Unknown]: Gergely Toth What is the name of your organizational unit? [Unknown]: MIS What is the name of your organization? [Unknown]: BUTE What is the name of your City or Locality? [Unknown]: Budapest What is the name of your State or Province? [Unknown]: Budapest What is the two-letter country code for this unit? [Unknown]: HU Is CN=Gergely Toth, OU=MIS, O=BUTE, L=Budapest, ST=Budapest, C=HU correct? [no]: yes Tóth Gergely, 2003. április 22. ELTE Security Speci (21)

Applikáció authentikáció példa II. • Applikáció készítés >jar cvf sha 1. jar sha 1. Applikáció authentikáció példa II. • Applikáció készítés >jar cvf sha 1. jar sha 1. class • Applikáció aláírás >jarsigner -keystore. jks sha 1. jar tgm Enter Passphrase for keystore: password Enter key password for tgm: tgmpassword Tóth Gergely, 2003. április 22. ELTE Security Speci (22)

Applikáció authentikáció példa III. • Appliákció ellenőrzés – OK >jarsigner -verify -verbose -certs sha Applikáció authentikáció példa III. • Appliákció ellenőrzés – OK >jarsigner -verify -verbose -certs sha 1. jar 134 187 1026 0 1009 sm Thu Thu Thu Mar Mar Mar 27 27 27 18: 21: 00 18: 21: 02 18: 20: 12 18: 06 CET CET CET 2003 2003 META-INF/MANIFEST. MF META-INF/TGM. SF META-INF/TGM. DSA META-INF/ sha 1. class X. 509, CN=Gergely Toth, OU=MIS, O=BUTE, L=Budapest, ST=Budapest, C=HU s m k i = = signature was verified entry is listed in manifest at least one certificate was found in keystore at least one certificate was found in identity scope jar verified. Tóth Gergely, 2003. április 22. ELTE Security Speci (23)

Applikáció authentikáció példa IV. • Applikáció ellenőrzés – HIBA – ha módosul a tartalom Applikáció authentikáció példa IV. • Applikáció ellenőrzés – HIBA – ha módosul a tartalom anélkül, hogy az aláírásokat újragenerálnánk >jarsigner -verify -verbose -certs sha 1. jarsigner: java. lang. Security. Exception: SHA 1 digest error for sha 1. class Tóth Gergely, 2003. április 22. ELTE Security Speci (24)

Appletek I. • Applet – alapvetően browserben futó JAVA program • JAVA 1. 1 Appletek I. • Applet – alapvetően browserben futó JAVA program • JAVA 1. 1 és előtte – nincs fájlrendszer-hozzáférés – csak ahhoz a hosthoz tud socketet nyitni, ahonnan le lett töltve – nincs natív hívás – nem indíthat más programot – nem tölthet be libraryt đ nehézkes Tóth Gergely, 2003. április 22. ELTE Security Speci (25)

Appletek II. • JAVA 1. 2 óta – aláírt applet „trusted” ha megfelelő/elfogadjuk az Appletek II. • JAVA 1. 2 óta – aláírt applet „trusted” ha megfelelő/elfogadjuk az alírást • fájlrendszer-hozzáférés • socket-nyitás – futtatáskor a VM rákérdez, hogy belegyezünk-e a jogosultságok megszerzéséhez (ha nem tudta ellenőrizni az aláírást) đ kényelmesebb Tóth Gergely, 2003. április 22. ELTE Security Speci (26)

J 2 ME - JAVA 2 Micro Edition • limitált kapacitású (memória, CPU) eszközökre J 2 ME - JAVA 2 Micro Edition • limitált kapacitású (memória, CPU) eszközökre – mobiltelefonok – kézi számítógépek • lecsupaszított nyelvi környezet • nincs fájlkezelés (csak persistent storage) • kommunikációs csatornák absztrakció Tóth Gergely, 2003. április 22. ELTE Security Speci (27)

MIDP 1. 0 • jelenlegi állapot • „homokozó” elv – nincs fájlrendszer-hozzáférés – limitált MIDP 1. 0 • jelenlegi állapot • „homokozó” elv – nincs fájlrendszer-hozzáférés – limitált erőforrások (~100 k memória, ~100 k bytecode) és kevés beépített osztály – kommunikációs csatorna absztrakció (Connection osztály) • nincs applikáció authentikáció! – az aláírást figyelmen kívül hagyja Tóth Gergely, 2003. április 22. ELTE Security Speci (28)

MIDP 2. 0 • hamarosan megjelenik (~idén nyáron) • security++ – permissions • bizonyos MIDP 2. 0 • hamarosan megjelenik (~idén nyáron) • security++ – permissions • bizonyos fukciók letiltása/engedélyezése – protection domains • Permission templates (untrusted, . . . ) – applikáció authentikáció • aláírás ellenőrzése – crypto csomagok (pl. SSL, HTTPS, WTLS) • push architecture: security? Tóth Gergely, 2003. április 22. ELTE Security Speci (29)

Rákfenék • natív hívás – JAVA kiegészítése: a VM-et futtató környezetre írt gépi kódú Rákfenék • natív hívás – JAVA kiegészítése: a VM-et futtató környezetre írt gépi kódú library is használható – nem platform-független – nem biztosítja a JAVA által nyújtott biztonsági megoldásokat és megbízhatóságot • MIDP 1. 0 – nincs applikáció authentikáció Tóth Gergely, 2003. április 22. ELTE Security Speci (30)

Saját magamról – MONICA projekt I. • JAVA alapú open-source SSH 2 – http: Saját magamról – MONICA projekt I. • JAVA alapú open-source SSH 2 – http: //monica. sourceforge. net Tóth Gergely, 2003. április 22. ELTE Security Speci (31)

Saját magamról – MONICA projekt II. • JAVA alapú SCP 2 (fejlesztés alatt) Tóth Saját magamról – MONICA projekt II. • JAVA alapú SCP 2 (fejlesztés alatt) Tóth Gergely, 2003. április 22. ELTE Security Speci (32)

Kérdések ? Tóth Gergely, 2003. április 22. ELTE Security Speci (33) Kérdések ? Tóth Gergely, 2003. április 22. ELTE Security Speci (33)