A Program Similarity Check by Flow Graphs of Functional Programs

흐름 그래프 형태를 이용한 함수형 프로그램 유사성 비고

  • Published : 2005.04.01

Abstract

Stealing the source code of a program is a serious problem not only in a moral sense but also in a legal sense. However, it is not clear whether the code of a program is copied from another or not. There was a program similarity checker detecting code-copy by comparing the syntax trees of programs. However this method has a limitation that it cannot detect the code-copy attacks when the attacker modifies the syntax of the program on purpose. We propose a program similarity check by program control graph, which reveals not only syntax information but also control dependancy. Our method can detect the code-copy attacks that do not change control dependancy Moreover, we define what code-copy means and establish the connection between code-copy and similarity of program control graph: we prove that two programs are related by copy congruence if and only if the program control graphs of these programs are equivalent. We implemented our method on a functional programming language, nML. The experimental results show us that the suggested method can detect code similarity that is not detected by the existing method.

컴퓨터와 소프트웨어의 사용이 증가하면서, 프로그램 소스의 도용(표절)이 사회적인 문제로 부각되고 있다. 이런 문제를 해결하고자 프로그램의 문법 구조를 비교하여 표절을 찾아내는 방법론이 제안되었지만, 간단한 프로그램 수정에도 표절을 찾아내지 못하는 한계를 가지고 있다 이 연구에서는, 문법 구조적인 정보 뿐 아니라, 프로그램식 간의 수행시 의존 관계를 드러내는 그래프를 이용한 프로그램 표절 감지 시스템을 제안한다. 이 방법론은 문법 정보 뿐 아니라, 수행시 의존 관계까지 비교 대상에 을림으로써, 수행시 의콘 관계를 변화시키지 못하는 프로그램 수정에 대해서도 프로그램 표절을 판별할 수 있다. 또한, 이 연구에서는 표절 프로그램이란 무엇인가를 엄밀하게 정의하고 이 표절 프로그램의 정의와 연구에서 제안된 표:늰 감별 그래프와의 관계를 보였다. 즉, 두 프로그램이 표절이라는 것은 표절 감별 그래프가 일치한다는 긴과 필요 충분 관계가 있음을 증명하였다. 또한 제안된 표절 감별 방법론을 실제적인 프로그래밍 언어인 IML 에 대해서 구현하였다. 구현된 도구를 통해서 실제 표절된 프로그램들을 감별한 결과, 기존의 방법에서 찾기 어려운 프로그램 표절을 제안된 방법론이 다룰 수 있음을 확인하였다.

Keywords

References

  1. 장성순, 서선애, 이광근, '프로그램 유사성 검증기', 한국정보과학회,가을 학술 회의, 제 28권,pp. 334-336, 2001년 10월
  2. 서선애, 한태숙, '흐름 그래프 형태를 이용한 프로그램 유사성 비교' 학술 논문, 한국과학기술원 전산학과 프로그래밍 언어 연구, 2004년 10월. http://ropas.kaist.ac.kr/-saseo/papers/kor_simil_long.pdf
  3. Dick Grune, 'SIM: The software and text similarity tester SIM,' http://www.few.vu.nl/-dick/sim.html
  4. M.J. Wise. 'YAP3: improved detection of similarities in computer programs and other texts,' SIGCSEB: SIGCSE Bulletin (ACM Special Interest Group on Computer Science Education),' volume 28, 1996 https://doi.org/10.1145/236462.236525
  5. Alex Aiken, 'Moss: a system for detecting software plagiarism,' http://ftp.cs.berkeley.edu/ -aiken/moss. html
  6. Guido Malpohl, 'JPlag:Detection Software Plagiarism,' http://wwwipd.ira.uka.de:2222/
  7. 황미녕, 강은미, 조환규, '유전체 서열의 정렬 기법을 이용한 소스 코드 표절 검사' 한국정보과학회. 2002년 제21회 논문경진대회 최우수상. 2002년 6월. http//jade.cs.pusan.ac.kr/bioinformatics/bio.html
  8. 이평준, 전명재, 조환규, '재귀적 지역정렬을 이용한 프로그램 표절 탐색' 한국정보과학회 봄 학술 회의, 2004년 4월
  9. N. De Bruijn, 'Lambda-calculus Notation with Nameless Manipulation,' A Toolfor Automatic Formula Manipulation, volume 34, pp. 381-392, 1972
  10. 이광근, 이욱세, 어현준, 김정택, 최용식, 류석영, 강현구, 서선애, 장성순, 김범식,'nML 컴파일러 시스템 (status report)'. 한국정보과학회 가을 학술 회의, 제 28권. pp. 340-342, 2001년 10월 http://ropas. kaist.ac.kr/n