# US 9,520,992 B2 · Logical-to-physical address translation for a removable data storage device

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,520,992 B2
- Document ID: US9520992B2
- Status: Granted
- Kind: B2
- Application number: 15/068,089
- Filed: 2016-03-11
- Published: 2016-07-07
- Granted: 2016-12-13
- Earliest claimed: 2009-04-20
- Assignees: Kingston Digital, Inc.
- Applicants: Kingston Digital, Inc.
- Inventors: Arunprasad Ramiya Mothilal
- Web page: https://patentgrep.com/patent/US9520992B2

## CPC

- H04L 9/0822: {using key encryption key}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 12/1408: {by using cryptography (for digital transmission H04L9/00)}
- H04L 9/0618: {Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation}
- H04L 9/12: Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
- H04L 9/304: {based on error correction codes, e.g. McEliece}
- G06F 2212/1052: Security improvement
- G06F 2212/7201: Logical to physical mapping or translation of blocks or pages
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for making memory more reliable involves accessing data stored in a removable storage device by translating a logical memory address provided by a host digital device to a physical memory address in the device. A logical memory address is received from the host digital device. The logical memory address corresponds to a location of data stored on the removable storage device. A physical memory address corresponding to the local address is determined by accessing a lookup table corresponding to the logical zone.

## Claims

### Claim 1

A portable storage device comprising:
memory configured to store encrypted data at physical memory addresses with different physical block numbers within the portable storage device, the memory having a page organization wherein sector data are mapped to the physical memory addresses and extra data are mapped adjacent the sector data;
a lookup table for mapping the physical memory addresses to logical memory addresses, the lookup table assigning different decryption keys to different logical block address ranges corresponding to the different physical block numbers;
a processor coupled with the memory, the processor configured to decrypt the encrypted data based on the logical block address; and
an interface coupled with the processor, the interface configured to receive the logical memory addresses and communicate the decrypted data to a host device.

### Claim 2 (depends on 1)

The device of claim 1, wherein the lookup table holds unique decryption keys for each of the different logical block address ranges.

### Claim 3 (depends on 1)

The device of claim 1, wherein each of the physical memory blocks comprises a plurality of memory pages.

### Claim 4 (depends on 3)

The device of claim 3, wherein the memory pages map a plurality of adjacent data sectors comprising sector data adjacent an extra sector comprising extra data.

### Claim 5 (depends on 3)

The device of claim 3, wherein the memory pages map adjacent pairs of data sectors and extra sectors to the physical memory addresses within the different physical memory blocks.

### Claim 6 (depends on 3)

The device of claim 3, wherein the extra data include parity bits allocated to parity checking of the sector data.

### Claim 7 (depends on 3)

The device of claim 3, wherein the extra data include data sector utilization information used to create the lookup table.

### Claim 8

A portable storage device comprising:
memory configured to store encrypted data at physical memory addresses with different physical block numbers within the portable storage device, the memory having a page organization wherein sector data are mapped to the physical memory addresses and extra data are mapped adjacent the sector data;
a lookup table for mapping the physical memory addresses to logical memory addresses, the lookup table assigning different decryption keys to different logical block address ranges corresponding to the different physical block numbers;
a processor coupled with the memory, the processor configured to decrypt the encrypted data using one of different decryption keys; and
an interface coupled with the processor, the interface configured to receive the logical memory addresses and communicate the decrypted data to a host device.

### Claim 9 (depends on 8)

The device of claim 8, wherein the extra data include data sector utilization information used to create the lookup table.

### Claim 10 (depends on 8)

The device of claim 8, wherein the extra data include storage bytes allocated to error correction of the sector data.

### Claim 11

A method for operating a removable memory storage device coupled to a host computer, the method comprising:
storing encrypted data at physical memory addresses within memory of the removable storage device;
receiving logical addresses from the host computer;
determining the physical memory addresses corresponding to the logical memory addresses via a lookup table stored on the removable storage device;
decrypting the encrypted data using a decryption key corresponding to the encrypted data stored at the physical memory addresses, wherein the lookup table assigns different decryption keys to encrypted data stored at different physical memory addresses in the memory of the removable storage device; and
communicating the decrypted data from the removable storage device to the host computer.

### Claim 12 (depends on 11)

The method of claim 11, further comprising creating the lookup table on the removable memory storage device based on memory map data stored in the memory of the removable storage device.

### Claim 13 (depends on 11)

The method of claim 11, further comprising:
accessing a logical zone corresponding to one of the logical memory addresses; and
flipping a corresponding active bit of a logical table block entry in the lookup table to inactive.

### Claim 14 (depends on 13)

The method of claim 13, further comprising changing to a new logical zone by:
loading the new logical zone to a buffer of the lookup table;
switching access to the new logical zone; and
flipping an active bit of a corresponding logical table block entry in the lookup table to inactive.

### Claim 15 (depends on 14)

The method of claim 14, further comprising:
encountering inactive logical table block entries corresponding to both logical zones, wherein the removable storage device is removed from the host and both logical table block entries are inactive; and
rebuilding the lookup table.

### Claim 16 (depends on 11)

The method of claim 11, further comprising:
reading block status bytes holding logical-to-physical information for mapping the physical memory addresses to the logical memory addresses; and
rebuilding a buffer in the lookup table for a logical zone corresponding to one of the logical memory addresses, with the block status bytes.

### Claim 17 (depends on 16)

The method of claim 16, wherein the block status bytes hold the decryption key.

### Claim 18 (depends on 16)

The method of claim 16, further comprising storing two copies of the lookup table corresponding to the logical zone in non-volatile memory.

### Claim 19 (depends on 18)

The method of claim 18, further comprising:
accessing a different logical zone other than the one corresponding to the logical memory addresses; and
writing a lookup table presently in random access memory to the non-volatile memory in in place of one of the two copies of the lookup table.

### Claim 20 (depends on 11)

The method of claim 11, further comprising:
marking the lookup table written to the non-volatile memory in place of the one copy as active, while the other copy is marked as inactive; and
creating a new lookup table in the random access memory, if both copies are marked as inactive.
