KR20200000448A - Systems and methods for software activation and license tracking - Google Patents

Systems and methods for software activation and license tracking Download PDF

Info

Publication number
KR20200000448A
KR20200000448A KR1020197037546A KR20197037546A KR20200000448A KR 20200000448 A KR20200000448 A KR 20200000448A KR 1020197037546 A KR1020197037546 A KR 1020197037546A KR 20197037546 A KR20197037546 A KR 20197037546A KR 20200000448 A KR20200000448 A KR 20200000448A
Authority
KR
South Korea
Prior art keywords
license
server
user
activation
client
Prior art date
Application number
KR1020197037546A
Other languages
Korean (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
Priority claimed from US15/601,909 external-priority patent/US10706130B2/en
Application filed by 맥퍼, 인크. filed Critical 맥퍼, 인크.
Publication of KR20200000448A publication Critical patent/KR20200000448A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • G06F21/1077Recurrent authorisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • G06F2221/0773

Abstract

최종 사용자 컴퓨팅 장치(컴퓨터)에서 소프트웨어 활성화 및 상태 추적을 위한 시스템 및 방법은 소프트웨어 개발자에게 소프트웨어 배포 및 소프트웨어 활성화 사용 통계를 수집할 수 있는 유연하고 안전한 도구를 제공하기 위해 개발되었다. 이 방법은 다음과 같은 논리적 단계로 구성된다: (a) 획득 확정을 취득한다; (b) 라이센스를 요청한다; (c) 라이센스를 발급하고 최종 사용자에게 제공하되, 라이센스는 서버에 의해 개인 키로 보호되며 개인 키는 클라이언트에 저장되지 않는다; (d) 사용자 컴퓨터에 라이센스를 검증한다; (e) 사용자 컴퓨터에 라이센스를 저장한다; (f) 활성화 상태를 주기적으로 추적한다; (g) 사용자의 라이센스에 대한 다른 조치를 한다. 라이센스를 검증하는 것은 애플리케이션과 연관된 클라이언트에서 수정 없이 서버로부터 받은 라이센스를 확인하고 라이센스를 클라이언트에 저장하는 것을 포함한다.Systems and methods for software activation and status tracking on end-user computing devices (computers) have been developed to provide software developers with a flexible and secure tool for collecting software distribution and software activation usage statistics. The method consists of the following logical steps: (a) acquiring acquisition confirmation; (b) request a license; (c) issue a license and provide it to the end user, where the license is protected by the server with the private key and the private key is not stored on the client; (d) verify the license on the user's computer; (e) store the license on the user's computer; (f) periodically track the activation status; (g) Take any other action on your license. Validating the license includes checking the license received from the server without modification at the client associated with the application and storing the license on the client.

Description

소프트웨어 활성화 및 라이센스 추적을 위한 시스템 및 방법Systems and methods for software activation and license tracking

본 발명의 분야는 소프트웨어 활성화 시스템 및 방법에 관련된 것이다.FIELD OF THE INVENTION The field of the present invention relates to software activation systems and methods.

현재 다양한 관련 기술의 소프트웨어 활성화 방법이 존재한다. 대부분의 관련 소프트웨어 활성화 방법에는 인터넷 연결이 필요하다. 그러나 소프트웨어 활성화에 인터넷 연결을 사용하면 다양한 문제와 단점이 발생할 수 있다. 예를 들어, 제한되지는 않지만, 무단 (예 : 불법) 소프트웨어 사용 문제가 있다. 소프트웨어 활성화 방법이 종래 기술보다 더 정교해지지 않는 한, 보안 및 불법 소프트웨어 사용 방지의 종래 기술 문제는 소프트웨어 활성화 분야에 남아있을 것이다.Currently, there are methods of software activation of various related technologies. Most related software activation methods require an internet connection. However, using an Internet connection for software activation can cause a variety of problems and drawbacks. For example, but not limited to, there are problems with using unauthorized (eg illegal) software. Unless the software activation method is more sophisticated than the prior art, the prior art problem of security and prevention of illegal software use will remain in the field of software activation.

일부 관련 기술 접근법은, 잘못된 파라미터 정보를 포함하는 가짜 라이센스 파일을 생성하고, 라이센스의 검증을 수행하고, 그리고 라이센스 검증이 완료되면 잘못된 파라미터 정보를 올바른 파라미터 정보로 대체하는, 애플리케이션과 연관된 클라이언트를 포함하는 라이센스에 대한 검증 기술을 사용할 수 있다. 그러나 이 방법에는 여러 가지 문제점과 단점이 있을 수 있다. 예를 들어 제한되지는 않지만 가짜 라이센스 접근 방식은 라이센스 파일의 콘텐츠가 서버 측이 아닌 클라이언트의 머신에서 작성되는 것으로 가정한다. 따라서 키생성 앱(keygen app)이, 공급 업체 앱을 파괴할 필요없이, 공급 업체 앱과 동일한 방식으로 이러한 파일을 생성할 수 있다.Some related technical approaches include a client associated with the application that generates a fake license file that contains incorrect parameter information, performs validation of the license, and replaces the incorrect parameter information with the correct parameter information when the license validation is complete. Validation techniques for licenses can be used. However, this method can have several problems and disadvantages. For example, but not by way of limitation, the fake license approach assumes that the contents of the license file are written on the client's machine and not on the server side. Thus, a keygen app can generate these files in the same way as a vendor app, without having to destroy the vendor app.

본 발명은 다음의 양태들에 관한 것이다: 최종 사용자를 위한 활성화 프로세스를 단순화한다; 활성화 프로세스의 각 단계에서 활성화 방법을 안전하게(secure) 하여 무단 (예 : 불법) 소프트웨어 사용을 방지한다; 새 컴퓨터에서 소프트웨어 재 활성화, 실수로 활성화 번호 손실 등의 예기치 않은 문제와 관련된 고객 지원 문의 횟수를 줄이기 위해 향후 활성화 상태를 추적한다.The present invention relates to the following aspects: simplifies the activation process for the end user; Secure the activation method at each stage of the activation process to prevent unauthorized (eg illegal) software use; Track future activation status to reduce the number of customer support calls related to unexpected problems such as software reactivation on the new computer or accidental loss of the activation number.

활성화 프로세스의 제 1 단계는 애플리케이션을 획득하는 것이다. 애플리케이션의 획득은 구매, 경품 또는 공급 업체가 정의한 기타 방법을 통해 이루어질 수 있다. 사용자는 애플리케이션 획득 확정을 받아야 한다. 애플리케이션의 획득에 대한 이 확정은, 여기에 제한되는 것은 아니며, 다음과 같은 형태로 존재할 수 있다: (a) 활성화 키-예를 들어 소프트웨어 개발자가 제공 한 고유한 심볼 조합; 또는 (b) 특정 사용자에게 연결된 활성화 시스템의 데이터베이스에 있는 레코드.The first step in the activation process is to acquire an application. Acquisition of applications can be through purchases, giveaways or other methods defined by the supplier. The user must be confirmed for the application acquisition. This confirmation of the acquisition of the application is not limited thereto, and may exist in the form of: (a) an activation key—for example, a unique symbol combination provided by a software developer; Or (b) a record in the database of the activation system that is associated with a particular user.

이러한 애플리케이션의 획득은 다양한 방식으로 수행될 수 있다. 예를 들어 (이에 국한되지는 않음) 소프트웨어는 온라인 상점에서 소프트웨어를 구매할 수 있으며, OEM 공급 세트와 관련된 소프트웨어를 포함하여 CD, DVD 또는 USB 드라이브를 포함하지만 이에 국한되지 않는 물리적 매체로 전달이 발생할 수 있다. 이러한 각 애플리케이션의 획득 모드에는 획득 확정의 적합성 설정과 관련된 고유한 메커니즘이 있으며 또한 라이센스 발급 규칙도 있다.Acquisition of such an application can be performed in various ways. For example, but not limited to, software can be purchased from online stores, and delivery can occur on physical media, including but not limited to CD, DVD, or USB drives, including software associated with OEM supply sets. have. In each of these application acquisition modes, there is a unique mechanism for establishing the suitability of acquisition commitments, and there are also license issuance rules.

획득 확정은 활성화 번호를 포함할 수 있다. 한쪽으로부터, 획득 확정은 인간 판독 가능할 수 있으며, 이는 가능한 정오표의 수를 감소시킬 수 있다. 다른 한편으로, 획득 확정은 무차별 검색을 방지하기에 충분히 길다. 또한, URL 별 활성화 체계가 개발되어 개발자가 사용자에게 이메일에서 또는 웹상의 버튼에 대한 선택 또는 클릭 동작을 포함하여 (여기에 한정되는 것은 아님) 사용자 동작으로 소프트웨어를 활성화할 수있는 옵션을 제공 할 수 있다.Acquisition confirmation may include an activation number. From one side, the acquisition confirmation may be human readable, which may reduce the number of possible errata. On the other hand, acquisition confirmation is long enough to prevent indiscriminate searches. In addition, a URL-specific activation scheme has been developed that allows developers to give users the option to activate the software as a user action, including, but not limited to, selection or click actions for email or on buttons on the web. have.

특정 사용자와 관련된 활성화 시스템의 데이터베이스의 레코드는 하나 이상의 방식으로 개시될 수 있다. 예를 들어, 제한적이지 않지만, 활성화 시스템의 데이터베이스에 있는 레코드는 (a) 온라인 또는 오프라인 상점에서 소프트웨어를 구매한 후에 개시될 수 있다; 또는 (b) 활성화 시스템 관리자에 의해 수동으로 개시될 수 있다. 사용자는 소프트웨어 라이센스를 얻기 위해 식별 정보를 제공해야 한다. 식별 정보는, (a) 고유한 로그인 식별자 및 비밀번호 쌍; (b) 활성화 서버에 의해 제공된 보안 키로 보호되는 활성화 서버에 대한 보안 연결; 또는 (c) 사용자의 명확한 식별을 허용하는, 활성화 시스템의 관리자에 의해 정의된 방법을 포함할 수 있다.Records in the database of the activation system associated with a particular user may be initiated in one or more ways. For example, but not by way of limitation, records in the database of the activation system may be initiated after (a) purchasing software at an online or offline store; Or (b) manually initiated by an activation system administrator. The user must provide identification information to obtain a software license. The identification information may comprise (a) a unique login identifier and password pair; (b) a secure connection to an activation server protected by a security key provided by the activation server; Or (c) a method defined by the administrator of the activation system, which allows for a clear identification of the user.

활성화 시스템의 데이터베이스에서 레코드를 개시한 후 다음 단계는 라이센스 요청을 생성하는 것이다. 이 단계는 인터넷 연결이 필요하다. 본 예시적인 구현에 따르면, 프로토콜이 제공된다. 또한, 활성화 서버에서 데이터가 처리되는 방식에 대한 메커니즘도 제공된다. 사용자 컴퓨터로부터의 요청에는 다음 중 하나 이상을 포함하되 이에 국한되지 않는 다음 데이터가 포함될 수 있다: (a) 애플리케이션 번들 ID (예 : 특정 형식의 제품 이름); (b) 번들 버전 (예 : 제품 버전); (c) 현재 활성화를 위해 유지되는 추가 데이터 세트; (d) 사용자의 계정 식별자 (예 : 이메일 주소) (e) 고유한 컴퓨터 식별자에 대한 두 값; (f) 획득 확정; (g) 사용자의 이름과 성; (h) 보안을 강화하기 위한 무작위 데이터 블록; (i) 서버 측에서 데이터를 열기위한 비밀번호; 및 (j) 오류 메시지의 언어.After initiating a record in the activation system's database, the next step is to generate a license request. This step requires an internet connection. According to this example implementation, a protocol is provided. A mechanism is also provided for how data is processed at the activation server. Requests from user computers may include the following data, including but not limited to one or more of the following: (a) an application bundle ID (eg, a specific format of a product name); (b) bundled versions (such as product versions); (c) an additional data set maintained for current activation; (d) the user's account identifier (eg, email address); (e) two values for a unique computer identifier; (f) confirmation of acquisition; (g) the user's first and last name; (h) random data blocks to enhance security; (i) a password for opening data on the server side; And (j) the language of the error message.

라이센스 요청이 생성되면, 세 번째 단계는 라이센스를 발급하여 사용자에게 전달하며, 라이센스는 서버에 의해 개인 키로 보호되며 개인 키는 클라이언트에 저장되지 않는다. 라이센스 요청을 받은 후 활성화 요청이 올바른 경우 서버가 라이센스를 발급하거나 그렇지 않으면 오류 메시지를 보낸다. 서버 응답에는 다음 정보가 포함된다: (a) 오류 코드 (예 : 성공한 경우 0); (b) 오류 메시지 또는 암호화된 라이센스; (c) 소프트웨어의 개인 키를 사용하여 생성된 라이센스 파일의 서명 또는 오류 메시지.Once a license request is generated, the third step is to issue a license and deliver it to the user, the license is protected by the server with the private key and the private key is not stored on the client. After receiving the license request, if the activation request is valid, the server issues a license or otherwise sends an error message. The server response contains the following information: (a) error code (eg 0 if successful); (b) error messages or encrypted licenses; (c) The signature or error message of the license file generated using the software's private key.

소프트웨어 라이센스가 최종 사용자의 컴퓨터로 전달된 후 소프트웨어 라이센스는 애플리케이션과 관련된 클라이언트에서 서버로부터 수정 없이 받은 라이센스를 확인하고 클라이언트에 라이센스를 저장하는 것에 의한 확인을 통과해야 한다. 라이센스 파일은 사용자 컴퓨터 파일 시스템의 특정 위치에 기입된다. 라이센스 유효성은 애플리케이션의 첫 번째 출시 후, 앱 설치 중, 앱의 평가판 기간이 끝난 후 첫 번째 출시 중에 또는 다른 적절한 상황에서 통상의 기술자에게 이해되는 바와 같이 검사된다. 라이센스 출처 검증 (예 : 공개 키에 의한 확인) 및 완전성의 확정이 완료된 후에도 사용자는 소프트웨어 작업을 계속할 수 있다.After the software license is delivered to the end user's computer, the software license must pass a confirmation by the client associated with the application to verify the license received from the server without modification and to store the license on the client. The license file is written to a specific location on the user computer file system. License validity is checked as understood by the skilled person after the first release of the application, during the app installation, during the first release after the trial period of the app, or in other appropriate circumstances. The user can continue working on the software after the license source verification (eg verification by public key) and integrity is complete.

활성화 상태는 주기적으로 활성화 서버로 전송된다. 보고 규칙은 개발자가 정의할 수 있다. 활성화 상태는 개발자가 정의한 다양한 조건 (예 : 재 활성화가 허용되는 경우 소프트웨어 재 활성화)에 따라 트리거될 수 있다. The activation status is periodically sent to the activation server. Reporting rules can be defined by the developer. The activation state can be triggered according to various conditions defined by the developer (eg software reactivation if reactivation is allowed).

예시적인 구현은 또한 원격으로 (예를 들어, 활성화 서버 측으로부터) 그리고 직접적으로 (예를 들어, 사용자에 의해 시작된) 라이센스를 비활성화 가능성에 관한 것이다.Example implementations also relate to the possibility of deactivating a license remotely (eg, from an activation server side) and directly (eg, initiated by a user).

도 1은 예시적인 구현에 따른 클라이언트 및 서버를 포함하는 프로토콜의 예시적인 프로세스를 도시한다.
도 2는 예시적인 구현에 따른 제 1 프로토콜에 대한 예를 도시한다.
도 3은 예시적인 구현에 따른 제 2 프로토콜에 대한 예를 도시한다.
도 4는 예시적인 구현에 따른 서버를 포함하는 프로토콜의 예시적인 프로세스를 도시한다.
도 5는 예시적인 구현에 따른 클라이언트를 포함하는 프로토콜의 예시적인 프로세스를 도시한다.
도 6은 일부 예시적인 구현에 적합한 예시적인 환경을 도시한다.
도 7은 일부 예시적인 구현에 사용하기 위해 외부 호스트와 연관된 예시적인 컴퓨팅 장치를 갖는 예시적인 컴퓨팅 환경을 도시한다.
1 illustrates an example process of a protocol including a client and a server according to an example implementation.
2 shows an example for a first protocol according to an example implementation.
3 shows an example for a second protocol according to an example implementation.
4 illustrates an example process of a protocol including a server according to an example implementation.
5 illustrates an example process of a protocol including a client in accordance with an example implementation.
6 illustrates an example environment suitable for some example implementations.
7 illustrates an example computing environment having an example computing device associated with an external host for use in some example implementations.

본 명세서에 기술된 주제는 예시적인 구현에 의해 교시된다. 명확성을 위해 그리고 주제를 모호하게 하는 것을 피하기 위해 다양한 세부 사항이 생략되었다. 아래에 나타난 예들은 소프트웨어 활성화 및 라이센스 추적을 위한 구조 및 기능에 관한 것이다.The subject matter described in this specification is taught by example implementations. Various details have been omitted for clarity and to avoid obscuring the subject. The examples shown below relate to the structure and functionality for software activation and license tracking.

본 명세서에서 사용된 용어는 통상의 기술자에게 통상의 일반적인 의미를 갖는 것으로 이해된다. 용어는 예로서 정의될 수 있지만, 제공된 정의로 제한되지는 않는다. 예를 들어 (이에 국한되지는 않음) "사용자"(user) 또는 "최종 사용자"(end user)는 인가된(authorized) 방식으로 (예를 들어, 법적으로) 소프트웨어의 사본을 획득하고 컴퓨팅 장치에서 소프트웨어를 올바르게 작동하는, 개인과 같은 엔티티(entity)를 포함할 수 있다. 또한 "개발자" 또는 "공급 업체"(vendor)는 논리적으로 완성된 컴퓨터 프로그램과 같은 하나 이상의 소프트웨어 사본을 배포하는 개인 또는 법인(legal entity)과 같은 엔티티 일 수 있다. 또한, "소프트웨어 설치"는, 개발자가 의도 한 방식으로 컴퓨터 프로그램을 작동시키는 방식으로, 사용자와 연관된 사용자 컴퓨팅 장치 상에 배치된 컴퓨터 프로그램의 사본이다.It is to be understood that the terminology used herein has the general meaning common to those skilled in the art. The term may be defined by way of example, but is not limited to the definition provided. For example, but not limited to, a "user" or "end user" obtains a copy of the software (eg, legally) in an authorized manner and on a computing device. It may include entities such as individuals that operate the software correctly. A "developer" or "vendor" may also be an entity, such as a person or legal entity that distributes one or more copies of software, such as a logically completed computer program. A "software installation" is also a copy of a computer program disposed on a user computing device associated with a user, in a manner that operates the computer program in a manner intended by the developer.

또한, "활성화"(activation)에는 소프트웨어 설치의 적법성을 확정하고(예 : 소프트웨어 설치가 인가되었는지 여부) 개발자가 설계한 어떠한 기능적 제한(있는 경우)을 제거하는 절차 또는 절차 세트를 포함할 수 있다. "평가판"(trial)은 사용자가 소프트웨어에 익숙해 지도록 제한된 기능을 갖춘 소프트웨어 설치 사용 유형을 포함할 수 있다. 또한, "획득 확정"(acquisition confirmation)은 사용자가 소프트웨어를 합법적으로 사용할 수 있는 권한 (예 : 인가)을 확정하는 디지털 엔티티이며, 획득 프로세스(예 : 구매, 경품 등) 후에 사용자에게 제공되어야한다.In addition, "activation" may include a procedure or set of procedures that establishes the legitimacy of a software installation (eg, whether the software installation is authorized) and removes any functional restrictions (if any) designed by the developer. A "trial" may include a type of software installation use with limited functionality to familiarize the user with the software. In addition, an "acquisition confirmation" is a digital entity that establishes the user's right to legally use the software (eg, authorization) and must be provided to the user after the acquisition process (eg, purchase, giveaway, etc.).

또한, "활성화 번호"(activation number) 또는 "활성화 키"(activation key)는 획득 확정의 유형으로 사용되는 사람이 읽을 수 있는 조합 (예를 들어, 영숫자 기호) 일 수 있다. 또한, "라이센스"는 소프트웨어 설치가 특정 컴퓨터 장치에서 사용될 수 있는지를 식별하는데 사용되는 데이터를 포함하는 컴퓨터 파일을 포함할 수 있다. "라이센스 유형"에는 라이센스 생성 규칙 세트가 포함될 수 있으며, 이 규칙은 소프트웨어 사용 조건을 다르게 하기 위해 개발자에 의해 설정된다. 이러한 규칙에는, 여기에 제한되는 것은 아니며, 소프트웨어 사용 기간(예 : 1년, 6개월, 수명), 여러 가지 재 활성화, 제공될 특정 기능 등이 포함될 수 있다.Further, the "activation number" or "activation key" may be a human readable combination (e.g., alphanumeric symbol) used as the type of acquisition confirmation. A "license" may also include a computer file that contains data used to identify whether a software installation can be used on a particular computer device. The "license type" may include a set of license generation rules, which are set by the developer to vary the software license terms. Such rules include, but are not limited to, software usage periods (eg, one year, six months, lifetime), various reactivations, and specific features to be provided.

또한, "활성화 서버"(Activation Server) 또는 "서버"는 사용자의 컴퓨팅 장치에 대한 원격 컴퓨팅 장치이며 소프트웨어 설치 활성화를 위해 필요한 동작을 수행한다. 예시적인 구현에 따르면, 서버는 통상의 기술자에게 알려진 하드웨어를 포함할 수 있다. 또한 "번들 ID"(bundle ID)는 최종 사용자 컴퓨터의 운영 체제에서 읽을 수 있는 특수 형식의 애플리케이션 식별자(application identifier)이다.In addition, an "Activation Server" or "Server" is a remote computing device for a user's computing device and performs the operations required for software installation activation. According to an example implementation, the server may include hardware known to those skilled in the art. A "bundle ID" is also a special type of application identifier that can be read by the operating system of the end user's computer.

예시적인 구현의 양태들은 최종 사용자를 위한 활성화 프로세스를 단순화하고; 활성화 프로세스의 각 단계에서 무단 (예 : 불법) 소프트웨어 사용을 방지하기 위해 활성화 방법을 안전하게(secure) 하고; 새로운 컴퓨터에서의 소프트웨어의 재-활성화, 실수로 활성화 번호 손실 등의 예기치 않은 문제와 관련된 고객 지원 문의 횟수를 줄이기 위해 향후 활성화 상태를 추적하는 것에 관련된다.Aspects of the example implementation simplify the activation process for the end user; Secure the activation method to prevent unauthorized (eg, illegal) use of the software at each stage of the activation process; It involves tracking future activation status to reduce the number of customer support inquiries related to unexpected problems such as re-activation of software on new computers, accidental loss of activation number.

전술한 종래 기술의 보안 격차를 극복하기 위해, 예시적인 구현은 디지털 서명의 비대칭 방식에 관한 것이다. 보다 구체적으로, 예시적인 구현은 각 공급 업체 애플리케이션마다 고유한 키 쌍을 사용한다; 모든 공급 업체 앱에 통합된 공개 키와 서버 쪽에 안전하게 저장된 개인 키. 서버에 위치한 개인 키를 보호하기 위해, 예시적인 구현은 내부 서버에만 이용 가능한 격리된 스토리지 시스템(storage system)을 포함하지만 이에 제한되지 않는 다양한 기술 및 방법을 사용할 수 있으며, 여기서 서버는 인터넷에 연결되지 않으며, 암호화된 연결을 설정하기 위해 SSL을 사용하고 클라우드의 가상 격리 섹션의 권한 설정(provision)을 위한 AWS 가상 개인 클라우드(Virtual Private Cloud) 서비스를 사용한다. To overcome the security gap of the prior art described above, an example implementation is directed to an asymmetric manner of digital signatures. More specifically, the example implementation uses a unique key pair for each vendor application; Public keys integrated into all vendor apps and private keys securely stored on the server side. To protect a private key located on a server, the example implementation may use a variety of techniques and methods, including but not limited to an isolated storage system available only to internal servers, where the server is not connected to the Internet. It uses SSL to establish an encrypted connection and uses the AWS Virtual Private Cloud service for provisioning in the virtual isolation section of the cloud.

불법 액세스로부터 보호하기 위한 네트워크 방화벽 사용Use a network firewall to protect against illegal access

서버가 해당 요청을 수신하면, 서버는 라이센스 파일의 콘텐츠를 생성하고 고유하고 안전한 개인 키로 라이센스 파일에 서명한다. 따라서 서버는 디지털 서명을 만든다. 고유한 안전한 개인 키가 있는 서명된 라이센스 파일은 각 공급 업체 앱에 따라 다르다.When the server receives the request, the server generates the contents of the license file and signs the license file with a unique and secure private key. Thus, the server creates a digital signature. The signed license file with a unique secure private key is specific to each vendor app.

공급 업체 앱은 디지털 서명이 있는 라이센스 파일을 수신하여 이를 사용자의 머신 (클라이언트)에 저장한다. 악의적인 행위자 (예 : 해커)가 악의적인 행위를 시도할 경우 (예 : 라이센스 파일을 변경하려고 시도하거나 가짜 라이센스를 생성하려고 시도하는 경우), 이 라이센스 파일의 서명 확인(signature validation)이 공급 업체 앱 상에서 실패한다. 따라서 라이센스 파일의 콘텐츠가 유효하지 않게 되고 공급 업체 앱은 악의적인 시도 (예 : 공급 업체 앱을 크랙하려는 시도)를 견뎌낸다.The vendor app receives the license file with the digital signature and stores it on the user's machine (client). If a malicious actor (e.g. a hacker) tries to do something malicious (e.g. attempts to change the license file or generates a fake license), the signature validation of this license file will be Fail on As a result, the contents of the license file become invalid and the vendor app withstands malicious attempts (e.g. attempts to crack the vendor app).

이들 및 다른 양태들을 달성하기 위해, 다양한 단계들이, 여기에 한정되는 것은 아니며, 도 1에 도시된 바와 같은 활성화 프로세스(100)에서 수행될 수 있다. 101에서, 사용자는 애플리케이션을 획득한다. 또한, 103에서, 사용자는 다양한 모드 중 하나에 의해 애플리케이션의 획득에 대한 확정을 수신한다. 애플리케이션의 각 획득 모드에는 라이센스 발급 규칙 세트 및 획득 확정의 준수(conformity)의 설정과 관련된 고유한 메커니즘이 있다. 획득 확정은 활성화 번호를 포함할 수 있고 사람이 읽을 수 있지만, 활성화 확정을 결정하기 위해 권한이 없는 당사자에 의한 무차별 검색을 방지하기에 충분히 길다. 또한, 예시적인 구현에 따른 URL 별 활성화 방식은 개발자가 사용자에게 사용자 동작으로 소프트웨어를 활성화하는 옵션을 제공하게 할 수 있다.To achieve these and other aspects, various steps may be performed in the activation process 100 as shown in FIG. 1, without being limited thereto. At 101, the user acquires an application. Further, at 103, the user receives a confirmation of the acquisition of the application by one of various modes. Each acquisition mode of the application has its own mechanism related to the set of license issuance rules and the conformance of acquisition commitments. The acquisition confirmation may include an activation number and is human readable, but long enough to prevent indiscriminate searches by unauthorized parties to determine the activation confirmation. In addition, the activation method for each URL according to an exemplary implementation may enable a developer to provide a user with an option of activating the software by a user action.

특정 사용자와 연관된 활성화 시스템의 데이터베이스의 레코드(record)는 105에서 시작될 수 있다. 사용자는 107에서 소프트웨어 라이센스를 얻기 위해 식별 정보를 제공해야 한다. 활성화 시스템의 데이터베이스에서 레코드가 시작된 후, 109에서 프로토콜에 의해 라이센스 요청이 생성된다. 프로토콜에 따라, 라이센스는 서버에서 생성되고 보안 개인 키로 서명된다. 라이센스 요청이 109에서 생성되면, 라이센스는 111에서 사용자에게 제공되고, 사용자는 113에서 디지털 서명으로 라이센스를 수신하고 라이센스 파일을 사용자 장치에 저장한다.A record of the database of the activation system associated with a particular user may begin at 105. The user must provide identification information to obtain a software license at 107. After the record is started in the database of the activation system, a license request is generated by the protocol at 109. According to the protocol, a license is generated on the server and signed with a secure private key. If a license request is generated at 109, the license is provided to the user at 111, and the user receives the license with a digital signature at 113 and stores the license file on the user device.

상술한 바와 같이 라이센스 요청이 수신된 후, 서버는 115에서 활성화가 올바른지 여부를 결정하고, 활성화 요청이 올바른 경우 119에서 라이센스를 발급하거나, 그렇지 않으면 117에서 오류 메시지를 전송한다. 소프트웨어 라이센스가 최종 사용자의 컴퓨터로 전달된 후, 119에서 확인(validation)을 통과해야 한다. 라이센스 파일은 사용자 컴퓨터 파일 시스템의 특정 위치에 기입된다. 애플리케이션이 실행되면 라이센스 유효성(validity)은, 서버에서 받은 라이센스를 수정함 없이, 121에서 검사된다; 서명된 라이센스 파일을 변경하거나 가짜 라이센스를 생성하려고 시도하면 이러한 시도는 공급 업체 측에서 실패하고 라이센스 파일의 콘텐츠가 유효하지 않게 되고, 그 결과 공급 업체 앱은 크랙되지 않는다. 라이센스 출처의 검증(verification) 및 완전성(completeness)을 확정(confirmation)한 후, 소프트웨어 설치가 완료되고 소프트웨어는 123에서 사용할 준비가 된다. 활성화 상태는 정기적으로 활성화 서버로 전송된다. 또한, 라이센스는 원격으로 또는 직접 비활성화 될 수 있다.As described above, after the license request is received, the server determines at 115 whether the activation is correct, issues a license at 119 if the activation request is correct, or sends an error message at 117. After the software license is delivered to the end user's computer, it must pass validation at 119. The license file is written to a specific location on the user computer file system. When the application is executed, the license validity is checked at 121 without modifying the license received from the server; If you attempt to change the signed license file or generate a fake license, these attempts will fail on the vendor side and the contents of the license file will be invalid, resulting in the vendor app not cracking. After verifying the verification and completeness of the license source, the software installation is complete and the software is ready for use at 123. The activation status is periodically sent to the activation server. In addition, licenses can be deactivated remotely or directly.

다양한 동작들에 대한 추가 세부 사항들이 아래에서 더 상세히 설명된다.Further details of various operations are described in more detail below.

획득 확정의 취득(Obtaining an Acquisition Confirmation)Obtaining an Acquisition Confirmation

인가된 방식으로 (예 : 법적으로) 소프트웨어를 사용하려면 사용자는 획득 확정을 받아야 한다. 이러한 획득 확정은 여기에 한정되는 것은 아니며 다음을 포함하는 다양한 형태로 존재할 수 있다: (a) 활성화 키 (예를 들어, 소프트웨어 개발자에 의해 제공되는 심볼들의 고유한 조합); 또는 (b) 특정 사용자와 연결된 활성화 시스템 데이터베이스의 레코드. 획득을 완료한 후에는 사용자에게 획득 확정을 소프트웨어 라이센스로 교환하는 방법에 대한 지침이 제공되어야한다.In order to use the software in an authorized manner (eg legally), the user must obtain an acquisition confirmation. Such acquisition confirmation may exist in a variety of forms, including but not limited to: (a) an activation key (eg, a unique combination of symbols provided by a software developer); Or (b) a record in the activation system database associated with a particular user. After completing the acquisition, the user should be provided with instructions on how to exchange the acquisition confirmation for a software license.

상술한 바와 같이, 사용자는 획득 확정 (예 : 활성화 번호)을 취득해야 한다. 소프트웨어 공급 업체는 하나 이상의 다른 활성화 번호 배포 옵션을 가질 수 있다:As mentioned above, the user must acquire an acquisition confirmation (eg an activation number). Software vendors may have one or more other activation number distribution options:

직접 판매 (예 : 공급 업체 웹 사이트상에서의 온라인 판매 또는 공급 업체 소매점을 통한 직접 판매);Direct sales (for example, online sales on a supplier's website or direct sales through a supplier's retail store);

제3자 재판매자 또는 파트너를 통한 판매;Sales through third party resellers or partners;

물리적 매체 (예 : CD, USB 스틱 또는 SD 카드) 상의 박스 버전 또는 온라인을 통한 배포Boxed version on physical media (e.g. CD, USB stick or SD card) or distributed via online

전술한 배포 방법은 획득 확정을 취득하는 상이한 방식 및 순서를 요구할 수 있다. 경우에 따라, 지불이 접수되자마자, 요구에 따라 획득 확정이 제공될 수 있다; 다른 경우에는 일부 물리적 매체에 전달할 대량의 사전 생성된 활성화 번호를 제공해야 할 수도 있다. 각 경우에, 공급 업체는 (예컨대, 마케팅 및 분석 목적을 위해) 활성화 번호가 생성되었던 조건(예를 들어 파트너, 마케팅 캠페인, 데이터, 카운트 및 다른 조건)과 연관된 추가 정보를 알아야 한다.The distribution method described above may require different ways and order of obtaining acquisition confirmation. In some cases, as soon as a payment is received, an acquisition confirmation may be provided upon request; In other cases, it may be necessary to provide a large number of pre-generated activation numbers for delivery to some physical medium. In each case, the supplier must know additional information associated with the conditions (eg, partners, marketing campaigns, data, counts and other conditions) in which the activation number was generated (eg for marketing and analysis purposes).

예시적인 구현은 획득 확정 생성의 적어도 3가지 기본 메커니즘을 포함한다:An example implementation includes at least three basic mechanisms of acquisition confirmation generation:

URL에 의한 생성 - 획득 확정에 대한 각 요청이 활성화 서버와 연결된 특정 URL로 재지정(redirection)될 것이다. 완전하고 올바르게 구성된 요청의 경우 서버는 획득 확정으로 응답한다.Generation by URL-Each request for acquisition confirmation will be redirected to a specific URL associated with the activation server. In the case of a complete and correctly configured request, the server responds with an acquisition confirmation.

'대량'(bulk) 생성 - 서버는 소프트웨어 배포자에게 '그대로'(as is) 제공되거나 사용자를 통해 확산되는 유한 수량의 활성화 번호를 생성한다.'Bulk' Generation-The server generates a finite number of activation numbers that are provided 'as is' to the software distributor or spread through the user.

단일 생성 - 획득 확정을 생성하는 이 방법은 하나의 획득 확정을 생성해야 할 때와 같이 테스트 및 지원 목적으로 주로 사용된다.Single Generation-This method of generating acquisition confirmations is primarily used for testing and support purposes, such as when one acquisition confirmation needs to be created.

획득 확정은 암호화 없이 서버에 의해 '그대로' 전송될 수 있다.Acquisition confirmation may be sent 'as is' by the server without encryption.

URL에 의한 생성(Generation by URL)Generation by URL

이 방법은 하나 이상의 획득 확정에 대한 요청을 포함한다. 이 방법은 온라인에서 직접 구매할 때 가장 많이 사용되지만 애플리케이션을 취득하는 다른 모드에서 사용할 수 있다. 도 2는 URL에 의한 생성에 기초하여 활성화 코드를 요청하는 프로세스의 예시적인 구현(200)을 도시한다. 도 2에서, 사용자 워크 스테이션(201), 지불 시스템(203) 및 활성화 서버(205)가 개시되어있다. 그러나 통상의 기술자라면 이해할 수 있는 바와 같이, 본 발명의 범위를 벗어나지 않은 채 다른 구현들로 대체 될 수 있다.This method includes a request for one or more acquisition confirmations. This method is most commonly used when buying directly online, but can be used in other modes of acquiring an application. 2 shows an example implementation 200 of a process for requesting an activation code based on generation by URL. In FIG. 2, a user workstation 201, payment system 203 and activation server 205 are disclosed. However, as will be appreciated by those skilled in the art, other implementations may be substituted without departing from the scope of the present invention.

1. 사용자가 구매 페이지(예 : 개발자 웹 사이트 또는 타사 웹 리소스 또는 제품 구매 방식)를 방문한다. (207)1. The user visits a purchase page (such as a developer's website or a third-party web resource or product purchase method). (207)

2. 사용자는 이름/성, 이메일 주소, 전화번호, 제품 수량, 소프트웨어 사용 기간 등과 같은 필수 정보를 제공한다. (207)2. The User will provide the necessary information such as first name / last name, email address, telephone number, product quantity, software usage period, etc. (207)

3. 구매가 성공하면, 청구 시스템은 특정 API에 의해 수집된 정보를 소프트웨어 공급 업체의 서버로 전송한다; 주문 정보는 활성화 서버에 저장되고 활성화 키가 생성된다 (209, 211a, 211b).3. If the purchase is successful, the billing system sends the information collected by the specific API to the server of the software vendor; Order information is stored in the activation server and an activation key is generated (209, 211a, 211b).

4. 사용자는 활성화 서버로부터 활성화 키를 취득한다. 활성화 키는 구매 페이지에 명시된/표시된 전자 메일로 전송된다. (213, 215)4. The user obtains an activation key from the activation server. The activation key is sent to the e-mail specified / indicated on the purchase page. (213, 215)

5. 어떤 이유로 지불을 완료할 수 없는 경우, 사용자는 추가 조치(청구 정보 재입력, 은행 계좌 검사, 나중에 시도 등)에 대한 지시 사항과 함께 거래를 완료할 수 없다는 정보를 받는다. (217)5. If for some reason the payment cannot be completed, the user is informed that the transaction cannot be completed with instructions for further action (re-entering billing information, checking the bank account, attempting later, etc.). (217)

대량 생성(Bulk generation)Bulk generation

다른 예시적인 구현에서, 파트너: 물리적 미디어 (CD, USB)의 생산자, 제휴사, 재판매자에 대한 많은 코드를 제공하기 위해 '대량' 활성화가 사용될 수 있다.In another example implementation, 'bulk' activation may be used to provide a lot of code for the partner: producer, affiliate, reseller of physical media (CD, USB).

이 예시적인 구현에서, 소프트웨어 공급 업체는 필요한 마케팅 파라미터 또는 계약 조건 (예를 들어, 500개의 라이센스가 Resell LLC에 제공되어 2017년 12월 25일까지 사용)으로 소정량의 활성화 번호 (예를 들어, 미리)를 생성 할 수 있다.In this example implementation, the software vendor may use a certain amount of activation number (e.g., a number of marketing parameters or contract terms (e.g. 500 licenses are provided to Resell LLC and used by December 25, 2017). In advance).

이 예시적인 구현에서, 빈 주문 레코드를 갖는 데이터베이스가 생성되고, 개발자는 활성화 번호의 특정 패턴을 명시할 수 있다. 애플리케이션은 최종 사용자에게 개인 데이터 (이름 및 전자 메일 주소)를 요구한다. 따라서 주문 레코드는 소프트웨어가 활성화된 후에 채워진다.In this example implementation, a database with an empty order record is created, and the developer can specify a specific pattern of activation numbers. The application asks the end user for personal data (name and e-mail address). Therefore, the order record is filled after the software is activated.

단일 생성(Single Generation)Single Generation

이 옵션은 판촉 또는 테스트 목적뿐만 아니라 고객 지원을 위해 구현될 수 있다.This option can be implemented for customer support as well as promotional or test purposes.

이 예시적인 구현에 따르면, 소프트웨어 공급 업체는 서버에 특수 관리자 패널을 통해 활성화 코드를 생성한 다음 이 코드를 고객 또는 필요한 당사자에게 전송한다. 그러면 주문 레코드가 관리자에 의해 채워진다.According to this example implementation, the software vendor generates an activation code through a special admin panel on the server and then sends the code to the customer or the required party. The order record is then filled in by the administrator.

활성화 시스템 데이터베이스에 레코드 생성(Creating a Record in Activation System's Database)Creating a Record in Activation System's Database

소프트웨어 획득 후 활성화 시스템의 데이터베이스에 레코드를 생성하는 동작은 다음과 같다. 사용자는 활성화 시스템에서 자신을 식별해야 한다. 이것은 다음 중 하나 이상의 방법으로 수행 할 수 있다 (단, 이에 한하지 않음):The operation of creating a record in the database of the activation system after obtaining the software is as follows. The user must identify himself or herself in the activation system. This can be done in one or more of the following ways, but not limited to:

고유한 로그인 및 비밀번호 정보 쌍을 제공함으로써;By providing unique login and password information pairs;

활성화 서버에 의해 제공된 보안 키 (예를 들어, 암호화 됨)로 보호되는, 활성화 서버와의 보안 연결을 설정함으로써;By establishing a secure connection with the activation server, which is protected by a security key (eg encrypted) provided by the activation server;

사용자의 명확한 식별을 가능하게 하는 (예를 들어, 제 3 자 서비스로부터 세션 식별자를 제공하거나 활성화 시스템 관리자에 의해 정의된 다른 파라미터를 제공하는 것에 의해), 활성화 서버와의 연결을 설정하고 파라미터를 전송함으로써.Establish a connection with the activation server and transmit the parameters, such as by providing a session identifier from a third party service or by providing other parameters defined by the activation system administrator to enable clear identification of the user. by doing.

사용자가 활성화 시스템에서 자신을 식별한 후 소프트웨어 획득에 대한 정보는 활성화 시스템 데이터베이스에 레코드로 저장된다.After the user has identified himself in the activation system, information about the software acquisition is stored as a record in the activation system database.

라이센스 발급(Issuing a License)Issuing a License

사용자는 획득 확정을 받은 후, 제한 없이 소프트웨어를 사용하기 위한 라이센스를 요청해야한다.After receiving the confirmation of the acquisition, the user must request a license to use the software without restriction.

라이센스 발급 프로세스는 각 유형의 획득 확정마다 유사하다. 차이점은 사용자가 라이센스를 받기 위해 획득 확정을 제공하는 방식에 있다:The license issuance process is similar for each type of acquisition confirmation. The difference lies in the way the user provides acquisition confirmations for licensing:

애플리케이션 내에 활성화 번호를 입력함으로써;By entering an activation number in the application;

URL 방식에 의해 애플리케이션을 활성화함으로써;By activating the application by the URL method;

활성화 시스템상에서 인증(authentication)함으로써 :By authenticating on the activation system:

고유한 로그인 및 비밀번호 쌍을 제공함으로써;By providing unique login and password pairs;

이전에 제공된 보안 키로 보호되는, 활성화 서버와의 보안 연결을 설정함으로써;By establishing a secure connection with an activation server, protected by a previously provided security key;

사용자의 명확한 식별을 허용하는 (예를 들어, 제 3 자 서비스로부터의 세션 식별자 또는 활성화 시스템 관리자에 의해 정의된 임의의 다른 파라미터를 제공함으로써), 활성화 서버와의 연결을 설정하고 파라미터를 전송함으로써.By establishing a connection with the activation server and sending the parameters (eg, by providing a session identifier from a third party service or any other parameter defined by the activation system administrator) to allow clear identification of the user.

라이센스 요청의 프로세스(300)는 다음과 같으며, 도 3에 도시된 바와 같다. 도 3에 도시된 바와 같이, 사용자 컴퓨팅 장치(예를 들어, 워크 스테이션)(301), 애플리케이션 측 동작 공간(303) (예를 들어, 사용자 제어 장치) 및 서버 측 공간(예를 들어, 데이터베이스를 갖는 서버)(305)이 제공된다. 작업에는 다음이 포함되지만 이에 국한되지는 않는다:The process of license request 300 is as follows, as shown in FIG. As shown in FIG. 3, a user computing device (eg, workstation) 301, an application side operating space 303 (eg, a user control device) and a server side space (eg, a database) Server 305 is provided. Tasks include, but are not limited to:

1. 사용자는 전술한 방법 중 하나에 의해 획득 확정을 제공한다. (307)1. The user provides acquisition confirmation by one of the methods described above. (307)

2. 소프트웨어가 라이센스 요청을 생성하고 라이센스 요청을 활성화 서버로 보낸다. (308)2. The software generates a license request and sends the license request to the activation server. (308)

3. 활성화 서버는, 이 획득 확정에 활성화가 허용되는지 검사한다 (예 : 활성화 서버는 데이터베이스의 활성화 번호 레코드에서 '활성화' 파라미터를 검색할 수 있다). (309)3. The activation server checks whether activation is allowed for this acquisition confirmation (eg the activation server may retrieve the 'activation' parameter from the activation number record of the database). (309)

4. 예(Yes)인 경우 (즉, 활성화가 허용되는 경우), 활성화 서버는 식별 정보에 기초하여 라이센스를 발급하고 (311), 라이센스 파일을 포함하는 애플리케이션에 응답을 전송한다. (317)4. If yes (ie, activation is allowed), the activation server issues a license based on the identification information (311) and sends a response to the application including the license file. (317)

5. 라이센스 파일은 활성화 시스템의 애플리케이션 측에서 확인(validation)을 통과한다. (319)5. The license file passes validation on the application side of the activation system. (319)

6. 사용자에게 활성화가 성공되었음을 알린다. (321)6. Inform the user that activation was successful. (321)

7. 활성화 서버가 활성화 프로세스 동안 에러가 발생했다고 판단하면 (예를 들어, 309에서 라이센스를 발급할 수 없고, 라이센스가 313에서 이전에 발급되지 않았을 경우), 활성화 서버는 에러 코드 및 메시지를 애플리케이션에 그리고 따라서 사용자에 다시 전송한다 (315). 반면에, 활성화 서버가 309에서 라이센스를 발급할 수 없지만 313 이전에서 라이센스를 발급한 것으로 결정하면 프로세스는 위에서 설명한 대로 317에서 이전에 발급된 라이센스를 계속 전송한다. 7. If the activation server determines that an error occurred during the activation process (for example, a license could not be issued at 309 and a license was not previously issued at 313), the activation server sends an error code and message to the application. And therefore send back to the user (315). On the other hand, if the activation server cannot issue a license at 309 but determines to have issued a license prior to 313, the process continues to transfer the previously issued license at 317 as described above.

8. 소프트웨어는 오류를 해결하기 위한 추가 조치에 대한 지침과 함께 오류 유형을 사용자에게 알려준다 (예 : 활성화 코드의 유효성 검사, 고객 지원 문의 등). (323)8. The software informs the user of the type of error (eg validation of activation code, contact customer support, etc.) with instructions for further action to correct the error. (323)

서버에 대한 요청의 수를 줄이고 사용자의 입력 요구 사항을 단순화하기 위해, 본 예시적인 구현에 따라 활성화 키에 대한 패턴 인식 시스템이 구현되었다. 보다 구체적으로, 활성화 키는 특정 패턴을 사용하여 생성되며, 이 패턴은 소프트웨어 설치에 의해 인식되며 특정 동작에 대해 소프트웨어 설치를 트리거한다. 예를 들어, 여기에 한정되는 것은 아니며, 특정 접미사(suffix)가 있는 활성화 키는 사용자에게 개인 데이터를 요청하는 양식의 출현(appearance of a form)을 개시할 수 있다. 공급 업체는 고유한 패턴 및 거동과 일치하도록 특정 패턴 및 소프트웨어 설치 거동을 설정할 수 있다.In order to reduce the number of requests to the server and simplify the user's input requirements, a pattern recognition system for an activation key was implemented according to this example implementation. More specifically, an activation key is generated using a specific pattern, which pattern is recognized by the software installation and triggers the software installation for a particular action. For example, but not limited to, an activation key with a particular suffix may initiate an appearance of a form requesting personal data from a user. Vendors can set specific patterns and software installation behaviors to match unique patterns and behaviors.

소프트웨어가 활성화 서버에 등록된 후, 활성화 서버는 라이센스 서명을 위해 개인 키와 공개 키 쌍을 발급한다. 개인 키는 서버에 저장되며 라이센스가 애플리케이션으로 전송되기 전에 각 라이센스를 서명하는 데 사용된다. 공개 키는 활성화 시스템의 애플리케이션 측 부분에 통합되어 있으며 아래에 설명되는 것 같이 나중에 라이센스 서명을 검증하는 데 사용된다.After the software is registered with the activation server, the activation server issues a private key and a public key pair for signature of the license. The private key is stored on the server and used to sign each license before the license is sent to the application. The public key is integrated into the application side part of the activation system and is later used to verify the license signature, as described below.

성공적인 활성화 요청이 발생한 후, 활성화 서버에 라이센스가 생성된다. 라이센스는 파라미터들 중 하나로서 다음의 애플리케이션 식별자를 기반으로 생성된 해시를 포함한다:After a successful activation request occurs, a license is generated on the activation server. The license is one of the parameters and contains a hash generated based on the following application identifier:

애플리케이션의 번들 ID;Bundle ID of the application;

네트워크 인터페이스 카드의 MAC 주소; 하드 디스크 드라이브 또는 솔리드 스테이트 드라이브; 마더 보드 식별자, 또는 통상의 기술자에게 알려진 다른 식별자; 운영 체제에서 사용자를 인가하는 데 사용되는 사용자 이름일 수 있지만 이에 국한되지 않는 사용자의 컴퓨팅 장치(예 : 하드웨어)의 하나 이상의 식별자; 및MAC address of the network interface card; Hard disk drive or solid state drive; Motherboard identifiers, or other identifiers known to those skilled in the art; One or more identifiers of a user's computing device (eg, hardware), which may be, but is not limited to, a user name used to authorize a user in an operating system; And

라이센스에 포함될 임의로 생성된 문자열(string) (예: 'salt').Randomly generated string to be included in the license (e.g. 'salt').

라이센스 파일을 최종 사용자에게 보내기 전에 라이센스 파일은 대칭 암호화 알고리즘으로 암호화되고, 활성화 서버에서 소프트웨어를 등록하는 동안 발급된 개인 키를 기반으로 서버 서명으로 서명된다.Before sending the license file to the end user, the license file is encrypted with a symmetric encryption algorithm and signed with a server signature based on the private key issued during software registration at the activation server.

재 활성화(Reactivation)Reactivation

하드웨어 변경(예를 들어, 새로운 컴퓨터로 변경) 후에 소프트웨어 사용을 계속할 필요성으로 인한 지원 문의의 수를 감소시키기 위해, 예시적인 구현에 따른 재 활성화 시스템이 구현되었다.In order to reduce the number of support inquiries due to the need to continue using the software after a hardware change (eg, a new computer), a reactivation system according to the example implementation has been implemented.

활성화 번호가 발급될 때, 활성화 번호는 한정된 수의 활성화를 갖는다. 예를 들어, 어떤 이유로 사용자가 자신의 컴퓨터 장치에서 소프트웨어 설치를 비활성화하고 동일한 활성화 번호를 사용하여 동일한 컴퓨터 장치에서 소프트웨어를 다시 활성화하면 이전 라이센스가 발급된다.When an activation number is issued, the activation number has a limited number of activations. For example, if for some reason the user deactivates the software installation on his computer device and reactivates the software on the same computer device using the same activation number, a previous license is issued.

한편, 사용자가 컴퓨팅 장치를 변경하더라도 여전히 동일한 활성화 번호를 사용하여 소프트웨어를 활성화할 수 있는 능력이 있다. 가능한 재 활성화 수에 대한 정보는 활성화 서버에 저장된다. 활성화 서버는 지정된 시간이 지나면 자동으로 하나의 추가 재 활성화를 자동으로 추가한다 (예 : 기본적으로 6개월이지만 이에 제한되지 않음). 결과적으로, 사용자는 컴퓨팅 장치 또는 운영 체제를 변경할 경우 소프트웨어를 다시 활성화 할 수 있다.On the other hand, even if the user changes the computing device, he still has the ability to activate the software using the same activation number. Information on the number of possible reactivations is stored on the activation server. The activation server automatically adds one additional reactivation after a specified time period (eg 6 months by default, but not limited to this). As a result, the user can reactivate the software if the computing device or operating system changes.

라이센스의 확인(Validation of License)Validation of License

소프트웨어 설치가 제대로 작동하려면 사용자 컴퓨터에서 라이센스가 사용 가능한지 검사(check)하고 유효성(validity)을 검증해야 한다. 검증은 다음 파라미터의 검사로 구성된다: (a) 라이센스 출처 (예 : 올바른 서버에서 라이센스를 발급했는지 여부); (b) 이 컴퓨터에 라이센스가 발급되었는지 여부(예 : 라이센스가 올바른 컴퓨터에 발급되었는지 여부); 및 (c) 라이센스가 만료된 것이 아닌지 여부.In order for the software installation to work properly, you must check and validate the validity of the license on your computer. Verification consists of a check of the following parameters: (a) license source (eg whether the license was issued by the correct server); (b) whether a license has been issued to this computer (eg whether a license has been issued to the correct computer); And (c) the license is not expired.

관련 기술에서, 검증 프로세스는 해커가 코드에 침입하여 애플리케이션을 크래킹하는데 필요한 정보를 수신할 수 있는 기간이다. 이 위험을 해결하기 위해 예시적인 구현에는 몇 가지 메커니즘이 포함된다.In the related art, the verification process is a period of time during which hackers can receive the information necessary to break into code and crack an application. To address this risk, the example implementation includes several mechanisms.

라이센스 검사가 필요한 시점에서(이 시점은 개발자에 의해, 예를 들어, 애플리케이션의 시작, 업그레이드 또는 특정 동작 수행을 위해 정의될 수 있지만) 라이센스 검사가 시작되지 않았다면, 활성화 시스템의 애플리케이션 측은 라이센스를 수정함 없이 서버에서 받은 라인세스를 확인하고 클라이언트 측 또는 사용자, 컴퓨터에 확인된(validated) 라이센스를 저장한다. 내부 침입의 경우 권한이 없는 당사자 (예 : 해커)가 데이터를 얻지 못한다.If a license check has not been initiated at the time a license check is required (this can be defined by the developer, for example, to start an application, upgrade or perform a specific action), the application side of the activation system will modify the license. It checks the line access received from the server and stores the validated license on the client side, user or computer. In the case of internal intrusion, unauthorized parties (e.g. hackers) do not get data.

보다 구체적으로, 위에서 설명된 바와 같이, 전술한 관련 기술의 보안 문제를 극복하기 위해, 예시적인 구현은 디지털 서명의 비대칭 방식에 관한 것이다. 보다 구체적으로, 예시적인 구현은 각 공급 업체 애플리케이션마다 고유한 키 쌍을 사용한다: 모든 공급 업체 앱에 통합된 공개 키와 서버 측에 안전하게 저장된 개인 키.More specifically, as described above, to overcome the security issues of the related art described above, an example implementation relates to an asymmetric manner of digital signatures. More specifically, the example implementation uses a unique key pair for each vendor application: a public key integrated in every vendor app and a private key securely stored on the server side.

서버가 해당 요청을 수신하면, 서버는 라이센스 파일의 콘텐츠를 생성하고, 고유하고 안전한 개인 키로 라이센스 파일에 서명한다. 따라서 서버는 디지털 서명을 생성한다. 고유한 안전한 개인 키가 있는 서명된 라이센스 파일은 모든 공급 업체 앱에 따라 다르다.When the server receives the request, the server generates the contents of the license file and signs the license file with a unique and secure private key. Thus, the server generates a digital signature. The signed license file with a unique secure private key is different for all vendor apps.

공급업체 앱은 디지털 서명과 함께 라이센스 파일을 수신하여 이를 사용자의 머신(machine) (예를 들어, 클라이언트)에 저장한다. 악의적인 행위자 (예 : 해커)가 악의적인 행위를 시도하면 (예 : 라이센스 파일을 변경하려고 시도하거나 가짜 라이센스를 생성하려고 시도하는 경우) 이 라이센스 파일의 서명 확인 공급 업체 앱 측에서 실패한다. 따라서 라이센스 파일의 내용이 유효하지 않게 되고 공급 업체 앱은 악의적인 시도 (예 : 공급 업체 앱을 크랙하려는 시도)를 물리친다.The vendor app receives the license file along with the digital signature and stores it on the user's machine (for example, the client). If a malicious actor (e.g. a hacker) tries to do something malicious (e.g. attempts to change the license file or attempts to generate a fake license), the signature verification of the license file will fail on the vendor app side. As a result, the contents of the license file become invalid and the vendor app defeats malicious attempts (e.g. attempts to crack the vendor app).

따라서, 해커가 라이센스 데이터를 획득하는 것을 막을 필요가 없는데, 왜냐하면 상술한 바와 같이 해커가 라이센스 데이터를 획득하는 것이 불가능하기 때문이다. 라이센스 데이터는 각 머신마다 고유하게 생성되며 (예 : 네트워크 MAC 주소 또는 일련번호와 같은 머신 특정 식별 정보를 사용하여) 서버에 저장된 개인 키로 서명된다. 따라서 다른 머신에서 라이센스 데이터를 사용하거나 액세스할 수 없다.Thus, there is no need to prevent hackers from obtaining license data, because it is impossible for hackers to obtain license data as described above. License data is uniquely generated for each machine and signed with a private key stored on the server (using machine-specific identification information such as network MAC address or serial number). As a result, license data cannot be used or accessed from other machines.

라이센스 검사가 요구됨에 따라, 활성화 시스템의 애플리케이션 측 부분은 라이센스가 이용 가능한지를 결정하기 위해 사전 정의된 스토리지(storage)를 검사한다.As a license check is required, the application side part of the activation system checks the predefined storage to determine if a license is available.

먼저, 활성화 시스템의 애플리케이션 측 부분은 전술한 바와 같이 애플리케이션 시스템의 애플리케이션 측 부분에 통합된 공개 키를 사용하여 서버 서명을 확인한다. 공개 키를 사용하여 서버 서명이 유효하게 판단되면 활성화 시스템은 대칭 암호 해독(symmetric decryption)을 위한 키를 받는다. 라이센스의 두 번째 부분은 이 암호 해독 키를 사용하여 암호 해독된다. 성공적인 암호 해독 결과 라이센스 정보가 수신된다.First, the application side portion of the activation system verifies the server signature using the public key integrated into the application side portion of the application system as described above. If the server signature is determined to be valid using the public key, the activation system receives a key for symmetric decryption. The second part of the license is decrypted using this decryption key. Successful decryption results in license information.

다음 단계는 특정 컴퓨터에 대한 라이센스의 유효성을 검사하는 것이다. 이 검사를 수행하기 위해 활성화 시스템의 애플리케이션 측은 다음 파라미터를 사용하여 해시 문자열을 생성한다:The next step is to validate the license for that particular computer. To perform this check, the application side of the activation system generates a hash string using the following parameters:

애플리케이션의 번들 IDBundle ID of the application

컴퓨팅 장치의 하나 이상의 식별자One or more identifiers of the computing device

라이센스에 저장된 문자열 'salt'.The string 'salt' stored in the license.

생성된 해시 문자열은 라이센스에 저장된 문자열과 일치해야 한다. 일치하지 않으면 라이센스가 해당 특정 컴퓨터 및/또는 해당 특정 애플리케이션에 유효하지 않은 것으로 판단된다.The generated hash string must match the string stored in the license. If they do not match, it is determined that the license is not valid for that particular computer and / or that particular application.

다음 단계로서, 활성화 시스템의 애플리케이션 측 부분은 라이센스 파라미터를 현재 시스템 및 애플리케이션 상태와 비교함으로써 라이센스가 만료되지 않았음 확정(confirm)하는 검사한다. 라이센스 유형에 따라 다음 파라미터가 비교될 수 있다:As a next step, the application side portion of the activation system checks to confirm that the license has not expired by comparing the license parameters with the current system and application status. Depending on the license type, the following parameters can be compared:

a) 현재 시스템 시간과 라이센스 만료 시간;a) current system time and license expiration time;

b) 현재 시스템 시간과 라이센스 가입 종료 시간;b) current system time and license termination time;

