Authentication of documents

By performing encryption functions on a subset of files for authentication, the problem of large-scale file authentication in the prior art is solved, and the problem of time-consuming and easy-to-break digest of digests is achieved, and a faster and safer file authentication process is achieved.

CN112567371BActive Publication Date: 2025-03-21MICROCHIP TECHNOLOGY INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN201980053496.X
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-12-14
Filing Date
2019-08-12
Publication Date
2025-03-21
Estimated Expiration
2039-08-12

AI Technical Summary

Technical Problem

Existing file authentication methods take a long time to process large files and are vulnerable to attacks from non-trusted parties, resulting in the digest being easily cracked.

Method used

Instead of authenticating the entire file, the file is authenticated by executing encryption functions (such as a hash function) on a subset of files (for example, a subset of bytes of files). The microcontroller can select a subset of files based on the identifier and generate a summary that can be used to generate the authenticator.

Benefits of technology

This significantly reduces the time required for file authentication while maintaining sufficient security levels, such as 75% reduction in the time required to generate a digest when selecting a subset of every four bytes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN112567371B_ABST
    Figure CN112567371B_ABST
Patent Text Reader

Abstract

The present invention discloses a method for authenticating a file. The method may include selecting a subset of data segments of a file via an identifier. The method may also include performing an encryption function on only the subset of data segments of the file via a microcontroller to generate a digest. In addition, the method may include generating an authenticator based on the digest and a private key via the microcontroller. The method may also include transmitting the file, the identifier, and the authenticator to an encryption element. In addition, the method may include performing the encryption function on the subset of data segments of the file via the encryption element to generate a second digest. In addition, the method may include authenticating the file via the encryption element based on the second digest and the public key of the microcontroller via verification of the authenticator.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Priority declaration

[0002] This application claims the benefit of the filing date of U.S. Provisional Patent Application Serial No. 62 / 719,250, filed on August 17, 2018, entitled “Authentication of Files,” and claims the benefit of the filing date of pending U.S. Patent Application Serial No. 16 / 221,037, filed on December 14, 2018, entitled “Authentication of Files,” which also claims priority to U.S. Provisional Patent Application Serial No. 62 / 719,250, the contents and disclosures of each of which are hereby incorporated by reference in their entirety. Technical Field

[0003] The present disclosure relates generally to data authentication, and more particularly, to authenticating a file via performing a function on a subset of the file. Background Art

[0004] File authentication is typically performed to verify authenticity or other items of integrity of a process file (e.g., an application image, a data file, or a computer file, among others). File integrity may be compromised via random corruption (such as storage media failure, transmission errors, write errors, software bugs, etc.) and modification by untrusted parties during transmission or storage (e.g., viruses or cracking, among others). For this purpose, cryptographic functions (e.g., hash functions) are typically employed to perform authentication on the file. Conventional authentication methods may perform hashing on the entire computer file, depending on the size of the computer file that may affect the user experience. In order to reduce authentication time and improve the user experience, conventional methods may include pre-hashing the computer file and storing the resulting digest for use during authentication. These methods may introduce vulnerabilities that are susceptible to attack by an untrusted party that may crack the computer file (e.g., an application image) or completely replace the computer file and supply a valid digest when authentication is to be performed. BRIEF DESCRIPTION OF THE DRAWINGS

[0005] While the present disclosure concludes with claims that particularly point out and distinctly claim specific embodiments, the various features and advantages of embodiments within the scope of the present disclosure may be more readily ascertained from the following description when read in conjunction with the accompanying drawings, in which:

[0006] Figure 1 is a simplified schematic block diagram of a system configured to authenticate a document in accordance with one or more embodiments of the present disclosure.

[0007] Figure 2 and Figure 3A group of bytes organized in rows is shown, where different groups of bytes are used for file authentication, according to various embodiments of the present disclosure.

[0008] Figure 4 An example flow chart illustrating a method of authenticating a document according to one or more embodiments of the present disclosure;

[0009] Figure 5 is a block diagram of an example computing system. DETAILED DESCRIPTION

