KR102393537B1 - Method and system for managing software license based on trusted execution environment - Google Patents

Method and system for managing software license based on trusted execution environment Download PDF

Info

Publication number
KR102393537B1
KR102393537B1 KR1020210003984A KR20210003984A KR102393537B1 KR 102393537 B1 KR102393537 B1 KR 102393537B1 KR 1020210003984 A KR1020210003984 A KR 1020210003984A KR 20210003984 A KR20210003984 A KR 20210003984A KR 102393537 B1 KR102393537 B1 KR 102393537B1
Authority
KR
South Korea
Prior art keywords
license
software
node
node identifier
processor
Prior art date
Application number
KR1020210003984A
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
Application filed by 주식회사 티이이웨어 filed Critical 주식회사 티이이웨어
Priority to KR1020210003984A priority Critical patent/KR102393537B1/en
Application granted granted Critical
Publication of KR102393537B1 publication Critical patent/KR102393537B1/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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms

Abstract

A software license management method and system based on a trusted execution environment are disclosed. The license management method according to one embodiment includes the steps of: generating an intermediate key pair comprising an intermediate private key and an intermediate public key; issuing an intermediate certificate including the intermediate public key through a root system and signed with the public key of the root system; issuing a license including a node identifier of node software and signed with the intermediate public key to the node software; and checking whether the number of running node software is less than or equal to the number permitted through the license.

Description

신뢰실행환경에 기반한 소프트웨어 라이선스 관리 방법 및 시스템{METHOD AND SYSTEM FOR MANAGING SOFTWARE LICENSE BASED ON TRUSTED EXECUTION ENVIRONMENT}Software license management method and system based on trusted execution environment

아래의 설명은 신뢰실행환경에 기반한 소프트웨어 라이선스 관리 방법 및 시스템에 관한 것이다.The following description relates to a software license management method and system based on a trusted execution environment.

소프트웨어에 대한 라이선스 강제는 어려운 문제로 여겨졌다. 사용자가 소프트웨어를 수정하는 것만으로도 라이선스 관리 기능을 무력화시킬 수 있기 때문이다.Enforcing licenses for software was seen as a difficult problem. This is because users can disable the license management function just by modifying the software.

[선행기술문헌] [Prior art literature]

한국등록특허 제10-2020-0218792호Korean Patent Registration No. 10-2020-0218792

하드웨어 요소인 신뢰실행환경에 기반하여 우회하기 어려운 라이선스 관리 방법 및 시스템을 제공한다.Provides a license management method and system that is difficult to bypass based on the trusted execution environment, which is a hardware element.

적어도 하나의 프로세서를 포함하는 컴퓨터 장치의 라이선스 관리 방법에 있어서, 상기 적어도 하나의 프로세서에 의해, 중간 개인키 및 중간 공개키를 포함하는 중간 키쌍을 생성하는 단계; 상기 적어도 하나의 프로세서에 의해, 루트 시스템을 통해 상기 중간 공개키를 포함하고, 상기 루트 시스템의 공개키로 서명된 중간 인증서를 발급받는 단계; 상기 적어도 하나의 프로세서에 의해, 노드 소프트웨어의 노드 식별자를 포함하고, 상기 중간 공개키로 서명된 라이선스를 상기 노드 소프트웨어로 발급하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 실행중인 노드 소프트웨어의 수가 상기 라이선스를 통해 허가된 수 이하인지 여부를 확인하는 단계를 포함하고, 상기 라이선스에 포함된 노드 식별자는 상기 라이선스를 발급받은 노드 소프트웨어가 설치 및 구동되는 물리적인 장치의 신뢰실행환경을 위한 고유키를 이용하여 상기 라이선스를 발급받은 노드 소프트웨어에서 검증되는 것을 특징으로 하는 라이선스 관리 방법을 제공한다.A method for managing a license of a computer device including at least one processor, the method comprising: generating, by the at least one processor, an intermediate key pair including an intermediate private key and an intermediate public key; receiving, by the at least one processor, an intermediate certificate including the intermediate public key and signed with the public key of the root system through a root system; issuing, by the at least one processor, a license including a node identifier of the node software and signed with the intermediate public key to the node software; and checking, by the at least one processor, whether the number of running node software is less than or equal to the number permitted through the license, wherein the node identifier included in the license is installed by the node software issued the license And it provides a license management method, characterized in that the verification in the node software issued the license using a unique key for the trusted execution environment of the driven physical device.

적어도 하나의 프로세서를 포함하는 컴퓨터 장치의 라이선스 관리 방법에 있어서, 상기 적어도 하나의 프로세서에 의해, 제1 노드 식별자를 생성하는 단계; 상기 적어도 하나의 프로세서에 의해, 상기 생성된 제1 노드 식별자를 라이선스 관리 서버로 전달하는 단계; 상기 적어도 하나의 프로세서에 의해, 상기 생성된 제1 노드 식별자를 상기 컴퓨터 장치의 신뢰실행환경을 위한 고유키를 이용하여 암호화하는 단계; 상기 적어도 하나의 프로세서에 의해, 상기 암호화된 제1 노드 식별자의 제1 해시값을 계산하는 단계; 상기 적어도 하나의 프로세서에 의해, 상기 라이선스 관리 서버로부터 라이선스를 발급받는 단계; 상기 적어도 하나의 프로세서에 의해, 상기 라이선스에 포함된 제2 노드 식별자를 상기 고유키로 암호화하는 단계; 상기 적어도 하나의 프로세서에 의해, 상기 암호화된 제2 노드 식별자의 제2 해시값을 계산하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 상기 제1 해시값 및 상기 제2 해시값을 비교하여 상기 라이선스에 포함된 노드 식별자를 검증하는 단계를 포함하는 라이선스 관리 방법을 제공한다.A method for managing a license of a computer device including at least one processor, the method comprising: generating, by the at least one processor, a first node identifier; transmitting, by the at least one processor, the generated first node identifier to a license management server; encrypting, by the at least one processor, the generated first node identifier using a unique key for a trusted execution environment of the computer device; calculating, by the at least one processor, a first hash value of the encrypted first node identifier; receiving, by the at least one processor, a license from the license management server; encrypting, by the at least one processor, the second node identifier included in the license with the unique key; calculating, by the at least one processor, a second hash value of the encrypted second node identifier; and verifying, by the at least one processor, the node identifier included in the license by comparing the first hash value and the second hash value.

일측에 따르면, 상기 제1 노드 식별자는 상기 컴퓨터 장치의 제1 컴퓨터 정보, 상기 컴퓨터 장치의 사용자의 제1 사용자 정보 및 상기 라이선스의 대상이 되는 소프트웨어의 제1 소프트웨어 정보를 포함하고, 상기 라이선스 관리 방법은, 상기 적어도 하나의 프로세서에 의해, 상기 라이선스에 포함된 제2 노드 식별자가 포함하는 제2 컴퓨터 정보, 제2 사용자 정보 및 제2 소프트웨어 정보를 확인하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 상기 확인된 제2 컴퓨터 정보, 제2 사용자 정보 및 제2 소프트웨어 정보를 상기 제1 컴퓨터 정보, 상기 제1 사용자 정보 및 상기 제1 소프트웨어 정보와 비교하여 상기 라이선스에 포함된 제2 노드 식별자를 더 검증하는 단계를 더 포함하는 것을 특징으로 할 수 있다.According to one side, the first node identifier includes first computer information of the computer device, first user information of a user of the computer device, and first software information of software to be licensed, the license management method checking, by the at least one processor, second computer information, second user information, and second software information included in the second node identifier included in the license; and comparing, by the at least one processor, the identified second computer information, second user information, and second software information with the first computer information, the first user information, and the first software information, to the license. It may be characterized by further comprising the step of further verifying the included second node identifier.

다른 측면에 따르면, 상기 라이선스 관리 방법은, 상기 적어도 하나의 프로세서에 의해, 상기 라이선스에 포함된 서명이 상기 라이선스에 포함된 중간 인증서의 중간 공개키로 서명된 것인지 확인하는 단계; 상기 적어도 하나의 프로세서에 의해, 상기 라이선스에 포함된 중간 인증서가 상기 라이선스에 포함된 루트 인증서의 루트 공개키로 서명된 것인지 확인하는 단계; 및 상기 적어도 하나의 프로세서에 의해, 상기 라이선스에 포함된 루트 인증서가 상기 라이선스의 대상이 되는 소프트웨어에 포함된 루트 인증서 목록에 포함되어 있는지 확인하는 단계를 더 포함하는 것을 특징으로 할 수 있다.According to another aspect, the license management method may include: checking, by the at least one processor, whether the signature included in the license is signed with an intermediate public key of an intermediate certificate included in the license; checking, by the at least one processor, whether the intermediate certificate included in the license is signed with a root public key of a root certificate included in the license; and confirming, by the at least one processor, whether the root certificate included in the license is included in a list of root certificates included in the software subject to the license.

컴퓨터 장치와 결합되어 상기 방법을 컴퓨터 장치에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램을 제공한다.Provided is a computer program stored in a computer-readable recording medium in combination with a computer device to execute the method on the computer device.

상기 방법을 컴퓨터 장치에 실행시키기 위한 프로그램이 기록되어 있는 컴퓨터 판독 가능한 기록매체를 제공한다.It provides a computer-readable recording medium in which a program for executing the method in a computer device is recorded.

컴퓨터 장치에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서에 의해, 중간 개인키 및 중간 공개키를 포함하는 중간 키쌍을 생성하고, 루트 시스템을 통해 상기 중간 공개키를 포함하고, 상기 루트 시스템의 공개키로 서명된 중간 인증서를 발급받고, 노드 소프트웨어의 노드 식별자를 포함하고, 상기 중간 공개키로 서명된 라이선스를 상기 노드 소프트웨어로 발급하고, 실행중인 노드 소프트웨어의 수가 상기 라이선스를 통해 허가된 수 이하인지 여부를 확인하고, 상기 라이선스에 포함된 노드 식별자는 상기 라이선스를 발급받은 노드 소프트웨어가 설치 및 구동되는 물리적인 장치의 신뢰실행환경을 위한 고유키를 이용하여 상기 라이선스를 발급받은 노드 소프트웨어에서 검증되는 것을 특징으로 하는 컴퓨터 장치를 제공한다.at least one processor implemented to execute instructions readable by a computer device, the at least one processor generating, by the at least one processor, an intermediate key pair comprising an intermediate private key and an intermediate public key; Issuing an intermediate certificate including a key, signed with the public key of the root system, including a node identifier of node software, and issuing a license signed with the intermediate public key to the node software, wherein the number of running node software is the number of It is checked whether the number is less than or equal to the number permitted through the license, and the node identifier included in the license uses a unique key for the trusted execution environment of the physical device on which the node software that has been issued the license is installed and runs. It provides a computer device, characterized in that it is verified by the issued node software.

