KR100744559B1 - 유사성 기반 해싱 알고리즘을 이용한 데이터 해싱 방법,데이터 처리 방법, 및 데이터 처리 시스템 - Google Patents

유사성 기반 해싱 알고리즘을 이용한 데이터 해싱 방법,데이터 처리 방법, 및 데이터 처리 시스템 Download PDF

Info

Publication number
KR100744559B1
KR100744559B1 KR1020060064012A KR20060064012A KR100744559B1 KR 100744559 B1 KR100744559 B1 KR 100744559B1 KR 1020060064012 A KR1020060064012 A KR 1020060064012A KR 20060064012 A KR20060064012 A KR 20060064012A KR 100744559 B1 KR100744559 B1 KR 100744559B1
Authority
KR
South Korea
Prior art keywords
data
hashing
value
algorithm
sbh
Prior art date
Application number
KR1020060064012A
Other languages
English (en)
Other versions
KR20070059888A (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 US11/634,731 priority Critical patent/US7617231B2/en
Publication of KR20070059888A publication Critical patent/KR20070059888A/ko
Application granted granted Critical
Publication of KR100744559B1 publication Critical patent/KR100744559B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC

Abstract

본 발명은 동일한 데이터는 동일한 해싱 값을 생성하고, 유사한 데이터의 경우 해싱 값의 차가 데이터의 유사도와 반비례 관계를 가지도록 해싱 값을 생성하는 유사성 기반 해싱 알고리즘을 이용한 데이터 해싱 방법, 데이터 처리 방법, 및 데이터 처리 시스템을 제공한다. 그 데이터 해싱 방법은 전산 데이터를 입력하는 단계; 및 동일 데이터에 대해서는 동일 해싱 값을 생성하고, 유사한 데이터의 경우 해싱 값의 차가 데이터의 유사도와 반비례 관계를 가지도록 해싱 값을 생성하는 유사성 기반 해싱(Similarity-based Hashing:SBH) 알고리즘을 이용하여 전산 데이터에 대한 해싱 값을 생성하는 단계;를 포함한다. 본 발명의 데이터 해싱 방법은 생성된 해싱 값들의 차가 데이터의 유사도와 반비례 관계를 가지므로, 데이터들의 검색, 비교, 분류 등을 O(1) 또는 O(n) 정도의 시간 복잡도 내에 신속하게 처리할 수 있는 장점을 가진다.
데이터 비교, 데이터 분류, 문서 비교, 문서 분류, 파일 비교, 파일 분류, 유사성, 동일성, 해싱, 핑거프린트

Description

유사성 기반 해싱 알고리즘을 이용한 데이터 해싱 방법, 데이터 처리 방법, 및 데이터 처리 시스템{Method of hashing data and handling data, and data processing system using similarity-based hashing(SBH)}
도 1a는 본 발명의 해싱 방법에 대한 제1 실시예에 따른 해싱 값을 생성하는 과정을 개략적으로 보여주는 흐름도이다.
도 1b는 본 발명의 해싱 방법에 대한 제2 실시예에 따른 해싱 값을 생성하는 과정을 개략적으로 보여주는 흐름도이다.
도 2a는 도 1a 또는 도 1b의 해싱 값 생성 과정을 좀더 상세하게 보여주는 블럭도이다.
도 2b는 다단계 해싱 방법을 도입하여 해싱 값을 생성하는 방법을 보여주는 블럭도이다.
도 3a은 본 발명의 데이터 처리 방법에 대한 일 실시예에 따른 데이터를 검색하는 과정을 개략적으로 보여주는 흐름도이다.
도 3b는 도 3a의 데이터 검색 과정을 좀더 상세하게 보여주는 블럭도이다.
도 4는 본 발명의 데이터 처리 시스템에 대한 구조를 개략적으로 보여주는 블럭도이다.
<도면의 주요부분에 대한 설명>
110:데이터 문서 112:슁글
120:해시 배열 134:해시 벡터
120-1,...120-m:서브 해시 배열 130-1,...130-m:서브 해시 벡터
130, 130-1,...130-m:벡터 삼각형 132:기준 벡터
310:전산 데이터들 336:해싱 값 테이블
332:D 테이블 334:θ 테이블
340:검색 데이터 410:입력부
420:해싱 값 생성부 430:데이터 처리부
440:비교 검색부
본 발명은 전자문서 또는 전산 데이터 처리에 관한 발명으로서, 특히 데이터의 내용(contents)을 간단한 수치 값으로 기술할 수 있는 해싱 방법, 그 해싱 방법을 이용한 데이터 처리 및 시스템에 관한 것이다.
일반적으로 두 전자 문서 또는 전산 데이터의 내용을 비교하여 판별할 수 있는 알고리즘들은 이미 널리 알려져 있다. 예컨대, 유닉스 시스템 상에서 널리 사용되는 diff 툴을 비롯하여, LCSeq(Longest Common Subsequence), LCStr(Longest Common Substring) 등의 알고리즘들을 활용하는 경우가 이에 해당한다. 편의상 본 발명에서는 이와 같은 계열의 알고리즘들을 LEG-CMP(Legacy Comparison) 알고리즘이라고 한다.
LEG-CMP 알고리즘들이 가진 단점은 다음의 각 문제들을 해결하는 방식을 살펴봄으로써 확인할 수 있다.
<문제 1: N 개의 데이터를 유사도 기준으로 분류하라>
LEG-CMP알고리즘을 이용할 경우, 모든 데이터들을 상호 비교해야 하므로 N x (N-1)/2 회의 LEG-CMP 알고리즘이 수행되어야 한다. 따라서, 이와 같은 처리절차는 큰 N값에 대하여 매우 취약하다.
<문제 2: 어떤 데이터 P와 다수 개의 데이터로 이루어진 데이터 집합 X가 주어질 때, 데이터 집합 X 내에서 데이터 P와 유사한 데이터를 찾아라>
LEG-CMP 알고리즘을 이용할 경우, 집합 X내의 모든 데이터들과 데이터 P를 각각 비교해야 하므로 집합 X의 크기, 즉 데이터의 개수만큼의 알고리즘 수행이 요구된다. 역시, 데이터의 개수가 매우 큰 값일 경우 문제의 해결에 걸리는 시간이 증가한다.
데이터 비교연산을 통해 상기의 문제들을 해결하는 LEG-CMP 알고리즘과는 달리, 해싱 기법을 이용할 경우 다수의 데이터들을 비교하는 데 있어서 큰 성능개선 효과를 기대할 수 있다. 해싱 된 값들이 저장된 해싱 값 테이블 상에서 특정 위치의 값을 확인하는 것만으로 문제들이 해결되기 때문이다.
기존에 널리 활용되고 있는 데이터 해싱 기법으로는 CRC(Cyclic Redundary Check), MD5(Message Digest5), SHA-1(Secure Hash Algorthm-1), XOR-Folding and Shift 등이 있다. 편의상 본 발명에서는 이와 같은 계열의 알고리즘들을 EXCT-HASH (Exact Match-based Hashing) 알고리즘이라고 한다. 그러나 기존 EXCT-HASH의 문제점은, 동일한 데이터의 경우 동일한 해싱 값이 산출되지만, 한 바이트라도 다른 내용의 경우 전혀 다른 해싱 값이 산출된다는 점이다. 즉, 데이터 내용의 유사성에 비례하여 해싱 값이 서로 근접하는 속성을 기대할 수 없다. 따라서, 서로 유사한 데이터를 해싱을 통해 찾아내기 위해서는 다른 방식의 해싱 알고리즘이 요구된다.
따라서, 본 발명이 이루고자 하는 기술적 과제는 동일한 데이터는 동일한 해싱 값을 생성하고, 유사한 데이터의 경우 해싱 값의 차가 데이터의 유사도와 반비례 관계를 가지도록 해싱 값을 생성하는 유사성 기반 해싱 알고리즘을 이용한 데이터 해싱 방법, 데이터 처리 방법, 및 데이터 처리 시스템을 제공하는 데에 있다.
상기 기술적 과제를 달성하기 위하여, 본 발명은 전산 데이터를 입력하는 단계; 및 동일 데이터에 대해서는 동일 해싱 값을 생성하고, 유사한 데이터의 경우 해싱 값의 차가 데이터의 유사도와 반비례 관계를 가지도록 해싱 값을 생성하는 유사성 기반 해싱(Similarity-based Hashing:SBH) 알고리즘을 이용하여 상기 전산 데이터에 대한 해싱 값을 생성하는 단계;를 포함하는 SBH 알고리즘을 이용한 데이터 해싱 방법을 제공한다.
본 발명에 있어서, 상기 전산 데이터는 컴퓨터 파일 문서, 네트워크 상에서 전달되는 패킷 및 데이터베이스 질의문을 포함하는, 비트 스트링(bit string)으로 표현되는 모든 데이터일 수 있다.
상기 SBH 알고리즘을 이용한 해싱 값 생성하는 단계는, 상기 전산 데이터의 내용으로부터 핑거프린트(fingerprint) 값을 계산하는 단계; 일정 규칙에 의해 상기 핑거프린트 값에 대응하여 N 차원 해시 벡터의 해당 성분 값을 변화시키는 단계; 상기 전산 데이터의 내용이 끝인지를 판단하는 단계; 및 상기 전산 데이터의 내용이 끝인 경우에 상기 해시 벡터를 상기 해싱 값으로 수치화하는 단계;를 포함할 수 있다. 또한, 상기 전산 데이터의 내용이 끝이 아닌 경우에는 상기 핑거프린트 값 계산 단계로 돌아가 상기 전산 데이터에 대한 다음 핑거프린트 값을 계산을 진행한다.
상기 핑거프린트 값을 계산하는 단계는, 상기 전산 데이터에서 일정 길이의 연속 또는 불연속의 바이트스트링인 슁글(shingle)을 추출하는 단계; 및 상기 슁글에 대하여 균일성과 임의성을 만족하며 충돌가능성이 작은 데이터 해싱 알고리즘을 이용하여 핑거프린트 값을 생성하는 단계;를 포함할 수 있다. 상기 데이터 해싱 알고리즘은 라빈-카프(Rabin-Karp) 핑거프린팅, 바이트-와이즈 폴더링(Byte-wise Foldering) 및 엑스오어링(XORing) 등의 기존 해싱 알고리즘들 중 어느 하나일 수 있다.
상기 해시 벡터의 성분 값을 변화시키는 단계는, 상기 핑거프린트 값 또는 핑거프린트 값의 일부에 상기 일정 규칙을 적용하여 상기 핑거프린트 값을 N개의 그룹 중 어느 한 그룹으로 분류하는 단계; 및 상기 핑거프린트 값이 상기 분류에 의해 어느 해당 그룹에 속할 때, 대응하는 해시 벡터의 성분 값을 증가시키는 단 계;를 포함할 수 있다. 상기 해시 벡터의 각 성분의 초기값은 균일하거나 또는 균일하지 않은 정수 값으로 설정하고, 상기 성분 값 증가시키는 단계에서 모든 그룹에 대하여 동일 단위로 증가시키거나 또는 각 그룹별로 가중치를 두어 다른 단위로 증가시킬 수 있다.
상기 해시 벡터의 성분 값으로 입력하는 단계 전에 상기 핑거프린트 값 또는 핑거프린트 값의 일부를 기준으로 일관된 샘플링을 적용하는 단계를 포함할 수 있고, 상기 해시 벡터의 성분 값을 변화시키는 단계에서 샘플링에 의해 선택된 일정 핑거프린트 값만을 상기 해시 벡터의 성분 값 변화에 이용할 수 있다.
상기 SBH 알고리즘을 이용한 해싱 값 생성하는 단계는, 상기 전산 데이터의 내용으로부터 다수의 핑거프린트(fingerprint) 값들을 계산하는 단계; 일정 규칙에 의해 상기 핑거프린트 값들에 대응한 N 차원 해시 벡터를 생성하는 단계; 및 상기 해시 벡터를 상기 해싱 값으로 수치화하는 단계;를 포함할 수 있다.
상기 해시 벡터를 생성하는 단계는, 상기 핑거프린트 값들 또는 핑거프린트 값들 각각의 일부들에 상기 일정 규칙을 적용하여 상기 핑거프린트 값들을 N개의 그룹으로 분류하는 단계; 및 상기 각 그룹이 포함한 상기 핑거프린트 값들의 개수를 상기 해시 벡터의 해당 성분 값으로 하거나, 각 그룹에 가중치를 두어 상기 개수에 가중치를 곱한 값을 상기 해시 벡터의 해당 성분 값으로 하여 상기 해시 벡터를 생성하는 단계;를 포함할 수 있다.
상기 해싱 값은 제1 및 제2 해싱 값을 포함하고, 상기 제1 해싱 값은 상기 해시 벡터와 N차원의 기준 벡터 사이의 사이 각(θ) 또는 코사인 사이 각(cosθ)이 며, 상기 제2 해싱 값은 상기 해시 벡터와 상기 N차원의 기준 벡터의 종점 간의 거리(D) 또는 상기 해시 벡터와 상기 N차원의 기준 벡터의 내적 값일 수 있다.
상기 N차원 해시 벡터는 m개의 서브벡터로 나누어지고, 상기 해싱 값은 각각 m 개의 성분을 가지는 제1M 및 제2M 해싱 값을 포함하고, 상기 제1M 해싱 값의 m 개의 각 성분은 상기 m개의 서브벡터 각각과 동일 차원의 m개의 기준 서브벡터들 사이의 사이 각(θi:i= 1 ~ m) 또는 코사인 사이 각(cosθi)들이며, 상기 제2M 해싱 값의 m 개의 각 성분은 상기 m개의 서브벡터 각각과 동일 차원의 m개의 기준 서브벡터들 종점들 간의 거리(Di:i= 1 ~ m) 또는 상기 m개의 서브벡터 각각과 동일 차원의 m개의 기준 서브벡터들의 내적 값들일 수 있다.
상기 m 개의 서브벡터들의 차원의 합은 상기 N 차원과 같거나 또는 N 차원보다 클 수 있고, 상기 m 개의 서브벡터 각각은 N 차원을 가지되, 상기 N 차원 해시 벡터의 성분 값을 가지는 부분 이외의 성분 값들은 0인 벡터로 생각할 수 있다.
다수의 전산 데이터에 대하여, 각각 2m 개의 성분을 가지는 다수의 해싱 값이 생성되고, 2m 개의 성분을 가지는 기준 해싱 값에 대하여, 각각의 성분들을 비교하여 그 차이 값에 반비례하게 서브 비중 값을 설정하고 모든 서브 비중 값을 합한 비중의 합의 크기에 의해 상기 전산 데이터 각각의 유사도를 판단할 수 있다.
본 발명은 또한 상기 기술적 과제를 달성하기 위하여, 상기 SBH 알고리즘을 이용하여 다수의 전산 데이터들에 대하여 해싱 값 테이블을 작성하는 단계; 및 상기 해싱 값 테이블을 이용하여 상기 다수의 전산 데이터를 처리하는 단계;를 포함 하는 SBH 알고리즘을 이용한 데이터 처리 방법을 제공한다.
본 발명에 있어서, 상기 전산 데이터의 처리는 데이터들의 비교, 검색, 분류, 변경, 및 유사도 계산 중 적어도 하나를 포함하고, 상기 전산 데이터의 처리는 상기 해싱 값 테이블의 해싱 값들 간의 차의 크기를 이용함으로써, 상수인 O(1) 또는 데이터의 개수(n)에 비례하는 O(n)의 시간 복잡도 내에 처리할 수 있다.
상기 전산 데이터의 처리가 검색 데이터에 대한 동일 또는 유사 데이터의 검색인 경우에, 상기 전산 데이터 처리 단계는, 상기 검색 데이터를 입력하는 단계; 상기 검색 데이터에 대하여 상기 SBH 알고리즘을 이용하여 해싱 값을 생성하는 단계; 및 상기 해싱 값을 상기 해싱 값 테이블에 인덱싱하여 동일 또는 유사 데이터를 찾는 단계;를 포함할 수 있다.
상기 해싱 값 테이블 작성 단계에서 상기 전산 데이터들에 대한 상기 해싱 값들을 작성하며, 상기 동일 또는 유사 데이터를 찾는 단계에서 상기 검색 데이터에 대한 상기 해싱 값을 상기 해싱 값 테이블의 상기 해싱 값들과 비교하여 사용자가 정한 일정 해싱 값 차의 범위 내에서 상기 검색 데이터와 동일 또는 유사 데이터들을 찾을 수 있다.
상기 전산 데이터는 네트워크 상에서 전송되는 패킷이고, 상기 해싱 값 테이블을 작성하는 단계에서 전송되는 패킷에 대한 해싱 값 테이블을 작성하고, 상기 데이터 처리 단계에서, 특정 패킷과 동일 또는 유사한 패킷이 폭증하는 것을 감시 및 차단할 수 있다.
더 나아가, 상기 기술적 과제를 달성하기 위하여, 본 발명은 전산 데이터가 입력되는 입력부; 상기 입력부를 통해 입력된 전산 데이터에 대하여 제1 항의 SBH 알고리즘을 이용하여 해싱 값을 생성하는 해싱 값 생성부; 및 상기 해싱 값들을 이용하여 전산 데이터를 처리하는 데이터 처리부;를 포함하는 SBH 알고리즘을 이용한 데이터 처리 시스템을 제공한다.
본 발명에 있어서, 상기 전산 데이터는 네트워크 상에서 전송되는 패킷들이고, 상기 패킷들 각각에 해당하는 상기 해싱 값들이 해싱 값 테이블에 작성되고, 상기 데이터 처리부가 상기 해싱 값 테이블 내에 특정 해싱 값 또는 일정 해싱 값 차이 내의 해싱 값들의 개수가 임계치 이상으로 증가하는 경우를 확인하여, 특정 패킷과 동일 또는 유사한 패킷이 폭증하는 것을 감시 및 차단할 수 있다.
상기 데이터 처리 시스템은 저작권에 의하여 보호되는 디지털 문서화된 원본 문서의 불법 유통을 감시 및 통제하는 시스템일 수 있고, 또한 다수의 개발자가 동시 사용하는 공통 개발 및 배포환경 시스템(Concurrent Versions System:CVC)과 같이 다수의 문서를 가지고 있으며, 문서들에 대해 비교, 검색, 탐색, 분류 등의 기능을 수행하는 문서 관리 시스템일 수도 있다.
상기 데이터 처리 시스템은 동일 데이터 비교 알고리즘을 이용하는 데이터 비교검색부를 더 포함하고, 상기 데이터 처리부가 동일 또는 유사 데이터에 대한 빠른 검색을 위하여, 상기 SBH 알고리즘을 이용하고, 상기 검색된 동일 또는 유사 데이터에 대한 상세 비교를 위하여 상기 동일 데이터 비교 알고리즘을 이용할 수 있다.
상기 동일 데이터 비교 알고리즘은 diff 툴, Longest Common Subsequence(LCSeq), Longest Common Substring(LCStr) 중의 어느 하나를 포함하는 레가시-비교(Legacy Comparison:LEG-CMP) 알고리즘일 수 있다.
본 발명에서는, 데이터의 내용을 간단한 수치 값으로 기술할 수 있는 해싱 방법을 통하여 상기의 문제들을 해결코자 한다. 이 해싱 방법에 의하면, 서로 동일한 데이터는 동일한 해싱 값을 가지게 되고, 서로 유사한 데이터들은 그 해싱 값의 차가 두 데이터의 유사도(similarity)에 비례하여 작아진다. 따라서, 두 데이터의 내용을 비교할 경우 각 데이터를 해싱한 후 그 값들의 차를 확인함으로써 데이터의 유사성을 손쉽게 판별할 수 있다. 편의상, 본 발명에서 소개하는 해싱 알고리즘을 유사성 기반 해싱(Similarity-Based Hashing:SBH) 알고리즘이라고 한다.
상기에 언급된 두 문제에 대하여, SBH 알고리즘을 활용할 경우 얻을 수 있는 성능개선 효과를 아래에 설명한다.
<문제 1: N 개의 데이터를 유사도 기준으로 분류하라>
N개의 데이터들을 각각 SBH 알고리즘으로 해싱한 후, 그 해싱 값을 주소로 삼아 해싱 값 테이블의 해당위치에 데이터 정보를 기록한다. 해싱이 완료된 후에는 해싱 값 테이블을 순차 탐색하면서, 유사한 위치에 해싱된 데이터끼리 그룹화된다. 이 방식의 경우, N개의 데이터들을 각각 해싱하고 해싱이 완료된 후 해싱 값 테이블을 1회 순차 탐색하는 작업으로 문제가 해결된다. 따라서, 선형(linear) 시간 내에 문제의 해결이 가능하다.
<문제 2: 어떤 데이터 P와 다수 개의 데이터로 이루어진 데이터집합 X가 주어질 때, 데이터집합 X 내에서 데이터 P와 유사한 데이터를 찾아라>
초기 작업으로서, 문제 1에서와 마찬가지 방식으로 집합 X내의 모든 데이터들을 SBH 알고리즘으로 해싱한 후 그 해싱 값을 주소로 삼아 해싱 값 테이블의 해당위치에 데이터 정보를 기록한다. 데이터 P가 입력되면, 데이터 P의 내용을 해싱한 후, 그 값에 해당하는 해싱 값 테이블 내 엔트리 또는 해당 엔트리를 포함한 주변 엔트리들을 확인함으로써, P와 유사한 데이터 집합 X 내의 데이터들을 찾아낼 수 있다. 집합 X 내의 데이터들을 해싱하는 초기작업을 고정된 처리시간으로 생각하면, 각 데이터들이 입력될 때마다 요구되는 처리시간은 SBH 알고리즘에 의한 1회의 해싱 값 처리 시간뿐이다.
이하에서는 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 이하의 설명에서 인용되는 각 도면들은 발명에 대한 설명의 편의 및 명확성을 위하여 과장되었고, 설명과 관계없는 부분은 생략되었다. 도면상에서 동일 부호는 동일한 요소를 지칭한다. 한편, 사용되는 용어들은 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다.
본 발명에서 소개하는 유사성 기반 해싱 방법에 의하면, 서로 동일한 데이터는 동일한 해싱 값을 가지게 되고 서로 유사한 데이터들은 그 해싱 값의 차가 두 데이터의 유사도(similarity)에 비례하여 작아진다.
소개하는 해싱 방법은 데이터의 내용으로부터 다수 개의 핑거프린트 값들을 추출하고, 그 값들을 주소로 삼는 벡터 상에 각 핑거프린트의 개수를 마킹한 후, 그 벡터의 특성을 수치화하는 방식으로 동작한다.
도 1a는 본 발명의 해싱 방법에 대한 제1 실시예에 따른 해싱 값을 생성하는 과정을 개략적으로 보여주는 흐름도이다.
도 1a를 참조하면, 먼저, 해싱 값을 구하고자 하는 데이터를 입력한다(S110). 여기서의 입력은 컴퓨터 키보드를 통한 직접 입력에 한하지 않고, 인터넷을 이용하여 수신하거나, 또는 저장 매체에서 읽어 들이는 등의 전산 처리가 가능한 모든 입력 방법을 포함한다.
다음으로, 입력 데이터에서 일정한 길이를 가진 슁글(shingle)을 추출한다(S120). 슁글이란 일정한 길이의 연속 또는 불연속의 바이트 스트링을 말한다. 슁글의 길이는 데이터의 속성과 해싱의 응용 영역에 따라 다르게 설정될 수 있으나, 동일한 비교그룹 내에서는 동일한 설정 값이 사용되어야 한다.
슁글 추출 후, 널리 활용되는 간단한 해싱 알고리즘을 이용하여 추출된 슁글의 핑거프린트(fingerprint) 값을 산출한다(S130). 이때, 활용될 수 있는 해싱 알고리즘으로는 라빈-카프(Rabin-Karp) 핑거프린팅, 바이트-와이즈 폴더링(Byte-wise Foldering) 및 엑스오어링(XORing) 등이 있다.
산출된 핑거프린트 값을 일정한 기준에 의거하여 샘플링한다(S140). 가령, 하위 4비트가 모두 0인 핑거프린트 값만을 SBH 알고리즘에 활용하기로 한다면, 바이트 슁글 중의 1/16 정도가 일관적으로 샘플링된다. 이와 같은 작업을 밸류 샘플링(value sampling)이라 한다. 이러한, 밸류 샘플링이 본 실시예의 필수과정은 아니다. 따라서, 이와 같은 샘플링 과정은 시스템의 성격에 따라 사용자가 관심 있는 것들만 더 중점적으로 보기 원할 때 사용되며, 사용되는 샘플링 기법 역시 시스템 의 성격에 따라 결정될 수 있다.
이제, 선택된 핑거프린트 값을 주소로 하거나 또는 선택된 핑거프린트 값의 일부분, 예컨대 하위 1 바이트를 주소로 삼아 해시 벡터에 마킹 한다(S150). 해시 벡터로의 마킹은 해싱 초기에 초기화되어 있는 N 차원 해시 벡터에 일정 규칙을 가지고 해시 벡터의 성분 값을 증가시키는 것을 통해 이루어진다.
해시 벡터의 초기화는 균일한 정수 값으로 설정하거나 또는 균일하지 않은 정수 값으로 설정할 수 있다. 또한, 상기 성분 값 증가는 모든 성분들에 대하여 동일 단위로 증가시키거나 또는 각 성분별로 가중치를 두어 다른 단위로 증가시킬 수 있다. 여기서, 상기 일정 규칙은 여러 가지가 활용될 수 있는데, 쉬운 예로, 각 핑거프린트 값을 N으로 나누고 그 나머지를 N차원 해시 벡터의 각 성분으로 함으로써, 해시 벡터를 생성할 수 있다. 따라서, 다수의 핑거프린트 값들은 N 개의 그룹으로 나누어지게 되고, 각 그룹의 개수가 해시 벡터의 각 성분 값에 대응하게 된다. 전술한 대로, 중요 부분의 핑거프린트 값에 대해서는 다른 초기화 값을 설정하거나, 증가 단위를 크게 함으로써, 벡터에 반영비율을 높여, 그에 따라 해싱 값 비교 시에도 다른 부분보다 비중을 높일 수 있다.
벡터 마킹이 끝나면, 데이터의 끝인가를 판단하고(S160) 즉, 데이터에서 모든 슁글이 다 추출되었는지 판단하고 처리해야 할 데이터의 내용이 남아 있으면, 다시 슁글 추출 작업을 수행한다(S120). 이러한 과정은 데이터의 모든 슁글이 추출될 때까지 수행된다. 여기서, 슁글은 데이터의 처음부터 끝까지 일정한 단위로 슬라이딩 되는 윈도우 방식으로 추출된다.
모든 슁글에 대한 처리가 끝나면, 최종적으로 생성된 해시 벡터를 이용하여 해싱 값을 계산해 낸다(S170). 해싱 값 생성에 대한 내용은 도 2a 이하에서 설명한다.
도 1b는 본 발명의 해싱 방법에 대한 제2 실시예에 따른 해싱 값을 생성하는 과정을 개략적으로 보여주는 흐름도이다.
도 1b의 경우, 도 1a의 경우와 그 결과는 동일하나, 과정상 조금 차이를 가진다. 즉, 도 1a의 경우, 슁글이 추출되면서, 해시 벡터가 계속적으로 변화하게 되나, 본 실시예의 경우, 먼저 모든 슁글에 대하여 핑거프린트 값을 계산하고(S220 ~ S240), 그 후에 일괄적으로 밸류 샘플링하고(250), 한 번에 해시 벡터를 생성한다(S260). 본 실시예에의 경우, 추출된 슁글 전체에 대한 각각의 핑거프린트 값을 저장할 메모리가 필요할 수 있다. 그 외의 데이터 입력과정(S210) 및 해싱 값 산출과정(S270)은 제1 실시예와 동일하다.
도 2a는 도 1a 또는 도 1b의 해싱 값 생성 과정을 좀더 상세하게 보여주는 블럭도이다.
도 2a를 참조하면, 주어진 데이터 문서 P(110) 내의 각 바이트 슁글(112)에 대하여, 각각의 핑거프린트를 산출하고 그 중 일부를 샘플링하고, 선택된 핑거프린트 값들을 일정 규칙을 통해 N 그룹으로 나누고 각 그룹의 개수를 세어 해시 배열 V P (120)에 마킹한다. 이때 벡터 배열도 N차원 즉, 벡터 배열의 길이가 N이 된다. 따라서, 각 배열에 마킹된 넘버를 성분 값으로 한 N 차원 해시 벡터(134)를 정의할 수 있다.
이와 같이 생성된 N 차원의 해시 벡터 V P (134) 하나와, 임의의 N차원 기준 벡터 V Base (132)를 상정하면, 도시된 바와 같은 벡터 삼각형(130)에서, V P V Base 간의 사이 각(θp)과 해시 벡터 V P (134) 종점 및 기준 벡터 V Base (132)의 종점 간의 거리(Dp)는 아래의 식들에 의하여 산출될 수 있다.
cos(θp) = V P · V Base /|V P || V Base | .....................식(1)
θp = cos-1(V P · V Base /|V P || V Base |) .....................식(2)
Dp = |V P - V Base | .....................식(3)
식(2) 및 식(3)에 의한 사이 각(θp) 및 종점 간의 거리(Dp)가 데이터 문서P(110)의 내용에 대한 해싱 값이 된다. 참고로 사이 각(θp) 계산이 허용되지 않는 시스템에서는 cos(θp) 값을 사용해도 된다. 또한, 종점 간의 거리(Dp) 값 대신 V P V Base 로 투영되는 정도, 즉 두 벡터의 내적 값(V P · V Base )을 이용해도 된다. 따라서, 해싱 값은 두 개의 성분을 가진 형태로 나타나며, 여러 가지 조합으로 표현될 수 있다. 그 중 어느 하나를 선택하여 데이터의 유사도를 판단하는 해싱 값으로 사용할 있음은 물론이다.
해시 배열 V P (120)를 하나의 N차원 해시 벡터로 정의하는 경우, 사이 각(θ p) 및 종점 간의 거리(Dp) 값을 산출할 경우, 상호 비교할 데이터들이 매우 많을 경우 해싱 값의 충돌(collision)이 발생할 확률이 증가하게 된다. 이러한 경우, 서로 종속되지 않은 둘 이상의 해싱을 동시에 적용함으로써 해싱 충돌 확률을 저하시키는 다단계(multi-stage) 해싱을 도입하는 것이 좋다.
도 2b는 다단계 해싱을 도입한 해싱 값을 생성하는 방법을 보여주는 블럭도이다.
도 2b의 경우, 도 2a에 해시 배열 V P (120)를 구하는 과정까지는 동일하나, 다른 개념의 해시 벡터를 도입한다. 즉, 해시 배열 V P (120) 전체를 해시 벡터로 정의하는 것이 아니고, 해시 배열 V P (120)를 m 개의 서브 해시 배열들(120-1, ..., 120-m)로 나누고 각각의 서브 해시 배열에 대응한 서브 해시 벡터(134-1, ...,134-m)를 정의한다. 이와 같이 정의하여 사용함으로써, SBH 알고리즘의 성능을 향상시킬 수 있다.
좀더 상세히 설명하면, 슁글들의 핑거프린트 결과를 반영하고 있는 해시 배열 V P (120)을 단일한 N차원 벡터로 보는 대신, m (m>= 2) 개의 서브 해시 벡터들 V 1p , ... , V mp (134-1, ...., 134-m)로 분리하여 처리한다. 각각의 벡터의 차수는 N이하의 양의 정수 값이며, 각 벡터들의 차수의 합은 N과 같거나 큰 양의 정수이다. 서브 해시 벡터들은 각각의 차수에 맞게 상정된 기준벡터들 V 1Base , ..., V mBase (132-1 ~ 132-m)과 각각 비교되며, 그 결과 각각의 사이 각들(θp1 , ..., θp2) 과 종점 간의 거리들(D1 , ..., Dp1) 값이 산출된다.
유사성 확인을 위해 데이터의 해싱 값을 비교할 경우, 각 m개씩의 사이 각(θp1 , ..., θp2) 값들과 종점 간의 거리(D1 , ..., Dp1) 값들이 모두 동일할 때, 데이터가 서로 동일하며, 또는 미리 설정된 일정한 유사범위 이내에서 사이 각(θp1 , ..., θp2) 값들과 종점 간의 거리(D1 , ..., Dp1) 값들이 일부 동일하거나 유사한 경우에 데이터가 서로 유사한 것을 확인할 수 있다. 물론, 이 경우 역시 사이 각(θ) 값과 종점 간의 거리(D) 값 대신 cosθ 값과 벡터 내적 값을 해싱 값으로 사용할 수도 있다.
한편, 각 서브 벡터들은 해당 벡터 성분들만 값을 가지고 나머지 스페이스는 0의 값을 가지는 N차원의 벡터로 정의될 수도 있다.
도 3a는 본 발명의 데이터 처리 방법에 대한 일 실시예에 따른 데이터를 검색하는 과정을 개략적으로 보여주는 흐름도이다.
도 3a를 참조하면, 먼저 전산 데이터들이 입력된다(S310). 여기에서 입력은 전술한 바와 같이 컴퓨터 키보드를 통한 직접 입력에 한하지 않고, 인터넷을 이용하여 수신하거나, 또는 저장 매체에서 읽어 들이는 등의 전산 처리가 가능한 모든 입력 방법을 포함한다.
다음, 각 전산 데이터들에 대해 SBH 알고리즘을 이용하여 해싱 값을 생성하고(S320), 이렇게 생성된 해싱 값들을 해싱 값 테이블에 작성한다(S330).
해싱 값 테이블이 작성된 후, 검색이 필요한 데이터를 입력하고(S340), 역시 SBH 알고리즘을 이용하여 해싱 값을 생성한다(S350). 이후, 검색 데이터의 해싱 값을 상기 해싱 값 테이블의 각각의 해싱 값들과 비교하여 동일 또는 유사 데이터를 검색한다(S360).
도 3b는 도 3a의 데이터 검색 과정을 좀더 상세하게 보여주는 블럭도로서, 데이터 집합 X(310) 내에서 검색이 필요한 데이터 P(340, 이하 '검색 데이터'라 한다)와 유사한 데이터들을 선형시간에 검색하는 방법을 개략적으로 설명한다.
도 3b를 참조하면, 데이터 검색 과정은 검색 대상의 데이터들 X(310)을 처리하는 초기화 작업과 입력된 검색 데이터 P(340)로부터 해싱 값을 구하고 계산된 해싱 값으로부터 유사 데이터를 찾는 검색 작업으로 이루어진다.
초기화 작업에서는 검색 대상의 전산 데이터들 X(310) 내의 모든 데이터들에 대해 상기에서 설명한 SBH 알고리즘을 적용하여, 각 데이터에 대해 해싱 값으로 사이 각(θ) 또는 cosθ 값과 종점 간의 거리(D) 값 또는 벡터 내적 값을 산출한다(S320). 여기서 전산 데이터들 X(310)은 예컨대, 전자 문서 집합들일 수 있다. 산출된 사이 각(θ)과 종점 간의 거리(D) 값을 주소로 하여 별도로 마련된 해싱 값 테이블(336)인 θ 테이블(334)과 D 테이블(332)에 마킹하거나 해당 엔트리를 업데이트 한다. 엔트리의 업데이트는 예컨대, 새로운 검색 대상 데이터들이 입력되거나, 기존 검색 대상 데이터들이 삭제된 경우에 새로운 해싱 값을 해싱 값 테이블(336)에 입력하거나, 데이터 삭제시 해당 해싱 값을 해싱 값 테이블(336)에서 삭제하는 것을 의미할 수 있으나, 그에 한정되는 것은 아니다.
결국, θ 테이블(334)과 D 테이블(332) 내에 검색 대상의 모든 데이터들의 내용 정보가 저장된다. 한편, 해싱 값 테이블(336)의 θ 테이블(334)과 D 테이블(332)은 일정한 규칙으로 배열되어, 각 데이터들의 유사도 정도는 검색 데이터 P(340)를 기준으로 해싱 값들을 비교하여 각 테이블 상에서(332, 334) 어느 정도 떨어져서 나타나는 지에 따라서 결정된다.
검색 작업은 입력된 검색 데이터 P(340)에 SBH 알고리즘을 적용하여 해싱 값을 생성한다(S350). 즉, 검색 데이터 P(340)에 대한 사이 각(θ)과 종점 간의 거리(D) 값을 산출한다. 산출된 해싱 값을 주소로 삼아, θ 테이블(334)과 D 테이블(332)을 인덱싱한다(S360). 이때, 지목된 위치, 또는 지목된 위치 주변에 저장된 데이터들이 검색 데이터 P(340)와 동일 또는 유사한 문서들이다. 즉, 검색 데이터 P(340)의 해싱 값과 차이가 적은 데이터들의 해싱 값들이 테이블 내에 가까운 곳에 위치하고, 그에 따라 떨어진 위치가 가까울수록 유사도가 증가한다. 도 3b의 경우, 데이터 P(340)와 가장 유사한 데이터는 데이터 7이며 그 다음으로 유사한 데이터는 데이터 2이다.
한편, 다단계 해싱을 이용하는 경우에는, 각 서브 벡터별로 θ 테이블과 D 테이블이 존재할 수 있다. 좀더 상세히 설명하면, m개의 해시 벡터를 이용하는 경우, 다수의 전산 데이터에 대하여, 각각 2m 개의 성분을 가지는 다수의 해싱 값이 생성되며 각 해싱 값은 각 성분에 해당하는 θ 테이블과 D 테이블에 저장될 수 있다. 검색 데이터가 입력된 경우 검색 데이터 역시 2m개의 해싱 값을 갖게 되며 각 성분에 대응하는 θ 테이블과 D 테이블에서 해당 해싱 값을 갖는 데이터들 또는 해당 해싱 값에서 일정 범위 이내의 값을 갖는 데이터들을 찾을 수 있다. 이때, 검색 데이터와 각 데이터들의 유사도는 각 서브 벡터에 해당하는 θ 테이블과 D 테이블에서 계산한 유사도의 합으로 결정된다. 이때 각 테이블에서 나오는 유사도는 검색 데이터와 같은 엔트리를 갖는 경우 가장 큰 값을 가지고 해당 엔트리로부터 멀어질수록 적은 값을 가지게 된다. 또한, 각 테이블에서 나오는 유사도를 합할 때 각 테이블에 대해 유사도에 포함되는 비중을 다르게 줄 수 있다. 이러한 비중은 해당 검색 데이터의 값에 따라 결정될 수 있다.
유사 데이터의 검색의 경우, 검색 데이터 P(340)의 해싱 값과 어느 정도 차까지 유사 데이터로 판단할 것인지에 대한 기준은 검색 시작 전에 미리 설정되어야 함은 물론이다. 한편, 전술한 대로 해싱 값 테이블은 데이터들 X(310) 내의 데이터들이 변경될 경우 변경된 데이터들의 정보만 추가 또는 삭제시키면서 업데이트할 수 있다.
도 4는 본 발명의 데이터 처리 시스템에 대한 구조를 개략적으로 보여주는 블럭도이다.
도 4를 참조하면, 데이터 처리 시스템은 전산 데이터가 입력되는 입력부(410), 입력부(410)를 통해 입력된 전산 데이터에 대하여 상기 SBH 알고리즘을 이용하여 해싱 값을 생성하는 해싱 값 생성부(420) 및 해싱 값들을 이용하여 전산 데이터를 처리하는 데이터 처리부(430)를 포함한다. 여기서, 입력부(410)로 입력되는 데이터들은 전술한 바와 같이 저장 매체에서 읽어 들인 데이터나 인터넷을 이용하여 다운받은 데이터 등의 모든 전산 데이터를 포함한다. 또한, 본 실시예의 데이터 처리 시스템은 동일 데이터 비교 알고리즘을 이용하는 비교 검색부(440)를 더 포함할 수 있다.
해싱 값 생성부(420)는 도 1a 또는 1b에서 설명한 바와 같이 SBH 알고리즘을 이용하여 해싱 값을 산출한다. 데이터 처리부(430)는 해싱 값들이 산출된 데이터들에 대한 검색, 비교, 검색, 분류, 변경, 및 유사도 계산 등의 처리를 한다. 한편, 비교 검색부(440)는 diff 툴, LCSeq, LCStr 등의 동일 데이터 비교 알고리즘을 이용하여, 정확하게 동일한 문서들을 검색한다.
본 발명의 데이터 처리 시스템의 구체적인 예로, 보안 시스템, 디지털 저작권 감시시스템 또는 범용 문서 관리 시스템 등을 들 수 있다. 이하 각각의 시스템에 대하여 좀더 상세히 설명한다.
초당 수 십만 개 이상의 패킷들이 전송되는 데이터 통신 회선 상에서, 유사한 패킷들이 이상 폭증하는 것을 감시하는 보안 시스템을 실현하려는 경우, 기존의 LEG-CMP 알고리즘을 이용하면 처리해야 할 패킷의 개수의 제곱에 비례하는 시간 복잡도가 요구된다. 그러나 본 발명의 SBH 알고리즘을 이용하면 각 패킷을 해싱한 후, 해싱 값 테이블 상에서 임계치 이상으로 증가하는 특정 성분 값을 확인함으로써 유사 패킷의 폭증을 감시 및 차단이 가능하다. 이 경우 패킷의 개수에 비례하는 시간 복잡도 만에 작업이 수행될 수 있다. EXCT-HASH 알고리즘을 활용할 경우, SBH 알고리즘에서와 같은 성능 개선효과는 기대할 수 있지만, 정확하게 동일한 내용의 패킷들만을 탐지해 낼 수 있으므로, 내용의 일부만을 변화시키면서 전파되는 웜이나 바이러스, 스팸 등에 대해서는 좋은 성능을 기대할 수 없다.
한편, 디지털 문서들의 속성상, 내용의 일부를 변화시킨 후 불법 유통하는 것은 매우 쉽다. 많은 문서들이 유통되는 P2P 서비스나 웹 하드 서비스 등의 경우, 저작권에 의하여 보호되는 원본 문서와 유사한 불법 배포물들이 전송되는 것을 감시 및 통제할 수 있는 디지털 저작권 감시 시스템이 요구하다. 이와 같은 디지털 저작권 감시 시스템의 구현에 있어서, 기존의 LEG-CMP 알고리즘보다는 SBH 알고리즘을 적용하게 되면 고속의 처리와 함께 효과적인 감시 및 통제가 가능해 진다. 즉, 기존의 EXCT-CMP 알고리즘을 이용할 경우 고속 처리는 가능하나, 정확하게 동일한 문서만을 검색 가능하므로 사소한 내용 변조에도 취약한 속성을 가지게 된다. 그러나 SBH 알고리즘의 경우, 유사성의 정도를 사용자가 지정할 수 있으므로, 일정 수준의 변조에도 불구하고 원본과 유사한 문서들을 효율적으로 검색할 수 있다.
개인용 혹은 그룹용 문서 관리 시스템과 같이 다수의 문서를 가지고 있으며, 그러한 문서들에 대해 비교, 검색, 탐색, 분류 중 적어도 하나의 기능을 수행할 수 있는 문서 관리 시스템에 있어서 유사성 기반 검색 기능은 큰 중요성을 가진다. 가령 다수의 개발자가 동시 사용하는 공통 개발 및 배포환경(Concurrent Versions System:CVS) 등의 경우, 유사한 문서들을 고속으로 분류 및 검색하는 작업이 빈번히 요구된다. SBH 알고리즘은 이와 같은 시스템의 구현에 유용하게 활용될 수 있다. 또한, 정확한 유사성 판별을 위하여 기존의 LEG-CMP 알고리즘과 같은 복잡한 알고리즘이 요구되는 시스템의 경우에도, 먼저 비교 문서 중 유사성을 가진 문서를 SBH 알고리즘 이용하여 빨리 추려 낸 후, 선택된 유사 문서들에 대해서만 유사성 판별을 위한 복잡한 알고리즘, 즉 LEG-CMP 알고리즘을 적용함으로써, 더 나은 성능의 시스템을 제공할 수 있다. 기존의 EXCT-CMP 알고리즘을 이용할 경우에는 고속 처리는 가능하나, 해싱 값이 유사도를 포함하지 않으므로 정확하게 동일한 해싱 값을 가진 문서들만 확인할 수 있고 따라서 유사한 많은 문서들을 놓칠 수 문제가 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD_ROM, 자기테이프, 플로피디스크 및 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다. 또한 본 발명의 방법은 하드웨어적인 방식, 예를 들어 ASIC, FPGA 등으로 구현되어 컴퓨팅 장치의 부품으로 활용될 수 있다.
지금까지, 본 발명을 도면에 도시된 실시예를 참고로 설명하였으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
이상에서 상세히 설명한 바와 같이, 본 발명의 SBH 알고리즘을 이용한 데이 터 해싱 방법은 생성된 해싱 값들의 차가 데이터의 유사도와 반비례 관계를 가지므로, 데이터들의 검색, 비교, 분류 등을 O(1) 또는 O(n) 정도의 시간 복잡도 내에 신속하게 처리할 수 있다.
따라서, 이러한 데이터 해싱 방법을 보안 시스템, 디지털 저작권 감시시스템 또는 범용 문서 관리 시스템 등의 여러 시스템에 적용함으로써, 시스템의 성능을 고속화하고 좀더 효율적으로 이용하는 데에 기여할 수 있다.

Claims (31)

  1. 전산 데이터를 입력하는 단계; 및
    동일 데이터에 대해서는 동일 해싱 값을 생성하고, 유사한 데이터의 경우 해싱 값의 차가 데이터의 유사도와 반비례 관계를 가지도록 해싱 값을 생성하는 유사성 기반 해싱(Similarity-based Hashing:SBH) 알고리즘을 이용하여 상기 전산 데이터에 대한 해싱 값을 생성하는 단계;를 포함하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  2. 제1 항에 있어서,
    상기 전산 데이터는 컴퓨터 파일 문서, 네트워크 상에서 전달되는 패킷 및 데이터베이스 질의문을 포함하는, 비트 스트링(bit string)으로 표현되는 모든 데이터인 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  3. 제1 항에 있어서,
    상기 SBH 알고리즘을 이용한 해싱 값 생성하는 단계는,
    상기 전산 데이터의 내용으로부터 핑거프린트(fingerprint) 값을 계산하는 단계;
    일정 규칙에 의해 상기 핑거프린트 값에 대응하여 N 차원 해시 벡터의 해당 성분 값을 변화시키는 단계;
    상기 전산 데이터의 내용이 끝인지를 판단하는 단계; 및
    상기 전산 데이터의 내용이 끝인 경우에 상기 해시 벡터를 상기 해싱 값으로 수치화하는 단계;를 포함하는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  4. 제3 항에 있어서,
    상기 전산 데이터의 내용이 끝이 아닌 경우에는 상기 핑거프린트 값 계산 단계로 돌아가 상기 전산 데이터에 대한 다음 핑거프린트 값 계산을 진행하는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  5. 제3 항에 있어서,
    상기 핑거프린트 값을 계산하는 단계는,
    상기 전산 데이터에서 일정 길이의 연속 또는 불연속의 바이트스트링인 슁글(shingle)을 추출하는 단계; 및
    상기 슁글에 대하여 균일성과 임의성을 만족하며 충돌가능성이 작은 데이터 해싱 알고리즘을 이용하여 핑거프린트 값을 생성하는 단계;를 포함하는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  6. 제5 항에 있어서,
    상기 데이터 해싱 알고리즘은 라빈-카프(Rabin-Karp) 핑거프린팅, 바이트-와 이즈 폴더링(Byte-wise Foldering) 및 엑스오어링(XORing) 중 어느 하나인 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  7. 제3 항에 있어서,
    상기 해시 벡터의 성분 값을 변화시키는 단계는,
    상기 핑거프린트 값 또는 핑거프린트 값의 일부에 상기 일정 규칙을 적용하여 상기 핑거프린트 값을 N개의 그룹 중 어느 한 그룹으로 분류하는 단계; 및
    상기 핑거프린트 값이 상기 분류에 의해 어느 해당 그룹에 속할 때, 대응하는 해시 벡터의 성분 값을 증가시키는 단계;를 포함하는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  8. 제7 항에 있어서,
    상기 해시 벡터의 각 성분의 초기값은 균일하거나 또는 균일하지 않은 정수 값으로 설정하고,
    상기 성분 값 증가시키는 단계에서 모든 그룹에 대하여 동일 단위로 증가시키거나 또는 각 그룹별로 가중치를 두어 다른 단위로 증가시키는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  9. 제3 항에 있어서,
    상기 해시 벡터의 성분 값으로 입력하는 단계 전에 상기 핑거프린트 값 또는 핑거프린트 값의 일부를 기준으로 일관된 샘플링을 적용하는 단계를 포함하고,
    상기 해시 벡터의 성분 값을 변화시키는 단계에서 샘플링에 의해 선택된 일정 핑거프린트 값만을 상기 해시 벡터의 성분 값 변화에 이용할 수 있는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  10. 제1 항에 있어서,
    상기 SBH 알고리즘을 이용한 해싱 값 생성하는 단계는,
    상기 전산 데이터의 내용으로부터 다수의 핑거프린트(fingerprint) 값들을 계산하는 단계;
    일정 규칙에 의해 상기 핑거프린트 값들에 대응한 N 차원 해시 벡터를 생성하는 단계; 및
    상기 해시 벡터를 상기 해싱 값으로 수치화하는 단계;를 포함하는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  11. 제10 항에 있어서,
    상기 해시 벡터를 생성하는 단계는,
    상기 핑거프린트 값들 또는 핑거프린트 값들 각각의 일부들에 상기 일정 규칙을 적용하여 상기 핑거프린트 값들을 N개의 그룹으로 분류하는 단계; 및
    상기 각 그룹이 포함한 상기 핑거프린트 값들의 개수를 상기 해시 벡터의 해당 성분 값으로 하거나, 각 그룹에 가중치를 두어 상기 개수에 가중치를 곱한 값을 상기 해시 벡터의 해당 성분 값으로 하여 상기 해시 벡터를 생성하는 단계;를 포함하는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  12. 제10 항에 있어서,
    상기 해시 벡터를 생성하는 단계 전에 상기 핑거프린트 값들 또는 핑거프린트 값들 각각의 일부를 기준으로 일관된 샘플링을 적용하는 단계를 포함하고,
    상기 해시 벡터 생성 단계에서 상기 샘플링에 의해 선택된 일정 핑거프린트 값들만을 상기 해시 벡터 생성에 이용할 수 있는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  13. 제3 항 또는 제10 항에 있어서,
    상기 해싱 값은 제1 및 제2 해싱 값을 포함하고,
    상기 제1 해싱 값은 상기 해시 벡터와 N차원의 기준 벡터 사이의 사이 각(θ) 또는 코사인 사이 각(cosθ)이며,
    상기 제2 해싱 값은 상기 해시 벡터와 상기 N차원의 기준 벡터의 종점 간의 거리(D) 또는 상기 해시 벡터와 상기 N차원의 기준 벡터의 내적 값인 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  14. 제3 항 또는 제10 항에 있어서,
    상기 N차원 해시 벡터는 m개의 서브벡터로 나누어지고,
    상기 해싱 값은 각각 m 개의 성분을 가지는 제1M 및 제2M 해싱 값을 포함하고,
    상기 제1M 해싱 값의 m 개의 각 성분은 상기 m개의 서브벡터 각각과 동일 차원의 m개의 기준 서브벡터들 사이의 사이 각(θi:i= 1 ~ m) 또는 코사인 사이 각(cosθi)들이며,
    상기 제2M 해싱 값의 m 개의 각 성분은 상기 m개의 서브벡터 각각과 동일 차원의 m개의 기준 서브벡터들 종점들 간의 거리(Di:i= 1 ~ m) 또는 상기 m개의 서브벡터 각각과 동일 차원의 m개의 기준 서브벡터들의 내적 값들인 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  15. 제14 항에 있어서,
    상기 m 개의 서브벡터들의 차원의 합은 상기 N 차원과 같거나 또는 N 차원보다 큰 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  16. 제15 항에 있어서,
    상기 m 개의 서브벡터 각각은 상기 N 차원 해시 벡터의 성분 값을 가지는 부분 이외의 성분 값들은 0인 N 차원 벡터인 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  17. 제14 항에 있어서,
    다수의 전산 데이터에 대하여, 각각 2m 개의 성분을 가지는 다수의 해싱 값이 생성되고,
    2m 개의 성분을 가지는 기준 해싱 값에 대하여, 각각의 성분들을 비교하여 그 차이 값에 반비례하게 서브 비중 값을 설정하고 모든 서브 비중 값을 합한 비중의 합의 크기에 의해 상기 전산 데이터 각각의 유사도를 판단할 수 있는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 해싱 방법.
  18. 제 1항의 SBH 알고리즘을 이용하여 다수의 전산 데이터들에 대하여 해싱 값 테이블을 작성하는 단계; 및
    상기 해싱 값 테이블을 이용하여 상기 다수의 전산 데이터를 처리하는 단계;를 포함하는 SBH 알고리즘을 이용한 데이터 처리 방법.
  19. 제18 항에 있어서,
    상기 전산 데이터의 처리는 데이터들의 비교, 검색, 분류, 변경, 및 유사도 계산 중 적어도 하나를 포함하고,
    상기 전산 데이터의 처리는 상기 해싱 값 테이블의 해싱 값들 간의 차의 크기를 이용함으로써,
    상수인 O(1) 또는 데이터의 개수(n)에 비례하는 O(n)의 시간 복잡도 내에 처리할 수 있는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 처리 방법.
  20. 제19 항에 있어서,
    상기 전산 데이터의 처리가 검색 데이터에 대한 동일 또는 유사 데이터의 검색인 경우에,
    상기 전산 데이터 처리 단계는,
    상기 검색 데이터를 입력하는 단계;
    상기 검색 데이터에 대하여 상기 SBH 알고리즘을 이용하여 해싱 값을 생성하는 단계; 및
    상기 해싱 값을 상기 해싱 값 테이블에 인덱싱하여 동일 또는 유사 데이터를 찾는 단계;를 포함하는 SBH 알고리즘을 이용한 데이터 처리 방법.
  21. 제20 항에 있어서,
    상기 전산 데이터 또는 검색 데이터에 대한 해싱 값 생성 단계는,
    상기 전산 데이터 또는 검색 데이터의 내용으로부터 다수 개의 핑거프린트(fingerprint) 값들을 계산하는 단계;
    일정 규칙을 통해 상기 핑거프린트 값들에 대응하는 N 차원 해시 벡터를 생성하는 단계; 및
    상기 해시 벡터를 상기 해싱 값으로 수치화하는 단계;를 포함하는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 처리 방법.
  22. 제21 항에 있어서,
    상기 해싱 값 테이블 작성 단계에서 상기 전산 데이터들에 대한 상기 해싱 값들을 작성하며,
    상기 동일 또는 유사 데이터를 찾는 단계에서 상기 검색 데이터에 대한 상기 해싱 값을 상기 해싱 값 테이블의 상기 해싱 값들과 비교하여 사용자가 정한 일정 해싱 값 차의 범위 내에서 상기 검색 데이터와 동일 또는 유사 데이터들을 찾는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 처리 방법.
  23. 제18 항에 있어서,
    상기 전산 데이터는 네트워크 상에서 전송되는 패킷이고,
    상기 해싱 값 테이블을 작성하는 단계에서 전송되는 패킷에 대한 해싱 값 테이블을 작성하고,
    상기 데이터 처리 단계에서, 특정 패킷과 동일 또는 유사한 패킷이 폭증하는 것을 감시 및 차단하는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 처리 방법.
  24. 전산 데이터가 입력되는 입력부;
    상기 입력부를 통해 입력된 전산 데이터에 대하여 제1 항의 SBH 알고리즘을 이용하여 해싱 값을 생성하는 해싱 값 생성부; 및
    상기 해싱 값들을 이용하여 전산 데이터를 처리하는 데이터 처리부;를 포함 하는 SBH 알고리즘을 이용한 데이터 처리 시스템.
  25. 제24 항에 있어서,
    상기 SBH 알고리즘은,
    상기 전산 데이터의 내용으로부터 다수 개의 핑거프린트(fingerprint) 값들을 계산하는 단계;
    일정 규칙을 통해 상기 핑거프린트 값들에 대응하는 N 차원 해시 벡터를 생성하는 단계; 및
    상기 해시 벡터를 상기 해싱 값으로 수치화하는 단계;를 포함하는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 처리 시스템.
  26. 제25 항에 있어서,
    상기 전산 데이터는 네트워크 상에서 전송되는 패킷들이고,
    상기 패킷들 각각에 해당하는 상기 해싱 값들이 해싱 값 테이블에 작성되고,
    상기 데이터 처리부가 상기 해싱 값 테이블 내에 특정 해싱 값 또는 일정 해싱 값 차이 내의 해싱 값들의 개수가 임계치 이상으로 증가하는 경우를 확인하여, 특정 패킷과 동일 또는 유사한 패킷이 폭증하는 것을 감시 및 차단하는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 처리 시스템.
  27. 제25 항에 있어서,
    상기 데이터 처리 시스템은 저작권에 의하여 보호되는 디지털 문서화된 원본 문서의 불법 유통을 감시 및 통제하는 시스템인 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 처리 시스템.
  28. 제25 항에 있어서,
    상기 데이터 처리 시스템은 다수의 문서를 가지고 있으며, 상기 문서들에 대해 비교, 검색, 탐색, 분류 중 적어도 하나의 기능을 수행할 수 있는 문서 관리 시스템인 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 처리 시스템.
  29. 제28 항에 있어서,
    상기 문서 관리 시스템은 다수의 개발자가 동시 사용하는 공통 개발 및 배포환경 시스템(Concurrent Versions System:CVC)인 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 처리 시스템.
  30. 제28 항에 있어서,
    상기 데이터 처리 시스템은
    동일 데이터 비교 알고리즘을 이용하는 데이터 비교검색부를 더 포함하고,
    상기 데이터 처리부가 동일 또는 유사 데이터에 대한 빠른 검색을 위하여, 상기 SBH 알고리즘을 이용하고,
    상기 검색된 동일 또는 유사 데이터에 대한 상세 비교를 위하여 상기 동일 데이터 비교 알고리즘을 이용하는 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 처리 시스템.
  31. 제30 항에 있어서,
    상기 동일 데이터 비교 알고리즘은 diff 툴, LCSeq(Longest Common Subsequence), LCStr(Longest Common Substring) 중의 어느 하나를 포함하는 레가시-비교(Legacy Comparison:LEG-CMP) 알고리즘인 것을 특징으로 하는 SBH 알고리즘을 이용한 데이터 처리 시스템.
KR1020060064012A 2005-12-07 2006-07-07 유사성 기반 해싱 알고리즘을 이용한 데이터 해싱 방법,데이터 처리 방법, 및 데이터 처리 시스템 KR100744559B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/634,731 US7617231B2 (en) 2005-12-07 2006-12-06 Data hashing method, data processing method, and data processing system using similarity-based hashing algorithm

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20050119074 2005-12-07
KR1020050119074 2005-12-07

Publications (2)

Publication Number Publication Date
KR20070059888A KR20070059888A (ko) 2007-06-12
KR100744559B1 true KR100744559B1 (ko) 2007-08-01

Family

ID=38356142

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060064012A KR100744559B1 (ko) 2005-12-07 2006-07-07 유사성 기반 해싱 알고리즘을 이용한 데이터 해싱 방법,데이터 처리 방법, 및 데이터 처리 시스템

Country Status (1)

Country Link
KR (1) KR100744559B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022075559A1 (ko) * 2020-10-05 2022-04-14 크리니티(주) 악성 메일 처리 시스템 및 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101593696B1 (ko) * 2009-12-21 2016-02-17 한국전자통신연구원 해싱에 기초하는 유사도 및 포함정도를 이용하여 정책의 무결성을 확보하는 방법
CN115942042A (zh) * 2022-12-26 2023-04-07 中国电子产业工程有限公司 一种基于改进lcs的网络视频识别匹配方法、装置和设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040125799A1 (en) 2002-12-31 2004-07-01 Buer Mark L. Data processing hash algorithm and policy management
GB2419434A (en) 2004-10-23 2006-04-26 Qinetiq Ltd Encrypting data on a computer's hard disk with a key derived from the contents of a memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040125799A1 (en) 2002-12-31 2004-07-01 Buer Mark L. Data processing hash algorithm and policy management
GB2419434A (en) 2004-10-23 2006-04-26 Qinetiq Ltd Encrypting data on a computer's hard disk with a key derived from the contents of a memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022075559A1 (ko) * 2020-10-05 2022-04-14 크리니티(주) 악성 메일 처리 시스템 및 방법

Also Published As

Publication number Publication date
KR20070059888A (ko) 2007-06-12

Similar Documents

Publication Publication Date Title
US7617231B2 (en) Data hashing method, data processing method, and data processing system using similarity-based hashing algorithm
US10560472B2 (en) Server-supported malware detection and protection
Chi et al. Hashing techniques: A survey and taxonomy
Singh et al. Probabilistic data structures for big data analytics: A comprehensive review
Datar et al. Locality-sensitive hashing scheme based on p-stable distributions
US10474818B1 (en) Methods and devices for detection of malware
Breitinger et al. A fuzzy hashing approach based on random sequences and hamming distance
CN111382434B (zh) 用于检测恶意文件的系统和方法
Fu et al. Privacy-preserving smart similarity search based on simhash over encrypted data in cloud computing
EP3292481B1 (en) Method, system and computer program product for performing numeric searches
EP2284752B1 (en) Intrusion detection systems and methods
US7613669B2 (en) Method and apparatus for storing pattern matching data and pattern matching method using the same
Moia et al. Similarity digest search: A survey and comparative analysis of strategies to perform known file filtering using approximate matching
CN111666258B (zh) 信息处理方法和装置、信息查询方法和装置
KR100744559B1 (ko) 유사성 기반 해싱 알고리즘을 이용한 데이터 해싱 방법,데이터 처리 방법, 및 데이터 처리 시스템
US11487876B1 (en) Robust whitelisting of legitimate files using similarity score and suspiciousness score
Kang et al. Fast malware family detection method using control flow graphs
Akbar et al. Enhanced authentication for de-duplication of big data on cloud storage system using machine learning approach
Moia et al. A comparative analysis about similarity search strategies for digital forensics investigations
Han et al. Distributed malware detection based on binary file features in cloud computing environment
Chappell et al. Efficient top-k retrieval with signatures
Huang et al. A high security BioHashing encrypted speech retrieval algorithm based on feature fusion
Jiang et al. Detecting malicious pdf documents using semi-supervised machine learning
YueJuan et al. A Searchable Ciphertext Retrieval Method Based on Counting Bloom Filter over Cloud Encrypted Data
Al-Qiari et al. A fast improved multiple pattern matching algorithm

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20100701

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee