WO2009076405A1 - Integration of secure data transfer applications for generic io devices - Google Patents

Integration of secure data transfer applications for generic io devices Download PDF

Info

Publication number
WO2009076405A1
WO2009076405A1 PCT/US2008/086168 US2008086168W WO2009076405A1 WO 2009076405 A1 WO2009076405 A1 WO 2009076405A1 US 2008086168 W US2008086168 W US 2008086168W WO 2009076405 A1 WO2009076405 A1 WO 2009076405A1
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
cache
size
response
command
Prior art date
Application number
PCT/US2008/086168
Other languages
French (fr)
Inventor
Xian Jun Liu
Robert C. Chang
Po Yuan
Junzhi Wang
Ron Barzilai
Bahman Qawami
Farshid Sabet-Sharghi
Original Assignee
Sandisk Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sandisk Corporation filed Critical Sandisk Corporation
Priority to EP08859004A priority Critical patent/EP2245527B1/en
Publication of WO2009076405A1 publication Critical patent/WO2009076405A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1004Compatibility, e.g. with legacy hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • G06F2212/2146Solid state disk being detachable, e.g.. USB memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/462Track or segment

Definitions

  • This invention pertains generally to the field of using portable media, such as a secure memory card, with digital appliances, such as a telephone handset, and more particularly to techniques for transferring instructions between a digital appliance and a portable media in communication therewith.
  • Digital appliances such as notebook or laptop computers, personal digital assistants (PDAs), or mobile phones, are commonly used with portable media, such as memory cards or USB drives.
  • portable media such as memory cards or USB drives.
  • secure data is stored on these portable media.
  • the application responsible for securely transferring this data between the hosting appliance and the media often uses instructions that have a specific structure.
  • the host may cache the instruction; but as the host's operating system may unaware of the instruction's structure, and because the host's cache structure may not be compatible with the instruction's structure, the instruction, along with any associated data, may not be successfully transferred.
  • techniques are presented for sending an application instruction from a hosting digital appliance to a portable medium, where the instruction is structured as one or more units whose size is a first size, or number of bytes.
  • the instruction is written to the cache, where the cache is structured as logical blocks having a size that is a second size that is larger (in terms of number of bytes) than the first size.
  • the start of the instruction is aligned with one of the logical block boundaries in the cache and the instruction is padded out with dummy data so that it fills an integral number of the cache blocks.
  • the cache is similarly flushed prior to receiving the response. The response is then stored to align with a logical block boundary of the cache.
  • Figure 1 is a flowchart of a common sequence for a write process with caching
  • FIG. 1 is an application system diagram
  • Figure 3 shows an example of a command structure
  • Figure 4 is a table showing an example of a command structure
  • Figure 5 illustrates the caching of an instruction, such as is shown in Figure 3, where the instruction does not like up with a cache boundary;
  • Figure 6 illustrates the caching of an instruction, such as is shown in Figure 3, where the instruction is aligned with a cache boundary and padded out;
  • Figure 7 illustrates a method of placing an instruction into cache
  • Figure 8 illustrates a method of placing a response into the host's cache.
  • a host's operation system When transferring content between a portable medium, such as a memory card, and a hosting digital appliance, such as mobile telephone handset, a host's operation system will often use a caching mechanism for the content.
  • This cache will typically have a structure where it is logically broken up into a number of blocks of a particular size.
  • the content being transferred may also be structured in a specific way as one or more sections of a certain size.
  • the caching mechanism may clash with the content's structural requirements.
  • the host's operating system may treat the instruction as data to be written to a particular address on the medium; but, when received on the medium, this instruction will be interpreted as, for example, a write command to store data at different address on the medium. If the host then tries to issue a read command for this data, the address as seen by the host's operating system will not correspond to the actual address as interpreted on the medium; and as the host may then rely what is thinks is cached copy of the data, it will incorrectly use this cached data.
  • the techniques described here are widely applicable, both for portable media, such as memory cards, that are primarily used with a hosting digital appliance, and also digital appliances which themselves include non-volatile memory, such as embedded flash.
  • digital appliances include desktop, notebook or laptop tablet computers, personal digital assistants (PDAs), mobile phone handsets, a variety of media players such as MP3 players, DVD players, gaming consoles, digital recording devices such as digital cameras, and others.
  • PDAs personal digital assistants
  • Suitable portable media are available from SanDisk Corporation, the assignee hereof, which include those sold under trademarks TrustedFlash, CompactFlash (CF), Multi-Media Card (MMC), Secure Digital (SD), MicroSD and Memory Stick PRO.
  • Flash drives These memory cards are removably connectable with digital appliances through mating connectors that are different for most cards. Flash drives, sold as those sold under the Cruzer trademark, contain a plug according to the Universal Serial Bus (USB) standard, so can be plugged directly into any digital appliance having a USB receptacle. TrustedFlash cards and other secure cards (SIM, SMMC, SD, etc) allow secure storage of the both licenses and associated content. Also the following discussion will often refer to nonvolatile memory as flash, the techniques given here are not so limited and more generally apply to other non-volatile memory structures (such as described in US patent application 10/841,379, for example), for both portable devices and embedded memories.
  • USB Universal Serial Bus
  • firmware associated with the secure transfer can be changed to be aware of the running time command size; the associated application toolkit needs to be integrated with the applications; instructions sent from the application to the platform operation system (OS), including write and read commands, start with a cache block size aligned sector; and that the write, read buffer size should be cache block size aligned.
  • OS platform operation system
  • the applications can use the provided IO access to communicate with the secure content media card by integrating the corresponding toolkit into the applications.
  • This can be used for any platforms, especially being good for those unmodified platforms, as long as the IO device is accessible for applications.
  • the major difficulty of this solution is to deal with the caching mechanism, which is used most likely for every platform.
  • the following section describes the nature of this caching mechanism, and the conflicts between its buffered IO and the earlier versions of secure content transfer firmware.
  • a common scenario for write command is the following:
  • Application asks to write to the device n sectors on location m th sector. .
  • the OS will check the cache for related memory location; if it does not exist, the OS will read data from a location on the card, including the required location, and then stores it on the cache. .
  • the OS will update the related sector.
  • Figure 1 is a flow chart to describe this common behavior for write command as seen by the host. It should again be noted that although the application may see the instruction as a command, possibly with data attached, to the operating system, it is just interpreted as data.
  • Figure 1 starts at 101 with the application asking to write to the device.
  • the cache is checked at 103 to determine whether a related location already exists in the cache; if so (the "Y" path), the data is written to the related location of the cache at 105. If a related cache location is not found (the "N" path out of 103), it is then determined whether the n (the number of sectors to write) is cache-block-size aligned, and m (the location for the write) is cache-block-size aligned at 107, and, if so, the process again goes to 105.
  • the NO path out of 107 leads to 109, where the starting write location or buffer size buffer is adjusted as needed.
  • the host will change the starting on the fifth and the total sectors of data as 8. 109 then goes on to 111, where the related data aligned with the cache block size is read from the device, before going to 105.
  • the OS may flush the data back to the card right if forced.
  • the TrustedFlash firmware may not be able to understand whatever command sent from the applications.
  • the corresponding toolkit will need to integrate into the host's applications so that they can call the toolkit APIs to send, say, TrustedFlash commands to the TrustedFlash cards.
  • the toolkit provides full package of APIs for applications to access the secure media. This package offers many functions related with secure system, such as system operation, account operation, storage operation, and digital rights management (DRM) operation.
  • DRM digital rights management
  • the applications will directly call the toolkit's APIs, and then the toolkit will talk to the corresponding secure medium by using the device operation methods provided by the platform OS.
  • this methods are open(), read(), write(), and close().
  • this glue layer between toolkit and the platform is implemented in the Platform I/O Device Operation.
  • FIG. 2 gives a block diagram of the structure.
  • the layer shown include the various customer applications 201 on the top, under which is the platform's operating system and file systems 203, and then the platform's block device driver 205 which is used to communicate with the portable medium 250.
  • the toolkit 207 will then be between the costumer application layer 201 and the operation system and file systems layers.
  • DRM digital rights management
  • data protection customer APIs
  • storage account, system, and utility blocks
  • secure manager secure file system
  • protocol driver protocol driver
  • platform I/O device operation sublayers the secure file system, protocol driver, and platform I/O device operation sublayers.
  • the instructions used in secure data protocols are often based on units of a particular number of bits.
  • the TrustedFlash instructions for communicating between a host and the TrustedFlash firmware on media are sector-based. The number of sectors for each instruction is predefined during the firmware loading.
  • Figure 3 and table of Figure 4 show the TrustedFlash command structure as found in the TrustedFlash specification.
  • the exemplary instruction is composed of a first sector (512 Bytes) that holds the command. After this command block follows any associated sectors of data, again structured as sectors. For example, a write instruction for N sectors of data would consist of N+l sectors, a first for the write command followed by the data sectors. For commands without data, such as a status request, would just be the one sector of the command block. Any response, such as the data of a read command, would be treated by the read process of the last section below.
  • the table of Figure 4 illustrates some details for the exemplary command block structure in the TrustedFlash protocol.
  • Figure 5 schematically illustrates the sort of misalignment that can occur under the prior art arrangement when an instruction based on units of a first size is written into a cache based on logical blocks of a different size.
  • the instruction 501 is take to be made up of 5 sector-sized units, where the first sector 501a is the command portion and there are four sectors 501b of associated data.
  • the cache 503 is structure in terms of 2KB (or, more accurately 2048Byte) blocks. (It will typically be the case that the size of the blocks used in the cache will be some multiple of a standard sector.) Without the sort of arrangements discussed below, the instruction could be cached at a arbitrary location in the cache as shown in Figure 5, with the resultant problems described above.
  • the current firmware preferably knows the dynamical command size of each commands. To do so, one field can be introduced to add into the command block to specify the total size of current sending command. For example, in the table of Figure 4, a new field for the dummy sector count can be added into the second portion of the command sector beginning at byte 36. The predefined command lengths will be treated as the default values, and this field will tell the actual size of this command in run time. If this field is 0, then the default values will be used.
  • the secure transfer firmware is the agent inside the media (e.g., TrustedFlash) card to handle the commands.
  • the secure transfer commands from the host are preferably sent to the card immediately. Therefore, if the platform OS does not send a write command to the card, but puts the data into the buffer instead, the medium will have no way to get the command and respond to it.
  • the sequence of the write command must follow the appropriate (e.g. TrustedFlash) protocol; any extra reads or writes in the command sequence before command completion, including get command status, will cause problems to firmware, so that the command will not succeed. Below is the method to solve these problems one by one.
  • Some platforms may provide a function of flushing for write, in which case the corresponding command can be used. In others that lack such a command, or where flushing may not be working, the medium can be logically closed and reopened. To ensure the write command is flushed into the card, close-reopen always works.
  • the host will initialize and mount the media/card. To access the contents of the media, it will open the media. It is considered as "logical" open. Related data, table, cache, and so on are established. After that, you can browse the directories, or open "file” for read/write operation. By "closing" the media, all cache contents, tables or data are cleared or invalidated.
  • the Linux operating system includes an open() command and a close() command. The close() command closes a file descriptor of the media so that it no longer refers to any file and may be used. Any record locks held on the file descriptor it was associated with, and owned with the process are removed.
  • the OS does not need to adjust this write command since everything is cache-block-size aligned, and it does not need to read data form the card since the buffer size is block size aligned. As a result, the write command from the host will not be modified. If a platform supports direct IO, this method can still apply by simply setting the block size as 512 bytes.
  • the flow chart of Figure 7 describes this method of write command.
  • the flow begins at 701 with the original status of the medium being open.
  • the cache is then flushed at 703 by logically closing the device and then reopening it. Alternately, if the operating system has a specific command to flush the cache, this can be used instead.
  • the instruction is then placed in the flushed cache at block 705.
  • the instruction 601 (including command block 601a and, in this example, four sectors of data) is stored so that it is aligned with a logical boundary in the cache 603. If this leaves any cache blocks only partially filled, these are then padded out to maintain the instruction as an integral number of logical blocks in the cache. In this example, as each logical block in the cache can hold 4 sectors, and the instruction has 5 sectors, when the instruction is contiguously cached, the last sector of the instruction only occupies part of a cache block.
  • the hatching at 607 represents the added padded so that the host's operating system thinks the instruction is formed of complete cache blocks and treats it as such.
  • this process can include the command block being filled with the total size of the actual instruction or command and reading back the starting sector with the cache's logical block size aligned.
  • the data, including any dummy sectors to fill out a complete cache block, are then filled.
  • the starting write sector can then be checked to confirm the block alignment of the instruction.
  • the write command to send this instruction to the media can then be sent to the platform's operating system, where the write process will now start with the logical block address (LBA) that aligns with the cache's block boundaries and size.
  • LBA logical block address
  • the medium may need to respond to the host, such as with a status or with data in response to a read request. Because of caching, whenever the application send a read command, the OS may just go to the cache to read it back if the related location data is in the cache. Therefore, the actual firmware response is not returned back to the application.
  • cache bypass can be used in the following way:
  • Figure 8 shows an exemplary embodiment for allowing the medium to respond to an instruction from the host. Typically, this read process will immediately follow the write process described in the last section, with no other commands being inserted between the write instruction and the read command. The flow again begins with the original device status being open, block 801.
  • the cache is flushed as at 703, with a close and then open or, if available, with a command to flush the cache. As the cache is now emptied, this prevents the operating system from just returning cached material instead of the actual response from the medium.
  • the alignment is checked to see that when the received response is placed in the cache, it will be aligned with the logical block structure of the cache. Finally, the read command is sent to the platform's operating system.
  • the driver can then send the read instruction to the medium, which will then return the response.
  • this may include actual secure user data (that, data as seen be the secure transfer system) or a non-data response, such as a status.
  • the response is then cached aligned with the logical block boundaries of the cache. Padding, which secure transfer application would then ignore, may also be added to fill out an integral number of cache blocks.

