[go: up one dir, main page]

KR101085365B1 - Computer-implemented methods and systems for embedding and authenticating supplemental information in digitally signed content - Google Patents

Computer-implemented methods and systems for embedding and authenticating supplemental information in digitally signed content Download PDF

Info

Publication number
KR101085365B1
KR101085365B1 KR1020107004137A KR20107004137A KR101085365B1 KR 101085365 B1 KR101085365 B1 KR 101085365B1 KR 1020107004137 A KR1020107004137 A KR 1020107004137A KR 20107004137 A KR20107004137 A KR 20107004137A KR 101085365 B1 KR101085365 B1 KR 101085365B1
Authority
KR
South Korea
Prior art keywords
executable file
delete delete
computer
digital signature
digital
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020107004137A
Other languages
Korean (ko)
Other versions
KR20100037160A (en
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 로비 솔루션스 코포레이션
Publication of KR20100037160A publication Critical patent/KR20100037160A/en
Application granted granted Critical
Publication of KR101085365B1 publication Critical patent/KR101085365B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

디지털적으로 서명된 콘텐츠에서 보조 정보를 임베딩 및 인증하는 컴퓨터-구현된 시스템 및 방법이 개시된다. 상기 방법 및 시스템은, 실행을 위해 상기 디지털적으로 서명된 실행 파일을 포함하는 디지털 콘텐츠를 메모리에 로딩하면서, 디지털적으로 서명된 실행 파일의 디지털 서명 및 콘텐츠의 무결성에 대해 검사하는 단계, 및 비인증된 영역들에 대응하는 메모리 위치들을 삭감 또는 값을 채움으로써 상기 디지털 콘텐츠의 임의의 비인증된 영역들을 소거하는 단계를 포함한다. Disclosed are a computer-implemented system and method for embedding and authenticating supplemental information in digitally signed content. The method and system checks for digital signature of the digitally signed executable file and the integrity of the content, while loading digital content including the digitally signed executable file into memory for execution, and non-authentication. Erasing any unauthorized regions of the digital content by reducing or filling in memory locations corresponding to the encrypted regions.

Figure R1020107004137
Figure R1020107004137

Description

디지털적으로 서명된 콘텐츠에서 보조 정보를 임베딩 및 인증하기 위한 컴퓨터-구현된 방법 및 시스템{A COMPUTER-IMPLEMENTED METHOD AND SYSTEM FOR EMBEDDING AND AUTHENTICATING ANCILLARY INFORMATION IN DIGITALLY SIGNED CONTENT} COMPATER-IMPLEMENTED METHOD AND SYSTEM FOR EMBEDDING AND AUTHENTICATING ANCILLARY INFORMATION IN DIGITALLY SIGNED CONTENT}

본 발명은 디지털 콘텐츠의 분배에 관한 것이다. 보다 상세하게는, 본 발명은 디지털적으로 서명된 콘텐츠(digitally signed content)에서 보조 정보를 임베딩(embedding) 및 인증(authenticating)하는 것에 관한 것이다. The present invention relates to the distribution of digital content. More specifically, the present invention relates to embedding and authenticating supplemental information in digitally signed content.

디지털 분배의 출현은 인터넷을 통해 소프트웨어를 전달하는 새로운 사업 모델들을 창조하였다. "시험 사용 후 구매(try and buy)" 디지털 분배 모델에서, 소비자들은 구매를 결정하기 전에 "시험 사용 후 구매" 소프트웨어 버전들을 샘플링할 수 있다. 그러한 "시험 사용 후 구매" 버전들은, 구매 후에 잠금이 풀리는 실행 가능한 소프트웨어의 잠금 버전들로 구성된다. 일반적인 시나리오에서, 최종-사용자 또는 잠재적인 소비자는 자유롭게 이용 가능한 "시험 사용 후 구매" 소프트웨어 애플리케이션(이하, 인스톨러(installer))을 발행자 웹사이트 또는 범용 웹 포털들(예를 들면, www.download.com, www.yahoo.com 등, 이하 포털들)로부터 다운로딩할 수 있다. 통상적으로, "시험 사용 후 구매" 인스톨러들을 다운로딩 및 설치하는 사용자들 중 몇 퍼센트는, 소프트웨어 제품의 완전한 버전을 획득하기 위해 상기 소프트웨어(또는 서비스들 또는 그와 연관된 가입들)를 구매한다. 이와 같이, 소프트웨어 제작자들은 최종-사용자들에 의한 다운로드를 위해 "시험 사용 후 구매" 소프트웨어를 이용 가능하도록 장려하였다. 소프트웨어 제작자들은 최종 사용자들이 다운로딩하도록 그들 자신의 웹사이트들 상에 그러한 "시험 사용 후 구매" 버전들을 배치함으로써 그렇게 하고 있다. 또한, 소프트웨어 제작자들은, 소프트웨어 제작자들에 의해 반드시 제어되지는 않는 포털들을 통해 이러한 인스톨러들을 분배할 수 있다. 소프트웨어 발행자들에 대한 "시험 사용 후 구매" 사업 모델 이면의 동기는, 소비자가 "시험 사용 후 구매" 소프트웨어를 구매할 때 그들이 보상받는다는 사실에 있다. 또한, 포털들은, "시험 사용 후 구매" 인스톨러들이 포털 사이트들로부터 다운로딩되고 수익을 생성할 때, 포털들이 보상을 받도록 소프트웨어 제작자들, 발행자들, 또는 웹사이트 회사들(aggregator)과 사업 거래를 합의한다. 통상적으로, 포털들은 소비자에 의해 지불된 가격의 수익을 공유한다. The advent of digital distribution has created new business models for delivering software over the Internet. In the "try and buy" digital distribution model, consumers can sample "trial and buy" software versions before making a purchase decision. Such "trial-and-purchase" versions consist of locked versions of executable software that are unlocked after purchase. In a typical scenario, an end-user or potential consumer may use a freely available "Try and Buy" software application (hereinafter referred to as an installer) to a publisher's website or general purpose web portals (eg www.download.com). , www.yahoo.com, etc., below portals). Typically, a few percent of users downloading and installing "Try and Buy" installers purchase the software (or services or subscriptions associated with it) to obtain a complete version of the software product. As such, software authors have encouraged the availability of "Try and Buy" software for download by end-users. Software makers are doing so by placing such "Try and Buy" versions on their own websites for end users to download. In addition, software producers can distribute these installers through portals that are not necessarily controlled by the software producers. The motivation behind the "Try and Buy" business model for software publishers lies in the fact that they are rewarded when consumers purchase "Try and Buy" software. In addition, portals may conduct business transactions with software producers, publishers, or website aggregators to ensure that portals are rewarded when "trial-and-purchase" installers are downloaded from portal sites and generate revenue. Agree. Typically, portals share the revenue of the price paid by the consumer.

"시험 사용 후 구매" 인스톨러들은 최종 사용자들이 소프트웨어 애플리케이션의 완전한 버전을 구매하기 위한 수단을 포함한다. 구매 거래의 일부로서, 최종-사용자들은 온라인 구매 거래에서 다양한 단계들을 수행하도록 지시를 받는다. 그러한 지시들은, 예를 들면, 1) 예를 들면, 우체국 사서함 xyz에 수표를 전송하고, 소프트웨어 애플리케이션의 완전한 버전을 획득하기 위해 지시들을 수신하는 경제적 거래를 완료하기 위한 텍스트 디스크립션들, 2) 온라인 전자 상거래들을 수행하기 위한 지시들 또는 수단(예를 들면, 신용 카드 지불들)을 포함하는 URL, 3) 애플리케이션 그 자체에 내장된 구매 메카니즘, 4) 소프트웨어 애플리케이션의 래퍼(wrapper)에 내장된 구매 메카니즘, 또는 5) 이들 지시들의 임의의 조합을 포함할 수 있다. 동일한 소프트웨어 제품이 정상적으로 다수의 분배 네트워크들(예를 들면, 다수의 포털들)을 통해 분배되기 때문에, 어떠한 분배 네트워크가 특정 구매를 담당했었는지의 추적 방법이 요구된다. 어떠한 분배 네트워크가 특정 구매를 담당하였는지를 결정하는 하나의 방법은 소프트웨어 제품의 추적 가능한 버전들을 생성하는 것이다. 추적 가능한 버전들을 생성하는 하나의 방법은, 구매 지시들에서 분배 네트워크를 식별하기 위한 정보를 포함하는 상이한 인스톨러들을 생성하는 것으로 구성된다. 예를 들면, 소프트웨어 제품은 특정 분배 네트워크를 식별하는 값을 포함하는 구매 URL, 예를 들면, "Try and Buy" installers include a means for end users to purchase a complete version of a software application. As part of a purchase transaction, end-users are instructed to perform various steps in the online purchase transaction. Such instructions may include, for example, 1) text descriptions for completing an economic transaction, for example, sending a check to the post office mailbox xyz and receiving instructions to obtain a complete version of the software application, 2) online electronics. A URL containing instructions or means (eg, credit card payments) for performing commerce, 3) a purchase mechanism embedded in the application itself, 4) a purchase mechanism embedded in a wrapper of the software application, Or 5) any combination of these instructions. Since the same software product is normally distributed across multiple distribution networks (eg, multiple portals), a method of tracking which distribution network was responsible for a particular purchase is required. One way to determine which distribution network was responsible for a particular purchase is to create trackable versions of the software product. One method of generating trackable versions consists of creating different installers that contain information for identifying the distribution network in purchase instructions. For example, a software product may include a purchase URL that includes a value identifying a particular distribution network, for example,

http://my.trymedia.com/buy?sku=0123&affiliate=abc에 임베딩될 수 있다.It may be embedded at http://my.trymedia.com/buy?sku=0123&affiliate=abc .

그러한 URL은 파라미터, "affiliate = abc"에 의해 식별된 분배 네트워크를 통해 소프트웨어 분배를 위해 사용될 수 있다. 동일한 소프트웨어 제품이 또 다른 분배 네트워크(예를 들면, "affiliate = xyz")를 통해 분배된다면, 동일한 소프트웨어 제품의 또 다른 버전은 다른 분배 네트워크를 식별하는 구매 URL, 예를 들면,Such a URL can be used for software distribution via the distribution network identified by the parameter, " affiliate = abc ". If the same software product is distributed through another distribution network (for example, " affiliate = xyz "), another version of the same software product may be a purchase URL that identifies another distribution network, for example,

