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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 33
- 238000007726 management method Methods 0.000 claims abstract description 45
- 238000004422 calculation algorithm Methods 0.000 description 34
- 238000000322 laser mass spectrometry Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000012795 verification Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using certificates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
Abstract
Description
아래의 설명은 신뢰실행환경에 기반한 소프트웨어 라이선스 관리 방법 및 시스템에 관한 것이다.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
복수의 전자 기기들(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
통신 방식은 제한되지 않으며, 네트워크(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
서버(150, 160) 각각은 복수의 전자 기기들(110, 120, 130, 140)과 네트워크(170)를 통해 통신하여 명령, 코드, 파일, 컨텐츠, 서비스 등을 제공하는 컴퓨터 장치 또는 복수의 컴퓨터 장치들로 구현될 수 있다. 예를 들어, 서버(150)는 네트워크(170)를 통해 접속한 복수의 전자 기기들(110, 120, 130, 140)로 서비스(일례로, 라이선스 관리 서비스, 키 교환 서비스, 아카이빙 서비스, 파일 배포 서비스, 지도 서비스, 컨텐츠 제공 서비스, 그룹 통화 서비스(또는 음성 컨퍼런스 서비스), 메시징 서비스, 메일 서비스, 소셜 네트워크 서비스, 번역 서비스, 금융 서비스, 결제 서비스, 검색 서비스 등)를 제공하는 시스템일 수 있다.Each of the
도 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
이러한 컴퓨터 장치(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
프로세서(220)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(210) 또는 통신 인터페이스(230)에 의해 프로세서(220)로 제공될 수 있다. 예를 들어 프로세서(220)는 메모리(210)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다. 이때, 프로세서(220)는 컴퓨터 장치(200)와 같은 처리장치에 신뢰실행환경(Trusted Execution Environment, TEE)과 같은 안전한 컴퓨팅 환경을 구성하기 위한 기능을 제공할 수 있다.The
통신 인터페이스(230)는 네트워크(170)를 통해 컴퓨터 장치(200)가 다른 장치와 서로 통신하기 위한 기능을 제공할 수 있다. 일례로, 컴퓨터 장치(200)의 프로세서(220)가 메모리(210)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이나 명령, 데이터, 파일 등이 통신 인터페이스(230)의 제어에 따라 네트워크(170)를 통해 다른 장치들로 전달될 수 있다. 역으로, 다른 장치로부터의 신호나 명령, 데이터, 파일 등이 네트워크(170)를 거쳐 컴퓨터 장치(200)의 통신 인터페이스(230)를 통해 컴퓨터 장치(200)로 수신될 수 있다. 통신 인터페이스(230)를 통해 수신된 신호나 명령, 데이터 등은 프로세서(220)나 메모리(210)로 전달될 수 있고, 파일 등은 컴퓨터 장치(200)가 더 포함할 수 있는 저장 매체(상술한 영구 저장 장치)로 저장될 수 있다.The
입출력 인터페이스(240)는 입출력 장치(250)와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 마이크, 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 디스플레이, 스피커와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(240)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 입출력 장치(250)는 컴퓨터 장치(200)와 하나의 장치로 구성될 수도 있다.The input/
또한, 다른 실시예들에서 컴퓨터 장치(200)는 도 2의 구성요소들보다 더 적은 혹은 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 컴퓨터 장치(200)는 상술한 입출력 장치(250) 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.Also, in other embodiments, the
도 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
루트 시스템(310)은 라이선스 체계 전체를 제어할 수 있으며, 복수의 LMS(320) 각각은 실제 라이선스 발급 및 감시를 담당할 수 있다. 이때, 루트 시스템(310)과 복수의 LMS(320) 각각은 별도의 하드웨어 장치(일례로, 컴퓨터 장치(200))에 구현될 수도 있으나, 적어도 둘 이상이 하나의 하드웨어 장치에 구현될 수도 있다.The
루트 시스템(310)은 오프라인(cold site)에 격리되어 있고, 이따금씩 복수의 LMS(320) 중 적어도 하나와의 정보교환이 필요할 때만 온라인(일례로, 인터넷)상에 연결될 수 있다. 복수의 LMS(320) 각각은 온라인상에서 실행중인 서버 프로그램일 수 있으며, 복수의 노드 소프트웨어(330) 각각 역시 온라인상에서 실행중인 소프트웨어일 수 있다.The
루트 시스템(310)과 복수의 LMS(320)은 소프트웨어 개발자(또는 서비스 제공자)에 의해 관리될 수 있으며, 복수의 노드 소프트웨어(330) 각각은 해당 소프트웨어 사용자에 의해 사용될 수 있다.The
라이선스는 공개키기반구조(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
라이선스(331)는 루트 인증서(311)로부터 내려오는 인증서 체인에 맞게 서명되어 있어야 유효하다고 간주될 수 있다. 라이선스 기간이 끝나기 전에 상위 인증서(루트 인증서(311) 및/또는 중간 인증서(321))의 기한이 끝나는 경우, 원치 않게 라이선스를 거절하게 된다. 따라서, 상위 인증서의 기간을 설계할 때는 라이선스의 기한을 방해하지 않도록 설계할 수 있다.The
모든 라이선스에 대해서, 라이선스의 기간을 포함하는 상위 인증서가 적어도 하나는 존재하도록 설정될 수 있다. 이를 위해, 상위 인증서의 기간은 일정 기간 겹치도록 설정될 수 있다.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
(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
도 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
단계(610)에서 컴퓨터 장치(200)는 루트 시스템을 통해 중간 인증서를 발급받을 수 있다. 일례로, 컴퓨터 장치(200)는 중간 개인키 및 중간 공개키를 포함하는 중간 키쌍을 생성할 수 있으며, 중간 공개키를 루트 시스템으로 전달할 수 있다. 이때, 컴퓨터 장치(200)는 루트 시스템을 통해 중간 공개키를 포함하고, 상기 루트 시스템의 공개키로 서명된 중간 인증서를 발급받을 수 있다. 중간 인증서를 발급받는 과정에 대해서는 이후 도 7을 통해 더욱 자세히 설명한다.In
단계(620)에서 컴퓨터 장치(200)는 노드 소프트웨어에게 라이선스를 발급할 수 있다. 일례로, 컴퓨터 장치(200)는 노드 소프트웨어의 노드 식별자를 포함하고, 중간 공개키로 서명된 라이선스를 노드 소프트웨어로 발급할 수 있다. 이때, 라이선스에 포함된 노드 식별자는 라이선스를 발급받은 노드 소프트웨어의 신뢰실행환경을 위한 고유키(이하 'CPU 고유키')를 이용하여 라이선스를 발급받은 노드 소프트웨어에서 검증될 수 있다. 신뢰실행환경은 CPU(프로세서)에 탑재된 기능(CPU 고유키 포함)을 활용하여 구성한 안전한 컴퓨팅 환경으로, 메인 프로세서 내 별도로 독립된 보안 영역(secure area)을 제공할 수 있다. 일반 영역(normal area)과 보안 영역(secure area)이 따로 분리된 프로세서에서, 보안 영역에는 생체 정보, 결제 정보, 기업 보안 문서 등의 중요한 정보가 저장될 수 있으며, 일반 영역과의 정보 교환이 통제되고 보안 소프트웨어가 안전하게 실행될 수 있다. 노드 소프트웨어가 설치 및 구동되는 물리적인 장치는 이러한 신뢰실행환경을 위한 CPU 고유키를 이용하여 라이선스에 포함된 노드 식별자를 검증할 수 있다. 또한, 노드 소프트웨어는 발급받은 라이선스가 루트 인증서로부터 올바른 순서로 발급된 것인지 여부를 확인할 수 있다. 예를 들어, 노드 소프트웨어는 중간 인증서와 중간 인증서의 서명을 통해 라이선스와 관련된 라이선스 관리 서버의 중간 인증서를 검증할 수 있다. 이때, 중간 인증서는 루트 인증서의 서명을 포함할 수 있으며, 노드 소프트웨어는 루트 인증서와 루트 인정서의 서명을 통해 루트 인증서를 검증함으로써, 라이선스가 루트 인증서로부터 올바른 순서로 발급된 것인지 여부를 확인할 수 있다. 노드 소프트웨어에게 라이선스를 발급하는 과정에 대해서는 이후 도 8 내지 도 11을 통해 더욱 자세히 설명한다.In
단계(630)에서 컴퓨터 장치(200)는 실행중인 노드 소프트웨어의 수가 라이선스를 통해 허가된 수 이하인지 여부를 확인할 수 있다. 일례로, 노드 소프트웨어가 처음 실행되면 노드 소프트웨어는 라이선스 관리 서버에게 노드 소프트웨어의 식별자(이하, 'NID')를 보내며 노드 등록을 요청할 수 있다. 이때, 라이선스 관리 서버는 노드 소프트웨어에게 보고 주기(일례로, 1시간)를 정해서 전달할 수 있다. 노드 소프트웨어는 실행되는 동안 보고 주기가 돌아올 때마다 라이선스 관리 서버에서 자신의 NID와 실행 통계를 포함하는 보고서를 보낼 수 있다. 라이선스 관리 서버는 여러 노드 소프트웨어들이 보낸 정보를 취합하여 저장할 수 있다. 이때, 라이선스 관리 서버는 취합된 정보를 통해 라이선스에 의해 정해진 제한보다 많은 수의 노드 소프트웨어들에서 라이선스에 대응하는 소프트웨어가 실행중인지 여부를 확인할 수 있다. 만약, 라이선스에 의해 정해진 제한보다 많은 수의 노드 소프트웨어들에서 라이선스에 대응하는 소프트웨어가 실행중인 경우, 라이선스 관리 서버는 라이선스 위반에 대한 사항을 소프트웨어 개발자에게 알릴 수 있다.In
단계(640)에서 컴퓨터 장치(200)는 인증서 또는 라이선스의 기한에 따라 인증서 또는 라이선스를 재발급할 수 있다. 라이선스, 중간 인증서 및 루트 인증서는 유효기간이 있으므로 갱신이 요구될 수 있다. 라이선스의 유효기간이 만료가 얼마 남지 않았거나 만료된 경우, 노드 소프트웨어는 라이선스 관리 서버와 통신하여 단계(620)에서와 같이 새로운 라이선스를 발급받을 수 있다. 라이선스 관리 서버는 루트 시스템과 통신하여 단계(610)에서와 같이 새로운 중간 인증서를 발급받을 수 있다. 새로운 중간 인증서는 향후 라이선스 발급에 쓰이게 된다. 루트 시스템은 새로운 루트 인증서를 발급할 수 있다. 새로운 루트 인증서는 루트 인증서의 발급 시점 이후에 노드 소프트웨어로 배포된 라이선스에 포함될 수 있다.In
도 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
단계(731)에서 루트 시스템(710)은 루트 키쌍 및 루트 인증서를 생성할 수 있다. 여기서, 루트 키쌍은 루트 시스템(710)의 개인키(루트 개인키) 및 공개키(루트 공개키)를 포함할 수 있다. 한편, 루트 시스템(710)에서 생성된 루트 인증서는 노드 소프트웨어에 포함되어 추후 노드 소프트웨어에 발급되는 라이선스에 포함된 루트 인증서와의 비교를 위해 활용될 수 있다. 이때, 루트 키쌍은 루트 인증서 각각마다 생성될 수 있다.In step 731 , the
단계(732)에서 LMS(720)는 중간 키쌍을 생성할 수 있다. 여기서, 중간 키쌍은 LMS(720)의 개인키(중간 개인키) 및 공개키(중간 공개키)를 포함할 수 있다. 이때, 중간 키쌍은 중간 인증서 각각마다 생성될 수 있다.In
여기서, 단계(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
단계(734)에서 루트 시스템(710)은 루트 공개키로 중간 인증서를 발급할 수 있다. 예를 들어, 루트 시스템(710)은 단계(733)에서 전달된 중간 공개키를 포함하고, 루트 공개키로 서명된 중간 인증서를 생성할 수 있다.In
단계(735)에서 루트 시스템(710)은 중간 인증서를 LMS(720)로 전달할 수 있다. 이러한 중간 인증서는 이후 노드 소프트웨어에 발급되는 라이선스에 포함될 수 있다.In
단계(736)에서 LMS(720)는 중간 인증서를 보관할 수 있다. 앞서 도 4를 통해 설명한 인증서의 기간 설계에 따라 LMS(720)는 복수의 중간 인증서를 전달받아 보관할 수도 있다.In
도 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
단계(821)에서 노드 소프트웨어(810)는 NID를 생성할 수 있다. 여기서, NID는 노드 소프트웨어(810)가 설치 및 구동되는 컴퓨터 장치의 컴퓨터 정보, 사용자 정보, 소프트웨어 정보 및 난수를 포함하여 생성될 수 있다.In
단계(822)에서 노드 소프트웨어(810)는 NID를 LMS(720)로 전달할 수 있다. 예를 들어, 노드 소프트웨어(810)는 LMS(720)로 라이선스의 발급을 요청하면서 NID를 전달할 수 있다.In
단계(823)에서 LMS(720)는 라이선스 발급 여부 및 발급 조건을 판단할 수 있다. 예를 들어, LMS(720)는 소프트웨어 개발자가 정해놓은 규칙에 따라 및/또는 데이터베이스를 조회하여 노드 소프트웨어(810)로 이미 발급된 라이선스가 존재하는지 여부 등을 고려하여 노드 소프트웨어(810)로 라이선스를 발급할지 여부와 발급한다면 어떠한 조건으로 라이선스를 발급할 것인지 여부를 결정할 수 있다.In
단계(824)에서 LMS(720)는 보관하고 있는 중간 인증서 중에서 라이선스 기간을 포함할 수 있는 중간 인증서를 선택할 수 있다. 만약, 발급하고자 하는 라이선스의 기간을 포함할 수 있는 중간 인증서가 보관되어 있지 않은 경우, 도 7을 통해 설명한 루트 시스템(710)을 통해 새로운 중간 인증서를 발급받을 수 있다.In step 824, the
단계(825)에서 LMS(720)는 선택된 중간 인증서에 해당하는 중간 공개키로 라이선스를 서명할 수 있다. 라이선스가 포함하는 내용에 대해서는 앞서 도 5를 통해 자세히 설명한 바 있다. 라이선스의 서명은 중간 인증서를 중간 공개키로 서명하여 생성될 수 있다.In
단계(826)에서 LMS(720)는 서명된 라이선스를 노드 소프트웨어(810)로 전달할 수 있다.In
단계(827)에서 노드 소프트웨어(810)는 전달된 라이선스를 검증할 수 있다. 라이선스를 검증하는 과정에 대해서는 이후 도 11을 통해 더욱 자세히 설명한다.In
단계(828)에서 노드 소프트웨어(810)는 라이선스 조건에 따라 작동할 수 있다. 라이선스 조건은 앞서 도 5를 통해 설명한 라이선스가 포함하는 내용에 따른 조건에 대응할 수 있으며, 노드 소프트웨어(810)는 라이선스에 명시된 조건에 따라 동작할 수 있다.In
도 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
이때, 도 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
이후, 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
도 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
이때, 도 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
또한, 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
또한, NID 검사 알고리즘은 검사 결과를 출력(1070)할 수 있다. 이때, 검사 결과는 제1 비교 결과와 제2 비교 결과를 포함할 수 있다. 일례로, 제1 비교 결과에 따라 입력(1010)된 NID가 포함하는 컴퓨터 정보, 사용자 정보 및 소프트웨어 정보가 현재 컴퓨터, 사용자, 소프트웨어의 정보와 동일하지 않거나 또는 제2 비교 결과에 따라 입력(1020)된 NID 해시값과 계산된 NID 해시값(1050)이 동일하지 않은 경우, NID가 검증되지 않을 수 있으며, 결과적으로 발급된 라이선스가 검증되지 않을 수 있다.Also, the NID inspection algorithm may
도 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
단계(1110)에서 라이선스 검사 알고리즘은 현재시간이 라이선스 유효기간에 포함되는지 확인할 수 있다. 이러한 단계(1110)는 라이선스의 유효기간이 지났는지 여부를 확인하기 위해 수행될 수 있다. 이때, 확인 실패 시, 단계(1170)이 수행될 수 있다.In
단계(1120)에서 라이선스 검사 알고리즘은 라이선스에 포함된 NID를 검증할 수 있다. 이러한 단계(1120)는 앞서 도 10을 통해 설명한 NID 검증 알고리즘을 통해 수행되는 NID 검증 과정의 예일 수 있다. 이때, 검증 실패 시, 단계(1170)이 수행될 수 있다.In
단계(1130)에서 라이선스 검사 알고리즘은 라이선스에 포함된 서명이 라이선스에 포함된 중간 인증서의 중간 공개키로 서명된 것인지 확인할 수 있다. 이때, 확인 실패 시, 단계(1170)이 수행될 수 있다.In
단계(1140)에서 라이선스 검사 알고리즘은 라이선스에 포함된 중간 인증서가 라이선스에 포함된 루트 인증서의 공개키로 서명된 것인지 확인할 수 있다. 이때, 확인 실패 시, 단계(1170)이 수행될 수 있다.In
단계(1150)에서 라이선스 검사 알고리즘은 라이선스에 포함된 루트 인증서가 소프트웨어에 포함된 루트 인증서 목록에 들어있는지 확인할 수 있다. 여기서, 소프트웨어는 라이선스의 대상이 되는 소프트웨어로서 일례로, 노드 소프트웨어(810)에 대응할 수 있다. 이때, 확인 실패 시, 단계(1170)이 수행될 수 있다.In
단계(1160)에서 노드 소프트웨어(810)는 라이선스 조건에 따라 작동할 수 있다. 라이선스 조건은 앞서 도 5를 통해 설명한 라이선스가 포함하는 내용에 따른 조건에 대응할 수 있으며, 노드 소프트웨어(810)는 라이선스에 명시된 조건에 따라 동작할 수 있다.In
단계(1170)에서 라이선스 검사 알고리즘은 소프트웨어를 종료할 수 있다. 여기서 소프트웨어는 라이선스의 대상이 되는 소프트웨어로서 일례로, 노드 소프트웨어(810)에 대응할 수 있다.In
이와 같이, 본 발명의 실시예들에 따르면, 하드웨어 요소인 신뢰실행환경에 기반하여 우회하기 어려운 라이선스 관리 방법 및 시스템을 제공할 수 있다. 또한 서버 대수의 제한, 사용 기한의 제한, 사용 기능의 제한 등 다양한 비즈니스 모델을 지원하기 위한 검사 장치를 추가할 수 있으며, 라이선스 및 각종 인증서가 만료됨에 따라 라이선스 및 인증서를 재발급하기 위한 기능을 제공함으로써, 라이선스를 장기간 운용할 수 있게 된다.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.
상기 제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.
상기 적어도 하나의 프로세서에 의해, 상기 라이선스에 포함된 루트 인증서가 상기 라이선스의 대상이 되는 소프트웨어에 포함된 루트 인증서 목록에 포함되어 있는지 확인하는 단계
를 더 포함하는 라이선스 관리 방법.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.
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)
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 |
-
2021
- 2021-01-12 KR KR1020210003984A patent/KR102393537B1/en active IP Right Grant
Patent Citations (4)
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 |