[0010] In the following detailed description, reference is made to the accompanying drawings which form a part thereof, and in the accompanying drawings, specific embodiments in which the present disclosure may be practiced are shown by way of example. These embodiments are described in sufficient detail to enable one of ordinary skill in the art to practice the present disclosure. However, it should be understood that the detailed description and specific examples, although indicating examples of embodiments of the present disclosure, are given only by way of example and not by way of limitation. According to the present disclosure, various replacements, modifications, additions, rearrangements, or combinations thereof may be made within the scope of the present disclosure and will be apparent to one of ordinary skill in the art.

[0011] Any characterization of something in this disclosure as 'typical', 'conventional' or 'known' does not necessarily mean that the thing is disclosed in the prior art or understood in the prior art for the aspect in question. It also does not necessarily mean that it is well-known, well-understood or commonly used in the relevant art.

[0012] According to common practice, the various features shown in the drawings may not be drawn to scale. The illustrations presented herein are not meant to be actual views of any particular device (e.g., equipment or system) or method, but are merely representations for describing various embodiments of the present disclosure. Therefore, for clarity, the sizes of the various features may be expanded or reduced at will. In addition, some drawings may be simplified for clarity. Therefore, the drawings may not show all the components of a given device or all the operations of a particular method.

[0013] The information and signals described herein may be represented using any of a variety of different techniques and technologies. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout this specification may be represented by voltage, current, electromagnetic waves, magnetic fields or particles, light fields or particles, or any combination thereof. For clarity of presentation and description, some of the accompanying drawings may show signals as single signals. It will be appreciated by those of ordinary skill in the art that a signal may represent a bus of signals, wherein the bus may have various bit widths, and the present disclosure may be implemented on any number of data signals including a single data signal.

[0014] Some authentication systems and methods include hashing an entire file (e.g., an application image) at a microcontroller to generate a digest that can be used to generate an authenticator (e.g., a message authentication code (MAC) and / or a digital signature) for the file. In these systems and methods, the entire file along with the authenticator can be sent from the microcontroller to an encryption element. Upon receiving the file and the authenticator, the encryption element can hash the entire file to generate a second digest of the file. In addition, the encryption element can use the second digest and a public key (e.g., an original equipment manufacturer (OEM) public key) to verify the authenticator and authenticate the file.

[0015] For both symmetric and asymmetric file authentication, file authentication may require "measurement" of the file (also referred to herein as a "measurement method"). The time required for the measurement method (e.g., performing a cryptographic function such as a hash function) may be a significant portion of the total time required for file authentication. Some files (e.g., application images) may be large, and therefore, some file authentication methods such as those described above may require a significant amount of time, thereby affecting the user experience. Therefore, other less secure methods have been used. For example, some file authentication methods may pre-store digests at the microcontroller and / or the microcontroller may perform high-speed hashing on the file (e.g., application image). However, as indicated above, in these conventional methods, the digest is vulnerable to cracking, as is an unprotected microcontroller that includes the digest. An adversary may crack the file and / or replace the file and supply a valid digest for file authentication.

[0016] Various embodiments of the present disclosure are directed to authenticating a file (e.g., an application image, a computer file, a data file, or any other suitable file) based on a subset of the file rather than the entire file. More specifically, various embodiments are directed to authenticating a file via performing a function on a subset of the data segments (e.g., bytes) of the file (i.e., rather than performing the function on the entire file). The subset of the file may be selected such that modifying the substance of the file may be infeasible while still successfully authenticating the file.

[0017] More specifically, according to some embodiments, the microcontroller may select a subset of the file (e.g., a subset of bytes of the file) based on an identifier (e.g., a secret identifier). In addition, the microcontroller may perform a function (e.g., an encryption function, such as a hash function) on a subset of the file (e.g., an application image) to generate a digest that can be used to generate an authenticator. For example, a subset of one or more words (e.g., each long word) in a file (e.g., an application image) may be hashed to generate a digest that can be used to generate an authenticator, rather than hashing each byte in the file to generate a digest. In addition, upon receiving the file, the cryptographic element may attempt to authenticate the file. More specifically, the cryptographic element may perform a function on a subset of the file to generate a second digest that can be used together with the public key to verify the authenticator and authenticate the file.

