KR100834754B1 - 실행흐름 측정 및 검증이 가능한 프로그램 배포 방법 - Google Patents

실행흐름 측정 및 검증이 가능한 프로그램 배포 방법 Download PDF

Info

Publication number
KR100834754B1
KR100834754B1 KR1020060018292A KR20060018292A KR100834754B1 KR 100834754 B1 KR100834754 B1 KR 100834754B1 KR 1020060018292 A KR1020060018292 A KR 1020060018292A KR 20060018292 A KR20060018292 A KR 20060018292A KR 100834754 B1 KR100834754 B1 KR 100834754B1
Authority
KR
South Korea
Prior art keywords
program
execution flow
target platform
user
information
Prior art date
Application number
KR1020060018292A
Other languages
English (en)
Other versions
KR20070088107A (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 KR1020060018292A priority Critical patent/KR100834754B1/ko
Publication of KR20070088107A publication Critical patent/KR20070088107A/ko
Application granted granted Critical
Publication of KR100834754B1 publication Critical patent/KR100834754B1/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B26HAND CUTTING TOOLS; CUTTING; SEVERING
    • B26BHAND-HELD CUTTING TOOLS NOT OTHERWISE PROVIDED FOR
    • B26B13/00Hand shears; Scissors
    • B26B13/22Hand shears; Scissors combined with auxiliary implements, e.g. with cigar cutter, with manicure instrument
    • B26B13/24Hand shears; Scissors combined with auxiliary implements, e.g. with cigar cutter, with manicure instrument to aid hair cutting
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B26HAND CUTTING TOOLS; CUTTING; SEVERING
    • B26DCUTTING; DETAILS COMMON TO MACHINES FOR PERFORATING, PUNCHING, CUTTING-OUT, STAMPING-OUT OR SEVERING
    • B26D7/00Details of apparatus for cutting, cutting-out, stamping-out, punching, perforating, or severing by means other than cutting
    • B26D7/08Means for treating work or cutting member to facilitate cutting
    • B26D7/10Means for treating work or cutting member to facilitate cutting by heating

Landscapes

  • Life Sciences & Earth Sciences (AREA)
  • Forests & Forestry (AREA)
  • Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

실행흐름 측정 및 검증이 가능한 프로그램의 배포 방법을 제공한다. 실행흐름 측정 및 검증이 가능한 프로그램의 배포 방법은 타겟 플랫폼을 제작하는 단계와 타겟 플랫폼에서 구동될 프로그램을 생성하는 단계와 타겟 플랫폼에 실행흐름 검증 정보를 바인딩하는 단계와 바인딩된 실행흐름 검증 정보를 프로그램에 내장하는 단계 및 프로그램을 배포하는 단계를 포함한다.
실행흐름, 프로그램 배포, 바인딩

Description

실행흐름 측정 및 검증이 가능한 프로그램 배포 방법{Method for distribution of programs which support execution flow measurement and verification}
도 1은 본 발명의 일 실시예에 따른 실행흐름 측정 및 검증이 가능한 프로그램을 프로그램 사용자에게 배포하는 과정의 개념도이다.
도 2는 본 발명의 일 실시예에 따른 실행흐름 측정 및 검증이 가능한 프로그램을 프로그램 사용자에게 배포하는 방법을 각 스테이지별로 도시한다.
도 3은 본 발명의 일 실시예에 따른 실행흐름 측정 및 검증이 가능한 프로그램을 프로그램 사용자에게 배포하는 방법 중, 사전 과정인 스테이지 A(210), 스테이지 B(220) 및 스테이지 C(230) 과정의 순서도이다.
도 4는 본 발명의 일 실시예에 따른 실행흐름 측정 및 검증이 가능한 프로그램을 프로그램 사용자에게 배포하는 방법 중, 주 과정인 스테이지 D(240) 과정의 순서도이다.
도 5는 본 발명의 일 실시예에 따른 인증 패스(a) 메시지(500)를 도시한다.
도 6은 본 발명의 일 실시예에 따른 인증 패스(b) 메시지(600)를 도시한다.
도 7은 본 발명의 일 실시예에 따른 챌린지 값 처리를 도시한다.
도 8은 본 발명의 일 실시예에 따른 실행흐름 검증 정보(EFVI)의 구성을 도 시한다.
도 9는 본 발명의 일 실시예에 따른 측정 타겟 참조 정보(MTRI)의 구성을 도시한다.
도 10은 본 발명의 일 실시예에 따른 암호화된 실행흐름 검증 정보(EFVI)를 포함한 프로그램의 구성을 도시한다.
<도면의 주요 부분에 관한 부호의 설명>
100: 플랫폼 제작자
110: 타겟 플랫폼
120: 바인딩용 키
130: 인증된 바인딩용 키
200: 인증 기관
300: 프로그램 제작자
400: 프로그램 사용자
본 발명은 실행흐름 측정 및 검증이 가능한 프로그램의 배포 방법에 관한 것으로서, 더욱 상세하게는 프로그램 제작자가 정상적으로 등록된 프로그램 사용자에게 해당 프로그램을 안전하게 배포하고, 프로그램 사용자는 정당한 프로그램 제작자로부터 안전한 프로그램을 배포 받도록 하는 실행흐름 측정 및 검증이 가능한 프 로그램의 배포 방법에 관한 것이다.
인터넷의 성장과 멀티미디어 기술의 발전은 디지털 컨텐츠를 분배하고 획득하는 과정을 용이하게 만들고 있다. 하지만 디지털 컨텐츠의 저작권에 대하여 보호할 수 있는 방법이 없다면, 오히려 이러한 기술의 발전은 디지털 컨텐츠를 쉽게 복사 및 변형하고 불법적으로 유통하는 가장 중요한 요인이 될 것이다.
따라서 프로그램 배포의 경우 프로그램 제작자가 정상적으로 등록된 프로그램 사용자에게 해당 프로그램을 안전하게 배포하고, 프로그램 사용자는 정당한 프로그램 제작자로부터 안전한 프로그램을 배포 받도록 보장할 필요성이 제기된다.
본 발명은 실행흐름 측정 및 검증이 가능한 프로그램의 배포 방법을 제공하는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어질 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 실행흐름 측정 및 검증이 가능한 프로그램 배포 방법은 타겟 플랫폼을 제작하는 단계와 타겟 플랫폼에서 구동될 프로그램을 생성하는 단계와 타겟 플랫폼에 실행흐름 검증 정보를 바인딩하는 단계와 바인딩된 실행흐름 검증 정보를 프로그램에 내장하는 단계 및 프로그램을 배포하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
<주요 용어>
프로그램의 실행흐름: 프로그램이 수행되고 있는 동안 명령어(instruction)의 순차적인 수행 또는 분기, 점프, 리턴 등으로 결정되는 실행 경로의 궤적을 의미한다.
도 1은 본 발명의 일 실시예에 따른 실행흐름 측정 및 검증이 가능한 프로그램을 프로그램 사용자에게 배포하는 과정의 개념도이다.
실행흐름 측정 및 검증이 가능한 프로그램의 배포 구성 요소에는 플랫폼 제작자(100), 인증 기관(200), 프로그램 제작자(300) 및 프로그램 사용자(400)를 포함한다.
타겟 플랫폼(110)은 플랫폼 제작자(100)로부터 프로그램 사용자(400)에게 전달되고, 타겟 플랫폼(110)의 바인딩용 키(120)는 플랫폼 제작자(100)로부터 인증 기관(200)에 등록되며, 타겟 플랫폼(110)의 인증된 바인딩용 키(130)는 인증 기관(200)로부터 프로그램 제작자(300)에게 전달된다. 또한 프로그램 제작자(300)는 타겟 플랫폼(110)에 바인딩된 프로그램(즉 이하에서 설명될 타겟 플랫폼(110)에 바인딩된 실행흐름 검증 정보(EFVI)를 내장한 프로그램)을 사용자(400)에게 소프트웨어 형태로 배포할 수 있다.
이하 각 구성 요소와 함께 프로그램 배포 과정에 대해 구체적으로 설명하기로 한다.
플랫폼 제작자(100)는 타겟 플랫폼(110)을 제작하는 역할을 수행한다. 이때, 타겟 플랫폼(110)의 보안성을 높이기 위한 신뢰하는 처리 모듈(105)을 타겟 플랫폼(110)에 내장할 수 있다. 신뢰하는 처리 모듈(105)은 칩(chip) 형태일 수 있으며, 이 경우 타겟 플랫폼(110)의 바인딩용 키(120)를 인증 기관(200)에 등록함으로써 추후 정보의 바인딩 등 다양한 목적으로 사용할 수 있다. 또한 상기 타겟 플랫폼(110)의 바인딩용 키(120)에 대응되는 키를 신뢰하는 처리 모듈(105)에 내장할 수 있으며 상기 타겟 플랫폼(110)의 바인딩용 키(120)를 이용하여 암호화된 정보는 상기 타겟 플랫폼(110)의 바인딩용 키(120)에 대응되는 키를 내장하고 있는 신뢰하는 처리 모듈(105)에 의해서 복호화될 수 있도록 구성할 수 있다.
인증 기관(200)은 플랫폼 제작자(100)로부터 등록을 요청받은 타겟 플랫폼(110)의 바인딩용 키(120)에 따라 인증서를 생성(발급)하고, 상기 인증서를 필요로 하는 개체에게 제공하는 역할을 수행한다. 인증 기관(200)은 플랫폼 제작자(100), 프로그램 제작자(300) 및 타겟 플랫폼(110)에 의해 신뢰된다.
프로그램 제작자(300)는 사용자가 소정의 목적으로 사용하기 위한 프로그램을 생성(작성)하는 역할을 수행한다. 이때, 사용자의 목적을 달성할 수 있게 하는 기능 구현을 위한 프로그램을 생성하는 것뿐만 아니라, 생성된 프로그램에 따라 실행흐름 측정 및 검증에 필요한 실행흐름 검증 정보(EFVI; execution flow verification information)를 생성하고 실행흐름 검증 정보를 프로그램이 구동될 타겟 플랫폼(110)에 바인딩시켜 프로그램 사용자(400)의 타겟 플랫폼(110)에서 구동되는 상기 프로그램의 실행흐름 측정 및 검증 작업이 안전하게 수행되는 것을 보장한다. 이외에도 프로그램 제작자(300)는 인증 기관(200)로부터 정당성이 타겟 플랫폼(110)의 인증된 바인딩용 키(130)를 받아서 이용한다.
한편, 프로그램 코드는 복수개의 인스트럭션으로 구성되어 있는 데 프로그램이 실행된다는 것은 상기 인스트럭션들이 프로세서에서 정해진 순서대로 수행된다는 것을 의미한다. 또한 프로그램 제작자(300)가 설계한 대로 프로그램이 동작하는 지 검증하기 위해 프로그램의 실행흐름 측정을 하게 되며, 실행흐름 측정 대상이 되는 코드가 프로그램 내에 복수개로 존재하거나 특정 코드 부분만을 실행흐름 측정 대상으로 할 수 있다. 이를 위해 생성된 프로그램에 따라 실행흐름 측정 및 검증에 필요한 실행흐름 검증 정보(EFVI)를 생성하고, 실행흐름 검증 정보(EFVI)를 프로그램이 구동될 타겟 플랫폼(110)에 바인딩시켜 프로그램 사용자(400)의 타겟 플랫폼(110)에서 구동되는 상기 프로그램의 실행흐름 측정 및 검증 작업이 안전하게 수행되는 것을 보장한다. 실행흐름 검증 정보(EFVI)의 구성에 대해서는 이하 도 8에서 구체적으로 후술하기로 한다.
프로그램 사용자(400)는 프로그램 제작자(300)로부터 공급받은 타겟 플랫폼(110)에 바인딩된 실행흐름 검증 정보(EFVI)를 내장한 프로그램('바인딩된 프로그램'이라고도 한다)을 플랫폼 제작자(100)로부터 공급받은 타겟 플랫폼(110) 상에서 구동시켜 사용한다. 이때, 지정된 타겟 플랫폼(110)만이 상기 프로그램을 구동할 수 있도록 실행흐름 검증 정보(EFVI)를 인증된 바인딩용 키(130)를 이용하여 암호화된 EFVI로 프로그램 내에 내장하는 데 이에 대한 내용은 이하 도 10을 참조하기 바란다.
도 2는 본 발명의 일 실시예에 따른 실행흐름 측정 및 검증이 가능한 프로그램을 프로그램 사용자에게 배포하는 방법을 각 스테이지별로 도시한다.
상기 도 1에서 설명된 바와 같이 실행흐름 측정 및 검증이 가능한 프로그램의 배포 구성 요소는 플랫폼 제작자(100), 인증 기관(200), 프로그램 제작자(300) 및 프로그램 사용자(400)를 포함하여 구성된다. 
또한 프로그램 배포에 필요한 과정은 사전 과정인 스테이지(stage) A(210), 스테이지 B(220) 및 스테이지 C(230)와 프로그램 제작자(300) 및 프로그램 사용자(400) 간의 직접적인 프로그램 배포 과정인 스테이지 D(240)를 포함한 과정으로 구성된다.
스테이지 A(210)는 타겟 플랫폼(110) 제작 및 타겟 플랫폼(110)의 바인딩용 키(120)를 등록하는 과정을 나타내며, 스테이지 B(220)은 프로그램 사용자(400)가 플랫폼 제작자(100)로부터 타겟 플랫폼(110)를 제공받는 과정을 나타내며, 스테이지 C(230)는 프로그램 제작자(300)가 프로그램을 생성하고, 생성된 프로그램에 따 라 실행흐름 측정 및 검증에 필요한 실행흐름 검증 정보(EFVI)를 생성하여 상기 프로그램에 내장(결합)시키는 과정을 나타낸다. 이때, 스테이지 A(210), 스테이지 B(220), 스테이지 C(230)로 구성되는 각각의 사전 과정들 간의 수행 순서는 스테이지 A(210), 스테이지 B(220), 스테이지 C(230)의 순서대로 단계를 거치는 것이 바람직하나 예를 들면, 스테이지 A(210) 과정 다음에 스테이지 C(230) 과정이 일어나고 그 뒤에 스테이지 B(220) 과정이 일어나도 상관이 없다.
스테이지 D(240)는 프로그램 제작자(300) 및 프로그램 사용자(400) 간의 직접적인 프로그램 배포 과정을 나타낸다.
이하 도 3 및 도 4에서 상기 도 2의 각 스테이지별 과정을 보다 상세히 후술하기로 한다.
도 3은 본 발명의 일 실시예에 따른 실행흐름 측정 및 검증이 가능한 프로그램을 프로그램 사용자에게 배포하는 방법 중, 사전 과정인 스테이지 A(210), 스테이지 B(220) 및 스테이지 C(230) 과정의 순서도이다.
스테이지 A(210)의 과정에 참여하는 동작 주체는 바람직하게는 플랫폼 제작자(100)와 인증 기관(200)이다.
우선 플랫폼 제작자(100)에 의해 타겟 플랫폼(110)이 제작된다(S301).
상기 과정에서 상기 제작된 타겟 플랫폼(110)의 안전성을 높이기 위해 신뢰하는 처리 모듈(105)을 플랫폼에 내장시키는 방법을 이용할 수 있다. 또한 신뢰하는 처리 모듈(105)마다 서로 다른 유일한 키 정보를 내장하게 되는데, 내장되는 상기 키 정보는 바람직하게는 외부로 유출될 수 없도록 되어 있다. 또한 상기 안전하 게 내장되어 있는 키에 대응되는 타겟 플랫폼(110)의 바인딩용 키(120)가 외부에 존재하여 타겟 플랫폼(110)의 바인딩용 키(120)를 이용하여 소정의 정보를 신뢰하는 처리 모듈(105)에 바인딩시킬 수 있다.
상기 신뢰하는 처리 모듈(105)에 내장되어 있는 키와 이에 대응되는 외부에 존재하는 타겟 플랫폼(110)의 바인딩용 키(120)의 관계는 예를 들어 공개키 방식의 알고리즘에서 다루는 비밀키와 공개키 형식으로 매핑될 수 있다. 따라서 신뢰하는 처리 모듈(105)을 내장하는 타겟 플랫폼(110)은 신뢰하는 처리 모듈(105)에 내장된 키와 쌍을 이루는 타겟 플랫폼(110)의 바인딩용 키(120)를 이용하여 바인딩된 정보를 안전하게 이용할 수 있다.
이때, 신뢰하는 처리 모듈(105)로의 바인딩을 외부 개체가 이용할 수 있게 하기 위해서 신뢰하는 처리 모듈(105)에 내장되어 있는 키에 대응되는 타겟 플랫폼(110)의 바인딩용 키(120)를 (플랫폼) 인증 기관(200)에 등록한다(S311).
상기 등록된 타겟 플랫폼(110)의 바인딩용 키(120)는 인증 기관(200)에 의해 정당성 검증 절차를 거친 후 정당하다고 판명되는 경우 이를 입증하는 인증서를 발급받게 된다. 이후 타겟 플랫폼(110)의 바인딩용 키(120)을 이용해야 할 필요가 있는 개체는 인증 기관(200)에 요청을 하여 인증된 바인딩용 키(130)를 수신할 수 있다.
스테이지 B(220)의 과정에 참여하는 동작 주체는 바람직하게는 플랫폼 제작자(100)와 프로그램 사용자(400)이다. 상기 스테이지 B(220) 과정은 플랫폼 제작자(100)에 의해서 만들어진 타겟 플랫폼(110)이 프로그램 사용자(400)에게 공급되는 과정이다.
이를 위해서 프로그램 사용자(400)로부터 플랫폼 제작자(100)에게 타겟 플랫폼(110) 요청이 전달되고, 이에 대한 응답으로 타겟 플랫폼(110)이 전달된다(S321, S331).
이때, 스테이지 B(220) 과정이 일어나기 전에 공급되어야 할 대상인 타겟 플랫폼(110)를 제작하는 과정인 스테이지 A(210) 과정이 존재해야 한다는 것은 자명한 사실이다. 스테이지 B(220) 과정에서 타겟 플랫폼(110)가 공급되는 방식으로는 구입 또는 대여 등의 다양한 방법이 이용될 수 있다. 또한 플랫폼 제작자(100)로부터 프로그램 사용자(400)에게로 공급된 타겟 플랫폼(110)은 이후 프로그램 사용자(400)가 프로그램 제작자(300)로부터 공급받은 타겟 플랫폼(110)에 바인딩된 프로그램을 구동시키기 위한 장치로써 동작하게 된다.
스테이지 C(230)의 과정에 참여하는 동작 주체는 프로그램 제작자(300)로서, 프로그램 사용자(400)가 사용하기 위한 프로그램을 생성하고 상기 생성된 프로그램(코드)에 따라 실행흐름 측정 및 검증에 필요한 실행흐름 검증 정보(EFVI)를 생성하는 작업을 수행한다(S341, S351).
프로그램 코드는 복수개의 인스트럭션으로 구성되어 있는 데 프로그램이 실행된다는 것은 상기 인스트럭션들이 프로세서에서 정해진 순서대로 수행된다는 것을 의미한다. 또한 프로그램 제작자(300)가 설계한 대로 프로그램이 동작하는 지 검증하기 위해 프로그램의 실행흐름 측정을 하게 되며, 실행흐름 측정 대상이 되는 코드가 프로그램 내에 복수개로 존재하거나 특정 코드 부분만을 실행흐름 측정 대 상으로 할 수 있다.
먼저 실행흐름 검증 정보(EFVI)를 생성하는 작업을 위해 실행흐름 측정 및 검증을 고려하지 않은 기존의 일반적인 방법으로 사용자의 목적을 달성하기 위한 프로그램(코드)을 작성하고 프로그램 코드 중 실행흐름 측정을 위한 대상 구간(타겟)을 결정한 후, 상기 대상 구간에 대한 참조 실행흐름 측정 값(REFm; Reference Execution Flow Metric)을 생성한다. 참조 실행흐름 측정 값(REFm)을 생성하는 방법으로는 실행흐름 측정 및 검증을 위한 장치가 실제로 하드웨어로 구현된 프로세서를 이용하는 방법과 상기 실행흐름 측정 및 검증을 위한 장치를 에뮬레이션한 소프트웨어를 이용하는 방법 등이 사용될 수 있다. 참조 실행흐름 측정 값(REFm)에 관한 내용은 이하 도 9에 보다 상세히 후술되어 있다.
또한 프로그램의 기준 시작 지점으로부터 실행흐름 측정 종료 인스트럭션(MEND; End of Execution Flow Measurement)이 위치하는 곳까지의 거리로 계산된 상대적인 주소 값을 참조 MEND 인스트럭션 위치(REIP; Reference MEND Instruction Position) 정보로써 이용하도록 한다. 참조 MEND 인스트럭션 위치(REIP) 정보에 관한 내용은 이하 도 9에 보다 상세히 후술되어 있다.
상기 생성된 참조 실행흐름 측정 값(REFm)과 참조 MEND 인스트럭션 위치(REIP) 정보가 함께 측정 타겟 참조 정보(MTRI; Measurement Target Reference Information)를 구성하게 된다.
상기 측정 타겟 참조 정보(MTRI)는 프로세서에서 실행흐름 측정 및 검증 작업 수행 시 측정 타겟에 대한 실행흐름 측정 값의 정당성을 결정하고 실행흐름 측 정 자체가 안전하게 이루어질 수 있게 하는 데에 사용된다.
이와 같이 각각의 실행흐름 측정 타겟 각각에 대해 생성된 측정 타겟 참조 정보(MTRI)는 실행흐름 검증 정보(EFVI)의 일부로 포함된다. 실행흐름 검증 정보(EFVI) 및 측정 타겟 참조 정보(MTRI)와 관련해서 이하 도 8 및 도 9에서 보다 더 구체적으로 설명하기로 한다.
도 4는 본 발명의 일 실시예에 따른 실행흐름 측정 및 검증이 가능한 프로그램을 프로그램 사용자에게 배포하는 방법 중, 주 과정인 스테이지 D(240) 과정의 순서도이다.
스테이지 D(240)의 과정에 참여하는 동작 주체는 프로그램 사용자(400)를 비롯해서 프로그램 제작자(300)와 인증 기관(200)이다. 우선 스테이지 D(240) 과정은 세 단계(a, b, c)로 구성될 수 있다.
첫 번째 단계(a)는 프로그램 사용자(400)와 프로그램 제작자(300)간 상호 인증하는 과정에 관련된 단계로써 사용자 가입 및 인증 패스(User Subscription and Authentication Pass) 메시지(‘제 1메시지’) 생성 및 전달하는 단계(S401), 인증된 바인딩용 키 요청(Request of Platform Binding Key) 단계(S411), 인증된 바인딩용 키 응답(Response of Platform Binding Key) 단계(S421) 및 인증 패스(Authentication Pass)메시지(‘제 2메시지’) 생성 및 전달(S431)하는 단계를 포함한다.
두 번째 단계(b)는 프로그램 제작자(300)가 실행흐름 검증 정보(EFVI)를 타겟 플랫폼(110)에 바인딩하는 단계(S441) 및 상기 바인딩된 실행흐름 검증 정보 (EFVI)를 프로그램 사용자(400)에게 배포할 프로그램에 내장(결합)시키는 단계(S451)를 포함한다.
세 번째 단계(c)는 타겟 플랫폼(110)에 바인딩된 프로그램을 프로그램 사용자(400)에게 전달하는 프로그램 배포(Program Distribution)(S461) 단계로 구성된다.
이때, 프로그램 사용자(400)가 프로그램 제작자(300)에게 제공하는 정보에 따라서 인증된 바인딩 키 요청 및 인증된 바인딩 키 응답의 단계(S411, S421)는 생략될 수 있다.
이하 상기 단계(a,b,c)에 대해 보다 상세히 후술하기로 한다.
상기 첫 번째 단계(a)에서 먼저 프로그램 사용자(400)는 사용자 가입 및 인증 패스(a) 메시지(500)를 생성하고 프로그램 제작자(300)로 전달한다(S401).
사용자 가입 및 인증 패스(a) 메시지(500)가 프로그램 사용자(400)로부터 프로그램 제작자(300)로 전달되면, 프로그램 제작자는 제 1인증 정보(508)(즉 타겟 플랫폼(110) 서명 키로 서명된 메시지(500) 자체에 대한 전자서명 및 관련 정보)를 이용해서 메시지 자체의 무결성 및 메시지 송신자인 프로그램 사용자(400)에 대한 신원 인증을 한 후에 이상이 없으면 타겟 플랫폼 식별자(504) 정보를 이용하여 타겟 플랫폼(110)의 인증된 바인딩용 키(130)를 인증 기관에 요청하게 된다(S411).
상기 요청에 대한 응답으로 인증 기관(200)으로부터 타겟 플랫폼(110)의 인증된 바인딩용 키(130)를 응답(수신)받은 후, 프로그램 제작자(300)는 인증된 바인딩용 키(130)를 이용하여 인증 패스(b) 메시지(600)를 구성하여 프로그램 사용자 (400)에게 전달한다(S421, S431).
사용자 가입 및 인증 패스(a) 메시지(500)의 구성 및 인증 패스(b) 메시지(600)의 구성은 이하 도 5 및 도 6에서 후술하기로 한다.
인증 패스(b) 메시지(600)를 전달받은 프로그램 사용자(400)는 인증 패스(b) 메시지(600)에 포함된 제 2인증 정보(604)(즉 프로그램 제작자(300)의 서명 키로 서명된 메시지(600)에 대한 전자서명 및 관련 정보)를 이용해서 전달 받은 메시지(600) 자체의 무결성 및 정당성을 확인한 후, 이하 도 7에서 후술될 챌린지 값 처리를 통해 통신했던 상대가 프로그램 제작자(300)가 맞는지(신원 인증)를 판별하게 된다. 따라서 프로그램 사용자(400)와 프로그램 제작자(300) 간의 상호 인증 과정을 종료하게 된다.
이때, 상호 인증이라 함은 프로그램 사용자(400)는 프로그램 제작자(300) 개체의 신원을 인증하고, 프로그램 제작자(300)는 프로그램 사용자(400)가 가지고 있는 타겟 플랫폼(110)를 인증한다는 것을 의미한다. 즉, 이를 통해 프로그램 사용자(400)는 자신이 정당한 프로그램 제작자(300)와 통신하고 있다는 것을 확신할 수 있으며, 프로그램 제작자(300)는 타겟 플랫폼(110)에 바인딩된 프로그램을 해당 타겟 플랫폼(110)의 소유자에게 전달했음을 확신할 수 있게 된다.
이때, 사용자 가입 및 인증 패스(a) 메시지(500) 내의 기타 정보(510) 내에 타겟 플랫폼(110)의 인증된 바인딩용 키(130) 및 이를 인증하는 데에 필요한 관련 데이터들을 묶어서 보내게 되면 플랫폼 바인딩 키 요청 과정(S411)과 이에 대한 플랫폼 바인딩 키 응답 과정(S421)이 생략 가능하다.
상기 두 번째 단계(b)에서 프로그램 제작자(300)가 타겟 플랫폼(110)에 프로그램을 바인딩 작업을 거치는 데, 첫 번째 단계(a)의 상호 인증 과정이 성공적으로 종료되면, 프로그램 제작자(300)가 사전 과정의 스테이지 C(230)에서 생성했던 실행흐름 검증 정보(EFVI)를 타겟 플랫폼(110)의 인증된 바인딩용 키(130)를 이용하여 타겟 플랫폼(110)에 바인딩하는 과정(EFVI 바인딩)과 상기 바인딩된 실행흐름 검증 정보(EFVI)를 프로그램 사용자(400)에게 배포할 프로그램에 결합(내장)시키는 과정(EFVI를 포함한 프로그램 패키징)을 수행한다(S441, S451).
따라서 프로그램 사용자(400)에게 배포할 타겟 플랫폼(110)에 바인딩된 프로그램이 생성되게 된다.
상기 세 번째 단계(c)에서 상기 생성된 타겟 플랫폼(110)에 바인딩된 프로그램을 프로그램 사용자(400)에게 배포한다(S461).
해당 과정에서 해당 사용자에게 프로그램을 안전하게 전달할 수 있도록 하기 위해 전달될 바인딩된 프로그램의 무결성 검증이 가능하도록 전자서명을 수행한 후 상기 서명 값과 바인딩된 프로그램에 대해 타겟 플랫폼(110)의 인증된 바인딩용 키(130)로 암호화를 한 후 프로그램 사용자(400)에게 전달할 수도 있다. 이와 같은 방법을 통해 프로그램 제작자(300)로부터 프로그램 사용자(400)에게 바인딩된 프로그램이 전달되는 동안 일어날 수 있는 다양한 형태의 공격을 차단할 수 있게 된다.
상기 단계들을 순차적으로 수행함으로써 소프트웨어를 프로그램 사용자에게 안전하게 배포할 수 있게 된다.
도 5는 본 발명의 일 실시예에 따른 인증 패스(a) 메시지(500)를 도시한다.
사용자 가입 및 인증 패스(a) 메시지(500)(‘제 1메시지’)는 프로그램 사용자(400)가 생성하게 되며, 프로그램 사용자(400)가 이용하고자 하는 프로그램을 식별하는 정보인 프로그램 식별자(502), 프로그램이 구동될 타겟 플랫폼(110)을 식별하는 정보인 타겟 플랫폼 식별자(504), 소정의 암호화된 챌린지 값(CV1’)(506), 프로그램 사용자(400)의 신원 인증 및 메시지 무결성을 제공하기 위한 목적으로 만들어지는 제 1인증 정보(508)(즉 타겟 플랫폼(110) 서명 키로 서명된 메시지(500) 자체에 대한 전자서명 및 관련 정보), 기타 정보(510)로 구성되는 것을 특징으로 한다.
이때, 암호화된 챌린지 값 CV1’(506)은 이하 도 7에서 설명하고 있는 방법대로 프로그램 사용자(400)가 생성한 챌린지 값 CV1(706)이 공개키(700a)로 암호화(707)된 챌린지 값 CV1’(708)을 의미한다.
도 6은 본 발명의 일 실시예에 따른 인증 패스(b) 메시지(600)를 도시한다.
인증 패스(b) 메시지(600)(‘제 2메시지’)는 프로그램 제작자(300)가 생성하게 되며, 암호화된 챌린지 값 CV1’’(602)과 제 2인증 정보(604)(즉 프로그램 제작자(300)의 서명 키로 서명된 상기 메시지(600)에 대한 전자서명 및 관련 정보), 기타 정보(606)를 포함하는 것을 특징으로 한다. 이때, 암호화된 챌린지 값 CV1’’(602)은 이하 도 7에서 설명하고 있는 방법대로 암호화된 챌린지 값 CV1’(708)을 받아서 프로그램 제작자(300)가 복호화(709)한 결과인 챌린지 값 CV1(710)을 다시 인증된 타겟 플랫폼 바인딩 키를 이용(700c)하여 암호화(711)시킨 결과인 암호화된 챌린지 값 CV1’’(712)을 의미한다.
도 7은 본 발명의 일 실시예에 따른 챌린지 값 처리를 도시한다.
챌린지 값은 프로그램 사용자(400)와 프로그램 제작자(300) 간의 상호 인증을 위한 과정에서 중요한 역할을 수행한다. 챌린지 값과 관련된 처리는 크게 세 단계(e,f,g)로 나누어질 수 있는데, 첫 번째 단계(e)로 프로그램 사용자(400) 측에서 챌린지 값을 생성하는 단계와 두 번째 단계(f)로 프로그램 사용자(400) 측에서 챌린지 값을 프로그램 제작자(300)의 공개키(700a)(비밀키(700b)와 대응)를 이용하여 암호화 한 후 프로그램 제작자(300)에게 전달하는 단계와 세 번째 단계(g)로 프로그램 사용자(400) 측으로부터 전달받은 암호화된 챌린지 값을 프로그램 제작자(300) 측에서 복호화(709)한 후, 상기 복호화된 챌린지 값을 다시 프로그램 제작자(300)의 인증된 바인딩용 키(130)로 암호화(711)한 후 프로그램 사용자(400)에게 전달하는 단계의 세 부분으로 구분된다.
이하 각 단계별로 보다 더 상세히 설명하기로 한다.
상기 첫 번째 단계(e)에서, 프로그램 사용자(400) 측에서 난수 생성 과정(701)을 통해 얻어진 난수 값(702)과 타임 스탬프 생성(703) 과정을 통해 얻어진 타임 스탬프(704)를 이용하여 챌린지 값 생성(705) 과정을 통해서 챌린지 값 CV1(706)를 생성한다. 이때, 필요한 경우 챌린지 값 생성(705) 과정 중에 소정의 키(Key-1)(710) 정보를 추가적으로 이용할 수도 있다.
상기 두 번째 단계(f)에서, 상기 첫 번째 단계(e)에서 얻어진 챌린지 값 CV1(706)을 프로그램 제작자(300)의 공개키(700a)를 이용하여 암호화(707)한 후 암호화된 챌린지 값 CV1’(708)을 프로그램 제작자(300) 측으로 전달한다.
상기 세 번째 단계(g)에서, 프로그램 제작자(300)는 전달받은 암호화된 챌린지 값 CV1’(708)을 프로그램 제작자(300)의 비밀키(700b)를 이용하여 복호화(709)하여 원래의 챌린지 값 CV1(710)을 얻어낸다. 또한 프로그램 제작자(300)가 가지고 있는 타겟 플랫폼(110)의 인증된 바인딩용 키를 이용(700c)하여 암호화(711)된 챌린지 값 CV1’’(712)을 프로그램 사용자(400) 측으로 전달하게 된다.
상기한 바와 같이 프로그램 사용자(400)와 프로그램 제작자(300) 간의 챌린지 값을 주고받는 단계를 수행하고 난 후, 프로그램 사용자(400)는 프로그램 제작자(300)로부터 전달받은 암호화된 챌린지 값 CV1’’(712)을 타겟 플랫폼의 바인딩용 키에 대응되는 신뢰하는 처리 모듈(105)에 내장되어 있는 키를 이용(700d)하여 복호화(713)한 후, 그 결과로 얻어지는 챌린지 값 CV1(714)을 원래 프로그램 사용자가 생성해서 가지고 있던 챌린지 값 CV1(706)와 비교하여 상기 프로그램 제작자(300)와 통신했던 것인지를 확인할 수 있게 된다.
도 8은 본 발명의 일 실시예에 따른 실행흐름 검증 정보(EFVI)의 구성을 도시한다.
프로그램 코드는 복수개의 인스트럭션으로 구성되어 있는 데 프로그램이 실행된다는 것은 상기 인스트럭션들이 프로세서에서 정해진 순서대로 수행된다는 것을 의미한다. 또한 프로그램 제작자(300)가 설계한 대로 프로그램이 동작하는 지 검증하기 위해 프로그램의 실행흐름 측정을 하게 되며, 실행흐름 측정 대상이 되는 코드가 프로그램 내에 복수개로 존재하거나 특정 코드 부분만을 실행흐름 측정 대상으로 할 수 있다. 이를 위해 상기 생성된 프로그램에 따라 실행흐름 측정 및 검 증에 필요한 실행흐름 검증 정보(EFVI; Execution Flow Verification Information)를 생성하여 프로그램에 내장하고, 실행흐름 검증 정보(EFVI)를 프로그램이 구동될 타겟 플랫폼(110)에 바인딩시켜 프로그램 사용자(400)의 타겟 플랫폼(110)에서 구동되는 상기 프로그램의 실행흐름 측정 및 검증 작업이 안전하게 수행되는 것을 보장한다.
실행흐름 검증 정보(EFVI)(800)는 일반적으로 메모리나 하드디스크 등의 프로세서 외부에 있을 때에는 암호화된 형태로 존재하지만 신뢰하는 처리 모듈(105)에서 복호화된 후 프로세서 내부로 안전하게 전달된 다음에는 프로세서 내의 EFVI 저장소에 저장되게 된다.
실행흐름 측정 및 검증(EFMV; Execution Flow Measurement and Verification)의 안전한 동작을 보장하기 위해서 EFVI(800)는 EFVI 버전(802), 체크섬 계산에 필요한 부가 정보들(804), MTRI의 개수(806) 및 MTRI 집합체(808)를 포함한다. 여기서 EFVI 버전(802), 체크섬 계산에 필요한 부가 정보들(804) 및 MTRI의 개수(806)는 EFVI 헤더 정보이며, MTRI 집합체(808)는 MTRI가 복수개로 구성된 데이터 집합체이다.
EFVI 버전(802) 정보는 EFVI(800) 구조의 형태 및 그 사용 방법을 결정하는 정보로서, 서로 다른 포맷들을 유일하게 식별할 수 있게 하는 적절한 값을 사용한다.
체크섬 계산에 필요한 부가 정보들(804)은 실행흐름 측정 및 검증 (EFMV) 관련 복수개(예를 들어 7개)의 인스트럭션을 제외한 일반 인스트럭션의 체크섬 계산 에 필요한 정보들로서, 구체적인 체크섬 계산 메커니즘에 따라 적절한 정보가 포함되어야 한다.
MTRI의 개수(806) 정보는 현재 EFVI(800)에 포함되어 있는 MTRI의 개수를 나타낸다.
또한 MTRI 집합체(808)는 MTRI 개수(806) 만큼의 MTRI가 복수개로 구성되어 있으며, 측정 타겟 참조 정보(MTRI)의 구성은 이하 도9에서 후술하기로 한다.
도 9는 본 발명의 일 실시예에 따른 측정 타겟 참조 정보(MTRI)의 구성을 도시한다.
측정 타겟 참조 정보(MTRI)(900)는 현재 실행흐름 측정 타겟(EFMT; Execution Flow Measurement Target)에 대한 REFm(참조 실행흐름 측정 값)(902)과 현재 실행흐름 측정 타겟에 대한 REIP(참조 MEND 인스트럭션 위치)(904) 정보를 포함하고 있다.
프로그램이 프로그램 제작자(300)가 설계한대로 동작하는지 검증하기 위해 프로그램의 실행흐름(EF; Execution Flow)을 측정하는 방법을 이용할 수 있는 데, 이때 프로그램 전체에 대해 실행흐름을 측정하거나 프로그램의 소정의 코드 부분만을 측정할 수 있다. 또한 실행흐름 측정의 대상이 되는 소정의 코드 부분이 프로그램 내에 복수개로 존재할 수 있다.
한편, 실행흐름 측정 타겟은 프로그램 코드의 실행흐름을 측정하기 위한 프로그램 코드의 실행흐름 측정 대상 코드(구간) 부분이다. 또한 실행흐름 측정 타겟은 복수개의 인스트럭션으로 구성되어 있는 데, 프로그램이 실행된다는 것은 상기 인스트럭션이 프로세서에서 정해진 순서대로 수행된다는 것을 의미한다. 이와 같은 실행흐름 측정 동작을 통해 프로세서에서 수행되는 일련의 인스트럭션에 대한 체크섬 체인닝(chaining)(즉 체크섬을 연쇄시키는 것을 의미)을 하게 되고, 지정된 인스트럭션 구간에 대한 인스트럭션 체크섬 결과값(REFm)을 생성되게 된다.
상기 실행흐름 측정 타겟에 대한 REFm(902)은 실행흐름 검증(EFV; Execution Flow Verification)시 기준 자료로 사용될 해당 실행흐름 측정 타겟의 인스트럭션 체크섬 결과 값이다. 이러한 체크섬 결과 값은 인스트럭션 자체의 값뿐만 아니라 인스트럭션들의 실행 순서까지 반영한 정보가 된다.
상기 실행흐름 측정 타겟에 대한 REIP(904)는 프로그램 내에서 MEND 인스트럭션의 위치를 나타내기 위한 상대적인 주소 값으로 프로그램 시작 주소로부터 MEND 인스트럭션까지의 거리 값으로 계산된다. 특히 REIP(904)의 존재 이유는 프로그램 코드에 악의적인 변경이 가해져서 실행흐름 측정 및 검증(EFMV; Execution Flow Measurement and Verification) 관련 인스트럭션의 위치가 변경되거나 삭제되는 등의 경우에 이를 발견할 수 있게 하기 위함이다.
상기 REFm(902)과 REIP(904) 정보가 묶여서 하나의 MTRI(900)를 이루게 되며, 이렇게 만들어진 각 MTRI(900)는 프로그램 내에 존재하는 각각의 실행흐름 측정 타겟에 일대일로 대응된다.
도 10은 본 발명의 일 실시예에 따른 암호화된 실행흐름 검증 정보(EFVI)를 포함한 프로그램의 구성을 도시한다.
타겟 플랫폼에 실행흐름 검증 정보(EFVI)를 바인딩하기 위해 지정된 타겟 플 랫폼만이 복호화할 수 있도록 인증된 바인딩용 키(130)를 통해 암호화된 EFVI(1114)로 프로그램 내에 내장한다. 즉 타겟 플랫폼내 신뢰하는 처리 모듈(105)을 통해서 복호화되어 EFVI가 사용될 수 있도록 암호화한 후 프로그램 사용자(140)의 지정 타겟 플랫폼으로 전달하게 된다.
암호화된 실행흐름 검증 정보(EFVI)를 포함한 프로그램은 프로그램에 대한 메타 정보를 포함하고 있는 프로그램 헤더(1100) 및 실제로 수행되어야 할 코드를 포함하고 있는 프로그램 코드(1200)로 구성된다. 또한 프로그램 헤더(1100)는 다시 보호된 EFVI(1110)와 이외의 기타 정보(1120)로 구성되어 있다. 실행흐름 측정 및 검증 기술이 적용되지 않은 기존 프로그램의 헤더가 담고 있던 여러 메타 정보들은 기타 정보(1120) 부분에 저장된다.
또한 보호된 EFVI(1110) 부분은 다시 암호화된 EFVI용 헤더(1112)과 암호화된 EFVI(1114)로 구성되어 있다. 실제로 실행흐름 측정 및 검증 기능의 수행을 위해 필요한 정보인 EFVI를 보호하기 위해서 안전한 방식으로 암호화를 한 것이 암호화된 EFVI(1114)이고, 상기 정보를 프로세서에서 사용하기 위해서는 복호화가 필요하다. 이때, 복호화를 위한 정보가 암호화된 EFVI용 헤더(1112)이다. 상기 암호화된 EFVI용 헤더(1112)는 신뢰하는 처리 모듈(105)에서 복호화하여 프로세서로 전달된다.
실행흐름 측정 및 검증의 대상 프로그램은 해당 EFVI를 생성해서 프로그램에 포함시켜야 한다. 이를 위해서는 우선 프로그램 자체를 작성한 후, 프로그램에서 실행흐름의 측정 및 검증을 원하는 부분에 실행흐름 측정 및 검증 관련 인스트럭션 을 삽입하여 실제로 측정한 값인 참조 실행 흐름 측정 값(REFm)을 얻어내는 작업이 필요하다.
상기 작업을 거쳐서 실행흐름 측정 및 검증 관련 인스트럭션의 파라미터 값을 설정한 후 프로그램 코드(1200)에 삽입하고, EFVI에 필요한 정보를 산출하여 EFVI를 구성한 다음에는 EFVI를 안전하게 보호하기 위한 절차로서 적절한 암호화 키와 적절한 암호화 알고리즘으로 EFVI를 암호화시켜 암호화된 EFVI(1114)를 생성한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상기한 바와 같은 본 발명의 실행흐름 측정 및 검증이 가능한 프로그램의 배포 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
첫째, 프로그램 제작자가 정상적으로 등록된 프로그램 사용자의 타겟 플랫폼에서 구동되기 위한 프로그램을 안전하게 배포할 수 있는 장점이 있다.
둘째, 프로그램 사용자가 정당한 프로그램 제작자로부터의 안전한 프로그램 배포를 보장받을 수 있는 장점도 있다.
셋째, 프로그램 배포 과정에서 일어날 수 있는 프로그램의 변조 여부를 알아 낼 수 있는 장점도 있다.

Claims (5)

  1. 타겟 플랫폼을 제작하는 플랫폼 제작자가 상기 타겟 플랫폼의 바인딩용 키를 인증 기관에 등록하는 단계;
    상기 타겟 플랫폼에서 소정 프로그램을 구동시킬 프로그램 사용자가 제 1 메시지를 생성하여 프로그램 제작자에게 전송하는 단계;
    상기 프로그램 제작자가 상기 제 1 메시지를 이용하여 상기 프로그램 사용자의 정당성 유무를 검증하는 단계;
    상기 프로그램 사용자가 정당한 사용자일 경우, 상기 프로그램 제작자가 상기 바인딩용 키를 상기 인증 기관에 요청하는 단계;
    상기 인증 기관이 상기 바인딩용 키를 상기 프로그램 제작자에게 전송하는 단계;
    상기 프로그램 제작자가 상기 바인딩용 키를 이용하여 제 2 메시지를 생성하여 상기 프로그램 사용자에게 전송하는 단계;
    상기 프로그램 사용자가 상기 제 2 메시지를 이용하여 상기 프로그램 제작자의 정당성 유무를 검증하는 단계;
    상기 프로그램 제작자가 상기 바인딩용 키를 이용하여 상기 타겟 플랫폼에서 구동될 프로그램의 동작이 정상적으로 이루어지는 지를 검증하기 위한 실행흐름 검증 정보를 암호화하여 상기 실행흐름 검증 정보를 포함한 프로그램을 제작하는 단계; 및
    상기 프로그램 제작자가 상기 프로그램을 상기 프로그램 사용자에게 배포하는 단계를 포함하는, 실행흐름 측정 및 검증이 가능 한 프로그램 배포 방법.
  2. 제 1항에 있어서,
    상기 제 1 메시지는 상기 프로그램을 식별하는 정보, 상기 프로그램이 구동될 상기 타겟 플랫폼을 식별하는 정보, 및 상기 프로그램 사용자의 신원 인증과 상기 제 1 메시지 자체의 무결성을 제공하기 위한 제 1 인증 정보 중 적어도 하나를 포함하는, 실행흐름 측정 및 검증이 가능한 프로그램 배포 방법.
  3. 제 2항에 있어서,
    상기 프로그램 제작자가 상기 바인딩용 키를 상기 인증 기관에 요청하는 단계는,
    상기 프로그램 제작자가 상기 타겟 플랫폼을 식별하는 정보를 이용하여 상기 타겟 플랫폼에 대응되는 상기 바인딩용 키를 상기 인증 기관에 요청하는, 실행흐름 측정 및 검증이 가능 한 프로그램 배포 방법.
  4. 제 3항에 있어서,
    상기 제 2 메시지는 상기 프로그램 제작자의 신원 인증 및 상기 제 2 메시지 자체의 무결성을 제공하기 위한 제 2인증 정보를 포함하는, 실행흐름 측정 및 검증이 가능한 프로그램 배포 방법.
  5. 제 2항에 있어서,
    상기 실행흐름 검증 정보는 상기 바인딩용 키에 대응되는 상기 타겟 플랫폼내의 처리 모듈에 의해 복호화되는, 실행흐름 측정 및 검증이 가능한 프로그램 배포 방법.
KR1020060018292A 2006-02-24 2006-02-24 실행흐름 측정 및 검증이 가능한 프로그램 배포 방법 KR100834754B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060018292A KR100834754B1 (ko) 2006-02-24 2006-02-24 실행흐름 측정 및 검증이 가능한 프로그램 배포 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060018292A KR100834754B1 (ko) 2006-02-24 2006-02-24 실행흐름 측정 및 검증이 가능한 프로그램 배포 방법

Publications (2)

Publication Number Publication Date
KR20070088107A KR20070088107A (ko) 2007-08-29
KR100834754B1 true KR100834754B1 (ko) 2008-06-05

Family

ID=38613843

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060018292A KR100834754B1 (ko) 2006-02-24 2006-02-24 실행흐름 측정 및 검증이 가능한 프로그램 배포 방법

Country Status (1)

Country Link
KR (1) KR100834754B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102053573B1 (ko) 2019-03-06 2019-12-09 최승길 보조 열원 기반의 지열 냉난방 시스템 및 방법
KR102013099B1 (ko) 2019-03-06 2019-11-05 최승길 하이브리드 지열 냉난방 시스템
KR102053572B1 (ko) 2019-03-06 2019-12-09 최승길 폐열 회수 장치 기반의 하이브리드 지열 냉난방 시스템 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040048161A (ko) * 2002-12-02 2004-06-07 에스케이 텔레콤주식회사 무선통신망에서의 부가단말기를 위한 drm 적용 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040048161A (ko) * 2002-12-02 2004-06-07 에스케이 텔레콤주식회사 무선통신망에서의 부가단말기를 위한 drm 적용 방법

Also Published As

Publication number Publication date
KR20070088107A (ko) 2007-08-29

Similar Documents

Publication Publication Date Title
CN107566116B (zh) 用于数字资产确权登记的方法及装置
KR100912276B1 (ko) 하드웨어 식별에 기초한 디지털권 관리 방법을 이용한 전자소프트웨어 배포 방법 및 시스템
CN101145906B (zh) 对单向网络中的接收终端进行合法性认证的方法及系统
CN101447008B (zh) 一种数字内容网络版权管理系统和方法
CN103685138B (zh) 移动互联网上的Android平台应用软件的认证方法和系统
TWI454111B (zh) 用於確保通訊之鑑別及完備性的技術
KR100362219B1 (ko) 변조방지 프로세서를 이용하여 프로그램을 분배하기 위한방법 및 시스템
US8966248B2 (en) Secure software file transfer systems and methods for vehicle control modules
US20060064756A1 (en) Digital rights management system based on hardware identification
US8683214B2 (en) Method and device that verifies application program modules
US20110299679A1 (en) Controller, control method, computer program, recording medium for computer program, recording apparatus, and manufacturing method for recording apparatus
JPH11231775A (ja) 条件付き認証装置および方法
EP3025235B1 (en) Anti-piracy protection for software
US20130173923A1 (en) Method and system for digital content security cooperation
EP2340631A1 (en) Method and system for controling code execution on a computing device using recursive security protocol
JP2007072608A (ja) 機器情報送信プログラム、サービス制御プログラム、機器情報送信装置、サービス制御装置および機器情報送信方法
US20120096560A1 (en) Method and a Device for Protecting Private Content
CN101160915A (zh) 一种在数字版权管理中实现准确计费的方法及装置
KR100834754B1 (ko) 실행흐름 측정 및 검증이 가능한 프로그램 배포 방법
JP5278495B2 (ja) 機器情報送信方法、機器情報送信装置、機器情報送信プログラム
CN117436043A (zh) 待执行文件的来源验证方法、设备以及可读存储介质
JP2021007053A (ja) コンテンツ送信方法
JPH1124916A (ja) ソフトウェアライセンス管理装置および方法
CN115168811B (zh) 一种软件防破解方法及装置
JP2015135703A (ja) デジタル著作権制御用再帰的セキュリティプロトコルのための方法およびシステム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee