260 likes | 356 Views
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.
E N D
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 클라이언트, 웹 브라우저 • 보안 요구사항이 복잡 • 기밀성 • 인증 • 신용 카드 • 구매자와 판매자간의 상호 인증 • 구매자의 신용카드 번호에 대한 기밀성
9. 상점의 공개키로 암호화된 사용자의 신용카드 번호와 구매 항목 전송 7. 인증기관 인증서 요청 10. 구매 항목 배달 4. 인증기관 인증서 요청 5. 인증기관의 인증서 수신 후 사용자 인증서 서명검증 8. 인증기관의 인증서 수신 후 상점 인증서 서명검증 인증기관(CA) 1. 공개키를 등록 1. 공개키를 등록 2. 인증서 2. 인증서 6. 상점의 개인키로 암호화한 메시지를 인증서와 함께 송부 3.사용자의 개인키로 암호화한 메세지를 인증서와 함께 송부 Self-contained(3/3) 인터넷 상 점 사용자
Demonstration Software(1/2) • “데모” 소프트웨어 • 판매자 : 사용자에게 미리 사용하게 함으로써 필요성 부여 • 구매자 : 경험 후 필요성 여부 판단 후 구매 • 판매자로부터 애플리케이션의 나머지 부분에 대한 패스워드 수신 • 크랙 • 역 공학 과정으로 소스를 역 컴파일함 • 일부 키 클래스 파일 암호화 스킴 • 구매자에게 복호화 키 제공 • 소프트웨어 일련 번호에 기반을 둠 • 크래킹으로부터 보호 • 구매자의 복사본 판매 방지 불가
2. 구매 요청 3. un제공 Demonstration Software(2/2) • 일부 키 클래스 파일 암호화 스킴 • 동일한 키(k)로 암호화함 • 각 소프트웨어마다 다른 복호화 키 요구 • 각 소프트웨어는 일련 번호를 가지고 있음 • rn un = k • k(암호화 키) • rn(k를 구하기 위하여 un과 조합되는 랜덤 값) • un(k를 구하기 위하여 rn과 조합되는 일련 번호와 관련이 있는 부분 키) • 암호화 키(k) 노출시 크래킹 프로그램에 의한 공격 가능 1. “demo” 소프트웨어와 랜덤 값 rn배포 구매자 판매자
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) • Mocha 사용 사례 java mocha.Decompiler test.class // test.java Class test { public static void main (String argv[]) { System.out.println(“Hello, World); } } // test.mocha import java.io.printStream; class test { public static void main (String argv[]) { System.out.println(“Hello, World); } }
Decompilers and Bytecode Obfuscation(3/5) • Jshrink 사용 사례 c:\jshrink\jshrink random // random.java class 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.class class 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을 탐색 • 개인키, 평문, 그 외 유용한 정보 • 가상 메모리 사용 금지 • 애플리케이션 메모리 공간을 분리한 운영 시스템 사용
TELNET FTP SMTP SNMP 응용 계층 TCP UDP 트랜스포트 계층 IP 네트워크 계층 X.25, IEEE 802.X, .. 링크 계층 Network Security • TCP/IP 프로토콜 • IP : 비 보안 프로토콜로서 IP 상위 계층에서 암호 사용 • 응용 계층의 애플리케이션에서 암호 사용 • SafeTalk, CipherMail • IPng(IP next generation) : 인증과 프라이버시 서비스 제공
Summary • 보안성 • 비용 • 위험 조화 • 가용성 보안성 비용 또는 시간