[0018] Although various embodiments described herein refer to hash functions (and resulting digests thereof) as measurement methods, the disclosure is not limited thereto, and other measurement methods are also within the scope of the disclosure. As non-limiting examples, the measurement method may include and / or be based on HMAC (e.g., using a hash-based message authentication code, using a key), CMAC (e.g., using a message authentication code), or any other suitable method.

[0019] Various embodiments can significantly reduce the amount of time required for file authentication compared to conventional authentication methods while maintaining an adequate level of security. In one example, if every fourth byte of a file (e.g., an application image) is selected for hashing, the time required to generate a digest can be reduced by 75%. In these and other embodiments, key data bytes embedded in the code can be considered. For example, in addition to selecting every fourth byte, one or more key data bytes can be selected to be hashed. For another example, one or more key data bytes can be considered to determine a repeatable pattern of data segments to be selected. Key data bytes can be identified.

[0020] In another example, to authenticate an application image for a 32-bit processor, the hash portion of the authentication may be reduced, for example, by 66% or more. Higher percentages may be possible (e.g., if the selected subset of files used is derived from an evaluation of the code rather than being done automatically). In these and other embodiments, the speed of the authentication process may be increased. However, the speed of the authentication process may vary depending on the content of the files being authenticated.

[0021] For at least these reasons, as described more fully herein, various embodiments of the present disclosure provide technical solutions to one or more problems caused by technology that cannot be reasonably performed by humans, and various embodiments disclosed herein are rooted in computer technology to overcome the above-mentioned problems and / or challenges. In addition, at least some embodiments disclosed herein can improve computer-related technology by allowing computers to perform functions that were previously not executable by computers.

[0022] For convenience, some of the examples provided herein relate to authentication of application images, but it should be understood that any type of computer file (e.g., text files, camera image files, audio files, video files, or databases, among others) may be authenticated in a similar manner according to various embodiments of the present disclosure. In addition, some of the examples herein may refer to hash functions, but it should be understood that other types of cryptographic functions are also contemplated and included within embodiments of the present disclosure for both symmetric and asymmetric authentication methods.

[0023] "Computer" may mean a microcontroller and / or an embedded system in which a microcontroller and the microcontroller operate. "Computer file" may be defined as electronic and machine-readable, and embedded code (executable instructions and data) may be an example of a computer file. In addition, some examples herein are described as being implemented at least in part by a microcontroller. Such examples are non-limiting and may also be performed by any type of processor (including a microprocessor, a digital signal processor (DSP), a combinational logic implementing a state machine and a memory or a field programmable gate array (FPGA)) operating in conjunction with a memory, or performed in a computer, an embedded system, or other similar system or device.

[0024] Figure 1 1 is a simplified schematic block diagram of a system 100 configured to authenticate a computer file according to various embodiments of the present disclosure. In some embodiments, the authentication of a computer file may be performed during a secure boot, firmware update, or other setup that may require verification of a computer file. The computer file may be an application image or any other file, such as a data file.

