구획 난독화, 데이터 난독화, 제어 난독화, 예방 난독화, 집단 난독화 |
가. 코드 난독화(Code Obfuscation)의 정의
- 역공학을 통한 보안 취약점 공격에 대비하기 위한 기술로 코드를 복잡하게 만들어 원시코드를 알아보기 힘들게 하는 기술
나. 코드 난독화의 종류
종류 |
설명 |
소스코드 난독화 |
C/C++/JAVA등의 프로그램 소스 코드를 알아보기 힘든 형태로 바꾸는 기술 |
바이너리 난독화 |
컴파일 후에 생성된 바이너리를 역공학을 통해 분석하기 힘들게 변조하는 기술 |
II. 코드 난독화의 기술 분류 및 기법
가. 코드 난독화 기술 분류
구분 |
주요내용 |
수행방법 |
구획 난독화 (Layout Obfuscation) |
- 프로그램에 큰 영향을 끼치지 않는 세부적 요소들을 변화, 제거 - 내용을 상당부분 훼손시켜 복원 통제 |
- 형식변화 - 주석제거 - 식별자 손상 |
데이터 난독화 (Data Obfuscation) |
- 프로그램이 처리하고 잇는 변수를 나누거나 합쳐 읽기 어렵게 하는 기술 |
- 변수 자르기 - 정적자료의 절차적 자료화 |
제어 난독화 (Control Obfuscation) |
- 프로그램 문장이 묶이는 단위를 조절함으로써 제어를 난독화 |
- 프로시저 인라인화 - 프로시저 아웃라인화 - 프로그램 실행순서 변경 - 데드코드 삽입 |
예방 난독화 (Preventive Obfuscation) |
- 이미 알려진 역난독화 방법을 알고 그 방법을 봉쇄 |
- 목적방법 - 고유난독화 방법 |
집단 난독화 (Aggregation Obfuscation) |
- 순서를 이용하여 코드를 난독화 |
- 자료 순서 변환 - 클래스 분할 |
나. 코드 난독화 기법
기법 |
설명 |
레이아웃 변환 |
소스 코드 상의 식별자를 의미 없는 것으로 대체하여 역공학이 힘들게 만드는 기법, 클래스나 메소드 명을 단순 알파벳으로 변환 |
데이터 변환 |
프로그램에서 사용하는 자료 구조를 변경하는 기법 - 데이터 저장, 데이터 암호화, 데이터 집합, 데이터 배열 |
컨트롤 변환 |
프로그램에서 사용하는 제어 구조를 변경하는 기법 - 컨트롤 집합(그룹화), 변환 컨트롤 배열(순서변경), 컨트롤 계산(미실행 코드 삽입) |
'IT기술노트 > 소프트웨어공학' 카테고리의 다른 글
범위관리(Project Scope Management) (0) | 2021.02.04 |
---|---|
프로젝트 관리(Project Management) (0) | 2021.02.04 |
기능점수(Function Point) (0) | 2021.02.04 |
소프트웨어 비용산정 (0) | 2021.02.04 |
역공학, 재공학, 재사용 (0) | 2021.02.04 |
3R(Reverse Eng. Re-Eng. Reuse Eng) (0) | 2021.02.04 |
정형기술검토(FTR, Formal Technical Review) (0) | 2021.02.03 |
소프트웨어 형상관리(Software Configuration Management) (0) | 2021.02.03 |
댓글