WO2021232295A1 - 软件许可信息的监控方法、装置、服务器及存储介质 - Google Patents

软件许可信息的监控方法、装置、服务器及存储介质 Download PDF

Info

Publication number
WO2021232295A1
WO2021232295A1 PCT/CN2020/091326 CN2020091326W WO2021232295A1 WO 2021232295 A1 WO2021232295 A1 WO 2021232295A1 CN 2020091326 W CN2020091326 W CN 2020091326W WO 2021232295 A1 WO2021232295 A1 WO 2021232295A1
Authority
WO
WIPO (PCT)
Prior art keywords
information
information block
transaction
software
value
Prior art date
Application number
PCT/CN2020/091326
Other languages
English (en)
French (fr)
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 JP2022551324A priority Critical patent/JP7459275B2/ja
Priority to CN202080000783.7A priority patent/CN113966509A/zh
Priority to PCT/CN2020/091326 priority patent/WO2021232295A1/zh
Priority to US17/906,969 priority patent/US20230104585A1/en
Priority to EP20936442.1A priority patent/EP4131034B1/en
Publication of WO2021232295A1 publication Critical patent/WO2021232295A1/zh

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/12Protecting executable software
    • 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing

Definitions

  • This application relates to the technical field of software management, and in particular to a method, device, server, and storage medium for monitoring software license information.
  • License control refers to controlling users to use software within their own authority through license information.
  • the license information of the software can include the effective time of the software, the length of legal use, and the number of licensed nodes.
  • the length of legal use refers to the length of time the user can use the software legally, such as 60 days, 365 days, etc. When the user uses the software for more than the legal use period, the software functions will be limited or unavailable.
  • the number of licensed nodes is the maximum number of nodes that can use the software. For example, if the user has bought enough use rights for a software gateway for one year, and the software gateway allows up to 100 routers to access, the legal use time of the software gateway is 365 days, and the number of licensed nodes is 100. When 100 routers have been connected to the software gateway, if a new router requests to access the software gateway, the access request of the router is rejected.
  • License control is mainly to prevent the license information from being tampered with.
  • the current license control method is: During software deployment, obtain the hardware information of the host where the software is located. This hardware information includes but is not limited to the host's network card media access control (Media Access Control, MAC). ) Address, hard disk serial number. Then a key is generated based on the hardware information, and the license information is encrypted with the key to form a cipher text. During the running of the software, the ciphertext is decrypted to obtain the license information, and the license is controlled according to the obtained license information.
  • Media Access Control Media Access Control
  • the encryption of the license information depends on the hardware information of the host. If the host is a virtual machine or the host is in a containerized scenario, it will be difficult to obtain the hardware information of the host and it is difficult to effectively protect the license information. In addition, even if the hardware information of the host can be obtained and used for encryption, if the tamperer also obtains the hardware information of the host, the cipher text can be decrypted. The license information is at risk of being tampered with, and the security is poor.
  • the purpose of the embodiments of the present application is to provide a method, device, server, and storage medium for monitoring software license information, so as to prevent the license information from being tampered with and take effect, and to improve security.
  • the specific technical solutions are as follows:
  • an embodiment of the present application provides a method for monitoring software license information, which is applied to a server, and the method includes:
  • the transaction information block including license information
  • the license information includes the available duration balance of the software to be protected when the transaction information block is generated
  • Generating an information block the information block including the root encryption value and a transaction list, the transaction list including transaction information blocks generated in sequence;
  • the information block is added to an information chain, and the information chain includes information blocks generated in sequence.
  • the available time balance of the software to be protected is determined through the following steps:
  • the method further includes:
  • the information block includes header information, and the header information includes the root encryption value and the parent encryption value;
  • the method also includes:
  • the parent encryption value is calculated based on the acquired header information of the previous information block.
  • the generating information block includes:
  • the encrypted value of the information block is added to the header information of the information block.
  • the calculation of the root encryption value according to the generated transaction information block includes:
  • a preset encryption algorithm is used to calculate the permission information of each transaction information block to obtain the encrypted value of each transaction information block;
  • the encryption value of the component is calculated by using the preset encryption algorithm to obtain the root encryption value.
  • this application provides a method for monitoring software license information, which is applied to a server, and the license information of the software to be protected is stored in the form of an information chain;
  • the information chain includes information blocks established in sequence, and the information blocks include transaction lists and root encryption values; wherein, the transaction list includes transaction information blocks generated in sequence, and the transaction information blocks include permission information,
  • the license information includes the available time balance of the software to be protected when the transaction information block is generated, and the root encryption value is obtained by encrypting the license information;
  • the method includes:
  • the information block includes header information, and the header information includes a root encryption value and a parent encryption value; wherein, the parent encryption value is based on a value generated before the current information block.
  • the header information of an information block generates an encrypted value; the method further includes:
  • the header information of the information block further includes an encrypted value of the information block, and the encrypted value of the information block is an encrypted value calculated according to the data part of the information block,
  • the data part of the information block includes license information of the software to be protected when the information block is generated;
  • the method also includes:
  • the calculation of the root encryption value according to the permission information of each transaction information block included in the transaction list in the information block to be verified includes:
  • the encryption value of the component is calculated by using the preset encryption algorithm to obtain the root encryption value.
  • the computing component encryption value according to the preset encryption algorithm and the encryption value of the one or more transaction information blocks includes:
  • the preset encryption algorithm For each preset number of consecutive transaction information blocks in the transaction list of the information block to be verified, the preset encryption algorithm is used to calculate the encryption value of the preset number of consecutive transaction information blocks to obtain a paragraph Encrypted value
  • the preset encryption algorithm is used to calculate at least one segment encryption value obtained by calculation to obtain the component encryption value.
  • the method further includes:
  • the method further includes:
  • this application provides a software license information monitoring device, which is applied to a server, and the device includes:
  • a generating module configured to generate a transaction information block every designated time length, the transaction information block including license information, and the license information includes the available duration balance of the software to be protected when the transaction information block is generated;
  • the calculation module is used to calculate the root encryption value according to the generated transaction information block
  • the generating module is further configured to generate an information block, the information block includes the root encryption value and a transaction list, and the transaction list includes transaction information blocks generated in sequence;
  • the storage module is configured to add the information block to an information chain, and the information chain includes information blocks generated in sequence.
  • the generating module is specifically configured to determine the available time balance of the software to be protected through the following steps:
  • the device further includes:
  • the broadcasting module is configured to broadcast the information block to the backup node and/or external cache of the server, so as to form a backup information chain of the information chain in the backup node and/or the external cache.
  • the information block includes header information, and the header information includes the root encryption value and the parent encryption value;
  • the calculation module is also used for:
  • the parent encryption value is calculated based on the acquired header information of the previous information block.
  • the generating module is specifically used for:
  • the encrypted value of the information block is added to the header information of the information block.
  • the calculation module is specifically used for:
  • a preset encryption algorithm is used to calculate the permission information of each transaction information block to obtain the encrypted value of each transaction information block;
  • the encryption value of the component is calculated by using the preset encryption algorithm to obtain the root encryption value.
  • an embodiment of the present application provides a software license information monitoring device, which is applied to a server, and the license information of the software to be protected is stored in the form of an information chain;
  • the information chain includes information blocks established in sequence, and the information blocks include transaction lists and root encryption values; wherein, the transaction list includes transaction information blocks generated in sequence, and the transaction information blocks include permission information,
  • the license information includes the available time balance of the software to be protected when the transaction information block is generated, and the root encryption value is obtained by encrypting the license information;
  • the device includes:
  • the calculation module is used to calculate the root encryption value according to each transaction information block included in the transaction list of the information block to be verified;
  • the verification module is configured to compare the calculated root encryption value with the root encryption value stored in the information block to be verified; and determine whether the license information of the software to be protected has been tampered with according to the comparison result.
  • the information block includes header information, and the header information includes a root encryption value and a parent encryption value; wherein, the parent encryption value is based on a value generated before the current information block.
  • the header information of an information block generates an encrypted value; the device further includes:
  • An obtaining module configured to obtain the header information of the previous information block of the information block to be verified
  • the calculation module is further configured to calculate an encryption value based on the obtained header information of the previous information block;
  • the verification module is further configured to compare the encrypted value calculated based on the header information of the previous information block with the parent encrypted value stored in the information block to be verified; determine the to-be-protected value according to the comparison result Whether the license information of the software has been tampered with.
  • the header information of the information block further includes an encrypted value of the information block, and the encrypted value of the information block is an encrypted value calculated according to the data part of the information block,
  • the data part of the information block includes license information of the software to be protected when the information block is generated;
  • the calculation module is further configured to calculate the encryption value of the information block to be verified according to the data part of the information block to be verified;
  • the verification module is further configured to compare the calculated encrypted value of the information block to be verified with the encrypted value of the information block to be verified stored in the information block to be verified; according to the comparison As a result, it is determined whether the license information of the software to be protected has been tampered with.
  • the calculation module is specifically used for:
  • the encryption value of the component is calculated by using the preset encryption algorithm to obtain the root encryption value.
  • the calculation module is specifically used for:
  • the preset encryption algorithm For each preset number of consecutive transaction information blocks in the transaction list of the information block to be verified, the preset encryption algorithm is used to calculate the encryption value of the preset number of consecutive transaction information blocks to obtain a paragraph Encrypted value
  • the preset encryption algorithm is used to calculate at least one segment encryption value obtained by calculation to obtain the component encryption value.
  • the verification module is further used for:
  • the obtaining module is also used to obtain the newly generated information block in the backup information chain from the backup node and/or the external cache;
  • the verification module is also used to compare the information block obtained from the backup node and/or the external cache with the information block to be verified; and determine whether the license information of the software to be protected is verified according to the comparison result. tamper.
  • an embodiment of the present application also provides a server, including a processor, a communication interface, a memory, and a communication bus, where the processor, the communication interface, and the memory complete mutual communication through the communication bus;
  • Memory used to store computer programs
  • the processor is configured to implement the method steps described in the first aspect when executing the program stored in the memory.
  • an embodiment of the present application further provides a server, including a processor, a communication interface, a memory, and a communication bus, where the processor, the communication interface, and the memory complete mutual communication through the communication bus;
  • Memory used to store computer programs
  • the processor is configured to implement the method steps described in the second aspect when executing the program stored in the memory.
  • the embodiments of the present application also provide a computer-readable storage medium in which a computer program is stored, and when the computer program is executed by a processor, the method described in the first aspect is implemented.
  • embodiments of the present application also provide a computer-readable storage medium in which a computer program is stored, and when the computer program is executed by a processor, the method described in the second aspect is implemented.
  • the embodiments of the present application also provide a computer program product containing instructions, which when run on a computer, cause the computer to execute the method described in the first aspect.
  • the embodiments of the present application also provide a computer program product containing instructions, which when run on a computer, cause the computer to execute the method described in the above second aspect.
  • the root encryption value is calculated based on the permission information included in each transaction information block that has been generated. If the permission information included in any transaction information block is tampered with, the root encryption value will change.
  • the root encryption value is calculated according to each transaction information block included in the transaction list of the information block to be verified, and by comparing the calculated root encryption value with the stored root encryption value, it can be determined whether the permission information has been tampered with . Because hardware information is not used when generating the root encrypted value, it is difficult to tamper with the root encrypted value as long as the tamper does not know the encryption algorithm used in the embodiment of the present application.
  • the software license information monitoring method can improve the security of the software license information without using the hardware information of the host.
  • FIG. 1 is an exemplary schematic diagram of a data structure of a transaction information block provided by an embodiment of the application
  • FIG. 2 is an exemplary schematic diagram of a data structure of a hash tree provided by an embodiment of the application
  • FIG. 3 is an exemplary schematic diagram of a data structure of an information block provided by an embodiment of the application.
  • FIG. 4 is an exemplary schematic diagram of a data structure of an information chain provided by an embodiment of the application.
  • FIG. 5 is a schematic diagram of the relationship between devices in a distributed cluster system provided by an embodiment of this application.
  • FIG. 6 is an exemplary schematic diagram of a license device provided by an embodiment of the application for implementing read and write functions
  • FIG. 7 is a flowchart of a method for monitoring software license information provided by an embodiment of the application.
  • FIG. 8 is a flowchart of another method for monitoring software license information provided by an embodiment of the application.
  • FIG. 9 is a schematic flowchart of an exemplary flow chart of a method for monitoring software license information provided by an embodiment of the application.
  • FIG. 10 is a schematic structural diagram of a software license information monitoring device provided by an embodiment of the application.
  • FIG. 11 is a schematic structural diagram of another software license information monitoring device provided by an embodiment of the application.
  • FIG. 12 is a schematic structural diagram of a server provided by an embodiment of the application.
  • software license information is generally encrypted by hardware information. If the host where the software is located is a physical machine, the hardware information of the physical machine can be collected through the corresponding function of the operating system. If the host where the software is located is a virtual machine, since the hardware information of the virtual machine is virtual and variable, the virtualization software of the virtual machine manufacturer is required to collect the hardware information of the physical machine where the virtual machine is located. Supporting the function of obtaining the hardware information of the physical machine, the hardware information of the physical machine cannot be obtained.
  • the hardware information of the physical machine where the software is located will be difficult to obtain. Therefore, using the hardware information of the physical machine to encrypt the software license information will be difficult to achieve.
  • license information will also be stored in sections.
  • the method of using a host's hardware information to encrypt license information is not suitable for distributed clusters. Therefore, the usage scenarios of the way of protecting license information through hardware information are limited, and the security is poor.
  • the embodiment of the present application provides a method for monitoring software license information.
  • the server needs to monitor the software license information to ensure that the software license information that can be installed is not tampered with.
  • This disclosure takes the encryption algorithm as the hash algorithm as an example to introduce the data structure of the transaction information block, the information block and the information chain involved in the disclosure. It should be understood that the encryption algorithm is not limited to the hash algorithm. For example, the present disclosure may also use other encryption algorithms such as a shift encryption algorithm to calculate the encryption value.
  • the server can generate a transaction information block according to the software license information for the software to be protected every day.
  • the frequency of generating transaction information blocks can also be one transaction information block generated in two days, or two transaction information blocks generated in one day, and the frequency of generating transaction information blocks is not limited.
  • Fig. 1 is a schematic diagram of the data structure of a transaction information block in an embodiment of the application.
  • the transaction information block includes header information and data parts.
  • the header information of the transaction information block includes: the serial number of the transaction information block and the hash value of the transaction information block.
  • the hash value of the transaction information block is a hash value obtained by performing a hash operation on the data part of the transaction information block.
  • the data part of the transaction information block includes: the available time balance.
  • the available time balance is the remaining available time when the software to be protected is authorized to use.
  • the data part of the transaction information block may further include: at least one of a component identifier, a timestamp, the number of permitted nodes, a random number, and a reserved field.
  • the component identifier can be used to characterize which component the generated transaction information block is generated for; the timestamp is the system time when the transaction information block is generated; By adding a random number, the method of encrypting or decrypting the calculation transaction information block can be made more complicated, and the difficulty of tampering with the hash value of the transaction information block is increased.
  • the random number can be a 16-bit random number; the reserved field is used for follow-up Expand the content of the data part of the transaction information block.
  • the transaction information block After the transaction information block is generated, it can be encrypted based on the generated transaction information block to obtain a data structure composed of encrypted values.
  • FIG. 2 is a schematic diagram of the data structure of the hash tree in an embodiment of the application.
  • the software to be protected includes two components, component 1 and component 2.
  • each TX represents the data part of a transaction information block, or each TX represents a transaction information block.
  • 60 transaction information has been generated for component 1 Blocks specifically correspond to TX1 to TX60 in the upper part of FIG. 2; and currently 60 transaction information blocks have been generated for component 2, which specifically correspond to TX1 to TX60 in the lower part of FIG. 2.
  • the hash values of each of the 5 TXs are spliced separately, and then the spliced result is hashed to obtain the hash value of the paragraph.
  • the hash values of TX1-TX5 are spliced, and then the hash calculation is performed to obtain the hash values of the paragraphs TX1-TX5, as shown in Hash(1-5) in Figure 2. And calculate the paragraph hash value corresponding to TX6-TX10, the paragraph hash value corresponding to TX10-TX15, until the paragraph hash value of TX56-TX60 is calculated, the 12 paragraph hash values of component 1 can be obtained.
  • the 12 paragraph hash values of component 1 are spliced, and then the hash operation is performed to obtain the component hash value of component 1, see the component Hash (1-60) in Figure 2 for details.
  • the component hash information includes the component hash value and the data part of the last generated transaction information block of the component as an example for description.
  • the component hash information of component 1 includes: the component hash value of component 1 and the information of TX60 of component 1.
  • the component hash information of component 2 includes: the component hash value of component 2 and the information of TX60 of component 2.
  • the component hash value of component 1 and the component hash value of component 2 are spliced, and then the hash operation is performed to obtain the root hash value.
  • the software to be protected includes only one component, for example, only component 1, after obtaining the paragraph hash value of component 1, the paragraph hash value of component 1 is spliced and hashed to obtain the root hash value.
  • every 5 transaction information blocks are used as a paragraph to calculate the paragraph hash value. If the currently generated transaction information blocks are less than 5, for example, there are only 4 transaction information blocks, the paragraph hash value is calculated based on the hash values of these 4 transaction information blocks. Or 53 transaction information blocks have been generated, the hash value of the last segment calculated is the segment hash value of TX50 to TX53.
  • the paragraph hash value is calculated based on the hash value of every 5 transaction information blocks as an example. In actual implementation, it is not limited to 5, and for example, it may be 2 or 3.
  • FIG. 3 is a schematic diagram of the data structure of the information block in an embodiment of the application.
  • the information block also includes the header information and the data part from the data structure.
  • the information block also includes the transaction part.
  • the header information of the information block is used to store the hash value generated from the transaction information block.
  • the header information of the information block may include any one or more of the parent hash value, the hash value of the current information block, and the root hash value.
  • the header information may also include any one or more of a timestamp, a random value, and a serial number.
  • the parent hash value is the hash value obtained by hashing the header information of the previous information block generated before the current information block; for example, in chronological order, information block 1, information block 2, and information block have been generated 3 and information block 4, the information block currently being generated is information block 5, and the parent hash value included in the header information of information block 5 is the hash value obtained by hashing the header information of information block 4.
  • the hash value of the current information block is a hash value obtained by performing a hash operation on the data part of the current information block;
  • the root hash value is the root hash value in Figure 2;
  • the time stamp is the system time when the current information block is generated
  • the sequence number included in the header information is the sequence number of the current information block.
  • the current information block is the fifth information block generated for the software to be protected, and the sequence number included in the header information is 5.
  • the data part of the information block is used to store component hash information.
  • the data part of the information block includes the component hash information in FIG. 2, that is, the component hash information of component 1 and the component hash information of component 2.
  • the transaction part of the information block is used to store the data part of the transaction information block generated by each component.
  • the transaction part of the information block may include the transaction list of component 1 and the transaction list of component 2, where the transaction list of component 1 includes the TX1-TX60 currently generated for component 1, and the transaction list of component 2 includes the current component 2 Generated TX1-TX60.
  • FIG. 4 is a schematic diagram of the data structure of the information chain provided by an embodiment of the application.
  • the information chain includes information blocks established in order.
  • the first information block generated in the information chain is called the genesis block in this disclosure.
  • the data structure of the genesis block is the same as that of other information blocks.
  • the genesis block includes the length of time the component is authorized to use, that is, the total available time of the component.
  • Figure 4 exemplarily shows two information blocks generated after the genesis block. In actual implementation, the number of information blocks is not limited to this.
  • one transaction information block can be generated every day, and the above hash tree is calculated based on all the generated transaction information blocks, and then an information block is created every day, that is, an information block is added to the information chain shown in FIG. 4 every day.
  • the method for monitoring software license information provided in the embodiments of this application can be applied to a distributed cluster system, and the distributed cluster system includes multiple servers, and the process of the method provided in the embodiments of this application can be executed through the servers included in the distributed cluster system. .
  • a license device may be deployed in a distributed cluster system where the software to be protected is located, and the license device is a process or a part of a process.
  • the license device may specifically be deployed in any server of the distributed cluster system, and the license device is used to implement the method flow provided in the embodiments of the present application.
  • multiple license devices can also be deployed in the distributed cluster system, with one of the license devices as the master node, and the other license devices as the backup node.
  • the master node is used to store and/or verify the license information of the software to be protected.
  • the backup node is used to verify the license information of the software to be protected.
  • FIG. 5 is a schematic diagram of the relationship between devices in a distributed cluster system provided by an embodiment of this application. As shown in Figure 5, three license devices are deployed in a distributed cluster system as an example, namely, license device 1, license device 2, and license device 3. Each license device has a data read and write function.
  • the business service device may communicate with the license device 1, the license device 2, and the license device 3 through an application programming interface (API) gateway.
  • API application programming interface
  • the business service device is used to perform software license control on the software to be protected, and is specifically used to manage the user's use of the software to be protected. For example, the business service device can determine whether the user has the right to use the software to be protected through the license information of the software to be protected.
  • the API gateway can implement routing and load balancing functions.
  • the business service device may send a read request to the API gateway.
  • the API gateway may forward the read request to one of the license devices in FIG. 5 through a load balancing strategy or randomly. Therefore, the license device reads the license information of the software to be protected and sends it to the business service device through the API gateway, and then the business service device performs software license control based on the read license information.
  • the write function of the license device can realize the writing of the license information of the software to be protected, and realize the function of tamper-proofing the license information.
  • the license device, API gateway, and business service device in Figure 5 are all software deployed in a distributed cluster system.
  • the license device, the API gateway, and the business service device may be specifically deployed in one server in the distributed cluster system, or may be deployed in multiple servers in the distributed cluster system.
  • FIG. 6 is an exemplary schematic diagram of a license device provided in an embodiment of the application for implementing read and write functions.
  • the business service device can request to read the license information stored in the license device through the API gateway. And the license device writes the latest license information every specified time period.
  • the three license devices in Figure 6 can select one license device as the master node through the election mechanism, and the remaining two license devices as the backup nodes.
  • the license device 1 is taken as the main node, and the license device 2 and the license device 3 are the backup nodes.
  • the license device 1 writes information every specified time period, that is, generates the latest license information of the software to be protected, and stores it. License information.
  • the license device 1 After the license device 1 generates the license information, it synchronizes the generated license information to the license device 2 and the license device 3.
  • the license device 2 and the license device 3 perform information verification on the stored license every preset period of time to prevent the license information from being tampered with .
  • the license device 1 may also verify the stored license information every preset period of time.
  • the period for the master node to write the license information may be the same as the period for the backup node to verify the license information. For example, the master node writes the license information once a day. Correspondingly, the backup node verifies the license information once a day. Or, in order to strengthen security, the backup node can also shorten the verification period, such as once an hour.
  • the API gateway after the API gateway receives the read request, it forwards the read request to the license device 3 according to the load balancing strategy as an example, and the subsequent license device 3 can process the read request.
  • the license device can complete the writing and verification of the license information.
  • the embodiments of the present application may store and verify the license information at the granularity of the software or the granularity of the components included in the software.
  • the license information of the software to be protected is stored and verified.
  • the license information of the software to be protected includes the available time balance of the software to be protected, and optionally, the number of license nodes of the software to be protected.
  • the license information of each component included in the software to be protected is stored and verified.
  • the license information of the component includes the available time balance of the component, and optionally, the number of license nodes of the component.
  • the preset encryption algorithm used in the process of storing and verifying the license information in the embodiment of the present application may be a hash algorithm, a shift algorithm, and the like.
  • the following uses components as the protection granularity, and the preset encryption algorithm used is the hash algorithm as an example.
  • Paragraph encryption value Encryption calculation is performed according to the encryption value of the preset number of consecutive transaction information blocks, and the obtained encryption value is called the paragraph encryption value;
  • Component encryption value the encrypted value obtained by encryption calculation based on at least one or more segment encryption values generated by the same component is called the component encryption value;
  • the component encryption information can be determined according to the component encryption value and the last transaction information block generated by the current component.
  • the component encryption information may include the entire content of the last generated transaction information block, or include the data part of the last generated transaction information block, or only include the available duration balance and the number of permitted nodes of the last generated transaction information block. Specifically, the component encryption information can be selected according to actual needs.
  • Root encrypted value Encrypted calculations are performed according to the encrypted values of different components or components of the same component, and the encrypted value obtained is called the root encrypted value.
  • the parent encryption value is the encrypted value obtained by encrypting the header information of the previous information block generated before the current information block.
  • an embodiment of the present application provides a method for monitoring software license information.
  • the method is applied to a server, and the method includes:
  • the server generates a transaction information block every specified time period.
  • the transaction information block of the software to be protected is generated every specified time period, the transaction information block includes license information, and the license information includes the available time balance of the software to be protected when the transaction information block is generated.
  • the server needs to monitor the time when the software is permitted to use and the nodes that are permitted to use information.
  • these software monitored by the server are called software to be protected, and the software to be protected may be multiple components included in the software, or may be independently used software.
  • the software to be protected including component 1 and component 2 as an example, if the specified duration is 1 day, one transaction information block is generated for component 1 and one transaction information block is generated for component 2 every day.
  • the license information also includes the number of license nodes.
  • the transaction information block may also include other information. For details, please refer to Figure 1.
  • S702 The server calculates the root encryption value according to the generated transaction information block.
  • This step can be specifically implemented as follows: the server uses a preset encryption algorithm to calculate the permission information of each transaction information block according to the generated one or more transaction information blocks, and obtains the encrypted value of each transaction information block respectively. Then, the component encryption value is calculated according to the preset encryption algorithm and the encryption value of the one or more transaction information blocks, and the component encryption value is calculated by using the preset encryption algorithm to obtain the root encryption value.
  • the server calculates the root encryption value based on the one transaction information block. If it is not the first day when the user is authorized to use the software to be protected, the server calculates the root encryption value based on the multiple transaction information blocks that have been generated.
  • the encryption values involved in the embodiments of the present application may all be hash values.
  • the permission information of the transaction information block includes the available time balance.
  • other information in the data section in Figure 3 can also be included.
  • the hash operation is performed on the data part of each transaction information block, and the hash value of each transaction information block can be obtained.
  • the hash operation is performed according to the hash value of each transaction information block that has been generated to obtain the component hash value, and the root hash value can be calculated according to the hash algorithm and the component hash value. For example, if the hash values of the five transaction information blocks are 101, 102, 103, 104, 105, then the five hash values can be spliced to obtain 101102103104105, and the value can be hashed to obtain the component hash value.
  • the component hash value of each component can be calculated according to the hash value of the transaction information block of each component. Then, the component hash value of each component is spliced, and then the hash operation is performed to obtain the root hash value.
  • the calculation process can be referred to the description of Fig. 2 above. By calculating the root hash value, the hash tree shown in Fig. 3 can be obtained.
  • S703 The server obtains the header information of the previous information block generated before the information block that needs to be generated currently.
  • the current is the 60th day of using the software to be protected, that is, the 60th information block needs to be generated currently, and the previous information block is the information block generated on the 59th day.
  • the header information of the previous information block may include the root encryption value and parent encryption value of the previous information block.
  • the header information may also include other data. For details, refer to FIG. 5.
  • S704 The server calculates the parent encryption value based on the obtained header information of the last information block.
  • the previous information block is the 59th information block
  • the hash value of the header information of the block is the parent hash value of the 60th information block.
  • the parent hash value will be stored in the header information of the 60th information block.
  • the execution sequence between S702 and S703-S704 is not limited. That is, the root encryption value can be calculated first, or the parent encryption value can be calculated first, or both can be calculated at the same time.
  • S705 The server generates an information block.
  • the information block may include a root encryption value and a transaction list, and the transaction list includes transaction information blocks generated in sequence.
  • the server needs to generate the header information, data part and transaction list of the information block respectively.
  • the header information may also include the encrypted value of the information chain. Based on this, the process of generating information blocks includes:
  • the data part of the information block includes the available time balance of the software to be protected. Calculate the encrypted value of the information block according to the data part of the information block, and add the encrypted value of the information block to the header information of the information block. For example, if the available time balance of the software to be protected included in the data part of the information block is 10 days, then 10 can be encrypted to obtain the encrypted value of the information block.
  • the data part of the information block may specifically be the component hash information in the hash tree of FIG. 2.
  • the hash value of the information block can be obtained.
  • the information block as shown in FIG. 3 can be generated.
  • the server adds the information block to the information chain, and the information chain includes information blocks generated in sequence.
  • the information block can be added to the end of the information chain.
  • the information chain is serialized and encrypted and stored.
  • the above-mentioned method provided by the present disclosure can be used in a distributed cluster system. If the server has a backup node, the server can send the information block to the backup node of the server after each generation of the information block;
  • the information block generated above can also be cached by additionally setting a cache space. Therefore, the server can also send the information block to the external cache every time the information block is generated.
  • the backup information chain of the information chain can be formed in the backup node and/or the external cache.
  • the server can compare the information chain stored by itself with the backup information chain in the backup node and/or the external cache to determine whether the information chain has been modified, thereby improving the security of the information chain.
  • the server 2 and the server 3 are the backup nodes of the server 1.
  • the information block can be sent to the server 2 and the server 3.
  • the server needs to determine the available time balance of the software to be protected when generating the transaction information block, and the available time balance of the software to be protected can be determined by the following steps:
  • Step 1 The server obtains the current system time and the effective time of the software to be protected.
  • Step 2 The server determines the used time of the software to be protected according to the difference between the current system time and the effective time of the software to be protected.
  • Step 3 The server determines the available time balance of the software to be protected according to the difference between the total available time of the software to be protected and the used time.
  • the effective time of the software to be protected is April 1, 2020, and the effective time can be the time when the software to be protected is registered for the first time.
  • the system time of the current server is April 20, 2020.
  • the total available time of the software to be protected is If the duration is 30 days, it can be determined that the software to be protected has been used for 20 days, and the available duration balance is 10 days.
  • the available time balance of each component is determined separately.
  • the method for the server to determine the available time balance of the component is to obtain the current system time and the effective time of the component, and determine the used time of the component according to the difference between the current system time and the effective time of the component. Then, according to the difference between the total available time of the component and the used time, the available time balance of the component is determined.
  • the embodiment of the present disclosure also provides a method for monitoring software license information, which is applied to a server. As shown in Figure 8, the method includes:
  • S801 The server calculates a root encryption value according to each transaction information block included in the transaction list of the information block to be verified.
  • the information block to be verified is an information block that has been stored in the information chain.
  • the information block to be verified is the last information block that has been generated currently.
  • the information block to be verified in the information block may be verified once every hour; or, every five information blocks are generated.
  • the frequency of checking is not limited to the above embodiments, and can be set according to the actual situation, which is not limited in the embodiment of the present application.
  • the server uses a preset encryption algorithm to calculate the permission information of each transaction information block to obtain the encrypted value of each transaction information block. Then the server calculates the component encryption value according to the preset encryption algorithm and the encryption value of the one or more transaction information blocks. Then use the preset encryption algorithm to calculate the component encryption value to obtain the root encryption value.
  • the server calculates the component encryption value according to the preset encryption algorithm and the encryption value of one or more transaction information blocks, which can be specifically implemented as follows: in the transaction list of the information block to be verified by the server, every preset number of consecutive transaction information Block, using a preset encryption algorithm to calculate the encrypted value of a preset number of consecutive transaction information blocks to obtain the encrypted value of the paragraph. Then, a preset encryption algorithm is used to calculate at least one segment encryption value obtained by calculation to obtain a component encryption value.
  • the method of calculating the root encrypted value in this step is the same as the method of calculating the root encrypted value in the process of generating the information block.
  • the method of calculating the root encrypted value in this step is the same as the method of calculating the root encrypted value in the process of generating the information block.
  • the server compares the calculated root encryption value with the root encryption value stored in the information block to be verified.
  • the calculated root encryption value should be the same as the root encryption value stored in the information block to be verified. If the permission information included in the information block to be verified is tampered with, the calculated root encryption value will be different from the root encryption value stored in the information block to be verified.
  • the verification of the information block to be verified can be completed through the root encryption value.
  • the encrypted value is verified on the information block to be verified. Since the parameters used in the above three verification processes are different, the embodiment of the present application does not limit the execution sequence between S801-S802, S803-S805, and S806-S807. In FIG. 8, the sequential execution of S801 to S807 is taken as an example.
  • S803 The server obtains the header information of the previous information block of the information block to be verified.
  • the last information block of the information block to be verified is: the last information block generated before the information block to be verified is generated.
  • the header information of the previous information block may include the root encryption value and/or the parent encryption value, and optionally, may also include other information in the header information of the information block shown in FIG. 3.
  • S804 The server calculates an encryption value based on the acquired header information of the last information block.
  • the method of calculating the encrypted value in this step is the same as the method of calculating the parent encrypted value when the information block to be verified is generated.
  • the relevant description in the foregoing embodiment may be referred to, and details are not repeated here.
  • S805 The server compares the encrypted value calculated based on the header information of the previous information block with the parent encrypted value stored in the information block to be verified.
  • the method of calculating the encrypted value in this step is the same as the method of calculating the parent encrypted value when the information block to be verified is generated, so if the header information of the previous information block of the stored information block to be verified includes any If the information is tampered with, the calculated encrypted value will be different from the parent encrypted value stored in the information block to be verified.
  • the information block to be verified is information block 50
  • the previous information block of the information block to be verified is information block 49.
  • the header information of the information block 50 to be verified includes a parent encrypted value
  • the parent encrypted value is an encrypted value calculated based on the header information of the information block 49 when the information block 50 is generated.
  • the server can obtain the header information of the information block 49, and perform encryption calculation on the header information of the information block 49 obtained at this time, and calculate an encrypted value.
  • S806 The server calculates the encryption value of the information block to be verified according to the data part of the information block to be verified.
  • the data portion of the information block to be verified may include license information of the software to be protected when the information block to be verified is generated. If the software to be protected includes multiple components, the data part of the information block to be verified includes the license information of each component.
  • the method of calculating the encrypted value of the information block to be verified in this step is the same as the method of calculating the encrypted value of the information block to be verified when the information block to be verified is generated. I won't repeat it here.
  • the server compares the calculated encryption value of the information block to be verified with the encrypted value of the information block to be verified stored in the information block to be verified.
  • S808 The server determines whether the license information of the software to be protected has been tampered with according to the comparison result.
  • the encryption value of the transaction information block will change, and the root encryption value will change.
  • the root encryption value is recalculated based on the transaction list included in the information block to be verified. If the calculated root encryption value is different from the root encryption value stored in the information block to be verified, the value of the software to be protected can be determined.
  • the license information has been tampered with. It can be seen that the tampering of the license information by the tamper is easy to be found, and the tampering is relatively difficult, and the security of the license information of the software to be protected is improved without using the hardware information of the host.
  • each information block in the information chain includes an encrypted value calculated based on the header information of the previous information block, that is, each information block has a parent encrypted value, if the tamper wants the tampering not to be discovered, he needs to It is very difficult to modify the parent encrypted value included in each information block. Therefore, with this method, the security of the license information of the software to be protected can be improved.
  • the data part of the information block to be verified will be changed, and the calculated encrypted value of the information block to be verified will be the same as that stored in the information block to be verified.
  • the encryption value of the check information block is different.
  • the tamperer does not know the encryption algorithm used in the embodiment of the present application, it is difficult to tamper with the encrypted value of the information block to be verified. Therefore, by comparing the calculated encrypted value of the information block to be verified with the stored encrypted value of the information block to be verified, it can be determined whether the license information has been tampered with, which improves the security of the license information.
  • another method for monitoring permission information is also provided, and the method specifically includes:
  • the server compares, in the transaction list included in the information block to be verified, whether the available time balance included in each transaction information block is less than the available time balance included in the previous transaction information block. According to the comparison result, it is determined whether the available time balance of the software to be protected has been tampered with.
  • the pre-order information block of a transaction information block refers to the last transaction information block generated before the transaction information block. For example, if one transaction information block is generated every day, the available time balance in each transaction information block included in the transaction list is sequentially decreased. Assuming that the transaction list includes transaction information block 1 to transaction information block 3, compare whether the available time balance included in transaction information block 2 is 1 day less than the available time balance included in transaction information block 1, and the available time included in transaction information block 3 Whether the balance is 1 day less than the available time balance included in the transaction information block 2.
  • the available duration balance included in the transaction information block 3 is 27 and the available duration balance included in the transaction information block 2 is 20, it can be determined that the available duration balance included in the transaction information block 3 has been tampered with.
  • another method for monitoring permission information is also provided, and the method includes:
  • the server obtains the newly generated information block in the backup information chain from the backup node and/or external cache, and compares the information block obtained from the backup node and/or external cache with the information block to be verified, and according to the comparison result Determine whether the license information of the software to be protected has been tampered with.
  • the server 2 and the server 3 are backup nodes.
  • the server 2 can obtain the newly generated information block in the information chain backed up by the server 3, such as the information block 60.
  • the server 2 compares the information block 60 stored by itself with the acquired information block 60, and if the two are not consistent, it is determined that the license information in the server 2 and/or the server 3 has been tampered with.
  • the server 2 can obtain the information block 60 from the external cache, and compare the information block 60 stored by itself with the information block 60 obtained from the external cache. If the two are consistent, the information block 60 stored in the server 2 is described. No tampering; if the two are inconsistent, it means that the information block 60 stored in the server 2 has been tampered with, and the server 2 can replace the information block 60 stored by itself with the information block 60 obtained from the external cache.
  • the server 2 may obtain the entire information chain from the external cache, and replace the information chain stored by itself with the information chain obtained from the external cache, thereby completing the modification of the tampered permission information.
  • each license device can determine the primary node and the backup node through the election mechanism.
  • the master node loads the information chain stored locally encrypted and serialized. If the information chain exists, it means that it is not the first time to start the information chain. If the information chain does not exist, it is judged whether the software to be protected is newly deployed software.
  • the master node obtains the genesis block information from the message queue and obtains the total available time of each component included in the software to be protected and the number of licensed nodes from the license server of the distributed cluster system.
  • the genesis block information can be pre-configured in the message queue. After the master node reads the genesis block information from the message queue, the genesis block information will be deleted from the message queue. After the user purchases the right to use the software to be protected, the total available time of each component included in the software to be protected and the number of licensed nodes will be stored in the license server. If the user renews the fee to extend the use period and/or add license nodes Number, the total available time of the software to be protected and/or the number of licensed nodes stored in the license server is also updated accordingly.
  • the master node obtains the existing information chain from the external cache.
  • the master node starts to execute the timing task.
  • the timing task can trigger the master node to interact with the license server through a heartbeat message every 5 minutes to obtain the latest total available time of the software to be protected and the number of licensed nodes to ensure its own use The total available time of each component and the accuracy of the number of licensed nodes.
  • the timing task can also trigger the master node to generate a transaction information block for each component every day. Generate an information block based on the generated transaction information block, and send the information block to the backup node.
  • the master node may also directly send the information block to the external cache of the master node.
  • the external cache refers to other cache space inside the master node, and the cache space is used to back up the information block.
  • the master node can use unicast or broadcast to send information blocks to the backup node and the external cache.
  • the backup node and the external cache can obtain the information block from the message queue and add the information block to the backup information chain.
  • the backup node and external cache are omitted in Figure 9 The process of obtaining the information block.
  • the master node After the master node generates the information block, it also adds the information block to the locally stored information chain to complete the serialized and encrypted storage of the information block.
  • the process of adding the information block to the locally stored information chain is omitted in Figure 9.
  • the information block is verified through a timed task.
  • the backup node can verify the information block every 1 hour.
  • the backup node checks the system time for tampering.
  • the backup node can obtain the transaction list in the information block to be verified, and compare whether the available time balance included in each transaction information block in the transaction list is less than the available time balance included in the previous transaction information block. If it is not less than, the verification result is determined to be abnormal, indicating that the available time balance in the transaction information block may be incorrect due to the tampering of the system time. If it is determined that the verification result is abnormal, the abnormal situation is broadcast, so that the master node and other backup nodes can learn the abnormal situation according to the received broadcast message.
  • Integrity check refers to recalculating the root hash value, parent hash value and hash value of the information block according to the transaction list included in the information block to be verified, respectively, and the information stored in the information block.
  • the root hash value, the parent hash value, and the hash value of the information block are compared. If any one is different, it is determined that the permission information has been tampered with, that is, the verification result is abnormal. Then broadcast the abnormal situation.
  • Consistency check refers to checking whether the information block to be verified stored in the primary node and each backup node is the same, and whether the information block to be verified stored in the primary node and each backup node is the same as the information to be verified in the external cache Whether the blocks are the same. If there are different conditions, it is said that the verification is abnormal, that is, the information block to be verified in the primary node or the backup node has been tampered with. Then broadcast the abnormal situation.
  • Both the primary node and the backup node can perform memory maintenance. That is, the master node and the backup node can obtain the abnormal condition of the information block to be verified from the message queue, and can obtain the correct information chain from the external cache through the consistency fault-tolerant algorithm, and complete the update of the locally stored information chain.
  • the master node and/or backup node can also provide the business service device with the license information of each component through the API gateway. If the license information provided to the business service device is determined to be tampered with, it can also be notified through the API gateway The business service device sends correct license information to the business service device through the API gateway, so that the business service device performs license control on each component of the software to be protected according to the correct license information.
  • the foregoing method for monitoring software license information can be used to protect the information to be protected from being tampered with from the following aspects.
  • Aspect 1 If the system time is adjusted forward, the available time balance in the newly generated transaction information block becomes longer.
  • the embodiment of the present application can compare the available duration balance in the transaction information block with the available duration balance in the preceding transaction information block in the transaction list. If the available time balance in the current transaction information block is greater than the available time balance in the previous information block, the system time can be corrected in time to store the correct transaction information block. In addition, if the system time is adjusted forward, the time stamp in the newly generated transaction information block will also be smaller than the time stamp in the last transaction information block, so the tampering method of adjusting the system time forward can easily be avoided.
  • Aspect 2 If the available duration balance in the transaction information block of a certain component of the software to be protected is tampered with, it will cause the hash value of the transaction information block to change, which in turn will lead to the hash value and root hash value of the information block Changes occur, so by recalculating the hash value and root hash value of the information block, the tampering will be discovered, making the available time balance after the tampering fail to take effect.
  • Aspect 3 If the component hash information included in the information block is tampered with, the root hash value will change. In addition, the hash value of the information block included in the header information of the information block is generated based on the component hash information of each component. If the component hash information is tampered with, the header information of the information block will also change.
  • the parent hash value is the hash value of the header information of the current information block. Therefore, if the component hash information of the current information block is tampered, the header information of the current information block is changed, and the parent hash value included in the next information block will be incorrect. If you want to make the tampering effective, you need to further tamper with the parent hash value included in each subsequent information block, which is more difficult to implement. If it is impossible to modify each subsequent information block, the tampering of the component's hash information cannot take effect.
  • the genesis block in the information chain can only be generated once based on the pre-configured genesis block information, the genesis block cannot be modified, and the information chain is also serialized and encrypted and stored. If it is not decrypted, It cannot be modified directly, which further ensures the security of the license information.
  • the information chain stored in a server is tampered with, it can also be verified through the backup node and the information chain stored in the external cache, that is, as long as the information chain in the external cache has not been tampered with, the information chain of any server All tampering can be found and corrected.
  • an embodiment of the present application also provides a monitoring device for software license information.
  • the monitoring device for software license information that is, the license device referred to in the previous embodiment, can be configured in a server Specifically, as shown in Figure 10, the device includes:
  • the generating module 1001 is used to generate transaction information blocks every specified time length, the transaction information blocks include license information, and the license information includes the available time balance of the software to be protected when the transaction information blocks are generated;
  • the calculation module 1002 is used to calculate the root encryption value according to the generated transaction information block
  • the generating module 1001 is also used to generate an information block, the information block includes a root encryption value and a transaction list, and the transaction list includes transaction information blocks generated in order;
  • the storage module 1003 is used to add information blocks to the information chain, and the information chain includes information blocks generated in sequence.
  • the generating module 1001 is specifically configured to determine the available time balance of the software to be protected through the following steps:
  • the available time balance of the software to be protected is determined.
  • the device further includes:
  • the broadcast module is used to broadcast the information block to the backup node and/or external cache of the server to form a backup information chain of the information chain in the backup node and/or external cache.
  • the information block includes header information, and the header information includes the root encryption value and the parent encryption value;
  • the calculation module 1002 is also used for:
  • the parent encryption value is calculated based on the obtained header information of the last information block.
  • the generating module 1001 is specifically used for:
  • the data part includes the current available time balance of the software to be protected
  • calculation module 1002 is specifically configured to:
  • a preset encryption algorithm is used to calculate the permission information of each transaction information block to obtain the encrypted value of each transaction information block;
  • a preset encryption algorithm is used to calculate the encrypted value of the component to obtain the root encrypted value.
  • an embodiment of the present application also provides a monitoring device for software license information.
  • the monitoring device for software license information that is, the license device referred to in the previous embodiment, can be configured in a server.
  • the license information of the software to be protected is stored in the form of an information chain;
  • the information chain includes information blocks established in order, including transaction lists and root encryption values; among them, the transaction list includes transaction information blocks generated in sequence, the transaction information blocks include permission information, and the permission information includes when the transaction information block is generated.
  • the available time balance of the software to be protected, and the root encryption value is obtained by encrypting the license information.
  • the device includes:
  • the calculation module 1101 is configured to calculate the root encryption value according to each transaction information block included in the transaction list of the information block to be verified;
  • the verification module 1102 is configured to compare the calculated root encryption value with the root encryption value stored in the information block to be verified; determine whether the license information of the software to be protected has been tampered with according to the comparison result.
  • the information block includes header information, and the header information includes a root encryption value and a parent encryption value; wherein the parent encryption value is generated based on the header information of the previous information block generated before the current information block Encrypted value; the device also includes:
  • the obtaining module is used to obtain the header information of the previous information block of the information block to be verified;
  • the calculation module 1101 is further configured to calculate an encryption value based on the obtained header information of the previous information block;
  • the verification module 1102 is also used to compare the encrypted value calculated based on the header information of the previous information block with the parent encrypted value stored in the information block to be verified; determine whether the license information of the software to be protected is based on the comparison result Has been tampered with.
  • the header information of the information block also includes the encrypted value of the information block, the encrypted value of the information block is an encrypted value calculated according to the data part of the information block, and the data part of the information block includes the time when the information block is generated. License information of the software to be protected;
  • the calculation module 1101 is further configured to calculate the encryption value of the information block to be verified according to the data part of the information block to be verified;
  • the verification module 1102 is also used to compare the calculated encryption value of the information block to be verified with the encrypted value of the information block to be verified stored in the information block to be verified; determine the license of the software to be protected according to the comparison result Whether the information has been tampered with.
  • calculation module 1101 is specifically configured to:
  • a preset encryption algorithm is used to calculate the permission information of each transaction information block to obtain the encrypted value of each transaction information block respectively;
  • a preset encryption algorithm is used to calculate the encrypted value of the component to obtain the root encrypted value.
  • calculation module 1101 is specifically configured to:
  • the preset encryption algorithm For each preset number of consecutive transaction information blocks in the transaction list of the information block to be verified, the preset encryption algorithm is used to calculate the encryption value of the preset number of consecutive transaction information blocks to obtain the paragraph encryption value;
  • a preset encryption algorithm is used to calculate at least one segment encryption value obtained by calculation to obtain a component encryption value.
  • the verification module 1102 is also used for:
  • the acquiring module is also used to acquire the newly generated information block in the backup information chain from the backup node and/or the external cache;
  • the verification module 1102 is also used to compare the information block obtained from the backup node and/or the external cache with the information block to be verified; and determine whether the license information of the software to be protected has been tampered with according to the comparison result.
  • the embodiment of the present application also provides a server, as shown in FIG. 12, including a processor 1201, a communication interface 1202, a memory 1203, and a communication bus 1204, where the processor 1201, the communication interface 1202, and the memory 1203 complete the communication bus 1204.
  • a server as shown in FIG. 12, including a processor 1201, a communication interface 1202, a memory 1203, and a communication bus 1204, where the processor 1201, the communication interface 1202, and the memory 1203 complete the communication bus 1204.
  • the memory 1203 is used to store computer programs
  • the processor 1201 is configured to implement the steps of the method for monitoring any software license information described above when executing the program stored in the memory 1203.
  • the communication bus mentioned by the server may be a Peripheral Component Interconnect (PCI) bus or an Extended Industry Standard Architecture (EISA) bus.
  • PCI Peripheral Component Interconnect
  • EISA Extended Industry Standard Architecture
  • the communication bus can be divided into address bus, data bus, control bus and so on. For ease of representation, only one thick line is used in the figure, but it does not mean that there is only one bus or one type of bus.
  • the communication interface is used for communication between the above-mentioned server and other devices.
  • the memory may include random access memory (Random Access Memory, RAM), and may also include non-volatile memory (Non-Volatile Memory, NVM), such as at least one disk storage.
  • NVM non-Volatile Memory
  • the memory may also be at least one storage device located far away from the foregoing processor.
  • the above-mentioned processor can be a general-purpose processor, including a central processing unit (CPU), a network processor (Network Processor, NP), etc.; it can also be a digital signal processor (Digital Signal Processing, DSP), a dedicated integrated Circuit (Application Specific Integrated Circuit, ASIC), Field-Programmable Gate Array (Field-Programmable Gate Array, FPGA) or other programmable logic devices, discrete gates or transistor logic devices, discrete hardware components.
  • CPU central processing unit
  • NP Network Processor
  • DSP Digital Signal Processing
  • ASIC Application Specific Integrated Circuit
  • FPGA Field-Programmable Gate Array
  • FPGA Field-Programmable Gate Array
  • a computer-readable storage medium stores a computer program, which when executed by a processor, realizes any of the above software license information The steps of the monitoring method.
  • a computer-readable storage medium stores a computer program, and when the computer program is executed by a processor, it realizes any of the above-mentioned software license information. The steps of the monitoring method.
  • the computer program product includes one or more computer instructions.
  • the computer may be a general-purpose computer, a special-purpose computer, a computer network, or other programmable devices.
  • the computer instructions may be stored in a computer-readable storage medium, or transmitted from one computer-readable storage medium to another computer-readable storage medium. For example, the computer instructions may be transmitted from a website, computer, server, or data center.
  • the computer-readable storage medium may be any available medium that can be accessed by a computer or a data storage device such as a server or a data center integrated with one or more available media.
  • the usable medium may be a magnetic medium (for example, a floppy disk, a hard disk, and a magnetic tape), an optical medium (for example, a DVD), or a semiconductor medium (for example, a solid state disk (SSD)).

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本申请实施例提供一种软件许可信息的监控方法、装置、服务器及存储介质,涉及软件管理技术领域。本申请实施例的方案包括:每隔指定时长生成交易信息块,交易信息块包括许可信息,许可信息包括生成交易信息块时所述待保护软件的可用时长余额,根据已生成的交易信息块计算根加密值。然后生成信息块,信息块包括所述根加密值和交易列表,交易列表包括按照顺序生成的交易信息块。将信息块加入信息链,信息链包括依照顺序生成的信息块。采用该方法可以避免软件许可信息被篡改生效,提高安全性。

Description

软件许可信息的监控方法、装置、服务器及存储介质 技术领域
本申请涉及软件管理技术领域,特别是涉及一种软件许可信息的监控方法、装置、服务器及存储介质。
背景技术
商业软件一般都需要许可(License)控制,从而限制用户对商业软件的使用权限。License控制是指通过License信息控制用户在自身的权限内使用软件,软件的许可License信息可以包括软件的生效时刻、合法使用时长和许可节点数量。
合法使用时长是指用户可合法使用软件的时长,比如60天、365天等,当用户使用该软件超过合法使用时长后,软件功能将受限或不可用。许可节点数量为可以使用该软件的节点的最大数量。比如若用户够买了一年的软件网关的使用权限,该软件网关最多允许100个路由器接入,则该软件网关的合法使用时长为365天,许可节点数量为100个。当软件网关中已接入100个路由器时,若再有新的路由器请求接入该软件网关,则拒绝该路由器的接入请求。
License控制主要是为了避免License信息被篡改,目前的License控制方法为:在软件部署时,获取软件所在主机的硬件信息,该硬件信息包括但不限于主机的网卡媒体访问控制(Media Access Control,MAC)地址、硬盘序列号。然后根据硬件信息生成密钥,通过该密钥对License信息进行加密,形成密文。在软件运行过程中,解密该密文从而获取License信息,依据获取到的License信息进行license控制。
然而,对License信息的加密依赖于主机的硬件信息,若主机为虚拟机或者主机处于容器化场景下,获主机的硬件信息将比较困难,难以有效保护License信息。另外即使可以获取到主机的硬件信息,并使用该硬件信息进行加密,若篡改者也获取到主机的硬件信息,则可对密文进行解密,License信息存在被篡改的风险,安全性较差。
发明内容
本申请实施例的目的在于提供一种软件许可信息的监控方法、装置、服务器及存储介质,以避免License信息被篡改生效,提高安全性。具体技术方案如下:
第一方面,本申请实施例提供一种软件许可信息的监控方法,应用于服务器,所述方法包括:
每隔指定时长生成交易信息块,所述交易信息块包括许可信息,所述许可信息包括生成所述交易信息块时所述待保护软件的可用时长余额;
根据已生成的交易信息块计算根加密值;
生成信息块,所述信息块包括所述根加密值和交易列表,所述交易列表包括按照顺序生成的交易信息块;
将所述信息块加入信息链,所述信息链包括依照顺序生成的信息块。
在一种可能的实现方式中,所述待保护软件的可用时长余额通过以下步骤确定:
获取当前系统时间和所述待保护软件的生效时间;
根据所述当前系统时间与所述待保护软件的生效时间之间的差值,确定所述待保护软件的已使用时长;
根据所述待保护软件的可用总时长与所述已使用时长的差值,确定所述待保护软件的可用时长余额。
在一种可能的实现方式中,在所述生成信息块之后,所述方法还包括:
向所述服务器的备份节点和/或外部缓存广播所述信息块,以在所述备份节点和/或所述外部缓存中形成所述信息链的备份信息链。
在一种可能的实现方式中,所述信息块中包括头部信息,所述头部信息包括所述根加密值和父加密值;
所述方法还包括:
获取在所述信息块之前生成的上一个信息块的头部信息;
基于获取到的所述上一个信息块的头部信息计算所述父加密值。
在一种可能的实现方式中,所述生成信息块,包括:
生成所述信息块的数据部分,所述数据部分包括当前所述待保护软件的 可用时长余额;
根据所述信息块的数据部分计算所述信息块的加密值;
将所述信息块的加密值加入所述信息块的头部信息。
在一种可能的实现方式中,所述根据已生成的交易信息块计算根加密值,包括:
根据已生成的一个或多个交易信息块,采用预设加密算法对每一个交易信息块的许可信息进行计算,分别得到每一个交易信息块的加密值;
根据所述预设加密算法以及所述一个或多个交易信息块的加密值计算得到组件加密值;
采用所述预设加密算法对所述组件加密值进行计算,得到所述根加密值。
第二方面,本申请提供一种软件许可信息的监控方法,应用于服务器,待保护软件的许可信息以信息链的形式存储;
所述信息链包括依照顺序建立的信息块,所述信息块中包括交易列表和根加密值;其中,所述交易列表包括按照顺序生成的交易信息块,所述交易信息块中包括许可信息,所述许可信息包括生成所述交易信息块时所述待保护软件的可用时长余额,所述根加密值是根据所述许可信息加密得到的;
所述方法包括:
根据待校验信息块的交易列表包括的各交易信息块计算根加密值;
将计算得到的根加密值与所述待校验信息块中存储的根加密值进行比较;
根据比较结果确定所述待保护软件的许可信息是否被篡改。
在一种可能的实现方式中,所述信息块中包括头部信息,所述头部信息包括根加密值和父加密值;其中,所述父加密值为根据在当前信息块之前生成的上一个信息块的头部信息生成加密值;所述方法还包括:
获取所述待校验信息块的上一个信息块的头部信息;
基于获取到的上一个信息块的头部信息计算加密值;
将基于上一个信息块的头部信息计算得到的加密值,与所述待校验信息块中存储的父加密值进行比较;
根据比较结果确定所述待保护软件的许可信息是否被篡改。
在一种可能的实现方式中,所述信息块的头部信息中还包括所述信息块 的加密值,所述信息块的加密值为根据所述信息块的数据部分计算得到的加密值,所述信息块的数据部分包括生成所述信息块时所述待保护软件的许可信息;
所述方法还包括:
根据所述待校验信息块的数据部分计算所述待校验信息块的加密值;
将计算得到的所述待校验信息块的加密值,与所述待校验信息块中存储的所述待校验信息块的加密值进行比较;
根据比较结果确定所述待保护软件的许可信息是否被篡改。
在一种可能的实现方式中,所述根据所述待校验信息块中的交易列表包括的各交易信息块的许可信息计算根加密值,包括:
针对所述待校验信息块中的交易列表包括的一个或多个交易信息块,采用预设加密算法对每一个交易信息块的许可信息进行计算,分别得到每一个交易信息块的加密值;
根据所述预设加密算法以及所述一个或多个交易信息块的加密值计算得到组件加密值;
采用所述预设加密算法对所述组件加密值进行计算,得到根加密值。
在一种可能的实现方式中,所述根据所述预设加密算法以及所述一个或多个交易信息块的加密值计算组件加密值,包括:
针对待校验信息块的交易列表中,每预设数量个连续的交易信息块,采用所述预设加密算法,对所述预设数量个连续的交易信息块的加密值进行计算,得到段落加密值;
采用所述预设加密算法,对计算得到的至少一个段落加密值进行计算,得到所述组件加密值。
在一种可能的实现方式中,所述方法还包括:
比较所述待校验信息块包括的交易列表中,每一个交易信息块包括的可用时长余额是否小于前序交易信息块包括的可用时长余额;
根据比较结果确定所述待保护软件的可用时长余额是否被篡改。
在一种可能的实现方式中,所述方法还包括:
从备份节点和/或外部缓存中获取备份的信息链中最新生成的信息块;
将从备份节点和/或外部缓存中获取到的信息块,与所述待校验信息块进行比较;
根据比较结果确定所述待保护软件的许可信息是否被篡改。
第三方面,本申请提供一种软件许可信息的监控装置,应用于服务器,所述装置包括:
生成模块,用于每隔指定时长生成交易信息块,所述交易信息块包括许可信息,所述许可信息包括生成所述交易信息块时所述待保护软件的可用时长余额;
计算模块,用于根据已生成的交易信息块计算根加密值;
所述生成模块,还用于生成信息块,所述信息块包括所述根加密值和交易列表,所述交易列表包括按照顺序生成的交易信息块;
存储模块,用于将所述信息块加入信息链,所述信息链包括依照顺序生成的信息块。
在一种可能的实现方式中,所述生成模块,具体用于通过以下步骤确定所述待保护软件的可用时长余额:
获取当前系统时间和所述待保护软件的生效时间;
根据所述当前系统时间与所述待保护软件的生效时间之间的差值,确定所述待保护软件的已使用时长;
根据所述待保护软件的可用总时长与所述已使用时长的差值,确定所述待保护软件的可用时长余额。
在一种可能的实现方式中,所述装置还包括:
广播模块,用于向所述服务器的备份节点和/或外部缓存广播所述信息块,以在所述备份节点和/或所述外部缓存中形成所述信息链的备份信息链。
在一种可能的实现方式中,所述信息块中包括头部信息,所述头部信息包括所述根加密值和父加密值;
所述计算模块,还用于:
获取在所述信息块之前生成的上一个信息块的头部信息;
基于获取到的所述上一个信息块的头部信息计算所述父加密值。
在一种可能的实现方式中,所述生成模块,具体用于:
生成所述信息块的数据部分,所述数据部分包括当前所述待保护软件的可用时长余额;
根据所述信息块的数据部分计算所述信息块的加密值;
将所述信息块的加密值加入所述信息块的头部信息。
在一种可能的实现方式中,所述计算模块,具体用于:
根据已生成的一个或多个交易信息块,采用预设加密算法对每一个交易信息块的许可信息进行计算,分别得到每一个交易信息块的加密值;
根据所述预设加密算法以及所述一个或多个交易信息块的加密值计算得到组件加密值;
采用所述预设加密算法对所述组件加密值进行计算,得到所述根加密值。
第四方面,本申请实施例提供一种软件许可信息的监控装置,应用于服务器,待保护软件的许可信息以信息链的形式存储;
所述信息链包括依照顺序建立的信息块,所述信息块中包括交易列表和根加密值;其中,所述交易列表包括按照顺序生成的交易信息块,所述交易信息块中包括许可信息,所述许可信息包括生成所述交易信息块时所述待保护软件的可用时长余额,所述根加密值是根据所述许可信息加密得到的;
所述装置包括:
计算模块,用于根据待校验信息块的交易列表包括的各交易信息块计算根加密值;
校验模块,用于将计算得到的根加密值与所述待校验信息块中存储的根加密值进行比较;根据比较结果确定所述待保护软件的许可信息是否被篡改。
在一种可能的实现方式中,所述信息块中包括头部信息,所述头部信息包括根加密值和父加密值;其中,所述父加密值为根据在当前信息块之前生成的上一个信息块的头部信息生成加密值;所述装置还包括:
获取模块,用于获取所述待校验信息块的上一个信息块的头部信息;
所述计算模块,还用于基于获取到的上一个信息块的头部信息计算加密值;
所述校验模块,还用于将基于上一个信息块的头部信息计算得到的加密值,与所述待校验信息块中存储的父加密值进行比较;根据比较结果确定所 述待保护软件的许可信息是否被篡改。
在一种可能的实现方式中,所述信息块的头部信息中还包括所述信息块的加密值,所述信息块的加密值为根据所述信息块的数据部分计算得到的加密值,所述信息块的数据部分包括生成所述信息块时所述待保护软件的许可信息;
所述计算模块,还用于根据所述待校验信息块的数据部分计算所述待校验信息块的加密值;
所述校验模块,还用于将计算得到的所述待校验信息块的加密值,与所述待校验信息块中存储的所述待校验信息块的加密值进行比较;根据比较结果确定所述待保护软件的许可信息是否被篡改。
在一种可能的实现方式中,所述计算模块,具体用于:
针对所述待校验信息块中的交易列表包括的一个或多个交易信息块,采用预设加密算法对每一个交易信息块的许可信息进行计算,分别得到每一个交易信息块的加密值;
根据所述预设加密算法以及所述一个或多个交易信息块的加密值计算得到组件加密值;
采用所述预设加密算法对所述组件加密值进行计算,得到根加密值。
在一种可能的实现方式中,所述计算模块,具体用于:
针对待校验信息块的交易列表中,每预设数量个连续的交易信息块,采用所述预设加密算法,对所述预设数量个连续的交易信息块的加密值进行计算,得到段落加密值;
采用所述预设加密算法,对计算得到的至少一个段落加密值进行计算,得到所述组件加密值。
在一种可能的实现方式中,所述校验模块,还用于:
比较所述待校验信息块包括的交易列表中,每一个交易信息块包括的可用时长余额是否小于前序交易信息块包括的可用时长余额;
根据比较结果确定所述待保护软件的可用时长余额是否被篡改。
在一种可能的实现方式中,所述获取模块,还用于从备份节点和/或外部缓存中获取备份的信息链中最新生成的信息块;
所述校验模块,还用于将从备份节点和/或外部缓存中获取到的信息块,与所述待校验信息块进行比较;根据比较结果确定所述待保护软件的许可信息是否被篡改。
第五方面,本申请实施例还提供一种服务器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面所述的方法步骤。
第六方面,本申请实施例还提供一种服务器,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第二方面所述的方法步骤。
第七方面,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中所述的方法。
第八方面,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第二方面中所述的方法。
第九方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中所述的方法。
第十方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面中所述的方法。
采用上述技术方案,根加密值是根据已生成的各交易信息块包括的许可信息计算得到的,若任一交易信息块包括的许可信息被篡改,将导致根加密 值发生变化。本申请实施例中,根据待校验信息块的交易列表包括的各交易信息块计算根加密值,通过比较计算得到的根加密值与已存储的根加密值,即可确定许可信息是否被篡改。因为在生成根加密值时未使用硬件信息,所以只要篡改者不知道本申请实施例使用的加密算法,就难以对根加密值进行篡改。即使篡改者篡改了所有交易信息块中的信息,只要根加密值未被篡改,通过上述过程即可发现许可信息被篡改,进而可以避免使用被篡改的许可信息。所以通过上述软件许可信息的监控方法可以在不使用主机的硬件信息的前提下,提高软件的许可信息的安全性。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例和现有技术的技术方案,下面对实施例和现有技术中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种交易信息块的数据结构的示例性示意图;
图2为本申请实施例提供的一种哈希树的数据结构的示例性示意图;
图3为本申请实施例提供的一种信息块的数据结构的示例性示意图;
图4为本申请实施例提供的一种信息链的数据结构的示例性示意图;
图5为本申请实施例提供的一种分布式集群系统中各装置之间的关系示意图;
图6为本申请实施例提供的一种License装置实现读写功能的示例性示意图;
图7为本申请实施例提供的一种软件许可信息的监控方法的流程图;
图8为本申请实施例提供的另一种软件许可信息的监控方法的流程图;
图9为本申请实施例提供的软件许可信息的监控方法的示例性流程示意图;
图10为本申请实施例提供的一种软件许可信息的监控装置的结构示意图;
图11为本申请实施例提供的另一种软件许可信息的监控装置的结构示意图;
图12为本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本申请进一步详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在相关技术中,软件License信息一般通过硬件信息加密,如果软件所在的主机为物理机,则可以通过操作系统的相应功能收集物理机的硬件信息。如果软件所在的主机为虚拟机,由于虚拟机的硬件信息是虚拟的,可变的,因此需要虚拟机的厂商的虚拟化软件来收集虚拟机所在的物理机的硬件信息,若虚拟化软件不支持获取物理机的硬件信息的功能,则无法获取到物理机的硬件信息。
另外,若软件部署于容器中,由于容器的可移植性和动态性特点,所以软件所在的物理机容易发生变化。因此在容器化场景中,软件所在物理机的硬件信息将很难被获取到。因此,采用物理机的硬件信息对软件的license信息进行加密将难以实现。
目前,大型软件一般采用分布式集群的架构体系,license信息也将进行分部式保存,采用一个主机的硬件信息对license信息进行加密的方式不适用于分布式集群。所以,通过硬件信息对license信息进行保护的方式的使用场景受限,且安全性较差。
为了解决上述问题,本申请实施例提供了一种软件许可信息的监控方法。
由于软件的许可信息是比较敏感的数据,因此服务器需要对软件的许可信息进行监控,从而保证可以安装软件的许可信息不被篡改。
本公开以加密算法为哈希算法为例对公开涉及到的交易信息块、信息块和信息链的数据结构进行介绍。应当理解的是,加密算法并不仅仅局限于哈 希算法。例如,本公开还可以采用移位加密算法等其他加密算法计算加密值。
本公开所提供的软件许可信息的监控方法中,服务器针对待保护软件,可以每天根据软件的许可信息生成一个交易信息块。当然,生成交易信息块的频率也可以为两天生成一个交易信息块,或者一天生成两个交易信息块,对于交易信息块生成的频率并不加以限制。
(1)如图1所示,图1为本申请实施例中交易信息块的数据结构示意图。交易信息块包括头部信息和数据部分。
交易信息块的头部信息包括:交易信息块的序号和该交易信息块的哈希值。交易信息块的哈希值为利用该交易信息块的数据部分进行哈希运算得到的哈希值。
交易信息块的数据部分包括:可用时长余额。可用时长余额就是待保护软件被授权使用的剩余可用时间。
可选地,交易信息块的数据部分还可以包括:组件标识、时间戳、许可节点数量、随机数和保留字段中的至少一项。其中,由于软件组件也可以作为独立的软件产品,供开发或者消费者使用,因此可以利用组件标识表征生成的交易信息块是针对哪个组件生成的;时间戳为生成交易信息块时的系统时间;通过加入随机数,可以使得对计算交易信息块的加密或解密的方法更加复杂,提高了交易信息块的哈希值被篡改的难度,随机数可以为16位的随机数;保留字段用于后续对交易信息块的数据部分的内容进行扩充。
(2)在生成交易信息块之后,可基于已生成的交易信息块进行加密,得到由加密值组成的数据结构。
本实施例以加密算法采用的是哈希算法为例对本公开的方法中涉及到的概念加以说明。在加密算法采用哈希算法的情况下,则可以基于已生成的交易信息块生成哈希树。如图2所示,图2为本申请实施例中的哈希树的数据结构示意图。假设待保护软件包括两个组件,分别为组件1和组件2。图2中每个TX代表一个交易信息块的数据部分,或者每个TX代表一个交易信息块,假设当前组件1和组件2已被使用60天,则当前已为组件1生成了60个交易信息块,具体对应于图2上半部分的TX1至TX60;且当前已为组件2生成了60个交易信息块,具体对应于图2下半部分的TX1至TX60。
分别将每5个TX的哈希值进行拼接,然后将拼接结果进行哈希运算,可得到段落哈希值。
然后将同一个组件对应的各段落哈希值进行拼接,再进行哈希运算,得到组件哈希值。
以组件1为例,将TX1-TX5的哈希值拼接,再进行哈希计算,得到TX1-TX5段落哈希值,详见图2中的Hash(1-5)。并计算TX6-TX10对应的段落哈希值,TX10-TX15对应的段落哈希值,直至计算到TX56-TX60的段落哈希值,可以得到组件1的12个段落哈希值。
将组件1的12个段落哈希值进行拼接,再进行哈希运算,得到组件1的组件哈希值,详见图2中的组件Hash(1-60)。本实施例中以组件哈希信息包括组件哈希值和当前该组件的最后生成的交易信息块的数据部分为例进行说明。则组件1的组件哈希信息包括:组件1的组件哈希值和组件1的TX60的信息。
基于相同的计算方式,可以得到组件2的组件哈希信息,组件2的组件哈希信息包括:组件2的组件哈希值和组件2的TX60的信息。
将组件1的组件哈希值和组件2的组件哈希值进行拼接,再进行哈希运算,得到根哈希值。
若待保护软件只包括1个组件,比如只包括组件1,则在得到组件1的段落哈希值后,对组件1的段落哈希值进行拼接并进行哈希运算,得到根哈希值。
在上述计算过程中,将每5个交易信息块作为一个段落计算段落哈希值。若当前已生成的交易信息块不足5个,比如只存在4个交易信息块,则基于这4个交易信息块的哈希值计算段落哈希值。或者当前已生成了53个交易信息块,则计算的最后一个段落哈希值为TX50至TX53的段落哈希值。
在上文中,以根据每5个交易信息块的哈希值计算段落哈希值为例,在实际实现中,不限于5个,比如也可以为2个或3个。
(3)在得到图2所示的哈希树后,可基于该哈希树以及交易列表生成信息块。如图3所示,图3为本申请实施例中信息块的数据结构示意图。信息块从数据结构上也包括头部信息和数据部分,此外,信息块还包括交易部分。 信息块的头部信息用于存储根据交易信息块生成的哈希值。其中,信息块的头部信息可以包括:父哈希值、当前信息块的哈希值、根哈希值中的任意一个或多个。可选的,头部信息还可以包括时间戳、随机值和序号中的任意一个或多个。父哈希值为对当前信息块之前生成的上一个信息块的头部信息进行哈希运算,得到的哈希值;例如,依照时间顺序,已生成了信息块1、信息块2、信息块3和信息块4,当前正在生成的信息块为信息块5,则信息块5头部信息包括的父哈希值为:对信息块4的头部信息进行哈希运算得到的哈希值。
当前信息块的哈希值为对当前信息块的数据部分进行哈希运算得到的哈希值;
根哈希值为图2中的根哈希值;
时间戳为生成当前信息块时的系统时间;
头部信息包括的序号为当前信息块的序号,比如当前信息块是为待保护软件生成的第5个信息块,则头部信息包括的序号为5。
信息块的数据部分用于存储组件哈希信息。例如,信息块的数据部分包括图2中的组件哈希信息,即组件1的组件哈希信息和组件2的组件哈希信息。
信息块的交易部分用于存储各个组件已生成的交易信息块的数据部分。例如,信息块的交易部分可以包括组件1的交易列表和组件2的交易列表,其中组件1的交易列表包括当前已为组件1生成的TX1-TX60,组件2的交易列表包括当前已为组件2生成的TX1-TX60。
(4)根据生成的信息块按照一定的顺序形成的数据结构,本公开中称为信息链。如图4所示,图4为本申请实施例提供的信息链的数据结构示意图。
其中,信息链中包括依照顺序建立的信息块,其中,信息链中第一个生成的信息块在本公开中称为创世块,创世块的数据结构与其他信息块的数据结构相同,在内容上,创世块中包括了组件被授权使用的时长,即组件的可用总时长。
图4中示例性地示出了创世块之后生成的两个信息块,在实际实现中,信息块的数量不限于此。
作为示例,可以每天生成一个交易信息块,并基于所有已生成的交易信息块计算上述哈希树,进而每天创建一个信息块,即每天在图4所示的信息链中加入一个信息块。
本申请实施例提供的软件许可信息的监控方法可以应用于分布式集群系统中,该分布式集群系统中包括多台服务器,可以通过分布式集群系统包括的服务器执行本申请实施例提供的方法流程。
在一种实施方式中,可以在待保护软件所在的分布式集群系统中部署License装置,该License装置为一个进程,或者为一个进程的一部分。该License装置具体可以被部署于分布式集群系统的任一服务器中,License装置用于实现本申请实施例提供的方法流程。
可选地,也可以在分布式集群系统中部署多个License装置,将其中一个License装置作为主节点,将其他License装置作为备份节点。主节点用于对待保护软件的许可信息进行存储和/或校验。备份节点用于对待保护软件的许可信息进行校验。
图5为本申请实施例提供的一种分布式集群系统中各装置之间的关系示意图。如图5所示,以分布式集群系统中部署了三个License装置为例,分别为License装置1、License装置2和License装置3,各License装置均具有数据读写功能。
业务服务装置可以通过应用程序接口(Application Programming Interface,API)网关与License装置1、License装置2和License装置3进行通信。
业务服务装置用于对待保护软件进行软件许可控制,具体用于管理用户对待保护软件的使用,比如业务服务装置可以通过待保护软件的许可信息确定用户是否具有使用待保护软件的权限。
即API网关可以实现路由和负载均衡功能。
业务服务装置可以向API网关发送读请求,当API网关接收到业务服务装置发送的读请求时,API网关可通过负载均衡策略或者随机将该读请求转发至图5中的其中一个License装置。从而该License装置读取待保护软件的许可信息,并通过API网关发送给业务服务装置,然后业务服务装置根据读 取到的许可信息进行软件许可控制。
通过License装置的写功能可以实现对待保护软件的许可信息的写入,并实现对许可信息的防篡改功能。
图5中的License装置、API网关和业务服务装置均为部署于分布式集群系统中的软件。License装置、API网关和业务服务装置具体可以部署于分布式集群系统中的一台服务器中,也可以部署于分布式集群系统中的多台服务器中。
如图6所示,图6为本申请实施例提供的License装置实现读写功能的示例性示意图。业务服务装置可通过API网关请求读取License装置中存储的许可信息。且License装置每隔指定时长写入最新的许可信息。图6中的3个License装置可通过竞选机制选出一个License装置作为主节点,其余的两个License装置作为备份节点。
图6中以License装置1为主节点,License装置2和License装置3为备份节点为例,License装置1每隔指定时长进行信息写入,即生成待保护软件的最新的许可信息,并存储该许可信息。
License装置1生成许可信息后,将生成的许可信息同步至License装置2和License装置3,License装置2和License装置3每隔预设时长对存储的许可进行信息校验,从而防止许可信息被篡改。可选地,License装置1也可以每隔预设时长对存储的许可信息进行校验。
其中,主节点写入许可信息的周期可以与备份节点校验许可信息的周期相同,比如主节点每天写入一次许可信息。相应地,备份节点每天校验一次许可信息。或者,为了加强安全性,备份节点也可以缩短校验周期,比如每小时校验一次。
图6中以API网关接收到读取请求后,根据负载均衡策略将读取请求转发给License装置3为例,后续License装置3可处理该读取请求。
需要说明的是,若图5所示的系统中只存在一个License装置,则该License装置可以完成对许可信息的写入及校验。
为了方便理解,首先对本申请实施例涉及到的相关内容进行解释说明。
本申请实施例可以以软件的粒度或者以软件包括的组件的粒度对许可信 息进行存储及校验。
若以软件为粒度,则对待保护软件的许可信息进行存储及校验。待保护软件的许可信息包括待保护软件的可用时长余额,可选地,还包括待保护软件的许可节点数量。
若以组件为粒度,则对待保护软件包括的各组件的许可信息进行存储及校验。组件的许可信息包括该组件的可用时长余额,可选地,还包括该组件的许可节点数量。
本申请实施例在对许可信息进行存储和校验的过程中所使用的预设加密算法可以为哈希算法、移位算法等。
以下以组件为保护粒度,以使用的预设加密算法为哈希算法为例。
应当理解的是,由于本公开并不限定所采用的加密算法的类型,基于上述实施例中关于段落哈希值、组件哈希值、组件哈希信息、根哈希值可以获知本公开所涉及到的以下概念的含义:
段落加密值:将按照预设数量个连续的交易信息块的加密值进行加密计算,得到的加密值称为段落加密值;
组件加密值:根据同一个组件生成的至少一个或者多个段落加密值进行加密计算得到的加密值称为组件加密值;
组件加密信息:根据组件加密值和当前该组件的最后生成的交易信息块可以确定组件加密信息。组件加密信息可以包括最后生成的交易信息块的全部内容,或者包括最后生成的交易信息块中的数据部分,或者仅包括最后生成的交易信息块的可用时长余额和许可节点数量。具体的,组件加密信息可以根据实际需要进行选择。
根加密值:根据不同组件的或者同一组件的组件加密值,进行加密计算,得到的加密值称为根加密值。
父加密值为对当前信息块之前生成的上一个信息块的头部信息进行加密计算,得到的加密值。
以下结合图1至图6对本申请实施例提供的软件许可信息的监控方法进行详细介绍。
如图7所示,本申请实施例提供一种软件许可信息的监控方法,该方法 应用于服务器,该方法包括:
S701、服务器每隔指定时长生成交易信息块。
在一种实施方式中,每隔指定时长生成待保护软件的交易信息块,该交易信息块包括许可信息,许可信息包括生成交易信息块时待保护软件的可用时长余额。
其中,服务器需要监控软件被许可使用的时间以及被许可使用的节点等信息。本公开中这些被服务器监控的软件称为待保护软件,待保护软件可以为软件中所包括的多个组件,也可以为独立使用的软件。
以待保护软件包括组件1和组件2为例,若指定时长为1天,则每天为组件1生成一个交易信息块,且每天为组件2生成一个交易信息块。
可以理解的,每天生成的交易信息块中包括的可用时长余额依次递减。
可选地,许可信息还包括许可节点数量。交易信息块中还可以包括其他信息,具体可参考图1。
S702、服务器根据已生成的交易信息块计算根加密值。
该步骤具体可以实现为:服务器根据已生成的一个或多个交易信息块,采用预设加密算法对每一个交易信息块的许可信息进行计算,分别得到每一个交易信息块的加密值。然后根据预设加密算法以及上述一个或多个交易信息块的加密值计算得到组件加密值,采用预设加密算法对组件加密值进行计算,得到根加密值。
其中,若当前为用户被授权使用待保护软件的第1天,也就是说当前只生成了1个交易信息块,则服务器根据这1个交易信息块计算根加密值。若当前不是用户被授权使用待保护软件的第1天,则服务器根据已生成的多个交易信息块计算根加密值。
以预设加密算法为哈希算法为例,本申请实施例中涉及的加密值均可以为哈希值。
对于已生成的每个交易信息块,参考图1所示的交易信息块的数据结构,交易信息块的许可信息包括可用时长余额。为了提高安全性,还可以包括图3中数据部分的其他信息。分别对每个交易信息块的数据部分进行哈希运算,可以得到每个交易信息块的哈希值。
然后根据已生成的每个交易信息块的哈希值进行哈希运算,得到组件哈希值,根据哈希算法以及组件哈希值可计算得到根哈希值。例如,若五个交易信息块的哈希值分别为101、102、103、104、105,则可以将该五个哈希值拼接之后得到101102103104105,对该值进行哈希运算,得到组件哈希值。
还可以在分别在五个哈希值的基础上加上其他值之后再进行哈希,例如,对上述五个哈希值分别加5,则五个交易信息块的哈希值更新为106、107、108、109、200,之后再进行哈希运算得到组件哈希值。
若待保护软件包括多个组件,则可根据每个组件的交易信息块的哈希值,计算得到每个组件的组件哈希值。然后对每个组件的组件哈希值进行拼接,再进行哈希运算,得到根哈希值。计算过程可参见上文中对图2的描述,通过计算根哈希值,可以得到图3所示的哈希树。
S703、服务器获取在当前需要生成的信息块之前生成的上一个信息块的头部信息。
例如,当前为使用待保护软件的第60天,也就是说,当前需要生成第60个信息块,上一个信息块为第59天生成的信息块。
上一个信息块的头部信息可以包括上一个信息块的根加密值和父加密值。可选地,头部信息还可以包括其他数据,具体可参考图5。
S704、服务器基于获取到的上一个信息块的头部信息计算父加密值。
假设上一个信息块为第59个信息块,对第59个信息块的头部信息包括的内容进行哈希运算,可以得到第59个信息块的头部信息的哈希值,第59个信息块的头部信息的哈希值就是第60个信息块的父哈希值。该父哈希值将被存储于第60个信息块的头部信息中。
在本申请实施例中,不限制S702与S703-S704之间的执行顺序。即可以先计算根加密值,也可以先计算父加密值,或者两者同时计算。
S705、服务器生成信息块。
其中,信息块可以包括根加密值和交易列表,交易列表包括按照顺序生成的交易信息块。
参考图3,服务器需要分别生成信息块的头部信息、数据部分和交易列表。
头部信息除包括上述父加密值和根加密值之外,还可以包括信息链的加 密值。基于此,生成信息块的过程包括:
生成信息块的数据部分。其中,信息块的数据部分包括所述待保护软件的可用时长余额。根据信息块的数据部分计算信息块的加密值,将信息块的加密值加入该信息块的头部信息。例如,信息块的数据部分包括的待保护软件的可用时长余额为10天,则可以对10进行加密运算,得到该信息块的加密值。
该信息块的数据部分具体可以为图2的哈希树中的组件哈希信息,通过对该信息块的数据部分进行哈希运算,可以得到该信息块的哈希值。
在计算得到上述根哈希值、父哈希值以及信息块的哈希值之后,可生成如图3所示的信息块。
S706、服务器将信息块加入信息链,信息链包括依照顺序生成的信息块。
本申请实施例中,服务器每天生成信息块后,可将该信息块添加至信息链的最后。在一种实施方式中,信息链被序列化加密存储。
本公开所提供的上述方法可以在分布式集群系统中使用,若服务器存在备份节点,服务器可以在每次生成信息块之后,向服务器的备份节点发送该信息块;
本公开所提供的方法中,还可以通过另外设置缓存空间,另外缓存上述生成的信息块,因此,服务器还可以在每次生成信息块之后向外部缓存发送该信息块。
通过上述方式可以在备份节点和/或外部缓存中形成该信息链的备份信息链。服务器可以通过自身存储的信息链与备份节点和/或外部缓存中的备份信息链进行对比,确定信息链是否被修改过,由此提高信息链的安全性。
结合图6,以图6中的License装置1、License装置2和License装置3分别被部署于服务器1、服务器2和服务器3中为例,则服务器2和服务器3为服务器1的备份节点。服务器1生成信息块后,可向服务器2和服务器3发送该信息块。
在上述实施例中,服务器生成交易信息块时需确定待保护软件的可用时长余额,待保护软件的可用时长余额可以通过以下步骤确定:
步骤1、服务器获取当前系统时间和待保护软件的生效时间。
步骤2、服务器根据当前系统时间与待保护软件的生效时间之间的差值,确定待保护软件的已使用时长。
步骤3、服务器根据待保护软件的可用总时长与所述已使用时长的差值,确定待保护软件的可用时长余额。
例如,待保护软件的生效时间为2020年4月1日,生效时间可以为待保护软件第一次注册使用的时间,当前服务器的系统时间为2020年4月20日,待保护软件的可用总时长为30天,则可确定待保护软件已使用20天,可用时长余额为10天。
若待保护软件包括多个组件,每个组件的生效时间和可用总时长可以不同,则分别确定每个组件的可用时长余额。对于一个组件,服务器确定该组件的可用时长余额的方法为:获取当前系统时间和组件的生效时间,根据当前系统时间与组件的生效时间之间的差值,确定组件的已使用时长。然后根据组件的可用总时长与已使用时长的差值,确定组件的可用时长余额。
本公开实施例还提供了一种软件许可信息的监控方法,该方法应用于服务器。如图8所示,该方法包括:
S801、服务器根据待校验信息块的交易列表包括的各交易信息块计算根加密值。
其中,待校验信息块为信息链中已存储的信息块。在一种实施方式中,该待校验信息块为当前已生成的最后一个信息块。
在本申请实施例中,可以每隔一小时,对信息块中的待校验信息块进行一次校验;或者,每生成五个信息块就校验一次。当然校验的频次不限于以上实施方式,可根据实际情况设置,本申请实施例对此不作限制。
针对待校验信息块的交易列表包括的一个或多个交易信息块,服务器采用预设加密算法对每一个交易信息块的许可信息进行计算,分别得到每一个交易信息块的加密值。然后服务器根据预设加密算法以及上述一个或多个交易信息块的加密值计算得到组件加密值。然后采用预设加密算法对组件加密值进行计算,得到根加密值。
服务器根据预设加密算法以及上述一个或多个交易信息块的加密值计算得到组件加密值,具体可以实现为:服务器针对待校验信息块的交易列表中, 每预设数量个连续的交易信息块,采用预设加密算法,对预设数量个连续的交易信息块的加密值进行计算,得到段落加密值。然后采用预设加密算法,对计算得到的至少一个段落加密值进行计算,得到组件加密值。
本步骤中计算根加密值的方法与生成信息块的过程中,计算根加密值的方法相同,具体可参考上述实施例中的相关描述。
S802、服务器将计算得到的根加密值与待校验信息块中存储的根加密值进行比较。
在本申请实施例中,若信息块中包括的信息均未被篡改,则计算得到的根加密值应与待校验信息块中存储的根加密值相同。若待校验信息块包括的许可信息被篡改,将使得计算得到的根加密值与待校验信息块中存储的根加密值不同。
本申请实施例可以通过根加密值完成对待校验信息块的校验。为了进一步地增加许可信息的安全性,还可以执行后续S803-S805,通过父加密值对待校验信息块进行校验,和/或,还可以执行后续S806-S807,通过待校验信息块的加密值对待校验信息块进行校验。由于上述三种校验过程使用的参数不同,所以本申请实施例不限制S801-S802、S803-S805以及S806-S807之间的执行顺序,图8中以顺序执行S801至S807为例。
S803、服务器获取待校验信息块的上一个信息块的头部信息。
其中,待校验信息块的上一个信息块为:在生成待校验信息块之前,生成的上一个信息块。
上一个信息块的头部信息可以包括根加密值和/或父加密值,可选地,还可以包括图3示出的信息块的头部信息中的其他信息。
S804、服务器基于获取到的上一个信息块的头部信息计算加密值。
本步骤中计算加密值的方法与生成待校验信息块时,计算父加密值的方法相同,可参考上述实施例中的相关描述,此处不再赘述。
S805、服务器将基于上一个信息块的头部信息计算得到的加密值,与待校验信息块中存储的父加密值进行比较。
因本步骤中计算加密值的方式,与生成待校验信息块时,计算父加密值的方法相同,所以若已存储的待校验信息块的上一个信息块的头部信息包括 的任一信息被篡改,将导致计算出的加密值与待校验信息块中存储的父加密值不同。
针对S803至S805,举例而言,若待校验信息块为信息块50,待校验信息块的上一个信息块为信息块49。待校验信息块50的头部信息中包括父加密值,该父加密值为在生成信息块50时,基于信息块49的头部信息计算得到的加密值。
在校验过程中,服务器可以获取信息块49的头部信息,对此时获取到的信息块49的头部信息进行加密计算,计算出一个加密值。
然后将此时计算出的加密值与信息块50的头部信息中存储的父加密值进行比较,若两者不同,则说明信息块49包括的头部信息已被篡改,或者信息块50中存储的父加密值已被篡改。
S806、服务器根据待校验信息块的数据部分计算待校验信息块的加密值。
在本申请实施例中,待校验信息块的数据部分可以包括生成该待校验信息块时,待保护软件的许可信息。若待保护软件包括多个组件,则待校验信息块的数据部分包括各组件的许可信息。
本步骤中计算待校验信息块的加密值的方法,与生成该待校验信息块时,计算该待校验信息块的加密值的方法相同,可参考上述实施例中的相关描述,此处不再赘述。
S807、服务器将计算得到的待校验信息块的加密值,与待校验信息块中存储的待校验信息块的加密值进行比较。
其中,可参考图5,若待校验信息块的数据部分中的任一信息被篡改,将导致计算得到的待校验信息块的加密值,与待校验信息块中存储的待校验信息块的加密值不同。
S808、服务器根据比较结果确定待保护软件的许可信息是否被篡改。
其中,在上述S802、S805和S807中,若任意一个比较结果为不同,则说明待保护软件的许可信息被篡改。
采用上述许可信息的监控方法,若待保护软件的任意一个交易信息块包括的许可信息被篡改,将导致交易信息块的加密值发生变化,进而使得根加密值发生变化。本公开实施例中,基于待校验信息块包括的交易列表重新计 算根加密值,若计算得到的根加密值与待校验信息块中存储的根加密值不同,则可确定待保护软件的许可信息被篡改。可见,篡改者对许可信息的篡改很容易被发现,且篡改难度较大,在不使用主机的硬件信息的前提下,提高待保护软件的许可信息的安全性。
另外,若待校验信息块的上一个信息块包括的许可信息被篡改,将导致上一个信息块的头部信息发生变化,进而导致根据上一个信息块的头部信息计算出的加密值与待校验信息块中存储的父加密值不同。所以通过比较计算出的加密值与待校验信息块中存储的父加密值,可确定上一个信息块是否被篡改。由于信息链中的每一个信息块中都包括根据上一个信息块的头部信息计算的加密值,即每一个信息块都具有父加密值,若篡改者想要该篡改不被发现,则需修改每一个信息块包括的父加密值,篡改难度很大。所以采用该方法,可以提高待保护软件的许可信息的安全性。
同理,若待保护软件的许可信息被篡改,将导致待校验信息块的数据部分发生变化,进而使得计算得到的待校验信息块的加密值,与待校验信息块中存储的待校验信息块的加密值不同。在篡改者不知道本申请实施例采用的加密算法时,难以对待校验信息块的加密值进行篡改。所以通过比较计算得到的待校验信息块的加密值与已存储的待校验信息块的加密值,就可确定许可信息是否被篡改,提高了许可信息的安全性。
在本申请另一实施例中,还提供了另一种许可信息的监控方法,该方法具体包括:
服务器比较待校验信息块包括的交易列表中,每一个交易信息块包括的可用时长余额是否小于前序交易信息块包括的可用时长余额。根据比较结果确定待保护软件的可用时长余额是否被篡改。
其中,一个交易信息块的前序信息块是指:在该交易信息块之前生成的上一个交易信息块。举例而言,若每天生成一个交易信息块,则交易列表中包括的各交易信息块中的可用时长余额依次递减。假设交易列表中包括交易信息块1至交易信息块3,则可比较交易信息块2包括的可用时长余额是否比交易信息块1包括的可用时长余额少1天,交易信息块3包括的可用时长余额是否比交易信息块2包括的可用时长余额少1天。
若交易信息块3包括的可用时长余额为27,交易信息块2包括的可用时长余额为20,则可确定交易信息块3包括的可用时长余额被篡改。
在本申请另一实施例中,还提供了另一种许可信息的监控方法,该方法包括:
服务器从备份节点和/或外部缓存中获取备份的信息链中最新生成的信息块,将从备份节点和/或外部缓存中获取到的信息块,与待校验信息块进行比较,根据比较结果确定待保护软件的许可信息是否被篡改。
结合图6,仍以图6中的License装置1、License装置2和License装置3分别被部署于服务器1、服务器2和服务器3中为例,则服务器2和服务器3为备份节点。服务器2可获取服务器3备份的信息链中最新生成的信息块,比如信息块60。然后服务器2将自身存储的信息块60和获取到的信息块60进行比较,若两者不一致,则确定服务器2和/或服务器3中的许可信息被篡改。
进一步地,服务器2可从外部缓存中获取信息块60,将自身存储的信息块60与从外部缓存中获取的信息块60进行比较,若两者一致,则说明服务器2中存储的信息块60未被篡改;若两者不一致,则说明服务器2中存储的信息块60已被篡改,服务器2可将自身存储的信息块60替换为从外部缓存中获取到的信息块60。或者,服务器2可从外部缓存中获取整个信息链,将自身存储的信息链替换为从外部缓存中获取的信息链,从而完成对被篡改的许可信息的修正。
以下结合图9对本申请实施例的完整流程进行介绍。如图9所示,在License装置启动时,若分布式集群系统中包括多个License装置,各License装置可通过竞选机制确定主节点和备份节点。
然后主节点加载本地加密序列化存储的信息链。若信息链存在,说明不是首次启动,则正常从本地加载信息链;若信息链不存在,则判断待保护软件是否为新部署的软件。
若待保护软件是新部署的软件,则主节点从消息队列中获取创世块信息并从分布式集群系统的License服务器中获取待保护软件包括的各组件的可用总时长以及许可节点数量。其中,在部署待保护软件时,可将创世块信息 预先配置在消息队列中。在主节点从消息队列中读取创世块信息后,创世块信息将被从消息队列中删除。用户购买该待保护软件的使用权限后,该待保护软件的包括的各组件的可用总时长以及许可节点数量将被存储在License服务器中,若用户进行续费以延长使用期限和/或增加许可节点数量,则License服务器中存储的待保护软件的可用总时长和/或许可节点数量也相应地被更新。
若待保护软件不是新部署的软件,则主节点从外部缓存中获取已存在的信息链。
然后主节点开始执行定时任务,作为示例,该定时任务可以触发主节点每5分钟通过心跳消息与License服务器进行信息交互,获取待保护软件的最新的可用总时长以及许可节点数量,以保证自身使用的各组件的可用总时长及许可节点数量的准确性。
该定时任务还可触发主节点每天为每个组件生成一个交易信息块。基于已生成的交易信息块生成信息块,向备份节点发送该信息块。在另一种实施方式中,主节点也可以直接将该信息块发送给主节点的外部缓存。该外部缓存指的是主节点内部的其他缓存空间,该缓存空间用于对信息块进行备份。
其中,主节点可以采用单播或广播的方式向备份节点和外部缓存发送信息块。
若主节点采用广播的方式广播该信息块,则备份节点和外部缓存可以从消息队列中获取该信息块,并将该信息块加入备份的信息链中,图9中省略了备份节点和外部缓存获取该信息块的过程。
主节点生成信息块后,还将信息块加入本地保存的信息链中,完成对信息块的序列化加密存储,图9中省略了将信息块加入本地保存的信息链的过程。
对于每个备份节点,通过定时任务对信息块进行校验。作为示例,备份节点可以每隔1小时对信息块进行一次校验。
首先,备份节点对系统时间进行篡改检查。备份节点可以获取待校验信息块中的交易列表,比较交易列表中每个交易信息块包括的可用时长余额是否小于前序交易信息块包括的可用时长余额。若不小于,则确定校验结果为 异常,说明可能因系统时间被篡改导致交易信息块中的可用时长余额不正确。若确定校验结果为异常,则广播该异常情况,使得主节点和其他备份节点可以根据接收到的广播消息获知该异常情况。
若校验结果为正常,则进行完整性检查。完整性检查是指根据待校验信息块包括的交易列表,重新计算该信息块包括的根哈希值、父哈希值以及该信息块的哈希值,分别与该信息块中已存储的根哈希值、父哈希值以及该信息块的哈希值进行比较,若任意一个不同,则确定许可信息被篡改,即校验结果异常。进而广播该异常情况。
若校验结果为正常,则进行一致性检查。一致性检查是指检查主节点以及各备份节点中存储的该待校验信息块是否相同,以及主节点和各备份节点中存储的该待校验信息块是否与外部缓存中的待校验信息块是否相同。若存在不同的情况,则说校验异常,即主节点或备份节点中的待校验信息块被篡改。进而广播该异常情况。
上述校验顺序仅为示例,本申请实施例不限制于按照上述校验顺序执行,上述实施例提到的校验方式可独立执行,也可按照其他顺序执行。
主节点和备份节点均可以进行内存维护。即主节点和备份节点可以从消息队列中获取待校验信息块的异常情况,并可以通过一致性容错算法从外部缓存中获取正确的信息链,完成对本地存储的信息链的更新。
主节点和/或备份节点还可通过API网关向业务服务装置提供各组件的许可信息,在确定提供给业务服务装置的许可信息是被篡改后的许可信息的情况下,也可通过API网关告知业务服务装置,并通过API网关向业务服务装置发送正确的许可信息,以使得业务服务装置根据正确的许可信息对待保护软件的各组件进行许可控制。
结合上述实施例,采用上述软件许可信息的监控方法,可以从以下方面保护待保护信息不被篡改。
方面一、若将系统时间前调,使得最新生成的交易信息块中的可用时长余额变长。本申请实施例可以将该交易信息块中的可用时长余额与交易列表中的前序交易信息块中的可用时长余额进行对比。若当前交易信息块中的可用时长余额大于前序信息块中的可用时长余额,则可及时对系统时间进行修 正,从而存储正确的交易信息块。另外,若系统时间被前调,最新生成的交易信息块中的时间戳也将小于上一交易信息块中的时间戳,所以将系统时间前调的篡改方式很容易被避免。
方面二、若待保护软件的某一组件的交易信息块中的可用时长余额被篡改,将会导致该交易信息块的哈希值发生变化,进而导致信息块的哈希值、根哈希值发生变化,所以通过重新计算信息块的哈希值和根哈希值,该篡改就会被发现,使得篡改后的可用时长余额无法生效。
方面三、若信息块包括的组件哈希信息被篡改,将导致根哈希值发生变化。且信息块的头部信息包括的该信息块的哈希值是根据各组件的组件哈希信息生成的,组件哈希信息被篡改,也会导致信息块的头部信息发生变化。
因下一信息块的头部信息中包括父哈希值,该父哈希值为当前信息块的头部信息的哈希值。所以若篡改当前信息块的组件哈希信息,导致当前信息块的头部信息发生变化,将导致下一信息块包括的父哈希值不正确。若想使得该篡改生效,则需进一步篡改后续每一个信息块包括的父哈希值,实现难度较大。若无法对后续的每个信息块的进行修改,对该组件哈希信息的篡改则无法生效。
方面四、因信息链中的创世块只能基于预配置的创世块信息生成一次,所以该创世块无法被修改,且信息链还被序列化加密存储,在未解密的情况下,无法直接修改,进一步保证了许可信息的安全性。
方面五、若一个服务器中存储的信息链被篡改,还可通过备份节点以及外部缓存中存储的信息链进行校验,即只要外部缓存中的信息链未被篡改,对任意一个服务器的信息链的篡改均可被发现并被修正。
方面六、若本申请实施例应用于容器化场景,若License装置的容器镜像被篡改,还可从其他License装置的容器镜像或外部缓存中获取未被篡改的信息链,保证了容器化场景中的软件许可信息的安全性。
基于相同的技术构思,本申请实施例还提供一种软件许可信息的监控装置,该软件许可信息的监控装置,也即之前的实施例中所指的License装置,该装置可以被配置于服务器中,具体的,如图10所示,该装置包括:
生成模块1001,用于每隔指定时长生成交易信息块,交易信息块包括许 可信息,许可信息包括生成交易信息块时待保护软件的可用时长余额;
计算模块1002,用于根据已生成的交易信息块计算根加密值;
生成模块1001,还用于生成信息块,信息块包括根加密值和交易列表,交易列表包括按照顺序生成的交易信息块;
存储模块1003,用于将信息块加入信息链,信息链包括依照顺序生成的信息块。
在一种实施方式中,生成模块1001,具体用于通过以下步骤确定待保护软件的可用时长余额:
获取当前系统时间和待保护软件的生效时间;
根据当前系统时间与待保护软件的生效时间之间的差值,确定待保护软件的已使用时长;
根据待保护软件的可用总时长与已使用时长的差值,确定待保护软件的可用时长余额。
在一种实施方式中,该装置还包括:
广播模块,用于向服务器的备份节点和/或外部缓存广播信息块,以在备份节点和/或外部缓存中形成信息链的备份信息链。
在一种实施方式中,信息块中包括头部信息,头部信息包括根加密值和父加密值;
计算模块1002,还用于:
获取在信息块之前生成的上一个信息块的头部信息;
基于获取到的上一个信息块的头部信息计算父加密值。
在一种实施方式中,生成模块1001,具体用于:
生成信息块的数据部分,数据部分包括当前待保护软件的可用时长余额;
根据信息块的数据部分计算信息块的加密值;
将信息块的加密值加入信息块的头部信息。
在一种实施方式中,计算模块1002,具体用于:
根据已生成的一个或多个交易信息块,采用预设加密算法对每一个交易信息块的许可信息进行计算,分别得到每一个交易信息块的加密值;
根据预设加密算法以及一个或多个交易信息块的加密值计算得到组件加 密值;
采用预设加密算法对组件加密值进行计算,得到根加密值。
基于相同的技术构思,本申请实施例还提供一种软件许可信息的监控装置,该软件许可信息的监控装置,也即之前的实施例中所指的License装置,该装置可以配置于服务器中。具体的,待保护软件的许可信息以信息链的形式存储;
信息链包括依照顺序建立的信息块,信息块中包括交易列表和根加密值;其中,交易列表包括按照顺序生成的交易信息块,交易信息块中包括许可信息,许可信息包括生成交易信息块时待保护软件的可用时长余额,根加密值是根据许可信息加密得到的。
如图11所示,该装置包括:
计算模块1101,用于根据待校验信息块的交易列表包括的各交易信息块计算根加密值;
校验模块1102,用于将计算得到的根加密值与待校验信息块中存储的根加密值进行比较;根据比较结果确定待保护软件的许可信息是否被篡改。
在一种实施方式中,信息块中包括头部信息,头部信息包括根加密值和父加密值;其中,父加密值为根据在当前信息块之前生成的上一个信息块的头部信息生成加密值;该装置还包括:
获取模块,用于获取待校验信息块的上一个信息块的头部信息;
计算模块1101,还用于基于获取到的上一个信息块的头部信息计算加密值;
校验模块1102,还用于将基于上一个信息块的头部信息计算得到的加密值,与待校验信息块中存储的父加密值进行比较;根据比较结果确定待保护软件的许可信息是否被篡改。
在一种实施方式中,信息块的头部信息中还包括信息块的加密值,信息块的加密值为根据信息块的数据部分计算得到的加密值,信息块的数据部分包括生成信息块时待保护软件的许可信息;
计算模块1101,还用于根据待校验信息块的数据部分计算待校验信息块的加密值;
校验模块1102,还用于将计算得到的待校验信息块的加密值,与待校验信息块中存储的待校验信息块的加密值进行比较;根据比较结果确定待保护软件的许可信息是否被篡改。
在一种实施方式中,计算模块1101,具体用于:
针对待校验信息块中的交易列表包括的一个或多个交易信息块,采用预设加密算法对每一个交易信息块的许可信息进行计算,分别得到每一个交易信息块的加密值;
根据预设加密算法以及一个或多个交易信息块的加密值计算得到组件加密值;
采用预设加密算法对组件加密值进行计算,得到根加密值。
在一种实施方式中,计算模块1101,具体用于:
针对待校验信息块的交易列表中,每预设数量个连续的交易信息块,采用预设加密算法,对预设数量个连续的交易信息块的加密值进行计算,得到段落加密值;
采用预设加密算法,对计算得到的至少一个段落加密值进行计算,得到组件加密值。
在一种实施方式中,校验模块1102,还用于:
比较待校验信息块包括的交易列表中,每一个交易信息块包括的可用时长余额是否小于前序交易信息块包括的可用时长余额;
根据比较结果确定待保护软件的可用时长余额是否被篡改。
在一种实施方式中,获取模块,还用于从备份节点和/或外部缓存中获取备份的信息链中最新生成的信息块;
校验模块1102,还用于将从备份节点和/或外部缓存中获取到的信息块,与待校验信息块进行比较;根据比较结果确定待保护软件的许可信息是否被篡改。
本申请实施例还提供了一种服务器,如图12所示,包括处理器1201、通信接口1202、存储器1203和通信总线1204,其中,处理器1201,通信接口1202,存储器1203通过通信总线1204完成相互之间的通信,
存储器1203,用于存放计算机程序;
处理器1201,用于执行存储器1203上所存放的程序时,实现上述任一软件许可信息的监控方法的步骤。
上述服务器提到的通信总线可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述服务器与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一软件许可信息的监控方法的步骤。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一软件许可信息的监控方法的步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或 者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (15)

  1. 一种软件许可信息的监控方法,应用于服务器,其特征在于,所述方法包括:
    每隔指定时长生成交易信息块,所述交易信息块包括许可信息,所述许可信息包括生成所述交易信息块时所述待保护软件的可用时长余额;
    根据已生成的交易信息块计算根加密值;
    生成信息块,所述信息块包括所述根加密值和交易列表,所述交易列表包括按照顺序生成的交易信息块;
    将所述信息块加入信息链,所述信息链包括依照顺序生成的信息块。
  2. 根据权利要求1所述的方法,其特征在于,所述待保护软件的可用时长余额通过以下步骤确定:
    获取当前系统时间和所述待保护软件的生效时间;
    根据所述当前系统时间与所述待保护软件的生效时间之间的差值,确定所述待保护软件的已使用时长;
    根据所述待保护软件的可用总时长与所述已使用时长的差值,确定所述待保护软件的可用时长余额。
  3. 根据权利要求1或2所述的方法,其特征在于,在所述生成信息块之后,所述方法还包括:
    向所述服务器的备份节点和/或外部缓存广播所述信息块,以在所述备份节点和/或所述外部缓存中形成所述信息链的备份信息链。
  4. 根据权利要求1所述的方法,其特征在于,所述信息块中包括头部信息,所述头部信息包括所述根加密值和父加密值;
    所述方法还包括:
    获取在所述信息块之前生成的上一个信息块的头部信息;
    基于获取到的所述上一个信息块的头部信息计算所述父加密值。
  5. 根据权利要求4所述的方法,其特征在于,所述生成信息块,包括:
    生成所述信息块的数据部分,所述数据部分包括当前所述待保护软件的可用时长余额;
    根据所述信息块的数据部分计算所述信息块的加密值;
    将所述信息块的加密值加入所述信息块的头部信息。
  6. 根据权利要求1所述的方法,其特征在于,所述根据已生成的交易信息块计算根加密值,包括:
    根据已生成的一个或多个交易信息块,采用预设加密算法对每一个交易信息块的许可信息进行计算,分别得到每一个交易信息块的加密值;
    根据所述预设加密算法以及所述一个或多个交易信息块的加密值计算得到组件加密值;
    采用所述预设加密算法对所述组件加密值进行计算,得到所述根加密值。
  7. 一种软件许可信息的监控方法,应用于服务器,其特征在于,待保护软件的许可信息以信息链的形式存储;
    所述信息链包括依照顺序建立的信息块,所述信息块中包括交易列表和根加密值;其中,所述交易列表包括按照顺序生成的交易信息块,所述交易信息块中包括许可信息,所述许可信息包括生成所述交易信息块时所述待保护软件的可用时长余额,所述根加密值是根据所述许可信息加密得到的;
    所述方法包括:
    根据待校验信息块的交易列表包括的各交易信息块计算根加密值;
    将计算得到的根加密值与所述待校验信息块中存储的根加密值进行比较;
    根据比较结果确定所述待保护软件的许可信息是否被篡改。
  8. 根据权利要求7所述的方法,其特征在于,所述信息块中包括头部信息,所述头部信息包括根加密值和父加密值;其中,所述父加密值为根据在当前信息块之前生成的上一个信息块的头部信息生成加密值;所述方法还包括:
    获取所述待校验信息块的上一个信息块的头部信息;
    基于获取到的上一个信息块的头部信息计算加密值;
    将基于上一个信息块的头部信息计算得到的加密值,与所述待校验信息块中存储的父加密值进行比较;
    根据比较结果确定所述待保护软件的许可信息是否被篡改。
  9. 根据权利要求8所述的方法,其特征在于,所述信息块的头部信息中还包括所述信息块的加密值,所述信息块的加密值为根据所述信息块的数据 部分计算得到的加密值,所述信息块的数据部分包括生成所述信息块时所述待保护软件的许可信息;
    所述方法还包括:
    根据所述待校验信息块的数据部分计算所述待校验信息块的加密值;
    将计算得到的所述待校验信息块的加密值,与所述待校验信息块中存储的所述待校验信息块的加密值进行比较;
    根据比较结果确定所述待保护软件的许可信息是否被篡改。
  10. 根据权利要求7所述的方法,其特征在于,所述根据所述待校验信息块中的交易列表包括的各交易信息块的许可信息计算根加密值,包括:
    针对所述待校验信息块中的交易列表包括的一个或多个交易信息块,采用预设加密算法对每一个交易信息块的许可信息进行计算,分别得到每一个交易信息块的加密值;
    根据所述预设加密算法以及所述一个或多个交易信息块的加密值计算得到组件加密值;
    采用所述预设加密算法对所述组件加密值进行计算,得到根加密值。
  11. 根据权利要求10所述的方法,其特征在于,所述根据所述预设加密算法以及所述一个或多个交易信息块的加密值计算组件加密值,包括:
    针对待校验信息块的交易列表中,每预设数量个连续的交易信息块,采用所述预设加密算法,对所述预设数量个连续的交易信息块的加密值进行计算,得到段落加密值;
    采用所述预设加密算法,对计算得到的至少一个段落加密值进行计算,得到所述组件加密值。
  12. 根据权利要求7所述的方法,其特征在于,所述方法还包括:
    比较所述待校验信息块包括的交易列表中,每一个交易信息块包括的可用时长余额是否小于前序交易信息块包括的可用时长余额;
    根据比较结果确定所述待保护软件的可用时长余额是否被篡改。
  13. 根据权利要求7所述的方法,其特征在于,所述方法还包括:
    从备份节点和/或外部缓存中获取备份的信息链中最新生成的信息块;
    将从备份节点和/或外部缓存中获取到的信息块,与所述待校验信息块进 行比较;
    根据比较结果确定所述待保护软件的许可信息是否被篡改。
  14. 一种服务器,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
    存储器,用于存放计算机程序;
    处理器,用于执行存储器上所存放的程序时,实现权利要求1-13任一所述的方法步骤。
  15. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-13任一所述的方法步骤。