[0025] The system 100, which may include an encryption system, includes a microcontroller 110 and an encryption element 120. For example, the microcontroller 110 may include a file 112 and a boot loader 114. The system 100 may include a processor (e.g., Figure 5 The microcontroller 110 of the processor 510 may also include other computer files ( Figure 1 As a non-limiting example, files 112 may include and may also be referred to herein as an "application image."

[0026] The cryptographic element 120 (which may also be referred to herein as a "secure node") may include a secure element (e.g., a secure cryptographic processor) configured to perform authentication (which may also be referred to herein as "verification") of a computer file, which in this example includes a copy of an application image. In some embodiments, the cryptographic element 120 may be separate from the microcontroller 110 (e.g., a separate integrated circuit), while in other embodiments, the cryptographic element 120 and the microcontroller 110 may be fabricated on the same integrated circuit, wherein the cryptographic element 120 is configured in a secure area.

[0027] While conventional methods may utilize the entire application image for authentication, as described above, some embodiments of the present disclosure may include selecting a subset of the application image to be used for authentication (e.g., a subset of data segments of the application image). In some embodiments, the entire application image, along with an identifier 118 that can be used to select the subset of the application image, may be sent from the microcontroller 110 (e.g., via a secure message) to the cryptographic element 120. In other embodiments, the authenticator and the subset of the application image may be sent to the cryptographic element 120 (e.g., via a secure message).

[0028] As will be described more fully herein, system 100, and more specifically, for example, microcontroller 110, can be configured to determine an identifier 118 that can be used to select a subset of data segments of an application image for authentication. As described more fully below, identifier 118 can identify and / or can be based on, among other things, an algorithm, a repeatable pattern, or a random number, without limitation.

[0029] In addition, according to various embodiments, the microcontroller 110 can perform a function (e.g., a cryptographic function, such as a hash function) on a selected subset of data segments of the application image to generate a digest signed by a private key (e.g., an OEM private key) 119 to create an authenticator 122. In addition, the microcontroller 110 can send the application image, the authenticator 122, and the identifier 118 to the cryptographic element 120.

[0030] Various embodiments may include authentication of symmetric and / or asymmetric encryption. Thus, for example, the authenticator 122 may include a message authentication code (MAC) and / or a digital signature. In some embodiments, a digital signature may be used to verify the integrity of a message and the identity of a sender (i.e., a message sender). A MAC is symmetric, and a MAC may use the same key for generation and verification (e.g., the same key may be used to generate a MAC and for verification of a MAC). A digital signature is asymmetric, and a digital signature may use a private key for generation and a public key for verification (e.g., a private key may be used to generate a signature, and a public key may be used to verify a signature).

[0031] The cryptographic element 120 may receive the application image, the identifier 118, and the authenticator 122 from the microcontroller 110. Using the identifier 118, the cryptographic element 120 may determine a selected subset of data segments of the application image, and perform a cryptographic function on the subset of data segments to generate a second digest 124 (e.g., a second hash). In addition, the cryptographic element 120 may perform authentication of the application image based on the second digest 124 and a public key (e.g., an OEM public key) 126 via verification by the authenticator 122. According to at least some embodiments, the authenticator (e.g., signature) and the public key may be securely stored (e.g., within the cryptographic element 120).

[0032] As described above, the subset of the file 112 may be determined based on an identifier (also referred to herein as a "secret identifier") 118, which may identify and / or be based on, among other things, a repeatable pattern, a random number, a pseudo-random distribution, or an algorithm. More specifically, the identifier 118, which may be determined by, for example, the system 100 (e.g., the microcontroller 110), may indicate how the subset of the file was determined (e.g., via an algorithm, via a repeatable pattern, or via a random number). In other words, the identifier 118 indicates which data segments were selected as a subset of the file. The identifier may be secret so that an adversary may not be able to determine which data segments were selected as a subset of the file.

[0033] According to some embodiments, the identifier 118 may be known to the encryption element 120 in order to perform the authentication. For example, the identifier 118 may be sent from the microprocessor 110 to the encryption element 120. In some embodiments, the identifier 118 may be used more than once in the process of authenticating multiple computer files and therefore is not uniquely associated with each instance of the image file. In some embodiments, each time a new computer file is to be authenticated, a new identifier 118 may be generated and then uniquely associated with each instance of the image file.

[0034] Figure 2 A set of data segments (e.g., bytes, each byte comprising 8 bits) is shown organized in rows 1 to n (where each row is also referred to as a "word"). In this example, a microcontroller (e.g., Figure 1 The microcontroller 110 may include a 32-bit microcontroller that organizes computer files into n words, where each word includes four data segments. In this example, the length of each data segment may be one byte (e.g., 8 bits). Other arrangements and sizes are also contemplated.

[0035] According to various embodiments of the present disclosure, a subset of data segments may be selected, such as Figure 3 As shown, the selected data segment is indicated by reference numeral 310, rather than selecting all data segments (e.g., bytes), as shown in FIG. Figure 2 More specifically, for example, Figure 3 In the set of data segments shown, every third data segment (e.g., byte) is selected (e.g., based on a repeatable pattern) for authentication. Figure 3 In the example of , the first data segment and the fourth data segment of row 1 may be selected, the third data segment of row 2 may be selected, the second byte of row 3 may be selected, and the first byte and the fourth byte of row 4 may be selected, etc. Thus, various embodiments may perform the encryption function for a repeatable pattern of data segments, such as, but not limited to, every other byte, every other three bytes, every other four bytes. In some embodiments, the microcontroller 110 may be configured to execute a deterministic algorithm to select data segments (e.g., bytes) to be hashed.

[0036] In other embodiments, a subset of data segments (e.g., bytes) may be selected based on a random (e.g., pseudo-random) distribution of the data segments. For example, a random number (e.g., a random 32-bit number) may be generated for selecting which data segments are used to generate a digest. In such examples, the 32-bit number may be a binary number (e.g., 10010001100011101010110011001111), wherein each bit of the random number corresponds to a byte in the bytes in the repeatable pattern throughout the computer file. For example, each logical 1 may correspond to a byte included in the hash, and each logical 0 may correspond to a byte not included in the hash. Of course, some embodiments may utilize a logical 0 to represent a byte to be hashed, and utilize a logical 1 to represent a byte not to be hashed.

[0037] If 't' equals the amount of time required to add a byte to the hash digest and 'n' equals the number of words, the time required to fully (i.e., per byte) hash an application image for a 32-bit processor may be 4nt. For a 32-bit processor, the time required to include only every four-byte subset of the application image is only 4nt / 4. Therefore, if every four bytes are hashed, the time required to generate the digest can be reduced by 75%, but security is maintained because it may not be feasible to significantly modify such a small amount of application images. If every three bytes are hashed, the time required to generate the digest can be reduced by 67%. If half a byte is hashed, the time reduction can be 50%. In larger systems (e.g., including 512 or 1K blocks with 32-bit words within the blocks), selecting address-aligned 32-bit words can be significantly faster than extracting bytes from 32-bit words.

[0038] In at least some embodiments, the determination for selecting data segments (e.g., to be hashed) can be based at least in part on the content of the computer file. For example, certain key data embedded in the code of the computer file can be marked and considered to be specifically selected for hashing. For example, certain areas of data space in the computer file can be designated to hash all bytes, while in other areas of the computer file, only a subset of bytes can be designated. Combinations of each of these approaches are also contemplated and are within the scope of the present disclosure.

[0039] For a computer file (e.g., an application image), for example, embodiments of the present disclosure can fully authenticate the computer file, and can detect any modification of the computer file (e.g., by an untrusted party). Various embodiments can reduce the amount of time required to hash a computer file to achieve an effective representation of the computer file, as compared to performing a hash on the entire computer file. Because selected data segments (e.g., bytes) are often interdependent when they are part of a computer file (e.g., an application image), a subset of the computer file can be selected so that it may be infeasible to significantly change the code without detection. Thus, a similar level of security can be achieved compared to conventional authentication methods.

[0040] Figure 4 4 is a flow chart of an example method 400 for authenticating a computer file. The method 400 may be arranged according to at least one embodiment described in the present disclosure. In some embodiments, the method 400 may be performed by a device or system such as Figure 1 System 100, System 500 (see Figure 5 ), one or more components thereof, or another system or device. In these and other embodiments, method 400 may be performed based on executing instructions stored on one or more non-transitory computer-readable media. Although shown as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the desired implementation.

[0041] Method 400 may begin at block 402, where a first digest may be generated by performing a cryptographic function on only a subset of data segments of a computer file, and method 400 may proceed to block 404. For example, the computer file may include an application image that includes a plurality of data segments (e.g., a plurality of bytes), and first digest 121 may be generated by hashing a subset of the plurality of data segments of the computer file (e.g., particularly but not limited to every 3rd or every 4th segment). Also, for example, first digest 121 may be generated by performing a cryptographic function on only a subset of data segments of a computer file. Figure 1 The microcontroller 110 generates. For example, a processor such as Figure 5 The processor 510 may generate a first summary 121 .

[0042] At block 404, an authenticator may be generated based on the first digest, and method 400 may proceed to block 406. For example, it may include, for example Figure 1 The MAC and / or digital signature of the microcontroller 110 may be generated by the authenticator 122 via the microcontroller 110. By way of example, a processor such as Figure 5 The processor 510 may generate an authenticator.

[0043] According to some embodiments, the actions of block 402 and / or block 404 may be performed by, for example, one or more designers (eg, firmware and / or software designers) who prepare computer files (eg, to be sent out of the field).

[0044] At block 406, the computer file and the authenticator may be transmitted to the cryptographic element, and the method 400 may proceed to block 408. For example, the computer file and the authenticator 122 (eg, a digital signature) may be transmitted from the microcontroller 110 to the cryptographic element 120 (see Figure 1 ).

[0045] At block 408, a second digest may be generated by performing a cryptographic function on only a subset of the data segments of the transferred computer file, and method 400 may proceed to block 410. For example, cryptographic element 120 may hash the same subset of the data segments of a computer file (e.g., an application image) to generate second digest 124. For example, a processor such as Figure 5 The processor 510 may generate the second summary 124 .

[0046] At block 410, the transmitted computer file may be authenticated via verification of the authenticator based on the second digest 124 and the public key. For example, the cryptographic element 120 may verify the transmitted authenticator 122 based on the second digest 124 and the public key 126 of the microcontroller 110 to authenticate the transmitted computer file. For example, a processor such as Figure 5 The processor 510 can authenticate computer files.

[0047] In some embodiments, the authenticator received at the cryptographic element 120 may be stored and used, for example, for secure boot. In addition, for example, after accepting new firmware, during secure boot, the actions of blocks 408 and 410 may be performed to verify the stored authenticator.

[0048] Without departing from the scope of the present disclosure, method 400 may be modified, added or omitted. For example, the operation of method 400 may be implemented in different orders. In addition, the operations and actions outlined are provided only as examples, and some of the operations and actions may be optional, combined into fewer operations and actions, or expanded into additional operations and actions without departing from the essence of the disclosed embodiments. For example, a data segment subset may be determined and / or selected, and in some embodiments, another data segment subset of a computer file not used for an encryption function may be determined and / or selected. In addition, for example, an identifier may be determined, and a data segment subset may be selected and / or determined based on an identifier. More specifically, an identifier that may indicate, in particular but not limited to, a repeatable pattern, a random number or an algorithm may be used to determine and / or select a data segment subset for authentication. In addition, in some embodiments, an identifier may be sent to encryption element 120 from microcontroller 110 (e.g., together with computer file and authenticator 122).

[0049] Figure 5 An example system 500 is shown according to at least one embodiment described herein. System 500 may include any suitable system, apparatus, or device configured for authenticating a file. System 500 may include a processor 510, a memory 530, a storage device 520, and a communication device 540, all of which may be communicatively coupled. Storage device 520 may include various types of data, such as public and private keys, authenticators, encryption functions, digests, and / or other data associated with authenticating a file.

[0050] In general, the processor 510 may include any suitable special or general purpose computer, computing entity, or processing device including various computer hardware or software modules, and may be configured to execute instructions stored on any suitable computer-readable storage medium, particularly the memory 530. For example, the processor 510 may include a microprocessor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or any other digital circuit or analog circuit configured to interpret and / or execute program instructions and / or process data. In some embodiments, the processor 510 may be part of the microcontroller 110 and / or the encryption element 120 (see Figure 1 ).

[0051] Despite Figure 5510 is shown as a single processor, but it should be understood that the processor 510 may include any number of processors distributed across any number of network locations or physical locations that are configured to perform any number of operations described herein, either individually or collectively. In some embodiments, the processor 510 may interpret and / or execute program instructions and / or process data stored in the memory 530, the storage device 520, or both. In some embodiments, the processor 510 may obtain program instructions from the storage device 520 and load the program instructions into the memory 530.

[0052] After the program instructions are loaded into the memory 530, the processor 510 may execute the program instructions, such as instructions for executing one or more blocks of the method 400 as described herein. For example, the processor 510 may select a subset of the data segments of the computer file via the identifier. In addition, the processor 510 may perform an encryption function on only the subset of the data segments of the computer file to generate a first digest. In addition, the processor 510 may generate an authenticator based on the first digest and the private key. In addition, the processor 510 may perform an encryption function on the subset of the data segments of the computer file to generate a second digest. In addition, the processor 510 may authenticate the computer file based on the second digest and the public key via verification of the authenticator.

[0053] Memory 530 and storage device 520 may include computer-readable storage media or one or more computer-readable storage media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable storage media may be any available media that can be accessed by a general or special purpose computer (such as processor 510).

[0054] By way of example and not limitation, such computer-readable storage media may include non-transitory computer-readable storage media including random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), compact disk read-only memory (CD-ROM) or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory devices (e.g., solid-state memory devices), or any other storage medium that can be used to carry or store computer-executable instructions or required program code in the form of data structures and can be accessed by general or special-purpose computers. Combinations of the above may also be included within the scope of computer-readable storage media. Computer-executable instructions may include, for example, instructions and data configured to cause the processor 510 to perform a certain operation or a set of operations.

[0055] The communication device 540 may include any component, device, system, or combination thereof configured to transmit or receive information through a network. In some embodiments, the communication device 540 may communicate with other devices at other locations, the same location, or even other components within the same system. For example, the communication device 540 may include a modem, a network card (wireless or wired), an infrared communication device, a wireless communication device (such as an antenna), and / or a chipset (such as a Bluetooth device, an 802.6 device (e.g., a metropolitan area network (MAN), a WiFi device, a WiMax device, a cellular communication facility, etc.), etc. The communication device 540 may allow data to be exchanged with a network and / or any other device or system described in the present disclosure. For example, the communication device 540 may allow the system 500 to communicate with other systems and / or devices.

[0056] Without departing from the scope of the present disclosure, modifications, additions, or omissions may be made to the system 500. For example, the storage device 520 may be a plurality of different storage media located in a plurality of locations and accessed by the processor 510 over a network.

[0057] As mentioned above, the embodiments described herein may include the use of a special purpose or general purpose computer (e.g., Figure 5 510), as discussed in more detail below. In addition, as described above, the embodiments described herein may utilize computer-readable media (e.g., Figure 5 The memory 530 or storage device 520) is implemented.

[0058] As used herein, the term "module" or "component" may refer to a component configured to execute a program that may be stored in, for example, Figure 1 The system 100 and / or Figure 5 The invention relates to a specific hardware implementation of the operations of a module or component and / or a software object or software routine on and / or executed by the system 500 of the present invention. In some embodiments, the different components and modules described herein may be implemented as objects or processes that execute (e.g., as independent threads) on a computing system. Although some of the systems and methods described herein are generally described as being implemented in software (stored on and / or executed by the system 500), specific hardware implementations or combinations of software and specific hardware implementations are also possible and contemplated. In this specification, a "computing entity" may include any computing system as defined herein, or any module or combination of modules running on a computing system such as the system 500.

[0059] Although certain exemplary embodiments have been described in conjunction with the accompanying drawings, those of ordinary skill in the art will recognize and appreciate that the scope of the present disclosure is not limited to those embodiments explicitly shown and described in the present disclosure. Rather, many additions, deletions, and modifications may be made to the embodiments described in the present disclosure to produce embodiments within the scope of the present disclosure, such as those specifically claimed, including legal equivalents. Additionally, features from one disclosed embodiment may be combined with features of another disclosed embodiment while still being included within the scope of the present disclosure as contemplated by the inventor.

Claims

1. A system for document authentication, the system comprising: One or more processors configured to: Based on the identifier, selecting a subset of data segments of a computer file for use in generating a first digest using a cryptographic function, the cryptographic function comprising a hash function, and the computer file comprising an application image; performing the cryptographic function on a selected subset of data segments of the computer file to generate the first digest; generating an authenticator based on the first digest and the private key; as well as sending the computer file, the identifier, and the authenticator to a security node, the security node comprising one or more other processors configured to: performing, at the security node, the cryptographic function on the subset of the data segments of the computer file to generate a second digest; and The computer file is authenticated via verification by the authenticator based on the second digest and the public key.

2. The system of claim 1, further comprising a microcontroller comprising the one or more processors, wherein the microcontroller and the security node are fabricated on the same integrated circuit. 3 . The system of claim 1 , wherein the one or more processors are configured to determine the identifier.

4. The system of claim 1, wherein the identifier identifies a repeatable pattern of data segments. 5 . The system of claim 4 , wherein the repeatable pattern is in the form of 1 data segment selected for every N data segments, where N is a positive integer.

6. The system of claim 1, wherein the identifier identifies a pseudo-random distribution of data segments of the computer file.

7. The system of claim 1, wherein the identifier comprises an algorithm, or is determined via an algorithm.

8. The system of claim 1, wherein the identifier comprises or is determined by a randomly generated number.

9. The system of claim 8, wherein the randomly generated number is represented by a binary digit, wherein each bit of the binary digit corresponds to a data segment within the subset of data segments or another subset of data segments of the computer file that was not selected for generating the digest.

10. A method for document authentication, the method comprising: selecting, via the identifier, a subset of data segments of a computer file, the computer file comprising an application image; performing, via the microcontroller, a cryptographic function on only the subset of the data segments of the computer file to generate a first digest, the cryptographic function comprising a hash function; generating, via the microcontroller, an authenticator based on the first digest and a private key; transmitting the computer file, the identifier, and the authenticator to an encryption element; performing, via the cryptographic element, the cryptographic function on the subset of the data segments of the computer file to generate a second digest; as well as The computer file is authenticated via the cryptographic element based on the second digest and the public key via verification by the authenticator.

11. The method of claim 10, wherein said performing the cryptographic function comprises performing a hash function on only a subset of the data segments of an application image.

12. The method of claim 10, further comprising determining the identifier via the microcontroller.

13. The method of claim 12, wherein said determining said identifier comprises determining a repeatable pattern of data segments of said computer file in the form of 1 data segment selected for every N data segments, wherein N is a positive integer.

14. The method of claim 12, wherein the determining the identifier comprises determining the identifier via one of an algorithm and a randomly generated number.

15. A non-transitory machine-readable medium storing instructions for document authentication, the instructions, in response to being executed by at least one processor of a system, causing the system to perform operations comprising: Selecting, via the identifier, a subset of data segments of the application image; performing a first hashing operation on only a subset of the data segments of the application image to generate a first digest; generating an authenticator based on the first digest and the private key; transmitting, via a secure message, at least the subset of data segments, the identifier, and the authenticator; performing a second hashing operation on the subset of data segments of the application image to generate a second digest; as well as The application image is authenticated via verification by the authenticator based on the second digest and the public key.

16. The non-transitory machine-readable medium of claim 15, wherein the selecting the subset of data segments comprises selecting a subset of bytes of the application image.

17. The non-transitory machine-readable medium of claim 15, the operations further comprising determining the identifier based on at least one of a repeatable pattern, a random number, and an algorithm.

18. The non-transitory machine-readable medium of claim 15, wherein the performing a second hashing operation comprises performing the second hashing operation on a secure cryptographic element.

19. The non-transitory machine-readable medium of claim 15, wherein the performing a first hashing operation comprises performing the first hashing operation on a microcontroller.

20. The non-transitory machine-readable medium of claim 15, wherein the performing the first hashing operation comprises performing the first hashing operation in response to at least one of a firmware update and a secure boot.

21. The non-transitory machine-readable medium of claim 15, the operations further comprising determining the identifier via a microcontroller.

22. The non-transitory machine-readable medium of claim 21, wherein transmitting comprises transmitting the at least the subset of data segments, the identifier, and the authenticator from the microcontroller to a secure cryptographic element.

Citation Information

Patent Citations

  • Optimized integrity verification procedures

    CN101443774A

  • Methods for firmware signature

    US20120005480A1

  • Offloading encryption to the client

    US9195851B1