본문 바로가기
[학술저널]

  • 학술저널

이재서(포항공과대학교) 최태형(지티원) 이규호(LIG넥스원) 유재관(LIG넥스원) 배경민(포항공과대학교)

DOI : 10.5626/JOK.2019.46.12.1279

표지

북마크 0

리뷰 0

이용수 21

피인용수 0

초록

코드 변환 시의 동등성이 만족되지 않을 경우 소프트웨어 오류를 야기할 수 있다. 기존의 정리 증명을 통한 코드 변환의 동등성 검사는 코드의 규모가 커질수록 기하급수적으로 높은 비용이 요구되기 때문에 실제 소프트웨어 개발 시에 적용하기 어렵다. 본 논문에서는 규칙 증명과 코드 검사의 분리를 통하여 실용적인 LLVM의 코드 변환의 동등성 검사 기법을 제안한다. 먼저 주어진 코드 변환 규칙의 동등성은 자동정리증명을 통하여 컴파일 전에 별도로 증명한다. 그리고 컴파일 과정에서 변환 전과 후의 코드에 대한 정적 분석을 수행하여 코드 변환 규칙이 생성된 코드에 올바르게 적용되었는지 검사한다. 이러한 코드 분석의 수행 시간은 코드의 규모에 선형으로 증가하기 때문에, 규모가 큰 코드에도 효과적으로 적용될 수 있다. 제안된 연구를 코드 포인터 무결성(code pointer integrity) 보안강화 코드변환에 적용하여 LLVM 기반 도구제작에 활용하였다.

Code transformation is widely used to improve the performance and security of programs, but serious software errors can occur in this process if the generated program is not equivalent to the original program. There are a number of approaches for translation validation that can be used to prove the equivalence of programs, but the high cost of proof checking restricts the applicability of these techniques for large programs. In this paper, we propose a practical approach for checking the correctness of LLVM code transformation. We first prove the correctness of the transformation rules using automated theorem proving before compilation. We then perform a simple code analysis method—as opposed to directly proving the program equivalence— to check whether the transformations rules are correctly applied to the generated code. As the complexity of the proposed code analysis is linear, our technique can be effectively applied to large programs, unlike previous techniques. To prove the effectiveness of the proposed approach, we present a case study on LLVM code transformation for a code pointer integrity instrumentation.

목차

요약
Abstract
1. 서론
2. 관련 연구
3. 배경지식
4. 변환 규칙의 동등성 증명
5. 변환 코드 검사
6. CPI 코드 변환 사례 연구
7. 결론 및 향후 연구
References

참고문헌(0)

리뷰(0)

도움이 되었어요.0

도움이 안되었어요.0

첫 리뷰를 남겨주세요.
DBpia에서 서비스 중인 논문에 한하여 피인용 수가 반영됩니다.
인용된 논문이 DBpia에서 서비스 중이라면, 아래 [참고문헌 신청]을 통해서 등록해보세요.
Insert title here