04.07.2014 Views

시간 기반 키 생성 방식을 이용한 안티 디버깅 기법 - SERSC

시간 기반 키 생성 방식을 이용한 안티 디버깅 기법 - SERSC

시간 기반 키 생성 방식을 이용한 안티 디버깅 기법 - SERSC

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

시간 기반 키 생성 방식을 이용한 안티 디버깅 기법<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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!