하드웨어 요소인 신뢰실행환경에 기반하여 우회하기 어려운 라이선스 관리 방법 및 시스템을 제공할 수 있다.It is possible to provide a license management method and system that is difficult to bypass based on the trusted execution environment, which is a hardware element.

도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 컴퓨터 장치의 예를 도시한 블록도이다.
도 3은 본 발명의 일실시예에 따른 라이선스 관리 시스템의 구성 요소의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 인증서 기간 설계의 예를 도시한 도면이다.
도 5는 본 발명의 일실시예에 있어서, 라이선스의 예를 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 라이선스 관리 방법의 예를 도시한 흐름도이다.
도 7은 본 발명의 일실시예에 있어서, 중간 인증서를 발급하는 과정의 예를 도시한 도면이다.
도 8은 본 발명의 일실시예에 있어서, 라이선스를 발급하는 과정의 예를 도시한 도면이다.
도 9는 본 발명의 일실시예에 있어서, NID 생성 알고리즘의 예를 도시한 도면이다.
도 10은 본 발명의 일실시예에 있어서, NID 검사 알고리즘의 예를 도시한 도면이다.
도 11은 본 발명의 일실시예에 있어서, 라이선스 검증 알고리즘의 예를 도시한 도면이다.
1 is a diagram illustrating an example of a network environment according to an embodiment of the present invention.
2 is a block diagram illustrating an example of a computer device according to an embodiment of the present invention.
3 is a diagram illustrating an example of components of a license management system according to an embodiment of the present invention.
4 is a diagram illustrating an example of a certificate period design according to an embodiment of the present invention.
5 is a diagram illustrating an example of a license according to an embodiment of the present invention.
6 is a flowchart illustrating an example of a license management method according to an embodiment of the present invention.
7 is a diagram illustrating an example of a process for issuing an intermediate certificate according to an embodiment of the present invention.
8 is a diagram illustrating an example of a process of issuing a license according to an embodiment of the present invention.
9 is a diagram illustrating an example of an NID generation algorithm according to an embodiment of the present invention.
10 is a diagram illustrating an example of an NID checking algorithm according to an embodiment of the present invention.
11 is a diagram illustrating an example of a license verification algorithm according to an embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.Since the present invention can have various changes and can have various embodiments, specific embodiments are illustrated in the drawings and described in detail in the detailed description. However, this is not intended to limit the present invention to specific embodiments, and it should be understood to include all modifications, equivalents and substitutes included in the spirit and scope of the present invention. In describing each figure, like reference numerals have been used for like elements.

제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.Terms such as first, second, A, and B may be used to describe various elements, but the elements should not be limited by the terms. The above terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, a first component may be referred to as a second component, and similarly, a second component may also be referred to as a first component. and/or includes a combination of a plurality of related listed items or any of a plurality of related listed items.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.When an element is referred to as being “connected” or “connected” to another element, it is understood that it may be directly connected or connected to the other element, but other elements may exist in between. it should be On the other hand, when it is said that a certain element is "directly connected" or "directly connected" to another element, it should be understood that the other element does not exist in the middle.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in the present application are only used to describe specific embodiments, and are not intended to limit the present invention. The singular expression includes the plural expression unless the context clearly dictates otherwise. In the present application, terms such as “comprise” or “have” are intended to designate that a feature, number, step, operation, component, part, or combination thereof described in the specification exists, but one or more other features It should be understood that this does not preclude the existence or addition of numbers, steps, operations, components, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical and scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of the related art, and should not be interpreted in an ideal or excessively formal meaning unless explicitly defined in the present application. does not

이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings.

본 발명의 실시예들에 따른 라이선스 관리 시스템은 적어도 하나의 컴퓨터 장치에 의해 구현될 수 있으며, 본 발명의 실시예들에 따른 라이선스 관리 방법은 라이선스 관리 시스템을 구현하는 적어도 하나의 컴퓨터 장치를 통해 수행될 수 있다. 컴퓨터 장치에는 본 발명의 일실시예에 따른 컴퓨터 프로그램이 설치 및 구동될 수 있고, 컴퓨터 장치는 구동된 컴퓨터 프로그램의 제어에 따라 본 발명의 실시예들에 따른 라이선스 관리 방법을 수행할 수 있다.The license management system according to the embodiments of the present invention may be implemented by at least one computer device, and the license management method according to the embodiments of the present invention is performed through at least one computer device implementing the license management system. can be The computer program according to an embodiment of the present invention may be installed and driven in the computer device, and the computer device may perform the license management method according to the embodiments of the present invention under the control of the driven computer program.

도 1은 본 발명의 일실시예에 따른 네트워크 환경의 예를 도시한 도면이다. 도 1의 네트워크 환경은 복수의 전자 기기들(110, 120, 130, 140), 복수의 서버들(150, 160) 및 네트워크(170)를 포함하는 예를 나타내고 있다. 이러한 도 1은 발명의 설명을 위한 일례로 전자 기기의 수나 서버의 수가 도 1과 같이 한정되는 것은 아니다. 또한, 도 1의 네트워크 환경은 본 실시예들에 적용 가능한 환경들 중 하나의 예를 설명하는 것일 뿐, 본 실시예들에 적용 가능한 환경이 도 1의 네트워크 환경으로 한정되는 것은 아니다.1 is a diagram illustrating an example of a network environment according to an embodiment of the present invention. The network environment of FIG. 1 shows an example including a plurality of electronic devices 110 , 120 , 130 , 140 , a plurality of servers 150 , 160 , and a network 170 . 1 is an example for explaining the invention, and the number of electronic devices or the number of servers is not limited as in FIG. 1 . In addition, the network environment of FIG. 1 only describes one example of environments applicable to the present embodiments, and the environment applicable to the present embodiments is not limited to the network environment of FIG. 1 .

복수의 전자 기기들(110, 120, 130, 140)은 컴퓨터 장치로 구현되는 고정형 단말이거나 이동형 단말일 수 있다. 복수의 전자 기기들(110, 120, 130, 140)의 예를 들면, 스마트폰(smart phone), 휴대폰, 네비게이션, 컴퓨터, 노트북, 디지털방송용 단말, PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), 태블릿 PC 등이 있다. 일례로 도 1에서는 전자 기기(110)의 예로 스마트폰의 형상을 나타내고 있으나, 본 발명의 실시예들에서 전자 기기(110)는 실질적으로 무선 또는 유선 통신 방식을 이용하여 네트워크(170)를 통해 다른 전자 기기들(120, 130, 140) 및/또는 서버(150, 160)와 통신할 수 있는 다양한 물리적인 컴퓨터 장치들 중 하나를 의미할 수 있다.The plurality of electronic devices 110 , 120 , 130 , and 140 may be a fixed terminal implemented as a computer device or a mobile terminal. Examples of the plurality of electronic devices 110 , 120 , 130 , 140 include a smart phone, a mobile phone, a navigation device, a computer, a notebook computer, a digital broadcasting terminal, a personal digital assistant (PDA), and a portable multimedia player (PMP). ), tablet PCs, etc. As an example, in FIG. 1 , the shape of a smartphone is shown as an example of the electronic device 110 , but in embodiments of the present invention, the electronic device 110 is substantially different through the network 170 using a wireless or wired communication method. It may refer to one of various physical computer devices capable of communicating with the electronic devices 120 , 130 , 140 and/or the servers 150 and 160 .

통신 방식은 제한되지 않으며, 네트워크(170)가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크(170)는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크(170)는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.The communication method is not limited, and not only a communication method using a communication network (eg, a mobile communication network, a wired Internet, a wireless Internet, a broadcasting network) that the network 170 may include, but also short-range wireless communication between devices may be included. For example, the network 170 may include a personal area network (PAN), a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), and a broadband network (BBN). , the Internet, and the like. In addition, the network 170 may include any one or more of a network topology including a bus network, a star network, a ring network, a mesh network, a star-bus network, a tree or a hierarchical network, etc. not limited

서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다. 예를 들어, 서버(150)는 네트워크(170)를 통해 접속한 복수의 전자 기기들(110, 120, 130, 140)로 서비스(일례로, 라이선스 관리 서비스, 키 교환 서비스, 아카이빙 서비스, 파일 배포 서비스, 지도 서비스, 컨텐츠 제공 서비스, 그룹 통화 서비스(또는 음성 컨퍼런스 서비스), 메시징 서비스, 메일 서비스, 소셜 네트워크 서비스, 번역 서비스, 금융 서비스, 결제 서비스, 검색 서비스 등)를 제공하는 시스템일 수 있다.Each of the servers 150 and 160 communicates with the plurality of electronic devices 110 , 120 , 130 , 140 and the network 170 through a computer device or a plurality of computers that provides commands, codes, files, contents, services, etc. It can be implemented in devices. For example, the server 150 provides a service (eg, a license management service, a key exchange service, an archiving service, and a file distribution) to the plurality of electronic devices 110 , 120 , 130 , 140 accessed through the network 170 . service, map service, content providing service, group call service (or voice conference service), messaging service, mail service, social network service, translation service, financial service, payment service, search service, etc.).

도 2는 본 발명의 일실시예에 따른 컴퓨터 장치의 예를 도시한 블록도이다. 앞서 설명한 복수의 전자 기기들(110, 120, 130, 140) 각각이나 서버들(150, 160) 각각은 도 2를 통해 도시된 컴퓨터 장치(200)에 의해 구현될 수 있다.2 is a block diagram illustrating an example of a computer device according to an embodiment of the present invention. Each of the plurality of electronic devices 110 , 120 , 130 , 140 or the servers 150 and 160 described above may be implemented by the computer device 200 illustrated in FIG. 2 .

이러한 컴퓨터 장치(200)는 도 2에 도시된 바와 같이, 메모리(210), 프로세서(220), 통신 인터페이스(230) 그리고 입출력 인터페이스(240)를 포함할 수 있다. 메모리(210)는 컴퓨터에서 판독 가능한 기록매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 여기서 ROM과 디스크 드라이브와 같은 비소멸성 대용량 기록장치는 메모리(210)와는 구분되는 별도의 영구 저장 장치로서 컴퓨터 장치(200)에 포함될 수도 있다. 또한, 메모리(210)에는 운영체제와 적어도 하나의 프로그램 코드가 저장될 수 있다. 이러한 소프트웨어 구성요소들은 메모리(210)와는 별도의 컴퓨터에서 판독 가능한 기록매체로부터 메모리(210)로 로딩될 수 있다. 이러한 별도의 컴퓨터에서 판독 가능한 기록매체는 플로피 드라이브, 디스크, 테이프, DVD/CD-ROM 드라이브, 메모리 카드 등의 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다. 다른 실시예에서 소프트웨어 구성요소들은 컴퓨터에서 판독 가능한 기록매체가 아닌 통신 인터페이스(230)를 통해 메모리(210)에 로딩될 수도 있다. 예를 들어, 소프트웨어 구성요소들은 네트워크(170)를 통해 수신되는 파일들에 의해 설치되는 컴퓨터 프로그램에 기반하여 컴퓨터 장치(200)의 메모리(210)에 로딩될 수 있다.As shown in FIG. 2 , the computer device 200 may include a memory 210 , a processor 220 , a communication interface 230 , and an input/output interface 240 . The memory 210 is a computer-readable recording medium and may include a random access memory (RAM), a read only memory (ROM), and a permanent mass storage device such as a disk drive. Here, a non-volatile mass storage device such as a ROM and a disk drive may be included in the computer device 200 as a separate permanent storage device distinct from the memory 210 . Also, an operating system and at least one program code may be stored in the memory 210 . These software components may be loaded into the memory 210 from a computer-readable recording medium separate from the memory 210 . The separate computer-readable recording medium may include a computer-readable recording medium such as a floppy drive, a disk, a tape, a DVD/CD-ROM drive, and a memory card. In another embodiment, the software components may be loaded into the memory 210 through the communication interface 230 instead of a computer-readable recording medium. For example, the software components may be loaded into the memory 210 of the computer device 200 based on a computer program installed by files received through the network 170 .

프로세서(220)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(210) 또는 통신 인터페이스(230)에 의해 프로세서(220)로 제공될 수 있다. 예를 들어 프로세서(220)는 메모리(210)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다. 이때, 프로세서(220)는 컴퓨터 장치(200)와 같은 처리장치에 신뢰실행환경(Trusted Execution Environment, TEE)과 같은 안전한 컴퓨팅 환경을 구성하기 위한 기능을 제공할 수 있다.The processor 220 may be configured to process instructions of a computer program by performing basic arithmetic, logic, and input/output operations. The instructions may be provided to the processor 220 by the memory 210 or the communication interface 230 . For example, the processor 220 may be configured to execute a received instruction according to a program code stored in a recording device such as the memory 210 . In this case, the processor 220 may provide a function for configuring a secure computing environment such as a Trusted Execution Environment (TEE) to a processing device such as the computer device 200 .

통신 인터페이스(230)는 네트워크(170)를 통해 컴퓨터 장치(200)가 다른 장치와 서로 통신하기 위한 기능을 제공할 수 있다. 일례로, 컴퓨터 장치(200)의 프로세서(220)가 메모리(210)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이나 명령, 데이터, 파일 등이 통신 인터페이스(230)의 제어에 따라 네트워크(170)를 통해 다른 장치들로 전달될 수 있다. 역으로, 다른 장치로부터의 신호나 명령, 데이터, 파일 등이 네트워크(170)를 거쳐 컴퓨터 장치(200)의 통신 인터페이스(230)를 통해 컴퓨터 장치(200)로 수신될 수 있다. 통신 인터페이스(230)를 통해 수신된 신호나 명령, 데이터 등은 프로세서(220)나 메모리(210)로 전달될 수 있고, 파일 등은 컴퓨터 장치(200)가 더 포함할 수 있는 저장 매체(상술한 영구 저장 장치)로 저장될 수 있다.The communication interface 230 may provide a function for the computer device 200 to communicate with other devices via the network 170 . For example, a request, command, data, file, etc. generated by the processor 220 of the computer device 200 according to a program code stored in a recording device such as the memory 210 is transmitted to the network ( 170) to other devices. Conversely, signals, commands, data, files, etc. from other devices may be received by the computer device 200 through the communication interface 230 of the computer device 200 via the network 170 . A signal, command, or data received through the communication interface 230 may be transferred to the processor 220 or the memory 210 , and the file may be a storage medium (described above) that the computer device 200 may further include. persistent storage).

입출력 인터페이스(240)는 입출력 장치(250)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 마이크, 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 디스플레이, 스피커와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(240)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 입출력 장치(250)는 컴퓨터 장치(200)와 하나의 장치로 구성될 수도 있다.The input/output interface 240 may be a means for an interface with the input/output device 250 . For example, the input device may include a device such as a microphone, keyboard, or mouse, and the output device may include a device such as a display or a speaker. As another example, the input/output interface 240 may be a means for an interface with a device in which functions for input and output are integrated into one, such as a touch screen. The input/output device 250 may be configured as one device with the computer device 200 .

또한, 다른 실시예들에서 컴퓨터 장치(200)는 도 2의 구성요소들보다 더 적은 혹은 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 컴퓨터 장치(200)는 상술한 입출력 장치(250) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.Also, in other embodiments, the computer device 200 may include fewer or more components than those of FIG. 2 . However, there is no need to clearly show most of the prior art components. For example, the computer device 200 may be implemented to include at least a portion of the above-described input/output device 250 or may further include other components such as a transceiver and a database.

도 3은 본 발명의 일실시예에 따른 라이선스 관리 시스템의 구성 요소의 예를 도시한 도면이다. 본 실시예에 따른 라이선스 관리 시스템(300)은 루트 시스템(310) 및 복수의 라이선스 관리 서버(License Management Server, LMS)(320)를 포함할 수 있다. 또한, 도 3은 라이선스 부여 대상으로서 소프트웨어의 사용자의 단말에 설치 및 구동하는 복수의 노드 소프트웨어(330)를 나타내고 있다. 이러한 복수의 노드 소프트웨어(330)는 특정 컴퓨터 프로그램의 인스턴스들일 수 있다.3 is a diagram illustrating an example of components of a license management system according to an embodiment of the present invention. The license management system 300 according to the present embodiment may include a root system 310 and a plurality of license management servers (License Management Server, LMS) 320 . In addition, FIG. 3 shows a plurality of node software 330 installed and driven in a user's terminal of the software as a license grant target. This plurality of node software 330 may be instances of a particular computer program.

루트 시스템(310)은 라이선스 체계 전체를 제어할 수 있으며, 복수의 LMS(320) 각각은 실제 라이선스 발급 및 감시를 담당할 수 있다. 이때, 루트 시스템(310)과 복수의 LMS(320) 각각은 별도의 하드웨어 장치(일례로, 컴퓨터 장치(200))에 구현될 수도 있으나, 적어도 둘 이상이 하나의 하드웨어 장치에 구현될 수도 있다.The root system 310 may control the entire license system, and each of the plurality of LMSs 320 may be responsible for issuing and monitoring an actual license. In this case, each of the root system 310 and the plurality of LMSs 320 may be implemented in a separate hardware device (eg, the computer device 200), but at least two or more may be implemented in one hardware device.

루트 시스템(310)은 오프라인(cold site)에 격리되어 있고, 이따금씩 복수의 LMS(320) 중 적어도 하나와의 정보교환이 필요할 때만 온라인(일례로, 인터넷)상에 연결될 수 있다. 복수의 LMS(320) 각각은 온라인상에서 실행중인 서버 프로그램일 수 있으며, 복수의 노드 소프트웨어(330) 각각 역시 온라인상에서 실행중인 소프트웨어일 수 있다.The root system 310 is isolated from the offline (cold site), and may be connected online (eg, the Internet) only when information exchange with at least one of the plurality of LMSs 320 is occasionally required. Each of the plurality of LMSs 320 may be a server program running online, and each of the plurality of node software 330 may also be software running online.

루트 시스템(310)과 복수의 LMS(320)은 소프트웨어 개발자(또는 서비스 제공자)에 의해 관리될 수 있으며, 복수의 노드 소프트웨어(330) 각각은 해당 소프트웨어 사용자에 의해 사용될 수 있다.The root system 310 and the plurality of LMSs 320 may be managed by a software developer (or service provider), and each of the plurality of node software 330 may be used by a corresponding software user.

라이선스는 공개키기반구조(Public Key Infrastructure, PKI)에 따른 인증서 체계에 따라 발급될 수 있다. 일례로, 루트 시스템(310)은 루트 인증서(311) 및 해당하는 개인키 및 공개키의 루트 키쌍을 저장하고 있을 수 있으며, 복수의 LMS(320) 각각을 위한 중간 인증서(321)를 발급할 수 있다. 복수의 LMS(320) 각각은 자신의 중간 인증서(321)와 해당하는 개인키 및 공개키의 중간 키쌍을 저장하고 있을 수 있으며, 복수의 노드 소프트웨어(330)를 위한 라이선스(331)를 발급할 수 있다. 복수의 노드 소프트웨어(330)는 라이선스(331)를 받은 뒤, 라이선스(331)가 루트 인증서(311)로부터 올바른 순서로 발급받은 것인지 여부를 확인할 수 있다.A license may be issued according to a certificate system according to a public key infrastructure (PKI). For example, the root system 310 may store a root certificate 311 and a root key pair of a corresponding private key and a public key, and may issue an intermediate certificate 321 for each of the plurality of LMSs 320 . there is. Each of the plurality of LMSs 320 may store their intermediate certificate 321 and an intermediate key pair of a corresponding private key and public key, and may issue a license 331 for a plurality of node software 330 . there is. After receiving the license 331 , the plurality of node software 330 may check whether the license 331 is issued in the correct order from the root certificate 311 .

라이선스(331)는 루트 인증서(311)로부터 내려오는 인증서 체인에 맞게 서명되어 있어야 유효하다고 간주될 수 있다. 라이선스 기간이 끝나기 전에 상위 인증서(루트 인증서(311) 및/또는 중간 인증서(321))의 기한이 끝나는 경우, 원치 않게 라이선스를 거절하게 된다. 따라서, 상위 인증서의 기간을 설계할 때는 라이선스의 기한을 방해하지 않도록 설계할 수 있다.The license 331 can be considered valid only when it is signed according to a certificate chain descending from the root certificate 311 . If the expiration date of the upper certificate (the root certificate 311 and/or the intermediate certificate 321) expires before the end of the license period, the license will be rejected undesirably. Therefore, when designing the term of the upper certificate, it can be designed so as not to interfere with the term of the license.

모든 라이선스에 대해서, 라이선스의 기간을 포함하는 상위 인증서가 적어도 하나는 존재하도록 설정될 수 있다. 이를 위해, 상위 인증서의 기간은 일정 기간 겹치도록 설정될 수 있다.For all licenses, it may be set so that at least one higher-level certificate including the duration of the license exists. To this end, the period of the upper certificate may be set to overlap for a certain period of time.

