코드 스타일리시

Code stylometry

코드 스타일리시(프로그램 Authority attribution 또는 소스 코드 Authority analysis라고도 함)는 컴퓨터 코드에 스타일리시를 적용하여 익명의 이진 또는 소스 코드에 Authority를 귀속시키는 것이다.프로그래밍 코드의 특징적인 패턴과 특징을 세분화하여 검토한 후 이를 저작자가 알려진 컴퓨터 코드에 비교하는 것이 종종 포함된다.[1]소프트웨어 포렌식(software phosency)과 달리 코드 스타일리시(code stylemetry)는 표절 탐지, 저작권 조사, 저자 검증 등 지적재산권 침해 이외의 목적으로 저작자를 속인다고 한다.[2]

역사

1989년 연구원 폴 오만과 커티스 쿡은 6명의 저자가 타이포그래픽 특성을 바탕으로 '마커'를 사용해 작성한 18가지 파스칼 프로그램의 저자를 확인했다.[3]

1998년 Stephen MacDonell, Andrew Gray, Philip Sallis는 컴퓨터 pr에서 소스 코드의 저작권을 결정하는 IDENT(Integrated Dictionary-based Non-dependent Token Information of Non-worder-dependent Idential Idential Identification, Examination, Experiation, Experiation)라는 사전 기반 저자 귀인 시스템을 개발했다.C++로 쓰여진 ograms.연구진은 다음과 같이 소스 코드의 쓰기 스타일에 유연성이 있는 경우 학위를 사용하여 저자를 식별할 수 있다고 언급했다.[4]

  • 소스 코드의 알고리즘이 지정된 문제를 해결하는 방법
  • 소스 코드 작성 방법(스페이스, 들여쓰기, 경계 특성, 표준 제목 등)
  • 소스 코드에서 알고리즘이 구현되는 방법

IDENT 시스템은 먼저 모든 관련 파일을 병합하여 단일 소스 코드 파일을 생성한 다음 각 메트릭에 대한 발생 횟수를 계산하여 메트릭 분석에 적용함으로써 저작권을 부여했다.게다가 이 시스템은 새로운 사전 파일과 메타사전을 만드는 능력 때문에 언어에 독립적이었다.[4]

1999년 스티븐 맥도넬이 이끄는 연구팀은 7명의 다른 저자들이 C++로 작성한 351개의 프로그램에서 세 가지 다른 프로그램 작성자 차별 기법의 성능을 시험했다.연구진은 백프로그래밍 알고리즘, 다중판별분석(MDA), 사례기반추론(CBR) 등을 통해 훈련된 피드-포워드 신경망(FFNN)의 활용 효과를 비교했다.실험 종료 시 신경망과 MDA 모두 정확도가 81.1%인 반면 CBR은 정확도 성능이 88.[5]0%에 달했다.

2005년 에게대학교 정보통신시스템보안연구소 연구진은 언어에 독립적인 프로그램 작성자 귀속 방식을 도입하여 바이트 수준의 n그램으로 프로그램을 저자에게 분류했다.이 기법은 파일을 스캔한 다음 소스 코드에서 발견된 서로 다른 n그램의 표와 그것이 나타나는 횟수를 만들었다.또한, 시스템은 각 저자의 제한된 훈련 사례로 작동할 수 있었다.그러나 각 작성자에 대해 존재했던 소스 코드 프로그램이 많을수록, 작성자의 귀속은 더욱 신뢰할 수 있다.연구자들은 이들의 접근법을 실험한 결과, 프로파일 크기가 500을 넘고 n그램 크기가 3 이하일 경우 비율이 급격히 감소했지만 n그램을 사용한 분류는 최대 100%의 정확도에 도달한다는 사실을 발견했다.[3]

2011년 위스콘신대 연구진은 소스코드 대신 프로그램의 바이너리 코드를 기반으로 프로그래머를 식별하는 프로그램 저자 귀인 시스템을 만들었다.연구진은 기계학습과 훈련 코드를 활용해 코드의 어떤 특성이 프로그래밍 스타일을 설명하는 데 도움이 될지를 파악했다.10명의 다른 저자들이 작성한 일련의 프로그램에 대한 접근법을 시험하는 실험에서, 시스템은 81%의 정확도를 달성했다.거의 200명의 다른 저자들이 작성한 일련의 프로그램을 사용하여 시험했을 때, 시스템은 51%[6]의 정확도로 수행되었다.

