13. Outside the Box

Preview:

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

Citation preview

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

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

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

Application Design

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

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

Self-Contained(1/3)

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

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

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

physical control

virtual control

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

passphrase : PBE 클래스 smart card

Self-contained(2/3)

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

기밀성인증

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

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

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

인터넷

상 점 사용자

인증기관 (CA)

2. 인증서 2. 인증서

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

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

4. 인증기관인증서 요청

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

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

7. 인증기관인증서 요청

10. 구매 항목 배달

Self-contained(3/3)

Demonstration Software(1/2)

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

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

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

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

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

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

Demonstration Software(2/2)

구매자 판매자3. un 제공

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

배포

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

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

rn un = k k( 암호화 키 )

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

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

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

Client/Server(1/2)

Client/server 구조 two-tier

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

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

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

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

분산기술 : DCOM, CORBA

Client/Server(2/2)

요구사항 인증

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

기밀성 접근 제어

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

Client Applets(1/2)

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

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

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

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

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

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

Client Applets(2/2)

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

공간 내부로만 한정

Signed Applets 크고 무거움

Access Control

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

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

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

식별과 인가 정보 리스트 JDK

java.security.acl 패키지

Decompilers and Bytecode Obfuscation(1/5)

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

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

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

JDK : javap

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

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

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

상용 프로그램 : Jshrink

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

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; }}

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; }}

Decompilers and Bytecode Obfuscation(5/5)

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

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

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

Endpoint Security(1/2)

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

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

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

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

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

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

Endpoint Security(2/2)

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

자바 애플릿 : sandbox

File Security

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

암호 중요한 파일 키 관리

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

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 많은 운영체제는 디스크로부터 사실상 정보를 지우지 않음

Virtual Memory & Memory Scanning

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

메모리 스캔 공격 프로그램

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

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

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

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, ..

응용 계층

트랜스포트 계층

네트워크 계층

링크 계층

Summary

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

비용 또는 시간

보안성