ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [2022/03/10][짤막한 이야기 - 구획 난독화]
    짤막한 이야기 2022. 3. 10. 11:43
    728x90
    반응형

    [2022/03/10][짤막한 이야기 - 구획 난독화]
    난독화(Obfuscation)는 소스코드, 어셈블리어, 자료구조, 제어흐름 등 소프트웨어를 구성하는 요소를 이해하기 어렵게 변형시켜버리는 기술이다.
    소프트웨어 지적재산권 보호를 위하여 적용되지만, 악성코드를 보호할 수도 있기 때문에 난독화에 더불어 역난독화(Deobfuscation) 기술도 함께 연구되어야 한다.
    난독화 기술 중 가장 쉬운 기술은 소스코드 레벨에서 주로 이루어진다.
    바로 주석을 제거하는 것(Remove Comment)이다. 그리고 변수명이나 함수명을 변형하는 것(Modify Identifier)이다.
    이러한 기술들을 통틀어 난독화 중에서도 구획 난독화(Layout Obfuscation)라고 한다.
    즉, 프로그램의 기능과는 전혀 무관한 부분을 제거하거나 변형하여 사람으로부터 소스코드 가독성을 제거해버리는 것이다.
    앞선 포스트에서의 난독화 지표를 기억하고 있는가?
    이 방법은 매우 효율적으로 “모호성(Potency)”을 극대화할 수 있다.
    그만큼 “사람”은 주석이나 함수명(함수명이 Sum이나 Result가 아니라 iIIiIiI11IiI과 IiiIiII111IiI이면 읽기 어렵듯이)으로부터 많은 정보를 획득하고 있는 것이다.
    반면, 컴퓨터는 이 구획 난독화를 어떻게 바라볼까?
    아무렇지도 않게 바라본다. 왜냐하면 컴퓨터(역난독화 도구, 혹은 컴파일러 등)는 주석이나 함수명, 변수명을 중요한 정보로 취급하지 않기 때문이다.
    그래서 “사람”은 “구획 난독화”를 매우 어려워하는 반면, “컴퓨터”는 “구획 난독화”에 아무런 영향을 받지 않는다. 즉, “복원성(Resilience)” 지표가 0에 가까운 것(이 지표가 높을수록 컴퓨터가 이 난독화 기술을 분석하기 어려워한다.)이다.
    “성능저하량”은 어떨까? 이 소스코드는 그 자체로 프로그램은 아니다. 컴파일을 하여 프로그램으로 만든 후에 성능저하량을 측정해야 한다.
    당연히 예상가능하게도 “성능저하량”도 0이다. 소스코드의 주석을 제거하거나 변수명을 바꾸는 것으로는 실행속도나 소요 메모리량이 변하지 않기 때문이다.
    즉, 사람에게만 매우 어려운 구획 난독화는 매우 간단하게 적용가능하고 매우 간단하게 해제(컴퓨터가) 가능하다.
    그러면 어렵게 적용되며 어렵게 해제되는 난독화는 어떤 것들이 있을까?
    [관련된 짤막한 이야기 - 난독화 지표[2022/03/08]]
    #이야기 #루니프 #난독화 #정량 #정성 #인공지능 #예측 #보안 #안전성 #구획난독화 #주석 #제거 #변수명 #변형 #해커 #개발자 #분석가 #코딩

    728x90
    반응형
Designed by Tistory.