13. Outside the Box

26
13. Outside the Box 컴컴컴컴컴컴 컴컴컴컴컴컴컴 컴컴컴 컴컴 3 컴컴 컴 컴 컴 (You, hyong jun) Software Engineering Lab. Dept. of Computer Engineering

description

13. Outside the Box. 컴퓨터공학과 소프트웨어공학 연구실 석사 3 학기 유 형 준 (You, hyong jun) Software Engineering Lab. Dept. of Computer Engineering. Contents. Introduction Application Design Decompilers and Bytecode Obfuscation Endpoint Security File Security Network Security Summary. Introduction. - PowerPoint PPT Presentation

Transcript of 13. Outside the Box

Page 1: 13. Outside the Box

13. Outside the Box

컴퓨터공학과 소프트웨어공학 연구실

석사 3 학기 유 형 준(You, hyong jun)

Software Engineering Lab.

Dept. of Computer Engineering

Page 2: 13. Outside the Box

Contents

Introduction Application Design Decompilers and Bytecode Obfuscation Endpoint Security File Security Network Security Summary

Page 3: 13. Outside the Box

Introduction

암호 정보 보호의 강력한 도구 애플리케이션 프로그램의 일부분

보안 애플리케이션 개발 전체 시스템을 조사 취약점 분석 결점 보완

Page 4: 13. Outside the Box

Application Design

애플리케이션 구조 독립형 애플리케이션 클라이언트 / 서버 구조

애플리케이션의 클라이언트 플랫폼 웹 브라우저의 전망과 기대

Page 5: 13. Outside the Box

Self-Contained(1/3)

의미 한 장소에 애플리케이션의 모든 로직 (logic) 을 가짐

Java : 애플리케이션이 사용하는 모든 클래스 파일이 하나의 기계상에 존재

네트워크 비 접속 보안 요구사항이 한정적임 데이터 간취

physical control

virtual control

데이터 암호화암호화 키 관리

passphrase : PBE 클래스 smart card

Page 6: 13. Outside the Box

Self-contained(2/3)

네트워크 접속 email 클라이언트 , 웹 브라우저 보안 요구사항이 복잡

기밀성인증

신용 카드 구매자와 판매자간의 상호 인증구매자의 신용카드 번호에 대한 기밀성

Page 7: 13. Outside the Box

3. 사용자의 개인키로 암호화한 메세지를 인증서와 함께 송부

6. 상점의 개인키로 암호화한 메시지를 인증서와 함께 송부

인터넷

상 점 사용자

인증기관 (CA)

2. 인증서 2. 인증서

1. 공개키를 등록 1. 공개키를 등록

9. 상점의 공개키로 암호화된 사용자의 신용카드 번호와 구매 항목 전송

4. 인증기관인증서 요청

5. 인증기관의인증서 수신 후

사용자 인증서 서명검증8. 인증기관의인증서 수신 후상점 인증서 서명검증

7. 인증기관인증서 요청

10. 구매 항목 배달

Self-contained(3/3)

Page 8: 13. Outside the Box

Demonstration Software(1/2)

“ 데모” 소프트웨어 판매자 : 사용자에게 미리 사용하게 함으로써 필요성 부여 구매자 : 경험 후 필요성 여부 판단 후 구매

판매자로부터 애플리케이션의 나머지 부분에 대한 패스워드 수신

크랙 역 공학 과정으로 소스를 역 컴파일함

일부 키 클래스 파일 암호화 스킴 구매자에게 복호화 키 제공

소프트웨어 일련 번호에 기반을 둠크래킹으로부터 보호

구매자의 복사본 판매 방지 불가

Page 9: 13. Outside the Box

Demonstration Software(2/2)

구매자 판매자3. un 제공

2. 구매 요청1. “demo” 소프트웨어와 랜덤 값 rn

배포

일부 키 클래스 파일 암호화 스킴 동일한 키 (k) 로 암호화함 각 소프트웨어마다 다른 복호화 키 요구

