Plagiarism Detection Using Dependency Graph Analysis Specialized for JavaScript

자바스크립트에 특화된 프로그램 종속성 그래프를 이용한 표절 탐지

  • 김신형 (한국과학기술원 전산학과) ;
  • 한태숙 (한국과학기술원 전산학과)
  • Received : 2010.01.12
  • Accepted : 2010.03.12
  • Published : 2010.05.15

Abstract

JavaScript is one of the most popular languages to develope web sites and web applications. Since applicationss written in JavaScript are sent to clients as the original source code, they are easily exposed to plagiarists. Therefore, a method to detect plagiarized JavaScript programs is necessary. The conventional program dependency graph(PDG) based approaches are not suitable to analyze JavaScript programs because they do not reflect dynamic features of JavaScript. They also generate false positives in some cases and show inefficiency with large scale search space. We devise a JavaScript specific PDG(JS PDG) that captures dynamic features of JavaScript and propose a JavaScript plagiarism detection method for precise and fast detection. We evaluate the proposed plagiarism detection method with experiment. Our experiments show that our approach can detect false-positives generated by conventional PDG and can prune the plagiarism search space.

자바스크립트는 현재 웹 사이트, 웹 어플리케이션에서 가장 많이 사용되는 스크립트 언어 중 하나이다. 자바스크립트로 작성된 프로그램은 원본 프로그램 형태로 클라이언트에게 전송되므로 무단 복제, 도용에 쉽게 노출된다. 때문에 자바스크립트 프로그램의 도용을 탐지하기 위한 연구가 필요하다. 현재 일반적으로 프로그램 표절 탐지를 위해 사용되는 자동화 도구들의 경우 고수준의 표절 기법에 적절히 대응하지 못한다. 반면에 프로그램 종속성 그래프에 기반을 둔 기존 연구들의 경우 자바스크립트의 동적인 특징을 적절히 반영하지 못한다. 또한 지나친 일반화로 인해 일부 틀린 판정(false positive)을 보이며 대상 프로그램의 크기가 클 경우 탐지 속도에 문제를 보이고 있다. 본 논문에서는 자바스크립트에 특화된 프로그램 종속성 그래프(이하 JS PDG)와 이를 사용한 도용 탐지 기법을 제안하여 이러한 문제를 해결하고자 한다. 본 논문에서 제안하는 JS PDG는 세분화된 노드 타입을 가지고 있어 기존 PDG와 비교해 보다 정확한 그래프 간 비교를 할 수 있도록 하며 포함하고 있는 노드 타입에 따라 정의되는 JS PDG의 타입은 탐색 범위를 분할을 가능하게 해 전체 도용 탐지 속도가 개선 될 수 있도록 한다. 실험 결과 기존 PDG에서 나타나는 틀린 판정을 확인할 수 있었으며 PDG간 비교 횟수가 줄어들어 도용 탐지 속도가 개선됨을 확인할 수 있었다.

Keywords

References

  1. Paulson, L. D. et al., "Building rich web applications with Ajax," In Computer, vol.38. pp.14-17, 2005.
  2. J. W. Michael, "YAP3: improved detection of similarities in computer program and other texts," SIGCSE Bulletin, vol.28, pp.130-134, 1996.
  3. L. Prechelt, et al., "Finding plagiarisms among a set of programs with JPlag," J. of Universal Computer Science, vol.8, pp.1016-1038, 2002.
  4. T. Kamiya, et al., "CCFinder: A Multilinguistic Token-Based Code Clone Detection System for Large Scale Source Code," IEEE TSE, vol.28, no.7, pp.654-670, 2002.
  5. S. Schleimer, et al., "Winnowing: local algorithms for document fingerprinting," In Proc. of ACM SIGMOD Int. Conf. on Mgmt. of Data, 2003.
  6. S. Bellon, et al., "Comparison and Evaulation of Clone Detection Tools," IEEE Trans. on Software Engineering, vol.33, no.9, September 2007.
  7. J. Krinke, "Identifying similar code with program dependence graphs," In Proc. WCRE'01. IEEE, 2001.
  8. R. Komondoor and S. Horwitz, "Using Slicing to Identify Duplication in Source Code," In Proc. of the 8th Int. Sym. on Static Analysis, pp.40-56, 2001.
  9. Liu, C. et al., "GPLAG: detection of software plagiarism by program dependence graph analysis," In Proc. of the 12th ACM SIGKDD Int. Conf. on Knowledge discovery and data mining, pp.872-881, 2006.
  10. Dongseok Jang et al., "Points-to analysis for JavaScript," In Proc. of the 2009 ACM sym. on Applied Computing, pp.1930-1937.
  11. I. Baxter et al., "Clone Detection Using Abstract Syntax Trees," In ICSM, pp.368-377, 1998.
  12. R. Koschke et al., "Clone Detection Using Abstract Syntax Suffix Trees," In Proc. WCRE'06. IEEE, 2006.
  13. Lanubile F. et al., "Finding Function Clones in Web Applications," In Software Maintenance and Reengineering, 2003. Proc. 7th European Conf., pp.379-386.
  14. Jeanne Ferrante et al., "The Program Dependence Graph and its use in optimtization," In ACM Trans. on Programming Languages and Systems, vol.9, no.3, pp.319-349, July 1987. https://doi.org/10.1145/24039.24041
  15. Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman, Compilers: principles, techniques, and tools, Addison- Wesley Longman Publishing Co., Inc., Boston, MA, 1986.
  16. ECMAScript Language Specification Edition 3
  17. J. R. Ullmann, "An algorithm for subgraph isomorphism," J. of the Association for Computing Machinery, vol.23, pp.31-42, 1976. https://doi.org/10.1145/321921.321925
  18. Luigi P. Cordella et al., "A (Sub)Graph Isomorphism Algorithm for Matching Large Graphs," IEEE Trans. on Pattern Analysis and Machine Intelligence, vol.26, no.10, pp.1367-1372, Oct. 2004. https://doi.org/10.1109/TPAMI.2004.75