• 제목/요약/키워드: 소스코드 클러스터링

검색결과 5건 처리시간 0.023초

굼벨 분포 모델을 이용한 표절 프로그램 자동 탐색 및 추적 (Automated Detecting and Tracing for Plagiarized Programs using Gumbel Distribution Model)

  • 지정훈;우균;조환규
    • 정보처리학회논문지A
    • /
    • 제16A권6호
    • /
    • pp.453-462
    • /
    • 2009
  • 소프트웨어의 지적 재산권 보호 및 인증에 대한 관심과 중요성이 커지면서 소프트웨어에 대한 표절 탐색 및 보호, 판단에 대한 연구가 활발 하게 진행되고 있다. 지금까지 표절에 대한 연구는 주로 속성 계산, 토큰 패턴, 프로그램 파스트리, 유사도 측정 알고리즘 등을 이용해 두 프로 그램을 비교하는데 초점을 두었다. 이와 더불어, 표절과 협동(collaboration)을 구분하는 것은 표절연구에서 매우 중요하다. 본 논문에서는 극단 치 분포 확률 모델을 이용한 소스코드 클러스터링을 위한 알고리즘을 제안한다. 본 논문에서는 먼저 두 프로그램 먼저 두 프로그램 $P_a$$P_b$ 의 유사도를 측정하는 비대칭거리측정함수 pdist($P_a$, $P_b$)를 제안하고, 모든 소스코드 쌍에 대해 pdist($P_a$, $P_b$)를 통해 측정된 유사도를 간선무게로 하는 표절방 향그래프(PDG)를 생성한다. 그리고 본 논문에서는 표절방향그래프를 굼벨거리그래프(GDG)로 변환한다. pdist($P_a$, $P_b$) 점수 분포는 극단치 확률 분포로 잘 알려진 굼벨분포(Gumbel distribution)와 매우 유사하다. 또한, 본 논문에서는 의사표절(pseudo- plagiarism)을 새롭게 정의한다. 의사표절은 프로그램의 강한 기능적 제약사항으로 인해 발생하는 가상 표절의 한 종류이다. 본 논문에서는 ICPC(International Collegiate Programming Contest)와 KOI(Korean Olympiad for Informatics) 대회에 제출된 18개 프로그램 그룹의 700개 이상의 소스코드에 대해 실험을 진행하였다. 실험결과 프로그램 그룹에 포함된 표절 프로그램들을 찾았으며, 소스코드 클러스터링 알고리즘은 의사표절과 실제표절 프로그램 그룹을 효과적으로 구분하였다.

제품군의 재사용 가능한 클론 코드의 메소드 경로 통일을 위한 코드 클러스터링 방법 (A Code Clustering Technique for Unifying Method Full Path of Reusable Cloned Code Sets of a Product Family)

  • 김태영;이지현;김은미
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제12권1호
    • /
    • pp.1-18
    • /
    • 2023
  • 유사한 소프트웨어는 기존 산출물을 복제하고 수정하는 클론-앤-오운(clone-and-own, CAO) 방법으로 개발되곤 한다. 그러나 클론-앤-오운 방법은 복제된 제품의 수가 늘면서 유지보수를 어렵게 만들기 때문에 나쁜 프랙티스로 간주된다. 소프트웨어 제품라인 공학은 체계적인 재사용을 통해 소프트웨어 제품군을 개발하는 방법으로 클론-앤-오운 방법의 문제를 해결할 수 있다. CAO 방식으로 개발되어 온 제품패밀리를 제품라인 공학으로 마이그레이션하는 작업은 여러 소프트웨어 제품에서 클로닝된 부분들을 찾아 통합하고 재사용 가능한 자산으로 구축하는 것으로부터 시작된다. 그러나 클로닝이 디렉토리부터 코드 라인까지 다양한 수준에서 발생하고 그 과정에서 이들의 구조에 변경이 일어날 수 있어 단순하게 클로닝을 찾아내는 것만으로는 고품질의 제품라인 코드베이스를 구축하기 어렵다. 성공적인 마이그레이션을 위해서는 소스 코드들 사이의 클로닝 관계를 찾는 것 이외에도 소스 코드들의 파일 경로와 클래스 이름, 메소드 시그니처 등의 동일성을 확보는 작업이 선행되어야 한다. 이에 본 연구는 CAO 기반으로 개발된 제품들로부터 마이그레이션 대상 제품들을 선정한 후 제품들에 흩어져 있는 유사 코드 집합을 검출하여 메소드 경로의 통일이 필요한 대상을 식별하는 클러스터링 방법을 제안한다. 제안 방법의 효과를 보이기 위해 CAO 방식으로 진화해온 ApoGames 제품군에 제안 방법을 적용하여 실험을 진행하였다. 그 결과, 전처리 없이 수행된 파일의 상대 경로 기반 클러스터링 방법의 평균 정밀도는 0.91이며 식별된 공통 클러스터의 개수는 0개인 반면에 이 논문에서 제안하는 전처리와 함께 수행된 메소드 시그니처 기반 클러스터링 방법의 평균 정밀도는 0.98로 개선되었으며 식별된 공통 클러스터는 최대 15개까지 증가하였다.

공격자 그룹 특징 추출 프레임워크 : 악성코드 저자 그룹 식별을 위한 유전 알고리즘 기반 저자 클러스터링 (The attacker group feature extraction framework : Authorship Clustering based on Genetic Algorithm for Malware Authorship Group Identification)

  • 신건윤;김동욱;한명묵
    • 인터넷정보학회논문지
    • /
    • 제21권2호
    • /
    • pp.1-8
    • /
    • 2020
  • 최근 악성코드를 활용한 APT(Advanced Persistent Threat) 공격의 수가 점차 증가하면서 이를 예방하고 탐지하기 위한 연구가 활발히 진행되고 있다. 이러한 공격들은 공격이 발생하기 전에 탐지하고 차단하는 것도 중요하지만, 발생 공격 사례 또는 공격 유형에 대한 정확한 분석과 공격 분류를 통해 효과적인 대응을 하는 것 또한 중요하며, 이러한 대응은 해당 공격의 공격 그룹을 분석함으로써 정할 수 있다. 따라서 본 논문에서는 공격자 그룹의 특징을 파악하고 분석하기 위한 악성코드를 활용한 유전 알고리즘 기반 공격자 그룹 특징 추출 프레임워크를 제안한다. 해당 프레임워크에서는 수집된 악성코드를 디컴파일러와 디셈블러를 통해 관련 코드를 추출하고 코드 분석을 통해 저자와 관련된 정보들을 분석한다. 악성코드에는 해당 코드만이 가지고 있는 고유한 특징들이 존재하며, 이러한 특징들은 곧 해당 악성코드의 작성자 또는 공격자 그룹을 식별할 수 있는 특징이라고 할 수 있다. 따라서 우리는 저자 클러스터링 방법을 통해 바이너리 및 소스 코드에서 추출한 다양한 특징들 중에 특정 악성코드 작성자 그룹만이 가지고 있는 특징들을 선별하고, 정확한 클러스터링 수행을 위해 유전 알고리즘을 적용하여 주요 특징들을 유추한다. 또한 각 악성코드 저자 그룹들이 가지고 있는 특성들을 기반으로 각 그룹들만을 표현할 수 있는 특징들을 찾고 이를 통해 프로필을 작성하여 작성자 그룹이 정확하게 군집화되었는지 확인한다. 본 논문에서는 실험을 통해 유전 알고리즘을 활용하여 저자가 정확히 식별되는 지와 유전 알고리즘을 활용하여 주요 특징 식별이 가능한지를 확인 할 것이다. 실험 결과, 86%의 저자 분류 정확도를 보이는 것을 확인하였고 유전 알고리즘을 통해 추출된 정보들 중에 저자 분석에 사용될 특징들을 선별하였다.

바이너리 코드 취약점 탐지를 위한 딥러닝 기반 동적 오염 탐지 기술 (Deep Learning based Dynamic Taint Detection Technique for Binary Code Vulnerability Detection)

  • 고광만
    • 한국정보전자통신기술학회논문지
    • /
    • 제16권3호
    • /
    • pp.161-166
    • /
    • 2023
  • 최근 바이너리 코드에 대한 신종·변종 해킹이 증가되고 있으며 소스 프로그램에서 악성코드를 탐지하고 공격에 대한 방어 기술의 한계점이 자주 노출되는 상황이다. 바이너리 코드에 대해 머신러닝, 딥러닝 기술을 활용하여 고도화된 소프트웨어 보안 취약점 탐지 기술과 공격에 대한 방어와 대처 능력이 필요하다. 본 논문에서는 바이너리 코드의 실행 경로를 추적(execution trace)하여 동적 오염 정보를 입력한 후 오염 정보를 따른 특징을 기반으로 멀웨어를 그룹핑하는 멀웨어 클러스터링 방법을 제안한다. 멀웨어 취약점 탐지는 3-계층으로 구성한 Few-shot 학습 모델에 적용하여 각 계층의 CPU, GPU에 대해 F1-score를 산출하였다. 학습 과정에서 97~98%의 성능과 테스트 과정에서 80~81% 정도의 탐지 성능을 얻었다.

스마트 시설환경 환경변수 분석을 위한 Open source 기반 인공지능 활용법 분석 (A Benchmark of AI Application based on Open Source for Data Mining Environmental Variables in Smart Farm)

  • 민재기;이동훈
    • 한국농업기계학회:학술대회논문집
    • /
    • 한국농업기계학회 2017년도 춘계공동학술대회
    • /
    • pp.159-159
    • /
    • 2017
  • 스마트 시설환경은 대표적으로 원예, 축산 분야 등 여러 형태의 농업현장에 정보 통신 및 데이터 분석 기술을 도입하고 있는 시설화된 생산 환경이라 할 수 있다. 근래에 하드웨어적으로 급증한 스마트 시설환경에서 생산되는 방대한 생육/환경 데이터를 올바르고 적합하게 사용하기 위해서는 일반 산업 현장과는 차별화 된 분석기법이 요구된다고 할 수 있다. 소프트웨어 공학 분야에서 연구된 빅데이터 처리 기술을 기계적으로 농업 분야의 빅데이터에 적용하기에는 한계가 있을 수 있다. 시설환경 내/외부의 다양한 환경 변수는 시계열 데이터의 난해성, 비가역성, 불특정성, 비정형 패턴 등에 기인하여 예측 모델 연구가 매우 난해한 대상이기 때문이라 할 수 있다. 본 연구에서는 근래에 관심이 급증하고 있는 인공신경망 연구 소프트웨어인 Tensorflow (www.tensorflow.org)와 대표적인 Open source인 OpenNN (www.openn.net)을 스마트 시설환경 환경변수 상호간 상관성 분석에 응용하였다. 해당 소프트웨어 라이브러리의 운영환경을 살펴보면 Tensorflow 는 Linux(Ubuntu 16.04.4), Max OS X(EL capitan 10.11), Windows (x86 compatible)에서 활용가능하고, OpenNN은 별도의 운영환경에 대한 바이너리를 제공하지 않고 소스코드 전체를 제공하므로, 해당 운영환경에서 바이너리 컴파일 후 활용이 가능하다. 소프트웨어 개발 언어의 경우 Tensorflow는 python이 기본 언어이며 python(v2.7 or v3.N) 가상 환경 내에서 개발이 수행이 된다. 주의 깊게 살펴볼 부분은 이러한 개발 환경의 제약으로 인하여 Tensorflow의 주요한 장점 중에 하나인 고속 연산 기능 수행이 일부 운영 환경에 국한이 되어 제공이 된다는 점이다. GPU(Graphics Processing Unit)의 제공하는 하드웨어 가속기능은 Linux 운영체제에서 활용이 가능하다. 가상 개발 환경에 운영되는 한계로 인하여 실시간 정보 처리에는 한계가 따르므로 이에 대한 고려가 필요하다. 한편 근래(2017.03)에 공개된 Tensorflow API r1.0의 경우 python, C++, Java언어와 함께 Go라는 언어를 새로 지원하여 개발자의 활용 범위를 매우 높였다. OpenNN의 경우 C++ 언어를 기본으로 제공하며 C++ 컴파일러를 지원하는 임의의 개발 환경에서 모두 활용이 가능하다. 특징은 클러스터링 플랫폼과 연동을 통해 하드웨어 가속 기능의 부재를 일부 극복했다는 점이다. 상기 두 가지 패키지를 이용하여 2016년 2월부터 5월 까지 충북 음성군 소재 딸기 온실 내부에서 취득한 온도, 습도, 조도, CO2에 대하여 Large-scale linear model을 실험적(시간단위, 일단위, 주단위 분할)으로 적용하고, 인접한 세그먼트의 환경변수 예측 모델링을 수행하였다. 동일한 조건의 학습을 수행함에 있어, Tensorflow가 개발 소요 시간과 학습 실행 속도 측면에서 매우 우세하였다. OpenNN을 이용하여 대등한 성능을 보이기 위해선 병렬 클러스터링 기술을 활용해야 할 것이다. 오프라인 일괄(Offline batch)처리 방식의 한계가 있는 인공신경망 모델링 기법과 현장 보급이 불가능한 고성능 하드웨어 연산 장치에 대한 대안 마련을 위한 연구가 필요하다.

  • PDF