각 소프트웨어는 일련 번호를 가지고 있음

rn un = k k( 암호화 키 )

rn(k 를 구하기 위하여 un 과 조합되는 랜덤 값 )

un(k 를 구하기 위하여 rn 과 조합되는 일련 번호와 관련이 있는 부분 키 )

암호화 키 (k) 노출시 크래킹 프로그램에 의한 공격 가능

Page 10: 13. Outside the Box

Client/Server(1/2)

Client/server 구조 two-tier

다수의 클라이언트와 단일 서버로 구성 three-tier

클라이언트와 서버 사이에 layer 가 있음 transaction layer 또는 business layer

미들웨어 인터넷 통신 프로토콜 : TCP/IP

데이터베이스 액세스 미들웨어 : ODBC

분산기술 : DCOM, CORBA

Page 11: 13. Outside the Box

Client/Server(2/2)

요구사항 인증

광범위하고 자유분방하게 분산되어 있는 클라이언트사칭 (pretending) 공격

기밀성 접근 제어

접근 제어에 대한 로직 (logic) 은 서버상에 설정

Page 12: 13. Outside the Box

Client Applets(1/2)

Java 클라이언트 / 서버 애플리케이션 클라이언트 플랫폼

웹 브라우저 웹 서버로부터 자동적으로 클라이언트로 로드됨

클라이언트 인스톨이 필요 없음 브라우저의 자바 지원

Java 1.1 지원Sun 은 Porting and Tuning Center 설립

브라우저와 자바 버전의 동시성 지원

각 브라우저는 각기 자신의 Java Implementation 을 가지고 있음Virtual machine 과 API 버그 또는 모순엄격한 태스팅 필요

Page 13: 13. Outside the Box

Client Applets(2/2)

Sandbox 외부로부터 수신한 애플릿의 네임 스페이스를 브라우저의 작업

공간 내부로만 한정

Signed Applets 크고 무거움

Page 14: 13. Outside the Box

Access Control

애플리케이션의 자원에 대한 접근 제어 할당된 업무나 접근을 원하는 사용자의 역할에 의해 제어

접근 제어 리스트 (access control list; ACL) 결정된 정책을 구현

특별한 시스템 , 응용 프로그램 , 서브 시스템 , 또는 시스템 그룹을 책임지는 관리자에 의해 수립

식별과 인가 정보 리스트 JDK

java.security.acl 패키지

Page 15: 13. Outside the Box

Decompilers and Bytecode Obfuscation(1/5)

역 컴파일러 클래스 파일 소스 코드

프리웨어 : 모카 (Mocha), JAD

상용 프로그램 : WingDis, SourceAgain, Deja Vu

JDK : javap

Bytecode Obfuscation 역 컴파일과 역 어셈블 과정을 늦춤

컴파일된 자바 클래스 파일로부터 사용되지 않는 코드 , 데이터 , 그리고 심볼릭 이름 등을 제거함

역 컴파일된 소스 코드 판독하기 어려움프리웨어 : Hashjava, Jobe

상용 프로그램 : Jshrink

Page 16: 13. Outside the Box

Decompilers and Bytecode Obfuscation(2/5)

// test.javaClass test {

public static void main (String argv[]) { System.out.println(“Hello, World); }}

// test.javaClass test {

public static void main (String argv[]) { System.out.println(“Hello, World); }}

// test.mochaimport java.io.printStream;class test{ public static void main (String argv[]) { System.out.println(“Hello, World); }}

// test.mochaimport java.io.printStream;class test{ public static void main (String argv[]) { System.out.println(“Hello, World); }}

Mocha 사용 사례

java mocha.Decompiler test.class

Page 17: 13. Outside the Box

Decompilers and Bytecode Obfuscation(3/5)

Jshrink 사용 사례

c:\jshrink\jshrink random

// random.javaclass Random{ int seed; int generate() { seed = seed * 31413852 + 1; return seed; } Random() { seed = 1; }}