Abstract

Techniques are presented for sending an application instruction from a hosting digital appliance to a portable medium, where the instruction is structured as one or more units whose size is a first size, or number of bytes. After flushing the contents of a cache, the instruction is written to the cache, where the cache is structured as logical blocks having a size that is a second size that is larger (in terms of number of bytes) than the first size. In writing the instruction (having a command part and, possibly, a data part), the start of the instruction is aligned with one of the logical block boundaries in the cache and the instruction is padded out with dummy data so that it fills an integral number of the cache blocks. When a response from a portable device to an instruction is received at a hosting digital appliance, the cache is similarly flushed prior to receiving the response. The response is then stored to align with a logical block boundary of the cache.

Description

INTEGRATION OF SECURE DATA TRANSFER APPLICATIONS FOR GENERIC IO DEVICES
FIELD OF THE INVENTION
[0001] This invention pertains generally to the field of using portable media, such as a secure memory card, with digital appliances, such as a telephone handset, and more particularly to techniques for transferring instructions between a digital appliance and a portable media in communication therewith.
BACKGROUND
[0002] Digital appliances, such as notebook or laptop computers, personal digital assistants (PDAs), or mobile phones, are commonly used with portable media, such as memory cards or USB drives. In some cases, secure data is stored on these portable media. The application responsible for securely transferring this data between the hosting appliance and the media often uses instructions that have a specific structure. As part of the transfer process, the host may cache the instruction; but as the host's operating system may unaware of the instruction's structure, and because the host's cache structure may not be compatible with the instruction's structure, the instruction, along with any associated data, may not be successfully transferred.
SUMMARY OF THE INVENTION
[0003] According to a one aspect, techniques are presented for sending an application instruction from a hosting digital appliance to a portable medium, where the instruction is structured as one or more units whose size is a first size, or number of bytes. After flushing the contents of a cache, the instruction is written to the cache, where the cache is structured as logical blocks having a size that is a second size that is larger (in terms of number of bytes) than the first size. In writing the instruction (having a command part and, possibly, a data part), the start of the instruction is aligned with one of the logical block boundaries in the cache and the instruction is padded out with dummy data so that it fills an integral number of the cache blocks. [0004] According to another aspect, when a response from a portable device to an instruction is received at a hosting digital appliance, the cache is similarly flushed prior to receiving the response. The response is then stored to align with a logical block boundary of the cache.
[0005] Various aspects, advantages, features and embodiments of the present invention are included in the following description of exemplary examples thereof, which description should be taken in conjunction with the accompanying drawings. All patents, patent applications, articles, other publications, documents and things referenced herein are hereby incorporated herein by this reference in their entirety for all purposes. To the extent of any inconsistency or conflict in the definition or use of terms between any of the incorporated publications, documents or things and the present application, those of the present application shall prevail.
BRIEF DESCRIPTION OF THE DRAWINGS
[0006] The various aspects and features of the present invention may be better understood by examining the following figures, in which:
Figure 1 is a flowchart of a common sequence for a write process with caching;
Figure 2 is an application system diagram;
Figure 3 shows an example of a command structure;
Figure 4 is a table showing an example of a command structure;
Figure 5 illustrates the caching of an instruction, such as is shown in Figure 3, where the instruction does not like up with a cache boundary;
Figure 6 illustrates the caching of an instruction, such as is shown in Figure 3, where the instruction is aligned with a cache boundary and padded out;
Figure 7 illustrates a method of placing an instruction into cache; and
Figure 8 illustrates a method of placing a response into the host's cache.
DETAILED DESCRIPTION
Introduction
[0007] When transferring content between a portable medium, such as a memory card, and a hosting digital appliance, such as mobile telephone handset, a host's operation system will often use a caching mechanism for the content. This cache will typically have a structure where it is logically broken up into a number of blocks of a particular size. The content being transferred, whether data or an instruction (a command and maybe some associated data), may also be structured in a specific way as one or more sections of a certain size. When the content is structure in units of one size (for example, as 512 Byte sectors) and the cache is structured in units of another size (for example, in 2KB blocks), the caching mechanism may clash with the content's structural requirements.
[0008] This is particularly true with dealing with secure content and secure portable storage media, such as that marketed under the TrustedFlash name. In such cases, the more basic levels of a host's operating system that handle transfers between the host and the portable medium will see the instruction as just so much data, being unaware of any embedded commands in the instruction, and store it as such in cache. Examples of such instructions and their use are described in US patent number 7,237,046, US patent application number 10/899,260, and, particularly, US patent applications numbers 11/298,349 and 11/299,186. Under such arrangements, the host's operating system may treat the instruction as data to be written to a particular address on the medium; but, when received on the medium, this instruction will be interpreted as, for example, a write command to store data at different address on the medium. If the host then tries to issue a read command for this data, the address as seen by the host's operating system will not correspond to the actual address as interpreted on the medium; and as the host may then rely what is thinks is cached copy of the data, it will incorrectly use this cached data.
[0009] The techniques described here are widely applicable, both for portable media, such as memory cards, that are primarily used with a hosting digital appliance, and also digital appliances which themselves include non-volatile memory, such as embedded flash. Example of such digital appliances include desktop, notebook or laptop tablet computers, personal digital assistants (PDAs), mobile phone handsets, a variety of media players such as MP3 players, DVD players, gaming consoles, digital recording devices such as digital cameras, and others. Suitable portable media are available from SanDisk Corporation, the assignee hereof, which include those sold under trademarks TrustedFlash, CompactFlash (CF), Multi-Media Card (MMC), Secure Digital (SD), MicroSD and Memory Stick PRO. These memory cards are removably connectable with digital appliances through mating connectors that are different for most cards. Flash drives, sold as those sold under the Cruzer trademark, contain a plug according to the Universal Serial Bus (USB) standard, so can be plugged directly into any digital appliance having a USB receptacle. TrustedFlash cards and other secure cards (SIM, SMMC, SD, etc) allow secure storage of the both licenses and associated content. Also the following discussion will often refer to nonvolatile memory as flash, the techniques given here are not so limited and more generally apply to other non-volatile memory structures (such as described in US patent application 10/841,379, for example), for both portable devices and embedded memories. Although the teachings given here are not so limited, when reference is made to a particular embodiment for purposes of discussion, the following will often refer to the concrete example of a mobile telephone handset used with a memory card, such as that of the TrustedFlash variety, having instructions whose structure is based on a sector.
[0010] To circumvent such possible difficulties with the host caching, firmware associated with the secure transfer can be changed to be aware of the running time command size; the associated application toolkit needs to be integrated with the applications; instructions sent from the application to the platform operation system (OS), including write and read commands, start with a cache block size aligned sector; and that the write, read buffer size should be cache block size aligned.
[0011] Technically, to allow fast spread out of secure content media to users of digital appliances, integration for these platforms with the corresponding secure content toolkit is important. Due to the special requirements of most secure content technology and code size consideration, the corresponding application toolkit usually needs to be integrated into the operating system (OS) of a handset or other hosting device, so that the applications can call the application programming interfaces (APIs) provided by the toolkit to access the media. However, for certain standardized or open platforms, say Linux and WIPI, this solution can be complicated to implement since it is not easy to have the needed platform modifications to support secure content media. [0012] To overcome this limitation, every platform will provide a way for applications to access generic IO device; in case of a TrustedFlash card, this is the SD IO device. With this assumption, the applications can use the provided IO access to communicate with the secure content media card by integrating the corresponding toolkit into the applications. This can be used for any platforms, especially being good for those unmodified platforms, as long as the IO device is accessible for applications. The major difficulty of this solution is to deal with the caching mechanism, which is used most likely for every platform. The following section describes the nature of this caching mechanism, and the conflicts between its buffered IO and the earlier versions of secure content transfer firmware.
Problem of Buffered IO with Current Secure Transfer Firmware [0013] As noted, many command and data transfer processes rely upon a particular structure for instructions. For example, current TrustedFlash firmware is defined to communicate with the handset or other host through sector (512 Bytes) based instructions. The number of sectors for each instruction is predefined. This can cause a major IO problem for buffered IO only platforms. Due to the hosting platform's caching mechanism, the instructions sent to TrustedFlash firmware on the media may not be sector based, so that the TrustedFlash communication channel is broken. For example, a TrustedFlash CREATE ACR command is a one-sector write instruction. When an application sends a one-sector write to the platform OS, this write command may be changed to a write command with multiple sectors, and the starting write location may be changed as well, after this command reaches the secure transfer firmware on the media.
[0014] A common scenario for write command is the following:
. Application asks to write to the device n sectors on location mth sector. . The OS will check the cache for related memory location; if it does not exist, the OS will read data from a location on the card, including the required location, and then stores it on the cache. . The OS will update the related sector.
. The OS may or may not flush the data back to the card right away. Figure 1 is a flow chart to describe this common behavior for write command as seen by the host. It should again be noted that although the application may see the instruction as a command, possibly with data attached, to the operating system, it is just interpreted as data.
[0015] Figure 1 starts at 101 with the application asking to write to the device. The cache is checked at 103 to determine whether a related location already exists in the cache; if so (the "Y" path), the data is written to the related location of the cache at 105. If a related cache location is not found (the "N" path out of 103), it is then determined whether the n (the number of sectors to write) is cache-block-size aligned, and m (the location for the write) is cache-block-size aligned at 107, and, if so, the process again goes to 105. The NO path out of 107 leads to 109, where the starting write location or buffer size buffer is adjusted as needed. For example, take the case of where the size of the cache blocks is 2KB and the hosting application sends the instruction data with a total of n=5 sectors and which starts on the seventh sector (m=7). The host will change the starting on the fifth and the total sectors of data as 8. 109 then goes on to 111, where the related data aligned with the cache block size is read from the device, before going to 105. Finally, the OS may flush the data back to the card right if forced. As a result of this caching mechanism, the TrustedFlash firmware may not be able to understand whatever command sent from the applications.
[0016] In practice, some platforms support direct IO, while others only provide buffered IO . In addition, the caching algorithms may be different from platform to platform. Therefore, a generic solution is quite preferable for integration with secure transfer application's toolkit. The following discussion present such an integrated solution, based on the example for TrustedFlash, that works whether the host platform uses direct IO or buffered IO . This is presented below as including four components: the structure of system integration; the modification of firmware; and the methods of solving caching for write and for read.
Integrating Secure Transfer Toolkit into Applications
[0017] Since a platform remains the same, for the applications to access the secure content card, the corresponding toolkit will need to integrate into the host's applications so that they can call the toolkit APIs to send, say, TrustedFlash commands to the TrustedFlash cards. Briefly, the toolkit provides full package of APIs for applications to access the secure media. This package offers many functions related with secure system, such as system operation, account operation, storage operation, and digital rights management (DRM) operation.
[0018] The applications will directly call the toolkit's APIs, and then the toolkit will talk to the corresponding secure medium by using the device operation methods provided by the platform OS. For example, in Linux, this methods are open(), read(), write(), and close(). According to each individual platform, this glue layer between toolkit and the platform is implemented in the Platform I/O Device Operation.
[0019] Figure 2 gives a block diagram of the structure. On the host side, the layer shown include the various customer applications 201 on the top, under which is the platform's operating system and file systems 203, and then the platform's block device driver 205 which is used to communicate with the portable medium 250. The toolkit 207 will then be between the costumer application layer 201 and the operation system and file systems layers. As shown in Figure 2, among the elements that can be included in the toolkit are digital rights management (DRM), data protection, customer APIs, storage, account, system, and utility blocks, as well the secure manager, secure file system, protocol driver, and platform I/O device operation sublayers.
The Modification of Secure Firmware
[0020] As discussed above, the instructions used in secure data protocols are often based on units of a particular number of bits. For example, the TrustedFlash instructions for communicating between a host and the TrustedFlash firmware on media are sector-based. The number of sectors for each instruction is predefined during the firmware loading. Figure 3 and table of Figure 4 show the TrustedFlash command structure as found in the TrustedFlash specification.
[0021] As shown in Figure 3, and as is developed further in US patent applications numbers 11/298,349 and 11/299,186, the exemplary instruction is composed of a first sector (512 Bytes) that holds the command. After this command block follows any associated sectors of data, again structured as sectors. For example, a write instruction for N sectors of data would consist of N+l sectors, a first for the write command followed by the data sectors. For commands without data, such as a status request, would just be the one sector of the command block. Any response, such as the data of a read command, would be treated by the read process of the last section below. The table of Figure 4 illustrates some details for the exemplary command block structure in the TrustedFlash protocol.
[0022] Figure 5 schematically illustrates the sort of misalignment that can occur under the prior art arrangement when an instruction based on units of a first size is written into a cache based on logical blocks of a different size. For this example, the instruction 501 is take to be made up of 5 sector-sized units, where the first sector 501a is the command portion and there are four sectors 501b of associated data. The cache 503 is structure in terms of 2KB (or, more accurately 2048Byte) blocks. (It will typically be the case that the size of the blocks used in the cache will be some multiple of a standard sector.) Without the sort of arrangements discussed below, the instruction could be cached at a arbitrary location in the cache as shown in Figure 5, with the resultant problems described above.
[0023] In order to make the media firmware understood the commands from platforms with buffered IO, the current firmware preferably knows the dynamical command size of each commands. To do so, one field can be introduced to add into the command block to specify the total size of current sending command. For example, in the table of Figure 4, a new field for the dummy sector count can be added into the second portion of the command sector beginning at byte 36. The predefined command lengths will be treated as the default values, and this field will tell the actual size of this command in run time. If this field is 0, then the default values will be used.
[0024] When a platform OS is using buffered IO, the behaviors for both read and write may be changed as described below. The following two sections describe the way to deal with the caching on write, when an instruction is sent to the medium, and read, when a response is returned. Briefly, this process is illustrated in Figure 6, which is similarly numbered to Figure 5, except as shown in Figure 6, the instruction is now aligned with a logical block boundary in the cache and any partially filled cache blocks are then padded out as shown by the hatched area 607. Method of Direct Write Command for Buffered IO
[0025] The secure transfer firmware is the agent inside the media (e.g., TrustedFlash) card to handle the commands. The secure transfer commands from the host are preferably sent to the card immediately. Therefore, if the platform OS does not send a write command to the card, but puts the data into the buffer instead, the medium will have no way to get the command and respond to it. In addition, for instructions structured with the command block required to be in a specific locations, as with the TrustedFlash command block that must be the first sector of the whole command, the sequence of the write command must follow the appropriate (e.g. TrustedFlash) protocol; any extra reads or writes in the command sequence before command completion, including get command status, will cause problems to firmware, so that the command will not succeed. Below is the method to solve these problems one by one.
[0026] The method of forcing the OS to flush write command is the following:
• Close the device
• Reopen the device
Some platforms may provide a function of flushing for write, in which case the corresponding command can be used. In others that lack such a command, or where flushing may not be working, the medium can be logically closed and reopened. To ensure the write command is flushed into the card, close-reopen always works.
[0027] Generally, when a card is inserted to the host, the host will initialize and mount the media/card. To access the contents of the media, it will open the media. It is considered as "logical" open. Related data, table, cache, and so on are established. After that, you can browse the directories, or open "file" for read/write operation. By "closing" the media, all cache contents, tables or data are cleared or invalidated. For example, the Linux operating system includes an open() command and a close() command. The close() command closes a file descriptor of the media so that it no longer refers to any file and may be used. Any record locks held on the file descriptor it was associated with, and owned with the process are removed. To logically reopen the device, a call to open() will create a new open file description. (These are described further in the Linux programmers manual.) [0028] The other problem is the potential change of write location, write buffer size, and command sequence. To avoid these, the toolkit will send to the medium a command in the following way:
• Be aware of the cache block size of particular platform
• Set the starting sector of write command aligned with the cache block size
• Make the buffer aligned with the cache block size, giving the correct size of the sending command.
This way, the OS does not need to adjust this write command since everything is cache-block-size aligned, and it does not need to read data form the card since the buffer size is block size aligned. As a result, the write command from the host will not be modified. If a platform supports direct IO, this method can still apply by simply setting the block size as 512 bytes.
[0029] The flow chart of Figure 7 describes this method of write command. The flow begins at 701 with the original status of the medium being open. The cache is then flushed at 703 by logically closing the device and then reopening it. Alternately, if the operating system has a specific command to flush the cache, this can be used instead.
[0030] The instruction is then placed in the flushed cache at block 705. As shown in Figure 6, the instruction 601 (including command block 601a and, in this example, four sectors of data) is stored so that it is aligned with a logical boundary in the cache 603. If this leaves any cache blocks only partially filled, these are then padded out to maintain the instruction as an integral number of logical blocks in the cache. In this example, as each logical block in the cache can hold 4 sectors, and the instruction has 5 sectors, when the instruction is contiguously cached, the last sector of the instruction only occupies part of a cache block. The hatching at 607 represents the added padded so that the host's operating system thinks the instruction is formed of complete cache blocks and treats it as such.
[0031] Returning to Figure 7, as shown in block 705, this process can include the command block being filled with the total size of the actual instruction or command and reading back the starting sector with the cache's logical block size aligned. The data, including any dummy sectors to fill out a complete cache block, are then filled. The starting write sector can then be checked to confirm the block alignment of the instruction. At block 707, the write command to send this instruction to the media can then be sent to the platform's operating system, where the write process will now start with the logical block address (LBA) that aligns with the cache's block boundaries and size.
Methods to Deal with Caching for IO Read
[0032] After receiving an instruction form the host, the medium may need to respond to the host, such as with a status or with data in response to a read request. Because of caching, whenever the application send a read command, the OS may just go to the cache to read it back if the related location data is in the cache. Therefore, the actual firmware response is not returned back to the application.
[0033] To deal with this problem, cache bypass can be used in the following way:
• The read relative staring logical block address (LBA) for each TrustedFalsh command changes for every read.
• The difference of starting read LBA between two read commands should be bigger that the cache block size.
• The starting read LBA should be aligned with cache block size.
• Close and reopen the device to make sure the OS flushing the read for application.
If a platform supports direct IO, this method can still apply by simply setting the cache block size as 512 bytes. The flow chart of Figure 8 describes this method of read command.
[0034] Figure 8 shows an exemplary embodiment for allowing the medium to respond to an instruction from the host. Typically, this read process will immediately follow the write process described in the last section, with no other commands being inserted between the write instruction and the read command. The flow again begins with the original device status being open, block 801.
[0035] At 803, the cache is flushed as at 703, with a close and then open or, if available, with a command to flush the cache. As the cache is now emptied, this prevents the operating system from just returning cached material instead of the actual response from the medium. At 805, the alignment is checked to see that when the received response is placed in the cache, it will be aligned with the logical block structure of the cache. Finally, the read command is sent to the platform's operating system.
[0036] Once these preparations have been made, the driver can then send the read instruction to the medium, which will then return the response. As noted, this may include actual secure user data (that, data as seen be the secure transfer system) or a non-data response, such as a status. The response is then cached aligned with the logical block boundaries of the cache. Padding, which secure transfer application would then ignore, may also be added to fill out an integral number of cache blocks.
[0037] Although the invention has been described with reference to particular embodiments, the description is only an example of the invention's application and should not be taken as a limitation. Consequently, various adaptations and combinations of features of the embodiments disclosed are within the scope of the invention as encompassed by the following claims.