http://my.trymedia.com/buy?sku-0123&affiliate=xyz이 임베딩되도록 생성되어야 한다. http://my.trymedia.com/buy?sku-0123&affiliate=xyz should be created to be embedded.

소프트웨어 발행자들은 당업자에게 공지된 다양한 수단에 의해 소프트웨어 제품의 상이한, 추적 가능한 버전들을 생성할 수 있다. 예를 들면, 1) 분배 채널을 식별하기 위한 상이한 보조 정보를 포함하는 소프트웨어 실행 파일들(software executables)을 재컴파일링하는 것, 2) 구매 프로세스의 지시들에 의해 참조된 보조 파일, 리소스, 또는 데이터에 그러한 정보를 포함시키는 것, 또는 3) 상기의 임의의 조합이 존재한다. 대부분의 경우들에서, 소프트웨어 제작자를 참여시키지 않고 동일한 소프트웨어 제품의 상이한 추적 가능한 버전들을 생성하는 것이 바람직하며, 그래서 상기 프로세스가 가능한 효율적으로 스케일링될 수 있다. 그와 같이 하기 위한 하나의 가능한 방법은, 인스톨러가 처음 실행될 때, 인스톨러 내의 미리 규정된 위치 또는 파일시스템의 레지스트리 내의 미리 규정된 위치에 분배 관련 정보를 임베딩하는 것이다. 분배 관련 정보를 인스톨러 내에 임베딩하는 것의 하나의 이점은, 이러한 방법이 소프트웨어 제작자에게 각각의 분배 네트워크에 대한 소프트웨어의 특정 버전을 생성하도록 요구하지 않는다는 것이다. 그럼에도 불구하고, 성장하는 다수의 분배 네트워크들 각각에 대해 상이한 인스톨러들을 생성 및 관리하는 것은 매우 어려운 일이 되었다.Software publishers may generate different, traceable versions of a software product by various means known to those skilled in the art. For example: 1) recompiling software executables containing different supplemental information for identifying a distribution channel, 2) supplemental files, resources, or resources referenced by the instructions of the purchasing process, or Including such information in the data, or 3) any combination of the above. In most cases, it is desirable to create different traceable versions of the same software product without involving the software producer, so that the process can be scaled as efficiently as possible. One possible way to do so is to embed distribution related information at a predefined location in the installer or at a predefined location in the registry of the filesystem when the installer is first run. One advantage of embedding distribution related information in the installer is that this method does not require the software producer to create a specific version of the software for each distribution network. Nevertheless, creating and managing different installers for each of a growing number of distribution networks has become very difficult.

실행 파일들 내의 디지털 서명들(digital signatures)의 도입은 소프트웨어 제작자들 및 최종-사용자들에게 보안 이점들을 제공한다. 최종 사용자들에 대해, 실행 파일의 디지털 서명들은, 실행 파일이 통상적으로 소프트웨어 제작자에 의해 서명되기 때문에, 실행 파일이 임의의 방법으로 변경되지 않는다는 것을 보장하도록 도구(tool)를 제공한다. 소프트웨어 제작자에 대해, 상기 이점은 (예를 들면, 실행 파일을 감염시키는 컴퓨터 바이러스에 의해) 승인 없이 그들의 소프트웨어가 수정 또는 변경될 가능성들이 줄어드는 형태로 변환되고, 결과적으로 더 적은 지원 호출들 및 소프트웨어에서 더 많은 사용자 신뢰도를 유발한다. 마이크로소프트사의 윈도우 운영 시스템 실행 파일들에서, 디지털 서명들은 공인 인증서(certificate) 형태로 구현된다. 실행 파일의 헤더에서, 공인 인증서 테이블이 제공되고, 이는 디지털 공인 인증서의 다양한 속성들을 액세스하기 위한 정보를 포함한다. 소프트웨어 제작자가 실행 파일을 서명하면, 공인 인증서를 무효화하거나 실행 파일의 디지털 서명이 실행 파일의 디지털 공인 인증서와 불일치(mismatch)하게 렌더링하지 않고서는, 실행 파일의 콘텐츠가 쉽게 변경될 수 없다. 또한, 실행 파일들이 디지털적으로 서명되지 않을 때, 바이러스들, 스파이웨어 및 다른 악성 소프트웨어(malware)의 위험들이 증가하는 것은 운영 시스템들 및 인터넷 브라우저 판매 회사들로 하여금 경고를 발행하게 할 것이다. 이것은 확실히 실행 파일들과 함께 디지털 서명들의 부가적인 도입 및 광범위한 사용을 야기할 것이다. The introduction of digital signatures in executable files provides security benefits for software producers and end-users. For end users, the digital signatures of the executable provide a tool to ensure that the executable does not change in any way because the executable is typically signed by the software manufacturer. For software authors, the benefit is translated into a form that reduces the likelihood that their software will be modified or changed without approval (eg, by a computer virus infecting the executable), resulting in fewer support calls and software. Leads to more user confidence. In Microsoft's Windows operating system executables, digital signatures are implemented in the form of a public certificate. In the header of the executable file, a public certificate table is provided, which contains information for accessing various attributes of the digital public certificate. When a software producer signs an executable file, the contents of the executable file cannot be easily changed without invalidating the public certificate or rendering the executable's digital signature mismatched with the digital public certificate of the executable file. In addition, when the executables are not digitally signed, the increasing risk of viruses, spyware and other malware will cause operating systems and Internet browser vendors to issue warnings. This will certainly lead to further introduction and widespread use of digital signatures with executable files.

그러나, 상술된 바와 같이, 상이한 분배 네트워크들에 대한 소프트웨어 제품들의 상이한 버전들을 생성하는 것은 비효율적이다. 또한, 실행 파일의 디지털 서명의 무결성(integrity)을 파괴하지 않고 실행 파일들의 콘텐츠를 변경하는 것은 매우 어렵다. 이와 같이, 추적 가능한 복제본에 대한 보조 분배-관련 정보를 변경하는 것이 디지털 서명을 무효화하는 것이기 때문에, 소프트웨어 제작자 이외의 누군가가 소프트웨어 제품의 추적 가능한 복제본들을 생성하는 것은 매우 어렵다. However, as mentioned above, creating different versions of software products for different distribution networks is inefficient. In addition, it is very difficult to change the contents of executable files without breaking the integrity of the digital signature of the executable file. As such, since changing the secondary distribution-related information for the trackable copy would invalidate the digital signature, it is very difficult for anyone other than the software producer to create trackable copies of the software product.

따라서, 디지털적으로 서명된 콘텐츠에서 보조 정보를 임베딩 및 인증하는 컴퓨터-구현된 시스템 및 방법이 요구된다. Accordingly, what is needed is a computer-implemented system and method for embedding and authenticating supplemental information in digitally signed content.

디지털적으로 서명된 콘텐츠에서 보조 정보를 임베딩 및 인증하는 컴퓨터-구현된 시스템 및 방법이 제공된다. Computer-implemented systems and methods are provided for embedding and authenticating supplemental information in digitally signed content.

도 1은 보조 정보가 실행 파일의 헤더 부분에 저장된 실시예를 예시한 도면.
도 2는 3 개의 상이한 인스톨러들 각각의 실행 가능한 코드 블록들 내에 상이한 보조 데이터를 갖는 3 개의 상이한 인스톨러들의 예들을 예시한 도면.
도 3은 다양한 분배 네트워크들 상의 분배가 다양한 실시예들로 성취되는 방법의 예를 예시한 도면.
도 4는 디지털적으로 서명된 실행 파일의 통상적인 구조를 예시한 도면.
도 5는 다양한 실시예들에 따른 수정된 디지털적으로 서명된 실행 파일을 예시한 도면.
도 6은 실시예에서 수행된 기본 프로세싱 동작들을 도시한 흐름도.
도 7a 및 도 7b는 실시예들이 동작할 수 있고 실시예들이 속할 수 있는 컴퓨팅 시스템의 블록도들.
도 8 및 도 9는 예시적인 실시예에서 수행된 기본 프로세싱 동작들을 예시한 흐름도들.
1 illustrates an embodiment in which auxiliary information is stored in a header portion of an executable file.
2 illustrates examples of three different installers with different auxiliary data in executable code blocks of each of the three different installers.
3 illustrates an example of how distribution on various distribution networks is accomplished in various embodiments.
4 illustrates a typical structure of a digitally signed executable file.
5 illustrates a modified digitally signed executable file in accordance with various embodiments.
6 is a flow diagram illustrating basic processing operations performed in an embodiment.
7A and 7B are block diagrams of a computing system in which embodiments may operate and to which embodiments may belong.
8 and 9 are flow diagrams illustrating basic processing operations performed in an example embodiment.

실시예들은 예의 방법으로 예시되고 첨부한 도면들의 모양들로 제한되지 않는다. Embodiments are illustrated by way of example and are not limited to the shapes of the accompanying drawings.

디지털적으로 서명된 콘텐츠에 보조 정보를 임베딩 및 인증하는 컴퓨터-구현된 시스템 및 방법이 개시된다. 다음의 설명에서, 다수의 특정 상세들이 설명된다. 그러나, 실시예들이 이러한 특정 상세들 없이 실시될 수 있다는 것을 이해해야 한다. 다른 예들에서, 이러한 설명의 명료성을 모호하게 하지 않기 위해 공지된 프로세스들, 구조들 및 기술들은 상세한 설명에서 도시되지 않는다.A computer-implemented system and method for embedding and authenticating supplemental information in digitally signed content is disclosed. In the following description, numerous specific details are set forth. However, it should be understood that embodiments may be practiced without these specific details. In other instances, well-known processes, structures, and techniques are not shown in the detailed description in order not to obscure the clarity of this description.

