Source: https://patents.google.com/patent/KR20120066018A/en
Timestamp: 2020-01-29 04:32:37
Document Index: 120793541

Matched Legal Cases: ['art 606', 'art 606', 'art 1102', 'art 302', 'art 1106', 'art 1108']

KR20120066018A - Auditing a divice - Google Patents
Auditing a divice Download PDF
KR20120066018A
KR20120066018A KR1020127006902A KR20127006902A KR20120066018A KR 20120066018 A KR20120066018 A KR 20120066018A KR 1020127006902 A KR1020127006902 A KR 1020127006902A KR 20127006902 A KR20127006902 A KR 20127006902A KR 20120066018 A KR20120066018 A KR 20120066018A
KR1020127006902A
KR101547165B1 (en
카를-앤더스 알. 요한슨
뵤른 마르쿠스 자콥슨
펫스컹크, 인코퍼레이티드
2009-08-17 Priority to US61/234,604 priority
2009-10-16 Priority to US12/580,891 priority
2009-11-02 Priority to US25704309P priority
2009-11-02 Priority to US61/257,043 priority
2009-12-14 Priority to US28636909P priority
2009-12-14 Priority to US61/286,369 priority
2010-03-01 Priority to US12/714,547 priority
2010-03-01 Priority to US12/714,547 priority patent/US8544089B2/en
2010-08-11 Application filed by 펫스컹크, 인코퍼레이티드 filed Critical 펫스컹크, 인코퍼레이티드
2012-06-21 Publication of KR20120066018A publication Critical patent/KR20120066018A/en
2015-08-25 Publication of KR101547165B1 publication Critical patent/KR101547165B1/en
Inspection of the device including the physical memory is initiated. One or more hardware parameters corresponding to the hardware configuration are received. Initialization information is also received. The physical memory is optionally read and at least one result is determined. The result is provided to the verifier.
Device inspection {AUDITING A DIVICE}
This application is filed on August 17, 2009, the entirety of which is hereby incorporated by reference in its entirety and is entitled US DETECTION OF MALWARE, US Provisional Patent Application 61 / 234,604, 11 November 2009. U.S. Provisional Patent Application 61 / 257,043, filed on May 2, entitled AUDITING A DEVICE, and filed on December 14, 2009, titled AUDITING A DEVICE. US Provisional Patent Application 61 / 286,369 claims priority.
Existing techniques for detecting the presence of unlicensed programs are typically resource intensive. For example, they require constant (eg blacklisted) updates, periodic or continuous scans for problems. This situation is exacerbated when a device protected by this technology has limited resources, such as being powered by a limited memory or battery. As one example, a device with limited resources may not store rules for detecting all known unlicensed programs. As another example, scanning for unlicensed programs is typically a power intensive activity and can quickly deplete the battery of a battery powered device. In some circumstances, a central authority may be used to facilitate the discovery of unauthorized programs. The disadvantage of this approach is that the protected device typically requires compiling detailed logs of device activity. Generating such logs is resource intensive (eg, large disk storage; processing power for assembling log data; and requires bandwidth for sending log data to a central authority), and may also represent privacy issues. have.
In addition, existing techniques for detecting the presence of unlicensed programs are generally vulnerable to attacks by these programs, resulting in inaccurate reporting. For example, a rootkit can "peep" requests made by applications to the operating system and transform these requests and their responses. If an application requires information about what processes are running, a malicious rootkit application can avoid detection by deleting information about itself from the report returned by the operating system.
In addition, existing techniques for screening for the installation or execution of unlicensed programs are known to be vulnerable to new instances of malware that cannot be detected immediately due to the lack of information about their structure and functionality. Thus, regardless of the resources available to the device, detection can be avoided and cause undetected harm if the unlicensed program is not sufficiently complex and / or previously faced. If an unlicensed program is intentionally installed by a user and bypasses detection (e.g., to facilitate software piracy), conventional techniques may not find an unlicensed program, or any other Unauthorized activities are not found.
It is an object of the present invention to provide a method for inspecting a device and a system therefor.
The present invention, process; Device; system; Composition of work; A computer program product embodied in a computer readable storage medium; And / or a processor, which may be implemented in a variety of ways, the processor being configured to execute stored instructions and / or instructions provided by a memory coupled to the processor. In this specification, these implementations, or any other type that the invention may take, may be referred to as techniques. In general, the order of the steps of the disclosed process may be varied within the scope of the present invention. Unless stated otherwise, a component such as a processor or memory that is described as being configured to perform a task is a general purpose component that is temporarily configured to perform a task at a given time or a special purpose component manufactured to perform the task. Can be implemented. As used herein, the term 'processor' refers to one or more devices, circuits, and / or processing cores configured to process data, such as computer program instructions.
The present invention provides a method for inspecting a device and a system therefor.
1 illustrates an embodiment of an environment in which device inspection is provided.
2 illustrates an embodiment of a device.
3 illustrates an embodiment of a process for performing device inspection.
4 illustrates an embodiment of a process for performing device inspection.
FIG. 5A illustrates aspects of a memory before execution of the process shown in FIG. 3. FIG.
FIG. 5B shows an aspect of a memory while the process shown in FIG. 3 is executed; FIG.
6 illustrates an embodiment of a process for performing device inspection.
FIG. 7 illustrates an example of pseudo code for use with device inspection. FIG.
8 illustrates an example of a process for performing device inspection.
9 illustrates an embodiment of an environment in which device inspection is provided.
10 illustrates an embodiment of a device section.
11 illustrates an embodiment of a process for performing device inspection.
Fig. 12 is a diagram showing a memory section read in accordance with the step.
FIG. 13 illustrates an embodiment of an implementation of a process for selectively reading memory. FIG.
14 illustrates an embodiment of an implementation of a process for timing part of a device check.
DETAILED DESCRIPTION A detailed description of one or more embodiments of the invention will be provided according to the accompanying drawings that illustrate the principles of the invention. The invention is described in conjunction with these embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention includes various alternatives, modifications and equivalents. Various specific details are set forth in the following description in order to provide a thorough understanding of the present invention. These details are provided for the purpose of illustration and the invention may be practiced according to the claims without some or all of these specific details. For the sake of clarity, technical material known in the art associated with the present invention has not been described in detail so as not to unnecessarily obscure the present invention.
1 illustrates an embodiment of an environment in which device inspection is provided. In the example shown, device 102 is a cellular telephone. Device 102 communicates with verifier 106 (eg, via network 104). In FIG. 1, device 102 communicates with verifier 106 via a 3G network. Verifier 106 is under the control of a carrier, such as a provider of telephony services for device 102. Verifier 106 includes a database of hardware configuration information that includes an entry corresponding to device 102 and the amount of RAM contained in device 102.
As will be described in more detail below, the device 102 can be examined so that any erased programs (eg, malware) present on the device can be detected and / or deleted. In some embodiments, this is done through the operation of a sequence of variations to the physical memory included in device 102. The results associated with the performance of the memory modifications are verified by the verifier 106. Once the device 102 is determined not to be affected by such an erase program, additional scans may also be performed, which will be described in more detail below. For example, in addition to detecting malware (eg, software installed without the user's awareness and / or consent), the techniques described herein may be used to bypass digital rights management installed by a carrier or hardware manufacturer. Can detect “jailbreaking” action (eg, privilege enhancements) taken by the user.
Various devices can be used with the techniques described herein. For example, in some embodiments device 102 is a video game console. The video game console is configured to communicate with the verifier under the control of the manufacturer of the game console via the Internet 104. If the owner of the device 102 makes an unauthorized change to the device 102 (eg, using a modification chip), the verifier 106 may detect the deformation accordingly.
Other examples of devices that may be used with the techniques described herein include desktop computers, notebook computers, netbooks, personal digital assistants, video playback devices (eg, televisions, DVD players, portable video players), routers, access points, set top boxes, medical devices, and virtually any other device including process and memory.
In various embodiments, verifier 106 is controlled by the user of device 102 instead of by a separate entity. For example, a desktop computer owned by a user of device 102 may be configured to provide verification services to device 102. In this scenario, the device 102 may be configured to communicate with the verifier via a local network. In addition, the device may be configured to communicate directly with the verifier 106 (eg, via a dedicated cable), and the network 104 is omitted as applicable.
In some embodiments, the verifier is integrated with or otherwise directly connected to the device 102. For example, a subscriber identity module (SIM) card inserted in a cellular phone may be configured to provide the functionality of the verifier 106 to the cellular phone. In another example, the functionality of the verifier 106 can be integrated into a power cord used to charge a cellular phone. In such embodiments, an external verifier may be omitted or used in addition to the verification services provided by an integrated / connected verifier. As an example, assume that device 102 is a personal video player with integrated WiFi functions. The power cord used to charge the device may be configured to provide verification services to the device each time it is charged. In addition, if the WiFi radio is active, the device may be configured to periodically communicate with a verifier provided by the manufacturer of the device. As another example, verifier 106 may be included in a USB device that is periodically inserted into laptop 102 by a user. In addition, whenever a user of laptop 102 attempts to conduct a financial transaction with an online bank, the bank may also provide verification services to laptop 102 before granting access to the user's account. As another example, a network operator or service provider may require a user to check his or her machine before he or she is authorized on the network or before being granted access to the service. Also, for example, after recognizing that he or she has been exposed to a potentially dangerous situation, the user may initiate the test. One way a user can initiate a test is to select a menu option on the device. Another example method is for a user to request a check from verifier 106 (eg, by submitting an online request via a web form).
2 illustrates an embodiment of a device. In the example shown, device 102 includes a processor 202, a first memory 204, a second memory 206, and a communication interface 208. As an example, device 102 includes a 528Mhz ARM processor 202, 128MB of RAM 204, a microSD card 206 with a 1GB microSD card inserted by a user, and a 3G modem 208. Memory 204 is also referred to herein as a "fast" memory. Memory 206 is also referred to herein as a "low speed" memory. However, the memories 204 and 206 need not be at different speeds. Other components may be included in device 102, such as a GPS receiver (not shown). In addition, elements such as the second memory 206 may be omitted as may be applied. RAM that can contain active programs can be referred to as high speed, and RAM that can only store data can be considered at low speed.
Using the inspection techniques described herein, the absence of active processes in high speed memory can be verified. And, after verification is complete, all of the memory (eg, both fast and slow) can be scanned to identify, classify, report, and potentially modify the contents of the fast and slow memory or portions thereof. The distinction between high speed and low speed memory can be made in a variety of ways. For example, for a device with RAM, flash memory and hard drive, only RAM can be treated as high speed memory and flash memory and hard drive as low speed memory. Also, both RAM and flash memories can be treated as high speed memory and the hard drive as low speed memory. It is also possible to consider at high speed all memory physically located in a given device and to consider at low speed all external memory accessible by (or potentially accessible by) the device. The turnaround time of communicating with external components will make this external access slower, regardless of the actual local access speed and type of external memory. Depending on what type of memory is handled at high speed and low speed, the selection of the parameters accordingly will be made.
As will be described in more detail below, the presence of an unlicensed variant for device 102 can be detected by configuring device 102 to execute a series of modifications to memory 204 and examining the results. have. For example, the presence of an ambiguous program may be indicated if the time taken to perform the modifications exceeds the tolerance of the predetermined length of time, or if the result determined in association with the modification does not match the predicted result. In various embodiments, memory modifications are performed across all memory (eg, memory 204 and memory 206) on the device, instead of running only on fast memory, such as memory 204.
3 illustrates an embodiment of a process for performing device inspection. In various embodiments, the process shown in FIG. 3 is performed by device 102. The process shown in FIG. 3 may be initiated in various ways. For example, the process may be initiated every time the user charges the device (eg, by configuring the device to initiate the process when power is detected). In addition, the process responds to the concern that the user is at risk, in particular in response to a certain amount of time elapsed (e.g., in response to the carrier receiving a notification that a new vulnerability has been deployed by an immoral individual), Or in response to the occurrence of unusual processing. Further examples of events that may trigger the initiation of the process shown in FIG. 3 include attempts by an user of the device 102 to make a payment or otherwise make a financial transaction, an authentication attempt (eg, when a user of the device has a bank account Attempts to access, and an access request being performed (eg, a request to download a movie to the device).
When one or more hardware parameters corresponding to the hardware configuration have been received, the process begins at 302. Exemplary hardware parameters include the capacity and speed of the fast memory 204. For example, for the device shown in FIG. 2, the hardware parameters would include "capacity = 128M" and "speed = 300Mhz". Additional parameters that can be used include the number of cores, the type of bus, and the like.
The hardware parameters can be received in various ways. As one example, the SIM of a cellular phone can be configured to detect the capacity and speed of installed memory. As another example, if the owner's cable is used to connect the device 102 to a power source (or a computer or other device), the parameters may be known because of the cable working only in conjunction with a device having a memory of a particular capacity and speed. (Thus "receives"). As another example, the serial number of the device may represent the capacity and speed of the fast memory 204 installed in the device. In various embodiments, the user (or representative thereof) is required to enter memory parameters into a web form or configuration file. In addition, assumptions can be made about the proper memory configuration of the device and a benchmarking program can be executed to verify that the assumptions are correct.
At 304, a sequence of modifications to the physical memory is performed. Examples of ways in which these modifications can be performed are described in more detail below. In some embodiments, the sequence of modifications performed is determined by the verifier. The set of variations can be provided to the device in various ways. For example, the sequence can be constructed on the device based on the seed value. The sequence may be pre-loaded on the device at manufacture, at delivery to a supplier or carrier, or at purchase. In addition, it is necessary to perform the inspection by the user's choice or at any time after purchase (such as over-the-update or firmware update), or by the service provider. May be loaded when present. Parameterization may be performed by the manufacturer or supplier or carrier, for certain known specifications. It may also be performed by the user or service provider, for example by examining the serial number. Parameters may be associated with a model or device name. If the device is reconfigured by replacement or addition of components, these new components may contain information about new or added parameterization. Also, components may contain a full set of instructions instead of just parameters. Alternatively, the serial numbers, names or types of components may indicate a necessary change in the parameters. If the client device is believed to be safe at the time of installation of an algorithm or new component, the client machine can query which components are installed (as is usually done when the system is booted) and set the parameters accordingly. Can be.
In various embodiments, the device manufacturer provides preload inactive inspection software free of charge and requests payment later to activate inspection services (and / or additional scanning services to be described in detail below). The inspection software can then be activated by the carriers upon request by end users or service providers. The carrier collects payment for activation and optionally sends a portion of the payment to handset manufacturers, suppliers of inspection software, suppliers of additional scanning software (eg antivirus detection services), and any other related to the transaction. Communicate to the parties.
At 306, one or more results of the portion of the process performed at 304 are reported to the verifier. In some embodiments, the results are provided to the proxy 906, where they timestamp the results and provide them to the verifier. As will be explained in conjunction with FIG. 5, in some embodiments, various iterations of variations to the memory and communications with the verifier are made, and the processes shown in FIGS. 3 and 4 are adapted accordingly.
4 illustrates an embodiment of a process for performing device inspection. In various embodiments, the process shown in FIG. 4 is performed by verifier 106. As noted above, in some embodiments, the process shown in FIG. 4 is performed by an entity separate from device 102 (such as on a validator controlled by a carrier). In another embodiment, the process is performed by a verifier located in device 102 or by a verifier physically connected to device 102.
The process begins at 402 when the results have been received. For example, when device 102 reports a result at 306, the results are received by the verifier at 402.
At 404, a determination is made whether the result received at 404 indicates whether a predicted sequence of physical modifications has been made. Verifier 106 is configured with information such as the amount of time that execution of the sequence of memory variants should take on device 106 (assuming no authorized modifications have been made). In some embodiments, the verifier 106 is also configured to store additional information, such as the results and seed values of the operation performed by the device 102.
If it is determined that a predicted sequence of physical memory variants has been made (eg, device 106 performs a sequence of memory variants), it is concluded that no unauthorized modifications have been made to the device (406). And, any avoidance process that may have been previously active on device 102 has been negated. If it is determined that a predicted sequence of physical memory variants has not been made (e.g., because the amount of time to perform the sequence is off or the calculated result is inaccurate), it is concluded that an unauthorized modification has been made to the device ( 406 (eg, an evasion process exists on the device and is attempting to evade detection). In various embodiments, error correction codes are used to avoid errors due to network noise. Message-authentication codes and other authentication techniques can be used to avoid active tampering with the content. Encryption techniques can be used to obfuscate content and make it impossible for eavesdroppers to determine plaintext messages that are being sent.
FIG. 5A shows aspects of the memory before execution of the process shown in FIG. 3. In the example shown, a kernel 502, a licensed program 504, an unlicensed program (eg, a malware agent) 508, and a checker program 506 are loaded into RAM. Typically, in order to reside on a device, the avoidance program needs to do one of two things. It must remain active in RAM (or swap space) or modify the legitimate program, data, or configuration of the device so that the malware agent can gain control after the scan is performed. As will be described in detail below, using the techniques described herein, the presence of a malware agent can be detected, regardless of techniques employing to avoid detection. In addition, using the techniques described herein, the presence of a malware agent may be detected even when the checker 506 is loaded after the malware agent 504.
FIG. 5B shows aspects of the memory while the process shown in FIG. 3 is occurring. As will be described in detail below, the inspector 506 is configured to clear the memory RAM (and any swap space) except for the space used by the inspector 506. In various embodiments, a minimalistic set of other services is also allowed to occupy RAM. For example, if device 102 supports 3G communications, the area of RAM occupied by the 3G driver / module is not cleared so that checker 506 can communicate with verifier 106 using a 3G modem. . As another example, in some embodiments, the microkernel is authorized to occupy a portion of the RAM so that the checker 506 clears the rest of the RAM.
6 shows an embodiment of a process for inspecting a device. When an inspector process running on a device, such as device 102, clears all portions (and any swap space) of memory 204 that are not required to be used by the inspector, the process begins at 602. In some embodiments, this includes unloading the kernel, various drivers, and all other processes. In various embodiments, unneeded memory space is overwritten by a sequence instead of being cleared (eg, zero). One example sequence is a pseudorandom sequence that is combined with the original memory content, such as using an XOR operation. This allows undesired memory space to be reconstructed later by repeated combinations with pseudorandom sequences that are complementary or equivalent to previously used pseudorandom sequences. Also, an unneeded memory space can be overwritten with content in a way that clears it, but this does not correspond to the normal erase operation of the device. For example, the unneeded memory can be cleared by writing the sequence of 01010101 or any other suitable sequence to the unneeded memory.
In some embodiments, the checker code includes two components of the loader and the variable algorithm segment. The loader's job is to load algorithm segments from non-RAM storage (eg, something other than memory 204), and pass control to the loaded algorithm segment. After the algorithm segment is complete, control is returned to the loader.
At 604, the content of memory 204 is reported to verifier 106. In some embodiments the entire content is reported. In other embodiments, only a description of the changes since the last inspection is conveyed.
At 606, the device receives a cryptographic seed from the verifier. The seed is extended with a pseudorandom string, and the string is written to RAM. An example technique for writing a string to RAM in accordance with portion 606 of process 600 is provided below.
At 608, the device receives an encryption key from the verifier.
At 610, the device computes a keyed hash of the entire contents of the device's RAM using the received key.
At 612, the device reports the result to the verifier. Verifier 106 evaluates the results according to, for example, the process shown in FIG.
In various embodiments, device 102 reports state information from computations at 606 and 610 at a time interval set by verifier 106. Use of these intervals provides confidence that the operations performed by device 102 are being performed in memory 204 (eg, not part of memory 206).
Device 102 obtains updates from validator 106 of the seed and each key as needed. The use of updates provides confidence that device 102 is not outsourcing operations to external high speed resources. For example, to outsource an operation, the evasion program would have to deliver seed and key updates to an external device, which would introduce a measurable delay.
The verifier 106 verifies that both the final function value and the partial results are correct and reported to the verifier by the device 102 within an acceptable time range. Exemplary techniques for evaluating the time it takes the inspector to perform its task are provided below. As noted above, in some embodiments verifier 106 is external to device 102 and is operated by a party other than the owner of the device. In some embodiments, verifier 106 is under the control of a user of device 102.
After the process shown in FIG. 6 is completed, the inspector 506 may recover the device's content completely or partially and may return control to a process that performs additional scans of previous active processes or memory content. . The contents of the fast memory can be swapped out to the slow memory prior to the execution of a regular operation, or restored if the original content has been combined with the string, the latter allowing a similar join to be performed to recover the previous state. Also, the device can be restarted by loading the "starting" state. It is also possible to first transfer control to the process of scanning, reviewing, reporting and modifying the contents of the memory, or any subset of these operations (as described in more detail below). The report may be submitted to a third party, such as verifier 106 or a person responsible for managing the processing of memory content. In the latter case, the verifier 106 is responsible for verifying that no active malicious process exists, and the second verifier is responsible for the processing of the device's memory to detect malware, digital rights management, or any device memory. Determines whether the content is compiled into a specific policy that can be associated with another policy that identifies whether it is desirable.
Example Hostile Strategy
RAM to avoid being detected, for example, during the 604 portion of the process shown in FIG. 6, as the native process 504 or as part of a corrupted version of the checker 506. Must be active in. The following are six example ways in which a avoidance program, such as malware agent 504, may attempt to remain active.
Strategy 1: Store Outsourcing
By preventing the checker 106 from clearing the appropriate space (e.g., at 602) and relying on non-RAM storage or external storage, the malware agent may be active in RAM and attempt to not be detected, Store the corresponding portion of the pseudorandom string generated at 606. The operation at 610 is then modified to use outsourced storage instead of the space in which the malware agent resides.
Strategy 2: missing data operations
Instead of outsourcing the storage of portions of the pseudorandom string, the malware agent may store a modified aspect of the string (eg, a compressed version, or a version lacking a portion), and is required during operation of the hashed key at 610. You can reconstruct the appropriate parts of the string accordingly. Since the malware agent has a seed from which a pseudorandom string is generated, this-or later state of the pseudorandom generator-can be used to recreate the required portions of the data.
Strategy 3: Operational Outsourcing
The malware agent can pass the relevant data to external devices (assuming that the necessary communication infrastructure, such as a WiFi connection, still functions). The external device receives data from device 102, computes the values needed for reporting to verifier 106, and gives these values to the malware agent on device 102.
Strategy 4: Detect Detection Code
The malware agent may attempt to replace the code of the checker 506 with the modified code. Such replacement code may be designed to suppress reporting of compromised memory content, or may include a hook to malware code to be loaded after the check is complete. The malware agent will attempt to incorporate these changes to the scanner 506 without taking up more space by swapping out or compressing portions of the inspection code and reloading or unpacking it when needed. Can be.
Fast memory filling
This section describes an example technique that can be used with the portion 606 of the process shown in FIG. 6.
7 illustrates an example of pseudo code for use with inspecting a device. In the example shown, the subroutine get _ permutation ranges from 0 to number _ blocks -1 , number _ blocks And it returns a vector describing the random permutation of the items, in which, _ number blocks is a number obtained by subtracting the number required by the tester at the number of portions of a size equal to the block containing the flash RAM. Subroutine next chunk _ _ string returns a chunk (chunk) of bits pseudo-randomly generated and: The term chunk is used to refer to a data amount that can be transmitted on the memory bus. As an example, for an Android G1 phone, the chunk is 32 bits.
get _ permutation And next _ string _ chunk All use the most recently provided seed as input. The pseudo-random string can be computed as segment i < -hash ( segment i -1 ) , that is, in a manner that cannot be computed using random access. One example is a function based on repeated application of the hash function, in the non-homomorphic properties of the hash functions. Various hash functions can be used. One example is MD6 in 512-bit mode.
The constant rounds is the number of times the pseudo-random chunk is XORed into the contents of the cell, using the function modify_memory . The choice of rounds controls the amount of work the antagonist must perform to perform the second antagonist strategy (missing data operations) and also causes an increase in the cost of honest execution of the algorithm for large values. In the example shown, rounds = 2, and the value of each cell will depend on two other cells, resulting in a significantly greater cost for the antagonist than when rounds = 1. This can confuse hostile memory management strategies. In the example shown, chunks _ per _ block is the number of chunks contained in the flash block, equal to 32768 (= 128 kB / 32 bits) for an exemplary G1 phone, and number _ blocks = 1024 (= 128 MB / 128 kB). .
The function modify _ memory ( pos , string ) XORs the position of the content pos with the value string , where pos = 0 represents the first chunk of RAM to be operated on, and pos = number _ blocks × chunks_per_block- 1 is the last chunk. .
The memory access structure described with FIG. 7 causes access to individual pages of randomly aligned blocks if the use of flash (eg, memory 206) instead of RAM 204 is forced. This will cause the flash to be cleared with an overwhelming probability, and the pseudo-random access order prevents the enemy from scheduling memory accesses to avoid this drawback. The cost of flash-bound operations is significantly more time consuming compared to RAM-bound, which is alternatively available for honest execution of algorithms.
In some embodiments, a hash function, an application is used to generate the next string _ _ Some chunk invocation (invocations). This relieves the burden of the operations associated with the checking process, which highlights the contribution of memory access in terms of time to perform the task.
In some embodiments, the input to the hash function is a constant number of previous outputs; This complicates the storage for malware agents that want to reconstruct the state of some portion of the pseudo random generator, and thus is useful for further frustrating any attempt to use strategy 2 (missing data operations).
This section describes example techniques that can be used to timing the execution of inspection tasks. For example, in some embodiments, the technique as described with the text corresponding to FIG. 6 is employed by the verifier 106.
Validator 106 is configured to timing execution of portions 606, 610 of the process shown in FIG. 6, eg, to identify attempts to outsource storage; Calculate missing data; Outsource operations.
In some embodiments, verifier 106 is configured to obtain status information from device 102 at frequent intervals (eg, set by verifier 106). One example of state information is the memory content of a recently updated memory chunk, which ensures that device 102 has reached this stage of operation. Verifier 106 sends update requests to device 102 at regular intervals. In some embodiments, the update request may include a subroutine next string _ _ physician that is used for calculating the output of the chunk - correspond to the updates of the state of a random generator. If the output of the subroutine next _ string _ chunk is generated by selecting an unused portion from a pseudo-random string that has already been created, the string can be cleared at the same time, thus causing the new seed to immediately affect the state.
The avoidance program employing hostile strategy 3 (ie, computation outsourcing) is pseudo-informed to the external device performing the operation after the external device has computed the resulting next value to be reported to the verifier 106 by the device 102. An update of the random string must be sent, which must be sent to the avoiding program. This causes a round-trip delay. If the round-trip delay exceeds the time between timing checkpoints, cheating will be detected. Here, an assumption is made that seeds and keys along with other state information are securely communicated between the client device and the verifier. Various cryptographic techniques can be used to accomplish this.
In various embodiments, the device specific time between checkpoints is pessimistic of an environment free of congestion, so that the time to outsource the operation using the communication facility (eg, WiFi) included in device 102 is increased. It is chosen not to be enough.
_ modify the execution time of the memory is determined by the type of hash function used to calculate the above-described parameters and selection, next string _ _ chunk. For example, the MD6 hash function can be configured with different output sizes ranging from 224 to 512 bits. As mentioned above, in some embodiments, a 512-bit version is used. modify _ time for the invocation of the memory is significantly less than the time between checkpoints as determined above.
Examples of Detecting Various Avoidance Programs
The following section provides examples of how avoidance programs employing the various strategies described above can be detected using the techniques described herein.
Defensive-Save Outsourcing for Hostile Strategy 1
Assume that an empty SD card has been inserted into device 102. The corresponding write speed can reach 5MB / s. In this example, the size of the block processed by modify_memory as described above is selected to be 128 kB. The time for writing data to the SD card is 25m. In comparison, the RAM on device 102 is assumed to have a write speed of 100 MB / s. The corresponding write time is 1.25 ms. Additional delays can be easily detected. If multiple accesses to the SD card are made between two checkpoints, additional delay will be detected more easily.
Defend against hostile strategy 2-deficit data operations
As mentioned above, the pseudo-random string can be computed in a manner that cannot be computed using random access. In order to compute a particular output value, the corresponding input needs to be calculated from the stored data. Since rounds > 1, the data stored in RAM is not this required state, but a combination of states of two or more rounds. The state needs to be explicitly stored (in RAM) by the malware agent as part of its code space, and the required state computed therefrom. This is in addition to the rounds x number _ blocks x chunks _ per _ block hash operations, in addition to the operations necessary for the malware agent to perform a "legitimate" operation during execution of the portion 610 of the process shown in FIG. Force at least (and in fact much more) computation. For the selected parameter selections, this is more than 100 million hash operations. For a suitable time 10 μs to compute the hash function invocation, this is approximately 1000 s, which is approximately three times the size that can be predicted and thus detected.
Sample evidence in response to the defense against Strategy 2 will be provided here. Assume that an avoiding program resides in memory 204 and occupies at least some of some c 32-bit chunks for itself and its variables. Although not possible, a pessimistic assumption can be made that all of these spaces can be effectively used to store variables, which reduces the burden on the amount of work that must be performed in order for malware to not be detected. Indeed, not all c chunks can be used for storage, and some are used to store the code, so the effort is greater.
For each one of c applied to RAM chunks that do not contain the values needed to compute the function, the malware agent must compute the predicted content. In this example, it is assumed that the original content was zero before RAM-filling was performed. Otherwise, the effort of the malware agent will be greater, allowing this assumption to establish lower limits on the effort of the malware agent. In order to compute the predicted update to this cell performed by the RAM-fill algorithm, the malware agent needs to compute the values for all rounds passes on the problematic memory chunk. Values XORed into memory come from a pseudo-random sequence. And it is only possible to reconstruct the state of the chain in the missing cell by computing the next _ string _ chunk value from the value stored by the malware agent in part of the storage of the c chunks. It is assumed that the variables are stored only in RAM, or that the malware agent needs to succeed in strategy 1 (storage outsourcing).
As mentioned above, the pseudo-random generator cannot be computed using the random-access scheme. When a given chunk size is 32 bits and the state size (= MD6 output size) is 512 bits, there are cases where L = 16 chunks are needed to store the state. The malware agent must reconstruct the sequence of hash function invocations from the location of the RAM associated with this state (which does not need to be where the malware agent has stored this state).
In random substitution for the cells during writing of the memory (the order cannot be predicted by the malware agent), the predicted length of the run for the string position corresponding to the stored state is at least rounds × n / (c / L ) , Where n = number _ blocks × chunks_per_block corresponds to the number of chunks the RAM contains, rounds × n is the length of the pseudo-random string, and c / L is the pseudo-random state stored by the malware agent. It is a number. Thus, for each hit for the "bad" cell, the malware agent must perform the predicted rounds xn × L / c invocation of next_string_chunk , which corresponds to rounds × n × / c . These c hits do not count hits to "bad" cells that occur when the malware agent attempts to compute one of the predicted states. Thus, the malware agent must perform at least rounds × n hash operations to compute the content of the c bad blocks from the stored content. The approximate time to do this (according to the exemplary implementation) is between at least 100,000-1,000,000, slower than the time of the legitimate client indicating that any attempt to compute missing data will be detected.
If an operation in the chain causes access to the cell used to store the value for another pass of the operation, this causes another hit to occur. This is the approximate probability (cc / rounds ) / c × c / number _ blocks = (cc / number_blocks) / number_blocks for each memory access.
will occur with c / number_blocks and, therefore, the approximate probability 1- (1-c / number_blocks) for any first bad cell hit as described above.
Has This approximation is approximate
to be. For rounds = 2, this is a probability of 98% or more. This additional cost will increase with increasing c values. Therefore, the adversaries will do their best to make c smaller.
In the following, it is assumed that the antagonist uses only c = L = 16 cells, and all 16 store one value. With this arrangement, in situations where the chain derives from the value in the "storage cell" to the value corresponding to the "program cell", the antagonist cannot compute the value (unless using external memory). I will not be able to. For rounds = 2, this failure occurs with a 75% probability. In the remaining 25% of cases, the antagonist will only be slow (when ever succeeds in computing its value, the antagonist needs to store at least round = 2 values, each 512 bits long).
Defend Against Hostile Power 3-Compute Outsourcing
In some embodiments, the time between checkpoints is selected such that there is no time to outsource the operation using communication equipment on the device. The time between checkpoints may be selected by the verifier 106 in a manner that makes it immediately detectable. Since the round trip must be completed between two checkpoints for that value provided by the antagonist, the strategy associated with outsourcing the operation will fail. It is independent of the communication speed between the client device and the verification party.
Defend against hostile strategy 4-detect code variants
If an unlicensed program 508 breaks execution in some steps (eg, as described with reference to FIG. 6), willingly loads the legitimate code and removes itself. This antagonist could potentially disrupt parts of the process 602, 604, but not part 606. Specifically, in order to remain active, it is necessary to disrupt part of the process 602 (clearing swap space and RAM). This may then lead to misreporting of the condition at 604. However, when the keyed hash of the memory content is computed (610), it will be detected. This is due both to the hypothesized collision-free of the hash function used and to the fact that no key is initiated to the device until 608. Portion 608 is not active during 606 and cannot collapse, which in turn will trigger detection as described above. And the avoidance program will not be able to compute the correct values reported at 612 without executing part 606 of the process shown in FIG.
Since each of these will be detected, combinations of the four hostile strategies will also fail, and these combinations do not change the basic device-specific restrictions.
8 shows an example of a process for performing device inspection. In various embodiments, the inspection processes described above form one phase of one of two (or more) phase processes (802). If the techniques described above have been employed for a device such as device 102, the assumption can be made that there is no evasion software active in the device's RAM. And any further processing can be performed on the device (804). Examples of additional processing that may be performed are described below.
After processing at 802 is performed, at 804, device 102 performs traditional antivirus software to identify known rogue software, which may be stored in memory 206. At 804, device 102 may be configured to report the entire contents of memory 206 or a portion of the memory to verifier 106 or another device.
After processing at 802 is performed, at 804, device 102 determines whether the operating system loader has a particular hash, and / or otherwise changes the operating system loader much from the desired state. Determine whether or not.
Example: Pawn Unlocking
After processing at 802 is performed, at 804, device 102 determines whether its operating system loader has changed, and also determines whether any information associated with the service provider has changed.
After processing at 802 is performed, at 804, device 102 determines whether any software contained in memory 206 has been modified from the expected configuration, verifies any associated serial numbers for the software, and And / or otherwise determine whether the included software is being used in an unlicensed / unlicensed manner. In some embodiments, device 102 reports the content or portion of memory 206 to verifier 106.
Assume that media files (eg, music, video or picture files) are customized using a watermark during distribution, and that watermark is encrypted and authenticated using, for example, a MAC or digital signature. . At 804, it may be determined whether the files present on device 102 have legitimate watermarks and whether they contain valid credentials. The decision may be made locally at device 102 or may be made centrally (eg, on verifier 106).
In various embodiments, applications (such as a music player installed on device 102) record usage and other data (which forms a log of activity) and associate this information with the appropriate media (eg, song files). To associate. The logs can be read by the verifier 106 at 804.
Example: custody chains / usage logs
Assume that an application (or data file) has an associated log used to record transactions. One example is a log file that records the occurrence of a financial transaction, including stored-value information. The legitimacy of the changes made to the log file can be verified as follows: First, processing of 802 is performed. Thereafter, at 804, a determination can be made (eg by comparing hashes of program images) as to whether the application (or data file) has changed and thus the log file is real.
One approach to the processing performed at 804 in this example is as follows. First, memory 206 is scanned and a list of applications and data files associated with the applications are created. Next, a list of descriptors and data files for the applications is determined. One example of a descriptor is a hash of a file, along with an identifier describing the name and type of the file and the matching string sequence (s). Next, a second list of arbitrary descriptions of applications or data not already reported in the first list is made. The description generated here may include a description of all or part of the code for the application, or what kind of input files were processed and the output files generated. The second list is sent to an external party, such as server 106, where it is verified. Also, the second list can be processed locally using any policy obtained from the policy verification server.
The results of the verification can be used to influence permissions for applications and data, and can be used by external servers, including whether they are authorized to access network resources (such as the Internet, 3G networks, organizational networks, etc.). It can be used to control how to interact with the device. As another example, software that is authorized to run on a device may be restricted, may notify the user of a lack of compliance, attempt to remove or recover files, otherwise modify the files, or the like. can do.
After the processing of 802 is performed, in various embodiments, additional malware is installed that can be configured to log (and / or block) various events with respect to the device. Examples include the following:
(a) Determination of which photographs were created on the device (eg, to prevent "sexting") and later sent out.
(b) Determining whether the device was used (eg, based on device activity and GPS changes) while moving at speeds higher than 20 miles per hour (eg, to text or watch a video clip).
(c) Determine whether optional applications (such as a second instant messaging program in addition to the default program) are installed to generate a log file for this optional application (eg, based on installation activity).
(d) Determining which URLs the user visited (eg, based on browser history information), including URLs manually navigated to other HTML documents accessed and URLs referenced. One advantage of such logging is whether an individual is susceptible to phishing; Visited websites known to distribute unwanted content, including malware; And whether the device is susceptible to click-fraud. Such abuse can be achieved without infection of the device itself, for example with the use of JavaScript, cascading style sheets, and / or other related scripting languages.
In addition to the examples described above, more uses of the techniques described herein are possible. For example, device inspection can be used on vehicle black boxes for metrology usage, insurance purposes, tax rates, taxes, fees, etc.-all identifying malware and intentional tampering.
Device inspection techniques can be included in components in other applications such that these applications temporarily suspend themselves to perform scans and are later controlled again in a known clean state.
As another example, these techniques can be used in medical devices to determine whether knowing who accessed data and equipment is not infected, correctly configured and managed to examine the use of precious special cases. . Problematic devices can log usage information at any time in a way that a preloaded application cannot interfere with; The inspection process asserts that the preloaded applications, including the memory print scan, are still in good condition, and that there are no conflicting applications or configurations.
Finally, these techniques can be used to detect malware in situations where there is no need for treatment or in situations where there is no major goal. One such situation is to detect the absence of modules cheating games in online games.
In some embodiments, descriptions of all states (eg, content of memory 204) are passed to verifier 106. However, it is desirable that some data, such as private keys and non-executable personal data, should not be delivered to device 102. In the sections that follow, techniques for protecting the privacy of such data are described.
The first random number is called x, and it is assumed that it is selected from some space of possible values, 1 .. max x . Apart from providing input to the intended inspection process, it is possible for x to encode malware. The legal program calculates a one-way function value y from input data x and some system parameters called (g 1 , n 1 ). One exemplary way to do this is to compute y = g 1 x modulo n 1 , where g 1 creates a large subgroup of G n1 .
The program then computes a second one-way function value z from the values y and some system parameters called (g 2 , n 2 ). One example way of doing this is to compute z = g 2 y modulo n2, where g 2 creates a large subgroup of G n2 .
Next, the client machine (e.g., using a zero knowledge proof)
It is assumed that the value x to be proved to exist, where (z, g 1 , g 2 , n 1 , n 2 ) is known to the verifier, but (z, x) is unknown. After that, the device ("prover") deletes the value x (y, z) but stores the parameters g 1 , g 2 , n 1 , n 2 .
In a later time, the device is secret but storing and must prove the value y corresponding to the value z (where z can be stored on device 102, but can also be stored by verifier 106). ). One example proof that can be used is a zero knowledge proof.
If the second proof is concluded and the verifier 106 accepts it, the verifier recognizes that the unknown value stored by the client, z, is in a format that cannot be used to hide a significant amount of data from the malware agent.
Here, z can be used to encrypt some other data called m, the ciphertext being referred to as c. Therefore, c = E 2 (m) for the encryption algorithm E. Assume symmetric encryption m = D 2 (c) for some decryption algorithms D. The device content can be verified, but m remains unknown to the party receiving c. The party will not know z and only know that z is in some acceptable form, unable to hide a significant amount of malware data. The inspection process described herein enables the verifier party to ensure that only legitimate programs exist in the RAM of the client device, so that it can be known that the programs can access m at a given c using the secret value z. Can be. However, the verifier is unknown.
Since it is known that accessing the program is legal, it is also known that m will only be accessed in an approved manner. For example, if m is data and not code, then accessing the program does not attempt to execute the data.
Use a pseudo random string generator
9 illustrates an embodiment of an environment in which device inspection is provided. In the example shown, device 902 includes a SIM configured to act as proxy 906 for external verifier 904, in addition to the components shown in FIG. As will be described in more detail below, the monolith kernel stored in the instruction cache of the device 102 (which, in its entirety, fits in) is all (except for any process selected as an exception) when activated. Swapping out other processes and performing the inspection process. The monolith kernel has an associated workspace located in the data cache (and registers). Caches are typically implemented using RAM and are considered part of it. As used herein, "free RAM" is the portion of RAM that should be freed after all applications have been swapped out, including the regular kernel. In some embodiments, “free RAM” is defined as a segment of RAM that is not occupied by a set of approved routines and data. For example, a regular kernel may be approved routines and may be a common, whitelisted application. In addition, the approved data may correspond to data known by an external verifier and may be in any format as long as it is whitelisted (ie, as long as it is believed to be safe). In such cases, the approved programs do not need to be swapped out to secondary storage (described in more detail below), but may instead reside during the memory read portion of the test (eg, 1108).
In some embodiments, the monolithic kernel corresponds to Programs F ε, it is to parameterize the known execution environment ε. As mentioned above, the execution environment corresponds to the hardware configuration of the device. Running Fε on input x in respectively in the time ti (F ε, x) from the start of the run to produce a sequence of outputs of F εi (F ε, x) and generates a shutdown state s (Fε, x). In this example, x∈X, where X is the set of all legal inputs.
The proxy 906 is used to reduce the change in latency from the device and is implemented in various embodiments as a tethered cellular phone, cell phone tower, etc. instead of or in addition to the SIM. do. In some embodiments, external verifier 904 performs an initial operation (described in more detail below), and passes a portion of the information to proxy 906 (eg, secure) using device 902 as an intermediary. Communication). The proxy 906 timings the operations performed by the monolith kernel and reports this timing value back to the external verifier 904. In some embodiments, external devices such as tethered cell phones or computers, base stations or additional external verifiers are used instead of or in addition to the proxy 906. It is also possible to use software proxies where modifications are deemed to be suppressed, or to use special purpose hardware proxies.
10 illustrates one embodiment of a portion of a device. As mentioned above, "free" RAM is defined as the portion of RAM that must be empty after all application and standard kernels have been swapped out. The width of the bus is word. The size of the memory can also be described in words. For example, a 512 byte memory page as shown in FIG. 10 has 128 words in a standard handset, and a word is 32 bits. As used herein, “chunk” is the length of a cache line. In the example shown, the cache line corresponds to 8 words, each of which is 32 bits, so the chunk is 256 bits.
11 is an embodiment of a process for performing device inspection. In various embodiments, the process shown in FIG. 11 is performed by device 902. This process is configured to expect the operations to complete within a certain amount of time. Any change in the estimated amount of free RAM and any attempt to access secondary storage 1004 results in an extension of the amount of observable time that operations take to complete. Similarly, changing the content of any whitelisted programs or related data will result in computation of delayed or incorrect responses.
The process shown in FIG. 11 may be initiated in various ways, such as those described with the process shown in FIG. 3. As further examples, the monitoring process may be included in a shutdown or boot route. It is also possible for an application to initiate a monitoring process. This application will be suspended, and once processing has been performed and completed, control will take over again to the application. In some embodiments, the application queries the central authority for information about how recently the last scan was performed. The SIM card can store information as to when the scan was performed. If your SIM card has the ability to keep track of time, you can give the actual time as an answer. Otherwise, you can give a time estimate based on the number of transactions observed, many of which will be known to be periodic. This information can be used to evaluate the duration since the last scan.
The process starts at 1102 when the contents of the memory 1002 except for the monolithic kernel 1006 (and any processes deemed acceptable to hold) are swapped to the secondary storage 1004. In some embodiments, portion 1102 of the process includes swapping out a regular kernel, or portions thereof. Important features, such as device drivers for serial communication, are re-executed in the monolith kernel 1106. In various embodiments, the content is verbatim swapped out, swapped out with a concise description of the content, stored in a proxy, external verifier, or other trusted device, or stored in RAM in a state that cannot be used for activation code. (For example, it is possible to store instructions in a portion of a cache that is dedicated to data rather than instructions.) In some embodiments, there is no “free” space, and part 1102 of the process shown in FIG. Is omitted.
At 1104, one or more hardware parameters corresponding to the hardware configuration are received. This part of the process is similar to part 302 of the process shown in FIG. Also at 1104, initialization information is received, such as a seed, that can be used to generate a pseudorandom string. Another example of initialization information includes a step value and a key value, as will be described in detail below.
At 1106, the free RAM is overwritten. In some embodiments, the output of the pseudorandom string generated using the seed is used to overwrite the free RAM. One technique for overwriting the free RAM is to create an n 2 bit pseudorandom string with specific properties, where any one of the output bits occupies at least half of the operation length of the entire block of bits, or 512 bits. The mode will occupy at least 512 applications of MD6. This technique uses three states and iterates (with different aux values) until the output strings fill the entire free RAM.
1. Generation: Using the hash function h (eg MD6) with output size "n" bits, the value x i = h ( seed , i, aux ) (0≤i≤n-1), and some Create an aux value. This produces n 2 pseudorandom bits.
( 0≤j≤n-1 ), and BIT j is a function that returns the jth most significant bit of the input. This shuffles the bits in a manner that requires operations of all n hash function applications to reconstruct any of the values.
3. Blending: compute z j = h ( y j ) for 0≤j≤n-1 . This ensures that each bit of the output is a function of all n input bits, each of which requires one hash function evaluation for the operation.
In various embodiments, additional shuffling and blending are performed to further increase the cost of computing any portion of the final string. Additionally, other techniques of overwriting the free RAM may be used in place of the example technique described with part 1106 of the process shown in FIG.
At 1108, memory 1002 (or a portion thereof) is read in a manner determined by the "step" value. The results are cumulative and the operation is keyed using the key. In various embodiments, the processing of portion 1108 is performed by a memory access scheduler and accumulator, each of which will now be described in more detail.
Assume that "sRAM" is the size of RAM 1002 measured in chunks as a whole. The external verifier 904 will select a random value step in the range of page <step <sRAM-page, where “step” is an odd value. Here, "page" represents the size of one memory page in secondary storage measured in chunks. If there are several page sizes (eg, there are some components that make up secondary storage), the largest page sizes are used in various embodiments.
Performing the processing of 1108 includes a loop in which memory is accessed, and the results are combined to form a keyed memory checksum. For each iteration of the loop, the access location is increased by the step value, modulo sRAM. Because "step" and sRAM are relatively important, all RAM memory locations will be accessed exactly once. Also, the access order will not be known to the antagonist until the "step" value is published. A description of the memory 1002 read in accordance with "step" is provided in FIG.
In the example shown in FIG. 9, device 902 includes a single, single core CPU. In a system such as laptop computers including multi-core processors and / or multiple processors, the processing of 1108 may be configured in an essentially serial (and thus preventing the use of multiple processors) or in a manner using multiple processors. Can be. As an example of the latter, some operations may start with an offset such that each thread corresponds to a different portion of memory so that there is no conflict.
Memory content can be accumulated in a register using a simple nonlinear function that combines the old register content (called "state" herein) with the newly read memory content data one by one. Examples of cumulative functions include hash functions (eg, MD6); Nonlinear shift-back register; And simpler functions.
An example of a simpler function is state ← ROR (state + data). The latter function corresponds to the function ROR (... (ROR (state 0 + data 1 ) + data 2 ) ... + data n ), where "+" refers to the normal addition and "ROR" to the register. Rotate the content 1 bit to the right. In this case, the function itself may not be nonlinear, but it is nevertheless sufficient to meet the required processing requirements when combined with a priori unknown step size and strict timing requirements.
As mentioned above, in various embodiments, the cumulative processing is keyed. One way to do this is to offset the "state" value to new "key" values (obtained from an external verifier or proxy) at regular intervals. The offset can be performed by adding a new key value to the current state value.
Furthermore, although the process described with 1108 is based on read memory, in some embodiments a write operation is included to cause additional flash based slowdowns. As an example, a sequence of " 1 " is written to cause the entire block to be erased and the data stored in the flash. To simplify the scheduling of where to write (and to the monolith kernel), the location can be obtained from the proxy as new key values are obtained.
Various other sequences of memory accesses may be performed at 1108. For example, it is possible to use two step values instead of one step, both of which may be even, but most of them allow all space to be covered. It is also possible to use a set of numbers or parameters to determine a function of selecting a sequence of locations. It is possible to regard this as the maximum length sequence, where the outputs are locations and the maximum length sequence includes all values within a predetermined range corresponding to memory locations. In order to avoid accessing certain areas (eg monolith kernel), it is possible to offset these values, which is desirable. For the maximum length sequence, the key provided by the external verifier or proxy may be in its initial state, or weights associated with the various cells of the LFSR.
At 1110, a keyed operation is provided to the external verifier 904. If the external verifier approves the results, the device 902 is considered to be in a safe state.
At 1112, device 902 executes any functions that should be executed in a secure state. Examples include establishing an SSL connection, voting, entering a password, scanning secondary storage for malicious / unwanted programs, and the like. In various embodiments, if the code of a steady state function is present in secondary storage (ie, not part of a monolithic kernel), the digest of the function is compared to the value stored in the monolith kernel (or on the proxy). . This function is only active if the values match. In various embodiments, if the proxy can perform a message digest operation, the monolithic kernel does not need to contain code to do the same.
At 1114, the state of RAM 1002 is restored by loading the contents of secondary storage 1004 (swapping out at 1102).
Many of the potential loads of the process shown in FIG. 11 include swapping out and swapping back applications and data from RAM to secondary storage. For example, it is possible to avoid this to save time. This is done by killing the application. If an external verifier or other resource knows which applications are running, and potentially their state or parts thereof, it is possible to help to restart the selected applications after the inspection process is executed. It is possible for a secondary storage or SIM card or other onboard unit to retain some of this information. It is possible to identify applications and data by their shorter identifiers, rather than by their entire strings, to save space and time. It is possible to have a similar algorithm that mainly recreates the same state after the detection algorithm is executed. For example, this may restart the browser but fails to restore the browser content.
Also, if running applications take up only part of RAM, there is no need to swap them out. For example, suppose they occupy only half of RAM. For each cell (number i) in the free RAM, copy the contents of that cell to a higher position up to (position 2i). This is preferably done starting from the end (the larger numbered position). This effectively partitions the applications, leaving them only in even positions. Now, pseudorandom values only require a selection bet written in odd positions, and only need to perform nonlinear accumulation of odd cells. It is noted that it is not possible for any functional malware to remain active. However, malware can only exist if the instructions are "jump to next open space" and the next instruction is present. All spaces that are not duplicated by the pseudorandom data will be skipped (no more space exists in the contiguous space), indicating that the malware cannot acquire anything. Larger distances between slices are possible, especially if the space is not predictable by the antagonist. This distance can be predicted, for example, by a sequence generator whose different distances are different lengths. The spread of data and programs in RAM can be combined with offsetting them with random strings. The microkernel (the program responsible for malware detection) will not spread in this way because it needs to remain allowed to execute.
In conjunction with FIG. 11, a description has been given of how the RAM can be read using a step size not known a priori. It is also possible to write to (free) RAM using one or more step sizes that may not be known a priori. One effect of this is that an attacker who wants to store information on secondary storage writes to secondary storage. These delays are greater than the read delays if the secondary storage uses flash. With a simple step increment module where integers corresponding to ranges are written-it is possible to use an offset in addition to the monolithic kernel if it is not present at high addresses. It is also possible to identify whether a cell to be written is in a range that should not be written, without using a particular module for arithmetic in response to using a modulo corresponding to the addressable RAM space.
13 illustrates an embodiment of an implementation of a process for selectively reading a memory. In some embodiments, FIG. 13 is used to execute a portion of part 1108 of the process shown in FIG.
In some embodiments, overall use of the data cache is made. Specifically, data is processed in chunks with the width of a cache line, typically in the range of 8 to 512 bytes. In the following, the parameter " α " represents the width of the cache line in words. The parameter "period" corresponds to the length of the timing periods. This is set to correspond to a time shorter than an optimistic roundtrip latency from the device 902 to a potential external helper. The reported values and the timing at which they were reported are recorded by the proxy 906.
Examples of Detection of Various Avoidance Programs
The section below provides examples of how avoidance programs that utilize the various strategies described above can be detected using the techniques described herein. In order to successfully used to avoid the detection, the antagonist is to provide the correct responses εi F (x) in the expected time t i (F ε, x) + δ. There are various ways in which this can be attempted by the antagonist, each of which will now be described.
Defend against enemy strategies 1-External Support
The "key" and "step" values communicate with the proxy over a secure channel. The value of "state" is reported for each iteration of the outer loop. The operation of these values depends on the "key" value. Thus, it is not possible for an external device to help generate the responses if the roundtrip latency (from the transmission of the key value to the reception of the operation result) exceeds the time threshold t i (F ε , x) + δ . Where t i (F ε , x) is the time for F ε to generate the response.
Defending against antagonist strategies Use of secondary storage
Suppose the antagonist has several "k" words of data in RAM and an image of the "intended" content of this area is kept in secondary storage. If F ε tried to access one of the transformed cells, F 'accesses the image in the secondary storage instead.
This can be done in three ways: (a) the entire RAM can be imaged in the secondary storage, so that each access is made there, and (b) each memory access of F ε is in a certain range. Is replaced by a comparison of addresses for, and select access attempts are only redirected to secondary storage; (c) Translation Lookaside Buffer (TLB) is used to automatically reroute accesses to selected ranges.
In the first case, each memory access will experience a delay associated with accessing secondary storage instead of RAM. In the second case, only rerouted accesss suffer this delay, but for each memory access, a comparison must be made. In the third case, a delay is charged only for rerouted accesses. However, due to the somewhat granularity of the TLB, there is a minimum number of cells to which access can be rerouted.
Defend against the antagonist strategy 3-Use of RAM
Due to the construction of the pseudorandom string used to fill the free RAM, the operation of any one cell will require computation of at least 512 hash function evaluations, in some embodiments the value in each cell This is because the input is part of a second layer hash function output that is a function of the 512 first level hash function evaluations.
Assume there is a setup cost for each hash function operation, which is at least 1156 clock cycles. At the same time, once the hash operation for MD6-512 has been set-up-this is 155 cycles per byte, or 9920 cycles for 64-bit input. Both of them assume optimized code and a typical 32-bit processor. Thus, the total cost for hash function evaluation in this setup is 11076 cycles. The operation of the contents of only one cell in RAM will take at least (512 + 1) * 11076 cycles.
Use of proxies for timing
As mentioned above, in some embodiments, an external verifier is used to distribute new seeds and to timing the arrival time of values from timing checkpoints. Exemplary models of communication between an inspected device and an external verifier include (a) a physical connection; And (b) a VPN between the external verifier and the SIM card. Data down is encrypted, data up is authenticated and / or two-way authentication occurs.
If no physical connection is used between the device and the verifier, changes in latency can confuse the timing of the operation. Thus, in some embodiments a proxy (with less latency change) is used to support timing. One example hardware that can be used as a proxy is a SIM card.
The proxy can be used to reduce the changes associated with the start of the operation. This applies to both full computational tasks and subtasks. All of these can be initialized by sending the key or seed required for the operation and ensuring that the operation does not begin until the key or seed is received.
The SIM card receives the encrypted seeds, decrypts them, and provides values to the device 902. This unnecessary time can be made relative to other events observed on the device. Consider triplets (location, data, seed) and consider that the verifier creates these triplets and sends them to the SIM card in an encrypted and authenticated manner. Here, a location describes an operation step (or stage) within a program, and the data describes some of the same states associated with that location. The operation can be expected by an external verifier, or assume that a small number of very likely computational paths can be expected.
This allows an external verifier to compute these triplets, thereby predicting which data (or state) is observable on the device at a given location (or stage). The seed, which is the third element of the triple, represents a value to be distributed to the device when a certain state related to location and data is reached.
The SIM card will send a "value" location to the device if it cannot be calculated or predicted by the device or received from elsewhere. When the operation reaches the stage associated with the value location (which may be a loop iteration value), the software on the device sends the most recently computed value of some predetermined type—or part thereof—to the SIM card. This may be the most recently computed value, the contents of a given register, or any other suitable value. The SIM card compares this value with the data value associated with the location and responds with the seed value if they are the same or equivalent. The device replaces the current seed value with this new value for the seed. This allows the device to replace the seed when computing some value that guarantees that a given computation stage has been reached. The new seed has not been publicly available before, so it has security benefits. In contrast, independent of whether these reported values are correct, new seeds can be published as soon as new results are reported; Any reported value is recorded along with when it was received, allowing the verifier to determine if incorrect results were received later, or if there were significant delays. Reports sent by the proxy can be compressed or digested if possible to save bandwidth.
If a match is made, the operation reaches a predetermined checkpoint associated with the triple (location, data, seed) and the associated seed value is distributed.
In some embodiments, the SIM card has a long vector, such as triples, and selects the first one in the line or any one matching the input (if there are branches unpredictable by the external verifier unit). do. If a predictable location is used, it is possible to omit the location value. The SIM card can obtain a long list of triples without being intercepted by the handset or other parties, which is made possible by the use of point-to-point encryption between the external verifier (or associated proxy) and the SIM card.
It is also possible to use verifier initiation events instead of value data. Thus, if such an event is observed by the SIM card, the associated seed value is released and the device operation is started with this value. This can be used to initiate clocking. This may be done by, for example, a device that must provide some data that may be delivered to the handset by an external verifier to initiate the computer.
Some seed values may be empty, in which case no seed value is passed to the device. This can be used to check what point of communication the handset has reached.
The SIM card does not need to be clocked (and therefore does not need to know the time), and can operate in a hostile environment (except for a global search by malicious code on the handset for the purpose of obtaining seed values in a quick manner). Value "data" long enough).
The end of the operation may be identified by having a checkpoint as described above, after which the SIM card may report the operation time to an external verifier, or the external verifier may calculate an estimate of the time between the start and end of the operation. Report the information to make it available. In the former case, a set of local time values may be recorded by the SIM card for reaching a checkpoint. This can be recorded as a list of pairs (location, time), where the time value can be local time which need not be synchronized with the time concept of the external verifier. Alternatively, the pair of reported values and the associated time may be recorded. The SIM card can authenticate this list, send it to an external verifier to verify that the authentication is correct, and then make a decision on how long the various computational tasks take. This can be used to infer the security status of the device. In addition, the SIM card can make this security decision and send the authenticated result of the decision to an external verifier.
Even without the ability to determine time, the SIM card can arrange events. When receiving packets from a verifier (or any entity working with the verifier, not malware), it will determine which device reported event occurred most recently. This corresponds to the "data" value received and verified to be correct. Thus, data values may be generated by a device (some given computational task set or known by an external verifier) or may be the result of communication from an external verifier.
In order to handle delayed reporting on the SIM card intentionally, it is possible to request immediate acknowledgment by the SIM card to the external verifier once the event packet is received. These messages have a format that is authenticated and / or unpredictable by the malware agent. An exemplary approach is to configure this by having the value "data" correspond to an event from an external verifier and having the device report it to the external verifier once the associated value "seed" is received from the SIM card. The external verifier can then time the arrival time of this acknowledgment after the preceding packet has been transmitted. Alternatively, the device may be allowed to report values corresponding to "data" directly to an external verifier. This can be done for some of all checkpoints, or for additional checkpoints.
Suppose after the event E occurs but before any other events occur (and, if correctly verified by the SIM card), the packet identified by the string S has been received by the SIM card. Then pairs (S, E) are added to log L. Alternatively, the identifiers of the strings S and E are added to the log. The log is communicated to the verifier at the end of the communication. Alternatively, ordering information is communicated to an external verifier.
In some embodiments, triplets (location, data, report) are added to the vector, where "report" is a value representing the report sent to the verifier. This can be done using a regular seed value, where the last seed value released is the value the device communicates to the verifier to stop timing. Timing can be stopped by having the device perform some additional keyed task and report values in exchange for seeds, in which case the arrival of the next packet with the string S will identify when timing is stopped (intention) After the calculated operation is finished, it is extrapolated from the apparent number of cycles computed).
Once timing ends, the SIM card encrypts the log (and potentially authenticates) and sends it to the device for transmission to the verifier. The verifier determines that it is properly authenticated, decrypts it, and then determines from the log about the completion time of the partial phase of communication and some information about the transmission times of the packets including a value such as S. You may know when they were sent by the base station closest to the handset, or when they were processed by the network proxy or by the producer of the packet itself.
In some embodiments, the value S is generated by a trusted beacon and is potentially unknown until the operation is initiated on the device by an external verifier.
Some types of packets, such as those containing S, do not need to be encrypted before they are sent over the network. In some embodiments, they are authenticated. However, verification by the SIM card as to whether the packet has the correct authentication does not need to be done before the prelog entry is compiled. If authentication verification fails for a log entry that has already been compiled, this log entry can be cleared.
SIM cards are half-duplex, that is, they cannot receive and transmit data simultaneously. SIM cards act as slaves, i.e., after being requested, they will only pass data to the attached device (our handset) (with some special exceptions, such as when they are powered up). However, some smart cards can operate independently between queries from their related handsets, as well as as a queried reaction.
If the SIM card supports multithreading, one thread can perform a simple count (which is initiated when timing starts), which records this count each time a valid data value is received. You can make it available to other threads. The counter can be stored with a data value, associated location, or index indicating which data value is associated with the counter. It is guaranteed that one data value cannot be accepted more than once, and in some cases, such as when there is a deterministic order of values to be received, it is possible to record counter values rather than data values or other state information.
Some SIM cards, such as typical Java Cards, only support operations after a message is received from the SIM card interfacing device (CAD). Typically, the operation ends when a response from the SIM card is generated and sent to the CAD.
If the SIM card can increment the counter for each clock cycle (or other deterministic period) before messages are received from the handset and even after responses are sent, it is possible to maintain the correct count without support for multithreading. Do.
It is possible to maintain a time-based state within the SIM card; It is also possible for the SIM card to authenticate events (including the time when they occur) and to send a list of such authenticated events to the outside.
14 illustrates an embodiment of execution of a process for the timing portion of device monitoring. In the example shown, a modified Java Card is used as a proxy. This variant allows a process to remain running after responding to a request. The proxy receives a vector of input and output values from the external verifier and generates a vector duration that is sent to the external verifier upon completion of execution. (All communication between the proxy and the external verifier is considered to be authenticated and encrypted.) In the example shown, a value of "∞" corresponds to an error message indicating a malware agent's attempt to trick the client. Upon receipt, the external verifier will determine whether the values in the vector persistence are all within strict boundaries that suggest successful completion, and if it is valid, will conclude that the client is in a secure state.
Additional ways to use proxies for timing
In addition to using SIM or similar hardware as a proxy, it is also possible to use other devices that are considered to be secure as proxies. It is also possible to bootstrap security by first verifying that one device (such as a phone) is secure, and then performing other verification tasks, which is the process of verifying the local timing and security of the second device using that device. Do.
The devices may be of different types. For example, a SIM card, local cell phone tower, or local computer may be used to help secure verification of the handset at the request of an external verifier. It is also possible for such an external verifier to prepare some of the data used for verification, such as the pair of (data, seed) described above. It is also possible for a third party to perform this precomputation. In various embodiments, the seed is generated by the proxy. One example is that both the proxy and the device include sensors such as accelerometers or photovoltaic sensors. Both devices and proxies observe the same phenomenon (eg, held together and move together) and compute the seed in the same way. In this case, the device uses the observed seed, and the proxy sends the (independently experienced) seed to the external verifier.
As soon as it is determined that the first device is in a secure state, it can be used to time or assist in the security assessment of the second device, such as the vehicle's infotainment system, another handset, netbook, laptop or desktop, or other device. . This security assessment may be of the same type (eg, based on time to perform computational tasks) or may be an alternative security assessment method that is bootstrapd to the first one. Similarly, the first security assessment may be of a different type, where the latter security assessment may be bootstrapd to the first security assessment and may use our timing based approach.
In some embodiments, a first known "safe" device is used to generate a set of seed values that will later be consumed by other devices. It is possible to allow such sets to be authenticated (eg, using a PKI or by peer-based authentication of values). It is also possible to operate offline when the external verifier has the support of an online proxy. For example, an external verifier may send encrypted and authenticated data much earlier than the inspection process, and several such transcripts may be sent simultaneously. They can be sent to a proxy that can be held, or sent to the device being inspected, or a proxy to be held until needed. Transcripts generated by the proxy as a result of memory printing may be buffered by the device when requested, or when there is a communication channel available, and later sent to an external verifier. In some embodiments, all records are marked up with time stamps and serial numbers before they are authenticated and possibly encrypted.
It is possible to run this within a network of small nodes, some of which are a priori trusted or evaluated as secure; These nodes are then used to help assess the security of other nodes. This is a potentially recursive approach and can be cyclical, that is, a previously trusted device used to assess the security of other devices is later modified by some of these devices or by devices that have been evaluated as secure. May be verified. External verifiers may be included in the environment, may aid in the initiation of chained verification events, and may help schedule when, by whom, and which nodes should be verified.
Use of Compressed Access Tables
In some embodiments, the location of the memory access is determined by the content of the vector “location” whose content corresponds to the permutation of all cells in the free RAM. Such a vector can occupy all free RAM if held there. In some embodiments, it is stored in secondary storage (eg, flash) and some are swapped as needed. Other ways of maintaining the pseudorandom access order but minimizing computational effort during the main loop will now be described.
Consider two vectors, locationH and locationL, both of which are vectors, each containing a permutation of partial memory access locations. Here, the actual memory access location is a combination of two partial locations, e.g., a bit of one locationH element connected to a bit of locationL. Here, it is assumed that the locationH element includes higher order bits, and the locationL element includes lower order bits. These elements may be the same or different sizes, but when combined, will be of the size addressing one memory location. If each includes all possible elements in the range, the set of all combinations will correspond to the set of all memory addresses. (From this, the combined results can be compared to a threshold, and if they are all within this threshold, then the results can be traced to eliminate what is not present in the free RAM.) This representation only represents the square root of the size of the addressed space. Save it. It is possible to use three components, in which case they take a third root of the addressed space. It is possible to use a large number of components. One example of a combination function is concatenation.
In some embodiments, the order of access of the elements of the vector follows a geometric pattern that ensures that all combinations are used with overwhelming likelihood. It may be beneficial not to have multiple accesses to one and the same item in one vector, because assuming increased patterns in memory accesses reduces the degree of unpredictability to the antagonist. While it is advantageous to limit the total number of accesses to the memory with a negligible probability while ensuring that all accesses are made, it is possible to cover one combination more than once.
It is possible to access the locationH vector at location x, access the locationL vector at location y, and access the x-y locations along the diagonal. Here, the first sequence can be started at position (x, y) = (0,0), after which both x and y are incremented by 1 for each iteration of the loop at the same time. If one coordinate is larger than the size of the vector, the coordinate is set back to zero. Then, when the position again becomes (0,0), it can be modified to start at position (x, y) = (1,0), after which the incrementing sequence is repeated until (1,0) , Then changed to (2,0). This is not the location of the memory access, but rather the locations within the vectors that describe where the memory access should be made.
Otherwise, it is also possible to compress the description of which cells to access by having a vector of location elements, each such location describing only a portion of the address, and the remaining bits of the address being calculated in different ways, or Is deduced from the program state. In addition, these two approaches can be combined, and can also be combined with other related technologies of at least partially pre-generated access locations.
More information about timing
In the various operations, the timing, partial operation of the operation is as follows. (A) The timer is started once the inspector is provided with all necessary values from the external verifier or its proxy. These values typically include seed values. (B) The timer is stopped (and the time since initiation is recorded) when the validator submits the correct "status" value to the external verifier or its proxy.
When the old time interval has ended, it is possible to immediately start a new time interval (starting is indicated by step A above and end is indicated by step B above). It is also possible to enforce "recesses" between these intervals; During these recesses, the operation may not be timed and the algorithm may perform routine maintenance, such as communicating with external parties, reading or writing to secondary storage, or other function. The recess may terminate when the algorithm requests the next timing interval to begin (eg, step A); One way could be by sending a signal to the external verifier or its proxy to start the next interval, or by selecting the external verifier or its proxy to start a new interval.
It is also possible to implement recesses as standard timing intervals, the length of which is not critical to the final determination of the security state of the device being inspected.
In some embodiments, an optional read that is performed as part of the inspection process is performed through access in a pseudorandom order having a sequence of reads and records of accessed locations. Another embodiment using pseudorandom access will now be described. First, a description will be given of an example of memory filling. Thereafter, an example description of periodic timing will be given.
The following memory print function can be used to fill the free RAM. It can also be used to fill other types of memory if other types of memory are comparable to RAM in terms of access time. The pseudorandom sequence is XORed in the free RAM in pseudo random order, and the keyed hash of the contents of the RAM is later computed. Although RAM does not use blocks and pages, it may be divided into "virtual" blocks and pages corresponding to flash. Consecutive chunks of flash are not accessed in pages or blocks. This slows access in flash, but is still fast in RAM.
To fill a free RAM containing pseudorandom strings, there are two main steps. First, the setup function is executed. This uses the seed obtained from the verifier to generate pseudorandom values to determine the random order of memory accesses to be made by the memory print function. This table is stored in flash and the program space used by the setup function is cleared after setup is complete. Second, a memory print function is used to fill all the free RAM. The execution is timed at shorter intervals from start to end.
Network delay handling
Delays caused by infection include internal wiring; Standard network ports such as USB; Wired interface; WiFi network; LAN; Internet; Packet switched network; Communication network; Or a combination thereof, from the device connected to the client device. Some of these communication media can introduce delays and deviations that can be distinguished from measurements using statistical methods.
Verification is made to the device connected to the device examined using cable, LAN, WAN, Bluetooth, Wifi, Internet, other network, or a combination of networks. Verification is accomplished by comparing the received results with the computed results to verify that this (and the sequence before it) has been received within the appropriate time limit. All of these communication media can generate latencies, and some can drop packets.
In addition to between 1 and 5 (in a typical network deviation), assume a moment where the "good" event takes 10 units of time.
And suppose that a "bad" event takes 15 units of time in addition to 1 to 5 in network deviation.
Consider receiving some results at these times:
Sequence a: 0, 12, 25, (deleted packet), 50-since the last partial result "guarantees" the missing packet, this sequence is probably good despite the missing packet.
Sequence b: Since the 0, 11, 30, 35, 50-4th packet was received "too early", this sequence is probably good, despite the long delay between the 2nd and 3rd packets.
Sequence c: 0, 11, 30, 45, 57-This sequence is probably bad due to the long delay after the second packet and there is no event describing the delay.
While the foregoing embodiments have been described in some detail for the sake of clarity of explanation, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are not intended to be illustrative.
102: device
106: Verifier
Physical memory; And
Receive one or more hardware parameters corresponding to the hardware configuration and receive initialization information;
Selectively reading the physical memory to determine at least one result;
And the processor, configured to provide the result to a verifier.
Wherein the initialization information comprises a seed value.
The initialization information comprises a step value.
And the initialization information is received from a proxy.
The initialization information is received from an external verifier.
Wherein the initialization information is a representation of a phenomenon.
And the initialization information is received from an accelerometer included in the system.
The process is configured to receive at least some of the initialization information by measuring a phenomenon.
The processor is further configured to determine a portion of the physical memory to be overwritten according to a function.
The processor is further configured to write to the portion of the physical memory as a function.
The processor is configured to selectively read the physical memory based on at least a portion of a step counter.
The step counter being relatively critical for the measurement of the size of the physical memory.
Further includes a plurality of processors,
The step counter is multiplied by the number of processors to be relatively important for the measurement of the size of the physical memory.
And the processor is configured to determine at least a portion of the result using a function that is not an identification function and takes a portion of the physical memory as input.
The processor is configured to determine at least some of the results using an accumulator.
The accumulator comprises a non-linear function.
Wherein the accumulator uses XOR and rotate.
The processor is configured to provide at least a portion of the results to the verifier by providing information to a proxy.
Receiving one or more hardware parameters corresponding to the hardware configuration and receiving initialization information;
Selectively reading the physical memory to determine at least one result; And
A computer program product embodied in a computer readable storage medium,
Computer instructions for presenting the results to a verifier.
Receive one or more hardware parameters corresponding to the hardware configuration;
And the processor, configured to provide results to a verifier.
The verifier is configured to determine whether a predicted sequence of structural memory changes has been made by the processor based at least in part on the received results.
And the determination is based at least in part on timing information associated with the performance of the sequence of modifications.
And the determination is based at least in part on the correctness of the results received from the device.
The verifier is disposed with the processor in a device.
The verifier is included in a subscriber identity module.
The verifier in communication with the processor via a network connection.
The processor is further configured to obtain a seed from the verifier.
The sequence of variants at least partially dependent on input obtained from the verifier.
And the one or more hardware parameters is an amount of memory.
The one or more hardware parameters are memory speeds.
The process is configured to perform a scan if it is determined that evasive software is not active in the physical memory.
Wherein the scan comprises a scan for unlicensed software.
The memory includes secret data, and providing results to the verifier does not corrupt the secret data.
And the processor is included in a mobile phone.
Receiving one or more hardware parameters corresponding to the hardware configuration;
Performing a sequence of modifications to the physical memory; And
Providing the results to the verifier.
The verifier is configured to determine whether a predicted sequence of physical memory modifications has been made based at least in part on the received result.
A computer program product comprising computer instructions for providing a result to a verifier.
Receive, by the device, one or more results associated with the performance of the sequence of modifications to the memory included in the device from the device;
The one or more results determine that there is no evasion software in the memory included in the device;
The processor, configured to initiate a scan of the device after the determination is made, and
A memory coupled to the processor, the memory configured to provide instructions to the processor.
The device initiates a request to determine the result;
Receive a result from the device;
The processor configured to determine a security state of the device based at least in part on the result and the length of time the device takes to provide the result;
KR1020127006902A 2009-08-17 2010-08-11 Apparatus and method for auditing a device,and storage medium KR101547165B1 (en)
US61/234,604 2009-08-17
US12/580,891 2009-10-16
US25704309P true 2009-11-02 2009-11-02
US61/257,043 2009-11-02
US28636909P true 2009-12-14 2009-12-14
US61/286,369 2009-12-14
US12/714,547 2010-03-01
US12/714,547 US8544089B2 (en) 2009-08-17 2010-03-01 Auditing a device
KR20120066018A true KR20120066018A (en) 2012-06-21
KR101547165B1 KR101547165B1 (en) 2015-08-25
ID=43589382
KR1020127006902A KR101547165B1 (en) 2009-08-17 2010-08-11 Apparatus and method for auditing a device,and storage medium
US (2) US8544089B2 (en)
EP (1) EP2467793B1 (en)
JP (1) JP5646631B2 (en)
KR (1) KR101547165B1 (en)
CN (3) CN105787372A (en)
WO (1) WO2011022040A1 (en)
JP6059347B2 (en) * 2013-07-18 2017-01-11 日本電信電話株式会社 Decoding device, decoding capability providing device, method and program thereof
CN105471580A (en) * 2014-09-11 2016-04-06 苏州海博智能系统有限公司 Signature checking method and equipment
DE3913263A1 (en) * 1989-04-22 1990-10-25 Teves Gmbh Alfred Vacuum-vacuum servo for motor vehicles
AT438151T (en) * 2006-12-21 2009-08-15 Ericsson Telefon Ab L M Missing computer program codes
CN101377756B (en) * 2007-08-30 2011-04-27 联想(北京)有限公司 Method for evaluating computer system aging
CN101796496A (en) * 2007-09-03 2010-08-04 Nxp股份有限公司 Mobile communication device and method for swapping MIFARE applications
CN100585609C (en) * 2008-04-30 2010-01-27 北京飞天诚信科技有限公司 System and method for ensuring operation environment safety
2010-03-01 US US12/714,547 patent/US8544089B2/en active Active
2010-08-11 CN CN201610205761.XA patent/CN105787372A/en not_active Application Discontinuation
2010-08-11 CN CN201610205762.4A patent/CN105868631A/en not_active Application Discontinuation
2010-08-11 JP JP2012525523A patent/JP5646631B2/en not_active Expired - Fee Related
2010-08-11 CN CN201080046637.4A patent/CN102549576B/en not_active IP Right Cessation
2010-08-11 EP EP10810267.4A patent/EP2467793B1/en active Active
2010-08-11 WO PCT/US2010/002214 patent/WO2011022040A1/en active Application Filing
2010-08-11 KR KR1020127006902A patent/KR101547165B1/en not_active IP Right Cessation
2013-08-14 US US13/967,105 patent/US9202051B2/en active Active
EP2467793A4 (en) 2013-10-23
US20110041178A1 (en) 2011-02-17
CN102549576A (en) 2012-07-04
JP5646631B2 (en) 2014-12-24
KR101547165B1 (en) 2015-08-25
EP2467793A1 (en) 2012-06-27
US8544089B2 (en) 2013-09-24
JP2013502639A (en) 2013-01-24
EP2467793B1 (en) 2016-10-26
US20140101765A1 (en) 2014-04-10
CN105868631A (en) 2016-08-17
CN105787372A (en) 2016-07-20
US9202051B2 (en) 2015-12-01
WO2011022040A1 (en) 2011-02-24
CN102549576B (en) 2016-05-04
2015-03-02 N231 Notification of change of applicant