Java 보안 오세종 1
목차 Java 의역사 Java 의특징 Java Development Kit (JDK) Java 에서의보안문제 Security Layer in Java Java 보안참조모델 Java 보안 API Java Protected Domains 보안모델 2
Java 의역사 1991년 Sun Microsystem 에 Green Team 발족 가정용기구들에대한운영체제개발착수. ( 제임스고슬링 ) C++ 를기반으로한 Oak 개발 PDA(Personal Disital Assistant) 에적용 1992년 Timer Waner 의대화형 TV System 3DO 의 Game기 1994년 NCSA 의모자이크와 Oak 의인터페이스개발 이름개명 : Java 1995년 Java, HotJava 공식발표 Java를수용한 Netscape Navigator 베타버전발표 JDK 1.2 발표 http://java.sun.com 3
Java 의역사 네트워크상에서실행되기위하여코드는플랫폼에의존하지않으며안전성이보장되어야한다. 단순, 친숙, 객체지향, 안전, 강력, 간편, 확장성, 동적,... 4
Java 의특징 Compile 도되고 Interpret 도된다. Java Source Java Compiler Byte Code.class 실행 Java Interpreter Byte Code :.exe 형태의실행파일과는다르다. 특정하드웨어또는 OS 에종속된기계어가아닌가상기계어 Applet, Application 5
Java 의특징 구조중립과이식성 Machine A C Pgm. Compile 실행화일 Machine B? 실행되지않을수있다. 재 Compile 필요 (Porting) 6
Java 의특징 친숙, 단순 C, C++ 에기반 Pointer 등복잡한부분제외 객체지향 객체지향언어의모든장점제공 multi thread 동일한 Program 안에있는여러독립적인명령어들이동시에실행될수있도록지원 ( 멀티쓰레드는프로그램내부에서한번에여러가지일을할수있게한다. 예를들면한쓰레드는애니메이션을플레이하고다른쓰레드에서는오디오를플레이할수있다 ). 7
Java 의특징 dynamic Loading Java Program 이실행될때전체가메모리에 load 되는것이아니고필요한객체 class 만 load ( 주어진시간에필요한만큼만메모리차지 ) Java API 제공 표준 Library + API(Application Programmer s Interface ) 언어, multi thread, 예외처리, 그래픽, 오디오, 네트워크지원등 Window Programming 에필요한거의모든기능지원 ) 8
Java Development Kit (JDK) JDK 에포함된내용 (JDK 1.2) Java Virtual Machine (JVM) and core Java API class libraries Core source code for the Java API libraries (JFC) Developer and administrative tools Demos showing the new JDK 1.2 features C header files to extend the core platform with C native methods 9
Java Development Kit (JDK) Java Virtual Machine JVM 은플랫폼독립적인가상컴퓨팅환경으로서 Java 언로로작성된프로그램들은 JVM 위에서실행된다. JVM 은높은보안성을제공한다. Java Program JVM JVM JVM Window NT Unix Mac. 10
Java Development Kit (JDK) 인터넷익스플로러에설치된 JVM 11
Java Development Kit (JDK) Core API Libraries Performance enhancements Security enhancements Java Foundation Classes (JFC) enhancements JDBCTM enhancements Java Interface Definition Language (IDL) JavaBeansTM enhancements Audio enhancements Internationalization Input Method Framework Remote Method Invocation (RMI) enhancements Serialization enhancements Collections enhancements Reference Objects Reflection enhancements Java Native Interface (JNI) enhancements Java Extensions Framework Java ARchive (JAR) enhancements Package Version Identification New Debugger Interface 12
Java Development Kit (JDK) Java Runtime Environment (JRE) Java Virtual Machine (JVM) core API libraries 와다른지원화일들로구성 자바프로그램이실행될수있는최소한의환경 컴파일러, 디버거, tool 등은포함되어있지않다. JDK 를설치하면 JRE 는따로설치할필요가없다. 경우에따라 JRE 만을다운로드해서쓸수있다. 13
Java 에서의보안문제 Remote Java Applet Web Browser Attacker 다른컴퓨터에서만들어진프로그램이내컴퓨터에서실행!? 그것도인지하지못한상태에서 14
Java 에서의보안문제 applet 개발자에의한보안위협 트로이목마삽입, 자원불법 access 기능삽입 시스템수행방해기능삽입 불쾌감을유발하는화면,sound 생성 applet 전송시의보안위협 전송방해, 가로채기, 변조, 위조 applet 수행시의보안위협 server 의정보유출 (disclosure) 불법수정사용, 불법복제 15
Security Layer in Java Java 프로그램의생성과실행 Compile Time Run Time Source Compiler Byte Code Verifier Class Loader ( move through the network or a file system ) Interpreter Code gen. 16
Security Layer in Java.class 파일의실행과정 Remote class file Local class file Bytecode verifier Core API class file Class loader Security package Core Java API Security manager Access controller Operating System 17
Security Layer in Java Security Layer L4 L3 L2 L1 Protecting the F.S. & N/W Class loader Verify the byte code The language & compiler 18
Security Layer in Java Layer 1 : The Language & Compiler Language 수준에서프로그래머의의도적인,, 혹은혹은실수에의한의한error 의유발을최소화 no pointer pointer 가가리키는데이터를우연히지우거나새데이터를그지점에저장하는오류가능성 pointer 대신에 real array 제공 garbage collection programmer 의관리소홀에의한메모리누출방지 garbage collector 19
Security Layer in Java Layer 1 : The Language & Compiler 엄격한 type checking private type 의객체를지원하여다른 class 에서이용할수없도록함 (cf. C++ 의 data hiding ) 적용예 : password 를다루는객체 bound checking 배열사용시배열의 size 를넘어서객체를사용하고자시도하면 compile error 발생 int arry[10] -> arry[11]? (cf. C/C++) 20
Security Layer in Java Layer 1 : The Language & Compiler late binding (dynamic binding) 객체들이필요하기전까지는메모리위치로 load 되거나지정되지않게함으로써클라이언트머신에서 Java 프로그램이 class 의물리적메모리위치를예측하는것이불가능하도록만든다. final method/class 선언 중요한 class 에대해서는 sub classing 하는것을방지, 주요 method 에대한 overriding 방지 21
Security Layer in Java Layer 2 : Verify the byte code 악의적공격자가 Java compiler 를수정하여 Java 의 safety rule rule을범하거나,, 정상적 code 가 N/W N/W 전송도중변경변경되는되는것에것에대한대한검증 byte code 가실행되기전에 Verifier 가 byte code 에대한완전성여부를 check 하여보안성보장 verification 이끝나면다음의 property 를보장 그코드는 server 에의해정상적으로 compile 되었고안전하게전송되었다. 그코드는 operand stack overflow 혹은 underflow 를일으키지않는다. 22
Security Layer in Java Layer 2 : Verify the byte code 모든 opcode 에대한 parameter 의 type 은 correct 하다. integer 가 pointer 로 convert 되는것과같은 illegal data conversion 은일어나지않는다. object field access are known to be correct. 이와같은 verification 은 runtime 시 code 의실행속도를빠르게하는요인으로작용한다 23
Security Layer in Java Layer 3 : The class Loader Server remote.class untrusted? Client Class loader local.class trusted Class Loader 가 class 를 load 할때그것이네트워크로부터온것인지, local file 시스템에서 load 된것인지를구별하여서로독립된실행환경을갖도록함으로써네트워크 source 로부터의보안위협을방지한다. (Sandbox Model) 24
Security Layer in Java 외부로부터온클래스가마치내부의클래스인것처럼위장할수있는방법은없다. I do whatever I want! Free me! Local code sandbox valuable resources <Sandbox Model> Remote code 25
Security Layer in Java Layer 4 : 파일시스템, 네트워크접근보호 파일시스템보호 (protecting the file system) remote code 가 local file 시스템을 access 하려고할때이를방지함 네트워크접근보호 (network security) check the origin of code fragment. public key, cryptography 지원으로 remote code 가전송도중변형되는것을방지 26
Java 보안참조모델 ( for JDK ) Security Reference Model 기초가되는보안요구사항을정의 보안테스트계획을위한기준의역할 JDK 의보안내용에대해기술 (JDK 가어떻게보안을구현하는지는설명없음 ) for Developers of Java enabled applications System administrator Security auditors Licenses 27
Java 보안참조모델 ( for JDK ) Classes of Model Components Server Application Java Applet JVM Server Platform Client Platform 28
Java 보안참조모델 Classes of Model Components Java Applet the executable Java program ( downloaded from the server) applet 의 loading 과 security 는 application 의 control 하에있음. Java-enabled application A trusted, statically configured web-client program application 은 Java-supplied class code + application-defined extensions 포함 HotJava, Nevigator 등의 Web Browser 29
Java 보안참조모델 Classes of Model Components Java Virtual Machine (JVM) the runtime environment for Java application and applets client/server platform JVM, Java app., server 의실행을지원하는 middleware, os, h/w, n/w 의집합 server the source of web data, including applet the server is not necessarily Java program 30
Java 보안참조모델 Principals (users) Client Administrator Java-enabled app. 를설정, setup End-user Java-enabled app. 의사용자 Server administrator controls Java applet Application provider Java-enabled app. 의제작업체 (ex. Netscape) security policy 모델을 implement 31
Java 보안참조모델 Resources Client devices client platform 에존재하는 file, terminal, n/w 등 Server devices server platform 에존재하는 file, terminal, n/w 등 Object Data Java environment 내에정의된 Object client 와 server 간에주고받는임의의 binary data 32
Java 보안참조모델 Global Security Invariant Security reference 모델은 security 에대한 layered definition 으로구성되어있다. Global security invariant 는가장상위의 layer 에해당하는 abstract security Property Download 된 applet 은 client system admin. 이나 end user 가설정한 application policy 에의해제약을받는다 33
Java 보안참조모델 Security Transaction 이후의내용은 Java application 이수행됨에있어서 initial state 로부터시작하여, execution 이이루어지는각단계마다의필요한보안요구사항을정의한다. 또한보안을위배하려는시도가발생할때어떻게처리해야하는지를규정하고있다. 34
Java 보안참조모델 Security Transaction Secure initial state Class Loader constructor Load Class Very/Link Class Class Initialization Applet Access Device attempt Applet Manipulate Thread Attempt Applet Manipulate Process Attempt Applet Modify NameSpace Attempt Application Manipulate Process Attempt Server Platform to Client Platform Data stream 35
Java 보안참조모델 Security Transaction Ex) Load class JVM 이 application 의 loadclass method 를 call Java-supplied class loader 를사용하여 System class 를찾는다. non-system class 들을검증하기위해 Java-supplied Verifier/Linker 를 call 한다. class code 에이름을올바르게 mapping 한다. linking/verifying 동안 exception 들을 catch 하거나 ignore 하지않는다. 36
Java 보안 API 개요 Java 로개발된 applet 에대한무결성을보장하고, 거기에추가하여인증성과기밀성을부여함으로서보안기능을향상시키고자함. SandBox 모델에의한 applet 의응용성저하보완 JDK1.1 version 부터지원 ( java.security package ) 제공기능 전자서명 (digital signature ) : DSA, RSA Message Digest : MD5, SHA-1 37
Java Protected Domains 보안모델 sandbox 모델의한계를극복하고자제안 sandbox 모델의확장개념 Java 보안 API 와연계해서사용 기본개념 (applet) d.class c.class Protected Domain A Permission 1 N/W b.class a.class Protected Domain B Permission 2 File System Execution Stack Security Policy 38
Java Protected Domains 보안모델 전자서명이된 applet 은소속 domain 에따라 N/W, file 시스템을선택적으로 access 가능 ( 전자서명이되지않은 applet 은기존의 sandbox 모델을동일하게적용 ) protect domain 은 security level 과유사한개념 domain 에따라 permission 의내용이결정됨 ( domain = a set of permission ) 39
Java Protected Domains 보안모델 Java Protected Domains - 네트워크자원에대한접근을선택적으로허용 - 관리자는보안정책을설정할수있다. - Default for Java protected domains - 파일시스템에대한제한적접근 Extended Java Sandbox Java Sandbox -Unsigned code -no access 40
Java Protected Domains 보안모델 Remote class file Local class file Signed class file Core API class file Bytecode verifier Class loader Security package Core Java API key database Security manager Access controller Operating System 41
참고문헌 이강수, Java 환경에서의보안위협과메커니즘, 한국정보과학회지, 1972 년 7 월 pp48-56. HotJava : The Security Story, http://www.javasoft.com/sfag/may95/security.html M.Erdos, B.Hartman, M.Mueller, Security Reference Model for the Java Developer Kit 1.0.2, http://www.javasoft.com/security/srm.html. Java Security, http://www.javasoft.com/security/ FAQ s - Java Protected Domains Security Model, http://java.sun.com/marketing/collcteral/prot_dom.html Java Security API Overview, http://www.javasoft.com/security/ 42