Tóth Gergely, április 22. ELTE Security Speci JAVA Security Tóth Gergely
Tóth Gergely, április 22.(2) ELTE Security Speci Tartalom Gyors JAVA ismertető JAVA security alapok J2SE security J2ME security Saját projektem
Tóth Gergely, április 22.(3) ELTE Security Speci JAVA-ról általánosságban JAVA nem JavaScript viszonylag egyszerű teljesen objektum-orientált virtuális gépen fut –lassabb mint a gépi kód –platformfüggetlen magasszintű
Tóth Gergely, április 22.(4) ELTE Security Speci 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, április 22.(5) ELTE Security Speci JAVA felépítése
Tóth Gergely, április 22.(6) ELTE Security Speci JAVA editions J2EE J2SE J2ME
Tóth Gergely, április 22.(7) ELTE Security Speci JAVA életciklus.JAVA forráskód.CLASS „futtatható osztály” (bytecode).JAR az applikáció (gyakorlatilag ZIP- pelt.CLASS -ok és egyéb szükséges fájlok, valamint manifest)
Tóth Gergely, április 22.(8) ELTE Security Speci JAVA security alapkövek nyelvi szinten –beépített kriptográfiai csomagok (J2SE és J2EE) –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 aláírás ellenőrzés
Tóth Gergely, április 22.(9) ELTE Security Speci Buffer Overflow buffer overflow: magasan a leggyakoribb kihasznált biztonsági lyuk
Tóth Gergely, április 22.(10) ELTE Security Speci 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, április 22.(11) ELTE Security Speci JAVA 1.2 security architektúra I. java.security.Permission –jogosultságok leírására –FilePermission FilePermission(„/tmp/*”, „read”) –SocketPermission SocketPermission(„localhost:1024-”, „listen”) –RuntimePermission –AWTPermission –...
Tóth Gergely, április 22.(12) ELTE Security Speci JAVA 1.2 security architektúra II. java.security.ProtectionDomain 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, április 22.(13) ELTE Security Speci JAVA 1.2 security architektúra III. java.security.Policy leképezés: a futó kód bizonyos jellemzőihez ( CodeSource ) 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, április 22.(14) ELTE Security Speci 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, április 22.(15) ELTE Security Speci 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.AccessController –annak eldöntésére, hogy van-e jogunk valamire AccessController.checkPermission( Permission permission) –privilegizált művelet végrehajtására (a hívó domainjének összes jogosultságával) AccessController.doPrivileged( PrivilegedAction action)
Tóth Gergely, április 22.(16) ELTE Security Speci J2SE – JAVA 2 Standard Edition „a JAVA programok” programok készítésére (J2SDK) –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, április 22.(17) ELTE Security Speci JCE – JAVA Cryptography Extension javax.crypto és java.security csomagok –titkosító algoritmusok szimmetrikus: RC2, IDEA, blowfish, DES, 3DES aszimmetrikus: RSA –hash algoritmusok MD5, SHA1 –biztonsági véleltenszám-generálás –aláíró algoritmusok DSS, SHA1RSA, MD5RSA,
Tóth Gergely, április 22.(18) ELTE Security Speci JCE példa SHA1 hash érték kiszámolása futtatás: > java sha1 abc A9993E ABA3E C26C9CD0D89D MessageDigest sha = MessageDigest. getInstance("SHA-1"); sha.update(toHash); byte[] hash=sha.digest(); System.out.println(toHex(hash));
Tóth Gergely, április 22.(19) ELTE Security Speci J2SE – 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. SHA1RSA) szoftver felhasználónál:.JAR fájl aláírásának ellenőrzése ( jarsigner )
Tóth Gergely, április 22.(20) ELTE Security Speci J2SE – 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, április 22.(21) ELTE Security Speci Applikáció authentikáció példa I. Kulcsgenerálás >keytool -genkey -alias tgm -keystore 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, április 22.(22) ELTE Security Speci Applikáció authentikáció példa II. Applikáció készítés Applikáció aláírás >jarsigner -keystore keystore.jks sha1.jar tgm Enter Passphrase for keystore: password Enter key password for tgm: tgmpassword >jar cvf sha1.jar sha1.class
Tóth Gergely, április 22.(23) ELTE Security Speci Applikáció authentikáció példa III. Appliákció ellenőrzés – OK >jarsigner -verify -verbose -certs sha1.jar 134 Thu Mar 27 18:21:00 CET 2003 META-INF/MANIFEST.MF 187 Thu Mar 27 18:21:02 CET 2003 META-INF/TGM.SF 1026 Thu Mar 27 18:21:02 CET 2003 META-INF/TGM.DSA 0 Thu Mar 27 18:20:12 CET 2003 META-INF/ sm 1009 Thu Mar 27 18:06:06 CET 2003 sha1.class X.509, CN=Gergely Toth, OU=MIS, O=BUTE, L=Budapest, ST=Budapest, C=HU s = signature was verified m = entry is listed in manifest k = at least one certificate was found in keystore i = at least one certificate was found in identity scope jar verified.
Tóth Gergely, április 22.(24) ELTE Security Speci 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 sha1.jar jarsigner: java.lang.SecurityException: SHA1 digest error for sha1.class
Tóth Gergely, április 22.(25) ELTE Security Speci 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, április 22.(26) ELTE Security Speci 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, április 22.(27) ELTE Security Speci J2ME - 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, április 22.(28) ELTE Security Speci MIDP 1.0 jelenlegi állapot „homokozó” elv –nincs fájlrendszer-hozzáférés –limitált erőforrások (~100k memória, ~100k 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, április 22.(29) ELTE Security Speci MIDP 2.0 hamarosan megjelenik (~idén nyáron) security++ –permissions bizonyos fukciók letiltása/engedélyezése –protection domains Permission templates (untrusted, trusted,...) –applikáció authentikáció aláírás ellenőrzése –crypto csomagok (pl. SSL, HTTPS, WTLS) push architecture: security?
Tóth Gergely, április 22.(30) ELTE Security Speci 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, április 22.(31) ELTE Security Speci Saját magamról – MONICA projekt I. JAVA alapú open-source SSH2 –
Tóth Gergely, április 22.(32) ELTE Security Speci Saját magamról – MONICA projekt II. JAVA alapú SCP2 (fejlesztés alatt)
Tóth Gergely, április 22.(33) ELTE Security Speci Kérdések ?