c) 현재 애플리케이션 버전과 라이센스 만료 버전;c) current application version and license expiration version;

d) 현재 애플리케이션 버전과 라이센스 베타 전용 플래그.d) Flags for current application version and license beta only.

또한, 활성화 시스템의 애플리케이션 측 부분은 라이센스 확인을 위해 주기적으로 요청을 활성화 서버에 전송할 수 있다. 요청에는 활성화 식별자 및 사용자의 워크스테이션을 식별하는 데 필요한 정보가 포함될 수 있다. 라이센스가 여전히 유효한 것으로 판명되면 서버는 동일한 라이센스로 응답한다. 그러나 라이센스가 여전히 유효하지 않은 것으로 판명되면 서버는 오류 메시지로 응답한다. 이 방법은, 서버 시스템 시간에 따라 만료 시간이 확인되므로, 사용자 워크스테이션의 시스템 시간을 사용하여 라이센스 기간을 연장함으로써 조작을 방지한다.In addition, the application-side portion of the activation system may periodically send a request to the activation server for license confirmation. The request may include the activation identifier and the information needed to identify the user's workstation. If the license is still found to be valid, the server responds with the same license. However, if the license still turns out to be invalid, the server responds with an error message. Since the expiration time is confirmed according to the server system time, this method prevents the operation by extending the license period using the system time of the user workstation.

애플리케이션 측 부분 보안(Application-side Part Security)Application-side Part Security

활성화 시스템의 애플리케이션 측 부분은 활성화 서버에 등록된 각각의 애플리케이션에 대해 고유하게 생성된다. 보안 목적으로, 활성화 시스템의 애플리케이션 측 부분의 프로그래밍 코드의 함수(function), 방법(method) 및 변수(variable)는 난독화된다 (예를 들어, 사람이 읽을 수 없도록 만들어 진다).The application side part of the activation system is uniquely created for each application registered with the activation server. For security purposes, the functions, methods and variables of the programming code of the application side part of the activation system are obfuscated (eg, made unreadable by humans).

난독 처리할 함수에는 특수 마커가 표시되어 있으며 컴파일하는 동안 이름은 사전 정의된 알파벳에서 임의의 것으로 대체된다 (대개 영숫자(alphanumeric): 대문자 및 소문자 그리고 숫자 포함). 각 애플리케이션에 대해 난독화된 이름은 고유하다.Functions to be obfuscated are marked with special markers, and during compilation the names are replaced with arbitrary ones from predefined alphabets (usually alphanumeric: including uppercase and lowercase letters and numbers). The obfuscated name is unique for each application.

보안을 향상시키는 또 다른 메커니즘은 런타임 동안 메모리에서 목적지 주소를 변경하는 함수를 사용하는 것이다. 보다 구체적으로, 프로그램 코드를 컴파일하는 동안 라이센스 검증에 사용되는 함수들이 의도적으로 잘못된 파라미터를 반환하지만, 소프트웨어가 작동 중인 동안 해당 함수들은 메모리의 주소로 재지정(redirected)되며, 이는 올바른 파라미터를 반환하는 함수들을 포함한다. 이러한 함수들은 컴파일 중에 임의로 이름이 지정되므로 리버스 엔지니어링의 경우 소프트웨어 해커가 해당 함수들이 실제로 수행하는 작업을 결정할 수 없을 것이다. 이 메커니즘은 개발자가 정의한 대로 라이센스 검사가 필요한 시점에서도 구현될 수 있다.Another mechanism to improve security is to use a function that changes the destination address in memory during runtime. More specifically, while compiling the program code, functions used for license validation intentionally return incorrect parameters, but while the software is running, they are redirected to the address of memory, which returns the correct parameters. Contains functions These functions are randomly named during compilation, so in reverse engineering, software hackers will not be able to determine what the functions actually do. This mechanism can be implemented even when license checking is required, as defined by the developer.

예시적인 구현에 따르면, 개발자에게는 동작 동안 함수의 이름이 제공되지 않으며, 이 정보를 가질 필요는 없다. 예를 들어 (제한적으로는 아님) 개발자는 소프트웨어 프로그램 (예 : 코드)을 작성한 다음 애플리케이션이 컴파일될 때 함수가 의사 난수 (예 : 난독화)로 명명되므로, 보안 조치로 함수의 이름을 기반으로 함수를 결정하는 것은 가능하지 않다.According to the example implementation, the developer is not provided with the name of the function during operation and need not have this information. For example (but not by way of limitation) a developer writes a software program (e.g. code) and then the function is named pseudo-random (e.g. obfuscation) when the application is compiled, so as a security measure a function based on the name of the function It is not possible to determine

라이센스의 원격 비활성화(Remote Disabling License)Remote Disabling License

사용자가 환불을 요청하고 환불 요청이 승인되면, 사용자는 소프트웨어를 사용할 권리를 잃게 된다. 따라서 라이센스를 원격으로 취소하는 메커니즘이 필요하다. 이 메커니즘은, 사용자가 매월 또는 매년 소프트웨어 비용을 지급해야 하는 경우, 구독 요금제 계획을 처리하는 데에도 사용된다. 예를 들어, 사용자는 적극적인 취소의 표시를 제공하지 않고 소프트웨어를 단순히 갱신하지 않기로 선택할 수 있다.If the user requests a refund and the refund request is approved, the user loses the right to use the software. Therefore, a mechanism for revoking the license remotely is required. This mechanism is also used to process subscription plan plans if the user has to pay for software monthly or yearly. For example, the user may choose not to simply update the software without providing an indication of aggressive cancellation.

환불 또는 미결재 가입(예: 갱신)으로 인해 라이센스가 서버에서 유효하지 않은 것으로 표시되면 라이센스도 활성화 시스템의 애플리케이션 부분에 표시되며, 사용자는 결제가 확정될 때까지 애플리케이션을 사용할 수 없다.If a license is marked invalid on the server due to a refund or outstanding subscription (e.g. renewal), the license is also displayed in the application portion of the activation system and the user cannot use the application until payment is confirmed.

애플리케이션 측에서 라이센스 비활성화(Disabling License on the Application Side)Disabling License on the Application Side

또한, 개발자는 애플리케이션 내에서 라이센스를 비활성화하는 기능을 추가할 수 있다. 사용자가 라이센스 비활성화를 시작한 후 활성화 시스템의 애플리케이션 측이 서버 측에 요청을 보낸다. 따라서 서버는 해당 특정 워크 스테이션에 대한 라이센스로 응답하며 이는 비활성화 된 것으로 표시된다. 이 절차는 사용자가 다른 워크스테이션에서 소프트웨어를 사용하려는 경우에 유용하다. 사용자는 첫 번째 워크스테이션에서 라이센스 비활성화를 시작하고 두 번째(예: 다른) 워크스테이션에서 애플리케이션을 활성화하는 데 필요한 단계를 반복 할 수 있다.In addition, developers can add the ability to deactivate licenses within an application. After the user initiates the license deactivation, the application side of the activation system sends a request to the server side. Thus, the server responds with a license for that particular workstation and it is marked as deactivated. This procedure is useful if you want to use the software on another workstation. The user can start deactivating licenses on the first workstation and repeat the steps required to activate the application on a second (for example) other workstation.

앱 스토어 영수증을 라이센스로 사용(Using App Store Recipt as License)Using app store receipt as license

공급 업체가 애플리케이션을 판매하는 경우 (예: 애플 앱 스토어 및 다른 소스를 통해) 활성화 서버는 앱 스토어 영수증을 라이센스로 일치시킬 수 있다.If the vendor sells the application (for example, through the Apple App Store and other sources), the activation server can match the app store receipts with the license.

예를 들어 (이에 한정되는 것은 아님), 사용자는 앱 스토어 (예를 들어, 애플 앱 스토어)를 통해 애플리케이션을 구매했으며, 구매에 대한 정보는 공개 API를 통해 활성화 서버로 전송된다. 사용자가 컴퓨팅 장치에서 소프트웨어를 다시 활성화해야 하는 경우 소프트웨어 설치가 활성화된 것으로 인식되고 라이센스가 자동으로 발급된다.For example, but not limited to, a user has purchased an application through an app store (e.g., an Apple App Store), and information about the purchase is sent to the activation server via a public API. If the user needs to reactivate the software on the computing device, the software installation is recognized as activated and a license is automatically issued.

프로세스 예(Example Process)Example Process

도 4는 예시적인 구현에 따라 서버에서 수행되는 프로세스(400)를 도시하고, 도 1 내지 3의 전술한 개시를 포함한다. 401에서, 사용자가 애플리케이션을 획득하고 다양한 모드 중 하나에 의해 애플리케이션의 획득의 확정을 수신한 후, 특정 사용자와 연관된 활성화 시스템의 데이터베이스의 레코드가 서버 측에서 시작된다. 또한, 403에서 서버는 소프트웨어 라이센스를 얻기 위해 사용자로부터 식별 정보 및 라이센스 요청을 수신한다. 활성화 시스템의 데이터베이스에서 레코드가 시작된 후, 라이센스에 대한 요청은 405에서 프로토콜에 의해 생성된다. 프로토콜에 따라 라이센스는 서버에서 생성되며 보안 개인 키로 서명된다. 109에서 라이센스 요청이 생성되면, 디지털 서명을 갖는 라이센스는 407에서 사용자에게 제공되고 라이센스 파일은 사용자 장치에 저장된다.4 illustrates a process 400 performed at a server in accordance with an example implementation, and includes the foregoing disclosure of FIGS. 1-3. At 401, after a user acquires an application and receives confirmation of acquisition of the application by one of various modes, a record in the database of the activation system associated with the particular user is started at the server side. Further, at 403, the server receives identification information and a license request from the user to obtain a software license. After the record is started in the activation system's database, a request for a license is generated by the protocol at 405. According to the protocol, licenses are generated on the server and signed with a secure private key. If a license request is generated at 109, a license with a digital signature is provided to the user at 407 and the license file is stored on the user device.

상술한 바와 같이 라이센스 요청이 수신된 후, 409에서 서버는 활성화가 올바른지 여부를 결정하고, 활성화 요청이 올바른 경우 413에서 라이센스를 발급하거나 그렇지 않으면 411에서 오류 메시지를 전송한다. 413에서, 소프트웨어 라이센스가 최종 사용자의 컴퓨터로 전달된 후, 서버에서 받은 라이센스를 수정하지 않고 415에서 확인을 통과해야 한다; 서명된 라이센스 파일을 변경하거나 가짜 라이센스를 생성하려고 시도하면 공급 업체 측에서 이러한 시도는 실패하고 라이센스 파일의 콘텐츠는 유효하지 않아 공급 업체 앱이 크랙되지 않는다. 라이센스 파일은 사용자 컴퓨터 파일 시스템의 특정 위치에 기입된다. 애플리케이션이 실행되면 라이센스 유효성이 415에서 검사된다. 라이센스 원본을 검증하고 완전성을 확정한 후 소프트웨어 설치가 완료되고 사용자가 소프트웨어를 사용할 수 있다. 활성화 상태는 활성화 서버에 의해 주기적으로 수신된다. 또한, 라이센스는 활성화 서버에 의해 원격으로 또는 직접 비활성화 될 수 있다After the license request is received as described above, at 409 the server determines whether the activation is correct and issues a license at 413 if the activation request is correct or otherwise sends an error message at 411. At 413, after the software license is transferred to the end user's computer, the verification must be passed at 415 without modifying the license received from the server; If you attempt to change the signed license file or generate a fake license, these attempts on the vendor side will fail and the contents of the license file will not be valid and the vendor app will not crack. The license file is written to a specific location on the user computer file system. When the application runs, the license validity is checked at 415. After verifying and verifying the original license, the software installation is complete and the user can use the software. The activation status is periodically received by the activation server. In addition, licenses can be deactivated remotely or directly by the activation server.

도 5는 예시적인 구현에 따라 서버에서 수행되는 프로세스(500)를 도시하고, 도 1 내지도 3의 전술한 개시를 포함한다. 501에서, 사용자는 애플리케이션을 획득한다. 또한, 503에서, 사용자는 다양한 모드 중 하나에 의해 애플리케이션의 획득에 대한 확정을 수신한다.5 illustrates a process 500 performed at a server in accordance with an example implementation, and includes the foregoing disclosure of FIGS. 1-3. At 501, the user acquires an application. In addition, at 503, the user receives confirmation of the acquisition of the application by one of various modes.

상술한 바와 같이, 애플리케이션의 각각의 획득 모드는 획득 확정의 준수 및 라이센스 발급 규칙 세트를 설정하는 것과 관련된 별개의 고유한 메커니즘을 갖는다. 획득 확정은 활성화 번호를 포함할 수 있고 사람이 읽을 수 있지만 무차별 검색을 방지하기에 충분히 길다. 또한, 예시적인 구현에 따른 URL 별 활성화 방식은 개발자가 사용자에게 사용자 동작으로 소프트웨어를 활성화하는 옵션을 제공할 수 있게 한다. As mentioned above, each acquisition mode of the application has a distinct and unique mechanism related to establishing a set of license issuance rules and adherence to acquisition commitments. The acquisition confirmation may include an activation number and is human readable but long enough to prevent brute force searches. In addition, the URL-based activation scheme according to the exemplary implementation enables the developer to provide the user with the option of activating the software by user action.

505에서, 사용자는 식별 정보 및 소프트웨어 라이센스를 얻기 위한 요청을 제공한다. 상술한 바와 같이 서버에 의해 라이센스 요청이 디지털 서명으로 생성되면, 사용자는 507에서 라이센스를 수신하고, 라이센스 파일은 사용자 장치에 저장된다.At 505, the user provides a request to obtain identification information and a software license. If the license request is generated with the digital signature by the server as described above, the user receives the license at 507 and the license file is stored on the user device.

라이센스 요청이 507에서 수신된 후, 서버는 활성화가 올바른지 여부를 결정하고, 활성화 요청이 올바른 경우 사용자는 513에서 라이센스의 발급을 수신하거나, 그렇지 않으면 511에서 에러 메시지를 수신한다. 513에서 최종 사용자의 컴퓨터에서 소프트웨어 라이센스를 받은 후 확인을 통과해야 한다. 라이센스는 서버에서 받은 라이센스를 수정하지 않고 사용자의 장치에 기입된다; 서명된 라이센스 파일을 변경하거나 가짜 라이센스를 생성하려고 시도하면 공급 업체 측에서 이 시도가 실패하고 라이센스 파일의 콘텐츠가 유효하지 않게 되어 공급업체 앱이 크랙되지 않는다. 라이센스 파일은 사용자 컴퓨터 파일 시스템의 특정 위치에 기록된다. 애플리케이션이 실행되면 라이센스 유효성이 검사된다. 라이센스 출처를 검증하고 완전성을 확정한 후 소프트웨어 설치가 완료되고 515에서 소프트웨어는 사용할 수 있는 상태가 된다. 활성화 상태는 주기적으로 활성화 서버로 전송된다. 또한, 서버에서 라이센스를 원격 또는 직접 비활성화 할 수 있다.After the license request is received at 507, the server determines whether the activation is correct, and if the activation request is correct, the user receives the issuance of a license at 513 or otherwise receives an error message at 511. In 513, the software must be licensed on the end user's computer and pass the verification. The license is written to the user's device without modifying the license received from the server; If you try to change the signed license file or generate a fake license, the vendor's attempt will fail and the contents of the license file will be invalid and the vendor app will not crack. The license file is written to a specific location on the user's computer file system. When the application runs, the license is validated. After verifying the license source and confirming the completeness, the software installation is complete and the software is ready for use at 515. The activation status is periodically sent to the activation server. You can also deactivate a license remotely or directly on the server.

일부 예에서, 도 1 내지 도 5에 도시된 전술한 프로세스들이 다르거나 더 적거나 더 많은 블록들로 구현될 수 있다. 프로세스는 매체에 저장될 수 있고, 하나 이상의 컴퓨팅 장치의 하나 이상의 프로세서에 로딩되고, 컴퓨터로 구현되는 방법으로서 실행될 수 있는, 컴퓨터 실행 가능 명령어(instruction)로서 구현될 수 있다.In some examples, the above-described processes shown in FIGS. 1-5 may be implemented in different, fewer, or more blocks. The process may be embodied as computer executable instructions, which may be stored on a medium, loaded into one or more processors of one or more computing devices, and executed as a computer-implemented method.

예시 환경(Example Environment)Example Environment

도 6은 일부 예시적인 구현에 적합한 예시적인 환경을 도시한다. 환경(600)은 장치(605-645)를 포함하고, 각 장치는 예를 들어 네트워크(660)를 통해 (예를 들어, 유선 및/또는 무선 연결에 의해) 적어도 하나의 다른 장치에 통신 가능하게 연결된다. 일부 장치는 하나 이상의 저장 장치(630 및 645)에 통신 가능하게 연결될 수 있다.6 illustrates an example environment suitable for some example implementations. Environment 600 includes devices 605-645, each device being capable of communicating to at least one other device (eg, by wired and / or wireless connection) via network 660, for example. Connected. Some devices may be communicatively coupled to one or more storage devices 630 and 645.

하나 이상의 장치(605-645)의 예는 각각 도 7 및 도 8에서 후술되는 컴퓨팅 장치(705 및/또는 805)일 수 있다. 장치들(605-645)은 여기에 한정되는 것은 아니며, 컴퓨터(605)(예를 들어, 랩탑 컴퓨팅 장치), 모바일 장치(610) (예를 들어, 스마트 폰 또는 태블릿), 텔레비전(615), 차량 (620)과 관련된 장치, 서버 컴퓨터(625), 컴퓨팅 장치(635-640), 스토리지 장치(storage device)(630 및 645)를 포함할 수 있다.Examples of one or more devices 605-645 may be computing devices 705 and / or 805 described below in FIGS. 7 and 8, respectively. The devices 605-645 are not limited thereto, and may include, but are not limited to, a computer 605 (eg, laptop computing device), a mobile device 610 (eg, a smartphone or tablet), a television 615, Devices associated with the vehicle 620, server computers 625, computing devices 635-640, and storage devices 630 and 645.

일부 구현들에서, 장치들(605-620)은 도 3 내지 도 5와 관련하여 위에서 설명한 것 같은 서버와 연관될 수 있는 사용자 장치들(625-645)로 간주될 수 있다.In some implementations, the devices 605-620 can be considered user devices 625-645 that can be associated with a server as described above with respect to FIGS. 3-5.

예를 들어, 비 제한적으로, 하나 이상의 장치들(625-645)에 의해 지원되는 네트워크상에 사용자 장치(605 또는 610)를 갖는 사용자는, 사용자 장치(625-645)를 사용하여 애플리케이션 획득, 라이센스 요청, 라이센스 수신을 수행하고 소프트웨어를 사용할 수 있다. 서버는 사용자 장치(605 또는 610)를 사용하여 도 1 내지 도 5와 관련하여 설명을 한 프로세스에 따라, 장치(625-645)를 사용하여 상술한 동작을 수행할 수 있다.For example, but not limited to, a user having a user device 605 or 610 on a network supported by one or more devices 625-645 can acquire, license an application using the user device 625-645. You can request, receive licenses, and use the software. The server may perform the above-described operations using the devices 625-645 according to the process described with reference to FIGS. 1-5 using the user device 605 or 610.

컴퓨팅 환경의 예(Example Computing Environment)Example Computing Environment

도 7은 일부 예시적인 구현에 사용하기 위해 외부 호스트와 연관된 예시적인 컴퓨팅 장치를 갖는 예시적인 컴퓨팅 환경을 도시한다. 컴퓨팅 환경(700)에서의 컴퓨팅 장치(705)는 하나 이상의 프로세싱 유닛, 코어 또는 프로세서(710), 메모리 (715) (예를 들어, RAM, ROM 등), 내부 스토리지(720) (예를 들어, 자기, 광학, 솔리드 스테이트 스토리지 및/또는 유기), 및/또는 I/O 인터페이스(725)를 포함하며, 이들 중 임의의 것은 정보를 전달하기 위해 통신 메커니즘 또는 버스(730)에 연결되거나 컴퓨팅 장치(705)에 내장될 수 있다.7 illustrates an example computing environment having an example computing device associated with an external host for use in some example implementations. Computing device 705 in computing environment 700 may include one or more processing units, cores or processors 710, memory 715 (eg, RAM, ROM, etc.), internal storage 720 (eg, Magnetic, optical, solid state storage and / or organic), and / or I / O interface 725, any of which may be connected to a communication mechanism or bus 730 or a computing device ( 705 may be embedded.

컴퓨팅 장치(705)는 입력/사용자 인터페이스(735) 및 출력 장치/인터페이스(740)에 통신 가능하게 연결될 수 있다. 입력/사용자 인터페이스(735) 및 출력 장치/인터페이스(740) 중 하나 또는 둘 모두는 유선 또는 무선 인터페이스 일 수 있고 분리 가능할 수 있다. 입력/사용자 인터페이스(735)는 입력 (예를 들어, 버튼, 터치 스크린 인터페이스, 키보드, 포인팅/커서 제어, 마이크로폰, 카메라, 점자, 움직임 센서, 광학 리더 등)을 제공하는데 사용될 수 있는 임의의 장치, 컴포넌트(component), 센서 또는 인터페이스, 물리적 또는 가상 장치를 포함할 수 있다. 출력 장치/인터페이스(740)는 디스플레이, 텔레비전, 모니터, 프린터, 스피커, 점자 등을 포함할 수 있다. 일부 예시적인 구현에서, 입력/사용자 인터페이스(735) 및 출력 장치/인터페이스(740)는 컴퓨팅 장치(705)에 내장되거나 물리적으로 결합 될 수 있다. 다른 예시적인 구현에서, 다른 컴퓨팅 장치는 컴퓨팅 장치(705)를 위한 입력/사용자 인터페이스(735) 및 출력 장치/인터페이스(740)로서 기능하거나 그 기능을 제공 할 수 있다. Computing device 705 may be communicatively coupled to input / user interface 735 and output device / interface 740. One or both of input / user interface 735 and output device / interface 740 may be a wired or wireless interface and may be removable. Input / user interface 735 may be any device that can be used to provide input (eg, buttons, touch screen interface, keyboard, pointing / cursor control, microphone, camera, braille, motion sensor, optical reader, etc.), It may include a component, a sensor or an interface, a physical or virtual device. Output device / interface 740 may include a display, television, monitor, printer, speaker, braille, and the like. In some example implementations, input / user interface 735 and output device / interface 740 can be embedded in or physically coupled to computing device 705. In other example implementations, other computing devices may function as or provide functionality as input / user interface 735 and output device / interface 740 for computing device 705.

컴퓨팅 장치(705)의 예는 기동성이 아주 좋은 모바일 장치(highly mobile device)(예를 들어, 스마트 폰, 차량 및 기타 기계의 장치, 인간 및 동물이 착용하는 장치 등), 모바일 장치(예를 들어, 태블릿, 노트북, 랩탑, 개인용 컴퓨터, 휴대용 텔레비전, 라디오 등) 및 이동성을 위해 설계되지 않은 장치(예를 들어, 데스크탑 컴퓨터, 다른 컴퓨터, 정보 키오스크, 프로세서에 내장되고/되거나 그에 연결된 텔레비전, 라디오 등)를 포함하나 이에 제한되지는 않는다.Examples of computing devices 705 include highly mobile devices (eg, smartphones, devices in vehicles and other machines, devices worn by humans and animals, etc.), mobile devices (eg, , Tablets, laptops, laptops, personal computers, portable televisions, radios, etc., and devices not designed for mobility (e.g., desktop computers, other computers, information kiosks, televisions embedded in and / or connected to processors, radios, etc.) ), But is not limited to such.

컴퓨팅 장치(705)는, 동일한 또는 다른 구성의 하나 이상의 컴퓨팅 장치를 포함하여 임의의 개수의 네트워크 연결된 컴포넌트들, 장치들 및 시스템들과의 통신을 위해, (예를 들어, I/O 인터페이스(725)를 통해) 외부 스토리지 장치(745) 및 네트워크(750)에 연결될 수 있다. 컴퓨팅 장치(705) 또는 임의의 연결된 컴퓨팅 장치는 서버, 클라이언트, 씬 서버(thin server), 범용 머신, 특수 목적 머신 또는 다른 라벨로서 기능을 하거나 이들의 서비스를 제공하거나 이들로 언급될 수 있다.Computing device 705 is configured to communicate with any number of networked components, devices, and systems, including one or more computing devices of the same or different configurations (eg, I / O interface 725 May be connected to the external storage device 745 and the network 750. Computing device 705 or any connected computing device may function as, or provide, or refer to as a server, client, thin server, general purpose machine, special purpose machine, or other label.

I/O 인터페이스(725)는 음성 및/또는 데이터 네트워크를 통한 무선 통신을 용이하게 하는 무선 통신 컴포넌트(미도시)를 포함할 수 있다. 무선 통신 컴포넌트는 하나 이상의 안테나를 갖는 안테나 시스템, 무선 시스템, 기저 대역 시스템 또는 이들의 임의의 조합을 포함할 수 있다. 무선 주파수(RF) 신호는 무선 시스템의 관리하에 안테나 시스템에 의해 무선으로 송수신 될 수 있다.I / O interface 725 may include a wireless communication component (not shown) that facilitates wireless communication over a voice and / or data network. The wireless communication component can include an antenna system, a wireless system, a baseband system, or any combination thereof with one or more antennas. Radio frequency (RF) signals may be transmitted and received wirelessly by an antenna system under management of a wireless system.

I/O 인터페이스(725)는, 컴퓨팅 환경(700)에서 적어도 모든 연결된 컴포넌트, 장치 및 네트워크로/로부터 정보를 통신하기 위한, 임의의 통신 또는 I/O 프로토콜 또는 표준 (예를 들어, 이더넷, 802.11x, 범용 시스템 버스, WiMax, 모뎀, 셀룰러 네트워크 프로토콜 등)을 사용하는 유서 및/또는 무선 인터페이스를 포함할 수 있다. 네트워크(750)는 임의의 네트워크 또는 네트워크의 조합 (예를 들어, 인터넷, 근거리 통신망, 광역망, 전화 네트워크, 셀룰러 네트워크, 위성 네트워크 등)일 수 있다.I / O interface 725 is any communication or I / O protocol or standard (eg, Ethernet, 802.11) for communicating information to / from at least all connected components, devices, and networks in computing environment 700. x, universal system bus, WiMax, modem, cellular network protocols, etc.) and / or a legacy and / or wireless interface. The network 750 can be any network or combination of networks (eg, the Internet, local area network, wide area network, telephone network, cellular network, satellite network, etc.).

컴퓨팅 장치(705)는 일시적 매체 및 비 일시적 매체를 포함하여 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체를 사용 및/또는 사용하여 통신할 수 있다. 일시적 매체는 전송 매체 (예를 들어, 금속 케이블, 광섬유), 신호, 반송파 등을 포함한다. 비 일시적 매체에는 자기 매체 (예 : 디스크 및 테이프), 광학 매체 (예 : CD ROM, 디지털 비디오 디스크, 블루레이 디스크), 솔리드 스테이트 매체 (예 : RAM, ROM, 플래시 메모리, 솔리드 스테이트 스토리지) 및 기타 비휘발성 스토리지 또는 메모리가 포함될 수 있다.The computing device 705 may communicate using and / or using computer usable or computer readable media, including temporary media and non-transitory media. Transient media include transmission media (eg, metal cables, optical fibers), signals, carriers, and the like. Non-transitory media include magnetic media (e.g. disks and tapes), optical media (e.g. CD ROMs, digital video disks, Blu-ray disks), solid state media (e.g. RAM, ROM, flash memory, solid state storage) and others Non-volatile storage or memory may be included.

컴퓨팅 장치(705)는 일부 예시적인 컴퓨팅 환경에서 기술, 방법, 애플리케이션, 프로세스 또는 컴퓨터 실행 가능 명령어를 구현하는 데 사용될 수 있다. 컴퓨터 실행 가능 명령어는 일시적 매체로부터 얻을 수 있고, 비 일시적 매체에서 저장되고 거기서 얻을 수 있다. 실행 가능한 명령어는 하나 이상의 프로그래밍, 스크립팅 및 기계 언어 (예 : C, C++, C#, Java, Visual Basic, Python, Perl, JavaScript 등)에서 비롯 될 수 있다.Computing device 705 may be used to implement techniques, methods, applications, processes or computer executable instructions in some example computing environments. Computer-executable instructions can be obtained from a temporary medium, stored in a non-transitory medium, and obtained there. Executable instructions can come from one or more programming, scripting, and machine languages (such as C, C ++, C #, Java, Visual Basic, Python, Perl, JavaScript, etc.).

프로세서(들)(710)는 고유 환경(native environment) 또는 가상 환경에서 임의의 운영 체제 (OS) (미도시) 하에서 실행될 수 있다. 서로 다른 유닛들이 서로 통신하도록, OS와 통신하도록 그리고 다른 애플리케이션들(미도시)과 통신하도록 하는 유닛 간 통신 메커니즘(795), 로직 유닛(760), API (application programming interface) 유닛(765), 입력 유닛(770), 출력 유닛(775), 획득 확정 및 사용자 요청 검토 유닛(780), 라이센스 발급 결정 유닛(785), 라이센스 생성 유닛(790)을 포함하는 하나 이상의 애플리케이션이 사용될 수 있다. 예를 들어, 획득 확정 및 사용자 요청 검토 유닛(780), 라이센스 발급 결정 유닛(785) 및 라이센스 생성 유닛(790)은 도 1 내지 도 5에 도시된 하나 이상의 프로세스를 구현할 수 있다. 설명된 유닛 및 요소는 설계, 기능, 구성 또는 구현에서 다양할 수 있으며 제공된 설명으로 제한되지 않는다.The processor (s) 710 may run under any operating system (OS) (not shown) in a native or virtual environment. Inter-unit communication mechanism 795, logic unit 760, application programming interface (API) unit 765, input to allow different units to communicate with each other, with the OS, and with other applications (not shown). One or more applications may be used, including unit 770, output unit 775, acquisition confirmation and user request review unit 780, license issue determination unit 785, license generation unit 790. For example, the acquisition confirmation and user request review unit 780, license issue determination unit 785, and license generation unit 790 may implement one or more processes shown in FIGS. 1-5. The units and elements described may vary in design, function, configuration or implementation and are not limited to the description provided.

일부 예시적인 구현에서, API 유닛(765)이 정보 또는 실행 명령어를 수신한 후 하나 이상의 다른 유닛(예를 들어, 로직 유닛(760), 입력 유닛(770), 출력 유닛(775), 획득 확정 및 사용자 요청 검토 유닛(780), 라이센스 발급 결정 유닛(785) 및 라이센스 생성 유닛(790))과 통신할 수 있다.In some example implementations, one or more other units (eg, logic unit 760, input unit 770, output unit 775, acquisition confirmation, etc.) after API unit 765 receives information or execution instructions. And communicate with the user request review unit 780, license issue determination unit 785, and license generation unit 790.

예를 들어, 입력 유닛(770)이 애플리케이션을 획득하기 위한 명령어, 라이센스 요청, 또는 다른 그러한 사용자 상호 작용과 같은 사용자로부터 입력을 수신한 후, 입력 유닛(770)은 API 유닛(765)을 사용하여 데이터 획득 확정 및 사용자 요청 검토 유닛(780)과 통신할 수 있다. 예를 들어, 획득 확정 및 사용자 요청 검토 유닛(780)은 상술한 바와 같이 라이센스가 발급되어야 하는지에 관한 결정을 할 수 있다.For example, after input unit 770 receives input from a user, such as an instruction to obtain an application, a license request, or other such user interaction, input unit 770 uses API unit 765. Communicate with the data acquisition confirmation and user request review unit 780. For example, the acquisition confirmation and user request review unit 780 may make a determination as to whether a license should be issued as described above.

획득 확정 및 사용자 요청 검토 유닛(780)은 API 유닛(765)을 통해 라이센스 발급 결정 유닛(785)과 상호 작용하여 라이센스의 발급 여부에 대한 출력을 제공 할 수 있다. API 유닛(765)을 사용하여, 획득 확정 및 사용자 요청 검토 유닛(780)은 전술한 바와 같이, 라이센스 생성 유닛(790)과 상호 작용하여 라이센스를 생성하고 라이센스를 사용자에게 제공 할 수 있다.The acquisition confirmation and user request review unit 780 may interact with the license issue determination unit 785 via the API unit 765 to provide an output of whether a license has been issued. Using the API unit 765, the acquisition confirmation and user request review unit 780 can interact with the license generation unit 790 to generate a license and provide the license to the user, as described above.

일부 예에서, 로직 유닛(760)은 유닛들 간의 정보 흐름을 제어하고 API 유닛(765), 입력 유닛(770), 출력 유닛(775), 획득 확정 및 사용자 요청 검토 유닛(780), 라이센스 발급 결정(7850 및 라이센스 생성 유닛(790)에 의해 제공되는 서비스를 지시(direct)하도록 구성될 수 있다. 예를 들어, 하나 이상의 프로세스 또는 구현의 흐름은 로직 유닛(760)에 의해 단독으로 또는 API 유닛(765)과 함께 제어될 수 있다.In some examples, logic unit 760 controls the flow of information between units and determines API unit 765, input unit 770, output unit 775, acquisition confirmation and user request review unit 780, license issue determination. 1780 and may direct the services provided by license generation unit 790. For example, the flow of one or more processes or implementations may be performed alone or by an API unit (such as logic unit 760). 765).

예시적인 구현은 다양한 이점 및 장점을 가질 수 있다. 예를 들어, 라이센스 활성화 및 검증 프로세스 중에 해커가 민감한 정보를 얻거나 애플리케이션을 사용할 위험과 소프트웨어 개발자의 정보 유출 위험을 줄이기 위해 보안 강화가 제공된다.Example implementations can have various advantages and advantages. For example, security enhancements are provided to reduce the risk of hackers gaining sensitive information or using applications during the license activation and validation process, and the risk of information leakage from software developers.

몇몇 예시적인 구현들이 도시되고 설명되었지만, 이 예시적인 구현들은 본 분야에 익숙한 사람들에게 본 명세서에 설명된 주제를 전달하기 위해 제공된다. 여기에 설명된 주제는 설명된 예시적인 구현으로 제한되지 않고 다양한 형태로 구현될 수 있음을 이해해야 한다. 본 명세서에 기술된 주제는 구체적으로 정의되거나 기술된 사항 없이 또는 설명되지 않은 다른 또는 상이한 요소 또는 사항으로 실시될 수 있다. 첨부된 청구 범위 및 그 균등물에 정의된 바와 같이 본 명세서에 기술된 주제를 벗어나지 않으면서 이러한 예시적인 구현에서 변경이 이루어질 수 있다는 것은 이 분야에 익숙한 자에게 이해될 것이다.While some example implementations have been shown and described, these example implementations are provided to convey the subject matter described herein to those skilled in the art. It is to be understood that the subject matter described herein may be embodied in various forms without being limited to the example implementations described. The subject matter described in this specification may be practiced with other or different elements or matters, without or specifically described or described. It will be understood by those skilled in the art that changes may be made in this exemplary implementation without departing from the subject matter described herein as defined in the appended claims and equivalents thereof.

Claims (17)

소프트웨어 활성화 및 라이센스 추적 방법으로서, 상기 방법은:
(a) 소프트웨어의 획득과 연관된 획득 확정을 취득하여 상기 획득 확정을 소프트웨어 활성화 및 라이센싱과 연관된 서버에 제공하고;
(b) 클라이언트가 상기 소프트웨어를 사용할 권한이 있도록 라이센스를 요청하되, 상기 라이센스는 서버에 의해 개인 키로 보안화되어 있고 상기 개인키는 상기 클라이언트에 저장되지 않고;
(c) 상기 라이센스를 클라이언트에 발급 및 제공하고;
(d) 상기 클라이언트에서 상기 라이센스를 검증하고;
(e) 상기 클라이언트에서 상기 라이센스를 저장하고;
(f) 주기적으로 상기 라이센스의 활성화 상태를 추적하고; 그리고,
(g) 상기 라이센스의 상기 활성화 상태에 근거해서, 상기 클라이언트에서 상기 라이센스에 대한 조치를 수행함을 포함하며,
상기 클라이언트에서 상기 라이센스를 검증함은 상기 애플리케이션과 연관된 클라이언트에서 상기 서버로부터 받은 상기 라이센스를 확인하고 상기 라이센스를 상기 클라이언트에 저장함을 포함하는,
방법.
A method of software activation and license tracking, the method comprising:
(a) acquire an acquisition confirmation associated with acquisition of software and provide the acquisition confirmation to a server associated with software activation and licensing;
(b) request a license so that a client is authorized to use the software, wherein the license is secured with a private key by a server and the private key is not stored on the client;
(c) issue and provide said license to a client;
(d) verify the license at the client;
(e) store the license at the client;
(f) periodically track the activation status of the license; And,
(g) based on the activation state of the license, performing an action on the license at the client,
Verifying the license at the client includes checking the license received from the server at a client associated with the application and storing the license at the client,
Way.
제1항에 있어서,
상기 획득 확정은 상기 서버와 연관된 데이터베이스의 레코드 및 활성화 키 중 적어도 하나를 포함하고,
상기 서버는 상기 획득 확정을 상기 소프트웨어 라이센스와 바꾸기 위한 인스트럭션을 상기 사용자에게 제공하는,
방법.
The method of claim 1,
The acquisition confirmation includes at least one of an activation key and a record of a database associated with the server;
The server providing instructions to the user for replacing the acquisition confirmation with the software license,
Way.
제1항에 있어서,
상기 획득 확정은 직접 판매, 제3자 재판매자를 통한 판매, 그리고 물리적 매체상의 박스 버전 혹은 온라인을 통한 배포 중 하나에 의해 취득되는,
방법.
The method of claim 1,
The acquisition confirmation is obtained by either direct sales, sales through third party resellers, and distribution via box version or online on physical media,
Way.
제1항에 있어서,
상기 획득 확정은, 상기 획득 확정을 생성하는 서버와 연관된 URL, 복수 개의 획득 확정의 대량 생성 및 상기 획득 확정의 단일 생성 중 적어도 하나에 의해 생성되는,
방법.
The method of claim 1,
The acquisition confirmation is generated by at least one of a URL associated with a server generating the acquisition confirmation, a mass generation of a plurality of acquisition confirmations, and a single generation of the acquisition confirmation,
Way.
제4항에 있어서,
상기 URL에 의해 생성된 상기 획득 확정은,
상기 획득 확정을 취득하기 위한 웹페이지 액세스를 상기 사용자에게 제공하고;
상기 사용자와 연관된 필요한 정보를 수신하고;
상기 애플리케이션의 구매가 성공일 경우 상기 사용자의 상기 필요한 정보를 상기 서버에 제공하고 상기 획득 정보를 상기 사용자에게 제공하되, 상기 애플리케이션의 주문 정보는 상기 서버에 저장되고, 상기 획득 확정은 상기 서버에 의해 생성되고; 그리고,
상기 애플리케이션의 구매가 성공이 아닐 경우, 상기 사용자에게 상기 애플리케이션의 구매가 성공하지 않았다는 표시를 제공함을 포함하는,
방법.
The method of claim 4, wherein
The acquisition confirmation generated by the URL is,
Provide the user with web page access to obtain the acquisition confirmation;
Receive necessary information associated with the user;
If the purchase of the application is successful, provide the server with the necessary information of the user and the acquisition information to the user, wherein the order information of the application is stored in the server, and the acquisition confirmation is performed by the server. Generated; And,
If the purchase of the application is not successful, providing the user with an indication that the purchase of the application was not successful,
Way.
제1항에 있어서,
상기 획득 확정은 암호화 없이 상기 사용자에게 제공되는,
방법.
The method of claim 1,
The acquisition confirmation is provided to the user without encryption,
Way.
제1항에 있어서,
상기 방법은,
고유한 로그인 및 비밀번호 정보 쌍을 제공하고, 보안 키로 보호된 서버와 보안 연결을 수립하고 그리고 상기 서버와 연결을 수립하여 상기 사용자를 식별하는 파라미터를 전송하는 것 중 적어도 하나에 의해 상기 획득 확정의 생성과 연관된 상기 서버에 레코드를 생성함을 더 포함하며,
상기 사용자가 식별을 제공한 후, 상기 서버에 상기 애플리케이션의 획득에 대한 정보를 저장함을 포함하는,
방법.
The method of claim 1,
The method,
Generating the acquisition confirmation by at least one of providing a unique login and password information pair, establishing a secure connection with a server protected with a security key, and establishing a connection with the server to transmit a parameter identifying the user Creating a record at the server associated with
After the user provides the identification, storing information about the acquisition of the application on the server,
Way.
제1항에 있어서,
상기 (c) 및 상기 (d)는,
상기 사용자로부터 상기 획득 확정을 수신하고;
상기 클라이언트가 상기 라이센스 요청을 생성하여 상기 서버에 제공하고;
상기 서버가 상기 획득 확정에 대해 활성화가 허락되었는지 여부를 결정하고;
상기 활성화가 허락된 경우 상기 서버가 상기 사용자의 식별 정보에 근거해서 라이센스를 발급하고 상기 라이센스의 파일을 상기 사용자에게 제공함을 포함하는,
방법.
The method of claim 1,
(C) and (d) above,
Receive the acquisition confirmation from the user;
The client generates the license request and provides it to the server;
The server determines whether activation is allowed for the acquisition confirmation;
If the activation is allowed, the server issues a license based on the user's identification information and provides the user with a file of the license,
Way.
제1항에 있어서,
상기 획득 확정은 상기 애플리케이션의 설치에 의해 인식되고, 상기 사용자가 정보를 상기 서버에 제공하도록 양식의 출현을 트리거할 특정 접미사를 갖는 패턴을 사용하여 생성된 하나 이상의 활성화 키를 포함하며,
상기 애플리케이션의 공급 업체는 자신의 패턴에 근거해서 상기 패턴을 결정할 수 있는,
방법.
The method of claim 1,
The acquisition confirmation comprises one or more activation keys recognized by the installation of the application and generated using a pattern with a specific suffix that will trigger the appearance of a form for the user to provide information to the server,
The supplier of the application can determine the pattern based on its pattern,
Way.
제1항에 있어서,
상기 라이센스는 상기 애플리케이션의 번들 ID, 상기 클라이언트의 하나 이상의 식별자 및 임의로 생성된 문자열 중 적어도 하나와 연관된 파라미터들을 포함하여 생성되는,
방법.
The method of claim 1,
The license is generated including parameters associated with at least one of a bundle ID of the application, one or more identifiers of the client, and a randomly generated string,
Way.
제1항에 있어서,
상기 검증은 상기 서버상에서 생성된 상기 라이센스의 검증을 수행함을 포함하며, 상기 라이센스는 디지털 서명을 생성하는 고유하고 안전한 개인 키로 서명되고, 상기 디지털 서명은 상기 클라이언트에서 상기 소프트웨어의 공개 키에 의해 추가로 검증되며, 상기 소프트웨어는 공급 업체 애플리케이션을 포함하는,
방법.
The method of claim 1,
The verification includes performing verification of the license generated on the server, the license being signed with a unique and secure private key that generates a digital signature, the digital signature being further added by the public key of the software at the client. Verified, the software includes a vendor application,
Way.
소프트웨어 활성화 및 라이센스 추적을 위한 동작을 수행하도록 구성된 비일시적인 컴퓨터 판독 가능한 매체로서, 상기 동작은,
(a) 소프트웨어의 획득과 연관된 획득 확정을 취득하여 상기 획득 확정을 소프트웨어 활성화 및 라이센싱과 연관된 서버에 제공하고;
(b) 클라이언트가 상기 소프트웨어를 사용할 권한이 있도록 라이센스를 요청하되, 상기 라이센스는 서버에 의해 개인 키로 보안화되어 있고 상기 개인키는 상기 클라이언트에 저장되지 않고;
(c) 상기 라이센스를 클라이언트에 발급 및 제공하고;
(d) 상기 클라이언트에서 상기 라이센스를 검증하고;
(e) 상기 클라이언트에서 상기 라이센스를 저장하고;
(f) 주기적으로 상기 라이센스의 활성화 상태를 추적하고; 그리고,
(g) 상기 라이센스의 상기 활성화 상태에 근거해서, 상기 클라이언트에서 상기 라이센스에 대한 조치를 수행함을 포함하며,
상기 클라이언트에서 상기 라이센스를 검증함은 상기 애플리케이션과 연관된 클라이언트에서 상기 서버로부터 받은 상기 라이센스를 확인하고 상기 라이센스를 상기 클라이언트에 저장함을 포함하는,
비일시적인 컴퓨터 판독 가능한 매체.
A non-transitory computer readable medium configured to perform an operation for software activation and license tracking, the operation comprising:
(a) acquire an acquisition confirmation associated with acquisition of software and provide the acquisition confirmation to a server associated with software activation and licensing;
(b) request a license so that a client is authorized to use the software, wherein the license is secured with a private key by a server and the private key is not stored on the client;
(c) issue and provide said license to a client;
(d) verify the license at the client;
(e) store the license at the client;
(f) periodically track the activation status of the license; And,
(g) based on the activation state of the license, performing an action on the license at the client,
Verifying the license at the client includes identifying the license received from the server at a client associated with the application and storing the license at the client;
Non-transitory Computer-readable Media.
제12항에 있어서,
URL에 의해 생성된 상기 획득 확정은,
상기 획득 확정을 취득하기 위한 웹페이지 액세스를 상기 사용자에게 제공하고;
상기 사용자와 연관된 필요한 정보를 수신하고;
상기 애플리케이션의 구매가 성공일 경우 상기 사용자의 상기 필요한 정보를 상기 서버에 제공하고 상기 획득 정보를 상기 사용자에게 제공하되, 상기 애플리케이션의 주문 정보는 상기 서버에 저장되고, 상기 획득 확정은 상기 서버에 의해 생성되고; 그리고,
상기 애플리케이션의 구매가 성공이 아닐 경우, 상기 사용자에게 상기 애플리케이션의 구매이 성공하지 않았다는 표시를 제공함을 포함하는,
비일시적인 컴퓨터 판독 가능한 매체.
The method of claim 12,
The acquisition confirmation generated by the URL,
Provide the user with web page access to obtain the acquisition confirmation;
Receive necessary information associated with the user;
If the purchase of the application is successful, provide the server with the necessary information of the user and the acquisition information to the user, wherein the order information of the application is stored in the server, and the acquisition confirmation is performed by the server. Generated; And,
If the purchase of the application is not successful, providing the user with an indication that the purchase of the application was not successful,
Non-transitory Computer-readable Media.
제12항에 있어서,
상기 획득 확정은 암호화 없이 상기 사용자에게 제공되는,
비일시적인 컴퓨터 판독 가능한 매체.
The method of claim 12,
The acquisition confirmation is provided to the user without encryption,
Non-transitory Computer-readable Media.
제12항에 있어서,
상기 동작은,
고유한 로그인 및 비밀번호 정보 쌍을 제공하고, 보안 키로 보호된 서버와 보안 연결을 수립하고 그리고 상기 서버와 연결을 수립하여 상기 사용자를 식별하는 파라미터를 전송하는 것 중 적어도 하나에 의해 상기 획득 확정의 생성과 연관된 상기 서버에 레코드를 생성함을 더 포함하며,
상기 사용자가 식별을 제공한 후, 상기 서버에 상기 애플리케이션의 획득에 대한 정보를 저장함을 포함하는,
비일시적인 컴퓨터 판독 가능한 매체.
The method of claim 12,
The operation is,
Generating the acquisition confirmation by at least one of providing a unique login and password information pair, establishing a secure connection with a server protected with a security key, and establishing a connection with the server to transmit a parameter identifying the user Generating a record at the server associated with the
After the user provides the identification, storing information about the acquisition of the application on the server,
Non-transitory Computer-readable Media.
제12항에 있어서,
상기 (c) 및 상기 (d)는,
상기 사용자로부터 상기 획득 확정을 수신하고;
상기 클라이언트가 상기 라이센스 요청을 생성하여 상기 서버에 제공하고;
상기 서버가 상기 획득 확정에 대해 활성화가 허락되었는지 여부를 결정하고; 그리고
상기 활성화가 허락된 경우 상기 서버가 상기 사용자의 식별 정보에 근거해서 라이센스를 발급하고 상기 라이센스의 파일을 상기 사용자에게 제공함을 포함하며,
상기 획득 확정은, 상기 애플리케이션의 설치에 의해 인식되고, 상기 사용자가 정보를 상기 서버에 제공하도록 양식의 출현을 트리거할 특정 접미사를 갖는 패턴을 사용하여 생성된 하나 이상의 활성화 키를 포함하며,
상기 애플리케이션의 공급 업체는 자신의 패턴에 근거해서 상기 패턴을 결정할 수 있는,
비일시적인 컴퓨터 판독 가능한 매체.
The method of claim 12,
(C) and (d) above,
Receive the acquisition confirmation from the user;
The client generates the license request and provides it to the server;
The server determines whether activation is allowed for the acquisition confirmation; And
If the activation is allowed, the server issues a license based on the user's identification information and provides the file of the license to the user,
The acquiring confirmation includes one or more activation keys that are recognized by the installation of the application and are generated using a pattern with a specific suffix that will trigger the appearance of a form for the user to provide information to the server,
The supplier of the application can determine the pattern based on its pattern,
Non-transitory Computer-readable Media.
제12항에 있어서,
상기 검증은 상기 서버상에서 생성된 상기 라이센스의 검증을 수행함을 포함하며, 상기 라이센스는 디지털 서명을 생성하는 고유하고 안전한 개인 키로 서명되고, 상기 디지털 서명은 상기 클라이언트에서 상기 소프트웨어의 공개 키에 의해 추가로 검증되며, 상기 소프트웨어는 공급 업체 애플리케이션을 포함하는,
비일시적인 컴퓨터 판독 가능한 매체.
The method of claim 12,
The verification includes performing verification of the license generated on the server, the license being signed with a unique and secure private key that generates a digital signature, the digital signature being further added by the public key of the software at the client. Verified, the software includes a vendor application,
Non-transitory Computer-readable Media.
KR1020197037546A 2017-05-22 2017-09-20 Systems and methods for software activation and license tracking KR20200000448A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/601,909 US10706130B2 (en) 2015-02-06 2017-05-22 System and method for software activation and license tracking
US15/601,909 2017-05-22
PCT/US2017/052567 WO2018217224A1 (en) 2017-05-22 2017-09-20 System and method for software activation and license tracking

Publications (1)

Publication Number Publication Date
KR20200000448A true KR20200000448A (en) 2020-01-02

Family

ID=64395790

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197037546A KR20200000448A (en) 2017-05-22 2017-09-20 Systems and methods for software activation and license tracking

Country Status (7)

Country Link
EP (1) EP3639174A4 (en)
JP (1) JP2020524836A (en)
KR (1) KR20200000448A (en)
CN (1) CN110832479A (en)
CA (1) CA3063223A1 (en)
MX (1) MX2019013986A (en)
WO (1) WO2018217224A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102584566B1 (en) * 2022-04-27 2023-10-05 (주)아스트론시큐리티 Dynamic system for managing cloud assets

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096849A (en) * 2019-04-02 2019-08-06 深圳市中博科创信息技术有限公司 A kind of License authorization and authentication method, device, equipment and readable storage medium storing program for executing
CN110677242B (en) * 2019-08-28 2022-08-09 RealMe重庆移动通信有限公司 Key processing method, key processing device and terminal equipment
US11928478B2 (en) * 2019-10-29 2024-03-12 Hewlett-Packard Development Company, L.P. Tracking device state transitions
CN113268715A (en) * 2020-02-14 2021-08-17 中移(苏州)软件技术有限公司 Software encryption method, device, equipment and storage medium
CN111523093A (en) * 2020-03-20 2020-08-11 北京元心科技有限公司 Software license validity checking method and system and corresponding computer equipment
CN113748657B (en) * 2020-03-31 2023-07-07 京东方科技集团股份有限公司 Method, node, system and computer readable storage medium for license authentication
CN112307522B (en) * 2020-10-30 2022-09-20 苏州浪潮智能科技有限公司 Method and device for realizing maintenance service in software system and storage medium
CN113590486A (en) * 2021-02-23 2021-11-02 中国人民解放军军事科学院国防科技创新研究院 Open source software code quality evaluation method based on measurement
CN112866419B (en) * 2021-03-11 2023-05-02 统信软件技术有限公司 Activation control method, system and computing device
CN117390599B (en) * 2023-12-04 2024-03-26 深圳中安高科电子有限公司 Offline multi-device product license issuing and verifying method, system and device

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1777907B1 (en) * 2005-10-20 2007-12-12 Ubs Ag Method and devices for carrying out cryptographic operations in a client-server network
CN101681403A (en) * 2007-03-20 2010-03-24 迪姆威奇软件有限责任公司 refreshing software licenses
US8620818B2 (en) * 2007-06-25 2013-12-31 Microsoft Corporation Activation system architecture
US8528109B2 (en) * 2007-10-09 2013-09-03 Microsoft Corporation Optimizing amount of data passed during software license activation
US9424399B2 (en) * 2009-05-12 2016-08-23 Microsoft Technology Licensing, Llc Availability of permission models in roaming environments
US8984293B2 (en) * 2010-11-19 2015-03-17 Microsoft Corporation Secure software product identifier for product validation and activation
US8775797B2 (en) * 2010-11-19 2014-07-08 Microsoft Corporation Reliable software product validation and activation with redundant security
US8683579B2 (en) * 2010-12-14 2014-03-25 Microsoft Corporation Software activation using digital licenses
US9659155B2 (en) * 2015-02-06 2017-05-23 Macpaw Inc System and method for software activation and license tracking

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102584566B1 (en) * 2022-04-27 2023-10-05 (주)아스트론시큐리티 Dynamic system for managing cloud assets

Also Published As

Publication number Publication date
CN110832479A (en) 2020-02-21
WO2018217224A1 (en) 2018-11-29
EP3639174A1 (en) 2020-04-22
JP2020524836A (en) 2020-08-20
MX2019013986A (en) 2020-01-21
EP3639174A4 (en) 2020-11-18
CA3063223A1 (en) 2018-11-29

Similar Documents

Publication Publication Date Title
US9659155B2 (en) System and method for software activation and license tracking
KR20200000448A (en) Systems and methods for software activation and license tracking
US10706130B2 (en) System and method for software activation and license tracking
US10846374B2 (en) Availability of permission models in roaming environments
TWI492085B (en) Method,device,and computer storage media for enhanced product functionality based on user identification
KR101219819B1 (en) Flexible licensing architecture for licensing digital application
US8683579B2 (en) Software activation using digital licenses
US20060168580A1 (en) Software-management system, recording medium, and information-processing device
JP4326443B2 (en) Information processing apparatus, information processing method, and program
US11093587B2 (en) Software wrapper and installer using timestamp validation and system identification validation
JP2008541206A (en) Network commerce
JP2009534739A (en) Authentication for commerce using mobile modules
KR20120017035A (en) Interaction model to migrate states and data
JP5485485B1 (en) Information processing apparatus, information processing method, program, and storage medium
JP2018530054A (en) Payment authentication method and apparatus for mobile terminal and mobile terminal
KR101711024B1 (en) Method for accessing temper-proof device and apparatus enabling of the method
CA3043405A1 (en) Method for processing transaction data, corresponding communications terminal, card reader and program
JP2021118444A (en) Information processing device, information processing method, and program
JP2003029863A (en) Software license management system
JP2005189913A (en) Software license management method and program
CN113868691A (en) Authorized operation method and device of block chain based on cloud-native technology
Chuang et al. An inter-store transaction mechanism to distribute mobile applications
JP2006178593A (en) Resource protection system
KR20110111988A (en) Method and system for controlling execution of application installed mobile terminal

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application