Claims

IT IS CLAIMED:
1. A method of sending an application instruction from a hosting digital appliance to a portable medium in communication therewith, wherein the instruction is structured as one or more units whose size is a first number of bytes, the method comprising: flushing the contents of a cache on the digital appliance; and subsequently writing the instruction to the cache, where the cache is structured as a plurality of logical blocks whose size is a second number of bytes, the second number being greater than the first number, the writing including: aligning the start of the instruction with a boundary of the logical blocks; and padding the instruction with dummy data to have a size which is an integer multiple of the second number of bytes.
2. The method of claim 1, wherein the second number is a multiple of the first number.
3. The method of claim 1, further comprising: transferring the instruction from the cache to the portable medium.
4. The method of claim 1 , wherein the size of said units is a sector.
5. The method of claim 1, wherein the instruction includes a command portion and data portion.
6. The method of claim 5, wherein the portable medium includes a nonvolatile memory and the command is a write command for storing the data portion in the non-volatile memory.
7. The method of claim 5, wherein the command portion is one of said units in size and the data portion is one or more of said units in size.
8. The method of claim 1, wherein the instruction does not include a data portion.
9. The method of claim 8, wherein the instruction comprises a read data command.
10. The method of claim 9, further comprising: in response to the instruction, returning data from the a portable medium to the hosting digital appliance.
11. The method of claim 10, further comprising: storing the returned data in the cache, including aligning the start of the data with a boundary of the logical blocks.
12. The method of claim 8, further comprising: storing a response to the instruction in the cache, wherein the response is structured as one or more units whose size is the first number of bytes and the storing includes aligning the start of the response with a boundary of the logical blocks.
13. The method of claim 1, wherein flushing the contents of the cache comprises: closing the portable medium; and subsequently opening the portable medium.
14. A method of receiving from a portable medium an application response at a hosting digital appliance in communication therewith, wherein the response is structured as one or more units whose size is a first number of bytes, the method comprising: issuing an instruction from the digital appliance to the portable medium; flushing the contents of a cache on the digital appliance, where the cache is structured as a plurality of logical blocks whose size is a second number of bytes, the second number being greater than the first number; subsequently receiving a response to the instruction on the hosting digital appliance; and storing the response in the cache, the storing including: aligning the start of the response with a boundary of the logical blocks.
15. The method of claim 14, , wherein the second number is a multiple of the first number.
16. The method of claim 14, wherein the storing further includes: padding the response with dummy data to have a size which is an integer multiple of the second number of bytes.
17. The method of claim 14, wherein the instruction includes a read command and the response includes data.
18. The method of claim 14, wherein the response is a status.
19. The method of claim 14, wherein flushing the contents of the cache comprises: closing the portable medium; and subsequently opening the portable medium.
20. The method of claim 14, wherein the size of said units is a sector.
PCT/US2008/086168 2007-12-13 2008-12-10 Integration of secure data transfer applications for generic io devices WO2009076405A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP08859004A EP2245527B1 (en) 2007-12-13 2008-12-10 Integration of secure data transfer applications for generic io devices

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/956,042 US9032154B2 (en) 2007-12-13 2007-12-13 Integration of secure data transfer applications for generic IO devices
US11/956,042 2007-12-13

Publications (1)

Publication Number Publication Date
WO2009076405A1 true WO2009076405A1 (en) 2009-06-18

Family

ID=40377323

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2008/086168 WO2009076405A1 (en) 2007-12-13 2008-12-10 Integration of secure data transfer applications for generic io devices

Country Status (5)

Country Link
US (1) US9032154B2 (en)
EP (1) EP2245527B1 (en)
KR (1) KR101538619B1 (en)
TW (1) TWI515558B (en)
WO (1) WO2009076405A1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225146B2 (en) * 2009-09-01 2012-07-17 Lsi Corporation Method for implementing continuous data protection utilizing allocate-on-write snapshots
US8793465B1 (en) * 2010-01-15 2014-07-29 Netapp, Inc. Method and system for storage block alignment
JP6540068B2 (en) * 2015-02-10 2019-07-10 富士通株式会社 Storage control device, control method, and control program
US20230214157A1 (en) * 2021-12-30 2023-07-06 Micron Technology, Inc. NVMe COMMAND COMPLETION MANAGEMENT FOR HOST SYSTEM MEMORY
US20230418493A1 (en) * 2022-06-27 2023-12-28 Western Digital Technologies, Inc. Data storage device with data padding and safe and efficient alignment of data zones with data containers

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6191712B1 (en) * 1999-06-28 2001-02-20 International Business Machines Corporation Circuit for aligning logical sectors with physical sectors in a disk storage system
US20050044330A1 (en) 2003-07-28 2005-02-24 Gidon Elazar System, apparatus and method for controlling a storage device
US20050195635A1 (en) 2004-03-08 2005-09-08 Conley Kevin M. Flash controller cache architecture
US20050251617A1 (en) 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
WO2005116819A1 (en) * 2004-05-27 2005-12-08 Koninklijke Philips Electronics N.V. Microprocessor and method of instruction alignment
US20070136501A1 (en) 2005-12-08 2007-06-14 Chang Robert C Media card command pass through methods
US7237046B2 (en) 2003-03-27 2007-06-26 Sandisk Il Ltd. Data storage device with full access by all users
WO2007076214A2 (en) * 2005-12-08 2007-07-05 Sandisk Corporation Media card with command pass through mechanism
US20070168668A1 (en) 2005-12-08 2007-07-19 Chang Robert C Media card with command pass through mechanism

