디지털 라이브러리[ 검색결과 ]
CPI 보안 강화 코드 변환의 실용적인 동등성 검사 기법
http://doi.org/10.5626/JOK.2019.46.12.1279
코드 변환 시의 동등성이 만족되지 않을 경우 소프트웨어 오류를 야기할 수 있다. 기존의 정리 증명을 통한 코드 변환의 동등성 검사는 코드의 규모가 커질수록 기하급수적으로 높은 비용이 요구되기 때문에 실제 소프트웨어 개발 시에 적용하기 어렵다. 본 논문에서는 규칙 증명과 코드 검사의 분리를 통하여 실용적인 LLVM의 코드 변환의 동등성 검사 기법을 제안한다. 먼저 주어진 코드 변환 규칙의 동등성은 자동정리증명을 통하여 컴파일 전에 별도로 증명한다. 그리고 컴파일 과정에서 변환 전과 후의 코드에 대한 정적 분석을 수행하여 코드 변환 규칙이 생성된 코드에 올바르게 적용되었는지 검사한다. 이러한 코드 분석의 수행 시간은 코드의 규모에 선형으로 증가하기 때문에, 규모가 큰 코드에도 효과적으로 적용될 수 있다. 제안된 연구를 코드 포인터 무결성(code pointer integrity) 보안강화 코드변환에 적용하여 LLVM 기반 도구제작에 활용하였다.
무기체계 안티탬퍼링을 위한 소프트웨어 소스코드 난독화 도구 구현
http://doi.org/10.5626/JOK.2019.46.5.448
무기체계가 복합적이고 다양한 기능을 갖도록 요구받으면서 무기체계에 들어가는 소프트웨어의 비중이 점차 늘어나고 있다. 하지만 소프트웨어에서 요구되는 기능이 많아지면서 무기체계 실행 바이너리에는 핵심 알고리즘, 중요 데이터 등이 삽입되어져, 역공학을 통하여 쉽게 이러한 정보의 탈취 및 악의적인 목적의 탬퍼링이 가능해졌다. 따라서 본 논문에서는 무기체계 소프트웨어 개발 시 소스코드에 대해 난독화 기법을 적용한 난독화 도구를 제시하였다. 특히, 핵심 알고리즘을 난독화하기 위해 제어흐름 난독화 기법을 적용하였고, 중요 데이터를 감추기 위해 데이터 난독화 기법을 제안하였다. 또한, 무기체계 소프트웨어의 실제 성능에 영향을 고려하여 사용자가 난독화 설정 수준 별로 선택하여 유연하게 적용할 수 있는 구조로 구현하였고, 실험을 통해 적용된 기법이 올바로 동작함을 확인하였다. 이러한 소스코드 기반의 난독화 기법을 통해 역공학 방지 바이너리 파일을 만들 수 있고, 향후 무기체계 소프트웨어 안티탬퍼링 플랫폼 개발에 활용될 수 있다.