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 클라이언트, 웹 브라우저 보안 요구사항이 복잡 신용 카드 기밀성 인증 신용 카드 구매자와 판매자간의 상호 인증 구매자의 신용카드 번호에 대한 기밀성
Self-contained(3/3) 인터넷 인증기관(CA) 상 점 사용자 1. 공개키를 등록 7. 인증기관 인증서 요청 4. 인증기관 인증서 요청 2. 인증서 8. 인증기관의 인증서 수신 후 상점 인증서 서명검증 5. 인증기관의 인증서 수신 후 사용자 인증서 서명검증 인터넷 9. 상점의 공개키로 암호화된 사용자의 신용카드 번호와 구매 항목 전송 6. 상점의 개인키로 암호화한 메시지를 인증서와 함께 송부 10. 구매 항목 배달 3.사용자의 개인키로 암호화한 메세지를 인증서와 함께 송부 상 점 사용자
Demonstration Software(1/2) “데모” 소프트웨어 판매자 : 사용자에게 미리 사용하게 함으로써 필요성 부여 구매자 : 경험 후 필요성 여부 판단 후 구매 판매자로부터 애플리케이션의 나머지 부분에 대한 패스워드 수신 크랙 역 공학 과정으로 소스를 역 컴파일함 일부 키 클래스 파일 암호화 스킴 구매자에게 복호화 키 제공 소프트웨어 일련 번호에 기반을 둠 크래킹으로부터 보호 구매자의 복사본 판매 방지 불가
Demonstration Software(2/2) 일부 키 클래스 파일 암호화 스킴 동일한 키(k)로 암호화함 각 소프트웨어마다 다른 복호화 키 요구 각 소프트웨어는 일련 번호를 가지고 있음 rn un = k k(암호화 키) rn(k를 구하기 위하여 un 과 조합되는 랜덤 값) un(k를 구하기 위하여 rn 과 조합되는 일련 번호와 관련이 있는 부분 키) 암호화 키(k) 노출시 크래킹 프로그램에 의한 공격 가능 1. “demo” 소프트웨어와 랜덤 값 rn 배포 2. 구매 요청 3. un 제공 구매자 판매자
Client/Server(1/2) Client/server 구조 two-tier three-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 외부로부터 수신한 애플릿의 네임 스페이스를 브라우저의 작업 공간 내부로만 한정 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) 암호 SafeTalk 애플리케이션 두 부분간 안전한 통신 서비스 제공 클래스 파일에 대한 무결성 javax.crypto.CipherOutputStream 클래스 변경 사용자 몰래 다른 IP 주소로 평문을 송신 Session 클래스 변경 동일한 암호화 키를 선택 바이러스나 악한 ActiveX control에 의한 변경 서버로부터 전송 중 변경 발생
Endpoint Security(2/2) 애플리케이션 외부에 대한 방어 불확실한 파일 전송 프로토콜 사용 금지 바이러스 스캔 불확실한 다운로드 목록 실행 금지 자바 애플릿 : sandbox
File Security 로컬 디스크에 있는 파일 암호 도난, 변경 등 바이러스, 트로이 목마 중요한 파일 키 관리 제거할 수 없는 디스크 스마트 카드 passphrase
Serialization & Deleting Files 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을 탐색 개인키, 평문, 그 외 유용한 정보 가상 메모리 사용 금지 애플리케이션 메모리 공간을 분리한 운영 시스템 사용
Network Security TCP/IP 프로토콜 IP : 비 보안 프로토콜로서 IP 상위 계층에서 암호 사용 응용 계층의 애플리케이션에서 암호 사용 SafeTalk, CipherMail IPng(IP next generation) : 인증과 프라이버시 서비스 제공 TELNET FTP SMTP TCP SNMP UDP IP X.25, IEEE 802.X, .. 응용 계층 트랜스포트 계층 네트워크 계층 링크 계층
Summary 보안성 비용 위험 조화 가용성 보안성 비용 또는 시간