도 1은 보조 정보(예를 들면, 분배 정보)가 인스톨러의 실행 파일 부분의 헤더 부분에 저장된 실시예를 예시한다. 도시된 바와 같이, 인스톨러(110)는 실행 가능한 코드 블록(120) 및 인스톨러 데이터(130)를 포함한다. 실행 가능한 코드 블록(120)은 헤더 부분(122), 및 상기 헤더 부분 내에 속하는 보조 데이터 부분(124), 및 실행 가능한 코드 섹션(126)으로 구성된다. 보조 데이터(124)는 분배 관련 정보, URL들, 가격 정보, 타임스탬프들, 분배 채널 정보, 사업 규칙들, 디지털 저작권 관리(DRM) 정보, 분배자 브랜드 정보, 다른 정보에 대한 포인터들 또는 링크들, 및 소프트웨어 제작자, 분배자, 도매상, 소매상 또는 최종 사용자에 대한 임의의 다른 이용 정보를 포함할 수 있다. 상이한 유형들의 보조 정보의 종합들 또는 조합들을 포함하여 다양한 상이한 유형들의 정보가 보조 데이터(124)에 포함될 수 있다는 것이 당업자에게 명백할 것이다. 그러한 보조 정보(124)는 그와 관련된 인스톨러 내에서 생성, 저장 및 전송될 수 있다. 인스톨러(110) 내에 보조 데이터 블록(124)이 주어지면, 특정 소프트웨어 제품에 대해 특정 인스톨러가 생성될 수 있다. 예를 들면, 동일한 소프트웨어 제품은 다수의 상이한 특정 인스톨러들을 이용하여 다수의 상이한 방법들로 분배될 수 있고, 상기 인스톨러들 각각은 특정 분배 네트워크에 대한 분배 방법론을 규정하는 특정 보조 데이터(124)를 갖는다. 도 2를 참조하여, 3 개의 상이한 인스톨러들 각각의 실행 가능한 코드 블록들(121, 122 및 123) 내의 상이한 보조 데이터를 갖는 3 개의 상이한 인스톨러들의 예들이 예시된다. 도 2에 예시된 3 개의 예의 인스톨러들 각각은 특정 분배 네트워크에서 소프트웨어 제품을 분배하는데 사용될 수 있고, 인스톨러 데이터(131)는 3 개의 상이한 인스톨러들에 대해 동일하다는 것을 유의하라. 단지, 실행 가능한 코드 블록들(121, 122 및 123)은 각각의 인스톨러에 대한 상이한 분배 네트워크들을 반영하기 위해 상이하다. 1 illustrates an embodiment in which auxiliary information (eg, distribution information) is stored in a header portion of an executable file portion of an installer. As shown, the installer 110 includes executable code blocks 120 and installer data 130. The executable code block 120 is composed of a header portion 122, an auxiliary data portion 124 that falls within the header portion, and an executable code section 126. Ancillary data 124 may include distribution related information, URLs, price information, timestamps, distribution channel information, business rules, digital rights management (DRM) information, distributor brand information, pointers or links to other information. And any other usage information for the software producer, distributor, wholesaler, retailer or end user. It will be apparent to those skilled in the art that various different types of information may be included in the supplemental data 124, including combinations or combinations of different types of supplemental information. Such supplemental information 124 may be generated, stored, and transmitted within an installer associated with it. Given an auxiliary data block 124 within installer 110, a particular installer can be created for a particular software product. For example, the same software product can be distributed in a number of different ways using a number of different specific installers, each of which has specific assistance data 124 that defines a distribution methodology for a particular distribution network. . Referring to FIG. 2, examples of three different installers with different auxiliary data in executable code blocks 121, 122, and 123 of each of the three different installers are illustrated. Note that each of the three example installers illustrated in FIG. 2 can be used to distribute a software product in a particular distribution network, and installer data 131 is the same for three different installers. Only executable code blocks 121, 122, and 123 are different to reflect different distribution networks for each installer.

도 3을 참조하여, 예는 다양한 분배 네트워크들 상에서 분배가 다양한 실시예들로 성취되는 방법을 예시한다. 도 3의 예에서, 서버(350)는 인스톨러 템플릿(installer template)(340)을 포함한다. 인스톨러 템플릿(340)은 실행 가능한 코드 블록(321) 및 인스톨러 데이터(331)를 포함한다. 특정 분배 네트워크(예를 들면, 네트워크 1) 상의 특정 소프트웨어 제품의 다운로드를 위한 요청을 수신할 때, 서버(350)는 분배 네트워크 특정 정보(예를 들면, 네트워크 1)를 생성하고, 상기 정보를 인스톨러 템플릿(340)의 복제본에 저장한다. 그후, 분배 네트워크 특정 인스톨러(351)는, 상기 특정 분배 네트워크 상의 소프트웨어 제품의 분배를 위한 요청의 발신자에게 전송될 수 있다. 유사하게, 다른 분배 네트워크-특정 인스톨러들(352 및 353)은 인스톨러 템플릿(340)으로부터 생성되고, 그들의 특정 다운로드 요청들의 발신자들에게 전송될 수 있다. 이러한 방법에서, 다수의 분배 네트워크들에서 소프트웨어 제품들의 분배를 위한 효율적이고 스케일링 가능한 해결책이 제공된다. Referring to FIG. 3, an example illustrates how distribution is accomplished in various embodiments on various distribution networks. In the example of FIG. 3, server 350 includes an installer template 340. Installer template 340 includes executable code block 321 and installer data 331. Upon receiving a request for download of a particular software product on a particular distribution network (eg, network 1), server 350 generates distribution network specific information (eg, network 1) and installs the information. Stored in a duplicate of the template 340. The distribution network specific installer 351 may then be sent to the originator of the request for distribution of the software product on the specific distribution network. Similarly, other distribution network-specific installers 352 and 353 can be generated from installer template 340 and sent to senders of their specific download requests. In this way, an efficient and scalable solution for the distribution of software products in multiple distribution networks is provided.

다운로딩된 실행 파일들에서 디지털 서명들의 사용은 점점 더 보편화되고 있다. 그러나, 소프트웨어 제작자가 실행 파일을 서명하면, 공인 인증서를 무효로 렌더링하거나 실행 파일의 디지털 서명이 실행 파일의 디지털 공인 인증서와 불일치하게 하지 않고서는, 실행 파일의 콘텐츠가 쉽게 변경될 수 없다. 이와 같이, 특정 소프트웨어 제품 다운로드를 위해 보조 정보를 인스톨러에 삽입하는 것은 어려워지고 있다. 그럼에도 불구하고, 이하에 더욱 상세하게 설명되는 바와 같이, 상술된 다양한 실시예들은 이러한 문제점을 해결한다.The use of digital signatures in downloaded executables is becoming more and more common. However, once a software producer signs an executable file, the contents of the executable file cannot be easily changed without rendering the public certificate invalid or causing the digital signature of the executable file to be inconsistent with the digital certificate of the executable file. As such, it is becoming difficult to insert supplemental information into the installer for downloading a particular software product. Nevertheless, as described in more detail below, the various embodiments described above solve this problem.

도 4를 참조하여, 디지털적으로 서명된 실행 파일(401)의 통상적인 구조가 예시된다. 파일(401)은 통상적으로 CRC(Cyclic Redundancy Check) 블록(410), 디지털 서명 포인터(412), 디지털 서명 크기(414), 가변 데이터 블록(416), 디지털 서명 블록(420), 및 미사용 부분(430)을 포함한다. 당분야에 공지된 바와 같이, 디지털 서명(420)은 소프트웨어 개발자의 개인 키(private key) 및 신뢰할 수 있는 권한의 개인 키를 조합하여 가변 데이터(416) 및 실행 파일 헤더들의 해시(hash)로부터 생성된다. 가변 데이터(416)는 실행 파일 헤더들을 포함하여 파일(401) 내의 가상의 임의의 코드 또는 데이터 페이로드일 수 있다. 통상적으로, 다운로딩 가능한 소프트웨어 제품 및 관련 데이터는 가변 데이터 블록(416)에 저장될 수 있다. 소프트웨어 제품이 가변 데이터 블록(416)에 저장되고, 디지털 서명(420)이 가변 데이터 블록(416)의 콘텐츠로부터 생성되면, 디지털 서명(420)을 무효화하지 않고서는 가변 데이터 블록(416)의 임의의 부분을 수정하는 것은 매우 어려워진다. 생성된 디지털 서명(420)의 크기는 디지털 서명 크기 블록(414)에 저장된다. 가변 데이터 블록(416)이 가변 크기일 수 있기 때문에, 디지털 서명(420)에 대한 포인터(413)는 디지털 서명 포인터 블록(412)에 저장된다. 디지털적으로 서명된 실행 파일(401)의 통상적인 구현들에서, CRC 블록(410), 디지털 서명 포인터(412), 및 디지털 서명 크기(414)는 디지털 서명(420)의 계산에 포함되지 않는다. 이와 같이, 파일(401)의 이러한 블록들은 디지털 서명(420)을 무효화하지 않고서 수정될 수 있다.Referring to FIG. 4, a typical structure of a digitally signed executable file 401 is illustrated. File 401 is typically a cyclic redundancy check (CRC) block 410, digital signature pointer 412, digital signature size 414, variable data block 416, digital signature block 420, and unused portions ( 430). As is known in the art, digital signature 420 is generated from a hash of variable data 416 and executable headers by combining a software developer's private key and a trusted permission private key. do. Variable data 416 may be virtually any code or data payload in file 401 including executable headers. Typically, the downloadable software product and associated data may be stored in variable data block 416. If the software product is stored in the variable data block 416, and the digital signature 420 is generated from the content of the variable data block 416, any of the variable data block 416 without invalidating the digital signature 420. It is very difficult to modify the parts. The size of the generated digital signature 420 is stored in the digital signature size block 414. Because the variable data block 416 can be of variable size, the pointer 413 for the digital signature 420 is stored in the digital signature pointer block 412. In typical implementations of digitally signed executable 401, CRC block 410, digital signature pointer 412, and digital signature size 414 are not included in the calculation of digital signature 420. As such, these blocks of file 401 may be modified without invalidating digital signature 420.

