KR101869026B1 - 소프트웨어 클러스터링 방법 및 장치 - Google Patents

소프트웨어 클러스터링 방법 및 장치 Download PDF

Info

Publication number
KR101869026B1
KR101869026B1 KR1020160103775A KR20160103775A KR101869026B1 KR 101869026 B1 KR101869026 B1 KR 101869026B1 KR 1020160103775 A KR1020160103775 A KR 1020160103775A KR 20160103775 A KR20160103775 A KR 20160103775A KR 101869026 B1 KR101869026 B1 KR 101869026B1
Authority
KR
South Korea
Prior art keywords
software
clustering
matrix
bus
vectorization
Prior art date
Application number
KR1020160103775A
Other languages
English (en)
Other versions
KR20180019429A (ko
Inventor
박종화
조성제
Original Assignee
단국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 단국대학교 산학협력단 filed Critical 단국대학교 산학협력단
Priority to KR1020160103775A priority Critical patent/KR101869026B1/ko
Publication of KR20180019429A publication Critical patent/KR20180019429A/ko
Application granted granted Critical
Publication of KR101869026B1 publication Critical patent/KR101869026B1/ko

Links

Images

Classifications

    • G06F17/30598
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2216/00Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
    • G06F2216/03Data mining

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 소프트웨어 클러스터링 방법 및 장치에 관한 것이다. 개시된 소프트웨어 클러스터링 방법은 복수의 소프트웨어로부터 추출한 복수의 버스마크가 포함된 데이터를 생성하는 단계와, 데이터에 대한 텍스트 마이닝을 통해 복수의 버스마크에게 가중치를 부여하는 단계와, 복수의 버스마크를 대상으로 하여, 가중치가 적용된 출현 빈도에 따라 숫자 벡터로 변환하는 벡터화를 수행하여 행렬로 표현하는 단계와, 행렬로 표현된 데이터를 기초로 한 특정 개수의 범주를 사용하여 복수의 소프트웨어를 클러스터링하는 단계를 포함한다. 이처럼 본 발명은 복수의 소프트웨어로부터 버스마크를 추출한 후 전처리 과정을 통해 데이터를 축소한 후에 클러스터링에 사용함으로써, 범주화의 정확성이 향상되도록 한다. 그러면, 프로그램 간의 유사도 분석을 위한 비교 횟수와 시간 등의 오버헤드를 효율적으로 줄일 수 있다.

Description

소프트웨어 클러스터링 방법 및 장치{METHOD AND APPARATUS FOR CLUSTERING SOFTWARE}
본 발명은 소프트웨어 클러스터링(clustering) 방법 및 장치에 관한 것이다. 더욱 상세하게는 복수의 소프트웨어로부터 추출한 버스마크(birthmark)를 클러스터링에 사용하는 소프트웨어 클러스터링 방법 및 장치에 관한 것이다.
소프트웨어 범주화란 다른 그룹에 있는 프로그램들보다 서로가 유사한 프로그램들을 하나의 프로그램 집합으로 그룹화하는 작업을 말한다. 소프트웨어 범주화는 인터넷을 통해 배포된 불법 프로그램을 식별하고 차단하는 소프트웨어 필터링 시스템의 검색 범위를 줄일 수 있다.
이러한 소프트웨어 필터링 시스템은 불법 소프트웨어가 불법 복제로 인해 변형되어 배포되는 경우가 빈번하게 존재하므로 소프트웨어의 유사도를 측정할 필요가 있으며, 비교해야 할 프로그램의 수가 많아지는 경우에는 식별하는데 걸리는 시간이 증가한다.
이를 위해 소프트웨어 클러스터링 또는 분류가 필요하다. 소프트웨어 클러스터링은 범주화되어 있지 않은 소프트웨어의 특징을 분석하여 유사한 프로그램끼리 클러스터로 묶어주는 것을 말하며, 소프트웨어 분류는 소프트웨어의 기능에 따른 범주를 정하여 소프트웨어의 특징을 분석하여 유사한 프로그램이 같은 범주에 포함되도록 하는 것을 말한다.
오픈소스 사이트에 업로드되어있는 소프트웨어는 웹사이트 별로 주요 기능에 따라 범주화되어 있으므로 웹사이트마다 주요 기능에 따른 범주화한 카테고리가 같지 않은 경우가 존재한다. 따라서 주요 기능에 따른 범주화의 정확성을 높이기 위해 클러스터링 기법을 적용함으로써 다수의 프로그램을 대상으로 유사도 분석을 위해 걸리는 시간과 비교 횟수 및 범위를 축소할 필요가 있다.
종래에는 소프트웨어의 분류를 위한 연구로서, 소프트웨어 대상의 기계학습 기반의 연구가 진행되었다. 소프트웨어 분류는 API(Application Programming Interface)나 문자열 등 프로그램의 기능을 식별하기 위한 버스마크를 이용하여 수행되었다.
그러나 프로그램 간의 유사도 분석 시에 많은 양의 프로그램과의 유사도 분석을 위해 간접적 혹은 추가적으로 요구되는 시간에 따라 오버헤드가 발생하는 문제점이 있었다.
한국등록특허 제10-1579347호, 등록일 2015년 12월 15일.
실시예에 따르면, 복수의 소프트웨어로부터 버스마크를 추출한 후 전처리 과정을 통해 데이터를 축소한 후에 클러스터링에 사용하는 소프트웨어 클러스터링 방법 및 장치를 제공한다.
해결하려는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
제 1 관점에 따른 소프트웨어 클러스터링 방법은, 복수의 소프트웨어로부터 추출한 복수의 버스마크가 포함된 데이터를 생성하는 단계와, 상기 데이터에 대한 텍스트 마이닝(text mining)을 통해 상기 복수의 버스마크에게 가중치를 부여하는 단계와, 상기 복수의 버스마크를 대상으로 하여, 상기 가중치가 적용된 출현 빈도에 따라 숫자 벡터로 변환하는 벡터화를 수행하여 행렬로 표현하는 단계와, 상기 행렬로 표현된 데이터를 기초로 한 특정 개수의 범주를 사용하여 상기 복수의 소프트웨어를 클러스터링하는 단계를 포함할 수 있다.
제 2 관점에 따른 소프트웨어 클러스터링 장치는, 복수의 소프트웨어로부터 추출한 복수의 버스마크가 포함된 데이터를 생성하는 데이터 생성부와, 상기 데이터에 대한 텍스트 마이닝을 통해 상기 복수의 버스마크에게 가중치를 부여하고, 상기 복수의 버스마크를 대상으로 하여, 상기 가중치가 적용된 출현 빈도에 따라 숫자 벡터로 변환하는 벡터화를 수행하여 행렬로 표현하는 분석부와, 상기 행렬로 표현된 데이터를 기초로 한 특정 개수의 범주를 사용하여 상기 복수의 소프트웨어를 클러스터링하는 처리부를 포함할 수 있다.
실시예에 의하면, 복수의 소프트웨어로부터 버스마크를 추출한 후 전처리 과정을 통해 데이터를 축소한 후에 클러스터링에 사용함으로써, 범주화의 정확성이 향상되도록 한다. 그러면, 프로그램 간의 유사도 분석을 위한 비교 횟수와 시간 등의 오버헤드를 효율적으로 줄일 수 있는 효과가 있다.
도 1은 일 실시예에 따른 소프트웨어 클러스터링 장치의 블록 구성도이다.
도 2는 일 실시예에 따른 소프트웨어 클러스터링 방법을 설명하기 위한 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
이하, 첨부된 도면들을 참조하여 본 발명의 실시예들에 대해 살펴보기로 한다.
도 1은 일 실시예에 따른 소프트웨어 클러스터링 장치의 블록 구성도이다.
이에 나타낸 바와 같이 소프트웨어 클러스터링 장치(100)는 데이터 생성부(110), 분석부(120), 처리부(130)를 포함한다.
데이터 생성부(110)는 복수의 소프트웨어로부터 추출한 복수의 버스마크가 포함된 데이터를 생성한다.
이러한 데이터 생성부(110)는 소프트웨어로부터 API(Application Programming Interface) 정보를 추출하여 버스마크로 정의할 수 있다.
분석부(120)는 데이터 생성부(110)에서 생성된 데이터에 대한 텍스트 마이닝(text mining)을 통해 복수의 버스마크에게 가중치를 부여하고, 복수의 버스마크를 대상으로 가중치가 적용된 출현 빈도에 따라 숫자 벡터로 변환하는 벡터화를 수행하여 행렬로 표현한다.
이러한 분석부(120)는 복수의 버스마크 중 다수의 소프트웨어에서 공통적으로 이용되는 버스마크에게 다른 버스마크보다 상대적인 영향력을 낮추기 위해 가중치를 상대적으로 더 낮게 부여한다.
아울러, 분석부(120)는 벡터화를 수행하여 표현된 행렬이 클러스터링에 사용되기 전에 제로 요소를 제거하여 희소행렬에서 밀집행렬로 변환한다.
또, 분석부(120)는 벡터화를 수행하여 표현된 행렬이 클러스터링에 사용되기 전에 특이값 분해(Singular Value Decomposition, SVD)를 이용하여 축소한다.
처리부(130)는 분석부(120)에 의해 행렬로 표현된 데이터를 기초로 한 특정 개수의 범주를 사용하여 복수의 소프트웨어를 클러스터링한다.
실시예에 따르면, 데이터 생성부(110), 분석부(120) 및 처리부(130)는 CPU(Central Processing Unit) 등과 같은 프로세서로 구현할 수 있다.
이와 같은 소프트웨어 클러스터링 장치(100)는 복수의 버스마크에게 가중치를 부여한 후에 벡터화 및 클러스터링을 위해 scikit-learn 라이브러리를 활용한 기계학습을 이용할 수 있다. 예컨대, TF-IDF(Term Frequency-Inverse Document Frequency)를 적용하여 가중치를 부여할 수 있다. TF-IDF의 적용 및 벡터화를 위해 scikit-learn 라이브러리의 TfidfVectorizer 모듈을 사용할 수 있다. 특이값 분해를 위해 scikit-learn 라이브러리의 TruncatedSVD 모듈을 사용할 수 있다. 클러스터링을 위해 scikit-learn 라이브러리의 Kmeans 모듈을 사용할 수 있다. 또, 클러스터링을 위해 가우시안 혼합모델(Gaussian Mixture Model(GMM), Mixture of Gaussian) 알고리즘을 사용할 수도 있다.
도 2는 일 실시예에 따른 소프트웨어 클러스터링 방법을 설명하기 위한 흐름도이다.
이에 나타낸 바와 같이 실시예에 따른 소프트웨어 클러스터링 방법은, 복수의 소프트웨어로부터 추출한 복수의 버스마크가 포함된 데이터를 생성하는 단계(S210)를 포함한다.
여기서, 소프트웨어로부터 API 정보를 추출하여 버스마크로 정의할 수 있다.
아울러, 복수의 버스마크가 포함된 데이터에 대한 텍스트 마이닝을 통해 복수의 버스마크에게 가중치를 부여하는 단계(S220)를 더 포함한다.
이어서, 복수의 버스마크를 대상으로 가중치가 적용된 출현 빈도에 따라 숫자 벡터로 변환하는 벡터화를 수행하여 행렬로 표현하는 단계(S230)를 더 포함한다.
여기서, 복수의 버스마크 중 다수의 소프트웨어에서 공통적으로 이용되는 버스마크에게 다른 버스마크보다 상대적인 영향력을 낮추기 위해 가중치를 상대적으로 더 낮게 부여한다.
그리고, 벡터화를 수행하여 표현된 행렬이 클러스터링에 사용되기 전에 제로 요소를 제거하여 희소행렬에서 밀집행렬로 변환하는 단계(S240)를 더 포함한다.
아울러, 벡터화를 수행하여 표현된 행렬이 클러스터링에 사용되기 전에 특이값 분해를 이용하여 축소하는 단계(S250)를 더 포함한다.
다음으로, 행렬로 표현된 후에 희소행렬의 변환 및 축소된 데이터를 기초로 한 특정 개수의 범주를 사용하여 복수의 소프트웨어를 클러스터링하는 단계(S260)를 더 포함한다.
이하, 도 1 및 도 2를 실시예에 따른 소프트웨어 클러스터링 장치(100)에 의해 수행되는 소프트웨어 클러스터링 과정에 대해 더 자세히 살펴보기로 한다.
먼저, 데이터 생성부(110)는 복수의 소프트웨어로부터 추출한 복수의 버스마크가 포함된 데이터를 생성한다(S210).
예컨대, 데이터 생성부(110)는 윈도우 실행 파일인 PE(Portable Executable) 포맷의 IAT(Import Address Table)에 포함된 API 정보를 추출하여 버스마크로 정의할 수 있다. 소프트웨어의 버스마크는 프로그램 실행 파일로부터 프로그램을 식별하는 데 사용될 수 있는 고유한 정보이다. 이러한 정보는 프로그램의 도용을 판별하기 위해 소프트웨어 간의 유사도를 측정하거나 소프트웨어 식별, 악성 코드 탐지 등에 사용되고 있다. 버스마크는 크게 정적 버스마크와 동적 버스마크로 분류할 수 있다. 정적 버스마크는 프로그램을 실행시키지 않고 실행파일로부터 추출 가능한 특징 정보이며, 동적 버스마크는 프로그램을 실행시켜 시스템 환경, 외부 입력 등에 따라 프로그램이 실행되는 과정으로부터 추출 가능한 특징 정보이다. 정적 버스마크는 프로그램을 실행시키지 않고 코드를 분석하기 때문에 분석을 자동화할 수 있으며, 코드 전체에 대한 분석을 수행하므로 동적 버스마크보다 코드 커버리지가 높고 추출 오버헤드가 낮은 특징이 있다.
그리고, 분석부(120)는 데이터 생성부(110)에서 생성된 데이터에 대한 텍스트 마이닝(text mining)을 통해 복수의 버스마크에게 가중치를 부여하고(S220), 복수의 버스마크를 대상으로 가중치가 적용된 출현 빈도에 따라 숫자 벡터로 변환하는 벡터화를 수행하여 행렬로 표현한다(S230).
실시예에 따르면, 소프트웨어 클러스터링 장치(100)의 분석부(120)는 복수의 버스마크에게 가중치를 부여한 후에 벡터화 및 클러스터링을 위해 scikit-learn 라이브러리를 활용한 기계학습을 이용할 수 있다.
이러한 분석부(120)는 복수의 버스마크 중 다수의 소프트웨어에서 공통적으로 이용되는 버스마크에게 다른 버스마크보다 상대적인 영향력을 낮추기 위해 가중치를 상대적으로 더 낮게 부여한다. 소프트웨어로부터 버스마크로서 추출된 API는 프로그램의 파일 제어, 네트워크, 메모리 할당 등과 같이 프로그램에 필수적인 기능을 제어하는 API가 존재한다. 이러한 API는 대부분의 프로그램에 존재하기 때문에 프로그램의 고유한 정보로 정의하기 어려워 클러스터링에 대한 신뢰성을 낮추게 되므로, 가중치를 다른 API보다 상대적으로 더 낮게 부여하는 것이다. 이를 위해 다수의 프로그램에서 빈번하게 호출되는 API의 영향력을 낮추기 위해 텍스트 마이닝 기법에 사용되는 TF-IDF를 적용하여 API에 대한 가중치를 적용할 수 있다. 또, TF-IDF의 적용 및 벡터화를 위해 scikit-learn 라이브러리의 TfidfVectorizer 모듈을 사용할 수 있다.
아울러, 분석부(120)는 벡터화를 수행하여 표현된 행렬이 클러스터링에 사용되기 전에 제로 요소를 제거하여 희소행렬에서 밀집행렬로 변환한다. 분석부(120)가 데이터 생성부(110)에 의해 생성된 데이터를 기반으로 벡터화한 공간에는 제로 요소, 즉 '0'이 다수 포함된 희소행렬이기 때문에 불필요한 공간이 많이 존재한다. 예컨대, 분석부(120)는 TfidfVectorizer 모듈의 fit_trnasform() 함수를 적용함으로써 공간을 축소할 수 있다. fit_transform() 함수는 벡터화된 데이터 내에서 '0'을 제거하여 희소행렬에서 밀집행렬로 변환함으로써 공간을 축소하는 기능을 제공한다(S240).
그리고, 분석부(120)는 벡터화를 수행하여 표현된 행렬이 클러스터링에 사용되기 전에 특이값 분해를 이용함으로써 공간을 더욱 축소한다. 단계 S240에서 희소행렬을 변환함으로써 공간을 축소했지만 추출된 API 수는 여전히 많을 수 있기 때문에 기계학습에서 사용하기에는 복잡도가 여전히 클 수 있다. 예컨대, 분석부(120)는 데이터 압축, 노이즈 제거 등에 활용되는 truncated SVD를 이용하여 공간을 축소할 수 있다. 이를 위해, 분석부(120)는 scikit-learn 라이브러리의 TruncatedSVD 모듈을 사용할 수 있다. truncated SVD는 적용할 행렬이 어떠한 행렬이든지 관계없이 모든 행렬에 적용할 수 있기 때문에, TF-IDF가 적용되어 희소행렬 상태에서 변환된 행렬에 적합하다(S250).
이로써, 분석부(120)에 의해 가중치 적용, 벡터화, 희소행렬의 변환, 특이값 분해 등의 전처리 과정을 거친 데이터가 처리부(130)에게 제공된다.
다음으로, 처리부(130)는 전처리 과정을 거친 데이터를 기초로 한 특정 개수의 범주를 사용하여 복수의 소프트웨어를 클러스터링한다. 예컨대, 처리부(130)는 클러스터링을 위해 scikit-learn 라이브러리의 Kmeans 모듈을 사용함으로써, 클러스터링을 위해 K-평균 알고리즘을 사용할 수 있다. 아울러, 처리부(130)는 클러스터링 결과에 대한 척도로 실루엣 계수를 사용한다. 실루엣 계수는 데이터들이 얼마나 잘 클러스터링 되었는지 나타내는 척도를 의미한다. 예컨대, 처리부(130)는 임의로 선정된 데이터 i와 그 외 데이터 간의 거리를 계산하기 위해 유클리디안 거리(Euclidean distance) 수식, 코사인 거리(Cosine distance) 수식, 맨해턴 거리(Manhattan distance) 수식을 각각 적용하여 실루엣 계수를 측정한다. 각 거리 공식으로 계산된 실루엣 계수를 기반으로 클러스터링의 척도를 판단한다. 이를 위해 거리를 측정하기 위한 기능을 제공하는 scikit-learn 라이브러리의 pairwise_distances 모듈을 사용할 수 있다(S260).
지금까지 설명한 바와 같이 실시예에 의하면, 복수의 소프트웨어로부터 버스마크를 추출한 후 전처리 과정을 통해 데이터를 축소한 후에 클러스터링에 사용함으로써, 범주화의 정확성이 향상되도록 한다. 그러면, 프로그램 간의 유사도 분석을 위한 비교 횟수와 시간 등의 오버헤드를 효율적으로 줄일 수 있다. 이러한 소프트웨어 클러스터링 방법은 윈도우 실행 파일뿐만 아니라, 안드로이드 앱 또는 iOS 앱 등의 실행파일을 분류하는데 사용될 수 있다.
아울러, 본 발명의 실시예에 따른 클러스트링 방법 및 장치를 활용할 수 있는 소프트웨어 필터링 시스템은 각종의 앱 마켓(예컨대, Naver 앱 스토어, *** play, 애플 앱 스토어 등)에서 불법 앱(예컨대, 도용 앱, 표절 앱, 해킹된 앱, 음란 앱 등)을 효율적으로 식별하기 위해 사용될 수 있다. 예컨대, 누군가가 새로운 앱을 개발하여 업로드 할 경우에, 새로운 앱이 불법 앱인지 검사할 때도 사용할 수 있다.
본 명세서에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 기록매체에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 기록매체에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100 : 소프트웨어 클러스터링 장치
110 : 데이터 생성부
120 : 분석부
130 : 처리부

Claims (22)

  1. 소프트웨어 클러스터링 장치에서 수행하는 소프트웨어 클러스터링 방법으로서,
    복수의 소프트웨어로부터 추출한 복수의 버스마크(birthmark)가 포함된 데이터를 생성하는 단계와,
    상기 데이터에 대한 텍스트 마이닝(text mining)을 통해 상기 복수의 버스마크에게 가중치를 부여하는 단계와,
    상기 복수의 버스마크를 대상으로 하여, 상기 가중치가 적용된 출현 빈도에 따라 숫자 벡터로 변환하는 벡터화를 수행하여 행렬로 표현하는 단계와,
    상기 행렬로 표현된 데이터를 기초로 한 특정 개수의 범주를 사용하여 상기 복수의 소프트웨어를 클러스터링하는 단계를 포함하는
    소프트웨어 클러스터링 방법.
  2. 제 1 항에 있어서,
    상기 가중치를 부여하는 단계는,
    상기 복수의 버스마크 중 다수의 상기 소프트웨어에서 공통적으로 이용되는 버스마크에게 다른 버스마크보다 상기 가중치를 상대적으로 더 낮게 부여하는
    소프트웨어 클러스터링 방법.
  3. 제 1 항에 있어서,
    상기 소프트웨어로부터 API(Application Programming Interface) 정보를 추출하여 상기 버스마크로 정의하는
    소프트웨어 클러스터링 방법.
  4. 제 1 항에 있어서,
    상기 가중치의 부여와 상기 벡터화 및 상기 클러스터링을 위해 scikit-learn 라이브러리를 활용한 기계학습을 하는
    소프트웨어 클러스터링 방법.
  5. 제 1 항에 있어서,
    TF-IDF(Term Frequency-Inverse Document Frequency)를 적용하여 상기 가중치를 부여하는
    소프트웨어 클러스터링 방법.
  6. 제 5 항에 있어서,
    상기 TF-IDF의 적용 및 상기 벡터화를 위해 scikit-learn 라이브러리의 TfidfVectorizer 모듈을 사용하는
    소프트웨어 클러스터링 방법.
  7. 제 1 항에 있어서,
    상기 벡터화를 수행하여 표현된 행렬이 상기 클러스터링에 사용되기 전에 제로 요소를 제거하여 희소행렬에서 밀집행렬로 변환하는 단계를 더 포함하는
    소프트웨어 클러스터링 방법.
  8. 제 1 항에 있어서,
    상기 벡터화를 수행하여 표현된 행렬이 상기 클러스터링에 사용되기 전에 특이값 분해(Singular Value Decomposition, SVD)를 이용하여 축소하는 단계를 더 포함하는
    소프트웨어 클러스터링 방법.
  9. 제 8 항에 있어서,
    상기 특이값 분해를 위해 scikit-learn 라이브러리의 TruncatedSVD 모듈을 사용하는
    소프트웨어 클러스터링 방법.
  10. 제 1 항에 있어서,
    상기 클러스터링을 위해 scikit-learn 라이브러리의 Kmeans 모듈이나, 가우시안 혼합모델(Gaussian Mixture Model(GMM), Mixture of Gaussian)을 사용하는
    소프트웨어 클러스터링 방법.
  11. 제 1 항 내지 제 10 항 중 어느 한 항의 소프트웨어 클러스터링 방법을 프로세서가 수행하도록 하기 위하여
    컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
  12. 제 1 항 내지 제 10 항 중 어느 한 항의 소프트웨어 클러스터링 방법을 프로세서가 수행하도록 하는
    컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 기록매체.
  13. 복수의 소프트웨어로부터 추출한 복수의 버스마크(birthmark)가 포함된 데이터를 생성하는 데이터 생성부와,
    상기 데이터에 대한 텍스트 마이닝(text mining)을 통해 상기 복수의 버스마크에게 가중치를 부여하고, 상기 복수의 버스마크를 대상으로 하여, 상기 가중치가 적용된 출현 빈도에 따라 숫자 벡터로 변환하는 벡터화를 수행하여 행렬로 표현하는 분석부와,
    상기 행렬로 표현된 데이터를 기초로 한 특정 개수의 범주를 사용하여 상기 복수의 소프트웨어를 클러스터링하는 처리부를 포함하는
    소프트웨어 클러스터링 장치.
  14. 제 13 항에 있어서,
    상기 분석부는, 상기 복수의 버스마크 중 다수의 상기 소프트웨어에서 공통적으로 이용되는 버스마크에게 다른 버스마크보다 상기 가중치를 상대적으로 더 낮게 부여하는
    소프트웨어 클러스터링 장치.
  15. 제 13 항에 있어서,
    상기 소프트웨어로부터 API(Application Programming Interface) 정보를 추출하여 상기 버스마크로 정의하는
    소프트웨어 클러스터링 장치.
  16. 제 13 항에 있어서,
    상기 가중치의 부여와 상기 벡터화 및 상기 클러스터링을 위해 scikit-learn 라이브러리를 활용한 기계학습을 하는
    소프트웨어 클러스터링 장치.
  17. 제 13 항에 있어서,
    TF-IDF(Term Frequency-Inverse Document Frequency)를 적용하여 상기 가중치를 부여하는
    소프트웨어 클러스터링 장치.
  18. 제 17 항에 있어서,
    상기 TF-IDF의 적용 및 상기 벡터화를 위해 scikit-learn 라이브러리의 TfidfVectorizer 모듈을 사용하는
    소프트웨어 클러스터링 장치.
  19. 제 13 항에 있어서,
    상기 분석부는, 상기 벡터화를 수행하여 표현된 행렬이 상기 클러스터링에 사용되기 전에 제로 요소를 제거하여 희소행렬에서 밀집행렬로 변환하는
    소프트웨어 클러스터링 장치.
  20. 제 13 항에 있어서,
    상기 분석부는, 상기 벡터화를 수행하여 표현된 행렬이 상기 클러스터링에 사용되기 전에 특이값 분해(Singular Value Decomposition, SVD)를 이용하여 축소하는
    소프트웨어 클러스터링 장치.
  21. 제 20 항에 있어서,
    상기 특이값 분해를 위해 scikit-learn 라이브러리의 TruncatedSVD 모듈을 사용하는
    소프트웨어 클러스터링 장치.
  22. 제 13 항에 있어서,
    상기 클러스터링을 위해 scikit-learn 라이브러리의 Kmeans 모듈이나, 가우시안 혼합모델(Gaussian Mixture Model(GMM), Mixture of Gaussian)을 사용하는
    소프트웨어 클러스터링 장치.
KR1020160103775A 2016-08-16 2016-08-16 소프트웨어 클러스터링 방법 및 장치 KR101869026B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160103775A KR101869026B1 (ko) 2016-08-16 2016-08-16 소프트웨어 클러스터링 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160103775A KR101869026B1 (ko) 2016-08-16 2016-08-16 소프트웨어 클러스터링 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20180019429A KR20180019429A (ko) 2018-02-26
KR101869026B1 true KR101869026B1 (ko) 2018-06-20

Family

ID=61531401

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160103775A KR101869026B1 (ko) 2016-08-16 2016-08-16 소프트웨어 클러스터링 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101869026B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102246405B1 (ko) * 2019-07-25 2021-04-30 호서대학교 산학협력단 Tf-idf 기반 벡터 변환 및 데이터 분석 장치 및 방법
CN110544109A (zh) * 2019-07-25 2019-12-06 深圳壹账通智能科技有限公司 用户画像生成方法、装置、计算机设备和存储介质
KR102427782B1 (ko) * 2020-11-19 2022-08-02 숭실대학교 산학협력단 인접 행렬 기반의 악성 코드 탐지 및 분류 장치와 악성 코드 탐지 및 분류 방법
WO2022107964A1 (ko) * 2020-11-19 2022-05-27 숭실대학교 산학협력단 인접 행렬 기반의 악성 코드 탐지 및 분류 장치와 악성 코드 탐지 및 분류 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150047241A (ko) * 2013-10-24 2015-05-04 한양대학교 산학협력단 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치
KR20150051508A (ko) * 2013-11-04 2015-05-13 단국대학교 산학협력단 소프트웨어 버스마크에 기반한 소프트웨어 자산 관리 방법 및 그 장치
KR20150051833A (ko) * 2013-11-05 2015-05-13 단국대학교 산학협력단 실행 파일의 부분 정보를 이용한 소프트웨어 불법 복제 및 표절 탐지 방법 및 이를 이용한 장치
KR101628602B1 (ko) * 2015-01-14 2016-06-08 한양대학교 산학협력단 프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101579347B1 (ko) 2013-01-02 2015-12-22 단국대학교 산학협력단 실행 파일의 특징 정보를 이용한 소프트웨어 유사도 탐지 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150047241A (ko) * 2013-10-24 2015-05-04 한양대학교 산학협력단 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치
KR20150051508A (ko) * 2013-11-04 2015-05-13 단국대학교 산학협력단 소프트웨어 버스마크에 기반한 소프트웨어 자산 관리 방법 및 그 장치
KR20150051833A (ko) * 2013-11-05 2015-05-13 단국대학교 산학협력단 실행 파일의 부분 정보를 이용한 소프트웨어 불법 복제 및 표절 탐지 방법 및 이를 이용한 장치
KR101628602B1 (ko) * 2015-01-14 2016-06-08 한양대학교 산학협력단 프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치

Also Published As

Publication number Publication date
KR20180019429A (ko) 2018-02-26

Similar Documents

Publication Publication Date Title
CN109873812B (zh) 异常检测方法、装置及计算机设备
US10581888B1 (en) Classifying software scripts utilizing deep learning networks
KR101869026B1 (ko) 소프트웨어 클러스터링 방법 및 장치
CN109905385B (zh) 一种webshell检测方法、装置及***
CN108021806B (zh) 一种恶意安装包的识别方法和装置
CN110348214B (zh) 对恶意代码检测的方法及***
CN111062495A (zh) 机器学习方法及相关装置
CN109271788B (zh) 一种基于深度学习的Android恶意软件检测方法
CN107273294B (zh) 一种基于神经网络语言模型的重复代码检测方法
CN109743311A (zh) 一种WebShell检测方法、装置及存储介质
US10296326B2 (en) Method and system for identifying open-source software package based on binary files
CN105205397A (zh) 恶意程序样本分类方法及装置
CN109829302B (zh) Android恶意应用家族分类方法、装置与电子设备
US20220300280A1 (en) Predictive build quality assessment
CN112052451A (zh) 一种webshell检测方法和装置
CN109067708B (zh) 一种网页后门的检测方法、装置、设备及存储介质
CN115221516A (zh) 恶意应用程序识别方法及装置、存储介质、电子设备
Liu et al. Using g features to improve the efficiency of function call graph based android malware detection
KR102434899B1 (ko) 악성코드 탐지모델 학습방법 및 악성코드 탐지방법
KR101628602B1 (ko) 프로그램의 유사도를 판단하기 위한 유사도 판단 방법 및 유사도 판단 장치
CN107943916B (zh) 一种基于在线分类的网页异常检测方法
CN108875374B (zh) 基于文档节点类型的恶意pdf检测方法及装置
CN110990834A (zh) 一种android恶意软件的静态检测方法、***及介质
CN104008333B (zh) 一种安装包的检测方法和设备
CN111198934A (zh) 一种信息处理方法及相关设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right