Bezpečnosť JAVA technológií

Slides:



Advertisements
Similar presentations
Ma.
Advertisements

Click on each of us to hear our sounds.
Security CS-328. The need for security In most of the programming classes that we’ve taken the emphasis has always been on getting the “job” done and.
Certificates By Purvi Shah. What is a Certificate A certificate is basically a digitally signed statement from one entity (person, company, etc.), saying.
Security in Java Sunesh Kumra S
JAVA SECURITY BASIC NETWORKING MULTITHREATING Deniz HASTORUN
Csci5931 Web Security1 Java Security Model (GS: Ch. 7)
Java Security cont’d. Using SecurityManager  The basic SecurityManager architecture is simple. Throughout the JDK, the Java security team had to:  Identify.
MA. ME MI MO MU MÁ MÉ MÍ MÓ MŮ LA LE LI.
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Diagrams and Sample Code from the Java Tutorial,
INTRANSNET Contract No. G7RT-CT
Požiadavky na hardvér a možnosti použitia jednotlivých OS Windows
Example Bullet Point Slide
Fyzika a chemie společně CZ/FMP/17B/0456
VOĽNE DOSTUPNÝ REFERENČNÝ MANAŽÉR
Stredná odborná škola automobilová Moldavská cesta 2, Košice
Zmluva o poskytnutí grantu
Present by Leon & Andy Art Technical Gallery © 2014 Ultimate - All rights reserved 1. Letné stretnutie pracovníkov v NDT LT Piešťany, Rybársky dvor,
Zálohovanie a archivácia
Operačné systémy Čo robí operačný systém ?
Obsluha výnimiek.
BEZPEČNOSŤ DATABÁZ Bezpečnosť informačných systémov
Geografický informačný systém
Certifikačná autorita
Domény a DNS.
Vývoj a druhy počítačov
Web of Science – pokročilé vyhľadávanie vedeckej literatúry a jej analýza Enikő Tóth Szász Customer Education Specialist
DATABÁZOVÉ JAZYKY.
Bezpečnosť databázových systémov
Databázový systém pre malý a veľký podnik
Yulia Šurinová "There is always a better way; it should be found."
Makrá v PowerPointe Joshua Lajčiak.
Communicating over the Network
Barbora Ondíková VII.D 2014/2015
Schémy financovania v 7RP
1. Úvod do operačného systému UNIX
Človek vo sfére peňazí ročník.
aktivácia Vladimír Hricka License Sales Specialist Microsoft Slovakia
7. prednáška 3. november 2003.
Protokoly HTTP a FTP.
Skrutkovica na rotačnej ploche
Vlastnosti kvantitatívnych dát
Ing. Róbert Chovanculiak, Ph.D. INESS
Šifrovanie Dešifrovanie
Ako manažovať smartfóny z cloudu TechDays East 2014
CSS - Cascading Style Sheets
Dvojrozmerné polia Kód ITMS projektu:
Lokálne príznaky vo farebných obrazoch
22. – OTVORENÝ PRÍSTUP
Vysoko subjektívna prezentácia o používaní podcastov
Heuristické optimalizačné procesy
Zásady hygieny pri stolovaní
REACH 2018 Nájdite svojich spoluregistrujúcich a pripravte sa na spoločnú registráciu.
Ing. Anita Sáreníková/ Cvičenia z aplikovanej informatiky
komercia vs. dokonalosť
Polymorfizmus.
Metodológia CVM— Client Value Method
4. Užívateľské prostredie UNIXu
De Bonových 6 klobúkov myslenia
Výnimky I, adresáre a súbory
Seminár č. 9 - osnova Metódy sieťového plánovania a riadenia:
Workshop DSpace 5, VŠB-TUO,
Základné tematické okruhy
Ponúkame: poradenstvo technickú podporu - help desk školenia
Interaktívna kniha a e-learningový systém pre deti - Opera nehryzie
8. prednáška 10. november 2003.
D Novinky v DSpace 6 Ivan Masár 6.
Využitie biomasy v environmentálnych biotechnológiách
Podpora adaptívneho WEB-u prostriedkami strojového učenia
Presentation transcript:

Bezpečnosť JAVA technológií Marián Lojka Jaroslav Porubän KPI FEI TU Košice © 2004-2006 http://hornad.fei.tuke.sk/~poruban/bis Jaroslav.Poruban@tuke.sk

Obsah Model zabezpečenia v Jave Sandbox (bezpečnostné prostredie) Správca zabezpečenia Súbory zásad Podpisovanie tried Typy oprávnenia Spätný preklad kódu

Model zabezpečenia v Jave História vývoja zabezpečenia v Jave Zabezpečenie v Jave sa vyvíjalo už od jej samotného počiatku. Podstatné rozdiely, ktoré vznikali sa prejavili vo verziách JDK 1.0, JDK 1.1 a Java 2. V prvých počiatkoch vývoja Javy bola jedna z prelomových technológií tvorba Appletov. Applet je kód, ktorý možno prenášať sieťou a spúšťať na klientských počítačoch prostredníctvom vnorených objektov v dokumentoch formátu WWW.

Model zabezpečenia v Jave Výsledkom prvotnej snahy zabezpečenia, ktoré by nepripustilo poškodenie klientského počítača spustením kódu z Internetu je model zabezpečenia nazývaný SANDBOX (krabica z piesku). Model pieskoviska je bezpečnostné prostredie okolo systému alebo aplikácie, ktoré je postavené na zákaze potenciálne nebezpečných činností (prístup k súborom, sieťovým prostriedkom a pod.).

Model zabezpečenia v Jave Zabezpečenia v Java SDK 1.0 Sandbox

Model zabezpečenia v Jave Zabezpečenia v Java SDK 1.1 Sandbox Podpisovanie vzdialeného kódu

Model zabezpečenia v Jave Zabezpečenia v Java 2 bezpečnostné domény (množina tried) súbory zásad zabezpečenia (security policy file)

Overenie práv a sprístupnenie systémových prostriedkov Sandbox Bezpečnostné prostredie Java 2 Načítanie triedy Overenie práv a sprístupnenie systémových prostriedkov