도 5를 참조하여, 다양한 실시예들에 따른 수정된 디지털적으로 서명된 실행 파일(501)이 예시된다. 파일(501)은 블록(514)에 속하는 디지털 서명 크기의 값을 변경함으로써 수정된다. 디지털 서명 크기의 값은, 디지털 서명(520)의 크기를 취하고 이에 미사용 블록(530)의 크기를 부가함으로써 수정될 수 있다. 일부 경우들에서, 보조 데이터 블록(530)을 바이트, 워드, 페이지 또는 다른 메모리 세그먼트 경계 상에서 종료하기 위해 상기 수정된 디지털 서명 크기 값을 미리 결정된 패드 값만큼 증가(또는 감소)시킬 필요가 있을 수 있다. 다른 경우들에서, 예비적으로 삭감(zero out)하거나 디폴트 값을 보조 데이터 블록(530)의 각각의 메모리 위치에 저장할 필요가 있을 수 있다. 이러한 새로운 디지털 서명 크기 값은, 도 5의 화살표(515)에 의해 도시된 바와 같이 디지털 서명 크기 블록(514)에 저장된다. 블록(514) 내의 디지털 서명 크기 값은 디지털 서명(520)의 계산에 포함되지 않기 때문에, 블록(514) 내의 디지털 서명 크기의 수정은 디지털 서명(520)을 무효화하지 않는다. 또한, 디지털 서명(520)의 종래의 구조로 인해, 디지털 서명(520)의 단부에 부가적인 메모리 공간(530)을 첨부하는 것은 또한 디지털 서명(520)을 무효화하지 않는다. 파일(501)에 대한 미사용 메모리 공간(530)의 부가는 제 3 자가 보조 데이터를 블록(530)에 저장하도록 한다. 블록(530)에 저장된 보조 데이터는 다양한 목적들을 위해 사용될 수 있다. 예를 들면, 블록(530)에 저장된 보조 데이터는 분배 관련 정보, URL들, 가격 정보, 타임스탬프들, 분배 채널 정보, 사업 규칙들, 디지털 저작권 관리(DRM) 정보, 분배자 브랜드 정보, 다른 정보에 대한 포인터들 또는 링크들, 및 소프트웨어 제작자, 분배자, 도매상, 소매상 또는 최종 사용에 대한 임의의 다른 이용 정보를 포함할 수 있다. 상이한 유형들의 보조 정보의 통합들 또는 조합들을 포함하여 다양한 상이한 유형들의 정보가 블록(530)에 포함될 수 있다는 것은 당업자에게 명백할 것이다. 그러한 보조 정보는 디지털 서명(520)을 무효화하지 않고 파일(501)의 블록(530) 내에서 생성, 저장 및 전송될 수 있다. Referring to FIG. 5, a modified digitally signed executable file 501 is illustrated in accordance with various embodiments. File 501 is modified by changing the value of the digital signature size belonging to block 514. The value of the digital signature size can be modified by taking the size of the digital signature 520 and adding the size of the unused block 530 to it. In some cases, it may be necessary to increase (or decrease) the modified digital signature size value by a predetermined pad value to terminate auxiliary data block 530 on a byte, word, page or other memory segment boundary. . In other cases, it may be necessary to preemptively zero out or store a default value in each memory location of auxiliary data block 530. This new digital signature size value is stored in digital signature size block 514 as shown by arrow 515 in FIG. Since the digital signature size value in block 514 is not included in the calculation of the digital signature 520, modification of the digital signature size in block 514 does not invalidate the digital signature 520. In addition, due to the conventional structure of digital signature 520, attaching additional memory space 530 to the end of digital signature 520 also does not invalidate digital signature 520. The addition of unused memory space 530 to file 501 allows a third party to store auxiliary data in block 530. The ancillary data stored at block 530 may be used for various purposes. For example, the ancillary data stored at block 530 may include distribution related information, URLs, price information, timestamps, distribution channel information, business rules, digital rights management (DRM) information, distributor brand information, other information. Pointers or links to and any other usage information for the software manufacturer, distributor, wholesaler, retailer or end use. It will be apparent to those skilled in the art that various different types of information may be included in block 530, including combinations or combinations of different types of auxiliary information. Such assistance information may be generated, stored, and transmitted within block 530 of file 501 without invalidating digital signature 520.

대안적인 실시예에서, CRC 블록(510) 내의 데이터는 보조 데이터와 중복 기록될 수 있다. 블록(510)의 CRC 값이 디지털 서명(520)의 계산에 포함되지 않기 때문에, 블록(510) 내의 CRC 데이터의 수정은 디지털 서명(520)을 무효화하지 않는다. 그러나, CRC 블록(510)의 크기는 매우 제한적이다. 파일(501) 구조의 통상적인 구현들에서, 매우 적은 양의 정보가 블록(510)에 저장될 수 있다. 보조 데이터의 더 큰 블록에 대한 포인터, 링크, 또는 인덱스는 블록(510)에 저장될 수 있고, 그러한 보조 데이터는 로컬 또는 원격 위치(예를 들면, 서버)에 저장된다. In alternative embodiments, the data in CRC block 510 may be overwritten with auxiliary data. Since the CRC value of block 510 is not included in the calculation of the digital signature 520, modification of the CRC data in block 510 does not invalidate the digital signature 520. However, the size of the CRC block 510 is very limited. In typical implementations of the file 501 structure, very little information can be stored at block 510. A pointer, link, or index to a larger block of supplemental data may be stored at block 510, and such supplemental data is stored at a local or remote location (eg, a server).

도 6을 참조하여, 흐름도는 실시예에서 수행되는 기본 프로세싱 동작들을 예시한다. 블록(612)에서, 디지털적으로 서명된 파일(501)이 판독되고, 디지털적으로 서명된 파일 헤더에서 디지털 서명 블록 및 디지털 서명 크기 블록이 식별된다. 블록(614)에서, 디지털 서명 크기가 디지털 서명 크기 블록으로부터 검색되고, 디지털 서명 크기 값이 수정된다. 디지털 서명 크기의 값은, 디지털 서명의 크기(즉, 디지털 서명 크기 블록에서의 오래된 값)를 취하고, 보조 데이터가 저장될 수 있는 미사용된 데이터 블록의 크기를 이에 부가함으로써 수정된다. 일부 경우들에서, 보조 데이터 블록을 바이트, 워드, 페이지 또는 다른 메모리 세그먼트 경계 상에서 종료하기 위해 상기 수정된 디지털 서명 크기 값을 미리 결정된 패드 값만큼 증가(또는 감소)시킬 필요가 있을 수 있다. 다른 경우들에서, 예비적으로 삭감하거나 디폴트 값을 보조 데이터 블록(530)의 각각의 메모리 위치에 저장할 필요가 있을 수 있다. 이러한 새로운 디지털 서명 크기 값은 프로세싱 블록(616)에서 디지털 서명 크기 블록에 저장된다. 이러한 디지털적으로 서명된 파일(501)에 대응하는 보조 데이터는 프로세싱 블록(618)에서 생성되고, 보조 데이터 블록(530)에 저장된다. 프로세싱 블록(620)에서, 수정된 파일(501)에 대한 CRC 값이 재계산되고, CRC 블록(510)에 저장될 수 있다. 다양한 실시예들에 따라 디지털적으로 서명된 파일(510) 내의 블록(530)에 저장된 보조 데이터가 주어지면, 특정 인스톨러는 제 3 자에 의해 특정 소프트웨어 제품에 대해 생성될 수 있다. 또한, 디지털적으로 서명된 파일들은 디지털 저작권 관리 정책들, 액세스 제어들, 구매 절차들, 또는 특정 디지털적으로 서명된 파일(501)과 연관된 다양한 다른 콘텐츠 특정, 당사자-특정 또는 거래 특정 정보를 포함하도록 수정될 수 있다.With reference to FIG. 6, a flowchart illustrates basic processing operations performed in an embodiment. At block 612, the digitally signed file 501 is read, and the digital signature block and digital signature size block are identified in the digitally signed file header. At block 614, the digital signature size is retrieved from the digital signature size block and the digital signature size value is modified. The value of the digital signature size is modified by taking the size of the digital signature (i.e. the old value in the digital signature size block) and adding to it the size of the unused data block where the supplemental data can be stored. In some cases, it may be necessary to increase (or decrease) the modified digital signature size value by a predetermined pad value to end the auxiliary data block on a byte, word, page or other memory segment boundary. In other cases, it may be necessary to preliminarily reduce or store a default value in each memory location of auxiliary data block 530. This new digital signature size value is stored in the digital signature size block at processing block 616. Ancillary data corresponding to this digitally signed file 501 is generated at processing block 618 and stored in ancillary data block 530. At processing block 620, the CRC value for modified file 501 may be recalculated and stored at CRC block 510. Given the auxiliary data stored in block 530 in the digitally signed file 510 in accordance with various embodiments, a particular installer may be generated for a particular software product by a third party. In addition, digitally signed files include digital rights management policies, access controls, purchase procedures, or various other content specific, party-specific or transaction specific information associated with a particular digitally signed file 501. It can be modified to.

도 7a 및 도 7b는, 예시적인 실시예의 특징들이 구현될 수 있는 서버 컴퓨터 시스템 또는 예시적인 클라이언트를 예시하는 컴퓨터 시스템(200)의 예를 도시한다. 컴퓨터 시스템(200)은 정보를 통신하기 위한 버스 또는 다른 통신 수단(214 및 216), 및 정보를 프로세싱하기 위해 버스(214)와 결합된 프로세서(220)와 같은 프로세싱 수단을 포함한다. 컴퓨터 시스템(200)은 랜덤 액세스 메모리(RAM) 또는 프로세서(220)에 의해 실행될 명령들 및 정보를 저장하기 위해 버스(214)에 결합된 다른 동적 저장 장치(222)(일반적으로 메인 메모리로서 지칭됨)를 더 포함한다. 메인 메모리(222)는 또한, 프로세서(220)에 의한 명령들의 실행 동안에 시간적인 가변들 또는 다른 중간 정보를 저장하는데 사용될 수 있다. 컴퓨터 시스템(200)은 또한 판독 전용 메모리(ROM) 및/또는 정적 정보 및 프로세서(220)에 대한 명령들을 저장하기 위해 버스(214)에 결합된 다른 정적 저장 장치(224)를 포함한다. 7A and 7B show examples of computer system 200 illustrating an example client or server computer system in which features of the example embodiment may be implemented. Computer system 200 includes bus or other communication means 214 and 216 for communicating information, and processing means such as a processor 220 coupled with bus 214 for processing information. Computer system 200 is random access memory (RAM) or other dynamic storage device 222 (generally referred to as main memory) coupled to bus 214 for storing instructions and information to be executed by processor 220. More). Main memory 222 may also be used to store temporal variations or other intermediate information during execution of instructions by processor 220. Computer system 200 also includes read-only memory (ROM) and / or other static storage device 224 coupled to bus 214 for storing static information and instructions for processor 220.

자기 디스크 또는 광 디스크 및 그에 대응하는 드라이브와 같은 선택적인 데이터 저장 장치(228)는 또한 정보 및 명령들을 저장하기 위해 컴퓨터 시스템(200)에 결합될 수 있다. 컴퓨터 시스템(200)은 또한, 정보를 컴퓨터 사용자에게 디스플레이하기 위해 음극선관(CRT) 또는 액정 디스플레이(LCD)와 같은 디스플레이 장치(204)에 버스(216)를 통해 결합될 수 있다. 예를 들면, 이미지, 텍스트, 비디오 또는 정보의 그래픽 묘사들은 디스플레이 장치(204) 상의 사용자에게 제시될 수 있다. 통상적으로, 알파벳 숫자 및 다른 키들을 포함하는 알파벳 숫자 입력 장치(208)는 정보 및/또는 명령 선택들을 프로세서(220)에 통신하기 위해 버스(216)에 결합된다. 또 다른 유형의 사용자 입력 장치는, 지시 정보 및 명령 선택을 프로세서(220)에 통신하고 디스플레이(204) 상의 커서 움직임을 제어하기 위한 종래의 마우스, 트랙볼, 또는 다른 유형의 커서 방향 키들과 같은 커서 제어 장치(206)이다. Optional data storage devices 228, such as magnetic disks or optical disks and corresponding drives, may also be coupled to the computer system 200 to store information and instructions. Computer system 200 may also be coupled via bus 216 to a display device 204 such as a cathode ray tube (CRT) or liquid crystal display (LCD) to display information to a computer user. For example, graphical depictions of images, text, video or information may be presented to the user on the display device 204. Typically, an alphanumeric input device 208 comprising alphanumeric and other keys is coupled to the bus 216 to communicate information and / or command selections to the processor 220. Another type of user input device is cursor control, such as a conventional mouse, trackball, or other type of cursor direction keys for communicating indication information and command selection to the processor 220 and controlling cursor movement on the display 204. Device 206.

통신 장치(226)는 또한, 원격 컴퓨터들 또는 예를 들면, 웹 서버 또는 인터넷을 통한 다른 서버들과 같은 서버들을 액세싱하기 위해 버스(216)에 결합될 수 있다. 통신 장치(226)는 이더넷, 토큰링(Token-ring), 무선, 또는 다른 유형들의 네트워크들과 인터페이싱하기 위해 사용되는 것들과 같은 모뎀, 네트워크 인터페이스 카드 또는 다른 공지된 인터페이스 장치들을 포함할 수 있다. 임의의 경우에, 이러한 방법으로, 컴퓨터 시스템(200)은 종래의 네트워크 인프라구조를 통해 다수의 서버들에 결합될 수 있다. Communication device 226 may also be coupled to bus 216 to access remote computers or servers such as, for example, a web server or other servers via the Internet. The communication device 226 may include a modem, a network interface card or other known interface devices, such as those used to interface with Ethernet, Token-ring, Wireless, or other types of networks. In any case, in this manner, computer system 200 may be coupled to multiple servers through conventional network infrastructure.

예시적인 실시예의 시스템은 상술된 바와 같이 소프트웨어, 정보 프로세싱 하드웨어, 및 다양한 프로세싱 단계들을 포함한다. 예시적인 실시예들의 특징들 및 프로세스 단계들은 기계 또는 컴퓨터 실행 가능한 명령들로 구현될 수 있다. 명령들은, 명령들로 프로그래밍된 범용 또는 특수 목적 프로세서로 하여금 예시적인 실시예의 단계들을 수행하도록 하는데 사용될 수 있다. 또한, 상기 특징들 또는 단계들은, 상기 단계들을 수행하기 위해 하드웨어에 내장된 로직을 포함하는 특정 하드웨어 구성요소들, 또는 프로그래밍된 컴퓨터 구성요소들과 관습적인 하드웨어 구성요소들의 임의의 조합에 의해 수행될 수 있다. 실시예들이 인터넷을 참조하여 설명되었지만, 본원에 기재된 방법 및 장치는 다른 네트워크 인프라스트럭처 또는 다른 데이터 통신 시스템들에 동일하게 적용 가능하다. The system of an exemplary embodiment includes software, information processing hardware, and various processing steps as described above. Features and process steps of example embodiments may be implemented as machine or computer executable instructions. The instructions may be used to cause a general purpose or special purpose processor programmed with the instructions to perform the steps of the example embodiment. Further, the features or steps may be performed by specific hardware components, including logic embedded in hardware to perform the steps, or any combination of programmed computer components and customary hardware components. Can be. Although embodiments have been described with reference to the Internet, the methods and apparatus described herein are equally applicable to other network infrastructure or other data communication systems.

본원에 기재된 방법이 상술된 순서 또는 특정 순서로 실행되어야 하지는 않는다는 것을 유의해야 한다. 또한, 본원에 식별된 방법들에 관련하여 기재된 다양한 동작들은 반복적, 동시에, 재귀적, 직렬, 또는 병렬 방식으로 실행될 수 있다. 파라미터들, 명령들, 피연산자들(operands) 및 다른 데이터를 포함하는 정보는 통신 장치(226)를 통해 하나 이상의 반송파들의 형태로 전송 및 수신될 수 있다. It should be noted that the methods described herein need not be performed in the order described or in any particular order. In addition, various operations described in connection with the methods identified herein may be performed in an iterative, concurrent, recursive, serial, or parallel fashion. Information, including parameters, instructions, operands, and other data, may be transmitted and received in the form of one or more carriers via communication device 226.

본 개시 내용을 읽고 이해할 때, 당업자는 소프트웨어 프로그램이 상술될 소프트웨어 프로그램에 규정된 기능들을 실행하기 위해 컴퓨터-기반 시스템 내의 컴퓨터 판독 가능한 매체로부터 런칭될 수 있는 방법을 이해할 것이다. 당업자는 또한, 상술된 방법들을 구현 및 수행하도록 설계된 하나 이상의 소프트웨어 프로그램들을 생성하도록 채용될 수 있는 다양한 프로그래밍 언어들을 이해할 것이다. 상기 프로그램들은 Java, Smalltalk, 또는 C++ 과 같은 객체 지향 언어를 이용하는 객체 지향 포맷으로 구성될 수 있다. 또한, 프로그램들은 어셈블리 또는 C 와 같은 절차 언어를 이용하는 절차 지향 포맷으로 구성될 수 있다. 소프트웨어 구성요소들은 원격 절차 호출들을 포함하여 애플리케이션 프로그램 인터페이스들 또는 상호-프로세스 통신 기술들과 같은 당분야에 공지된 임의의 다수의 메카니즘들을 이용하여 통신할 수 있다. 다양한 실시예들의 사상들은 HTML 및 XML을 포함하여 임의의 특정 프로그래밍 언어 또는 환경에 제한되지 않는다. Upon reading and understanding the present disclosure, those skilled in the art will understand how a software program can be launched from a computer readable medium in a computer-based system to carry out the functions defined in the software program to be described above. Those skilled in the art will also understand various programming languages that may be employed to generate one or more software programs designed to implement and perform the methods described above. The programs may be organized in an object oriented format using an object oriented language such as Java, Smalltalk, or C ++. In addition, the programs may be constructed in a procedural oriented format using an assembly or procedural language such as C. Software components may communicate using any of a number of mechanisms known in the art, such as application program interfaces or inter-process communication techniques, including remote procedure calls. The spirits of the various embodiments are not limited to any particular programming language or environment, including HTML and XML.

따라서, 다른 실시예들이 실현될 수 있다. 예를 들면, 도 7a 및 도 7b는 컴퓨터(200), 메모리 시스템(222, 224 및 228), 자기 또는 광 디스크(212), 일부 다른 저장 장치(228), 및/또는 임의의 유형의 전자 장치 또는 시스템과 같이 다양한 실시예들에 따른 제조 물품의 블록도들을 예시한다. 상기 물품(200)은 컴퓨터-판독 가능한 매체(212), 및/또는 저장 장치(228)(예를 들면, 전기, 광, 또는 전자기 전도체들을 갖는 실재 메모리를 포함하는 고정 및/또는 착탈 가능한 저장 매체) 또는 연관된 정보(예를 들면, 컴퓨터 프로그램 명령들 및/또는 데이터)를 갖는, 통신 장치(226)를 통한 반송파에 결합된 컴퓨터(202)(하나 이상의 프로세서들을 가짐)를 포함할 수 있고, 상기 연관된 정보는 컴퓨터(202)에 의해 실행될 때 컴퓨터(202)로 하여금 본원에 기재된 방법들을 수행하도록 한다. Thus, other embodiments can be realized. For example, FIGS. 7A and 7B illustrate computer 200, memory systems 222, 224, and 228, magnetic or optical disks 212, some other storage device 228, and / or any type of electronic device. Or block diagrams of an article of manufacture in accordance with various embodiments, such as a system. The article 200 is a fixed and / or removable storage medium that includes a computer-readable medium 212, and / or a storage device 228 (eg, a real memory having electrical, optical, or electromagnetic conductors). Or a computer 202 (with one or more processors) coupled to a carrier via the communication device 226, with associated information (e.g., computer program instructions and / or data), and Associated information causes the computer 202 to perform the methods described herein when executed by the computer 202.

다양한 실시예들이 기재되어 있다. 특히, 다양한 유형들 및 포맷들의 사용자 인터페이스 프리젠테이션들을 갖는 실시예들의 사용이 기재될 수 있다. 본원에 기재된 구현들의 대안적인 실시예들이 채용되고 이후에 제시된 특허청구범위 내에 있다는 것은 당업자에게 명백할 것이다. 상세한 설명에서, 다양한 실시예들은 본원에서 때때로 "소프트웨어"로서 표기되는 컴퓨터-구현된 프로세싱 로직으로 구현되는 것으로서 기재되어 있다. 그러나, 상술된 바와 같이, 청구된 본 발명은 전적으로 소프트웨어 구현으로 제한되지 않는다.Various embodiments are described. In particular, the use of embodiments having user interface presentations of various types and formats may be described. It will be apparent to those skilled in the art that alternative embodiments of the implementations described herein are employed and are within the scope of the claims set forth below. In the detailed description, various embodiments are described herein as being implemented in computer-implemented processing logic, sometimes referred to herein as "software." However, as noted above, the claimed invention is not limited to software implementation as a whole.