PCT/CN2020/091326 2020-05-20 2020-05-20 软件许可信息的监控方法、装置、服务器及存储介质 WO2021232295A1 (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2022551324A JP7459275B2 (ja) 2020-05-20 2020-05-20 ソフトウェアのライセンス情報の監視方法、装置、サーバ及び記憶媒体
CN202080000783.7A CN113966509A (zh) 2020-05-20 2020-05-20 软件许可信息的监控方法、装置、服务器及存储介质
PCT/CN2020/091326 WO2021232295A1 (zh) 2020-05-20 2020-05-20 软件许可信息的监控方法、装置、服务器及存储介质
US17/906,969 US20230104585A1 (en) 2020-05-20 2020-05-20 Method and Apparatus for Monitoring Software License Information, and Server and Storage Medium
EP20936442.1A EP4131034B1 (en) 2020-05-20 2020-05-20 Method and apparatus for monitoring software license information, and server and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/091326 WO2021232295A1 (zh) 2020-05-20 2020-05-20 软件许可信息的监控方法、装置、服务器及存储介质

Publications (1)

Publication Number Publication Date
WO2021232295A1 true WO2021232295A1 (zh) 2021-11-25

Family

ID=78709080

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/091326 WO2021232295A1 (zh) 2020-05-20 2020-05-20 软件许可信息的监控方法、装置、服务器及存储介质

Country Status (5)

Country Link
US (1) US20230104585A1 (zh)
EP (1) EP4131034B1 (zh)
JP (1) JP7459275B2 (zh)
CN (1) CN113966509A (zh)
WO (1) WO2021232295A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118520432A (zh) * 2024-07-23 2024-08-20 浙江大华技术股份有限公司 集群设备的保护方法、电子设备以及计算机可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1549135A (zh) * 2003-05-12 2004-11-24 四川大学 数字水印日志构造方法
CN103268435A (zh) * 2013-04-25 2013-08-28 福建伊时代信息科技股份有限公司 内网许可生成方法及系统、内网许可保护方法及系统
CN103279696A (zh) * 2013-06-03 2013-09-04 中国科学院微电子研究所 EDA软件的License监控方法和系统
CN108875316A (zh) * 2018-05-31 2018-11-23 中链科技有限公司 基于区块链的许可证生成及验证方法和服务器
CN109657499A (zh) * 2018-10-31 2019-04-19 深圳市网心科技有限公司 元数据验证方法、系统服务器和计算机可读存储介质
US20190392119A1 (en) * 2018-06-26 2019-12-26 Dell Products, L.P. Blockchain-based license management

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7861308B2 (en) 2005-11-28 2010-12-28 Sony Corporation Digital rights management using trusted time
MX2018013617A (es) 2016-05-13 2019-04-25 Nchain Holdings Ltd Un metodo y sistema para verificar la integridad de un activo digital mediante el uso de una tabla hash distribuida y un libro mayor distribuido punto a punto.
CA2958668A1 (en) * 2017-02-23 2018-08-23 Scenarex Inc. Methods and apparatus for integrating digital rights management into an existing blockchain
JP6389558B1 (ja) 2017-10-19 2018-09-12 アビームコンサルティング株式会社 コンテンツデータ管理システム、サーバ装置、制御方法及び制御プログラム
KR20190070163A (ko) 2017-12-12 2019-06-20 엔에이치엔 주식회사 네트워크를 통해 서로 통신하는 노드들 각각의 자원 운영 방법, 그리고 그러한 노드들 중 어느 하나로 동작하는 컴퓨터 장치
JP7362654B2 (ja) 2018-04-27 2023-10-17 エヌチェーン ライセンシング アーゲー 分割されたブロックチェーンネットワークにおけるブロックチェーンのブロックの維持管理
CN109063424B (zh) * 2018-08-09 2022-10-04 京东方科技集团股份有限公司 一种版权管理方法、系统、可读存储介质和计算机设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1549135A (zh) * 2003-05-12 2004-11-24 四川大学 数字水印日志构造方法
CN103268435A (zh) * 2013-04-25 2013-08-28 福建伊时代信息科技股份有限公司 内网许可生成方法及系统、内网许可保护方法及系统
CN103279696A (zh) * 2013-06-03 2013-09-04 中国科学院微电子研究所 EDA软件的License监控方法和系统
CN108875316A (zh) * 2018-05-31 2018-11-23 中链科技有限公司 基于区块链的许可证生成及验证方法和服务器
US20190392119A1 (en) * 2018-06-26 2019-12-26 Dell Products, L.P. Blockchain-based license management
CN109657499A (zh) * 2018-10-31 2019-04-19 深圳市网心科技有限公司 元数据验证方法、系统服务器和计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP4131034A4 *

Also Published As

Publication number Publication date
EP4131034A4 (en) 2023-05-10
JP7459275B2 (ja) 2024-04-01
JP2023516165A (ja) 2023-04-18
EP4131034A1 (en) 2023-02-08
US20230104585A1 (en) 2023-04-06
EP4131034B1 (en) 2024-07-17
CN113966509A (zh) 2022-01-21

Similar Documents

Publication Publication Date Title
US11720503B2 (en) Technologies for secure authentication and programming of accelerator devices
US11296934B2 (en) Device provisioning system
EP3479282B1 (en) Targeted secure software deployment
EP3265950B1 (en) Device attestation through security hardened management agent
US10771264B2 (en) Securing firmware
US20200153808A1 (en) Method and System for an Efficient Shared-Derived Secret Provisioning Mechanism
JP5646631B2 (ja) デバイスの監査
KR101861401B1 (ko) 장치 기능과 애플리케이션의 결합
JP2021513691A (ja) ホストシステムとデータ処理アクセラレータの間の通信を保護するための方法およびシステム
US11487852B2 (en) Blockchain-based license management
WO2020063001A1 (zh) 基本输入输出系统固件的管理方法、装置和服务器
US11252193B2 (en) Attestation service for enforcing payload security policies in a data center
US20090307487A1 (en) Apparatus and method for performing trusted computing integrity measurement reporting
CN112042151A (zh) 使用单调计数器的机密密钥的安全分发
US20200218815A1 (en) Systems and methods for distributed ledger management
US11868474B2 (en) Securing node groups
WO2021232295A1 (zh) 软件许可信息的监控方法、装置、服务器及存储介质
US12026561B2 (en) Dynamic authentication and authorization of a containerized process
WO2020173272A1 (zh) 数据安全处理方法及其终端、服务器
WO2018233638A1 (zh) Ai软件系统安全状态的确定方法及装置
US20240126886A1 (en) Trusted Computing for Digital Devices
CN116992403A (zh) 一种防止授权数据回退的方法、装置设备及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20936442

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022551324

Country of ref document: JP

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2020936442

Country of ref document: EP

Effective date: 20221028

NENP Non-entry into the national phase

Ref country code: DE