도 4는 본 발명의 일실시예에 따른 인증서 기간 설계의 예를 도시한 도면이다. 도 4의 표는 인증서 기간 설계의 예시로서, 본 실시예에서 루트 인증서는 10년의 연한(또는 기간)을 가지고 5년에 한번 추가발급될 수 있으며, 중간 인증서는 5년의 연한을 가지고 2년에 한번 추가발급될 수 있다. 또한, 라이선스는 1년 또는 2년의 연한을 가진다. 이렇게 설정할 경우, 라이선스의 기간이 언제던지 간에 라이선스를 포함할 수 있는 중간인증서 및 루트인증서가 존재하게 된다. 도 4의 예시에서 라이선스 1은 중간 인증서 1 및 루트 인증서 1로 인증받을 수 있으며, 라이선스 2는 중간 인증서 2 및 루트 인증서 1로 인증받을 수 있다. 라이선스 3은 중간 인증서 4 및 루트 인증서 2로 인증받을 수 있다.4 is a diagram illustrating an example of a certificate period design according to an embodiment of the present invention. The table in FIG. 4 is an example of the certificate period design. In this embodiment, the root certificate has a ten-year life (or period) and can be additionally issued once every five years, and the intermediate certificate has a five-year life span and two years. It can be issued one more time. Additionally, licenses have a one-year or two-year term. In this case, there are intermediate and root certificates that can include licenses at any time during the license period. In the example of FIG. 4 , the license 1 may be authenticated with the intermediate certificate 1 and the root certificate 1, and the license 2 may be authenticated with the intermediate certificate 2 and the root certificate 1. License 3 can be authenticated with intermediate certificate 4 and root certificate 2.

라이선스(331)에는 아래 (1) 내지 (7) 중 적어도 하나의 내용이 포함될 수 있다.The license 331 may include at least one of the following (1) to (7).

(1) 소프트웨어의 사용 기간 (날짜)(1) period of use of the software (date)

(2) 소프트웨어에서 사용할 수 있는 기능 및/또는 사용할 수 없는 기능 (기능의 목록)(2) Functions Available and/or Unusable in the Software (List of Functions)

(3) 동시에 실행할 수 있는 소프트웨어의 개수 (숫자)(3) Number of software that can be run simultaneously (number)

(4) 소프트웨어가 특정 데이터를 저장할 수 있는 용량 (숫자)(4) how much the software can store certain data (number)

(6) 소프트웨어가 외부 프로그램과 연결을 맺을 수 있는 최대 수 (숫자)(6) The maximum number (number) that the software can establish a connection with an external program

(7) 라이선스 대상인 소프트웨어의 이름, 실행을 허용할 컴퓨터의 이름, 식별자 등.(7) The name of the software being licensed, the name of the computer to be allowed to run, identifiers, etc.

라이선스(331)에는 이러한 내용 (1) 내지 (7) 중 적어도 하나가 중간 인증서의 키(LMS의 개인키)로 서명되어 포함되어 있을 수 있으며, 연관된 인증서들이 첨부될 수 있다. The license 331 may include at least one of these contents (1) to (7) signed with the key of the intermediate certificate (private key of the LMS), and related certificates may be attached thereto.

도 5는 본 발명의 일실시예에 있어서, 라이선스의 예를 도시한 도면이다. 도 5의 실시예에서는 라이선스가 사용 기한, 사용할 수 있는 기능, 사용할 수 없는 기능, 동시에 실행할 수 있는 소프트웨어의 개수로서의 동시 실행 대수, 소프트웨어가 특정 데이터를 저장할 수 있는 용량으로서의 저장 용량, 라이선스 대상인 소프트웨어의 식별자로서의 MAC(Media Access Control) 주소를 포함하고 있으며, 연관된 인증서로서 루트 인증서와 중간 인증서 그리고 중간 인증서의 키를 이용한 서명을 포함하고 있다.5 is a diagram illustrating an example of a license according to an embodiment of the present invention. In the embodiment of Fig. 5, the license is used for the expiration date, functions that can be used, functions that cannot be used, the number of concurrent executions as the number of software that can be executed simultaneously, storage capacity as the capacity for the software to store specific data, and the number of software subject to license It contains a MAC (Media Access Control) address as an identifier, and as a related certificate, it includes a root certificate, an intermediate certificate, and a signature using the key of the intermediate certificate.

도 6은 본 발명의 일실시예에 따른 라이선스 관리 방법의 예를 도시한 흐름도이다. 본 실시예에 따른 라이선스 관리 방법은 도 3을 통해 설명한 복수의 라이선스 관리 서버(320) 중 어느 하나를 구현하는 컴퓨터 장치(200)에 의해 수행될 수 있다. 실시예에 따라 컴퓨터 장치(200)는 복수의 라이선스 관리 서버(320) 중 둘 이상을 구현할 수도 있으며, 루트 시스템(310)을 더 포함하도록 구현될 수도 있다. 루트 시스템(310)은 별도의 물리적인 장치에 구현되어 컴퓨터 장치(200)와 네트워크(170)를 통해 통신하도록 구현될 수도 있다. 이때, 컴퓨터 장치(200)의 프로세서(220)는 메모리(210)가 포함하는 운영체제의 코드나 적어도 하나의 컴퓨터 프로그램의 코드에 따른 제어 명령(instruction)을 실행하도록 구현될 수 있다. 이때, 프로세서(220)는 컴퓨터 장치(200)에 저장된 코드가 제공하는 제어 명령에 따라 컴퓨터 장치(200)가 도 6의 방법이 포함하는 단계들(610 내지 640)을 수행하도록 컴퓨터 장치(200)를 제어할 수 있다. 여기서, 컴퓨터 프로그램은 컴퓨터 장치(200)와 결합되어 라이선스 관리 방법을 컴퓨터 장치에 실행시키기 위해 컴퓨터 판독 가능한 기록매체에 저장될 수 있다.6 is a flowchart illustrating an example of a license management method according to an embodiment of the present invention. The license management method according to the present embodiment may be performed by the computer device 200 implementing any one of the plurality of license management servers 320 described with reference to FIG. 3 . According to an embodiment, the computer device 200 may implement two or more of the plurality of license management servers 320 , and may be implemented to further include a root system 310 . The root system 310 may be implemented in a separate physical device to communicate with the computer device 200 through the network 170 . In this case, the processor 220 of the computer device 200 may be implemented to execute a control instruction according to a code of an operating system included in the memory 210 or a code of at least one computer program. In this case, the processor 220 causes the computer device 200 to perform the steps 610 to 640 included in the method of FIG. 6 according to a control command provided by the code stored in the computer device 200 . can control Here, the computer program may be combined with the computer device 200 and stored in a computer-readable recording medium to execute the license management method in the computer device.

단계(610)에서 컴퓨터 장치(200)는 루트 시스템을 통해 중간 인증서를 발급받을 수 있다. 일례로, 컴퓨터 장치(200)는 중간 개인키 및 중간 공개키를 포함하는 중간 키쌍을 생성할 수 있으며, 중간 공개키를 루트 시스템으로 전달할 수 있다. 이때, 컴퓨터 장치(200)는 루트 시스템을 통해 중간 공개키를 포함하고, 상기 루트 시스템의 공개키로 서명된 중간 인증서를 발급받을 수 있다. 중간 인증서를 발급받는 과정에 대해서는 이후 도 7을 통해 더욱 자세히 설명한다.In operation 610, the computer device 200 may be issued an intermediate certificate through the root system. For example, the computer device 200 may generate an intermediate key pair including the intermediate private key and the intermediate public key, and may transmit the intermediate public key to the root system. In this case, the computer device 200 may receive an intermediate certificate including the intermediate public key through the root system and signed with the public key of the root system. The process of issuing the intermediate certificate will be described in more detail later with reference to FIG. 7 .

단계(620)에서 컴퓨터 장치(200)는 노드 소프트웨어에게 라이선스를 발급할 수 있다. 일례로, 컴퓨터 장치(200)는 노드 소프트웨어의 노드 식별자를 포함하고, 중간 공개키로 서명된 라이선스를 노드 소프트웨어로 발급할 수 있다. 이때, 라이선스에 포함된 노드 식별자는 라이선스를 발급받은 노드 소프트웨어의 신뢰실행환경을 위한 고유키(이하 'CPU 고유키')를 이용하여 라이선스를 발급받은 노드 소프트웨어에서 검증될 수 있다. 신뢰실행환경은 CPU(프로세서)에 탑재된 기능(CPU 고유키 포함)을 활용하여 구성한 안전한 컴퓨팅 환경으로, 메인 프로세서 내 별도로 독립된 보안 영역(secure area)을 제공할 수 있다. 일반 영역(normal area)과 보안 영역(secure area)이 따로 분리된 프로세서에서, 보안 영역에는 생체 정보, 결제 정보, 기업 보안 문서 등의 중요한 정보가 저장될 수 있으며, 일반 영역과의 정보 교환이 통제되고 보안 소프트웨어가 안전하게 실행될 수 있다. 노드 소프트웨어가 설치 및 구동되는 물리적인 장치는 이러한 신뢰실행환경을 위한 CPU 고유키를 이용하여 라이선스에 포함된 노드 식별자를 검증할 수 있다. 또한, 노드 소프트웨어는 발급받은 라이선스가 루트 인증서로부터 올바른 순서로 발급된 것인지 여부를 확인할 수 있다. 예를 들어, 노드 소프트웨어는 중간 인증서와 중간 인증서의 서명을 통해 라이선스와 관련된 라이선스 관리 서버의 중간 인증서를 검증할 수 있다. 이때, 중간 인증서는 루트 인증서의 서명을 포함할 수 있으며, 노드 소프트웨어는 루트 인증서와 루트 인정서의 서명을 통해 루트 인증서를 검증함으로써, 라이선스가 루트 인증서로부터 올바른 순서로 발급된 것인지 여부를 확인할 수 있다. 노드 소프트웨어에게 라이선스를 발급하는 과정에 대해서는 이후 도 8 내지 도 11을 통해 더욱 자세히 설명한다.In step 620, the computer device 200 may issue a license to the node software. For example, the computer device 200 may issue a license to the node software that includes the node identifier of the node software and is signed with the intermediate public key. In this case, the node identifier included in the license may be verified in the node software for which the license is issued by using a unique key (hereinafter, 'CPU unique key') for the trusted execution environment of the node software for which the license is issued. The trusted execution environment is a secure computing environment configured by utilizing functions (including the CPU unique key) installed in the CPU (processor), and can provide a separate and independent secure area within the main processor. In the processor in which the normal area and the secure area are separated, important information such as biometric information, payment information, and corporate security documents may be stored in the secure area, and information exchange with the general area is controlled and secure software can run safely. The physical device on which the node software is installed and operated can verify the node identifier included in the license by using the unique CPU key for this trusted execution environment. Also, the node software can check whether the issued licenses were issued in the correct order from the root certificate. For example, the node software can verify the intermediate certificate of the license management server associated with the license by signing the intermediate certificate and the intermediate certificate. In this case, the intermediate certificate may include a signature of the root certificate, and the node software verifies the root certificate through the signature of the root certificate and the root certificate, thereby confirming whether the licenses are issued in the correct order from the root certificate. The process of issuing a license to the node software will be described in more detail later with reference to FIGS. 8 to 11 .

단계(630)에서 컴퓨터 장치(200)는 실행중인 노드 소프트웨어의 수가 라이선스를 통해 허가된 수 이하인지 여부를 확인할 수 있다. 일례로, 노드 소프트웨어가 처음 실행되면 노드 소프트웨어는 라이선스 관리 서버에게 노드 소프트웨어의 식별자(이하, 'NID')를 보내며 노드 등록을 요청할 수 있다. 이때, 라이선스 관리 서버는 노드 소프트웨어에게 보고 주기(일례로, 1시간)를 정해서 전달할 수 있다. 노드 소프트웨어는 실행되는 동안 보고 주기가 돌아올 때마다 라이선스 관리 서버에서 자신의 NID와 실행 통계를 포함하는 보고서를 보낼 수 있다. 라이선스 관리 서버는 여러 노드 소프트웨어들이 보낸 정보를 취합하여 저장할 수 있다. 이때, 라이선스 관리 서버는 취합된 정보를 통해 라이선스에 의해 정해진 제한보다 많은 수의 노드 소프트웨어들에서 라이선스에 대응하는 소프트웨어가 실행중인지 여부를 확인할 수 있다. 만약, 라이선스에 의해 정해진 제한보다 많은 수의 노드 소프트웨어들에서 라이선스에 대응하는 소프트웨어가 실행중인 경우, 라이선스 관리 서버는 라이선스 위반에 대한 사항을 소프트웨어 개발자에게 알릴 수 있다.In operation 630 , the computer device 200 may check whether the number of running node software is less than or equal to the number permitted through the license. For example, when the node software is first executed, the node software may request node registration by sending an identifier (hereinafter, 'NID') of the node software to the license management server. In this case, the license management server may determine and deliver a report cycle (eg, 1 hour) to the node software. Node software can send a report containing its NID and execution statistics from the license management server whenever the reporting cycle returns while it is running. The license management server can collect and store information sent by multiple node software. In this case, the license management server may check whether the software corresponding to the license is running in the number of node software greater than the limit set by the license through the collected information. If the software corresponding to the license is running in the number of node software more than the limit set by the license, the license management server may notify the software developer of the violation of the license.

단계(640)에서 컴퓨터 장치(200)는 인증서 또는 라이선스의 기한에 따라 인증서 또는 라이선스를 재발급할 수 있다. 라이선스, 중간 인증서 및 루트 인증서는 유효기간이 있으므로 갱신이 요구될 수 있다. 라이선스의 유효기간이 만료가 얼마 남지 않았거나 만료된 경우, 노드 소프트웨어는 라이선스 관리 서버와 통신하여 단계(620)에서와 같이 새로운 라이선스를 발급받을 수 있다. 라이선스 관리 서버는 루트 시스템과 통신하여 단계(610)에서와 같이 새로운 중간 인증서를 발급받을 수 있다. 새로운 중간 인증서는 향후 라이선스 발급에 쓰이게 된다. 루트 시스템은 새로운 루트 인증서를 발급할 수 있다. 새로운 루트 인증서는 루트 인증서의 발급 시점 이후에 노드 소프트웨어로 배포된 라이선스에 포함될 수 있다.In operation 640 , the computer device 200 may reissue the certificate or license according to the expiration date of the certificate or license. Licenses, intermediate certificates and root certificates have expiration dates and may require renewal. When the validity period of the license is near or expires, the node software may communicate with the license management server to be issued a new license as in step 620 . The license management server may communicate with the root system to issue a new intermediate certificate as in step 610 . The new intermediate certificate will be used for future license issuance. The root system can issue new root certificates. A new root certificate may be included in licenses distributed as node software after the issuance of the root certificate.

도 7은 본 발명의 일실시예에 있어서, 중간 인증서를 발급하는 과정의 예를 도시한 도면이다. 도 7은 루트 시스템(710) 및 LMS(720)를 나타내고 있다.7 is a diagram illustrating an example of a process for issuing an intermediate certificate according to an embodiment of the present invention. 7 shows a root system 710 and an LMS 720 .

단계(731)에서 루트 시스템(710)은 루트 키쌍 및 루트 인증서를 생성할 수 있다. 여기서, 루트 키쌍은 루트 시스템(710)의 개인키(루트 개인키) 및 공개키(루트 공개키)를 포함할 수 있다. 한편, 루트 시스템(710)에서 생성된 루트 인증서는 노드 소프트웨어에 포함되어 추후 노드 소프트웨어에 발급되는 라이선스에 포함된 루트 인증서와의 비교를 위해 활용될 수 있다. 이때, 루트 키쌍은 루트 인증서 각각마다 생성될 수 있다.In step 731 , the root system 710 may generate a root key pair and a root certificate. Here, the root key pair may include a private key (root private key) and a public key (root public key) of the root system 710 . Meanwhile, the root certificate generated in the root system 710 may be included in the node software and used for comparison with a root certificate included in a license issued to the node software later. In this case, a root key pair may be generated for each root certificate.

단계(732)에서 LMS(720)는 중간 키쌍을 생성할 수 있다. 여기서, 중간 키쌍은 LMS(720)의 개인키(중간 개인키) 및 공개키(중간 공개키)를 포함할 수 있다. 이때, 중간 키쌍은 중간 인증서 각각마다 생성될 수 있다.In step 732, LMS 720 may generate an intermediate key pair. Here, the intermediate key pair may include a private key (intermediate private key) and a public key (intermediate public key) of the LMS 720 . In this case, an intermediate key pair may be generated for each intermediate certificate.

여기서, 단계(731)과 단계(732)는 병렬적으로 수행될 수 있는 단계들로, 일례로, 단계(732)가 단계(731)보다 먼저 수행될 수도 있다.Here, steps 731 and 732 are steps that can be performed in parallel, and for example, step 732 may be performed before step 731 .

단계(733)에서 LMS(720)는 중간 공개키를 루트 시스템(710)으로 전달할 수 있다. 예를 들어, LMS(720)는 루트 시스템(710)으로 중간 인증서의 발급을 요청하면서 중간 공개키를 함께 전달할 수 있다. 이미 설명한 바와 같이 루트 시스템(710)은 오프라인(cold site)에 격리되어 있고, 이따금씩 LMS(720)와의 정보교환이 필요할 때만 온라인(일례로, 인터넷)상에 연결될 수 있다.In step 733 , the LMS 720 may transmit the intermediate public key to the root system 710 . For example, the LMS 720 may transmit the intermediate public key together while requesting the issuance of the intermediate certificate to the root system 710 . As already described, the root system 710 is isolated from the offline (cold site), and can be connected online (eg, the Internet) only when information exchange with the LMS 720 is occasionally required.

단계(734)에서 루트 시스템(710)은 루트 공개키로 중간 인증서를 발급할 수 있다. 예를 들어, 루트 시스템(710)은 단계(733)에서 전달된 중간 공개키를 포함하고, 루트 공개키로 서명된 중간 인증서를 생성할 수 있다.In step 734, the root system 710 may issue an intermediate certificate with the root public key. For example, the root system 710 may include the intermediate public key delivered in step 733 and generate an intermediate certificate signed with the root public key.

단계(735)에서 루트 시스템(710)은 중간 인증서를 LMS(720)로 전달할 수 있다. 이러한 중간 인증서는 이후 노드 소프트웨어에 발급되는 라이선스에 포함될 수 있다.In step 735 , the root system 710 may forward the intermediate certificate to the LMS 720 . These intermediate certificates can then be included in licenses issued to the node software.

단계(736)에서 LMS(720)는 중간 인증서를 보관할 수 있다. 앞서 도 4를 통해 설명한 인증서의 기간 설계에 따라 LMS(720)는 복수의 중간 인증서를 전달받아 보관할 수도 있다.In step 736, the LMS 720 may store the intermediate certificate. According to the certificate period design described above with reference to FIG. 4 , the LMS 720 may receive and store a plurality of intermediate certificates.

도 8은 본 발명의 일실시예에 있어서, 라이선스를 발급하는 과정의 예를 도시한 도면이다. 도 8은 LMS(720) 및 노드 소프트웨어(810)를 나타내고 있다.8 is a diagram illustrating an example of a process of issuing a license according to an embodiment of the present invention. 8 shows an LMS 720 and node software 810 .

단계(821)에서 노드 소프트웨어(810)는 NID를 생성할 수 있다. 여기서, NID는 노드 소프트웨어(810)가 설치 및 구동되는 컴퓨터 장치의 컴퓨터 정보, 사용자 정보, 소프트웨어 정보 및 난수를 포함하여 생성될 수 있다.In step 821 the node software 810 may generate the NID. Here, the NID may be generated including computer information, user information, software information, and a random number of a computer device in which the node software 810 is installed and driven.

단계(822)에서 노드 소프트웨어(810)는 NID를 LMS(720)로 전달할 수 있다. 예를 들어, 노드 소프트웨어(810)는 LMS(720)로 라이선스의 발급을 요청하면서 NID를 전달할 수 있다.In step 822 , node software 810 may pass the NID to LMS 720 . For example, the node software 810 may transmit the NID while requesting the issuance of a license to the LMS 720 .

단계(823)에서 LMS(720)는 라이선스 발급 여부 및 발급 조건을 판단할 수 있다. 예를 들어, LMS(720)는 소프트웨어 개발자가 정해놓은 규칙에 따라 및/또는 데이터베이스를 조회하여 노드 소프트웨어(810)로 이미 발급된 라이선스가 존재하는지 여부 등을 고려하여 노드 소프트웨어(810)로 라이선스를 발급할지 여부와 발급한다면 어떠한 조건으로 라이선스를 발급할 것인지 여부를 결정할 수 있다.In step 823, the LMS 720 may determine whether or not to issue a license and an issuance condition. For example, the LMS 720 applies a license to the node software 810 in accordance with a rule set by the software developer and/or in consideration of whether a license already issued to the node software 810 exists by querying the database. You can decide whether to issue a license or not, and if so, under what conditions to issue a license.

단계(824)에서 LMS(720)는 보관하고 있는 중간 인증서 중에서 라이선스 기간을 포함할 수 있는 중간 인증서를 선택할 수 있다. 만약, 발급하고자 하는 라이선스의 기간을 포함할 수 있는 중간 인증서가 보관되어 있지 않은 경우, 도 7을 통해 설명한 루트 시스템(710)을 통해 새로운 중간 인증서를 발급받을 수 있다.In step 824, the LMS 720 may select an intermediate certificate that may include a license period from among the intermediate certificates stored. If an intermediate certificate including the period of the license to be issued is not stored, a new intermediate certificate may be issued through the root system 710 described with reference to FIG. 7 .

단계(825)에서 LMS(720)는 선택된 중간 인증서에 해당하는 중간 공개키로 라이선스를 서명할 수 있다. 라이선스가 포함하는 내용에 대해서는 앞서 도 5를 통해 자세히 설명한 바 있다. 라이선스의 서명은 중간 인증서를 중간 공개키로 서명하여 생성될 수 있다.In step 825, the LMS 720 may sign the license with an intermediate public key corresponding to the selected intermediate certificate. The content included in the license has been previously described in detail with reference to FIG. 5 . The signature of the license can be generated by signing the intermediate certificate with the intermediate public key.

단계(826)에서 LMS(720)는 서명된 라이선스를 노드 소프트웨어(810)로 전달할 수 있다.In step 826 , the LMS 720 may pass the signed license to the node software 810 .

단계(827)에서 노드 소프트웨어(810)는 전달된 라이선스를 검증할 수 있다. 라이선스를 검증하는 과정에 대해서는 이후 도 11을 통해 더욱 자세히 설명한다.In step 827, the node software 810 may verify the transferred license. The process of verifying the license will be described in more detail later with reference to FIG. 11 .

단계(828)에서 노드 소프트웨어(810)는 라이선스 조건에 따라 작동할 수 있다. 라이선스 조건은 앞서 도 5를 통해 설명한 라이선스가 포함하는 내용에 따른 조건에 대응할 수 있으며, 노드 소프트웨어(810)는 라이선스에 명시된 조건에 따라 동작할 수 있다.In step 828 the node software 810 may operate according to the license terms. The license conditions may correspond to conditions according to the content included in the license described above with reference to FIG. 5 , and the node software 810 may operate according to the conditions specified in the license.

도 9는 본 발명의 일실시예에 있어서, NID 생성 알고리즘의 예를 도시한 도면이다. NID 생성 알고리즘은 실질적으로 도 8을 통해 설명한 노드 소프트웨어(810)가 설치 및 구동되는 물리적인 컴퓨터 장치(일례로, 도 2의 컴퓨터 장치(200))에 의해 수행될 수 있으나, 도 9의 실시예에서는 설명의 편의를 위해, NID 생성 알고리즘이 NID 생성의 과정을 수행하는 것으로 설명한다.9 is a diagram illustrating an example of an NID generation algorithm according to an embodiment of the present invention. The NID generation algorithm may be substantially performed by a physical computer device (eg, the computer device 200 of FIG. 2 ) in which the node software 810 described with reference to FIG. 8 is installed and driven, but in the embodiment of FIG. For convenience of description, it is described that the NID generation algorithm performs the NID generation process.

이때, 도 9의 실시예에서 NID 생성 알고리즘은 노드 소프트웨어(810)가 설치 및 구동되는 현재 컴퓨터, 사용자 및 소프트웨어의 정보를 조회(910)할 수 있으며, 난수를 발생(920)시킬 수 있다. 이때, NID 생성 알고리즘은 컴퓨터 정보, 사용자 정보, 소프트웨어 정보 및 난수를 포함하는 NID(930)를 생성할 수 있다. 여기서, NID(930)는 앞서 도 8의 단계(810)에서 설명한 NID에 대응될 수 있다.At this time, in the embodiment of FIG. 9 , the NID generation algorithm may inquire 910 information of the current computer, user, and software on which the node software 810 is installed and driven, and may generate 920 a random number. In this case, the NID generation algorithm may generate the NID 930 including computer information, user information, software information, and a random number. Here, the NID 930 may correspond to the NID described above in step 810 of FIG. 8 .

이후, NID 생성 알고리즘은 CPU 고유키(940)를 이용하여 NID(930)를 암호화(950)할 수 있으며, Hash 알고리즘(960)을 이용하여 NID 해시값(970)을 계산할 수 있다. 일례로, NID 생성 알고리즘은 HMAC(Hash based Message Authentication Code) 알고리즘을 이용하여 NID(930)의 암호화(950) 및 해시값 계산을 처리할 수 있다. 이때, NID 생성 알고리즘은 NID 해시값(970)을 출력(980)할 수 있으며, NID(930)를 출력(990)할 수 있다. NID(930)는 라이선스의 발급을 요청할 때, LMS(720)로 전달될 수 있으며, NID 해시값(970)은 추후 발급된 라이선스에 포함되는 NID를 검증하는데 사용될 수 있다.Thereafter, the NID generation algorithm may encrypt 950 the NID 930 using the CPU unique key 940 , and may calculate the NID hash value 970 using the hash algorithm 960 . As an example, the NID generation algorithm may process encryption 950 and hash value calculation of the NID 930 using a Hash based Message Authentication Code (HMAC) algorithm. In this case, the NID generation algorithm may output 980 the NID hash value 970 and may output 990 the NID 930 . The NID 930 may be transmitted to the LMS 720 when requesting the issuance of a license, and the NID hash value 970 may be used to verify the NID included in the later issued license.

도 10은 본 발명의 일실시예에 있어서, NID 검사 알고리즘의 예를 도시한 도면이다. NID 검사 알고리즘은 실질적으로 도 8을 통해 설명한 노드 소프트웨어(810)가 설치 및 구동되는 물리적인 컴퓨터 장치(일례로, 도 2의 컴퓨터 장치(200))에 의해 수행될 수 있으나, 도 10의 실시예에서는 설명의 편의를 위해, NID 검사 알고리즘이 NID 검사의 과정을 수행하는 것으로 설명한다.10 is a diagram illustrating an example of an NID checking algorithm according to an embodiment of the present invention. The NID checking algorithm may be substantially performed by a physical computer device (eg, the computer device 200 of FIG. 2 ) in which the node software 810 described with reference to FIG. 8 is installed and driven, but in the embodiment of FIG. For convenience of description, it is described that the NID check algorithm performs the NID check process.

이때, 도 10의 실시예에서 NID 검사 알고리즘은 NID를 입력(1010)받을 수 있으며, NID 해시값을 입력(1020)받을 수 있다. 이때, 입력(1010)된 NID는 라이선스가 포함하는 NID일 수 있으며, 입력(1020)된 NID 해시값은 앞서 도 9를 통해 설명한 NID 해시값(970)에 대응할 수 있다. NID 검사 알고리즘은 입력(1010)된 NID가 포함하는 컴퓨터 정보, 사용자 정보, 소프트웨어 정보를 현재 컴퓨터, 사용자, 소프트웨어의 정보와 비교(1030)하여 제1 비교 결과를 생성할 수 있다.In this case, in the embodiment of FIG. 10 , the NID check algorithm may receive an input 1010 of an NID, and may receive an input 1020 of an NID hash value. In this case, the NID input 1010 may be an NID included in the license, and the NID hash value input 1020 may correspond to the NID hash value 970 described with reference to FIG. 9 . The NID check algorithm may generate a first comparison result by comparing (1030) computer information, user information, and software information included in the input (1010) NID with information of a current computer, user, and software.

또한, NID 검사 알고리즘은 입력(1010)된 NID를 CPU 고유키(940)로 암호화(1040)할 수 있으며, Hash 알고리즘(960)을 이용하여 NID 해시값(1050)을 계산할 수 있다. 일례로, NID 검사 알고리즘은 HMAC 알고리즘을 이용하여 입력(1010)된 NID의 암호화(1040) 및 해시값 계산을 처리할 수 있다. 이때, NID 검사 알고리즘은 입력(1020)된 NID 해시값과 계산된 NID 해시값(1050)을 비교(1060)하여 제2 비교 결과를 생성할 수 있다.In addition, the NID check algorithm may encrypt 1040 the NID input 1010 with the CPU unique key 940 , and may calculate the NID hash value 1050 using the hash algorithm 960 . As an example, the NID check algorithm may process encryption 1040 of the inputted NID 1010 and calculation of a hash value using the HMAC algorithm. In this case, the NID check algorithm may generate a second comparison result by comparing (1060) the input (1020) the NID hash value and the calculated NID hash value (1050).

또한, NID 검사 알고리즘은 검사 결과를 출력(1070)할 수 있다. 이때, 검사 결과는 제1 비교 결과와 제2 비교 결과를 포함할 수 있다. 일례로, 제1 비교 결과에 따라 입력(1010)된 NID가 포함하는 컴퓨터 정보, 사용자 정보 및 소프트웨어 정보가 현재 컴퓨터, 사용자, 소프트웨어의 정보와 동일하지 않거나 또는 제2 비교 결과에 따라 입력(1020)된 NID 해시값과 계산된 NID 해시값(1050)이 동일하지 않은 경우, NID가 검증되지 않을 수 있으며, 결과적으로 발급된 라이선스가 검증되지 않을 수 있다.Also, the NID inspection algorithm may output 1070 the inspection result. In this case, the test result may include a first comparison result and a second comparison result. For example, the computer information, user information, and software information included in the NID input 1010 according to the first comparison result is not the same as the information of the current computer, user, and software, or is input 1020 according to the second comparison result If the calculated NID hash value and the calculated NID hash value 1050 are not the same, the NID may not be verified, and as a result, the issued license may not be verified.

도 11은 본 발명의 일실시예에 있어서, 라이선스 검증 알고리즘의 예를 도시한 도면이다. 라이선스 검사 알고리즘은 실질적으로 도 8을 통해 설명한 노드 소프트웨어(810)가 설치 및 구동되는 물리적인 컴퓨터 장치(일례로, 도 2의 컴퓨터 장치(200))에 의해 수행될 수 있으나, 도 11의 실시예에서는 설명의 편의를 위해, 라이선스 검사 알고리즘이 라이선스 검사의 과정을 수행하는 것으로 설명한다.11 is a diagram illustrating an example of a license verification algorithm according to an embodiment of the present invention. The license check algorithm may be substantially performed by a physical computer device (eg, the computer device 200 of FIG. 2 ) on which the node software 810 described with reference to FIG. 8 is installed and driven, but in the embodiment of FIG. For convenience of explanation, it is described that the license check algorithm performs the license check process.

단계(1110)에서 라이선스 검사 알고리즘은 현재시간이 라이선스 유효기간에 포함되는지 확인할 수 있다. 이러한 단계(1110)는 라이선스의 유효기간이 지났는지 여부를 확인하기 위해 수행될 수 있다. 이때, 확인 실패 시, 단계(1170)이 수행될 수 있다.In step 1110, the license check algorithm may check whether the current time is included in the license validity period. This step 1110 may be performed to check whether the validity period of the license has passed. In this case, when the verification fails, step 1170 may be performed.

단계(1120)에서 라이선스 검사 알고리즘은 라이선스에 포함된 NID를 검증할 수 있다. 이러한 단계(1120)는 앞서 도 10을 통해 설명한 NID 검증 알고리즘을 통해 수행되는 NID 검증 과정의 예일 수 있다. 이때, 검증 실패 시, 단계(1170)이 수행될 수 있다.In step 1120, the license check algorithm may verify the NID included in the license. This step 1120 may be an example of the NID verification process performed through the NID verification algorithm described above with reference to FIG. 10 . In this case, when the verification fails, step 1170 may be performed.

단계(1130)에서 라이선스 검사 알고리즘은 라이선스에 포함된 서명이 라이선스에 포함된 중간 인증서의 중간 공개키로 서명된 것인지 확인할 수 있다. 이때, 확인 실패 시, 단계(1170)이 수행될 수 있다.In step 1130, the license check algorithm may check whether the signature included in the license is signed with the intermediate public key of the intermediate certificate included in the license. In this case, when the verification fails, step 1170 may be performed.

단계(1140)에서 라이선스 검사 알고리즘은 라이선스에 포함된 중간 인증서가 라이선스에 포함된 루트 인증서의 공개키로 서명된 것인지 확인할 수 있다. 이때, 확인 실패 시, 단계(1170)이 수행될 수 있다.In step 1140 , the license checking algorithm may check whether the intermediate certificate included in the license is signed with the public key of the root certificate included in the license. In this case, when the verification fails, step 1170 may be performed.

단계(1150)에서 라이선스 검사 알고리즘은 라이선스에 포함된 루트 인증서가 소프트웨어에 포함된 루트 인증서 목록에 들어있는지 확인할 수 있다. 여기서, 소프트웨어는 라이선스의 대상이 되는 소프트웨어로서 일례로, 노드 소프트웨어(810)에 대응할 수 있다. 이때, 확인 실패 시, 단계(1170)이 수행될 수 있다.In step 1150 , the license checking algorithm may check whether the root certificate included in the license is included in the list of root certificates included in the software. Here, the software may correspond to, for example, the node software 810 as software to be licensed. In this case, when the verification fails, step 1170 may be performed.

단계(1160)에서 노드 소프트웨어(810)는 라이선스 조건에 따라 작동할 수 있다. 라이선스 조건은 앞서 도 5를 통해 설명한 라이선스가 포함하는 내용에 따른 조건에 대응할 수 있으며, 노드 소프트웨어(810)는 라이선스에 명시된 조건에 따라 동작할 수 있다.In step 1160 the node software 810 may operate according to the license terms. The license conditions may correspond to conditions according to the content included in the license described above with reference to FIG. 5 , and the node software 810 may operate according to the conditions specified in the license.

단계(1170)에서 라이선스 검사 알고리즘은 소프트웨어를 종료할 수 있다. 여기서 소프트웨어는 라이선스의 대상이 되는 소프트웨어로서 일례로, 노드 소프트웨어(810)에 대응할 수 있다.In step 1170, the license check algorithm may terminate the software. Here, the software may correspond to, for example, the node software 810 as software to be licensed.

이와 같이, 본 발명의 실시예들에 따르면, 하드웨어 요소인 신뢰실행환경에 기반하여 우회하기 어려운 라이선스 관리 방법 및 시스템을 제공할 수 있다. 또한 서버 대수의 제한, 사용 기한의 제한, 사용 기능의 제한 등 다양한 비즈니스 모델을 지원하기 위한 검사 장치를 추가할 수 있으며, 라이선스 및 각종 인증서가 만료됨에 따라 라이선스 및 인증서를 재발급하기 위한 기능을 제공함으로써, 라이선스를 장기간 운용할 수 있게 된다.As such, according to embodiments of the present invention, it is possible to provide a method and system for managing a license that is difficult to bypass based on a trusted execution environment that is a hardware element. In addition, inspection devices can be added to support various business models, such as limiting the number of servers, limiting the use period, and limiting the functions used. , the license can be operated for a long time.

이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The system or apparatus described above may be implemented as a hardware component or a combination of a hardware component and a software component. For example, devices and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA). , a programmable logic unit (PLU), microprocessor, or any other device capable of executing and responding to instructions, may be implemented using one or more general purpose or special purpose computers. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. A processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For convenience of understanding, although one processing device is sometimes described as being used, one of ordinary skill in the art will recognize that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that can include For example, the processing device may include a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as parallel processors.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록매체에 저장될 수 있다.Software may comprise a computer program, code, instructions, or a combination of one or more thereof, which configures a processing device to operate as desired or is independently or collectively processed You can command the device. The software and/or data may be any kind of machine, component, physical device, virtual equipment, computer storage medium or apparatus, to be interpreted by or to provide instructions or data to the processing device. may be embodied in The software may be distributed over networked computer systems and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, etc. alone or in combination. The medium may continuously store a computer executable program, or may be a temporary storage for execution or download. In addition, the medium may be various recording means or storage means in the form of a single or several hardware combined, it is not limited to a medium directly connected to any computer system, and may exist distributedly on a network. Examples of the medium include a hard disk, a magnetic medium such as a floppy disk and a magnetic tape, an optical recording medium such as CD-ROM and DVD, a magneto-optical medium such as a floppy disk, and those configured to store program instructions, including ROM, RAM, flash memory, and the like. In addition, examples of other media may include recording media or storage media managed by an app store for distributing applications, sites supplying or distributing other various software, and servers. Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with reference to the limited embodiments and drawings, various modifications and variations are possible from the above description by those skilled in the art. For example, the described techniques are performed in an order different from the described method, and/or the described components of the system, structure, apparatus, circuit, etc. are combined or combined in a different form than the described method, or other components Or substituted or substituted by equivalents may achieve an appropriate result.

그러므로, 다른 구현들, 다른 실시예들 및 청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (5)

적어도 하나의 프로세서를 포함하는 컴퓨터 장치의 라이선스 관리 방법에 있어서,
상기 적어도 하나의 프로세서에 의해, 중간 개인키 및 중간 공개키를 포함하는 중간 키쌍을 생성하는 단계;
상기 적어도 하나의 프로세서에 의해, 루트 시스템으로 상기 중간 공개키를 전송하고, 상기 루트 시스템을 통해 상기 전송된 중간 공개키를 포함하면서 상기 루트 시스템의 루트 공개키로 서명된 중간 인증서를 발급받는 단계;
상기 적어도 하나의 프로세서에 의해, 노드 소프트웨어로부터 상기 노드 소프트웨어의 노드 식별자를 수신하고, 상기 수신된 노드 식별자 및 상기 중간 인증서를 포함하면서 상기 중간 공개키로 서명된 라이선스를 상기 노드 소프트웨어로 발급하는 단계; 및
상기 적어도 하나의 프로세서에 의해, 상기 발급된 라이선스의 조건에 따라 실행중인 노드 소프트웨어의 수가 상기 라이선스를 통해 허가된 수 이하인지 여부를 확인하는 단계
를 포함하고,
상기 노드 소프트웨어가 설치 및 구동되는 물리적인 장치에서 상기 노드 식별자가 생성되어 상기 컴퓨터 장치로 전송되고,
상기 물리적인 장치에서 상기 물리적인 장치의 신뢰실행환경에 포함된 고유키를 이용하여 상기 노드 식별자를 암호화되어 제1 암호화된 노드 식별자가 생성되고,
상기 노드 소프트웨어가 상기 라이선스를 발급받는 경우, 상기 물리적인 장치에서 상기 라이선스에 포함된 노드 식별자가 상기 고유키를 이용하여 암호화되어 제2 암호화된 노드 식별자가 생성되고,
상기 물리적인 장치에서 상기 제1 암호화된 노드 식별자의 해시값과 상기 제2 암호화된 노드 식별자의 해시값을 비교함으로서, 상기 라이선스에 포함된 노드 식별자가 상기 라이선스를 발급받은 노드 소프트웨어에서 검증되고,
상기 물리적인 장치에서 상기 라이선스에 포함된 서명이 상기 라이선스에 포함된 중간 인증서의 중간 공개키로 서명된 것인지 확인되고,
상기 물리적인 장치에서 상기 라이선스에 포함된 중간 인증서가 상기 루트 공개키로 서명된 것인지 확인되는 것
을 특징으로 하는 라이선스 관리 방법.
In the license management method of a computer device comprising at least one processor,
generating, by the at least one processor, an intermediate key pair including an intermediate private key and an intermediate public key;
transmitting, by the at least one processor, the intermediate public key to a root system, and receiving an intermediate certificate signed with the root public key of the root system while including the transmitted intermediate public key through the root system;
receiving, by the at least one processor, a node identifier of the node software from node software, and issuing, to the node software, a license signed with the intermediate public key, the license including the received node identifier and the intermediate certificate; and
confirming, by the at least one processor, whether the number of node software being executed according to the condition of the issued license is less than or equal to the number permitted through the license;
including,
The node identifier is generated and transmitted to the computer device in a physical device in which the node software is installed and run;
The first encrypted node identifier is generated by encrypting the node identifier in the physical device using a unique key included in the trusted execution environment of the physical device,
When the node software is issued the license, the node identifier included in the license is encrypted using the unique key in the physical device to generate a second encrypted node identifier,
By comparing the hash value of the first encrypted node identifier and the hash value of the second encrypted node identifier in the physical device, the node identifier included in the license is verified in the node software that has been issued the license,
In the physical device, it is confirmed whether the signature included in the license is signed with an intermediate public key of an intermediate certificate included in the license;
Checking in the physical device whether the intermediate certificate included in the license is signed with the root public key
A license management method, characterized in that.
적어도 하나의 프로세서를 포함하는 컴퓨터 장치의 라이선스 관리 방법에 있어서,
상기 적어도 하나의 프로세서에 의해, 제1 노드 식별자를 생성하는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 생성된 제1 노드 식별자를 라이선스 관리 서버로 전달하는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 생성된 제1 노드 식별자를 상기 컴퓨터 장치의 신뢰실행환경을 위한 고유키를 이용하여 암호화하는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 암호화된 제1 노드 식별자의 제1 해시값을 계산하는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 라이선스 관리 서버로부터 라이선스를 발급받는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 라이선스에 포함된 제2 노드 식별자를 상기 고유키로 암호화하는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 암호화된 제2 노드 식별자의 제2 해시값을 계산하는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 제1 해시값 및 상기 제2 해시값을 비교하여 상기 라이선스에 포함된 노드 식별자를 검증하는 단계;
상기 적어도 하나의 프로세서에 의해, 상기 라이선스에 포함된 서명이 상기 라이선스에 포함된 중간 인증서의 중간 공개키로 서명된 것인지 확인하는 단계; 및
상기 적어도 하나의 프로세서에 의해, 상기 라이선스에 포함된 중간 인증서가 루트 시스템의 루트 공개키로 서명된 것인지 확인하는 단계
를 포함하고,
상기 라이선스 관리 서버는,
중간 개인키 및 중간 공개키를 포함하는 중간 키쌍을 생성하고,
상기 루트 시스템으로 상기 중간 공개키를 전송하고, 상기 루트 시스템을 통해 상기 전송된 중간 공개키를 포함하면서 상기 루트 시스템의 상기 루트 공개키로 서명된 중간 인증서를 발급받고,
노드 소프트웨어가 설치 및 구동된 상기 컴퓨터 장치로부터 상기 노드 소프트웨어의 노드 식별자를 수신하고, 상기 수신된 노드 식별자 및 상기 중간 인증서를 포함하면서 상기 중간 공개키로 서명된 라이선스를 상기 노드 소프트웨어로 발급하고,
상기 발급된 라이선스의 조건에 따라 실행중인 노드 소프트웨어의 수가 상기 라이선스를 통해 허가된 수 이하인지 여부를 확인하도록 구현되는 것
을 특징으로 하는 라이선스 관리 방법.
In the license management method of a computer device comprising at least one processor,
generating, by the at least one processor, a first node identifier;
transmitting, by the at least one processor, the generated first node identifier to a license management server;
encrypting, by the at least one processor, the generated first node identifier using a unique key for a trusted execution environment of the computer device;
calculating, by the at least one processor, a first hash value of the encrypted first node identifier;
receiving, by the at least one processor, a license from the license management server;
encrypting, by the at least one processor, the second node identifier included in the license with the unique key;
calculating, by the at least one processor, a second hash value of the encrypted second node identifier;
verifying, by the at least one processor, the node identifier included in the license by comparing the first hash value and the second hash value;
confirming, by the at least one processor, whether the signature included in the license is signed with an intermediate public key of an intermediate certificate included in the license; and
checking, by the at least one processor, whether the intermediate certificate included in the license is signed with a root public key of a root system
including,
The license management server,
generating an intermediate key pair including an intermediate private key and an intermediate public key;
transmitting the intermediate public key to the root system, and receiving an intermediate certificate signed with the root public key of the root system while including the transmitted intermediate public key through the root system;
receiving the node identifier of the node software from the computer device in which the node software is installed and running, and issuing a license signed with the intermediate public key to the node software, including the received node identifier and the intermediate certificate;
Implemented to check whether the number of running node software is less than or equal to the number permitted through the license according to the conditions of the issued license
A license management method, characterized in that.
제2항에 있어서,
상기 제1 노드 식별자는 상기 컴퓨터 장치의 제1 컴퓨터 정보, 상기 컴퓨터 장치의 사용자의 제1 사용자 정보 및 상기 라이선스의 대상이 되는 소프트웨어의 제1 소프트웨어 정보를 포함하고,
상기 적어도 하나의 프로세서에 의해, 상기 라이선스에 포함된 제2 노드 식별자가 포함하는 제2 컴퓨터 정보, 제2 사용자 정보 및 제2 소프트웨어 정보를 확인하는 단계; 및
상기 적어도 하나의 프로세서에 의해, 상기 확인된 제2 컴퓨터 정보, 제2 사용자 정보 및 제2 소프트웨어 정보를 상기 제1 컴퓨터 정보, 상기 제1 사용자 정보 및 상기 제1 소프트웨어 정보와 비교하여 상기 라이선스에 포함된 제2 노드 식별자를 더 검증하는 단계
를 더 포함하는 라이선스 관리 방법.
3. The method of claim 2,
The first node identifier includes first computer information of the computer device, first user information of a user of the computer device, and first software information of software subject to the license,
checking, by the at least one processor, second computer information, second user information, and second software information included in the second node identifier included in the license; and
Compare, by the at least one processor, the identified second computer information, second user information and second software information with the first computer information, the first user information and the first software information, and include in the license Further verifying the second node identifier
License management method further comprising.
제2항에 있어서,
상기 적어도 하나의 프로세서에 의해, 상기 라이선스에 포함된 루트 인증서가 상기 라이선스의 대상이 되는 소프트웨어에 포함된 루트 인증서 목록에 포함되어 있는지 확인하는 단계
를 더 포함하는 라이선스 관리 방법.
3. The method of claim 2,
confirming, by the at least one processor, whether the root certificate included in the license is included in a list of root certificates included in the software subject to the license
License management method further comprising.
컴퓨터 장치에서 판독 가능한 명령을 실행하도록 구현되는 적어도 하나의 프로세서
를 포함하고,
상기 적어도 하나의 프로세서에 의해,
중간 개인키 및 중간 공개키를 포함하는 중간 키쌍을 생성하고,
루트 시스템으로 상기 중간 공개키를 전송하고, 상기 루트 시스템을 통해 상기 전송된 중간 공개키를 포함하면서 상기 루트 시스템의 루트 공개키로 서명된 중간 인증서를 발급받고,
노드 소프트웨어로부터 상기 노드 소프트웨어의 노드 식별자를 수신하고, 상기 수신된 노드 식별자 및 상기 중간 인증서를 포함하면서 상기 중간 공개키로 서명된 라이선스를 상기 노드 소프트웨어로 발급하고,
상기 발급된 라이선스의 조건에 따라 실행중인 노드 소프트웨어의 수가 상기 라이선스를 통해 허가된 수 이하인지 여부를 확인하고,
상기 노드 소프트웨어가 설치 및 구동되는 물리적인 장치에서 상기 노드 식별자가 생성되어 상기 컴퓨터 장치로 전송되고,
상기 물리적인 장치에서 상기 물리적인 장치의 신뢰실행환경에 포함된 고유키를 이용하여 상기 노드 식별자를 암호화되어 제1 암호화된 노드 식별자가 생성되고,
상기 노드 소프트웨어가 상기 라이선스를 발급받는 경우, 상기 물리적인 장치에서 상기 라이선스에 포함된 노드 식별자가 상기 고유키를 이용하여 암호화되어 제2 암호화된 노드 식별자가 생성되고,
상기 물리적인 장치에서 상기 제1 암호화된 노드 식별자의 해시값과 상기 제2 암호화된 노드 식별자의 해시값을 비교함으로서, 상기 라이선스에 포함된 노드 식별자가 상기 라이선스를 발급받은 노드 소프트웨어에서 검증되고,
상기 물리적인 장치에서 상기 라이선스에 포함된 서명이 상기 라이선스에 포함된 중간 인증서의 중간 공개키로 서명된 것인지 확인되고,
상기 물리적인 장치에서 상기 라이선스에 포함된 중간 인증서가 상기 루트 공개키로 서명된 것인지 확인되는 것
을 특징으로 하는 컴퓨터 장치.
at least one processor implemented to execute instructions readable by a computer device
including,
by the at least one processor;
generating an intermediate key pair including an intermediate private key and an intermediate public key;
transmitting the intermediate public key to a root system, and receiving an intermediate certificate signed with the root public key of the root system while including the transmitted intermediate public key through the root system;
receive a node identifier of the node software from node software, and issue a license signed with the intermediate public key to the node software, the license including the received node identifier and the intermediate certificate;
Checking whether the number of node software running according to the conditions of the issued license is less than or equal to the number permitted through the license;
The node identifier is generated and transmitted to the computer device in a physical device in which the node software is installed and run;
The first encrypted node identifier is generated by encrypting the node identifier in the physical device using a unique key included in the trusted execution environment of the physical device,
When the node software is issued the license, the node identifier included in the license is encrypted using the unique key in the physical device to generate a second encrypted node identifier,
By comparing the hash value of the first encrypted node identifier and the hash value of the second encrypted node identifier in the physical device, the node identifier included in the license is verified in the node software that has been issued the license,
In the physical device, it is confirmed whether the signature included in the license is signed with an intermediate public key of an intermediate certificate included in the license;
Checking in the physical device whether the intermediate certificate included in the license is signed with the root public key
A computer device comprising a.
KR1020210003984A 2021-01-12 2021-01-12 Method and system for managing software license based on trusted execution environment KR102393537B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210003984A KR102393537B1 (en) 2021-01-12 2021-01-12 Method and system for managing software license based on trusted execution environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210003984A KR102393537B1 (en) 2021-01-12 2021-01-12 Method and system for managing software license based on trusted execution environment

Publications (1)

Publication Number Publication Date
KR102393537B1 true KR102393537B1 (en) 2022-05-04

Family

ID=81584160

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210003984A KR102393537B1 (en) 2021-01-12 2021-01-12 Method and system for managing software license based on trusted execution environment

Country Status (1)

Country Link
KR (1) KR102393537B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030038995A (en) * 2001-11-09 2003-05-17 임민상 System and method for preventing illegal copying software
JP2004206435A (en) * 2002-12-25 2004-07-22 Victor Co Of Japan Ltd License management method, and license management system
KR20040076811A (en) * 2003-02-25 2004-09-03 마이크로소프트 코포레이션 Issuing a publisher use license off-line in a digital rights management(drm) system
KR101525887B1 (en) * 2014-12-16 2015-06-03 주식회사 비즈니스서비스그룹 License management method and system using unique license information in intra-network environment for restricting illegal software installation and execution

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030038995A (en) * 2001-11-09 2003-05-17 임민상 System and method for preventing illegal copying software
JP2004206435A (en) * 2002-12-25 2004-07-22 Victor Co Of Japan Ltd License management method, and license management system
KR20040076811A (en) * 2003-02-25 2004-09-03 마이크로소프트 코포레이션 Issuing a publisher use license off-line in a digital rights management(drm) system
KR101525887B1 (en) * 2014-12-16 2015-06-03 주식회사 비즈니스서비스그룹 License management method and system using unique license information in intra-network environment for restricting illegal software installation and execution

Similar Documents

Publication Publication Date Title
US11475137B2 (en) Distributed data storage by means of authorisation token
US9871821B2 (en) Securely operating a process using user-specific and device-specific security constraints
US10063537B2 (en) Permission architecture for remote management and capacity instances
US10021542B2 (en) Providing access to applications with varying enrollment levels
CN111213350A (en) System and method for creating decentralized identity
CN110535648B (en) Electronic certificate generation and verification and key control method, device, system and medium
US10671372B2 (en) Blockchain-based secure customized catalog system
US10270757B2 (en) Managing exchanges of sensitive data
CN114374559A (en) Platform attestation and registration for servers
US20230370265A1 (en) Method, Apparatus and Device for Constructing Token for Cloud Platform Resource Access Control
KR102222948B1 (en) Method and system for managing access security
CN108073823B (en) Data processing method, device and system
US20090086980A1 (en) Enabling a secure oem platform feature in a computing environment
CN110084600B (en) Processing and verifying method, device, equipment and medium for resolution transaction request
CN110661779B (en) Block chain network-based electronic certificate management method, system, device and medium
KR20190128532A (en) Secure cryptocurrency sending method using cryptocurrency transaction analysis and remote attestation
CN111651794A (en) Alliance chain-based electronic data management method and device and storage medium
JP7223067B2 (en) Methods, apparatus, electronics, computer readable storage media and computer programs for processing user requests
KR20130101964A (en) System and method for securely upgrading or downgrading platform components
US10771462B2 (en) User terminal using cloud service, integrated security management server for user terminal, and integrated security management method for user terminal
Chen et al. TrustBuilder: A non-repudiation scheme for IoT cloud applications
US10333717B2 (en) Timestamped license data structure
US11244031B2 (en) License data structure including license aggregation
CN111178896B (en) Bus taking payment method, device and storage medium
Tuan et al. A blockchain-based authentication and access control for smart devices in sdn-enabled networks for metaverse

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant