Search Images Maps Play YouTube News Gmail Drive More »
Sign in
Screen reader users: click this link for accessible mode. Accessible mode has the same essential features but works better with your reader.

Patents

  1. Advanced Patent Search
Publication numberUS20070061597 A1
Publication typeApplication
Application numberUS 11/317,339
Publication dateMar 15, 2007
Filing dateDec 22, 2005
Priority dateSep 14, 2005
Also published asCN101273363A, CN101273363B, US7934049, US20070061581, US20080215847
Publication number11317339, 317339, US 2007/0061597 A1, US 2007/061597 A1, US 20070061597 A1, US 20070061597A1, US 2007061597 A1, US 2007061597A1, US-A1-20070061597, US-A1-2007061597, US2007/0061597A1, US2007/061597A1, US20070061597 A1, US20070061597A1, US2007061597 A1, US2007061597A1
InventorsMicky Holtzman, Hagai Bar-El, Ronen Greenspan, Rony Shapiro
Original AssigneeMicky Holtzman, Hagai Bar-El, Ronen Greenspan, Rony Shapiro
Export CitationBiBTeX, EndNote, RefMan
External Links: USPTO, USPTO Assignment, Espacenet
Secure yet flexible system architecture for secure devices with flash mass storage memory
US 20070061597 A1
Abstract
A device with mass storage capability that uses a readily available non secure memory for the mass storage but has firmware (and hardware) that provides security against unauthorized copying of data. This is true even though the firmware itself is stored in the non secure mass storage memory, and therefore potentially vulnerable to hacking. An indication of the authenticity of the firmware must be present before it will be executed by the device. This protects the device contents from unauthorized duplication or tampering. Additional functionality can be added to the device with additional firmware applications, and the authenticity of those additional applications will also be verified before they will be executed. This further prevents unauthorized copying or tampering of secure content through any mechanisms that may be unscrupulously introduced. Any data within the mass storage memory may also be encrypted.
Images(9)
Previous page
Next page
Claims(26)
1. A flash memory based device comprising:
a mass storage repository comprising flash memory;
a first level of the firmware stored in a physical access partition of the mass storage repository;
a second level of the firmware stored in a logical access partition of the mass storage repository;
a logical to physical interface routine that maps logical addresses to physical addresses in the logical access partition; and
a controller that executes the first level of firmware in the physical access partition without use of the logical to physical interface routine, but executes the second level of firmware through the logical to physical interface routine.
2. The flash memory based device of claim 1, wherein the logical to physical interface routine is part of the first level of firmware.
3. The flash memory based device of claim 2, wherein a location of the second level of firmware is mapped by the first level of firmware.
4. A device with mass storage capabilities, comprising:
mass storage comprising flash memory cells;
a controller having encryption hardware;
random access memory; and
a first level of firmware stored in the mass storage flash memory cells that controls writing data to and reading data from the flash memory cells;
wherein the authenticity of the first level of firmware is verified with hash values that are associated with the controller of the device.
5. The device of claim 4, wherein a key within the controller is needed to create the hash values, and wherein the hash values are associated with said key of the controller.
6. The device of claim 4, wherein the first level of firmware is stored in an encrypted format.
7. The device of claim 6, wherein the firmware is encrypted with the encryption hardware using a key stored in a non volatile memory of the controller.
8. The device of claim 4, further comprising a first table of the hash values associated with the first level of firmware, the table stored within the mass storage flash memory cells.
9. The device of claim 8, further comprising a second table, the second table comprising one or more hash values of the data of the first table.
10. The device of claim 9, wherein one or more of the hash values of the second table are associated with the controller of the device.
11. The device of claim 9, wherein a copy of the second table is stored in a non volatile memory of the controller.
12. The device of claim 11, wherein if the copy of the second table does not match the second table then the authenticity will not be verified.
13. The device of claim 4, further comprising a second level of firmware comprising one or more firmware applications, the second level of firmware stored in the mass storage flash memory cells.
14. The device of claim 13, further comprising a third table, the third table comprising hash values associated with the second level of firmware.
15. The device of claim 14, wherein the third table is encrypted.
16. The device of claim 15, wherein the third table is encrypted with the controller encryption hardware using a key stored in a non volatile memory of the controller.
17. The device of claim 14, wherein one or more of the hash values of the third table are correlated to a controller of the device, and wherein the device will not function unless one or more of the hash values is correlated to the controller.
18. A device comprising:
a mass storage repository comprising flash memory;
random access memory;
system firmware stored in a first area of the mass storage repository; and
application firmware stored in a second area of the mass storage repository, wherein the system firmware controls reading and writing of data in the second area, including reading and writing of the application firmware.
19. The device of claim 18, further comprising an encryption mechanism that verifies the system firmware and the application firmware.
20. The device of claim 18, further comprising encryption hardware, the encryption hardware calculating hash values traceable to the particular hardware that created the values.
21. A secure system comprising:
a non-secure mass storage memory;
a secure controller; and
firmware comprising security mechanisms of the secure system, said firmware stored in the non-secure mass storage memory,
wherein the controller is operable to verify the integrity of at least a portion of the firmware without using the security mechanisms of the firmware, thereby preventing unauthorized alteration of the firmware although it is stored in the non-secure mass storage memory.
22. The secure system of claim 21, wherein the firmware is correlated with the controller of the system, and wherein the device will not function unless correlation between the firmware and the controller is established.
23. The secure system of claim 21, wherein the firmware comprises a group of layers, and wherein the authenticity of at least one layer is verified by hardware.
24. The system of claim 21, further comprising a plurality of states, one or more of the plurality used during production, and one or more of the states used for secure operation by a consumer.
25. The system of claim 24, wherein if the system is in a secure state a source of the firmware must be identified before the firmware can be stored in the non-secure mass storage memory.
26. The system of claim 24, wherein one or more of the plurality of states may be used for fault analysis, and wherein in a fault analysis state of the plurality, firmware from an unidentified source may be stored in the non-secure mass storage memory, and wherein the secure controller will not allow operation of the system in a secure state of the plurality.
Description
    CROSS REFERENCE TO RELATED APPLICATIONS
  • [0001]
    This application claims priority to provisional Application No. 60/717,164 entitled “Secure Yet Flexible System Architecture for Secure Devices With Flash Mass Storage Memory” filed Sep. 14, 2005 to Micky Holtzman et al.
  • [0002]
    This application is related to the following applications, each of which is hereby incorporated by this reference in its entirety: “Methods Used in a Secure Yet Flexible System Architecture for Secure Devices With Flash Mass Storage Memory” to Micky Holtzman et al., Attorney Docket No.: SNDK.470US2; “Method of Hardware Driver Integrity Check Of Memory Card Controller Firmware” to Micky Holtzman et al., application Ser. No. 11/284,623, Attorney Docket No. SNDK.408US1; “Hardware Driver Integrity Check Of Memory Card Controller Firmware” to Micky Holtzman et al., application Ser. No. 11/285,600, Attorney Docket No. SNDK.408US2; “Methods Used in a Secure Memory Card With Life Cycle Phases” to Micky Holtzman, et al. Attorney Docket No. SNDK.383US2; and “Secure Memory Card With Life Cycle Phases” to Micky Holtzman et al., Attorney Docket No. SNDK.383US3.
  • FIELD OF THE INVENTION
  • [0003]
    The present application is generally related to the operation of flash based mass storage devices, and in particular those with copy protection of secure content.
  • BACKGROUND OF THE INVENTION
  • [0004]
    Flash based mass storage devices are used to store very large amounts of content, such as pictures and music or software programs. Examples of these mass storage devices include memory cards, universal serial bus (“USB”) flash drives, flash based music and/or video players, and other portable computing devices that rely on flash for the mass storage of content or files.
  • [0005]
    User files are frequently updated and modified. This is particularly the case when dealing with photos, music, and documents. Flash memory has a limited number of read/write cycles, and a great deal of research and development has gone into distributing the cycles among the flash memory cells in order to maximize the lifespan and reliability of the devices. For instance, wear leveling techniques such as those taught in U.S. Pat. No. 6,230,233 entitled “Wear Leveling Techniques For Flash EEPROM Systems” to Lofgren et al., U.S. Pat. No. 5,268,870 entitled “Flash EEPROM System and Intelligent Programming and Erasing Methods Therefore” to Harari, PCT Publication No. WO2004040578A2 entitled “Wear Leveling In Non-Volatile Storage Systems” to Chang et al., and U.S. Patent Publication No. 20040083335A1, entitled “Automated Wear Leveling In Non-Volatile Storage Systems” to Gonzalez et al., which are hereby incorporated by this reference in their entireties, are commonly implemented in these devices. These techniques generally involve changing the logical/physical mapping so that physical locations of the memory are used roughly the same amount.
  • [0006]
    In addition, as the usage of flash based mass storage devices is proliferating, the number of different things that can be done with them is also increasing.
  • [0007]
    Therefore, there exists a need for a new device operating system architecture that provides flexibility to store and run a wide range of firmware that can be updated and changed to accommodate the range of increasing functionality. In addition to being flexible, this architecture must provide a highly secure and reliable environment for both firmware and content. As is always the case, all of this should be done for the lowest possible cost, using standard components whenever possible.
  • SUMMARY OF INVENTION
  • [0008]
    The present invention allows a device to be both secure in operation and flexible in terms of functionality. This means functionality can be tailored to users' desires and added over time all the while maintaining a high level of security. Therefore the device can be used to store confidential and limited access information such as transactional data and copyrighted artistic works.
  • [0009]
    The present invention also allows for the device to boot quickly and reliably while still providing for reliable long term data storage through the use of wear leveling techniques where appropriate.
  • [0010]
    Firmware that is not authentic, and that may potentially compromise the security of the device will not be executed. An indication of the authenticity is verified before execution. In a preferred embodiment, multiple different levels of such indications are provided and are associated with the particular controller of the device that created the indications. In this preferred embodiment, one or more of the different levels of indications can be verified. Without the properly associated indication the firmware will not be executed.
  • [0011]
    Another aspect of the present invention is that this security is achieved despite the fact that the device utilizes readily available memory without built in security for the mass storage of the data, including the firmware.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • [0012]
    FIG. 1A is a schematic diagram of secure device 100A, an embodiment of the present invention.
  • [0013]
    FIG. 1B is a schematic diagram of secure device 100B, an embodiment of the present invention.
  • [0014]
    FIG. 2 is a diagram illustrating various pieces of firmware in a portion of memory space 108.
  • [0015]
    FIG. 3 is a schematic diagram illustrating software structure and hardware access according an embodiment of the present invention.
  • [0016]
    FIG. 4 is a flowchart illustrating some steps of firmware integrity verification.
  • [0017]
    FIG. 5 is a flowchart of operation of an embodiment of the present invention.
  • [0018]
    FIG. 6 is a flowchart illustrating integrity checking of physically stored data such as the firmware 200.
  • [0019]
    FIG. 7 is a flowchart illustrating integrity checking of logically stored data such as user files and the application firmware 202A, B, . . . X.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • [0020]
    Devices incorporating flash memory for mass storage purposes must store large amounts of content that is written and read relatively often. For instance, digital photo and music libraries are regularly updated by users of such devices. With the increase of protected content and the desire to protect content generally, such devices must also provide robust security to prevent unauthorized copying of such “secure” or protected content. At the same time, security should not come at the cost of flexibility. The present invention provides for a device that allows functionality to be added over time, while maintaining a high level of security. This flexibility is essential in a world where devices are expected to provide ever increasing functionality.
  • [0021]
    A secure device is one that protects the contents of the device from unauthorized copying or alteration. Secure content includes any content or data that it is desirable to safeguard from unauthorized copying or tampering. In addition to billing, transaction and other traditionally confidential personal information, artistic content must also be secured from access and copying by those other than the owner or other authorized persons.
  • [0022]
    Depending on the architecture of the device, a hacker may try to gain access to the content via data buses, or by directly accessing the mass storage memory. In some prior devices, directly accessing the memory storage unit was difficult as the memory storage unit was often protected by placing it an environment that was logistically hard to access. For instance, Smart Cards utilized programmable read only memories (PROMS) that incorporated a small amount of non volatile memory that was made secure in part by physically isolating it from access.
  • [0023]
    However, it is desirable to utilize unsecure mass storage memory, that is, among other things, more standardized, readily available, and/or economical. An unsecure memory or storage unit is one where authorization is not required in order to gain (read/write) access to the (encrypted or unencrypted) data stored therein, or one where there are no built in protection mechanisms that prevent copying of the stored data. While this memory may be packaged in a multi functional package with other non-memory components such as a processor, it is commonly in the form of a dedicated memory package with one or more memory chips.
  • [0024]
    Typically, a device or system incorporating mass storage flash memory utilizes a processor to control the data storage and retrieval operations of the memory. Such a processor is part of a controller and is often referred to as a controller. A controller executes software instructions to control the device. The software that runs and controls the hardware of a device is often referred to as firmware. The firmware is typically executed from random access memory (RAM) after having been copied from some other memory where it is normally stored. Shadowing or copying to RAM is advantageous because although flash is easily updated it is slower and not inherently executable because it does not have random access capability, and because read only memory is not easily updated.
  • [0025]
    In the case where some amount of security is to be provided in the firmware, there must be some mechanism to prevent execution of the other than the proper firmware that has the requisite security mechanisms. This is especially true when the firmware is stored in an unsecure memory. As mentioned above, it is the firmware that controls the operation of the device, and therefore it is not a simple matter to have the firmware essentially protect itself. Nor is it a simple matter to protect execution of compromised or unauthentic firmware when such firmware is stored in an otherwise unsecure memory package.
  • [0026]
    The present invention provides for a secure system with mass storage capability even though it uses unsecure memory for the mass storage unit. Furthermore, it creates a secure system where the firmware for running the secure system is stored in the unsecure memory. In order to be able to store the firmware in the unsecure mass storage memory, the present invention employs a system that prevents execution of inauthentic firmware.
  • [0027]
    Reference will now be made to preferred embodiments depicted in the figures. FIG. 1A illustrates secure device (“SD”) 100A, an embodiment of the present invention. SD 100A comprises a secure controller 104 and unsecure memory 108.
  • [0028]
    Memory 108 is preferably flash type memory and is used for mass storage purposes. This means that the memory is used for general purpose storage of user files, such as audio, video, and picture files, among other things. It is a principal memory storage unit of device 108 and can be used to store any type of file a user wishes to store in it. It is designed to allow a user to frequently update and access his library of files. A mass storage memory is generally larger than other random access memory (“RAM”) and read only memory (“ROM”) that SD 100A may also comprise (not shown) in this and other embodiments. Also, as a general file storage device, a mass storage memory is distinct from code storage devices that are designed to store comparatively small amounts of operating code that are infrequently updated. A ROM or flash memory may be used as a code storage device, but it should be understood that a code storage device is different in purpose and generally in size than a mass storage device.
  • [0029]
    SD 100A also comprises a data or memory bus 106 and a host bus 102. SD 100A may be a complete electronic device such as a digital camera or music player, cellular telephone etc. It may also have the form factor of a memory card or universal serial bus (“USB”) drive designed to be used in conjunction with any type of processor controlled electronic device. For simplicity in describing SD100A and the other embodiments depicted in the figures, the embodiments may often be referred to as a memory card, but it should be understood that such reference is to a preferred embodiment and should not limit the scope of the present invention which is defined by the appended claims. Currently, the preferred form factor for a memory card in which the present invention is especially useful is the well known Secure Digital (“SD”) Card.
  • [0030]
    Data and commands are communicated to and from SD100A via host bus 102. The host, which is not shown, may be a personal computer or other electronic device. Secure controller 104 controls the read and write operations to and from unsecure memory 108 via memory bus 106. In doing so, it also limits access to the contents of the unsecure memory 108. As mentioned above, the firmware that runs the device is stored in unsecure memory 108. This firmware, which will be described in more detail later with regard to FIGS. 2-7, in conjunction with controller 104, provides the security that makes device 100A a secure device. Therefore, it is essential that the firmware that is executed by secure controller 104 is authentic, or the security of the system could be compromised.
  • [0031]
    Ensuring the authenticity of the firmware is much more difficult when it is in an unsecure memory. However, given that the unsecure memory 108 is used for mass storage purposes, it is quite large and is easily updated. Therefore, it makes sense to use the capacity of the unsecure memory to store the firmware. This may eliminate or a least reduce the size of a code storage device dedicated to storing the firmware. Alternatively it reduces the need for such storage within the controller. This cost saving is important in a competitive market. There are 3 main paths to the contents stored in memory 108: reading the contents of the memory 108 directly; monitoring the signals on bus 102; and monitoring the signals on bus 106. Even though any or all of the information in the unsecure memory 108 or on buses 102 and 106 may be in an encrypted format, there is always the danger that the encryption key(s) could be compromised. If the firmware were to be compromised and replaced with another firmware that lacked the security features of the authentic firmware, and then executed by the system, restricted or limited access files and private data on the mass storage memory could be copied or tampered with. For example, a user's banking or social security information could be copied or altered without authorization, with obvious negative ramifications. In another example, copyrighted or otherwise protected content could also be copied without authorization. Digital rights management schemes could be thwarted. As another example, cryptographic codes or user passwords could also be compromised.
  • [0032]
    FIG. 1B illustrates secure device 100B. Secure controller 104 comprises cryptographic engine 110, one or more encryption keys 112 stored in a non volatile memory of controller 104, and an indication 114 of the device operating state that is also stored in a non volatile memory of controller 104. In certain embodiments of the invention, numerous states or life cycle phases are entered and passed through during the life of the card. Depending on the phase, logic in the card enables or disables the encryption engine, controls access to hardware (before and after card assembly) and software testing mechanisms, and controls key generation. These phases not only allow both the hardware and software of the card to be thoroughly tested before and after manufacture, but also make it virtually impossible to access the encrypted keys and thus the encrypted content when the card is in a secure phase, the operating phase that the card is in when it is shipped to the user. For more information on the states or life cycle phases please refer to an application having attorney docket No. SNDK.383US3 “Secure Memory Card With Life Cycle Phases” to Micky Holtzman et al., which is hereby incorporated by this reference in its entirety.
  • [0033]
    The cryptographic engine 110 is hardware based and can encrypt and/or decrypt data as it passes through secure controller 104. For example, data encrypted with a first encryption algorithm as it arrives at the controller from host bus 102 can be decrypted and then encrypted with a second algorithm before it is sent to flash memory 108 via data bus 106. Of course, data encrypted in memory 108 can be decrypted by engine 110 and passed in a decrypted state over host bus 102 although it is preferably in an encrypted format as it passes over host bust 102 so as to avoid potential unauthorized copying of the data.
  • [0034]
    The cryptographic engine 110, also referred to as encryption engine 110, may comprise numerous sub engines and is capable of utilizing numerous encryption standards and algorithms. Examples of the various encryption techniques and algorithms include: Message Authentication Codes (“MACs”); Data Encryption Standard (“DES”), Triple DES, Advanced Encryption Standard (“AES”), RSA and Diffie-Helman that are often used in a Public Key Infrastructure (“PKI”), and other hash based encryption such as SHA-1 and MD5. The encryption engine may use other currently available algorithms and techniques and others yet to be developed or well accepted, and the aforementioned list is only meant to provide some examples.
  • [0035]
    A Message Authentication Code is a hash computed from a message and some secret data. It is difficult to forge without knowing the secret data. The MAC is computed using an algorithm based on the DES or AES ciphers, which use a secret key. The secret key 112, or one or more keys derived from the secret key are stored in controller 104, and therefore the hash or message authentication code created by the controller is associated with that controller, and cannot be duplicated by another controller. Therefore hash values from a particular controller are associated with the controller and can act as a type of signature of the controller and device, because the signature is unique and cannot be duplicated.
  • [0036]
    Although the aforementioned standards and various other algorithms and/or standards are well known to those skilled in cryptography, the following publications are informative and are hereby incorporated by reference in their entireties: RFC 3566—The AES-XCBC-MAC-96 Algorithm and Its Use With IPsec by Sheila Frankel, NIST—National Institute of Standards and Technology, 820 West Diamond Ave, Room 677, Gaithersburg, Md. 20899, available at http://www.faqs.org/rfcs/rfc3566.html; Performance Comparison of Message Authentication Code (MAC) Algorithms for the Internet Protocol Security (IPSEC) by Janaka Deepakumara, Howard M. Heys and R. Venkatesan, Electrical and Computer Engineering, Memorial University of Newfoundland, St. John's, NL, Canada, A1B3S7 available at http://www.engr.mun.ca/˜howard/PAPERS/necec2003b.pdf; and Comments to NIST concerning AES Modes of Operations: A Suggestion for Handling Arbitrary-Length Messages with the CBC MAC by John Black, University of Nevada, Reno, Phillip Rogaway, University of California at Davis, available at http://csrc.nist.gov/CryptoToolkit/modes/proposedmodes/xcbc-mac/xcbc-mac-spec.pdf.
  • [0037]
    FIG. 2 is an illustration of the memory space of the flash memory 108 that includes firmware 200 that runs devices 100A or 100B. The system firmware 200 comprises a boot loader (BLR) portion 200 a that resides in flash memory 108 and is preferably not changeable, and system firmware 200 b that resides in flash memory 108 and can be changed from time to time if necessary. The size of system firmware 200 is larger than the RAM module it is executed from, so the system firmware is divided into smaller portions referred to as overlays. Each overlay preferably has its own hash value and within system firmware 200 is a table 200 c of those hash values. Table 200 c is not loaded as part of system firmware 200 b, but the pre-stored values are compared with calculated values as will be discussed in more detail below. Any hash value can be used, but MAC or SHA-1 values are currently preferable. Generally, SHA-1 digests may alternatively be used in place of MAC values, and vice versa. The advantage of using MAC values is that they are associated with the hardware and the key of the hardware that created them. While SHA-1 values can be created for a given data set simply based upon the data itself, MAC values cannot be recreated without the key, and thus provide for more robust security. Specifically, because key 104 (or a key derived therefrom) stored in the non volatile memory of encryption engine 110 must be used to create the MAC values, another processor cannot be utilized to recreate the MAC values. For example, a hacker cannot use another processor outside of the system to duplicate the firmware and the associated MAC values.
  • [0038]
    As a further security precaution, the hash values themselves can be encrypted one or more times. In the example of MAC values, a MAC entry that protects the MAC table 200 c 2 is created so even if a hacker finds a way to switch or alter the firmware and recalculate the appropriate MACs, he is still facing a problem because he must calculate the MAC of MACs (or MAC of SHA-1s). Furthermore, in one embodiment the MAC of MACs is again encrypted and stored in another (different) memory field, for example the non volatile memory of encryption engine 110 or the controller 104. This multi-level distributed hierarchy ensures that the signatures cannot be forged, or rather, that a forged signature will not be accepted as authentic. As an illustration, if one were to access the flash memory 108 and replace the firmware and table 200 c, the system would then check one level up the hierarchy and see if the MAC of table 200 c indicates that table 200 c has not been tampered with. If the stored MAC of the table does not match the calculated MAC, this indicates a problem with the authenticity. However, if the MAC of table 200 c has also been altered to match the replaced table 200 c, then the system would verify the signature in error. This error is avoided by storing a copy of the MAC of table 200C in another (inaccessible) memory, and comparing the copy in the other (inaccessible) memory with the value in the flash memory 108. If the values do not match, this indicates an authenticity problem. Although only a few levels were illustrated, this multi-level distributed structure may have numerous levels and incorporate numerous different memories depending on the size and complexity of the firmware to be protected.
  • [0039]
    This multi-level distributed hierarchy employed in conjunction with the overlay structure of the firmware also results in a very efficient and rapid authentication process. Dividing the firmware into overlays and signing each overlay greatly speeds up the overall authentication process. This is because it is much faster to verify the signature of a smaller amount of code. In order to calculate a hash value, all of the data for which the hash is to be calculated must be read. The larger the portion of firmware to be read, the longer it will take to calculate the signature, and then verify that the signature is authentic. Calculating the signature for a large amount of data is potentially very time consuming and inefficient.
  • [0040]
    Also stored within the flash memory are various firmware applications 202A . . . X, shown as APP FW 1, 2 . . . X, and, of course, user files (not shown). The firmware applications may be configured differently for various product configurations. The number and type of these applications will vary from one product to another. The firmware applications are also preferably divided into overlays if the applications are larger than the RAM module. A map of the application firmware overlays 201A indicates the location in memory of the various overlays. A table of hash values (SHA-1 digests or MAC values etc . . . ) 201B for the various firmware applications, encrypted with a secret key, which may be secret key 104 or a key derived from secret key 104, is also stored in the flash memory. A firmware application is akin to other applications that run on a base system, e.g. a word processing application in the Windows® environment running on the Windows® operating system.
  • [0041]
    As discussed in the background, flash memory cells have a limited lifetime and the cells degrade with each read and write operation. Therefore data in the flash memory is generally moved from time to time in order to distribute the read and write operations evenly among the cells and distribute the “wear” evenly amongst the cells. This wear leveling, along with all read/write operations, is controlled by the firmware 200, and in particular by the system firmware 200B. In order to be able to easily move data, the data is logically stored. This means that a logical address is mapped to a physical address, and that while the logical address remains the same, it can be mapped to a different physical address. Again, this logical to physical mapping is carried out by the system firmware.
  • [0042]
    It presents some difficulty if the firmware is in charge of moving itself. This is especially true when the firmware is responsible for copy protection of the data in the flash memory, and should therefore preferably be verified as authentic before execution. Also, while it is true that the system firmware may be updated from time to time, it will be written very infrequently when compared with other data stored in the flash memory 108. Therefore, the firmware 200, including the boot loader 200 a is physically (without logical mapping) written to and read from flash memory 108.
  • [0043]
    The application firmware provides additional functionality not present in the system firmware, and may be loaded into the device at any time. It is unknown how much application firmware may be loaded into the device, and when each application may be loaded. Therefore space within the physical partition is not allocated and the application firmware is stored in the logical partition 214 and logically addressed like any other user files and data in the flash memory 108.
  • [0044]
    FIG. 3 illustrates the functional structure of the software of the device and how it accesses the mass storage memory 108. As mentioned before, the preferred embodiments comprise flash type memory for mass storage memory 108 and for simplicity, during this description of the preferred embodiments the terms may be used interchangeably. The portion of the software that is concerned with flash memory operations is referred to generally as the back end, while the portion of the software that involves the applications and the user interface is known as the front end. Firmware applications 202A, 202B . . . 202X run on top of firmware 200 which includes system firmware 200B. Although the BLR 200 a is a separate component of firmware 200, the BLR bootstraps the system firmware and may in essence generally be thought of as part of system firmware 200. The system firmware 200 has physical sector address routines or block 206 and logical/physical mapper or mapping routines 208. The mass storage memory 108 is partitioned into physical storage area 212 and logical storage area 214. Physical/logical partition 216 is used to illustrate the division or partitioning of the mass storage memory 108 into areas 212 and 214. Each of areas 212 and 216 can be further partitioned into smaller areas, and it is common in the art to use the term partitions to refer to these smaller areas also. The physical sector access routines or functional block 206 controls reading and writing in the physical area or partition 212, and the logical/physical mapper block controls reading and writing in the logical storage area 214.
  • [0045]
    Firmware 200, including system firmware 200B, is stored in physical area 212. Application firmware 202A . . . X is stored in logical area 214 where the user files are also stored. The application firmware and all other data in logical area 214 is moved around from time to time by the wear leveling routines of the system firmware.
  • [0046]
    The authenticity of all of the firmware is preferably checked before it is executed. This is done because, as discussed earlier, the mass storage memory 108 does not have its own built in protection mechanisms. The flowchart of FIG. 4 applies to any piece of firmware, including application firmware. In step 304, the firmware is signed. This is typically done at the time of loading of the firmware, but a signed record can be updated by overwriting the record with a new one. The signature comprises one or more hash values of at least a portion of the firmware. The hash values are preferably of the MAC variety, because, as discussed earlier, a MAC value is created with a key used with and/or stored within the controller that created the MAC value, and cannot be recreated by another processor. Each portion or piece of firmware may be signed using a different key. For example, BLR 200A may be signed with a first key, while system firmware 200B is signed with a second key. Various portions (e.g. overlays) of firmware 200 can also be signed with various different keys. As another example, each piece of application firmware 202A . . . X can be signed with a different key.
  • [0047]
    Hash values for BLR 200A are stored and calculated in a unique process that is described in copending application entitled “Hardware Driver Integrity Check Of Memory Card Controller Firmware” to Micky Holtzman et al. having attorney docket number SNDK.408US2. Please refer to that application for further information on that process.
  • [0048]
    In one preferred embodiment involving the aforementioned life cycle phases or states, the firmware can only be signed in certain states, and unsigned firmware cannot be executed. In particular, in state 150 (not shown), which is the secure operating state that the device will generally be in while in the hands of the consumer, firmware update and signing will not be allowed. This prevents installation of substitute firmware that may not be authentic. The system in that embodiment only enables the encryption engine to sign the firmware in states other than the secure state. In other embodiments, updating of the firmware is allowed in the field (i.e. while in state 150) as long as the firmware is signed before it is loaded and that signature can be verified by the card. The source of the firmware can also be identified and verified, as well as verifying the signature of the firmware itself. The firmware should be supplied by a trusted entity before it is loaded, and in a preferred embodiment the trust is established using a public key infrastructure (“PKI”) certificate. This certificate could be in addition to or alternatively in lieu of the hash based signature. For example, if trust is established (by the certificate in this illustrative embodiment) then the encryption engine would sign the firmware. As another added precaution, a secure connection can be established with the supplier of the firmware. The secure connection would be encrypted to protect the data passing between the device and the supplier. The secure connection would preferably be encrypted according to the aforementioned AES standard, but could employ any known encryption standard.
  • [0049]
    As mentioned previously, the system firmware is broken up into overlays of smaller size so that each overly can be loaded into RAM for execution. A map 200 c 1 of the various overlays is stored in the flash memory. Each overlay is individually signed. A table 200 c 2 of the signatures, which are preferably MAC values, is also stored in the flash memory as part of firmware 200. The system or device 200 allocates sufficient room in the RAM for complete table 200 c 2 to be loaded, and the entire table is loaded and resident in RAM during operation of the device.
  • [0050]
    Each firmware application 202A . . . X is also broken up into overlays, and each overlay is likewise signed. Currently, as with the system firmware, it is preferable to calculate key dependent hash (e.g. MAC) values to sign the firmware applications, although as mentioned previously, other hash values may be used. Table 201B contains the signatures for each application firmware overlay in map 201A. A one sector buffer is pre-allocated in the RAM as a workspace for the application firmware signatures.
  • [0051]
    Although it is preferable to sign each overlay of any of the firmware because this prevents replacement of a piece of firmware that may have critical decision making functionality, any amount of firmware can rely on one signature. For example, although not preferred, one signature could be used for all the firmware. Furthermore, the size of the overlays or portions to be signed may also vary. Referring again to FIG. 4, after the firmware is signed in step 304 as described above, each signature is verified in step 308. When each piece, e.g. each overlay, of the firmware is read from the flash memory, it passes through the encryption engine 110, and the hash value of the piece is created “on the fly” by the encryption engine. This calculated value is compared to the stored value, and if the values do not match there is a problem with the authenticity of the piece of the firmware. If there is a match, then the next level of the hierarchical structure described earlier with regard to FIG. 2 will preferably be checked. Preferably all the levels will be checked as will the copy stored in the additional memory. As mentioned previously, this distributed hierarchical structure assures that the firmware and signature are authentic.
  • [0052]
    FIG. 5 is a flowchart illustrating firmware execution. In step 504, the system verifies the signature of the boot loader portion (“BLR”). This can be done as mentioned above in regard to the system firmware, but is preferably done in another process described in a co-pending application entitled “Hardware Driver Integrity Check of Memory Card Controller Firmware” to Micky Holtzman et al. with attorney docket No. SNDK.408US2. After the signature of the BLR has been verified it is executed in step 506. Next in step 508 the system verifies the signature of the system firmware. It then executes it in step 510. If any application firmware is present, its signature is verified in step 512 and then once verified it is executed in step 514. This is done for each piece of application firmware. As mentioned above, any of the verification steps 506, 508, and 510 are preferably done for each overlay of the entity being verified before or as it is loaded into the RAM.
  • [0053]
    FIG. 6 is a flowchart illustrating the reading and verification of firmware 200, which is stored in the physical storage area 212. This corresponds to steps 504 and 508 of FIG. 5. In step 604 the data (firmware in this case) is read from the physical address where it is stored. Again, this physical read is performed without any logical mapping beforehand. Next, in step 604, hash value(s) are created for the firmware. These value(s) are temporarily stored in a register of the controller. Next in step 608 the value(s) calculated in step 606 are compared with the stored hash value(s). In the embodiments described, the stored value(s) are in tables in the flash memory, and may themselves be encrypted.
  • [0054]
    FIG. 7 is a flowchart illustrating the reading and verification of the firmware applications 202A . . . X. In step 704 the data is read from the logical address where it is stored. This comprises requesting logically addressed data from the system firmware in step 704A. It also comprises step 704B where the system firmware then maps the logical address with its corresponding physical address at that given time. After the data (firmware in this case) is read, hash values are calculated for the overlay or other quantity of firmware in step 706. Then in step 708 the calculated has value(s) are compared with the stored hash value(s). Again, in the embodiments described the stored hash values are in tables in the flash memory and may themselves be encrypted.
  • [0055]
    Although the various aspects of the present invention have been described with respect to exemplary embodiments thereof, it will be understood that the present invention is entitled to protection within the full scope of the appended claims.
Patent Citations
Cited PatentFiling datePublication dateApplicantTitle
US4590552 *Jun 30, 1982May 20, 1986Texas Instruments IncorporatedSecurity bit for designating the security status of information stored in a nonvolatile memory
US4797853 *Nov 15, 1985Jan 10, 1989Unisys CorporationDirect memory access controller for improved system security, memory to memory transfers, and interrupt processing
US4907268 *Mar 15, 1989Mar 6, 1990Enigma Logic, Inc.Methods and apparatus for controlling access to information processed a multi-user-accessible digital computer
US5006823 *Oct 23, 1989Apr 9, 1991Thomson-CsfMicrowave phase shifter with 0 or π phase shift
US5235641 *Mar 12, 1991Aug 10, 1993Hitachi, Ltd.File encryption method and file cryptographic system
US5293424 *Oct 14, 1992Mar 8, 1994Bull Hn Information Systems Inc.Secure memory card
US5311595 *Jun 7, 1990May 10, 1994Kommunedata I/SMethod of transferring data, between computer systems using electronic cards
US5319765 *Nov 27, 1991Jun 7, 1994Mitsubishi Denki Kabushiki KaishaSemiconductor memory unit utilizing a security code generator for selectively inhibiting memory access
US5327563 *Nov 13, 1992Jul 5, 1994Hewlett-PackardMethod for locking software files to a specific storage device
US5404485 *Mar 8, 1993Apr 4, 1995M-Systems Flash Disk Pioneers Ltd.Flash file system
US5438575 *Nov 16, 1992Aug 1, 1995Ampex CorporationData storage system with stale data detector and method of operation
US5442704 *Jan 14, 1994Aug 15, 1995Bull Nh Information Systems Inc.Secure memory card with programmed controlled security access control
US5596738 *Apr 12, 1995Jan 21, 1997Teac CorporationPeripheral device control system using changeable firmware in a single flash memory
US5606660 *Oct 21, 1994Feb 25, 1997Lexar Microsystems, Inc.Method and apparatus for combining controller firmware storage and controller logic in a mass storage system
US5629513 *Mar 3, 1995May 13, 1997Gemplus Card InternationalMethod for the functioning of a chip card, and chip card in accordance therewith
US5710639 *Jan 25, 1996Jan 20, 1998Kuznicki; William JosephScan line compressed facsimile communication system
US5857020 *Dec 4, 1995Jan 5, 1999Northern Telecom Ltd.Timed availability of secured content provisioned on a storage medium
US5860082 *Mar 28, 1996Jan 12, 1999Datalight, Inc.Method and apparatus for allocating storage in a flash memory
US5917909 *Dec 22, 1993Jun 29, 1999Gao Gesellschaft Fur Automation Und Organisation MbhSystem for testing the authenticity of a data carrier
US5933854 *Oct 10, 1995Aug 3, 1999Mitsubishi Denki Kabushiki KaishaData security system for transmitting and receiving data between a memory card and a computer using a public key cryptosystem
US5943423 *Dec 15, 1995Aug 24, 1999Entegrity Solutions CorporationSmart token system for secure electronic transactions and identification
US6026402 *Jan 7, 1998Feb 15, 2000Hewlett-Packard CompanyProcess restriction within file system hierarchies
US6028933 *Apr 17, 1997Feb 22, 2000Lucent Technologies Inc.Encrypting method and apparatus enabling multiple access for multiple services and multiple transmission modes over a broadband communication network
US6073234 *Apr 27, 1998Jun 6, 2000Fuji Xerox Co., Ltd.Device for authenticating user's access rights to resources and method
US6101588 *Sep 25, 1997Aug 8, 2000Emc CorporationDevice level busy arrangement for mass storage subsystem including a plurality of devices
US6181252 *Aug 22, 1997Jan 30, 2001Denso CorporationRemote control system and method having a system-specific code
US6182229 *Nov 30, 1999Jan 30, 2001Sun Microsystems, Inc.Password helper using a client-side master password which automatically presents the appropriate server-side password in a particular remote server
US6230223 *Jun 1, 1998May 8, 2001Compaq Computer CorporationDual purpose apparatus method and system for accelerated graphics or second memory interface
US6230233 *Sep 13, 1991May 8, 2001Sandisk CorporationWear leveling techniques for flash EEPROM systems
US6243816 *Apr 30, 1998Jun 5, 2001International Business Machines CorporationSingle sign-on (SSO) mechanism personal key manager
US6253328 *Feb 12, 1998Jun 26, 2001A. James Smith, Jr.Method and apparatus for securing passwords and personal identification numbers
US6353888 *Jul 6, 1998Mar 5, 2002Fuji Xerox Co., Ltd.Access rights authentication apparatus
US6356941 *Feb 22, 1999Mar 12, 2002Cyber-Ark Software Ltd.Network vaults
US6370251 *Jun 8, 1998Apr 9, 2002General Dynamics Decision Systems, Inc.Traffic key access method and terminal for secure communication without key escrow facility
US6371377 *Jun 16, 1998Apr 16, 2002Fujitsu LimitedCard type recording medium and access control method for card type recording medium and computer-readable recording medium having access control program for card type recording medium recorded
US6385729 *May 26, 1998May 7, 2002Sun Microsystems, Inc.Secure token device access to services provided by an internet service provider (ISP)
US6389542 *May 3, 2000May 14, 2002Terence T. FlyntzMulti-level secure computer with token-based access control
US6393565 *Aug 3, 1998May 21, 2002Entrust Technologies LimitedData management system and method for a limited capacity cryptographic storage unit
US6422460 *Jan 29, 1999Jul 23, 2002Verisign, Inc.Authorization system using an authorizing device
US6434700 *Dec 22, 1998Aug 13, 2002Cisco Technology, Inc.Authentication and authorization mechanisms for Fortezza passwords
US6522655 *May 11, 1999Feb 18, 2003Telefonaktiebolaget Lm Ericsson (Publ)Method and apparatus in a telecommunications system
US6577734 *Oct 31, 1995Jun 10, 2003Lucent Technologies Inc.Data encryption key management system
US6678828 *Jul 22, 2002Jan 13, 2004Vormetric, Inc.Secure network file access control system
US6742117 *Jan 9, 1998May 25, 2004Rohm Co., Ltd.IC card and method of using IC card
US6754765 *May 14, 2001Jun 22, 2004Integrated Memory Logic, Inc.Flash memory controller with updateable microcode
US6763399 *Apr 22, 2002Jul 13, 2004Aladdin Knowledge Systems, Ltd.USB key apparatus for interacting with a USB host via a USB port
US6845908 *Mar 18, 2002Jan 25, 2005Hitachi Semiconductor (America) Inc.Storage card with integral file system, access control and cryptographic support
US6848045 *Jun 21, 2002Jan 25, 2005Rainbow Technologies, Inc.Integrated USB connector for personal token
US6865555 *Nov 21, 2001Mar 8, 2005Digeo, Inc.System and method for providing conditional access to digital content
US6880079 *Apr 25, 2002Apr 12, 2005Vasco Data Security, Inc.Methods and systems for secure transmission of information using a mobile device
US6892304 *Oct 3, 2000May 10, 2005Phoenix Technologies Ltd.System and method for securely utilizing basic input and output system (BIOS) services
US6901499 *Feb 27, 2002May 31, 2005Microsoft Corp.System and method for tracking data stored in a flash memory device
US7058818 *Aug 6, 2003Jun 6, 2006M-Systems Flash Disk Pioneers Ltd.Integrated circuit for digital rights management
US7062616 *Jun 12, 2001Jun 13, 2006Intel CorporationImplementing a dual partition flash with suspend/resume capabilities
US7380275 *Jan 31, 2005May 27, 2008Broadon Communications Corp.Secure and backward-compatible processor and secure software execution thereon
US20020029343 *Mar 14, 2001Mar 7, 2002Fujitsu LimitedSmart card access management system, sharing method, and storage medium
US20020034303 *Oct 17, 2001Mar 21, 2002The Chamberlain Group, Inc.Rolling code security system
US20020065730 *Nov 30, 2000May 30, 2002Naoaki NiiMethod of and a system for distributing electronic content
US20020099666 *Nov 13, 2001Jul 25, 2002Dryer Joseph E.System for maintaining the security of client files
US20030018889 *Sep 20, 2001Jan 23, 2003Burnett Keith L.Automated establishment of addressability of a network device for a target network enviroment
US20030028514 *Jul 18, 2002Feb 6, 2003Lord Stephen PhilipExtended attribute caching in clustered filesystem
US20030028797 *Jun 21, 2002Feb 6, 2003Rainbow Technologies, Inc.Integrated USB connector for personal token
US20030061504 *Aug 13, 2002Mar 27, 2003Sprigg Stephen A.Application level access privilege to a storage area on a computer device
US20030070083 *Sep 30, 2002Apr 10, 2003Kai-Wilhelm NesslerMethod and device for encryption/decryption of data on mass storage device
US20030101327 *Nov 15, 2002May 29, 2003Samsung Electronics Co., Ltd.Flash memory management method
US20030110169 *Apr 26, 2002Jun 12, 2003Secretseal Inc.System and method for providing manageability to security information for secured items
US20030120938 *Nov 21, 2002Jun 26, 2003Miki MullorMethod of securing software against reverse engineering
US20030131210 *Dec 16, 2002Jul 10, 2003Detlef MuellerMethod and arrangement for the verification of NV fuses as well as a corresponding computer program product and a corresponding computer-readable storage medium
US20030135739 *Feb 12, 2003Jul 17, 2003Talton David N.System and method for authentication
US20030149886 *Jan 27, 2003Aug 7, 2003Yoshikatsu ItoDigital content management device and digital content management program
US20040044625 *Jun 10, 2003Mar 4, 2004Ken SakamuraDigital contents issuing system and digital contents issuing method
US20040059916 *Aug 8, 2003Mar 25, 2004Nagamasa MizushimaMemory card
US20040066936 *Sep 29, 2003Apr 8, 2004The Chamberlain Group, Ltd.Rolling code security system
US20040083370 *Oct 15, 2003Apr 29, 2004Sun Microsystems, Inc., A Delaware CorporationRights maintenance in a rights locker system for digital content access control
US20040098585 *Nov 4, 2003May 20, 2004Rainbow Technologies, Inc.Secure authentication using hardware token and computer fingerprint
US20040103288 *Nov 27, 2002May 27, 2004M-Systems Flash Disk Pioneers Ltd.Apparatus and method for securing data on a portable storage device
US20040117653 *Jul 10, 2001Jun 17, 2004Packet Technologies Ltd.Virtual private network mechanism incorporating security association processor
US20040123127 *Feb 6, 2003Jun 24, 2004M-Systems Flash Disk Pioneers, Ltd.System and method for securing portable data
US20040128523 *Jul 10, 2003Jul 1, 2004Renesas Technology Corp.Information security microcomputer having an information securtiy function and authenticating an external device
US20040132437 *Oct 23, 2003Jul 8, 2004Motoji OhmoriInformation distribution system and memory card
US20040139021 *Sep 5, 2003Jul 15, 2004Visa International Service AssociationMethod and system for facilitating data access and management on a secure token
US20040148536 *Jan 23, 2003Jul 29, 2004Zimmer Vincent J.Methods and apparatus for implementing a secure resume
US20050010758 *Aug 12, 2002Jan 13, 2005Peter LandrockData certification method and apparatus
US20050010783 *Jun 24, 2004Jan 13, 2005Phil LibinAccess control
US20050015588 *Jul 15, 2004Jan 20, 2005Paul LinToken device that generates and displays one-time passwords and that couples to a computer for inputting or receiving data for generating and outputting one-time passwords and other functions
US20050033968 *Aug 8, 2003Feb 10, 2005Metapass, Inc.Secure digital key for automatic login
US20050049931 *Aug 29, 2003Mar 3, 2005Wisnudel Marc BrianDigital content kiosk and associated methods for delivering selected digital content to a user
US20050050330 *Aug 27, 2003Mar 3, 2005Leedor AgamSecurity token
US20050091496 *Oct 23, 2003Apr 28, 2005Hyser Chris D.Method and system for distributed key management in a secure boot environment
US20050114620 *Nov 21, 2003May 26, 2005Justen Jordan L.Using paging to initialize system memory
US20050120205 *Jan 30, 2004Jun 2, 2005Hitachi, Ltd.Certificate management system and method
US20050137997 *Dec 10, 2004Jun 23, 2005Siemens AktiengesellschaftMethod for updating an automation system
US20050160217 *Dec 31, 2003Jul 21, 2005Gonzalez Carlos J.Flash memory system startup operation
US20070011724 *Dec 27, 2005Jan 11, 2007Gonzalez Carlos JMass storage device with automated credentials loading
US20070061570 *Nov 21, 2005Mar 15, 2007Michael HoltzmanMethod of hardware driver integrity check of memory card controller firmware
US20070061581 *Dec 22, 2005Mar 15, 2007Micky HoltzmanMethods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
US20070061897 *Nov 21, 2005Mar 15, 2007Michael HoltzmanHardware driver integrity check of memory card controller firmware
USRE36181 *Nov 8, 1996Apr 6, 1999United Technologies Automotive, Inc.Pseudorandom number generation and crytographic authentication
Referenced by
Citing PatentFiling datePublication dateApplicantTitle
US7725614Aug 8, 2006May 25, 2010Sandisk CorporationPortable mass storage device with virtual machine activation
US7743409Dec 27, 2005Jun 22, 2010Sandisk CorporationMethods used in a mass storage device with automated credentials loading
US7748031Dec 27, 2005Jun 29, 2010Sandisk CorporationMass storage device with automated credentials loading
US7934049Dec 22, 2005Apr 26, 2011Sandisk CorporationMethods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
US7962684 *Feb 14, 2008Jun 14, 2011Sandisk CorporationOverlay management in a flash memory storage device
US7971071May 22, 2007Jun 28, 2011Walkoe Wilbur JIntegrated delivery and protection device for digital objects
US8095805 *Dec 17, 2007Jan 10, 2012Ddtic Corporation Ltd.Security flash memory, data encryption device and method for accessing security flash memory
US8108641Jun 27, 2006Jan 31, 2012Texas Instruments IncorporatedMethods, apparatus, and systems for secure demand paging and other paging operations for processor devices
US8108691Dec 22, 2005Jan 31, 2012Sandisk Technologies Inc.Methods used in a secure memory card with life cycle phases
US8151082Apr 6, 2008Apr 3, 2012Fusion-Io, Inc.Apparatus, system, and method for converting a storage request into an append data storage command
US8161353Apr 6, 2008Apr 17, 2012Fusion-Io, Inc.Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US8171206Jul 22, 2008May 1, 2012Sandisk Technologies Inc.Avoidance of self eviction caused by dynamic memory allocation in a flash memory storage device
US8200961 *Feb 26, 2007Jun 12, 2012Igware, Inc.Securing a flash memory block in a secure device system and method
US8209763Oct 31, 2008Jun 26, 2012Via Technologies, Inc.Processor with non-volatile mode enable register entering secure execution mode and encrypting secure program for storage in secure memory via private bus
US8220039Feb 26, 2010Jul 10, 2012Sandisk Technologies Inc.Mass storage device with automated credentials loading
US8245101Apr 8, 2008Aug 14, 2012Sandisk Enterprise Ip LlcPatrol function used in flash storage controller to detect data errors
US8321686Dec 22, 2005Nov 27, 2012Sandisk Technologies Inc.Secure memory card with life cycle phases
US8356178 *Nov 13, 2006Jan 15, 2013Seagate Technology LlcMethod and apparatus for authenticated data storage
US8365041Mar 17, 2010Jan 29, 2013Sandisk Enterprise Ip LlcMLC self-raid flash data protection scheme
US8370641Oct 31, 2008Feb 5, 2013Via Technologies, Inc.Initialization of a microprocessor providing for execution of secure code
US8386700Nov 29, 2011Feb 26, 2013Sandisk Enterprise Ip LlcFlash memory controller garbage collection operations performed independently in multiple flash memory groups
US8392798Apr 9, 2012Mar 5, 2013Fusion-Io, Inc.Apparatus, system, and method for validating that correct data is read from a storage device
US8423788Feb 7, 2005Apr 16, 2013Sandisk Technologies Inc.Secure memory card with life cycle phases
US8423794Jun 20, 2007Apr 16, 2013Sandisk Technologies Inc.Method and apparatus for upgrading a memory card that has security mechanisms for preventing copying of secure content and applications
US8447889Apr 19, 2010May 21, 2013Sandisk Technologies Inc.Portable mass storage device with virtual machine activation
US8452967Aug 31, 2007May 28, 2013Microsoft CorporationUsing flash storage device to prevent unauthorized use of software
US8464135Jul 13, 2010Jun 11, 2013Sandisk Technologies Inc.Adaptive flash interface
US8473814Jun 27, 2012Jun 25, 2013Sandisk Enterprise Ip LlcMLC self-RAID flash data protection scheme
US8479013 *Jan 16, 2009Jul 2, 2013Photonic Data Security, LlcSecure portable data transport and storage system
US8484533Jun 27, 2012Jul 9, 2013Sandisk Enterprise Ip LlcMLC self-RAID flash data protection scheme
US8484534Jun 27, 2012Jul 9, 2013Sandisk Enterprise IP LLC.MLC self-RAID flash data protection scheme
US8522354Oct 31, 2008Aug 27, 2013Via Technologies, Inc.Microprocessor apparatus for secure on-die real-time clock
US8533384Apr 8, 2008Sep 10, 2013Sandisk Enterprise Ip LlcFlash memory controller garbage collection operations performed independently in multiple flash memory groups
US8607034Oct 31, 2008Dec 10, 2013Via Technologies, Inc.Apparatus and method for disabling a microprocessor that provides for a secure execution mode
US8615799 *Oct 31, 2008Dec 24, 2013Via Technologies, Inc.Microprocessor having secure non-volatile storage access
US8621137Apr 8, 2008Dec 31, 2013Sandisk Enterprise Ip LlcMetadata rebuild in a flash memory controller following a loss of power
US8621138Apr 8, 2008Dec 31, 2013Sandisk Enterprise Ip LlcFlash storage controller execute loop
US8675868Jul 1, 2008Mar 18, 2014Maxim Integrated Products, Inc.Encrypting an address-dependent value along with code to prevent execution or use of moved code
US8738841Apr 8, 2008May 27, 2014Sandisk Enterprise IP LLC.Flash memory controller and system including data pipelines incorporating multiple buffers
US8751755Apr 8, 2008Jun 10, 2014Sandisk Enterprise Ip LlcMass storage controller volatile memory containing metadata related to flash memory storage
US8762620Apr 8, 2008Jun 24, 2014Sandisk Enterprise Ip LlcMultiprocessor storage controller
US8762687Oct 31, 2008Jun 24, 2014Via Technologies, Inc.Microprocessor providing isolated timers and counters for execution of secure code
US8775717Apr 8, 2008Jul 8, 2014Sandisk Enterprise Ip LlcStorage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
US8793543Aug 31, 2012Jul 29, 2014Sandisk Enterprise Ip LlcAdaptive read comparison signal generation for memory systems
US8793803Oct 31, 2008Jul 29, 2014Via Technologies, Inc.Termination of secure execution mode in a microprocessor providing for execution of secure code
US8819839Oct 31, 2008Aug 26, 2014Via Technologies, Inc.Microprocessor having a secure execution mode with provisions for monitoring, indicating, and managing security levels
US8838924Oct 31, 2008Sep 16, 2014Via Technologies, Inc.Microprocessor having internal secure memory
US8891303Jun 6, 2014Nov 18, 2014Sandisk Technologies Inc.Method and system for dynamic word line based configuration of a three-dimensional memory device
US8898477Nov 12, 2007Nov 25, 2014Gemalto Inc.System and method for secure firmware update of a secure token having a flash memory controller and a smart card
US8909982Oct 31, 2011Dec 9, 2014Sandisk Enterprise Ip LlcSystem and method for detecting copyback programming problems
US8910020Oct 31, 2011Dec 9, 2014Sandisk Enterprise Ip LlcIntelligent bit recovery for flash memory
US8910276Oct 31, 2008Dec 9, 2014Via Technologies, Inc.Apparatus and method for precluding execution of certain instructions in a secure execution mode microprocessor
US8924815Nov 16, 2012Dec 30, 2014Sandisk Enterprise Ip LlcSystems, methods and devices for decoding codewords having multiple parity segments
US8938658Aug 31, 2012Jan 20, 2015Sandisk Enterprise Ip LlcStatistical read comparison signal generation for memory systems
US8954822Nov 16, 2012Feb 10, 2015Sandisk Enterprise Ip LlcData encoder and decoder using memory-specific parity-check matrix
US8959282May 10, 2013Feb 17, 2015Sandisk Enterprise Ip LlcFlash storage controller execute loop
US8959283Dec 20, 2013Feb 17, 2015Sandisk Enterprise Ip LlcFlash storage controller execute loop
US8966284Nov 21, 2005Feb 24, 2015Sandisk Technologies Inc.Hardware driver integrity check of memory card controller firmware
US8978132Oct 31, 2008Mar 10, 2015Via Technologies, Inc.Apparatus and method for managing a microprocessor providing for a secure execution mode
US9002014Oct 31, 2008Apr 7, 2015Via Technologies, Inc.On-die cryptographic apparatus in a secure microprocessor
US9003264Mar 15, 2013Apr 7, 2015Sandisk Enterprise Ip LlcSystems, methods, and devices for multi-dimensional flash RAID data protection
US9009576Mar 15, 2013Apr 14, 2015Sandisk Enterprise Ip LlcAdaptive LLR based on syndrome weight
US9043517Sep 24, 2013May 26, 2015Sandisk Enterprise Ip LlcMultipass programming in buffers implemented in non-volatile data storage systems
US9048876Nov 16, 2012Jun 2, 2015Sandisk Enterprise Ip LlcSystems, methods and devices for multi-tiered error correction
US9058289Aug 31, 2012Jun 16, 2015Sandisk Enterprise Ip LlcSoft information generation for memory systems
US9069688Apr 15, 2011Jun 30, 2015Sandisk Technologies Inc.Dynamic optimization of back-end memory system interface
US9070481Jun 6, 2014Jun 30, 2015Sandisk Technologies Inc.Internal current measurement for age measurements
US9092350Sep 11, 2013Jul 28, 2015Sandisk Enterprise Ip LlcDetection and handling of unbalanced errors in interleaved codewords
US9092370Dec 19, 2013Jul 28, 2015Sandisk Enterprise Ip LlcPower failure tolerant cryptographic erase
US9093160Jun 6, 2014Jul 28, 2015Sandisk Technologies Inc.Methods and systems for staggered memory operations
US9122636Dec 19, 2013Sep 1, 2015Sandisk Enterprise Ip LlcHard power fail architecture
US9129665Dec 19, 2013Sep 8, 2015Sandisk Enterprise Ip LlcDynamic brownout adjustment in a storage device
US9136877Aug 20, 2013Sep 15, 2015Sandisk Enterprise Ip LlcSyndrome layered decoding for LDPC codes
US9141291Nov 26, 2013Sep 22, 2015Sandisk Technologies Inc.Adaptive context disbursement for improved performance in non-volatile memory systems
US9152555Nov 15, 2013Oct 6, 2015Sandisk Enterprise IP LLC.Data management with modular erase in a data storage system
US9152556Dec 11, 2013Oct 6, 2015Sandisk Enterprise Ip LlcMetadata rebuild in a flash memory controller following a loss of power
US9158349Dec 19, 2013Oct 13, 2015Sandisk Enterprise Ip LlcSystem and method for heat dissipation
US9158677May 3, 2013Oct 13, 2015Sandisk Enterprise Ip LlcFlash storage controller execute loop
US9159437Jun 21, 2013Oct 13, 2015Sandisk Enterprise IP LLC.Device and method for resolving an LM flag issue
US9170941Nov 15, 2013Oct 27, 2015Sandisk Enterprises IP LLCData hardening in a storage system
US9213846May 5, 2013Dec 15, 2015Microsoft Technology Licensing, LlcUsing flash storage device to prevent unauthorized use of software
US9214965Nov 8, 2013Dec 15, 2015Sandisk Enterprise Ip LlcMethod and system for improving data integrity in non-volatile storage
US9223982 *Mar 1, 2013Dec 29, 2015Intel CorporationContinuation of trust for platform boot firmware
US9235245Dec 19, 2013Jan 12, 2016Sandisk Enterprise Ip LlcStartup performance and power isolation
US9235509Sep 17, 2013Jan 12, 2016Sandisk Enterprise Ip LlcWrite amplification reduction by delaying read access to data written during garbage collection
US9236886Sep 17, 2013Jan 12, 2016Sandisk Enterprise Ip LlcUniversal and reconfigurable QC-LDPC encoder
US9239751Mar 15, 2013Jan 19, 2016Sandisk Enterprise Ip LlcCompressing data from multiple reads for error control management in memory systems
US9239783May 14, 2013Jan 19, 2016Sandisk Enterprise Ip LlcMultiprocessor storage controller
US9244763Sep 17, 2013Jan 26, 2016Sandisk Enterprise Ip LlcSystem and method for updating a reading threshold voltage based on symbol transition information
US9244785Dec 19, 2013Jan 26, 2016Sandisk Enterprise Ip LlcSimulated power failure and data hardening
US9250676Dec 19, 2013Feb 2, 2016Sandisk Enterprise Ip LlcPower failure architecture and verification
US9263156Dec 19, 2013Feb 16, 2016Sandisk Enterprise Ip LlcSystem and method for adjusting trip points within a storage device
US9280429Dec 19, 2013Mar 8, 2016Sandisk Enterprise Ip LlcPower fail latching based on monitoring multiple power supply voltages in a storage device
US9298608Dec 20, 2013Mar 29, 2016Sandisk Enterprise Ip LlcBiasing for wear leveling in storage systems
US9317316 *Dec 13, 2012Apr 19, 2016Huawei Technologies Co., Ltd.Host virtual machine assisting booting of a fully-encrypted user virtual machine on a cloud environment
US9323637Dec 19, 2013Apr 26, 2016Sandisk Enterprise Ip LlcPower sequencing and data hardening architecture
US9329928Nov 8, 2013May 3, 2016Sandisk Enterprise IP LLC.Bandwidth optimization in a non-volatile memory system
US9348377Apr 3, 2014May 24, 2016Sandisk Enterprise Ip LlcThermal isolation techniques
US9361221Sep 17, 2013Jun 7, 2016Sandisk Technologies Inc.Write amplification reduction through reliable writes during garbage collection
US9367246Aug 9, 2013Jun 14, 2016Sandisk Technologies Inc.Performance optimization of data transfer for soft information generation
US9384126Sep 24, 2013Jul 5, 2016Sandisk Technologies Inc.Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9384128Apr 18, 2014Jul 5, 2016SanDisk Technologies, Inc.Multi-level redundancy code for non-volatile memory controller
US9390021Jul 21, 2014Jul 12, 2016Sandisk Technologies LlcEfficient cache utilization in a tiered data structure
US9390814Aug 7, 2014Jul 12, 2016Sandisk Technologies LlcFault detection and prediction for data storage elements
US9432196Aug 12, 2014Aug 30, 2016Texas Instruments IncorporatedMethods, apparatus, and systems for secure demand paging and other paging operations for processor devices
US9436831Dec 19, 2013Sep 6, 2016Sandisk Technologies LlcSecure erase in a memory device
US9438424Aug 13, 2014Sep 6, 2016Texas Instruments IncorporatedMethods, apparatus, and systems for secure demand paging and other paging operations for processor devices
US9442662Dec 20, 2013Sep 13, 2016Sandisk Technologies LlcDevice and method for managing die groups
US9442670Aug 27, 2014Sep 13, 2016Sandisk Technologies LlcMethod and system for rebalancing data stored in flash memory devices
US9443601Sep 8, 2014Sep 13, 2016Sandisk Technologies LlcHoldup capacitor energy harvesting
US9448743 *Apr 25, 2014Sep 20, 2016Sandisk Technologies LlcMass storage controller volatile memory containing metadata related to flash memory storage
US9448876Aug 7, 2014Sep 20, 2016Sandisk Technologies LlcFault detection and prediction in storage devices
US9454420Mar 15, 2013Sep 27, 2016Sandisk Technologies LlcMethod and system of reading threshold voltage equalization
US9454448Aug 7, 2014Sep 27, 2016Sandisk Technologies LlcFault testing in storage devices
US9483210Oct 7, 2015Nov 1, 2016Sandisk Technologies LlcFlash storage controller execute loop
US9485851Apr 3, 2014Nov 1, 2016Sandisk Technologies LlcThermal tube assembly structures
US9497889May 12, 2014Nov 15, 2016Sandisk Technologies LlcHeat dissipation for substrate assemblies
US9501398Mar 14, 2013Nov 22, 2016Sandisk Technologies LlcPersistent storage device with NVRAM for staging writes
US20060176068 *Dec 22, 2005Aug 10, 2006Micky HoltzmanMethods used in a secure memory card with life cycle phases
US20060177064 *Feb 7, 2005Aug 10, 2006Micky HoltzmanSecure memory card with life cycle phases
US20070061570 *Nov 21, 2005Mar 15, 2007Michael HoltzmanMethod of hardware driver integrity check of memory card controller firmware
US20070061581 *Dec 22, 2005Mar 15, 2007Micky HoltzmanMethods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
US20070061897 *Nov 21, 2005Mar 15, 2007Michael HoltzmanHardware driver integrity check of memory card controller firmware
US20070188183 *Dec 22, 2005Aug 16, 2007Micky HoltzmanSecure memory card with life cycle phases
US20070239748 *Mar 29, 2006Oct 11, 2007Smith Ned MManagement of reference data for platform verification
US20070260615 *May 8, 2006Nov 8, 2007Eran ShenMedia with Pluggable Codec
US20070260616 *May 8, 2006Nov 8, 2007Eran ShenMedia with Pluggable Codec Methods
US20070267474 *Sep 15, 2006Nov 22, 2007Eran ShenSecure storage digital kiosk distribution methods
US20070282747 *Sep 15, 2006Dec 6, 2007Eran ShenSecure storage digital kiosk distribution
US20070294494 *Jun 27, 2006Dec 20, 2007Texas Instruments IncorporatedPage processing circuits, devices, methods and systems for secure demand paging and other operations
US20070294496 *Jun 27, 2006Dec 20, 2007Texas Instruments IncorporatedMethods, apparatus, and systems for secure demand paging and other paging operations for processor devices
US20080082447 *Aug 8, 2006Apr 3, 2008Fabrice Jogand-CoulombPortable Mass Storage Device With Virtual Machine Activation
US20080114981 *Nov 13, 2006May 15, 2008Seagate Technology LlcMethod and apparatus for authenticated data storage
US20080117679 *Feb 26, 2007May 22, 2008Pramila SrinivasanSecuring a flash memory block in a secure device system and method
US20080126705 *Aug 8, 2006May 29, 2008Fabrice Jogand-CoulombMethods Used In A Portable Mass Storage Device With Virtual Machine Activation
US20080141381 *May 22, 2007Jun 12, 2008Walkoe Wilbur JIntegrated delivery and protection device for digital objects
US20080162947 *Jun 20, 2007Jul 3, 2008Michael HoltzmanMethods of upgrading a memory card that has security mechanisms that prevent copying of secure content and applications
US20080215847 *May 16, 2008Sep 4, 2008Sandisk Corporation And Discretix Technologies Ltd.Secure yet flexible system architecture for secure devices with flash mass storage memory
US20080247546 *Dec 3, 2007Oct 9, 2008Samsung Electronics Co., Ltd.Method and apparatus for protecting digital content stored in usb mass storage device using time information
US20080301466 *Apr 3, 2008Dec 4, 2008Mediatek Inc.Methods for program verification and apparatuses using the same
US20090055660 *Dec 17, 2007Feb 26, 2009Chih-Wen ChengSecurity flash memory, data encryption device and method for accessing security flash memory
US20090063756 *Aug 31, 2007Mar 5, 2009Microsoft CorporationUsing flash storage device to prevent unauthorized use of software
US20090113116 *Oct 30, 2007Apr 30, 2009Thompson E EarleDigital content kiosk and methods for use therewith
US20090150605 *Apr 6, 2008Jun 11, 2009David FlynnApparatus, system, and method for converting a storage request into an append data storage command
US20090172259 *Apr 8, 2008Jul 2, 2009Pliant Technology, Inc.Mass storage controller volatile memory containing metadata related to flash memory storage
US20090172260 *Apr 8, 2008Jul 2, 2009Pliant Technology, Inc.Flash memory controller and system including data pipelines incorporating multiple buffers
US20090172261 *Apr 8, 2008Jul 2, 2009Pliant Technology, Inc.Multiprocessor storage controller
US20090172308 *Apr 8, 2008Jul 2, 2009Pliant Technology, Inc.Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
US20090172499 *Apr 8, 2008Jul 2, 2009Pliant Technology, Inc.Patrol function used in flash storage controller to detect data errors
US20090193261 *Jan 25, 2008Jul 30, 2009Mediatek Inc.Apparatus and method for authenticating a flash program
US20090210615 *Feb 14, 2008Aug 20, 2009Vadzim StrukOverlay management in a flash memory storage device
US20090240955 *May 30, 2007Sep 24, 2009Datamark Technologies Pte Ltd.Secure media storage device and method of securing media storage devices
US20090290712 *Oct 31, 2008Nov 26, 2009Via Technologies, IncOn-die cryptographic apparatus in a secure microprocessor
US20090292853 *Oct 31, 2008Nov 26, 2009Via Technologies, IncApparatus and method for precluding execution of certain instructions in a secure execution mode microprocessor
US20090292893 *Oct 31, 2008Nov 26, 2009Via Technologies, IncMicroprocessor having secure non-volatile storage access
US20090292894 *Oct 31, 2008Nov 26, 2009Via Technologies, IncMicroprocessor having internal secure memory
US20090292901 *Oct 31, 2008Nov 26, 2009Via Technologies, IncMicroprocessor apparatus and method for persistent enablement of a secure execution mode
US20090292902 *Oct 31, 2008Nov 26, 2009Via Technologies, IncApparatus and method for managing a microprocessor providing for a secure execution mode
US20090292903 *Oct 31, 2008Nov 26, 2009Via Technologies, IncMicroprocessor providing isolated timers and counters for execution of secure code
US20090292904 *Oct 31, 2008Nov 26, 2009Via Technologies, IncApparatus and method for disabling a microprocessor that provides for a secure execution mode
US20090292929 *Oct 31, 2008Nov 26, 2009Via Technologies, IncInitialization of a microprocessor providing for execution of secure code
US20090292931 *Oct 31, 2008Nov 26, 2009Via Technology, IncApparatus and method for isolating a secure execution mode in a microprocessor
US20090293129 *Oct 31, 2008Nov 26, 2009Via Technologies, IncTermination of secure execution mode in a microprocessor providing for execution of secure code
US20090293130 *Oct 31, 2008Nov 26, 2009Via Technologies, IncMicroprocessor having a secure execution mode with provisions for monitoring, indicating, and managing security levels
US20090293132 *Oct 31, 2008Nov 26, 2009Via Technologies, IncMicroprocessor apparatus for secure on-die real-time clock
US20090327743 *Jan 16, 2009Dec 31, 2009Aridian Technology Company, Inc.Secure portable data transport & storage system
US20100023673 *Jul 22, 2008Jan 28, 2010Sandisk CorporationAvoidance of self eviction caused by dynamic memory allocation in a flash memory storage device
US20100023777 *Nov 12, 2007Jan 28, 2010Gemalto IncSystem and method for secure firmware update of a secure token having a flash memory controller and a smart card
US20100122017 *Mar 13, 2008May 13, 2010Masayuki ToyamaMemory controller, non-volatile memory system, and host device
US20100205457 *Apr 19, 2010Aug 12, 2010Fabrice Jogand-CoulombPortable Mass Storage Device with Virtual Machine Activation
US20100318720 *Jun 16, 2009Dec 16, 2010Saranyan RajagopalanMulti-Bank Non-Volatile Memory System with Satellite File System
US20130173900 *Dec 13, 2012Jul 4, 2013Huawei Technologies Co., Ltd.Key transmission method and device of a virtual machine under full disk encryption during pre-boot
US20140237168 *Apr 25, 2014Aug 21, 2014Sandisk Enterprise Ip LlcMass Storage Controller Volatile Memory Containing Metadata Related to Flash Memory Storage
US20140250291 *Mar 1, 2013Sep 4, 2014Nicholas J. AdamsContinuation of trust for platform boot firmware
WO2007139516A1 *May 30, 2007Dec 6, 2007Datamark Technologies Pte LtdA secure media storage device and method of securing media storage devices
WO2009062965A2 *Nov 12, 2008May 22, 2009Gemalto SaSystem and method for secure firmware update of a secure token having a flash memory controller and a smart card
WO2009062965A3 *Nov 12, 2008Jul 9, 2009Gemalto SaSystem and method for secure firmware update of a secure token having a flash memory controller and a smart card
WO2009086404A1 *Dec 23, 2008Jul 9, 2009Pliant Technology, Inc.Mass storage controller volatile memory containing metadata related to flash memory storage
WO2010147827A1Jun 9, 2010Dec 23, 2010Sandisk CorporationMulti-bank non-volatile memory system with satellite file system
WO2012009318A1Jul 12, 2011Jan 19, 2012Sandisk Technologies Inc.Dynamic optimization of back-end memory system interface
Classifications
U.S. Classification713/193, 713/181, 713/190, 711/E12.092
International ClassificationH04L9/32, G06F11/30, G06F12/14, H04L9/00
Cooperative ClassificationG06F2221/2107, G06F21/78, G06F12/0246, G06F12/1408, G06F2212/2022, G06F21/10
European ClassificationG06F12/02D2E2, G06F21/10, G06F21/78, G06F12/14B
Legal Events
DateCodeEventDescription
Oct 23, 2007ASAssignment
Owner name: SANDISK CORPORATION, CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HOLTZMAN, MICKY;REEL/FRAME:019999/0004
Effective date: 20070909
Nov 7, 2007ASAssignment
Owner name: DISCRETIX TECHNOLOGIES LTD., ISRAEL
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BAR-EL, HAGAI;REEL/FRAME:020078/0592
Effective date: 20071028
Aug 3, 2016ASAssignment
Owner name: SANDISK TECHNOLOGIES LLC, TEXAS
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SANDISK CORPORATION;REEL/FRAME:039551/0231
Effective date: 20160712