KR101316697B1 - 소프트웨어 저작권 보호 장치 및 그 방법 - Google Patents

소프트웨어 저작권 보호 장치 및 그 방법 Download PDF

Info

Publication number
KR101316697B1
KR101316697B1 KR1020120018561A KR20120018561A KR101316697B1 KR 101316697 B1 KR101316697 B1 KR 101316697B1 KR 1020120018561 A KR1020120018561 A KR 1020120018561A KR 20120018561 A KR20120018561 A KR 20120018561A KR 101316697 B1 KR101316697 B1 KR 101316697B1
Authority
KR
South Korea
Prior art keywords
marking data
marking
calculated
database
software
Prior art date
Application number
KR1020120018561A
Other languages
English (en)
Other versions
KR20130101651A (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 KR1020120018561A priority Critical patent/KR101316697B1/ko
Publication of KR20130101651A publication Critical patent/KR20130101651A/ko
Application granted granted Critical
Publication of KR101316697B1 publication Critical patent/KR101316697B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1063Personalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Image Processing (AREA)

Abstract

본 발명은 소프트웨어 저작권 보호 장치 및 그 방법에 관한 것으로서, 구체적으로 본 발명에 따른 소프트웨어 저작권 보호를 위한 워터마크 삽입장치는 소프트웨어에 포함된 명령어 수로부터 마킹 데이터를 산출하는 산출부; 및 상기 산출된 마킹 데이터를 상기 소프트웨어에 워터마킹하는 마킹부;를 포함한다.
본 발명에 따르면 기존 정적 워터마킹 기술에 비하여 삽입된 정보가 쉽게 파괴되지 않고 코드 변형 시에도 삽입된 워터마킹 정보를 다시 추출할 수 있는 가능성을 높일 수 있는 효과가 있다.

Description

소프트웨어 저작권 보호 장치 및 그 방법{Apparatus for protecting software copyright and the method thereof}
본 발명은 소프트웨어 저작권 보호 장치 및 그 방법에 관한 것으로서, 보다 상세하게는 소프트웨어의 저작권을 보호하기 위하여 워터마크를 삽입하고 추출하는 장치 및 방법에 관한 것이다.
소프트웨어 워터마킹 기술은 프로그램의 소스 코드 또는 실행 코드를 대상으로, 원본 프로그램의 기능을 변형시키지 않으면서 특정 정보(워터마크)를 보이지 않게 삽입 및 추출하는 기술이다. 소프트웨어 워터마킹 장치 또는 소프트웨어는 원본 프로그램에 정보를 삽입하는 삽입기와 이 프로그램으로부터 원래의 정보를 추출하는 추출기로 나눌 수 있다.
한편, 워터마킹 기술은 통상 정적 워터마킹과 동적 워터마킹의 두 종류로 나누어 볼 수 있다. 동적 워터마킹은 프로그램 실행 중의 상태를 통해 정보를 삽입 및 추출하는 방법이며 정적 워터마킹은 프로그램을 실행하지 않고 프로그램 실행 파일의 코드를 분석하여 정보를 삽입 및 추출하는 방법이다.
소프트웨어 워터마킹 기술의 평가 요소는 견고성 또는 은닉성(Robustness, Resilience, Stealthness), 데이터 레이트(data-rate), 효율성 등으로 구분해 볼 수 있다. 견고성은 난독화, 최적화, 역공학 등을 통한 공격으로 얼마나 쉽게 파괴 혹은 분석되는지를 나타내며, 데이터 레이트는 해당 프로그램에 얼마나 많은 정보를 삽입할 수 있는지 나타내고, 효율성은 삽입 후 프로그램의 코드 크기와 실행 시간이 얼마나 증가하는지를 의미한다.
일반적으로 동적 워터마킹 방법은 견고성이 높지만 효율성이 매우 낮아 실용성이 떨어지고, 실제로는 정적 워터마킹 방법이 많이 사용된다. 정적 워터마킹 방법은 효율성은 높지만 난독화, 최적화 등의 코드 변형을 통해 쉽게 파괴되는 문제점이 있다.
본 발명은 효율성 면에서 코드 크기 증가 및 실행 시간 증가 오버헤드를 10% 미만으로 할 수 있는 워터마킹 장치 및 방법을 제공한다.
또한 본 발명은 견고성, 난독화, 최적화 등 자동화된 툴을 통해 프로그램 코드를 변형할 시에도 쉽게 파괴되지 않는 워터마킹 장치 및 방법을 제공한다.
본 발명에 따른 소프트웨어 저작권 보호를 위한 워터마크 삽입장치는 소프트웨어 포함된 명령어를 그룹별로 분류하고, 상기 그룹별 명령어 개수를 계산하고, 상기 그룹별 계산된 명령어 개수와 그룹별 가중치를 곱한 후 합산하여 마킹 데이터를 산출하는 산출부; 및 상기 산출된 마킹 데이터를 상기 소프트웨어에 워터마킹하는 마킹부를 포함한다.
삭제
나아가 상기 그룹은 레지스터 그룹, 상수 선언 그룹, 분기 명령어 그룹, 호출 명령어 그룹 및 사칙연산 그룹 중 적어도 둘 이상의 그룹을 포함할 수 있다.
더 나아가 상기 마킹 데이터는 하기의 식 1에 의하여 산출될 수 있다.
<식 1>:
Figure 112012014881009-pat00001
또한 상기 산출부는 메서드(method) 별로 상기 마킹 데이터를 산출할 수 있다.
나아가 상기 마킹부는 각 메서드에 해당 메서드로부터 산출된 마킹 데이터를 워터마킹할 수 있다.
더 나아가 상기 마킹 데이터가 산출된 대상 메서드, 상기 대상 메서드로부터 산출된 마킹 데이터 및 상기 마킹 데이터가 저장된 메서드 내의 위치가 저장되는 데이터 베이스를 구비할 수 있다.
또한 상기 산출부는 더미 수(數)를 상기 마킹 데이터에 합산하여 산출할 수 있다. 이 때 상기 마킹부는 상기 합산된 마킹 데이터에 대응하도록 상기 마킹 데이터 산출 대상 메서드에 포함된 명령어를 변경하거나 더미 코드를 삽입한다.
나아가 상기 마킹 데이터가 산출된 대상 메서드, 상기 대상 메서드로부터 산출된 마킹 데이터, 상기 마킹 데이터가 저장된 메서드 내의 위치 및 상기 더미 수가 저장되는 데이터 베이스를 더 구비할 수 있다.
또한 상기 산출부는 상기 소프트웨어에 포함된 다수의 메서드 중 일부 메서드를 선택하여 마킹 데이터 산출할 수 있다.
또한 상기 마킹부는 상기 마킹 데이터가 산출되도록 선택된 메서드 이외의 메서드에 대하여 더미 코드를 삽입할 수 있다.
본 발명에 따른 소프트웨어 저작권 보호를 위한 워터마크 추출장치는 마킹 데이터가 산출된 대상 메서드, 상기 대상 메서드로부터 산출된 마킹 데이터 및 상기 마킹 데이터가 저장된 메서드 내의 위치가 저장되는 데이터 베이스; 및 상기 데이터 베이스를 참조하여 소프트웨어에 포함된 마킹 데이터가 산출된 대상 메서드로부터 마킹 데이터를 추출하는 추출부;를 포함한다.
또한 상기 추출부에 의하여 추출된 마킹 데이터와 상기 데이터 베이스에 저장된 마킹 데이터를 비교하는 비교부를 포함할 수 있다.
나아가 상기 비교부는 상기 추출된 마킹 데이터가 상기 데이터 베이스에 저장된 마킹 데이터를 기준으로 기 설정된 범위 내에 존재하는 경우 상기 추출된 마킹 데이터와 상기 데이터 베이스에 저장된 마킹 데이터가 서로 대응하는 것으로 판정할 수 있다.
또한 상기 비교부는 상기 추출부를 통해 추출된 마킹 데이터들에 대한 메서드들과 상기 데이터베이스에 저장된 마킹 데이터에 대한 메서드들 중 상기 추출된 마킹 데이터와 상기 데이터베이스에 저장된 마킹 데이터가 서로 대응하는 메서드의 일치 비율이 최소 일치율 이상인 경우 마킹 데이터가 삽입된 소프트웨어로 판정할 수 있다.
또한 상기 데이터베이스에는 상기 산출된 마킹 데이터에 합산된 더미 수 데이터가 더 저장될 수 있다.
상기의 워터마크 삽입장치가 워터마크를 삽입하는 방법에 있어서, 본 발명에 따른 소프트웨어 저작권 보호를 위한 워터마크 삽입방법은 다음과 같은 단계를 포함한다.
본 발명의 일 실시예에 따른 워터마크 삽입장치가 워터마크를 삽입하는 방법은 소프트웨어의 메서드에 포함된 명령어를 그룹별로 분류하는 제1 단계, 상기 그룹별 명령어 개수를 계산하고, 상기 그룹별 계산된 명령어 개수와 그룹별 가중치를 곱한 후 합산하여 마킹 데이터를 산출하는 제2 단계; 및 상기 산출된 마킹 데이터를 상기 메서드에 마킹하는 제3 단계를 포함한다.
또한 상기 마킹 데이터가 산출된 대상 메서드, 상기 대상 메서드로부터 산출된 마킹 데이터 및 상기 마킹 데이터가 저장된 메서드 내의 위치를 데이터 베이스화하는 제4 단계를 더 포함할 수 있다.
상기의 워커마크 추출장치가 워터 마크를 추출하는 방법에 있어서, 본 발명에 따른 소프트웨어 저작권 보호를 위한 워터마크 추출방법은 다음과 같은 단계를 포함할 수 있다. 제1 단계에서는 데이터 베이스로부터 마킹 데이터가 산출된 대상 메서드 및 상기 마킹 데이터가 저장된 메서드 내의 위치를 참조한다. 제2 단계에서는 추출부가 소프트웨어에 포함된 메서드로부터 마킹 데이터를 추출한다. 제3 단계에서는 비교부가 상기 데이터 베이스로부터 삽입된 마킹 데이터를 참조하여 상기 추출된 마킹 데이터와 비교한다.
본 발명에 따르면, 프로그램의 소스 코드 수준이 아닌 명령어 수준에서 정보를 삽입함으로써 워터마크의 은닉성(Stealthyness)을 높일 수 있다.
또한, 본 발명에 따르면 기존 정적 워터마킹 기술에 비하여 삽입된 정보가 쉽게 파괴되지 않고 코드 변형 시에도 삽입된 워터마킹 정보를 다시 추출할 수 있는 가능성을 높일 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 저작권 보호 장치를 나타내는 블록도이다.
도 2는 일 실시예에 따른 소프트웨어 저작권 보호를 위한 워터마크 삽입 프로세스를 나타내는 순서도이다.
도 3은 일 실시예에 따른 소프트웨어 저작권 보호를 위한 워터마크 추출 프로세스를 나타내는 순서도이다.
이하 첨부된 도면을 참조하여 본 발명의 실시예를 설명한다. 특별한 정의나 언급이 없는 경우에 본 설명에 사용하는 방향을 표시하는 용어는 도면에 표시된 상태를 기준으로 한다.
도 1을 참조하여 본 발명에 따른 소프트웨어 저작권 보호를 위한 워터마크 삽입장치 및 추출장치를 설명한다. 도 1은 본 발명의 일 실시예에 따른 소프트웨어 저작권 보호 장치를 나타내는 블록도이다.
데이터 베이스(30)는 워터마크 삽입장치(10)로부터 데이터를 전달받아 기록하고, 워터마크 추출장치(20)에 대하여 기록된 데이터를 전달한다. 데이터 베이스(30)는 워터마크 삽입장치(10)로부터 삽입되는 워터마크와 관련된 데이터가 저장된다. 데이터 베이스(30)에 저장된 데이터는 워터마크 추출장치(20)가 워터마크를 추출할 경우 소프트웨어에 저장된 워터마크에 대한 참조 정보로서 이용된다. 한편, 데이터 베이스(30)는 다양한 형태로 구현될 수 있다. 즉, 데이터 베이스(30)는 저장 장치를 구비한 컴퓨팅 장치, 데이터를 기록할 수 있는 기록 매체 등 다양한 형태로 구비될 수 있다.
데이터 베이스(30)에는 삽입될 워터 마크, 즉 마킹 데이터에 대한 관련 정보가 저장된다. 마킹 데이터에 관한 정보로는 마킹 데이터가 산출된 대상 메서드, 상기 대상 메서드로부터 산출된 마킹 데이터, 상기 마킹 데이터가 저장된 메서드 내의 위치, 더미 수에 관한 정보들이 저장될 수 있다. 각 데이터에 대한 상세한 설명은 이후 후술한다.
워터마크 삽입장치(10)는 소프트웨어로부터 마킹할 마킹 데이터, 즉 워터 마크를 산출하고 이를 다시 해당 소프트웨어에 워터마킹하는 기능을 수행한다.
산출부(11)는 소프트웨어로(SW1)부터 마킹할 데이터를 산출한다. 산출부(11)는 소프트웨어에 포함된 명령어 수를 기반으로 마킹 데이터를 산출한다. 구체적으로 설명하면 다음과 같다.
소프트웨어의 경우 복수의 메서드(method)로 나뉠 수 있다. 메서드는 객체 지향 언어의 단위를 이루는 것으로서, 프로시저, 서브루틴 및 함수 등과 같이 불리기도 한다. 언어에 따라 메서드가 특정 개체에 할당된 작동방법과 같이 좁은 의미로도 사용되기도 하지만, 본 발명에서의 메서드는 앞서 설명한 바와 같이 함수 또는 프로시저와 같이 특정값을 반환하거나 특정 기능을 수행하며 소프트웨어의 일부를 이루는 넓은 의미로 사용된다.
본 실시예에서는 각 메서드를 단위로 마킹 데이터를 산출한다. 먼저 각 메서드 별로 포함된 명령어를 그 성격에 따라 몇몇의 그룹으로 구분한다. 예를 들어 메서드에 포함된 명령어를 분기문, 함수 호출 명령어, 사칙연산문의 3가지 그룹으로 분류할 수 있다. 분류된 3개의 그룹에는 각각 다른 가중치가 부여된다. 예를 들어 분기문에는 3의 가중치가 부여되고, 호출 명령어에는 5의 가중치가 부여되고, 사칙 연산문에는 1점의 가중치가 부여될 수 있다. 이외에도 그룹은 다양한 방법으로 분류될 수 있다. 레지스터 그룹, 상수 선언 그룹, 분기 명령어 그룹, 호출 명령어 그룹 및 사칙연산 그룹 등 명령어를 구분할 수 있는 명확한 기준이 있다면 다양한 방법으로 분류할 수 있다. 또한 하나의 그룹에 둘 이상의 유사 성격의 그룹을 묶어 동일한 가중치를 부여하는 것도 가능하다.
이렇게 그룹 분류에 대한 기준이 마련된 상태에서 각 메서드 별 마킹 데이커(워터 마킹할 데이터)를 산출한다. 마킹 데이터의 산출은 아래의 식 1에 의하여 수행된다.
<식 1>:
Figure 112012014881009-pat00002
즉, 각 메서드에 포함된 명령어들을 분류된 그룹별로 나누어 그 수를 계산하고, 각 그룹별 명령어 수에 해당 그룹의 가중치를 곱한 후 모두 합하여 마킹데이터를 산출한다. 산출된 마킹 데이터는 상술한 데이터 베이스(30)에 저장된다.
한편, 산출부(11)는 더미 수(數)를 마킹 데이터에 합산하여 산출할 수 있다. 더미 수는 후술할 마킹부(12)가 마킹 데이터의 은닉성 등의 이유로 더미 코드를 삽입하거나 명령어를 변경하는 경우에 대하여 보상의 의미가 있다. 이에 관하여 마킹부에서 상세히 설명한다.
산출부(11)는 전체에 대한 마킹 데이터를 산출하지 않고, 위와 같이 방법으로 마킹 데이터를 산출할 메서드를 선별할 수 있다. 마킹 데이터 자체도 일정한 저장 용량을 차지하게 되므로 소프트웨어 자체의 효율성을 위하여 일부 메서드에만 마킹 데이터를 삽입할 수 있다.
마킹부(12)는 산출부(11)에 의하여 산출된 마킹 데이터를 소프트웨어(SW1)에 워터마킹한다. 마킹부(12)는 각 메서드 별로 산출된 마킹 데이터를 각 메서드에 저장한다. 이 때 어느 한 메서드의 마킹 데이터를 다른 메서드에 기재하는 것도 가능하다. 저장된 마킹 데이터의 위치와 어느 메서드에 대한 마킹 데이터인지와 마킹 데이터 자체는 상술한 데이터 베이스(30)에 저장된다.
한편, 어느 한 마킹 데이터를 해당 마킹 데이터가 산출된 메서드에 저장하는 경우 마킹부(12)는 마킹 데이터가 산출되도록 선택된 메서드 이외의 메서드에 대하여 더미 코드를 삽입하거나 명령어를 변경할 수 있다. 더미 코드의 삽입 또는 명령어의 변경이란 산술적인 면에서는 동일한 값이 결과값으로 산출되지만, 계산 과정이 우회되도록 중간값에 대한 사칙연산 등이 수행되도록 명령어를 변경하는 것과 같이 불필요한 명령어를 삽입하는 것을 의미한다. 이러한 추가적인 더미 코드의 삽입으로 인하여 워터마크의 은닉성이 높아지게 된다.
앞서 설명한 바와 같이 산출부(11)는 마킹 데이터에 더미 수를 더 합산할 수 있다. 더미 수는 삽입된 더미 코드나 변경된 명령어에 의하여 증가한 마킹 데이터의 증가분에 대응한다. 반면 더미 코드의 삽입에 의한 증가분을 더미 수에 의하여 반영하거나 반대로 증가할 더미 수를 미리 결정한 뒤 이에 맞추어 더미 코드 등을 삽입하는 것도 가능하다.
워터마크 추출장치(20)는 데이터 베이스(30)를 참조하여 소프트웨어(SW2)에 마킹되어 있는 마킹 데이터를 추출하고, 이를 데이터 베이스(30)에 저장되어 있는 마킹 데이터와 비교하여 마킹 데이터 추출 대상인 소프트웨어와 마킹 데이터가 산출된 소프트웨어(SW1)와의 동일성 정도를 판단한다.
추출부(21)는 소프트웨어로부터 마킹 데이터를 추출한다. 이 때 마킹 데이터의 추출을 위하여 데이터 베이스(30)를 참조한다. 앞서 설명한 바와 같이 데이터 베이스(30)에는 워터 마킹과 관련된 데이터들이 저장되어 있다. 즉, 추출부(21)는 데이터 베이스(30)로부터 마킹 데이터의 저장 위치를 참조하여 소프트웨어(SW2)로부터 마킹 데이터를 추출한다.
비교부(22)는 추출부(21)에 의하여 추출된 마킹 데이터를 데이터 베이스(30)로부터 참조한 마킹 데이터와 비교한다. 비교부(22)는 데이터 베이스(30)로부터 마킹 데이터 자체와 해당 마킹 데이터가 산출된 대상 메서드에 대한 정보를 참조하여 추출부(21)에 의하여 소프트웨어(SW2)로부터 추출된 마킹 데이터와 비교한다. 이 때 두 마킹 데이터의 비교예는 일정한 오차 범위를 둘 수 있다. 마킹 데이터가 추출된 소프트웨어(SW2)가 타인에 의하여 수정, 최적화 등이 된 불법 소프트웨어인 경우 두 마킹 데이터가 정확히 일치하기는 매우 어렵다. 따라서 일정한 오차 범위를 두고 두 마킹 데이터를 비교하게 된다. 따라서 비교부(22)는 추출된 마킹 데이터가 데이터 베이스(30)에 저장된 마킹 데이터를 기준으로 기 설정된 오차 범위 내에 존재하는 경우 추출된 마킹 데이터와 데이터 베이스로부터 참조된 마킹 데이터가 서로 대응하는 것으로 판정할 수 있다. 여기서 대응이란 비교되는 두 마킹 데이터의 값이 정확히 일치하지 않더라도 같은 메서드로부터 수정 또는 최적화 되었다는 의미로 사용되었다. 추출된 마킹 데이터와 데이터 베이스(30)로부터 참조한 마킹 데이터가 대응하는 것으로 판정되는 메서드가 증가할수록 마킹 데이터가 추출된 소프트웨어(SW2)는 워터 마킹이 삽입된 소프트웨어(SW1)과 일치하거나 동일한 것으로 판단할 수 있는 확률이 높아진다는 것을 의미한다. 따라서 다수의 메서드에 대한 마킹 데이터의 비교가 끝난 후에는 워터마크가 삽입된 총 메서드 수에 대한 대응하는 메서드 쌍의 수의 비율로 두 소프트웨어의 유사성을 판단한다. 예를 들어 비교부(22)는 마킹 데이터가 삽입된 전체 메서드에 대한 상기 데이터 베이스에 저장된 마킹 데이터에 대응하는 마킹 데이터가 추출된 메서드의 수의 비율이 50% 이상인 경우에 두 소프트웨어가 동일, 유사한 것으로 판단할 수 있다.
도 2를 참조하여 구체적인 예와 함께 일 실시예에 따른 소프트웨어 저작권 보호를 위한 워터마크 삽입 프로세스를 설명한다. 도 2는 일 실시예에 따른 소프트웨어 저작권 보호를 위한 워터마크 삽입 프로세스를 나타내는 순서도이다.
실제 실시예에 따른 워터마크 삽입 및 추출 프로세스는 아래 표 1과 같이 바이너리(2진 코드) 수준에서 작업을 하게 되는데, 이하에서는 설명의 편의상 2진 코드를 디스어셈블한 내용으로 설명하겠습니다.
<표 1>
Figure 112012014881009-pat00003
먼저 앞서 설명한 바와 같이 산출부가 상기 메서드에 포함된 명령어를 그룹별로 분류하기 위하여 분류 기준을 마련한다. 앞서 3가지로 분류된 예를 설명하였으나, 본 설명에서는 아래의 표 2와 같이 5가지의 그룹으로 명령어 그룹을 분류하여 설명한다.
<표 2>
Figure 112012014881009-pat00004
표 2에 도시된 바와 같이 리지스터 그룹, 분기 명령어 그룹, 상수 선언 그룹, 호출 명령어 그룹, 사칙연산 그룹 등 5가지의 그룹으로 분류할 수 있다.
다음으로 마킹 데이터 등 워터마크 정보를 삽입할 메서드를 선택하고(S10), 산출부가 앞서 설명한 바와 같이 각 메서드 별로 해당 메서드에 포함된 그룹별 명령어 수에 그룹별 가중치를 곱한 후 합산하여 마킹 데이터를 산출한다(S20). 이 때 더미 코드를 더 삽입할 수 있다(S30). 이 경우 다음과 같은 구체적인 단계를 더 수행하여야 한다. 아래의 단계는 먼저 삽입할 메서드 별 워터 마크를 선정하고 이에 맞추어 마킹 데이터에 더미 수를 더 합산하는 예에 관한 것이다.
먼저 산출부가 메서드 별로 마킹 데이터를 산출한다. 다음으로 미리 워터마크하기 위하여 선정해둔 삽입 데이터를 둘 이상으로 분할한다. 이 때 분할 수는 마킹 데이터를 산출할 메서드의 수와 일치시키는 것이 바람직하다. 다음으로 분할 된 각각의 삽입 데이터와 메서드로부터 산출된 메서드 별 마킹 데이터를 비교한다. 이 때 분할 된 각각의 삽입 데이터에 가장 가까운 마킹 데이터를 갖는 메서드를 해당 삽입 데이터와 매칭시킬 수 있다. 이 경우 더미 수의 크기가 작아져 적은 더미 코드의 삽입 및 명령어 변경만으로도 워터 마킹이 가능하므로 소프트웨어 자체의 효율성이 증가될 수 있다.
아래의 표 3에 어느 한 메서드에 대한 마킹 데이터를 산출하는 예를 도시하였다.
<표 3>
Figure 112012014881009-pat00005
표 3에 도시된 바와 같이 해당 메서드의 값은 49입니다. 위와 같은 방법으로 마킹 데이터를 산출할 모든 메서드에 대하여 마킹 데이터를 산출한다. 이 때 분할된 삽입 데이터가 54라 가정하는 경우 54와 가까운 마킹 데이터 값 49를 갖는 위의 메서드가 삽입 데이터 54와 매칭될 수 있다. 이 경우 마킹 데이터값을 54로 하여 워터마킹을 진행할 수 있으며, 더미 수는 삽입 데이터 54와 산출된 마킹 데이터 값 49의 차인 5가 된다.
이 경우 더미 수 5를 보상하기 위하여 코드의 일부를 아래의 표 4와 같이 변경할 수 있다.
<표 4>
Figure 112012014881009-pat00006
즉, 수정전인 표 4의 상부의 메서드에 비하여 수정후인 표 4의 하부의 메서드는 산출된 메서드 값이 더미 코드로 인하여 54로 변경된다. 이와 같이 마킹 데이터에 추가된 더미 수를 보상하도록 메서드에 더미 코드를 삽입할 수 있다.
이 후 데이터 베이스에는 메서드의 마킹 데이터 값 54와 마킹 데이터가 저장된 메서드의 식별 데이터 등 삽입 위치와 관련된 데이터가 저장된다(S40).
도 3을 참조하여 일 실시예에 따른 소프트웨어 저작권 보호를 위한 워터마크 추출 프로세스를 설명한다. 도 3은 일 실시예에 따른 소프트웨어 저작권 보호를 위한 워터마크 추출 프로세스를 나타내는 순서도이다.
먼저 데이터 베이스로부터 마킹 데이터가 산출된 대상 메서드 및 상기 마킹 데이터가 저장된 메서드 내의 위치를 참조한다(S50). 다음으로 추출부가 소프트웨어에 포함된 메서드로부터 마킹 데이터를 추출한다(S60). 마지막으로 앞서 설명한 바와 같이 비교부가 데이터 베이스로부터 삽입된 마킹 데이터를 참조하여 추출된 마킹 데이터와 비교한다(S70).
이상 본 발명의 바람직한 실시예에 대하여 설명하였으나, 본 발명의 기술적 사상이 상술한 바람직한 실시예에 한정되는 것은 아니며, 특허청구범위에 구체화된 본 발명의 기술적 사상을 벗어나지 않는 범주에서 다양한 소프트웨어 저작권 보호 장치 및 그 방법으로 구현될 수 있다.
10: 워터마크 삽입장치 11: 산출부
12: 마킹부 20: 워터마크 추출장치
21: 추출부 22: 비교부

Claims (20)

  1. 소프트웨어 포함된 명령어를 그룹별로 분류하고, 상기 그룹별 명령어 개수를 계산하고, 상기 그룹별 계산된 명령어 개수와 그룹별 가중치를 곱한 후 합산하여 마킹 데이터를 산출하는 산출부; 및
    상기 산출된 마킹 데이터를 상기 소프트웨어에 워터마킹하는 마킹부;를 포함하는 소프트웨어 저작권 보호를 위한 워터마크 삽입장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 그룹은 레지스터 그룹, 상수 선언 그룹, 분기 명령어 그룹, 호출 명령어 그룹 및 사칙연산 그룹 중 적어도 둘 이상인 소프트웨어 저작권 보호를 위한 워터마크 삽입장치.
  4. 청구항 4은(는) 설정등록료 납부시 포기되었습니다.
    제3항에 있어서,
    상기 마킹 데이터는 하기의 식 1에 의하여 산출되는 소프트웨어 저작권 보호를 위한 워터마크 삽입장치.
    <식 1>:
    Figure 112012014881009-pat00007
  5. 제1항에 있어서,
    상기 산출부는 메서드(method) 별로 상기 마킹 데이터를 산출하는 소프트웨어 저작권 보호를 위한 워터마크 삽입장치.
  6. 청구항 6은(는) 설정등록료 납부시 포기되었습니다.
    제5항에 있어서,
    상기 마킹부는 각 메서드에 해당 메서드로부터 산출된 마킹 데이터를 워터마킹하는 소프트웨어 저작권 보호를 위한 워터마크 삽입장치.
  7. 청구항 7은(는) 설정등록료 납부시 포기되었습니다.
    제6항에 있어서,
    상기 마킹 데이터가 산출된 대상 메서드, 상기 대상 메서드로부터 산출된 마킹 데이터 및 상기 마킹 데이터가 저장된 메서드 내의 위치가 저장되는 데이터 베이스를 구비하는 소프트웨어 저작권 보호를 위한 워터마크 삽입장치.
  8. 청구항 8은(는) 설정등록료 납부시 포기되었습니다.
    제6항에 있어서,
    상기 산출부는 더미 수(數)를 상기 마킹 데이터에 합산하여 산출하고,
    상기 마킹부는 상기 합산된 마킹 데이터에 대응하도록 상기 마킹 데이터 산출 대상 메서드에 포함된 명령어를 변경하거나 더미 코드를 삽입하는 소프트웨어 저작권 보호를 위한 워터마크 삽입장치.
  9. 청구항 9은(는) 설정등록료 납부시 포기되었습니다.
    제8항에 있어서,
    상기 마킹 데이터가 산출된 대상 메서드, 상기 대상 메서드로부터 산출된 마킹 데이터, 상기 마킹 데이터가 저장된 메서드 내의 위치 및 상기 더미 수가 저장되는 데이터 베이스를 구비하는 소프트웨어 저작권 보호를 위한 워터마크 삽입장치.
  10. 청구항 10은(는) 설정등록료 납부시 포기되었습니다.
    제5항에 있어서,
    상기 산출부는 상기 소프트웨어에 포함된 다수의 메서드 중 일부 메서드를 선택하여 마킹 데이터 산출하는 소프트웨어 저작권 보호를 위한 워터마크 삽입장치.
  11. 청구항 11은(는) 설정등록료 납부시 포기되었습니다.
    제10항에 있어서,
    상기 마킹부는 상기 마킹 데이터가 산출되도록 선택된 메서드 이외의 메서드에 대하여 더미 코드를 삽입하는 소프트웨어 저작권 보호를 위한 워터마크 삽입장치.
  12. 마킹 데이터가 산출된 대상 메서드, 상기 대상 메서드로부터 산출된 마킹 데이터 및 상기 마킹 데이터가 저장된 메서드 내의 위치가 저장되는 데이터 베이스; 및
    상기 데이터 베이스를 참조하여 소프트웨어에 포함된 마킹 데이터가 산출된 대상 메서드로부터 마킹 데이터를 추출하는 추출부;를 포함하는 소프트웨어 저작권 보호를 위한 워터마크 추출장치.
  13. 제12항에 있어서,
    상기 추출부에 의하여 추출된 마킹 데이터와 상기 데이터 베이스에 저장된 마킹 데이터를 비교하는 비교부를 포함하는 소프트웨어 저작권 보호를 위한 워터마크 추출장치.
  14. 청구항 14은(는) 설정등록료 납부시 포기되었습니다.
    제13항에 있어서,
    상기 비교부는 상기 추출된 마킹 데이터가 상기 데이터 베이스에 저장된 마킹 데이터를 기준으로 기 설정된 범위 내에 존재하는 경우 상기 추출된 마킹 데이터와 상기 데이터 베이스에 저장된 마킹 데이터가 서로 대응하는 것으로 판정하는 소프트웨어 저작권 보호를 위한 워터마크 추출장치.
  15. 청구항 15은(는) 설정등록료 납부시 포기되었습니다.
    제13 항에 있어서,
    상기 비교부는 상기 추출부를 통해 추출된 마킹 데이터들에 대한 메서드들과 상기 데이터베이스에 저장된 마킹 데이터에 대한 메서드들 중 상기 추출된 마킹 데이터와 상기 데이터베이스에 저장된 마킹 데이터가 서로 대응하는 메서드의 일치 비율이 최소 일치율 이상인 경우 마킹 데이터가 삽입된 소프트웨어로 판정하는 소프트웨어 저작권 보호를 위한 워터마크 추출장치.
  16. 제12항에 있어서,
    상기 데이터베이스에는 상기 산출된 마킹 데이터에 합산된 더미 수 데이터가 더 저장되는 소프트웨어 저작권 보호를 위한 워터마크 추출장치.
  17. 워터마크 삽입장치가 워터마크를 삽입하는 방법에 있어서,
    소프트웨어의 메서드에 포함된 명령어를 그룹별로 분류하는 제1 단계;
    상기 그룹별 명령어 개수를 계산하고, 상기 그룹별 계산된 명령어 개수와 그룹별 가중치를 곱한 후 합산하여 마킹 데이터를 산출하는 제2 단계; 및
    상기 산출된 마킹 데이터를 상기 메서드에 마킹하는 제3 단계;를 포함하는 소프트웨어 저작권 보호를 위한 워터마크 삽입방법.
  18. 삭제
  19. 청구항 19은(는) 설정등록료 납부시 포기되었습니다.
    제17항에 있어서,
    상기 마킹 데이터가 산출된 대상 메서드, 상기 대상 메서드로부터 산출된 마킹 데이터 및 상기 마킹 데이터가 저장된 메서드 내의 위치를 데이터 베이스화하는 제4 단계를 포함하는 소프트웨어 저작권 보호를 위한 워터마크 삽입방법.
  20. 워터마크 추출장치가 워터 마크를 추출하는 방법에 있어서,
    데이터 베이스로부터 마킹 데이터가 산출된 대상 메서드 및 상기 마킹 데이터가 저장된 메서드 내의 위치를 참조하는 제1 단계;
    소프트웨어에 포함된 메서드로부터 마킹 데이터를 추출하는 제2 단계;
    상기 데이터 베이스로부터 삽입된 마킹 데이터를 참조하여 상기 추출된 마킹 데이터와 비교하는 제3 단계;를 포함하는 소프트웨어 저작권 보호를 위한 워터마크 추출방법.
KR1020120018561A 2012-02-23 2012-02-23 소프트웨어 저작권 보호 장치 및 그 방법 KR101316697B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120018561A KR101316697B1 (ko) 2012-02-23 2012-02-23 소프트웨어 저작권 보호 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120018561A KR101316697B1 (ko) 2012-02-23 2012-02-23 소프트웨어 저작권 보호 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20130101651A KR20130101651A (ko) 2013-09-16
KR101316697B1 true KR101316697B1 (ko) 2013-10-10

Family

ID=49451683

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120018561A KR101316697B1 (ko) 2012-02-23 2012-02-23 소프트웨어 저작권 보호 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR101316697B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070086517A (ko) * 2004-12-22 2007-08-27 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 컴퓨터 프로그램 코드에 정보를 삽입하고 검출하는 방법 및이 방법을 수행하는 컴퓨터 판독가능 매체
KR20070086522A (ko) * 2004-12-22 2007-08-27 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 컴퓨터 프로그램 코드에 정보를 삽입하고 검출하는 방법 및이 방법을 수행하는 컴퓨터 프로그램 제품

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070086517A (ko) * 2004-12-22 2007-08-27 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 컴퓨터 프로그램 코드에 정보를 삽입하고 검출하는 방법 및이 방법을 수행하는 컴퓨터 판독가능 매체
KR20070086522A (ko) * 2004-12-22 2007-08-27 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 컴퓨터 프로그램 코드에 정보를 삽입하고 검출하는 방법 및이 방법을 수행하는 컴퓨터 프로그램 제품

Also Published As

Publication number Publication date
KR20130101651A (ko) 2013-09-16

Similar Documents

Publication Publication Date Title
CN102054149B (zh) 一种恶意代码行为特征提取方法
CN101084478B (zh) 为计算机程序代码加水印
Zheng et al. Inter-frame video forgery detection based on block-wise brightness variance descriptor
CN110574028B (zh) 用于防护软件代码的方法
CN108171064B (zh) 一种用于灰盒模糊测试的样本格式保护方法及装置
CN109766891B (zh) 获取设备设施信息的方法及计算机可读存储介质
CN103914657A (zh) 一种基于函数特征的恶意程序检测方法
KR102283054B1 (ko) Api 호출 그래프 추출 기반 모바일 애플리케이션 악성 행위 패턴 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치
JP2017004123A (ja) 判定装置、判定方法および判定プログラム
CN109241737A (zh) 一种面向多种补丁模式的差异分支识别方法及系统
KR101316697B1 (ko) 소프트웨어 저작권 보호 장치 및 그 방법
CN105809039A (zh) 缓冲区溢出漏洞自动修复方法
KR101749210B1 (ko) 다중 서열 정렬 기법을 이용한 악성코드 패밀리 시그니쳐 생성 장치 및 방법
CN109241706B (zh) 基于静态胎记的软件抄袭检测方法
CN104636661A (zh) 一种分析Android应用程序的方法和系统
CN110520860B (zh) 用于防护软件代码的方法
CN111046736A (zh) 一种提取文本信息的方法、装置和存储介质
CN108563950B (zh) 基于SVM的Android恶意软件检测方法
CN114168470A (zh) 软件系统的测试方法及装置、电子设备、存储介质
CN104035866B (zh) 基于系统调用分析的软件行为评估方法和装置
US20230359712A1 (en) Method and device of embedding watermark in software
US20050055312A1 (en) Software control flow watermarking
KR101792631B1 (ko) 퍼지 해싱을 사용한 함수의 api 기반 소프트웨어의 유사성 측정방법 및 그 시스템
KR101829426B1 (ko) 문자열 점수 기반 소프트웨어 저장 장치와 분류 장치 및 그 방법
KR102242000B1 (ko) 악성 코드의 행위 특성 추출 장치, 방법 및 이를 수행하기 위한 프로그램을 기록한 기록매체

Legal Events

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

Payment date: 20161004

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181001

Year of fee payment: 6