ìê° ê¸°ë° í¤ ìì± ë°©ìì ì´ì©í ìí° ëë²ê¹ ê¸°ë² - SERSC
ìê° ê¸°ë° í¤ ìì± ë°©ìì ì´ì©í ìí° ëë²ê¹ ê¸°ë² - SERSC
ìê° ê¸°ë° í¤ ìì± ë°©ìì ì´ì©í ìí° ëë²ê¹ ê¸°ë² - SERSC
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
시간 기반 키 생성 방식을 이용한 안티 디버깅 기법<br />
3.제안하는 시간 기반 안티 디버깅 기법<br />
사람이 디버깅하면 단일 스태핑 등으로 실행 속도가 현저하게 느려져서, 두 지점 간 실행 시간<br />
이 증가한다. 실행 환경에 따라 프로세스 실행 시간이 다양하기 때문에 실행 시간을 키 값으로 바<br />
로 적용하는 것은 힘들다. 프로세스의 실행 시간의 범위를 정하고 시프트 연산을 통해서 실행 시<br />
간의 범위 내에 시간의 차분 값이 항상 일정한 값이 나오도록 만들었다. 그리고 무결성을 보장하<br />
기 위해 특정 영역을 시간 차분 값과 같이 해시함수의 입력 값으로 사용하였다. 프로세스 실행 시<br />
디버거가 첨부되면 두 지점 간 실행 시간이 증가로 인해 올바르지 못한 키 값이 생성 되고, 올바<br />
르지 못한 키 값으로 복호화로 인해 잘못된 데이터로 인한 오류가 발생한다. 기존 조건 구문 방식<br />
은 점프문을 통해 간단히 우회가 가능하였지만, 제안하는 기법은 키를 생성하지 못하면 잘못된 복<br />
호화로 인해 자가 변조가 일어나서 우회하기 어렵다.<br />
3.1 키 생성 방법<br />
실행 코드의 두 지점의 실행 시간 , 을 각각 측정한다.<br />
측정한 두 값 , 에 임계점에 맞는 시프트 연산을 한다. (그림 3)<br />
각각 시프트 연산 결과 값 ′ , ′ 의 차분 값을 계산한다.<br />
′<br />
계산된 차분 값 <br />
′ 과 실행 코드의 특정 영역 IB를 더하여 해시 함수(hash function) 취한<br />
′<br />
값을 키 값으로 생성한다. <br />
′ <br />
<br />
[그림 3] 시프트 연산<br />
[Fig. 3] Shift operation<br />
프로세스 실행 시간 지연 범위의 임계점을 설정하는 방법으로 시프트 연산을 사용하였다. 임계<br />
점 범위 내의 실행 시간의 차이에서는 키 값이 동일하게 생성되어 정당한 키 값 을<br />
만들 수 있다. 하지만 프로세스에 디버거가 첨부되면 프로세스 실행 지연 시간이 증가한다. 이 때,<br />
′<br />
프로세스 실행 시간 임계점을 벗어나서 다른 키 값 <br />
′ <br />
이 형성된다. (∵<br />
<br />
′<br />
<br />
′<br />
≠ )<br />
잘못된 키 값으로 코드를 실행하면 제대로 복호화가 일어나지 않아 코드의 오류를 발견할 수<br />
296