2015년 프린스턴대, 드렉셀대, 메릴랜드대, 괴팅겐대 박사 후기 연구진과 미 육군 연구소의 연구진이 b라고 쓰여진 프로그램으로 표본 풀에서 프로그램 작성자를 결정할 수 있는 프로그램 저자 귀인 시스템을 개발했다.y 94%의 정확도를 가진 1,600명의 코더.방법론은 네 단계로 구성되었다.[7]

  1. 분해 - 프로그램의 특성에 대한 정보를 얻기 위해 프로그램을 분해한다.
  2. 디컴파일링 - 프로그램은 디컴파일링을 통해 C형 유사문자의 변형으로 전환되어 추상적인 구문 트리를 획득한다.
  3. 차원성 감소 - 작성자 식별에 가장 목적적합하고 유용한 특징을 선택한다.
  4. 분류 - 무작위 포리스트 분류자는 프로그램의 저작권을 귀속시킨다.

이 접근방식은 빈 공간, 탭과 공간의 사용, 변수의 이름 등 코드의 다양한 특성을 분석한 후, 샘플 코드를 나무와 같은 도표로 번역한 구문 트리 분석이라는 평가 방법을 사용해 코드 작성에 관련된 구조적 결정을 표시했다.이러한 도표의 설계는 명령의 순서와 코드에 자리잡은 함수의 깊이를 우선시했다.[8]

2014년 소니 픽처스 해킹 공격

미국 정보 당국자들은 2014년 소니픽처스에 대한 사이버 공격이 소프트웨어와 기술, 네트워크 출처를 평가한 뒤 북한의 후원을 받은 것으로 판단할 수 있었다.사이버보안 전문가들이 이번 공격에 사용된 코드와 2013년 북한의 국내 은행과 방송사 공격에 사용된 악성 소프트웨어인 샤문(Shamoon)이 유사하다는 점을 포착한 데 따른 귀책이다.[9]

참조

  1. ^ Claburn, Thomas (March 16, 2018). "FYI: AI tools can unmask anonymous coders from their binary executables". The Register. Retrieved August 2, 2018.
  2. ^ De-anonymizing Programmers via Code Stylometry. USENIX. August 12, 2015. ISBN 9781939133113. Retrieved August 2, 2018.
  3. ^ a b Frantzeskou, Georgia; Stamatatos, Efstathios; Gritzalis, Stefanos (October 2005). "Supporting the Cybercrime Investigation Process: Effective Discrimination of Source Code Authors Based on Byte-Level Information". E-business and Telecommunication Networks. Communications in Computer and Information Science. 3: 283–290. doi:10.1007/978-3-540-75993-5_14. ISBN 978-3-540-75992-8 – via ResearchGate.
  4. ^ a b Gray, Andrew; MacDonnell, Stephen; Sallis, Philip (January 1998). "IDENTIFIED (Integrated Dictionary-based Extraction of Non-language-dependent Token Information for Forensic Identification, Examination, and Discrimination): a dictionary-based system for extracting source code metrics for software forensics". Proceedings of Software Engineering: Education & Practice: 252–259. doi:10.1109/SEEP.1998.707658. hdl:10292/3472. ISBN 978-0-8186-8828-7. S2CID 53463447 – via ResearchGate.
  5. ^ MacDonell, Stephen; Gray, Andrew; MacLennan, Grant; Sallis, Philip (February 1999). "Software forensics for discriminating between program authors using case-based reasoning, feedforward neural networks and multiple discriminant analysis". Neural Information Processing. 1. ISSN 1177-455X – via ResearchGate.
  6. ^ Rosenblum, Nathan; Zhu, Xiaojin; Miller, Barton (September 2011). "Who wrote this code? Identifying the authors of program binaries". Proceedings of the 16th European Conference on Research in Computer Security. Esorics'11: 172–189. ISBN 978-3-642-23821-5 – via ACM Digital Library.
  7. ^ Brayboy, Joyce (January 15, 2016). "Malicious coders will lose anonymity as identity-finding research matures". U.S. Army. Retrieved August 2, 2018.
  8. ^ Greenstadt, Rachel (February 27, 2015). "Dusting for Cyber Fingerprints: Coding Style Identifies Anonymous Programmers". Forensic Magazine. Retrieved August 2, 2018.
  9. ^ Brunnstrom, David; Finkle, Jim (December 18, 2014). "U.S. considers 'proportional' response to Sony hacking attack". Reuters. Retrieved August 2, 2018.