// random.javaclass Random{ int seed; int generate() { seed = seed * 31413852 + 1; return seed; } Random() { seed = 1; }}

Page 18: 13. Outside the Box

Decompilers and Bytecode Obfuscation(4/5)

Jshrink 수행 후 역 컴파일 결과 private field seed 를 Y 로 변환 protected method generate 을

Y 로 변환 .class 파일에서 사용되지 않는

attributes 제거

// random.classclass Random{ int Y; int Y() { Y = Y * 31413852 + 1; return Y; } Random() { Y = 1; }}

// random.classclass Random{ int Y; int Y() { Y = Y * 31413852 + 1; return Y; } Random() { Y = 1; }}

Page 19: 13. Outside the Box

Decompilers and Bytecode Obfuscation(5/5)

애플리케이션 클래스 파일 암호화 ClassLoader CipherInputStream

암호화 키 관리 애플리케이션과 키를 같이 관리 애플리케이션 실행시마다 키 입력

“ 보안” 알고리즘보다 강력한 암호 알고리즘 사용

Page 20: 13. Outside the Box

Endpoint Security(1/2)

암호 두 부분간 안전한 통신 서비스 제공

endpoint 간 인증 , 세션 암호 , 신뢰하고 사용할 수 있는 코드

SafeTalk 애플리케이션 클래스 파일에 대한 무결성

javax.crypto.CipherOutputStream 클래스 변경 사용자 몰래 다른 IP 주소로 평문을 송신

Session 클래스 변경 동일한 암호화 키를 선택

바이러스나 악한 ActiveX control 에 의한 변경서버로부터 전송 중 변경 발생

Page 21: 13. Outside the Box

Endpoint Security(2/2)

애플리케이션 외부에 대한 방어불확실한 파일 전송 프로토콜 사용 금지바이러스 스캔불확실한 다운로드 목록 실행 금지

자바 애플릿 : sandbox

Page 22: 13. Outside the Box

File Security

로컬 디스크에 있는 파일 도난 , 변경 등 바이러스 , 트로이 목마

암호 중요한 파일 키 관리

제거할 수 없는 디스크스마트 카드 passphrase

Page 23: 13. Outside the Box

Serialization & Deleting Files

Serialization object serialization 기술

JDK 1.1

java object비 보안

중용한 데이터 암호화 object serialization 과 encrypted data stream 의 조합

object serialization : ObjectOutputStream

encrypted data stream : CipherOutputStream

javax.crypto.SealedObject 사용

Deleting Files 많은 운영체제는 디스크로부터 사실상 정보를 지우지 않음

Page 24: 13. Outside the Box

Virtual Memory & Memory Scanning

가상 메모리 부가적인 컴퓨터 메모리로서 디스크 사용 기술의 일부 더 많은 애플리케이션의 동시 수행 가능 애플리케이션 실행 동안 메모리 공간이 디스크에 기록됨

메모리 스캔 공격 프로그램

바이러스 , 트로이 목마가상 메모리 swap file 을 탐색

개인키 , 평문 , 그 외 유용한 정보

가상 메모리 사용 금지 애플리케이션 메모리 공간을 분리한 운영 시스템 사용

Page 25: 13. Outside the Box

TCP/IP 프로토콜

IP : 비 보안 프로토콜로서 IP 상위 계층에서 암호 사용응용 계층의 애플리케이션에서 암호 사용

SafeTalk, CipherMail

IPng(IP next generation) : 인증과 프라이버시 서비스 제공

Network Security

TELNETTELNET FTPFTP SMTPSMTP

TCPTCP

SNMPSNMP

UDPUDP

IPIP

X.25, IEEE 802.X, ..X.25, IEEE 802.X, ..

응용 계층

트랜스포트 계층

네트워크 계층

링크 계층

Page 26: 13. Outside the Box

Summary

보안성 비용 위험 조화 가용성

비용 또는 시간

보안성