상술된 바와 같이, 보조 데이터는 서명된 실행 파일 내에 임베딩될 수 있고, 보조 데이터는 기존의 디지털 서명을 깨지 않고 수정될 수 있다. 상술된 기술은 그러한 보조 데이터를 디지털 서명 디렉토리에 임베딩하는 것을 수반하고, 이는 검증된 메시지의 일부로서 계산되지 않는다. 결과적으로, 상술된 기술은, 보조 정보(예를 들면, 분배의 소스 등)로 다운로드(또는 제조) 시에 디지털 분배를 위해 인스톨러들을 개별화하는 효과적인 방법을 제공한다. 상술된 기술의 하나의 이점은, 보조 정보가 다운로드 시에 실행 파일에 동적으로 삽입될 수 있다는 것이다. 이는 다중 분배자들로 구성된 디지털 분배 사업 모델에서 분배 채널들의 추적을 허용한다. 그러한 사업 모델에서, 통화(monetary) 또는 광고 거래의 이벤트 또는 특정 파일에 관련된 이벤트들에서 그러한 소스를 보상할 수 있도록 특정 파일의 소스를 식별할 수 있는 것이 매우 바람직하다. 또한, 디지털 분배 제공자가 다운로딩 가능한 자산들의 단지 하나의 버전을 저장하고 효과적인 방법으로 그러한 자산들의 태그 복제본을 생성하는 것이 매우 바람직하다. 동적 (제휴) 추적은, 디지털 자산의 단일의 복제본이 크레디팅(crediting), 보고(reporting) 또는 추적 목적들을 위해 소스 분배를 식별하도록 다운로드 또는 이행 시간에서 동적으로 개인화될 수 있는 분배 네트워크를 효과적으로 생성하도록 허용한다. As mentioned above, the supplementary data can be embedded in a signed executable file, and the supplementary data can be modified without breaking the existing digital signature. The technique described above involves embedding such supplemental data into a digital signature directory, which is not counted as part of the verified message. As a result, the techniques described above provide an effective way to personalize installers for digital distribution upon download (or manufacture) as ancillary information (eg, source of distribution, etc.). One advantage of the techniques described above is that auxiliary information can be dynamically inserted into an executable file upon download. This allows tracking of distribution channels in a digital distribution business model consisting of multiple distributors. In such a business model, it is highly desirable to be able to identify the source of a particular file so that such source can be compensated for in the event of a monetary or advertising transaction or events related to the particular file. It is also highly desirable for the digital distribution provider to store only one version of the downloadable assets and to create a tag copy of those assets in an effective manner. Dynamic (partnership) tracking effectively creates a distribution network where a single copy of a digital asset can be dynamically personalized at download or fulfillment time to identify the source distribution for crediting, reporting or tracking purposes. Allow it.

US 특허 제 5,892,904 호 및 제 6,367,012 호는 컴퓨터 네트워크를 통해 수신된 컴퓨터 프로그램 또는 코드의 인증(authenticity) 및 무결성을 보장하는 방법을 기재하고 있다. 그러나, 참조된 특허들에 기재된 방법들은 전송된 실행 파일의 인증 및 무결성을 보장하지 않으며, 전송된 실행 파일은 서명된 프로그램 또는 코드, 디지털 서명, 및 가능하게는 일부 다른 데이터 및 패딩(padding)을 포함한다. US Pat. Nos. 5,892,904 and 6,367,012 describe methods for ensuring the authenticity and integrity of a computer program or code received over a computer network. However, the methods described in the referenced patents do not guarantee the authenticity and integrity of the transmitted executable file, and the transmitted executable file may contain a signed program or code, a digital signature, and possibly some other data and padding. Include.

예를 들면, 마이크로소프트 윈도우 운영 시스템은, 인증 코드 서명(Authenticode signature)을 포함하여 "속성 인증서 테이블(Attribute Certificate Table)" 및 "인증서 데이터" 섹션을 부가함으로써 서명된 실행 파일들을 구현한다. 인증 코드 서명을 생성하는데 사용된 이미지 해시는 다음의 섹션들(마이크로소프트 문서에 따라):For example, the Microsoft Windows operating system implements signed executables by adding an "Attribute Certificate Table" and "Certificate Data" sections, including an Authenticode signature. The image hash used to generate the verification code signature is in the following sections (according to Microsoft documentation):

i. 선택적 헤더의 윈도우-특정 필드들의 파일 체크섬 필드;i. A file checksum field of window-specific fields of an optional header;

ii. 속성 인증서들에 관련된 정보; 및ii. Information related to attribute certificates; And

iii. 최종 섹션의 단부를 지난 곳의 섹션(a section past the end of the last section) 내에 위치한 정보를 제외한, 실행 파일 내의 모든 섹션들로부터 생성된다.iii. Generated from all sections in the executable, except for information located in a section past the end of the last section.

인증 코드 서명을 생성하는데 사용된 이미지 해시가 상기 참조된 파일 내의 섹션들(본원에서 비인증된 섹션들로 표기됨)로부터 생성되지 않기 때문에, 이러한 비인증된 섹션들에 대한 수정들은 해시를 변경 또는 영향을 주지 않을 것이고, 이는 인증 코드 서명에 영향을 주지 않을 것이다. 따라서, 파일 또는 전송이 실행 파일의 인증 코드 서명에 영향을 주지 않으면, 전송된 실행 파일의 인증 및 무결성은 비인증된 섹션들에서 영향을 받지 않을 수 있다. 사실상, 미국 공개 특허 출원 제 20060265591 호에 개시된 본 발명은, 디지털 서명을 깨지 않고 실행 파일을 효과적으로 변경하거나 유용한 방법들로 전송하기 위해 이러한 사실을 활용한다. Since the image hash used to generate the authentication code signature is not generated from the sections in the file referenced above (denoted as unauthenticated sections herein), modifications to these unauthenticated sections will not affect or affect the hash. It will not affect the authentication code signing. Thus, if the file or transfer does not affect the signing of the authentication code of the executable file, then the authentication and integrity of the transmitted executable file may not be affected in the non-authenticated sections. Indeed, the invention disclosed in US Published Patent Application No. 20060265591 utilizes this fact to effectively modify the executable or transfer it in useful ways without breaking the digital signature.

이하에 기재된 다양한 실시예들에서, 디지털적으로 서명된 실행 파일을 포함하는 파일 또는 전송의 인증 및 무결성은, 파일 또는 전송의 디지털 서명의 생성 시에 포함되지 않은 파일 또는 전송의 영역들(즉, 비인증된 영역들)을 검사함으로써 검증된다. 이하에 기재된 프로세스는, 비인증된 영역들이 요구되지 않은 데이터를 포함하지 않고 비인증된 영역들 내의 요구된 데이터가 명백히 특정된 값들을 갖는다는 것을 검증하는데 사용된다.In various embodiments described below, the authenticity and integrity of a file or transmission that includes a digitally signed executable file is defined as areas of the file or transmission that are not included in the generation of the digital signature of the file or transmission (ie, By verifying unauthorized domains). The process described below is used to verify that unauthorized areas do not contain unsolicited data and that the required data in the unauthorized areas have explicitly specified values.

비인증된 영역들의 콘텐츠의 이러한 검증은, 1) 파일 또는 전송의 디지털 서명이 검증될 때, 2) 파일 또는 전송이 다운로딩될 때, 또는 3) 실행 파일 자체에 의한 실행 시에 전송을 수신하거나 파일을 조작하는 기계에 상주하는 운영 시스템에 의해 수행될 수 있다. 검증 프로세스가 실행 파일 자체에 의한 실행 시에 수행되면, 검증이 실패하는 경우에 실행 파일의 실행은 종결된다. 실행 파일 자체에 의한 실행 시에 검증 프로세스를 수행하는 것이 모든 상황들에서 이상적인 해결책일 수 없지만, 실행 가능한 코드가 기존의 디지털 서명에 의해 적절히 보호되기 때문에, 상기 프로세스는 많은 애플리케이션들에 대해 충분히 안전할 수 있다. This verification of the content of unauthenticated areas may include: 1) when the digital signature of the file or transmission is verified, 2) when the file or transmission is downloaded, or 3) upon execution by the executable file itself, or when the file is received. Can be performed by an operating system residing on a machine for manipulating. If the verification process is performed at the time of execution by the executable file itself, the execution of the executable file is terminated in the case where the verification fails. Performing the verification process at run time by the executable file itself may not be an ideal solution in all situations, but since the executable code is properly protected by existing digital signatures, the process may be safe enough for many applications. Can be.

이하에 기재된 특정 실시예에서, 디지털적으로 서명된 실행 파일을 포함하는 파일 또는 전송의 인증 및 무결성은 마이크로소프트 윈도우즈 PE(Portable Executable) 파일들에 대한 구현을 이용하여 검증된다. 이러한 특정 실시예에서, 검증 프로세스는 다음의 동작들:In certain embodiments described below, the authenticity and integrity of a file or transmission that includes a digitally signed executable file is verified using an implementation for Microsoft Windows Portable Executable (PE) files. In this particular embodiment, the verification process includes the following operations:

i. 선택적 헤더의 윈도우 특정 필드들 내의 체크섬 필드가 이미지 파일 체크섬과 매칭하는지를 검사 및 검증하는 동작;i. Checking and verifying that the checksum field in the window specific fields of the optional header matches the image file checksum;

ii. 파일 또는 전송의 최종 섹션의 단부를 지난 곳에 어떠한 정보도 존재하지 않는다는 것을 보장하도록 검사 및 검증하는 동작;ii. Checking and verifying that no information exists beyond the end of the last section of the file or transfer;

iii. 속성 인증서 테이블이 하나의 단일 엔트리를 포함하고 패딩 또는 고정 데이터를 갖는 패딩을 포함하지 않는다는 것을 보장하도록 검사 및 검증하는 동작; 및iii. Checking and verifying to ensure that the attribute certificate table includes one single entry and does not include padding or padding with fixed data; And

iv. 인증서가, 다음의 옥타워드 경계(octaword boundary)에 대한 가능한 고정-데이터 패딩을 제외한, 속성 인증서 테이블 내의 인증서에 할당된 전체 공간을 채우는 것을 보장하도록 검사 및 검증하는 동작을 포함할 수 있다. iv. Checking and verifying to ensure that the certificate fills the entire space allocated to the certificate in the attribute certificate table, except for possible fixed-data padding for the next octaword boundary.

상술된 검증 프로세스는, 소비 및 이진수 생성 또는 변경 툴들(예를 들면, 포렌식 툴들(forensic tools), 링커들, 컴파일러 등)에 대해 수백만의 실행파일들에서 이미 사용된 PE(Portable Executable) 표준에 대한 변경들을 요구할 수 있다. PE 표준에 대한 그러한 잠재적으로 요구된 변화들의 결과로서, 상기된 검증 프로세스는 일부 애플리케이션들에 대해 최적일 수 없다.The verification process described above is based on the Portable Executable (PE) standard already used in millions of executables for consumption and binary generation or modification tools (e.g. forensic tools, linkers, compilers, etc.). May require changes. As a result of such potentially required changes to the PE standard, the verification process described above may not be optimal for some applications.

이하에 기재된 또 다른 특정 실시예에서, 디지털적으로 서명된 실행 파일을 포함하는 파일 또는 전송의 인증 및 무결성은 마이크로소프트 윈도우즈 PE(Portable Executable) 파일들에 대한 구현을 이용하여 검증된다. 이러한 특정 실시예에서, 운영 시스템(OS) 판매 회사 또는 제공자(예를 들면, 마이크로소프트사)는, 비인증된 영역들을 포함하는 디지털적으로 서명된 파일 또는 전송을 실행하는 것의 보안 위험을 완화 또는 제거하기 위해 검증 프로세스를 구현할 수 있다. 이러한 실시예에서, 실행 파일이 메모리에 로딩될 때, 검증 프로세스는 비인증된 영역들에 대한 액세스를 방지 또는 감시한다. 특정 실시예의 검증 프로세스는 다음의 동작들:In another particular embodiment described below, the authentication and integrity of a file or transmission that includes a digitally signed executable file is verified using an implementation for Microsoft Windows Portable Executable (PE) files. In this particular embodiment, an operating system (OS) sales company or provider (eg, Microsoft) mitigates or eliminates the security risk of executing a digitally signed file or transfer that includes unauthorized areas. You can implement a verification process to accomplish this. In this embodiment, when the executable file is loaded into memory, the verification process prevents or monitors access to unauthorized areas. The verification process of a particular embodiment includes the following operations:

i. 실행을 위해 디지털적으로 서명된 실행 파일을 포함하는 파일 또는 전송을 메모리로 로딩하면서, 디지털 서명 및 실행 파일의 콘텐츠의 무결성에 대해 검사하는 동작;i. Checking the integrity of the digital signature and the contents of the executable file, while loading the memory or file containing the digitally signed executable file for execution;

ii. 비인증된 영역들의 메모리 위치들을 삭감하거나 값을 채움으로써 파일 또는 전송의 임의의 비인증된 영역들을 소거하는 동작;ii. Erasing any unauthorized areas of the file or transfer by reducing or filling in memory locations of unauthorized areas;

iii. 선택적으로, 디스크 상의 그러한 실행 파일의 콘텐츠에 대한 액세스를 가상화하고, 상술된 바와 같이 가상화된 파일 또는 전송의 임의의 비인증된 영역들을 소거하는 동작으로서, 실행 파일이 Win32 CreateFile과 같은 파일 입력/출력 호(call)들을 이용하여 그 자신(예를 들면, 또는 DLL 또는 COM 오브젝트와 같이 그와 관련된 또 다른 실행 가능한 모듈로부터)을 로딩하려고 하면, 그러한 실행 파일의 콘텐츠에 대한 액세스의 가상화가 수행될 수 있는, 상기 소거 동작을 포함할 수 있다.iii. Optionally, virtualizing access to the contents of such an executable file on disk and erasing any unauthorized areas of the virtualized file or transfer as described above, wherein the executable file is a file input / output call such as Win32 CreateFile. When attempting to load itself (eg, or from another executable module associated with it, such as a DLL or COM object) using calls, virtualization of access to the contents of such an executable file may be performed. The erase operation may be included.

이하에 기재된 또 다른 특정 실시예에서, 디지털적으로 서명된 실행 파일을 포함하는 파일 또는 전송의 인증 및 무결성은 마이크로소프트 윈도우즈 PE(Portable Executable) 파일들에 대한 구현을 이용하여 검증된다. 이러한 특정 실시예에서, 운영 시스템(OS) 판매 회사 또는 제공자(예를 들면, 마이크로소프트사)는, 비인증된 영역들을 포함하는 디지털적으로 서명된 파일 또는 전송을 실행하는 것의 보안 위험을 완화 또는 제거하기 위해 검증 프로세스를 구현할 수 있다. 이러한 실시예에서, 실행 파일이 메모리에 로딩될 때, 검증 프로세스는 비인증된 영역들에 대한 액세스를 방지 또는 감시한다. 특정 실시예의 검증 프로세스는 다음의 동작들:In another particular embodiment described below, the authentication and integrity of a file or transmission that includes a digitally signed executable file is verified using an implementation for Microsoft Windows Portable Executable (PE) files. In this particular embodiment, an operating system (OS) sales company or provider (eg, Microsoft) mitigates or eliminates the security risk of executing a digitally signed file or transfer that includes unauthorized areas. You can implement a verification process to accomplish this. In this embodiment, when the executable file is loaded into memory, the verification process prevents or monitors access to unauthorized areas. The verification process of a particular embodiment includes the following operations:

i. 디스크 상의 디지털적으로 서명된 실행 파일의 콘텐츠에 대한 액세스를 가상화하는 동작;i. Virtualizing access to the contents of a digitally signed executable file on a disk;

ii. 비인증된 영역들의 콘텐츠에 대응하는 가상화된 파일들의 위치들을 삭감하거나 값을 채움으로써, 메모리 내의 가상화된 파일들에 대해 파일 또는 전송의 임의의 비인증된 영역들을 소거하는 동작을 포함할 수 있고,ii. Deleting or filling in values of virtualized files corresponding to the contents of unauthorized regions, thereby erasing any unauthorized regions of the file or transfer for the virtualized files in memory;

비인증된 영역들은:Unauthorized realms are:

1. 선택적 헤더의 윈도우 특정 필드들의 체크섬 필드;1. a checksum field of window specific fields of an optional header;

2. 파일 또는 전송의 최종 섹션의 단부를 지난 곳의 정보;2. Information past the end of the last section of the file or transfer;

3. 속성 인증서들에 관련된 정보; 및3. information related to attribute certificates; And

4. 인증서가 속성 인증서 테이블 내의 인증서에 할당된 전체 공간을 채우지 않는 위치들을 포함한다. 4. Include locations where the certificate does not fill the entire space allocated to the certificate in the attribute certificate table.

도 8 및 도 9를 참조하여, 흐름도들은 예시적인 실시예들에서 수행된 기본 프로세싱 동작들을 예시한다.8 and 9, flowcharts illustrate basic processing operations performed in example embodiments.

따라서, 디지털적으로 서명된 콘텐츠에서 보조 정보를 임베딩 및 인증하는 컴퓨터-구현된 시스템 및 방법이 개시된다. 본 발명이 몇몇 예시적인 실시예들에 관련하여 기재되었지만, 본 발명이 기재된 실시예들로 제한되지 않고 첨부된 특허청구범위 및 사상 내의 수정 및 변경으로 실시될 수 있다는 것을 당업자는 인지할 것이다. 따라서, 본원의 기재는 제한적인 대신에 예시적인 것으로서 간주된다. Accordingly, computer-implemented systems and methods are disclosed for embedding and authenticating supplemental information in digitally signed content. While the present invention has been described in connection with some exemplary embodiments, those skilled in the art will recognize that the invention is not limited to the described embodiments but may be practiced with modifications and variations within the appended claims and spirit. Accordingly, the description herein is to be regarded as illustrative instead of limiting.

120: 실행 가능한 코드 블록 122: 헤더
124: 보조 데이터 126: 실행 가능한 코드 및 섹션들
130: 인스톨러 데이터 131: 인스톨러 데이터
321: 실행 가능한 코드 블록 331: 인스톨러 데이터
410: CRC 412: 디지털 서명에 대한 포인터
414: 디지털 서명의 크기 416: 가변 데이터
420: 디지털 서명 510: CRC
512: 디지털 서명에 대한 포인터 514: 디지털 서명의 크기
516: 가변 데이터 520: 디지털 서명
530: 보조 데이터 204: 디스플레이 장치
206: 커서 제어 장치 208: 키보드
218: 버스 브릿지 220: 프로세서
222: 메인 메모리 224: 판독 전용 메모리
226: 통신 장치 228: 저장 장치
120: executable code block 122: header
124: Supplementary Data 126: Executable Code and Sections
130: installer data 131: installer data
321: executable code block 331: installer data
410: CRC 412: pointer to digital signature
414: Digital signature size 416: Variable data
420: digital signature 510: CRC
512: Pointer to digital signature 514: Size of digital signature
516: variable data 520: digital signature
530: auxiliary data 204: display device
206: cursor control unit 208: keyboard
218: bus bridge 220: processor
222: main memory 224: read-only memory
226: communication device 228: storage device

Claims (30)

디지털적으로 서명된 실행 파일(digitally signed executable)을 포함하는 디지털 콘텐츠를 메모리에 로딩하면서, 상기 실행 파일의 디지털 서명(digital signature) 및 콘텐츠의 무결성(integrity)에 대해 검사하는 단계; 및
비인증된 영역들에 대응하는 메모리 위치들을 삭감(zero out) 또는 상기 메모리 위치들에 값을 채움으로써 상기 디지털 콘텐츠의 임의의 비인증된 영역들을 소거하는 단계를 포함하는, 방법.
Checking digital integrity of the executable file and the integrity of the content while loading the digital content including the digitally signed executable into memory; And
Erasing any unauthorized areas of the digital content by zeroing out memory locations corresponding to unauthorized areas or by filling in the memory locations.
제 1 항에 있어서, 상기 디지털 콘텐츠의 비인증된 영역들은 상기 디지털 콘텐츠의 최종 섹션의 단부를 지난 곳의 영역들(regions past the end of the last section)을 포함하는, 방법.The method of claim 1, wherein the unauthorized areas of the digital content include regions past the end of the last section. 제 1 항에 있어서, 상기 디지털 콘텐츠의 헤더 내의 체크섬 필드가 이미지 파일 체크섬과 매칭한다는 것을 검증하는 단계를 포함하는, 방법.2. The method of claim 1 including verifying that a checksum field in the header of the digital content matches an image file checksum. 제 1 항에 있어서, 속성 인증서 테이블(attribute certificate table)이 하나의 단일 엔트리를 포함하고 패딩(padding)을 포함하지 않는다는 것을 검증하는 단계를 포함하는, 방법.The method of claim 1 including verifying that an attribute certificate table contains one single entry and does not include padding. 제 1 항에 있어서, 상기 디지털 서명이 속성 인증서 테이블 내의 상기 디지털 서명에 할당된 전체 공간을 실제로 채운다는 것을 검증하는 단계를 포함하는, 방법.2. The method of claim 1 including verifying that the digital signature actually fills the entire space allocated to the digital signature in an attribute certificate table. 데이터를 포함하는 컴퓨터 판독 가능한 기록 매체에 있어서,
상기 데이터는 컴퓨터에 의해 액세스될 때, 상기 컴퓨터로 하여금:
실행을 위해 디지털적으로 서명된 실행 파일을 포함하는 디지털 콘텐츠를 메모리에 로딩하면서, 상기 실행 파일의 디지털 서명 및 콘텐츠의 무결성에 대해 검사하고,
비인증된 영역들에 대응하는 메모리 위치들을 삭감 또는 상기 메모리 위치들에 값을 채움으로써 상기 디지털 콘텐츠의 임의의 비인증된 영역들을 소거하도록 하는, 컴퓨터 판독 가능한 기록 매체.
A computer-readable recording medium containing data, the method comprising:
When the data is accessed by a computer, it causes the computer to:
Loading digital content including a digitally signed executable file for execution into memory, checking for integrity of the digital signature and content of the executable file,
And erase any unauthorized areas of the digital content by reducing memory locations corresponding to unauthorized areas or by filling in values in the memory locations.
제 6 항에 있어서, 상기 디지털 콘텐츠의 비인증된 영역들은 상기 디지털 콘텐트의 최종 섹션의 단부를 지난 곳의 영역들을 포함하는, 컴퓨터 판독 가능한 기록 매체.7. The computer readable recording medium of claim 6, wherein the unauthorized areas of the digital content comprise areas past an end of a final section of the digital content. 제 6 항에 있어서, 상기 디지털 콘텐츠의 헤더 내의 체크섬 필드가 이미지 파일 체크섬과 매칭한다는 것을 검증하도록 또한 동작 가능한, 컴퓨터 판독 가능한 기록 매체.7. The computer readable medium of claim 6, further operable to verify that a checksum field in the header of the digital content matches an image file checksum. 제 6 항에 있어서, 속성 인증서 테이블이 하나의 단일 엔트리를 포함하고 패딩을 포함하지 않는다는 것을 검증하도록 또한 동작 가능한, 컴퓨터 판독 가능한 기록 매체.7. The computer readable medium of claim 6, further operable to verify that the attribute certificate table includes one single entry and does not include padding. 제 6 항에 있어서, 상기 디지털 서명이 속성 인증서 테이블에서 상기 디지털 서명에 할당된 전체 공간을 실제로 채운다는 것을 검증하도록 또한 동작 가능한, 컴퓨터 판독 가능한 기록 매체.7. The computer readable medium of claim 6, further operable to verify that the digital signature actually fills the entire space allocated to the digital signature in an attribute certificate table. 실행을 위해 디지털적으로 서명된 실행 파일을 포함하는 디지털 콘텐츠를 메모리에 로딩하면서, 상기 실행 파일의 디지털 서명 및 콘텐츠의 무결성에 대해 검사하는 단계; 및
상기 실행 파일의 무결성을 검증하기 위해 상기 실행 파일에 대한 검증 동작들을 수행하는 단계를 포함하는, 방법.
Checking digital integrity of the executable file and the integrity of the content while loading the digital content including the digitally signed executable file for execution into memory; And
Performing verify operations on the executable file to verify the integrity of the executable file.
제 11 항에 있어서, 상기 검증 동작들은, 속성 인증서 테이블이 하나의 단일 엔트리를 포함하고 패딩 또는 고정 데이터를 갖는 패딩을 포함하지 않는다는 것을 검증하는 단계를 포함하는, 방법. The method of claim 11, wherein the verifying operations include verifying that the attribute certificate table includes one single entry and does not include padding or padding with fixed data. 제 11 항에 있어서, 상기 검증 동작들은 인증서가 속성 인증서 테이블 내의 전체 할당된 공간을 실제로 채운다는 것을 검증하는 단계를 포함하는, 방법.12. The method of claim 11, wherein the verifying operations comprise verifying that the certificate actually fills the entire allocated space in the attribute certificate table. 데이터를 포함하는 컴퓨터 판독 가능한 기록 매체에 있어서,
상기 데이터는, 컴퓨터에 의해 액세스될 때, 상기 컴퓨터로 하여금:
실행을 위해 디지털적으로 서명된 실행 파일을 포함하는 디지털 콘텐츠를 메모리에 로딩하면서, 상기 실행 파일의 디지털 서명 및 콘텐츠의 무결성에 대해 검사하고,
상기 실행 파일의 무결성을 검증하기 위해 상기 실행 파일에 대한 검증 동작들을 수행하도록 하는, 컴퓨터 판독 가능한 기록 매체.
A computer-readable recording medium containing data, the method comprising:
The data, when accessed by a computer, causes the computer to:
Loading digital content including a digitally signed executable file for execution into memory, checking for integrity of the digital signature and content of the executable file,
And perform verify operations on the executable file to verify the integrity of the executable file.
제 14 항에 있어서, 상기 검증 동작들은, 속성 인증서 테이블이 하나의 단일 엔트리를 포함하고 패딩 또는 고정 데이터를 갖는 패딩을 포함하지 않는다는 것을 검증하는 단계를 포함하는, 컴퓨터 판독 가능한 기록 매체.15. The computer readable medium of claim 14, wherein the verifying operations comprise verifying that the attribute certificate table includes one single entry and does not include padding or padding with fixed data. 제 14 항에 있어서, 상기 검증 동작들은 인증서가 속성 인증서 테이블 내의 전체 할당된 공간을 실제로 채운다는 것을 검증하는 단계를 포함하는, 컴퓨터 판독 가능한 기록 매체.15. The computer readable medium of claim 14, wherein the verifying operations comprise verifying that the certificate actually fills the entire allocated space in the attribute certificate table. 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020107004137A 2007-07-31 2007-07-31 Computer-implemented methods and systems for embedding and authenticating supplemental information in digitally signed content Expired - Fee Related KR101085365B1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2007/003032 WO2009016426A1 (en) 2007-07-31 2007-07-31 A computer-implemented method and system for embedding and authenticating ancillary information in digitally signed content

Publications (2)

Publication Number Publication Date
KR20100037160A KR20100037160A (en) 2010-04-08
KR101085365B1 true KR101085365B1 (en) 2011-11-21

Family

ID=39186817

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107004137A Expired - Fee Related KR101085365B1 (en) 2007-07-31 2007-07-31 Computer-implemented methods and systems for embedding and authenticating supplemental information in digitally signed content

Country Status (5)

Country Link
JP (1) JP2010535372A (en)
KR (1) KR101085365B1 (en)
AU (1) AU2007357078A1 (en)
CA (1) CA2690095A1 (en)
WO (1) WO2009016426A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397072B2 (en) 2005-05-20 2013-03-12 Rovi Solutions Corporation Computer-implemented method and system for embedding ancillary information into the header of a digitally signed executable
US8484476B2 (en) 2005-05-20 2013-07-09 Rovi Technologies Corporation Computer-implemented method and system for embedding and authenticating ancillary information in digitally signed content

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10642976B2 (en) 2015-06-27 2020-05-05 Mcafee, Llc Malware detection using a digital certificate

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020141588A1 (en) 2001-03-27 2002-10-03 Rollins Doug L. Data security for digital data storage
US6694318B2 (en) 1998-05-01 2004-02-17 Emware, Inc. Split file system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748362B1 (en) * 1999-09-03 2004-06-08 Thomas W. Meyer Process, system, and apparatus for embedding data in compressed audio, image video and other media files and the like
JP2003302900A (en) * 2002-04-12 2003-10-24 Toyo Commun Equip Co Ltd Device and method for generating message digest
US7802110B2 (en) * 2004-08-25 2010-09-21 Microsoft Corporation System and method for secure execution of program code
JP2006092281A (en) * 2004-09-24 2006-04-06 Matsushita Electric Ind Co Ltd Security device with authentication function
US8356295B2 (en) * 2005-02-17 2013-01-15 Symantec Corporation Post-signing modification of software
JP2007004522A (en) * 2005-06-24 2007-01-11 Renesas Technology Corp Storage device
JP4931542B2 (en) * 2005-10-12 2012-05-16 パナソニック株式会社 Program loader having falsification verification function for load destination information, processor including program loader, data processing apparatus including processor, program loading method, and integrated circuit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694318B2 (en) 1998-05-01 2004-02-17 Emware, Inc. Split file system
US20020141588A1 (en) 2001-03-27 2002-10-03 Rollins Doug L. Data security for digital data storage

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397072B2 (en) 2005-05-20 2013-03-12 Rovi Solutions Corporation Computer-implemented method and system for embedding ancillary information into the header of a digitally signed executable
US8484476B2 (en) 2005-05-20 2013-07-09 Rovi Technologies Corporation Computer-implemented method and system for embedding and authenticating ancillary information in digitally signed content
US8892894B2 (en) 2005-05-20 2014-11-18 Rovi Solutions Corporation Computer-implemented method and system for embedding and authenticating ancillary information in digitally signed content

Also Published As

Publication number Publication date
AU2007357078A1 (en) 2009-02-05
WO2009016426A1 (en) 2009-02-05
KR20100037160A (en) 2010-04-08
JP2010535372A (en) 2010-11-18
CA2690095A1 (en) 2009-02-05

Similar Documents

Publication Publication Date Title
US20080133928A1 (en) A computer-implemented method and system for embedding and authenticating ancillary information in digitally signed content
US10373139B2 (en) Java store television
US7805375B2 (en) Digital license migration from first platform to second platform
JP5783630B2 (en) Digital signature on composite resource document
US7512798B2 (en) Organization-based content rights management and systems, structures, and methods therefor
US8892894B2 (en) Computer-implemented method and system for embedding and authenticating ancillary information in digitally signed content
CN1714356B (en) System and method for digital rights management using a standard presentation engine
CA2462818A1 (en) Application rights and controlling capabilities of software application
CN112150136A (en) A payment method, system and device for embedded web page in application
US20020055910A1 (en) Program component distribution
US7383537B2 (en) Debugging an application that employs rights-managed content
WO2002035324A2 (en) System and method for managing digital content
KR101085365B1 (en) Computer-implemented methods and systems for embedding and authenticating supplemental information in digitally signed content
JP4972208B2 (en) Computer-implemented method and system enabling out-of-band tracking of digital distribution
US9081936B2 (en) System and method for tracking a downloaded digital media file
US8706635B2 (en) Use of licensed content without identification thereof
JP2012142022A (en) Method and system to enable out-of-band tracking of digital distribution and to be performed by computer
HK1109477B (en) A computer-implemented method and system for embedding ancillary information into the header of a digitally signed executable

Legal Events

Date Code Title Description
PA0105 International application

St.27 status event code: A-0-1-A10-A15-nap-PA0105

A201 Request for examination
E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

PN2301 Change of applicant

St.27 status event code: A-3-3-R10-R13-asn-PN2301

St.27 status event code: A-3-3-R10-R11-asn-PN2301

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U12-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

FPAY Annual fee payment

Payment date: 20141023

Year of fee payment: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 5

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20161116

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20161116