Family Cites Families (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2163577B (en) 1984-08-23 1988-01-13 Nat Res Dev Software protection device
JPS63163930A (en) * 1986-12-26 1988-07-07 Toshiba Corp Alignment correction system
US5430859A (en) 1991-07-26 1995-07-04 Sundisk Corporation Solid state memory system including plural memory chips and a serialized bus
US5450489A (en) 1993-10-29 1995-09-12 Time Warner Entertainment Co., L.P. System and method for authenticating software carriers
JP2557203B2 (en) * 1993-12-27 1996-11-27 インターナショナル・ビジネス・マシーンズ・コーポレイション Fuzzy packing method and data storage system
EP0715241B1 (en) 1994-10-27 2004-01-14 Mitsubishi Corporation Apparatus for data copyright management system
TW250616B (en) 1994-11-07 1995-07-01 Discovery Communicat Inc Electronic book selection and delivery system
US20050149450A1 (en) 1994-11-23 2005-07-07 Contentguard Holdings, Inc. System, method, and device for controlling distribution and use of digital works based on a usage rights grammar
JPH08263438A (en) 1994-11-23 1996-10-11 Xerox Corp Distribution and use control system of digital work and access control method to digital work
US5715403A (en) 1994-11-23 1998-02-03 Xerox Corporation System for controlling the distribution and use of digital works having attached usage rights where the usage rights are defined by a usage rights grammar
DE69637733D1 (en) 1995-02-13 2008-12-11 Intertrust Tech Corp SYSTEMS AND METHOD FOR SAFE TRANSMISSION
US5530235A (en) 1995-02-16 1996-06-25 Xerox Corporation Interactive contents revealing storage device
US5887269A (en) 1995-04-07 1999-03-23 Delco Elecronics Corporation Data product authorization control for GPS navigation system
US5689702A (en) * 1995-06-07 1997-11-18 Microtec Research, Inc. Flexible data structure layout for data structure including bit-field data members
JP2000503154A (en) 1996-01-11 2000-03-14 エムアールジェイ インコーポレイテッド System for controlling access and distribution of digital ownership
US6055314A (en) 1996-03-22 2000-04-25 Microsoft Corporation System and method for secure purchase and delivery of video content programs
US5956034A (en) 1996-08-13 1999-09-21 Softbook Press, Inc. Method and apparatus for viewing electronic reading materials
US5847698A (en) 1996-09-17 1998-12-08 Dataventures, Inc. Electronic book device
US5897663A (en) 1996-12-24 1999-04-27 Compaq Computer Corporation Host I2 C controller for selectively executing current address reads to I2 C EEPROMs
US6119201A (en) * 1997-02-19 2000-09-12 International Business Machines Corporation Disk under-run protection using formatted padding sectors
EP0968585A1 (en) 1997-03-14 2000-01-05 Cryptoworks Inc. Digital product rights management technique
US6073226A (en) 1997-03-19 2000-06-06 Microsoft Corporation System and method for minimizing page tables in virtual memory systems
US6611358B1 (en) 1997-06-17 2003-08-26 Lucent Technologies Inc. Document transcoding system and method for mobile stations and wireless infrastructure employing the same
US6009525A (en) 1997-08-29 1999-12-28 Preview Systems, Inc. Multi-tier electronic software distribution
US6546193B1 (en) 1997-10-28 2003-04-08 Lg Electronics Inc. Reproduction apparatus for remote rental system and control method of said apparatus
US5991399A (en) 1997-12-18 1999-11-23 Intel Corporation Method for securely distributing a conditional use private key to a trusted entity on a remote system
US6738905B1 (en) 1998-04-15 2004-05-18 Digital Video Express, L.P. Conditional access via secure logging with simplified key management
DE19820479A1 (en) 1998-05-07 1999-12-23 Ems Electronic Management Syst Functional module for PC e.g. for portable PC
US6438235B2 (en) 1998-08-05 2002-08-20 Hewlett-Packard Company Media content protection utilizing public key cryptography
US6226618B1 (en) 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US6460116B1 (en) * 1998-09-21 2002-10-01 Advanced Micro Devices, Inc. Using separate caches for variable and generated fixed-length instructions
US6240506B1 (en) * 1998-10-02 2001-05-29 Advanced Micro Devices, Inc. Expanding instructions with variable-length operands to a fixed length
US6363437B1 (en) 1999-01-07 2002-03-26 Telefonaktiebolaget Lm Ericsson (Publ) Plug and play I2C slave
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6529949B1 (en) 2000-02-07 2003-03-04 Interactual Technologies, Inc. System, method and article of manufacture for remote unlocking of local content located on a client device
GB9916212D0 (en) 1999-07-09 1999-09-15 Simmons Douglas M A system and method for distributing electronic publications
US6697944B1 (en) 1999-10-01 2004-02-24 Microsoft Corporation Digital content distribution, transmission and protection system and method, and portable device for use therewith
CN100470514C (en) 1999-11-01 2009-03-18 精工爱普生株式会社 Data output controller and method of proving data output service
US6886036B1 (en) 1999-11-02 2005-04-26 Nokia Corporation System and method for enhanced data access efficiency using an electronic book over data networks
EP1102172B1 (en) 1999-11-22 2007-03-14 A-DATA Technology Co., Ltd. Dual interface memory card and adapter module for the same
US6990464B1 (en) 2000-01-11 2006-01-24 Ncr Corporation Apparatus, system and method for electronic book distribution
US6813725B1 (en) 2000-01-26 2004-11-02 Hewlett-Packard Development Company, L.P. Method for restoring an operating system utilizing a storage device on a USB bus
US7023572B2 (en) 2000-02-02 2006-04-04 Raja Singh Tuli Portable high speed internet access device
US7068381B1 (en) 2000-02-02 2006-06-27 Raja Tuli Portable high speed internet access device
US6974076B1 (en) 2000-02-14 2005-12-13 Sony Corporation Portable music player with pay per play usage and method for purchase of credits for usage
JP4617533B2 (en) 2000-03-14 2011-01-26 ソニー株式会社 Information providing apparatus and method, information processing apparatus and method, and program storage medium
US7249105B1 (en) 2000-03-14 2007-07-24 Microsoft Corporation BORE-resistant digital goods configuration and distribution methods and arrangements
US6502146B1 (en) 2000-03-29 2002-12-31 Intel Corporation Apparatus and method for dedicated interconnection over a shared external bus
GB0012791D0 (en) 2000-05-25 2000-07-19 Breakertech Inc Mobile node-lock
WO2001093000A2 (en) 2000-05-31 2001-12-06 Zoran Corporation Secure electronic internet delivery and use of music and other valuable data
US6738614B1 (en) 2000-06-19 2004-05-18 1477.Com Wireless, Inc. Method and system for communicating data to a wireless device
US7262873B1 (en) 2000-07-05 2007-08-28 Lexmark International, Inc. Photoprinter access to remote data
US6438638B1 (en) 2000-07-06 2002-08-20 Onspec Electronic, Inc. Flashtoaster for reading several types of flash-memory cards with or without a PC
US20020162009A1 (en) 2000-10-27 2002-10-31 Shimon Shmueli Privacy assurance for portable computing
EP1209574A3 (en) 2000-11-24 2002-07-03 Q-tek International, LLC USB computer memory drive
US6742109B2 (en) * 2000-11-30 2004-05-25 Sun Microsystems, Inc. Method and apparatus for representing variable-size computer instructions
US7350228B2 (en) 2001-01-23 2008-03-25 Portauthority Technologies Inc. Method for securing digital content
US7213004B2 (en) 2001-04-12 2007-05-01 Koninklijke Philips Electronics N.V. Apparatus and methods for attacking a screening algorithm based on partitioning of content
US6973445B2 (en) 2001-05-31 2005-12-06 Contentguard Holdings, Inc. Demarcated digital content and method for creating and processing demarcated digital works
US7222104B2 (en) 2001-05-31 2007-05-22 Contentguard Holdings, Inc. Method and apparatus for transferring usage rights and digital work having transferrable usage rights
US6876984B2 (en) 2001-05-31 2005-04-05 Contentguard Holdings, Inc. Method and apparatus for establishing usage rights for digital content to be created in the future
US20020185533A1 (en) 2001-06-06 2002-12-12 Ron-Yen Shieh Externally connection type USB2.0 interface flash card reader
WO2002101494A2 (en) 2001-06-07 2002-12-19 Contentguard Holdings, Inc. Protected content distribution system
US7421411B2 (en) 2001-07-06 2008-09-02 Nokia Corporation Digital rights management in a mobile communications environment
US7249107B2 (en) 2001-07-20 2007-07-24 Microsoft Corporation Redistribution of rights-managed content
US20040205453A1 (en) 2001-08-29 2004-10-14 Sterling Mortensen Document distribution to mobile computing device
US6922725B2 (en) 2001-09-07 2005-07-26 Xerox Corporation Method and apparatus for processing document service requests originating from a mobile computing device
US7318112B2 (en) 2001-10-11 2008-01-08 Texas Instruments Incorporated Universal interface simulating multiple interface protocols
JP3641230B2 (en) 2001-10-22 2005-04-20 株式会社東芝 Apparatus and method for controlling a memory card
JP4119152B2 (en) 2002-04-17 2008-07-16 株式会社ルネサステクノロジ Semiconductor integrated circuit device
US7092942B2 (en) 2002-05-31 2006-08-15 Bea Systems, Inc. Managing secure resources in web resources that are accessed by multiple portals
TW587790U (en) 2002-06-18 2004-05-11 King Byte Information Corp Device for adapting memory card interface to USB interface
US7353402B2 (en) 2002-06-28 2008-04-01 Microsoft Corporation Obtaining a signed rights label (SRL) for digital content and obtaining a digital license corresponding to the content based on the SRL in a digital rights management system
TWI287751B (en) 2002-08-09 2007-10-01 Carry Technology Co Ltd Multi-functional small-form-factor memory card interface for use in a USB interface
US20040035939A1 (en) 2002-08-21 2004-02-26 Jin-Min Lin Multifunction memory card reading/writing device
US20040039932A1 (en) 2002-08-23 2004-02-26 Gidon Elazar Apparatus, system and method for securing digital documents in a digital appliance
US7979700B2 (en) 2002-08-23 2011-07-12 Sandisk Corporation Apparatus, system and method for securing digital documents in a digital appliance
US20040064612A1 (en) 2002-09-26 2004-04-01 Sandisk Corporation Method and system for using a memory card protocol inside a bus protocol
US20040093509A1 (en) 2002-11-12 2004-05-13 Gidon Elazar Method and apparatus for connecting a storage device to a television
US20040137664A1 (en) 2003-01-09 2004-07-15 Gidon Elazar Advanced packaging shell for pocketable consumer electronic devices
US20040210433A1 (en) 2003-04-21 2004-10-21 Gidon Elazar System, method and apparatus for emulating a web server
US7376763B2 (en) * 2003-07-17 2008-05-20 International Business Machines Corporation Method for transferring data from a memory subsystem to a network adapter by extending data lengths to improve the memory subsystem and PCI bus efficiency
DE602004031343D1 (en) 2003-07-28 2011-03-24 Sandisk Secure Content Solutions Inc ELECTRICAL CONNECTOR
US7350143B2 (en) 2003-10-03 2008-03-25 Sandisk Corporation Method for page translation
DE602005017369D1 (en) 2004-02-03 2009-12-10 Sandisk Secure Content Solutio PROTECTION OF DIGITAL DATA CONTENT
KR100716972B1 (en) * 2004-02-19 2007-05-10 삼성전자주식회사 Recording/reproducing method
US7487265B2 (en) 2004-04-16 2009-02-03 Sandisk Corporation Memory card with two standard sets of contacts and a hinged contact covering mechanism
US7152801B2 (en) 2004-04-16 2006-12-26 Sandisk Corporation Memory cards having two standard sets of contacts
US20050289072A1 (en) 2004-06-29 2005-12-29 Vinay Sabharwal System for automatic, secure and large scale software license management over any computer network
WO2006057991A1 (en) 2004-11-22 2006-06-01 Sandisk Secure Content Solutions, Inc. Usb flash drive with stylized case
US7882299B2 (en) * 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
US7921301B2 (en) * 2005-05-17 2011-04-05 Dot Hill Systems Corporation Method and apparatus for obscuring data on removable storage devices
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US20070192585A1 (en) 2005-09-08 2007-08-16 Interdigital Technology Corporation Method and apparatus for processing data in a wireless communication system
JP4740766B2 (en) * 2006-02-27 2011-08-03 富士通株式会社 Data receiving apparatus, data transmitting / receiving system, data transmitting / receiving system control method, and data receiving apparatus control program
US20080065552A1 (en) 2006-09-13 2008-03-13 Gidon Elazar Marketplace for Transferring Licensed Digital Content
US8839005B2 (en) 2006-09-13 2014-09-16 Sandisk Technologies Inc. Apparatus for transferring licensed digital content between users
US8370562B2 (en) * 2007-02-25 2013-02-05 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6191712B1 (en) * 1999-06-28 2001-02-20 International Business Machines Corporation Circuit for aligning logical sectors with physical sectors in a disk storage system
US7237046B2 (en) 2003-03-27 2007-06-26 Sandisk Il Ltd. Data storage device with full access by all users
US20050044330A1 (en) 2003-07-28 2005-02-24 Gidon Elazar System, apparatus and method for controlling a storage device
US20050195635A1 (en) 2004-03-08 2005-09-08 Conley Kevin M. Flash controller cache architecture
US20050251617A1 (en) 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
WO2005116819A1 (en) * 2004-05-27 2005-12-08 Koninklijke Philips Electronics N.V. Microprocessor and method of instruction alignment
US20070136501A1 (en) 2005-12-08 2007-06-14 Chang Robert C Media card command pass through methods
WO2007076214A2 (en) * 2005-12-08 2007-07-05 Sandisk Corporation Media card with command pass through mechanism
US20070168668A1 (en) 2005-12-08 2007-07-19 Chang Robert C Media card with command pass through mechanism

Also Published As

Publication number Publication date
US9032154B2 (en) 2015-05-12
US20090157971A1 (en) 2009-06-18
EP2245527B1 (en) 2013-02-27
KR101538619B1 (en) 2015-07-22
EP2245527A1 (en) 2010-11-03
TWI515558B (en) 2016-01-01
TW200935218A (en) 2009-08-16
KR20100113059A (en) 2010-10-20

Similar Documents

Publication Publication Date Title
US11640353B2 (en) Memory system, data storage device, user device and data management method thereof
US9116791B2 (en) Method for flash-memory management
US8266366B2 (en) Memory device operable in read-only and write-once, read-many (WORM) modes of operation
KR101395778B1 (en) Memory card and memory system including the same and operating method thereof
TWI667590B (en) Data storage devices and methods for encrypting and updating firmware thereof
EP2088509A2 (en) Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewriteable memory
TW200841174A (en) Host device and memory system
KR100986884B1 (en) External connection device, host device, and data communication system
EP2245527B1 (en) Integration of secure data transfer applications for generic io devices
KR101055324B1 (en) Enhanced Host Interface
JP4178809B2 (en) Externally connected device and host device
JP4663577B2 (en) Data storage device and initialization method thereof
JP2010026717A (en) Semiconductor memory device
US11182329B2 (en) Data processing system and operating method thereof
EP2515237A1 (en) Portable secure device providing storage service
US8544424B2 (en) System, controller and method thereof for transmitting and distributing data stream
Lehmann et al. External flash filesystem for sensor nodes with sparse resources
US11922034B2 (en) Dual mode storage device
KR100640612B1 (en) Method and Apparatus for writing a main code

Legal Events

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

Ref document number: 08859004

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 20107012939

Country of ref document: KR

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2008859004

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE