Menu Close Back

코드 하드닝 (난독화 및 암호화)

코드 하드닝

리버스 엔지니어링으로 부터 앱을 보호

안드로이드 및 iOS 앱과 SDK등은 리버스 엔지니어링이 쉽게 가능하다. 쉽게 구할 수 있는 디어셈블러나 디컴파일러를 이용하여 해커는 코드에 접근하고 분석할 수 있다. 여러가지로 앱을 악용할 수 있다. 해커는 가치있는 코드를 훔치거나 앱을 복사할 수 있으며 주요 정보를 추출하거나 기존의 앱에 악의적인 코드를 집어넣어 새로운 앱을 만들어 악의적으로 사용할 수 있다.

코드 하드닝은 안드로이드나 iOS에서 개발된 APK나 SDK를 보호할 수 있는 효과적인 방법으로 리버스 엔지니어링이나 해킹으로부터 보호한다. 여러 단계의 난독화와 암호화를 통해 코드를 읽지 못하도록 할 수 있다. 하드닝된 코드는 자동이나 수작업에 의한 코드 분석을 하지 못하도록 한다. 

해커들은 정적 코드 분석과 동적 분석기술을 겸용하여 얻어진 정보를 사용하는데 앱이 실시간에 분석되는 것을 막기위해 실시간보호기능 실시간 앱 자체 방어(RASP) 를 앱에 적용해야 한다.

난독화 및 암호화

난독화는기능을 바꾸지 않으면서 코드를 읽지 못하도록 하는 기술이다. 코드를 난독화하는데 사용되는 기술은 상당히 다양하다. (식별자 난독화는) 소스 코드내의 식별자들을 의미없는 값으로 대치하고 (제어 흐름 난독화는)소스 코드의 논리 구조를 변경시켜 이해하기 어렵게 한다. 또한,(수치 난독화는)단순한 수식 및 논리 표현식을 복잡한 기호들로 변환한다.

암호화는 앱의 코드를 보호하고 앱이 작동하지 않는 동안에는 테이타에 접속이 불가능하도록 한다. 암호화된 코드는 앱의 원 기능대로 작동하도록 하기 위해 실시간에 암호가 풀어 작동하도록 한다. 효과적으로 하기위해 암호화가 여러 단계에서 사용될 수 있다. 암호화 기술로는  문자열 (string) 암호화, 클래스 암호화, 자산 (asset) 암호화 및 리소스 암호화 등이 있다.