Sandbox Príklad /** * Metoda pre spustenie ako Aplikacia */ public static void main(String[] args) { System.out.println("3 + 4 = " + add()); } * Metoda, ktoru upravime prostrednictvom Hexakodu * (testujeme ByteCode Verifier) static int add(){ int a,b,c; a = 3; b = 4; // use hex editor to change to "a = 4" in class file return (a+b);

Sandbox Class File Verifier Príklad požitia neinicializovaného registra Zmeníme časť bytecodu a spustíme program znovu. JVM ohlási chybu z dôvodu čítania neinicializovania registra. Program sa ukončí. Dôsledok toho že nie je možné pristupovať do chránenej pamäte. *** static int add(); Code: 0: iconst_3 1: istore_0 2: iconst_4 3: istore_1 1->0 4: iload_0 5: iload_1 6: iadd 7: ireturn java.lang.VerifyError: (class: ClassVerify, method: add signature: ()I) Accessing value from uninitialized register 1 at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) at java.lang.Class.getConstructor0(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at sun.applet.AppletPanel.createApplet(Unknown Source) at sun.applet.AppletPanel.runLoader(Unknown Source) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

Správca zabezpečenia Charakteristika Jadrom celého procesu riadenia prístupu v jazyku Java je trieda SecurityManager definovaná v balíčku java.lang riadi prístup k prostriedkom hostiteľského operačného systému. ak si program vyžiada prístup k určitému prostriedku je požiadavka odovzdaná objektu typu SecurityManager

Správca zabezpečenia Preskúmanie zdrojového kódu triedy FileInputStream Konštruktor ešte pred tým ako dovolí vytvorenie inštancie FileInputStream skontroluje či má právo čítať. public FileInputStream(File file) throws FileNotFoundException { String name = (file != null ? file.getPath() : null); SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkRead(name); } if (name == null) { throw new NullPointerException(); fd = new FileDescriptor(); open(name);

Správca zabezpečenia Vlastnosti Za normálnych okolností nieje žiadna inštancia správcu zabezpečenia aktívna. Výnimkou je spustenie apletu v okne webového prehliadača, kde JVM vytvorí automaticky inštanciu). Tým docieli vytvorenie Sandboxu. V prebehu spracovania je aktívny len jeden Správca zabezpečenia a to posledne priradený systému prostredníctvom funkcie : System.setSecurityManager(...);

Správca zabezpečenia Spôsob inštalácie Správcu zabezpečenia je možné do systému inštalovať dvoma spôsobmi a to: Explicitne inštaláciou v aplikácií. To je vytvorením inštancie SecurityManager a jej priradeniu Systému. Aktiváciou virtuálneho stroja pomocou prepínača –D : java –Djava.security.manager NazovTriedy

Správca zabezpečenia Súbory zásad (policy files) Súbor zásad je jednoduchý plochý súbor obsahujúci oprávnenia (permissions) . Sú to práva užívateľa alebo kódu k vykonávaniu určitej činnosti. Ak je daná činnosť povolená volanie metódy checkPermission() správcom zabezpečenia prebehne bez problémov v opačnom prípade je vyvolaná výnimka. V tomto prípade je potrebné vytvoriť nový súbor zásad alebo modifikovať už vytvorený. Java 2 umožnite definovať oprávnenie nielen na základe danej činnosti ale aj na základe načítania triedy z určitého miesta alebo na základe podpisu vlastníka alebo skupiny vlastníkov.

Správca zabezpečenia Súbory zásad (policy files) Pri inštalovaní prostredia Java je vytvorený štandardný konfiguračný súbor zabezpečenia. Tento súbor je uložený v podadresári /lib/security domovského adresára inštalácie JRE. Konfiguračný súbor sa nazýva java.security a obsahuje časť podobnú následnému výpisu : # The default is to have a single system-wide policy file, # and a policy file in the user's home directory. policy.url.1=file:${java.home}/lib/security/java.policy policy.url.2=file:${user.home}/.java.policy Súbor .java.policy obsahuje základné povolenia na prístup k prostriedkom, ktoré sú rovnaké aké ma aplet po spustení v okne webového prehliadača.

Správca zabezpečenia Ako vytvoriť vlastný súbor zásad Súbory zásad možno vytvárať a upravovať pomocou ľubovoľného textového editoru. K uvedenej činnosti môžeme použiť tiež nástroj policytool dodávaný ako súčasť sady JDK (Java Development Kit). Podrobnejší návod nájdete na http://java.sun.com/j2se/1.3/docs/tooldocs/win32/policytool.html Súbor zásad sa ukladá prostredníctvom File -> Save As Miesto uloženia súboru zásad Certifikát Povolenia ktoré sú uložené v danom súbore zásad. Pridať odobrať alebo editovať zásadu.

Správca zabezpečenia Ako vytvoriť vlastný súbor zásad Pre vytvorenie novej zásady stlačíme v hlavnom okne “Add Policy Entry”. Zobrazí sa ďalší dialóg. Adresa na ktorú sa vzťahuje oprávnenie Alias podpisu užívateľa na ktorý sa vzťahuje oprávnenie Pridať odobrať alebo editovať oprávnenie.

Správca zabezpečenia Ako vytvoriť vlastný súbor zásad CodeBase Definuje na akú adresu je povolené oprávnenie. Signed By Alias podpisu používateľa, ktorého kód je podpísaný. Využíva sa verejný kľúč na zistenie pravosti kódu podpísaného privátnym kľúčom. Add,Remove,Edit Permission Slúži na pridanie odobratie a zmenu oprávnenia. Toto oprávnenie sa vzťahuje na danné miesto alebo kódu podpísaného Aliasom a identifikovaného verejným kľúčom.

Správca zabezpečenia Ako vytvoriť vlastný súbor zásad Permission určuje druh oprávnenia Target Name určuje triedu na ktorú sa bude oprávnenie vzťahovať Action určuje vlastnosť oprávnenia na ktorú sa oprávnenie vzťahuje

Správca zabezpečenia Využitie súboru zásad Pre názornú ukážku vytvorme triedu WriteFile. import java.io.*; public class WriteFile{ public static void main(String[] args) throws IOException{ FileOutputStream fos = new FileOutputStream(“test.txt”); PrintWriter pw = new PrintWriter(fos); pw.println(“Testujem.”); pw.close(); } Trieda vykonáva jednoduchý zápis slova “Testujem.” do súboru “test.txt”.

Správca zabezpečenia Využitie súboru zásad Po spustení vytvorenej aplikácie WriteFile s implicitným správcom zabezpečenia spustíme program príkazom: java –Djava.security.manager WriteFile Chyba, ktorá nastala pre zákaz zapisovania do súboru. java.security.AccessControlException: access denied (java.io.FilePermission test.txt write) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkWrite(Unknown Source) at java.io.FileOutputStream.<init>(Unknown Source) at WriteFile.main(WriteFile.java:18) Exception in thread "main"

Správca zabezpečenia Využitie súboru zásad Vytvoríme nový súbor zásad s názvom WriteFile.policy, ktorý povoľuje zápis ľubovoľnej triedy na disk a uložíme ho do rovnakého adresára ako je trieda WriteFile.class. WriteFile.policy /* AUTOMATICALLY GENERATED ON Mon Apr 10 13:00:32 CEST 2004*/ /* DO NOT EDIT */ grant { permission java.io.FilePermission "<<ALL FILES>>", "write"; }; Spustíme program prostredníctvom príkazu : java –Djava.security.manager –Djava.security.policy=WriteFile.policy WriteFile –Djava.security.policy – identifikuje miesto kde sa nachádza súbor povolení. Program sa vykoná bez problémov pretože SecurityManager je na základe oprávnení definovaných v súbore WriteFile.policy povolí zápis súboru na disk.

Správca zabezpečenia Využitie súboru zásad Oprávnenie založené na adresách URL a podpisu užívateľa WriteFile.policy grant codeBase "file:/D:/_Projects/Secure1" { permission java.io.FilePermission "<<ALL FILES>>", "write"; }; pre oddeľovanie adresárov sa používa bežné lomítko (/) aj v prípade súborového systému Windows. grant signedBy "bis", codeBase "file:/D:/_Projects/Secure1" { permission java.io.FilePermission "<<ALL FILES>>", "write„ aby bolo možné vytvoriť povolenie na základe podpisu je potrebné aby autor kódu vytvoril pár kľúčov a podpísal kód svojím súkromným kľúčom.

Správca zabezpečenia Využitie súboru zásad Ako svoju triedu podpísať Osoba, ktorá chce svoj kód podpísať : Vytvorí dvojicu šifrovacích kľúčov (súkromný a verejný pomocou nástroja keytool). Vytvorí súbor jar, ktorý obsahuje triedy určené k distribucii (k tomu použije nástroj jar). Podpíše súbor jar pomocou súkromného kľúča (k tomuto účelu je určený nástroj jarsigner). Všetkým užívateľom takto zabalených tried poskytne archív jar a verejný kľúč. K tomuto musí vedieť ako nástroj keytool použiť k exportu certifikátu z databázy certifikátov a odoslaniu ich k danným užívateľom.

Správca zabezpečenia Ako vytvoriť pár šifrovacích kľúčov Pre vytvorenie novej dvojice šifrovacích kľúčov je možné použiť nástroj keytool s prepínačom -genkey. Nástroj požadovanú dvojicu vytvorí a uloží ju do databázy certifikátov. Databáza certifikátov (KEYSTORE) Je malá databáza kde su uložené súkromné kľúče a k nim pridružené certifikáty, tiež zoznamy odvolaných certifikátov a dôveryhodných certifikátov. Pokiaľ daný súbor databázy neexistuje, nástroj keytool ho vytvorí.

Správca zabezpečenia Ako vytvoriť pár šifrovacích kľúčov Ak použijeme nástroj keytool s prepínačom –genkey budeme musieť špecifikovať hodnoty: Alias Jednoduchý názov reprezentujúci užívateľa pre ktorého bude pár šifrovacích kľúčov vytvorený. Heslo k zašifrovaným párom kľúčov Heslo, ktoré bude spojené s dvojicou zašifrovaných kľúčov. Adresu URL Umiestnenie databázy certifikátov. Táto adresa môže obsahovať cestu už k existujúcej databáze (súboru) alebo k databáze ktorá sa má vytvoriť. Heslo do databázy certifikátov Ak nebola databáza certifikátov vytvorená použije hodnotu tohto parametru ako heslo pre novú databázu.

Správca zabezpečenia Ako vytvoriť pár šifrovacích kľúčov Nasledujúci príkaz ukazuje ako vytvoriť pár šifrovacích kľúčov : keytool -genkey –alias kosice –keypass tajomstvo –keystore Autor.jks –storepass heslokeystore Po zadaní nasledujúceho príkazu program požiada o zadanie informácií, ktoré slúžia na identifikovanie osoby, ktorá vytvára kľúč. Nakoniec vyzve používateľa k potvrdeniu zadaných údajov.

Správca zabezpečenia Ako vytvoriť pár šifrovacích kľúčov C:\Documents and Settings\Maio>keytool -genkey -alias kosice -keypass heslokeypass -keystore store.jst -storepass heslokeystore What is your first and last name? [Unknown]: Marian Lojka What is the name of your organizational unit? [Unknown]: Student What is the name of your organization? [Unknown]: TU Kosice What is the name of your City or Locality? [Unknown]: Kosice What is the name of your State or Province? [Unknown]: Slovakia What is the two-letter country code for this unit? [Unknown]: SK Is CN=Marian Lojka, OU=Student, O=TU Kosice, L=Kosice, ST=Slovakia, C=SK correct? [no]: yes

Správca zabezpečenia Ako vytvoriť pár šifrovacích kľúčov Na prácu s nástrojom keytool je možné použiť nástroj KeyTool GUI 1.7 vytvorený Wayne Grantom. Ako voľnú verziu ho nájdete tu.

Správca zabezpečenia Ako vytvoriť pár šifrovacích kľúčov Aby sme mohli vytvoriť kľúče musíme vytvoriť novú databázu kľúčov alebo použiť už vytvorenú. Java KeyStore (Sun's KeyStore format) Java Cryptography Extension KeyStore (More secure version of JKS) Public-Key Cryptography Standards #12 KeyStore (RSA's Personal Information Exchange Syntax Standard) Bouncy Castle KeyStore (Bouncy Castle's version of JKS) Bouncy Castle UBER KeyStore (More secure version of BKS)

Správca zabezpečenia Ako vytvoriť pár šifrovacích kľúčov pomocou KeyToolGUI Vytvorenie kľúčov Výber metódy šifrovania Nastavenie potrebných údajov Nastavenie Alias mena

Správca zabezpečenia Ako vytvoriť pár šifrovacích kľúčov pomocou KeyToolGUI

Správca zabezpečenia Ako vytvoriť jar súbor Súbor jar, ktorý obsahuje zverejnené triedy vytvoríme prostredníctvom nástroja jar dodávaného štandardne s JDK. Jar súbor z sôr definovanej triedy vytvoríme nasledujúcim príkazom: jar cf WriteFile.jar WriteFile.class Bližšie sa zaoberať nástrojom jar nieje úlohou tejto prezentácie. Stručnú nepovedú získate zadaním príkazu jar – help.

Správca zabezpečenia Ako podpísať súbor jar Podpísanie súboru jar môžeme vykonať prostredníctvom nástroja jarsigner, ktorý je súčasťou JDK. Pri podpisovaní Vás tento nástroj požiada aby ste zadali rovnaké hodnoty ako pri vytváraní páru šifrovacích kľúčov. Sú to : Adresa URL databázy certifikátov. Heslo do databázy certifikátov. Alias kľúča. Heslo k rozšifrovaniu kľúča. Okrem uvedených hodnôt je potrebné zadať aj názov súboru jar, ktorý sa má podpísať aj meno jeho kópie, ktorá bude podpísaná. jarsigner -keystore keystore.jks -storepass heslokeystore -keypass heslokeypass -signedjar SignedWriteFile.jar WriteFile.jar brown.

Správca zabezpečenia Štruktúra podpísaného jar súboru SignedWriteFile.jar META-INF BROWN.DSA BROWN.SF MANIFEST.MF Zverejnené triedy

Správca zabezpečenia Export a Import verejného kľúča databázy certifikátov Export a Import verejného kľúča databázy je potrebné vykonať ak chcete preniesť kľúč k druhej osobe, ktorá používa vami podpísaný kód a potrebuje si overiť či kód nebol od jeho vytvorenia a podpísania zmenený. Postup exportu aj importu je v programe KeyToolGUI intuitívny avšak tento postup je možné vykonať prostredníctvom už skôr uvedeného nástroja keytool. Export : keytool -export –alias brown –keystore keystore.jks –storepass heslokeystore –file Brown.cer. Import: keytool -import –alias brown –keystore keystore.jks –storepass heslokeystore –file Brown.cer

Správca zabezpečenia Ako upraviť súbor zásad. Overenie identity vo vhodnej databáze certifikátov. Posledným krokom je úprava súboru zásad takým spôsobom aby našiel cestu k databáze certifikátov, kde sú uložené verejné kľúče vrátane ich aliasov. Túto činnosť je možné vykonať prostredníctvom nástroja policytool. URL k databáze certifikátov

Správca zabezpečenia Ako upraviť súbor zásad. Overenie identity vo vhodnej databáze certifikátov. WriteFile.policy keystore "file:/D:/_Projects/Secure1/keystore.jks"; grant signedBy "brown" { permission java.io.FilePermission "<<ALL FILES>>", "write"; }; Spustenie programu : Pre spustenie programu WriteFile uloženého v súbore SignedWriteFile.jar napríklad tento príkaz : java -cp SignedWriteFile.jar -Djava.security.manager -Djava.security.policy=WriteFile.policy WriteFile

public key certificate Súbory zásad FileWriter.java 1. javac FileWriter.class 3. Keytool -genkey 2. jar Databáza kľúčov Jamesa Browna Keystore.jks FileWriter.jar Alias brown 5. 4. jarsigner private key Keytool -export SignedFileWriter.jar public key certificate JamesBrown.cer

Súbory zásad 1. 3. 2. 4. Exception SignedFileWriter.jar od James Brown java security manager datový súbor Exception Program nemá oprávnenie pre zápis údajov na disk 3. Policy tool 2. JamesBrown.cer od James Brown Keytool -import Policy súbor Jennifer Lopez udeľuje oprávnenie kódu podpísaného aliasom “brown” na zápis údajov na disk Databáza kľúčov Jennifer Lopez 4. Keystore.jks SignedFileWriter.jar java security manager Brownov public key certificate datový súbor

Typy oprávnenia Základná špecifikácia Všetky platné oprávnenia definované v súbore zásad sú v Jave interne reprezentované ako inštancia abstraktnej triedy Permission definovaného v balíku java.security. Ak sa má vykonať špecificky nebezpečná činnosť volá sa metóda checkXXX() a tá vola metódu checkPermission() definovanej v triede AccessControler. FileOutpuStream security.checkWrite(fileName); SecurityManager checkPermission(new FilePermission(file,SecurityConstants.FILE_WRITE_ACTION)); AccessController public static void checkPermission(Permission perm) throws AccessControlException{

Typy oprávnenia Základné rozdelenie typov oprávnení.

Typy oprávnenia Základná charakteristika Určité triedy odvodené od triedy Permission sa používajú pre jeden typ oprávnenia, ako napríklad java.io.FilePermission, ktorej inštancia sa používa k povoleniu prístupu k súboru alebo k skupine súborou. Iné triedy ako napríklad java.lang.RuntimeException sa používajú k popisu viacej typov oprávnenia. Vo všetkých triedach odvodených od triedy Permission je zapuzdrená jedna alebo viacej hodnôt String. Uvedené hodnoty popisujú špecifický typ oprávnenia alebo typ povoleného prístupu. Typy prístupu sa označujú tiež ako zoznam akcií (action list).

Typy oprávnenia BasicPermission Táto trieda je definovaná v baliču java.security. Je priamym potomkom triedy Permission a rovnako ako jej predok je abstraktnou triedou. Na rozdiel od je bázovej triedy Permission obsahuje metódu implies(Permission per). Metóda umožňuje určiť čí dané oprávnenie zahrnuje v sebe aj iné oprávnenie. Triedy dedené od BasicPermission AWTPermission NetPermission PropertyPermission ReflectPermission RuntimePermission SecurityPermission SerializablePermission SQLPermission Bližší popis tried nájdete www.java.sun.com.

Oprávnenie k čítaniu adresára temp a k čítaniu súboru readme.txt. Typy oprávnenia Oprávnenie FilePermission. Použitím tejto triedy sa určuje prístup k súborom alebo adresárom. Zoznam operácií by mal obsahovať jednu alebo viac nasledujúcich položiek : read, write, execute, delete. Väčšinou bude cieľ oprávnenia zastupovať názov súboru alebo adresára. Následne je uvedených nikoľko príkladov: Oprávnenie k čítaniu adresára temp a k čítaniu súboru readme.txt. grant { permission java.io.FilePermission “C:/temp”,”read”; permission java.io.FilePermission “C:/temp/readme.txt”,”read”; }

Typy oprávnenia Oprávnenie FilePermission. Oprávnenie k čítaniu adresára a všetkých v ňom uložených súborov. grant { permission java.io.FilePermission “C:/temp/*”,”read”; } Oprávnenie k čítaniu všetkých súborov v tomto adresári a jeho podadresároch. grant { permission java.io.FilePermission “C:/temp/-”,”read”; } Oprávnenie k čítaniu a zápisu všetkých súborov a adresárov. grant { permission java.io.FilePermission “<<ALL FILES>>”,”write,read”; }

Typy oprávnenia Oprávnenie SocketPermission. Schopnosť apletov vytvárať soketové pripojenie je obmedzené. Nepodpísané aplety môžu vytvárať soketové pripojenie iba k serveru z ktorého boli stiahnuté. Samotné oprávnenie sa skladá z dvoch položiek a to : Názov hostiteľa(názov DNS počítača v sieti alebo jeho IP). Zoznam akcií, ktoré sú povolené pri operáciách s hostiteľom Zoznam akcií môže obsahovať jednu alebo viacej nasledujúcich položiek : accept, connect, listen, resolve.

Typy oprávnenia Oprávnenie SocketPermission. Connect Umožňuje určiť povolenie ktoré lokálnemu počítaču dovoľuje vytvoriť soketové pripojenie k iným počítačom. Listen Udeľuje oprávnenie k sledovaniu prichádzajúcich pripojení. permission java.net.SocketPermission “localhost:500-5010”,”listen”; Accept Udeľuje, ktoré počítače môžu vytvoriť soketové pripojenie k lokálnemu počítaču. permission java.net.SocketPermission “*.tuke.sk:6000-6500”,”accept”; Reslove Určuje povolenie na preklad názvov hostiteľov na adresy IP a naopak.

Spätný preklad bajtového kódu Nebezpečie spätnej analýzy DJ Decompiler

Nechránený prístup k reťazcom Spätný preklad bajtového kódu Nebezpečie spätnej analýzy Súbor WriteFile.class po spätnej anlýze. Nechránený prístup k reťazcom

Spätný preklad Protiopatrenia Jednou z možností ako je predísť nebezpečiu pred spätným prekladom je použitie Obfuscator-a (Zatemňovača). Je to program, ktorý je určený pre jeden cieľ a to zmareniu spätného prekladu. Jedným z takýchto nástrojov je JShrink.

Nastavenie úrovne zatemňovania tried Spätný preklad Protiopatrenia JShrink Nastavenie úrovne zatemňovania tried

Bibliografia [1] Marco Pistoia, Duane F. Reller : Java 2 Network Security , Jun 1999 [2] Scott Oaks:Java Security 2nd Edition, O'REILLY , May 2001 [3] BretSpell : Java Programujeme Profesionálne, Január 2002 [4] Markus Falkhausen:Contributions to Information Technology, http://www.falkhausen.de/en/diagram/diagram.html [5] James A. Vuccolo : Java - A Secure Programming Language, September 2000 http://www.personal.psu.edu/staff/j/v/jvuccolo/javasecurity/index.htm [6] Gary McGraw and Edward Felten: The Original Applet Sandbox, Januar 2000 http://www.securingjava.com/chapter-two/chapter-two-2.html [7] Scott Oaks:Java Security, May 1998 [8] Sun Microsystems: The Source for Developers, http://developers.sun.com/techtopics/security/index.html [9] Sun Microsystems: The JavaTM Tutorial , Trail: Security in Java 2 SDK 1.2 http://java.sun.com/docs/books/tutorial/security1.2/index.html [10] Joseph A: Bank:Java Security, http://swissnet.ai.mit.edu/~jbank/javapaper/javapaper.html