KR101538619B1 - 일반 io 디바이스에 대한 보안 데이터 전송 애플리케이션의 통합 - Google Patents
일반 io 디바이스에 대한 보안 데이터 전송 애플리케이션의 통합 Download PDFInfo
- Publication number
- KR101538619B1 KR101538619B1 KR1020107012939A KR20107012939A KR101538619B1 KR 101538619 B1 KR101538619 B1 KR 101538619B1 KR 1020107012939 A KR1020107012939 A KR 1020107012939A KR 20107012939 A KR20107012939 A KR 20107012939A KR 101538619 B1 KR101538619 B1 KR 101538619B1
- Authority
- KR
- South Korea
- Prior art keywords
- instruction
- cache
- response
- data
- size
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1004—Compatibility, e.g. with legacy hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
- G06F2212/2146—Solid state disk being detachable, e.g.. USB memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/462—Track or segment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
호스팅 디지털 어플라이언스에서 휴대용 매체로 애플리케이션 인스트럭션을 송신하기 위한 기술이 제공되고, 여기서 인스트럭션은 그 크기가 제 1 크기, 또는 제 1 번 바이트인 하나 이상의 유닛으로 구성된다. 캐시의 콘텐츠를 플러싱한 후에, 인스트럭션은 캐시에 기록되고, 여기서 상기 캐시는 상기 제 1 크기보다 더 큰(바이트의 수 측면에서) 제 2 크기의 크기를 갖는 논리 블럭으로 구성된다. 상기 인스트럭션(명령부 및 가능하면 데이터부를 갖는)을 기록할 때, 상기 인스트럭션의 시작은 상기 캐시 내의 상기 논리 블록 경계 중 하나와 정렬되고, 상기 인스트럭션은 더미 데이터로 패딩아웃되어 상기 더미 데이터가 상기 캐시 블록의 정수를 채우도록 한다. 휴대용 디바이스로부터의 인스트럭션에 대한 응답이 호스팅 디지털 어플라이언스에서 수신되면, 캐시는 응답을 수신하기 전에 유사하게 플러싱된다. 그리고나서 응답은 캐시의 논리 블록 경계와 정렬하도록 배열된다.
Description
본 발명은, 보안 메모리 카드와 같은 휴대용 매체를 전화 핸드셋(handset)과 같은 디지털 어플라이언스(appliances)와 함께 사용하는 분야에 관한 것이고, 보다 구체적으로는 디지털 어플라이언스 및 이와 통신하는 휴대용 매체 사이에서 인스트럭션(instruction)을 전송하기 위한 기술에 관한 것이다.
노트북 또는 랩탑(laptop) 컴퓨터, 개인용 휴대 정보 단말기(personal digital assistant: PDA), 또는 이동 전화와 같은 디지털 어플리케이션은 메모리 카드 또는 USB 드라이스(drives)와 같은 휴대용 매체와 함께 흔히 사용된다. 어떤 경우, 보안 데이터가 이 휴대용 매체에 저장된다. 이 데이터를 호스팅 어플라이언스(hosting appliance) 및 매체 사이에서 안전하게 전송하는 책임이 있는 애플리케이션(application)은 흔히 특정한 구조를 갖는 인스트럭션을 사용한다. 전송 프로세스(transfer process)의 일부로서, 호스트는 인스트럭션을 캐싱(cashing: 은닉)할 수 있으나; 호스트의 운영 시스템은 인스트럭션의 구조를 인지하지 못할 수 있어서, 그리고 호스트의 캐시 구조(cache structure)가 인스트럭션의 구조와 호환될 수 없기 때문에, 상기 인스트럭션은, 임의의 관련 데이터와 함께, 성공적으로 전송되지 못할 수 있다. 본 발명은 상술한 문제를 해결하려는 것이다.
하나의 양상에 따르면, 호스팅 디지털 어플라이언스에서 휴대용 매체로 애플리케이션 인스트럭션을 송신하기 위한 기술이 제공되고, 여기서 상기 인스트럭션은 그 크기가 제 1 크기, 또는 제 1 번 바이트인 하나 이상의 유닛(unit)으로 구성된다. 캐시의 콘텐츠(contents)를 플러싱(flushing)한 후에, 상기 인스트럭션은 상기 캐시에 기록되고, 여기서 상기 캐시는 상기 제 1 크기보다 더 큰(바이트의 수 측면에서) 제 2 크기의 크기를 갖는 논리 블럭(logical blocks)으로 구성된다. 상기 인스트럭션(명령부 및 가능하면 데이터부를 갖는)을 기록할 때, 상기 인스트럭션의 시작은 상기 캐시 내의 상기 논리 블록 경계 중 하나와 정렬되고, 상기 인스트럭션은 더미 데이터(dummy data)로 패딩아웃(padding out)되어 상기 더미 데이터가 상기 캐시 블록의 정수를 채우도록 한다.
본 발명의 다른 양상에 따르면, 휴대용 디바이스로부터의 인스트럭션에 대한 응답이 호스팅 디지털 어플라이언스에서 수신되면, 상기 캐시는 상기 응답을 수신하기 전에 유사하게 플러싱된다. 그 후에 상기 응답이 저장되어 상기 캐시의 논리 블록과 정렬된다.
본 발명의 다양한 양상, 이점, 특징 및 실시예가 이의 예시적인 예에 대한 다음의 기술에 포함되고, 상기 기술은 첨부 도면과 함께 취해져야 한다. 그러므로, 모든 특허, 특허 출원, 기사, 다른 간행물, 문서 및 본원에서 참조된 것은 모든 목적을 위해 본원에 전체가 참조로서 통합된다. 통합된 간행물, 문서 등 중 하나와 본 출원 사이에 용어의 정의 또는 사용에 어느 정도 모순이 있거나 또는 상충되면, 본 출원의 용어가 우위를 점한다.
상술한 바와 같은 구성으로, 본 발명은, 호스트가 인스트럭션을 캐싱하고 인스트럭션이 임의의 관련 데이터와 함께 전송될 때, 상기 인스트럭션이 성공적으로 전송되는 것을 보장한다.
본 발명의 다양한 양상 및 특징은 다음의 도면을 검토함으로써 보다 잘 이해될 수 있다.
도 1은, 캐싱에 의한 기록 프로세스를 위한 공통 시퀀스(sequence)의 흐름도.
도 2는, 애플리케이션 시스템 도면.
도 3은, 인스트럭션 구조의 예를 도시한 도면.
도 4는, 인스트럭션 구조의 예를 도시한 표.
도 5는, 도 3에 도시된 바와 같은 인스트럭션의 캐싱을 도시한 도면으로서, 상기 인스트럭션은 캐시 경계에까지를 원하지 않는, 캐싱을 도시한 도면.
도 6은, 도 3에 도시된 바와 같은 인스트럭션의 캐싱을 도시한 도면으로서, 상기 인스트럭션이 캐시 경계와 정렬되고 패딩아웃되는, 캐싱을 도시한 도면.
도 7은, 인스트럭션을 캐시 내에 배치하는 방법을 도시한 도면.
도 8은, 응답을 호스트의 캐시 내에 배치하는 방법을 도시한 도면.
도 1은, 캐싱에 의한 기록 프로세스를 위한 공통 시퀀스(sequence)의 흐름도.
도 2는, 애플리케이션 시스템 도면.
도 3은, 인스트럭션 구조의 예를 도시한 도면.
도 4는, 인스트럭션 구조의 예를 도시한 표.
도 5는, 도 3에 도시된 바와 같은 인스트럭션의 캐싱을 도시한 도면으로서, 상기 인스트럭션은 캐시 경계에까지를 원하지 않는, 캐싱을 도시한 도면.
도 6은, 도 3에 도시된 바와 같은 인스트럭션의 캐싱을 도시한 도면으로서, 상기 인스트럭션이 캐시 경계와 정렬되고 패딩아웃되는, 캐싱을 도시한 도면.
도 7은, 인스트럭션을 캐시 내에 배치하는 방법을 도시한 도면.
도 8은, 응답을 호스트의 캐시 내에 배치하는 방법을 도시한 도면.
메모리 카드와 같은 휴대용 매체 및 이동 전화 핸드셋과 같은 호스팅 디지털 어플라이언스 사이에서 콘텐트를 전송할 때, 호스트의 운영 시스템은 종종 콘텐트에 대한 캐싱 메커니즘을 사용할 것이다. 이 캐시는 전형적으로 특정한 크기의 다수의 블록으로 분산되는 논리 구조를 갖는다. 데이터이든지 또는 인스트럭션(명령 및 또는 일부 관련된 데이터)이든지 간에, 전송되는 콘텐트는 또한 특정 크기의 하나 이상의 섹션과 같은 특정한 방식으로 구성될 수 있다. 콘텐트가 하나의 크기의 유닛(예를 들어 512 바이트 섹터와 같은)으로 구성되고 캐시가 다른 크기의 유닛으로 구성되면, 캐싱 메커니즘은 콘텐트의 구조 요건과 충돌할 수 있다.
이는, 특히 보안 콘텐츠 및 TrustedFlash 명칭 하에서 거래되는 것과 같은 보안 휴대용 저장 매체를 다루는 때에도 마찬가지이다. 이와 같은 경우, 호스트 및 휴대용 매체 사이의 전송을 처리하는 호스트의 운영 시스템의 보다 기초적인 레벨은 인스트럭션을 단지 매우 많은 데이터로 간주하여 인스트럭션 내에 내장된 어떤 명령도 인지하지 못할 것이고, 그것을 캐시 내에 그와 같이 저장할 것이다. 이와 같은 인스트럭션의 예 및 이들의 사용은 미국 특허번호 7,237,046, 미국 특허 출원번호 10/899,260, 특히 미국 특허 출원번호 11/298,349 및 11/299,186에 기술되어 있다. 이와 같은 배열 하에서, 호스트의 운영 시스템은 인스트럭션을 데이터로 취급하여 매체 상의 특정 어드레스에 기록되도록 할 것이다; 그러나, 매체 상에 수신되면, 이 인스트럭션은 예를 들어, 매체 상의 상이한 어드레스에 데이터를 저장하라는 기록 명령으로 해석될 것이다. 그리고나서 호스트가 이 데이터에 대한 판독 인스트럭션을 발행하고자 하면, 호스트의 운영 시스템에 의해 확인되는 어드레스는 매체 상에서 해석된 바와 같은 실제 어드레스에 대응하지 않을 것이고; 이때 호스트는 생각하기에 캐싱된 데이터의 카피에 의지함으로써, 이 캐싱된 데이터가 부정확하게 사용될 것이다.
본원에 설명된 기술은 메모리 카드와 같이 호스팅 디지털 어플라이언스와 1차적으로 사용되는 휴대용 매체, 및 또한 내장된 플래시(flash)와 같은 비휘발성 메모리를 스스로 포함하는 디지털 어플라이언스 이 둘 모두에 대해 광범위하게 적용 가능하다. 이와 같은 디지털 어플라이언스는 데스크탑, 노트북 또는 랩탑 타블렛(tablet) 컴퓨터, 개인용 휴대 정보 단말기(PDA), 이동 전화 핸드셋, MP3 플레이어, DVD 플레이어, 게이밍 콘솔(gaming consoles)과 같은 다양한 매체 플레이어, 디지털 카메라와 같은 디지털 기록 디바이스 등을 포함한다. 적절한 휴대용 매체는 SanDisk Corporation, 이의 양수인으로부터 구입 가능하고, 이들은 TrustedFlash, CompactFlash(CF), 멀티미디어 카드(Multi-Media Card: MMC), Secure Digital(SD), MicroSD 및 Memory Stick PRO 상표 하에 판매되는 휴대용 매체이다. 이들 메모리 카드는 대개의 카드의 경우와 상이한 메이팅 커넥터(mating connectors)를 통해 디지털 어플라이언스와 분리 가능하게 접속된다. Cruzer 상표 하에 판매되는 것과 같이 판매되는 플래시 드라이브는 범용 직렬 버스(Universal Serial Bus: USB) 표준에 따른 플러그를 포함하여 USB 소켓을 갖는 임의의 디지털 어플라이언스로 직접 플러그인할 수 있다. TrustedFlash 카드 및 다른 보안 카드(SIM, SMMC, SD 등)는 인가 및 관련 콘텐트 이 둘 모두의 보안 저장을 가능하게 한다. 또한 다음의 논의는 종종 플래시로서 비휘발성 메모리를 언급할 것이고, 본원에 제공된 기술은 그렇게 제한되지 않고 더욱 일반적으로 휴대용 디바이스 및 내장된 메모리 이 둘 모두를 위해서 다른 비휘발성 메모리 구조(예를 들어 미국 특허 출원 10/841,379에 기술된 바와 같은)에 적용된다. 본원에서 제공되는 상기 내용이 그렇게 제한되지 않을지라도, 논의를 위해 특정한 실시예가 언급되면, 다음은 그 구조가 섹터에 기반하는 인스트럭션을 갖는 TrustedFlash 종류의 카드와 같은 메모리 카드에 함께 사용되는 이동 전화 핸드셋의 구체적인 예를 종종 언급할 것이다.
호스팅 캐싱에서 있을 수 있는 그와 같은 난관을 피하기 위해, 보안 전송과 관련된 펌웨어(firmware)는 작동하는 시간 명령 크기를 인지하도록 변경될 수 있고; 관련된 애플리케이션 툴킷(toolkit)은 애플리케이션과 통합할 필요가 있으며; 애플리케이션에서 플랫폼(platform) 운영 시스템(OS)으로 송신되는 인스트럭션은 기록 및 판독 명령을 포함하여, 캐시 블록 크기와 정렬된 섹터와 함께 시작하고; 기록, 판독 버퍼(buffer) 크기는 정렬된 캐시 블록 크기여야만 한다.
기술적으로, 보안 콘텐츠 매체로부터 디지털 어플라이언스의 사용자로의 신속한 확산을 가능하게 하려면, 이 플랫폼에 대한 대응하는 보안 콘텐트 툴킷과의 통합이 중요하다. 대개의 보안 콘텐트 기술의 특수 요건 및 코드 크기 고려사항으로 인해, 대응하는 애플리케이션 툴킷은 통상적으로, 애플리케이션이 툴킷에 의해 제공되는 애플리케이션 프로그래밍 인터페이스(application programming interfaces: API)를 호출하여 매체에 액세스할 수 있도록, 핸드셋 또는 다른 호스팅 디바이스의 운영 시스템(OS)으로 통합될 필요가 있다. 그러나, 특정한 표준화된 또는 개방 플랫폼, 말하자면 Linux 및 WIPI의 경우, 이 해법은 구현하기 복잡할 수 있는데, 왜냐하면 보안 콘텐트 매체를 지원하는데 필요한 플랫폼 수정을 가하는 것이 쉽지 않기 때문이다.
이 한계를 극복하기 위해서, 모든 플랫폼은 애플리케이션이 일반 IO 디바이스에 액세스하는 방법을 제공할 것이다: TrustedFlash 카드의 경우, 이는 SD IO 디바이스이다. 이 가정에 있어서, 애플리케이션은 제공된 IO 액세스를 사용하여 대응하는 툴킷을 애플리케이션에 통합함으로써 보안 콘텐트 매체 카드와 통신할 수 있다. 이는 IO 디바이스가 애플리케이션에 액세스 가능한 동안에는, 상기 수정되지 않은 플랫폼에 대해 특히 양호한, 임의의 플랫폼에 대해 사용될 수 있다. 이 해법의 큰 난점은 모든 플랫폼에 대해 사용될 가능성이 가장 높은 캐싱 메커니즘을 처리한다는 점이다. 다음의 섹션은 이 캐싱 메커니즘의 특성 및, 버퍼링된 IO 및 보안 콘텐트 전송 펌웨어의 보다 초기의 버전 사이의 충돌을 기술한다.
현재 보안 전송 펌웨어에 있어서의
버퍼링된
IP
의 문제
주지하다시피, 많은 명령 및 데이터 전송 프로세스는 인스트럭션에 대한 특정 구조에 의존한다. 예를 들어, 현재 TrustedFlash 펌웨어는 핸드셋 또는 다른 호스트와 섹터(512 바이트) 기반 인스트럭션을 통하여 통신하도록 규정된다. 각각의 인스트럭션에 대한 섹터의 수는 사전 규정된다. 이는 버퍼링된 IO 플랫폼에 대한 주요한 IO 문제를 야기할 수 있다. 호스팅 플랫폼의 캐싱 메커니즘으로 인해, 매체 상의 TrustedFlash 펌웨어에 송신되는 인스트럭션은 TrustedFlash 통신 채널이 파손되도록, 섹터 기반일 수 없다. 예를 들어, TrustedFlash CREATE ACR 인스트럭션은 일 섹터(one-sector) 기록 인스트럭션이다. 애플리케이션이 일 섹터 기록을 플랫폼 OS로 송신하면, 이 기록 인스트럭션은 다수의 섹터를 갖는 기록 인스트럭션으로 변경될 수 있고, 이 인스트럭션이 매체 상의 보안 전송 펌웨어에 도달한 후에, 시작하는 기록 위치 또한 변경될 수 있다.
기록 명령에 대한 공통 시나리오는 다음과 같다:
· 애플리케이션은 디바이스에 위치 m번째 섹터 상에 n 섹터를 기록하라고 요청한다.
· OS는 관련된 메모리 위치에 대한 캐시를 조사할 것이다; 그것이 존재하지 않으면, OS는 카드상에서 필요한 위치를 포함한 위치로부터 데이터를 판독할 것이고, 그 후에 그것을 캐시에 저장한다.
· OS는 관련된 섹터를 갱신할 것이다.
· OS는 데이터를 카드로 역으로 지체없이 플러싱할 수 있거나 할 수 없다.
도 1은 호스트에 의해 도시되는 기록 명령에 대한 이 공통 작동을 기술하는 흐름도이다. 애플리케이션이 인스트럭션을 명령으로 간주할 수 있을지라도, 아마도 데이터가 운영 시스템에 접속되므로 해서, 이는 단지 데이터로 해석됨이 다시 주목되어야 한다.
도 1은 101에서 애플리케이션이 디바이스에 기록을 요청함으로써 시작한다. 관련 위치가 이미 캐시 내에 존재하는지를 결정하기 위해서 103에서 캐시가 조사된다; 만일 그렇다면("Y" 경로), 데이터는 105에서 캐시의 관련 위치로 기록된다. 관련 캐시 위치가 발견되지 않으면(103으로부터의 "N" 경로), 이때 n(기록할 섹터의 수)은 캐시-블록 크기로 정렬되고, m(기록에 대한 위치)은 107에서 캐시=블록 크기로 정렬되며, 만일 그렇다면, 프로세스는 단기 105로 진행한다. 107로부터의 NO 경로는 109로 이어져서, 109에서 기록 위치 또는 버퍼 크기 버퍼가 필요한 만큼 조정된다. 예를 들어, 캐시 블록의 크기가 2KB이고 호스팅 애플리케이션이 총 n=5 섹터들을 갖는 인스트럭션 데이터를 송신하는 경우를 취하면 이는 7번째 섹터(m=7)에서 시작한다. 호스트는 5번째에서의 시작 및 총 데이터의 섹터를 8로 변경할 것이다. 그리고나서 109는 111로 진행하고, 여기서 개시 블록 크기로 정렬된 관련 데이터는 105로 진행하기 전에, 디바이스로부터 판독된다. 최종적으로, OS는 실행되는 경우 데이터를 카드로 바로 역으로 플러싱할 수 있다. 이 캐싱 메커니즘의 결과로서, TrustedFlash 펌웨어는 애플리케이션으로부터 송신된 어떠한 명령도 이해할 수 없을 것이다.
실제로, 일부 플랫폼은 직접 IO를 지원하는 반면에, 다른 플랫폼은 단지 버퍼링된 IO만을 제공한다. 게다가, 캐싱 알고리즘은 플랫폼마다 상이할 수 있다. 그러므로, 일반적인 해법은 보안 전송 애플리케이션의 툴킷과의 통합에 상당히 바람직하다. 다음의 논의는, 호스트 플랫폼이 직접 IP 또는 버퍼링된 IO를 사용하든지 간에 동작하는, TurstFlash에 대한 예를 기반으로, 그와 같은 통합된 해법을 제공한다. 이는 아래에서 네 컴포넌트(components)를 포함하는 것으로 제공된다: 시스템 통합의 구조; 펌웨어의 수정; 및 기록 및 판독을 위해 캐싱을 해결하는 방법.
보안 전송
툴킷을
애플리케이션으로 통합
플랫폼이 동일한 상태로 남아있기 때문에, 보안 콘텐트 카드를 액세스하기 위한 애플리케이션의 경우, 호스트의 애플리케이션이 송신할 툴킷 API, 즉 TrustedFlash 인스트럭션을 TrustedFlash 카드로 호출할 수 있도록, 대응하는 툴킷이 상기 애플리케이션에 통합될 필요가 있다. 간략하게, 툴킷은 애플피케이션이 보안 매체에 액세스하기 위한 API의 전 패키지(package)를 제공한다. 이 패키지는 보안 시스템과 관련된 많은 기능, 예를 들어 시스템 동작, 과금 동작, 저장 동작, 및 디지털 권리 관리(digital rights management: DRM) 동작을 제공한다.
애플리케이션이 툴킷의 API를 직접 호출하고나서 툴킷은 플랫폼 OS에 의해 제공되는 디바이스 운영 방법을 사용하여 대응하는 보안 매체와 대화할 것이다. 예를 들어, Linux에서, 이 방법은 open(), read(), write(), 및 close()이다. 각각의 개별 플랫폼에 따르면, 툴킷 및 플랫폼 사이의 이 접착층(glue layer)은 Platform I/O Device Operation에서 구현된다.
도 2는 구조의 블록도를 제공한다. 호스트 측에서, 도시된 계층은 상부에 다양한 고객 애플리케이션(201)을 포함하고, 이 아래에 플랫폼의 운영 시스템 및 파일 시스템(203)이 있고, 그 뒤에 휴대용 매체(250)와 통신하는데 사용되는 플랫폼의 블록 디바이스 드라이버(205)가 있다. 그리고나서 툴킷(207)은 고객 애플리케이션 계층(201) 및 운영 시스템 및 파일 시스템 계층들 사이에 존재할 것이다. 도 2에 도시되는 바와 같이, 툴킷에 포함되는 요소 중에서, 디지털 권리 관리(DRM), 데이터 보호, 고객 API, 저장소(storage), 과금, 시스템, 및 유틸리티 블록(utility blocks)뿐만 아니라 보안 관리자, 보안 파일 시스템, 프로토콜 드라이버(protocol driver), 및 플랫폼 I/O 디바이스 동작 서브 계층이 있다.
보안 펌웨어의 수정
상술한 바와 같이, 보안 데이터 프로토콜에 사용되는 인스트럭션은 종종 특정한 수의 비트의 유닛에 기반한다. 예를 들어, 호스트 및 매체 상의 TrustedFlash 펌웨어 사이의 통신을 위한 TrrustedFlash 인스트럭션은 섹터 기반이다. 각각의 인스트럭션에 대한 섹터의 수는 펌웨어 로딩(loading) 동안 사전 규정된다. 도 3 및 도 4의 표는 TrustedFlash 사양에서 발견되는 바와 같은 TrustedFlash 명령 구조를 도시한다.
도 3에 도시된 바와 같이, 그리고 미국 특허 출원번호 11/298,349 및 11/299,186에서 심화하여 전개된 바와 같이, 예시적인 인스트럭션은 명령을 유지하는 제 1 섹터(512바이트)로 구성된다. 이 인스트럭션 블록 이전에는 다시 섹터들로 구성된, 데이터의 임의의 관련된 섹터가 있다. 예를 들어, 데이터의 N 섹터에 대한 기록 인스트럭션은 기록 명령에 대한 제 1 섹터가 데이터 세터에 선행하는, N+1 섹터로 구성될 수 있다. 상태 요청과 같이, 데이터를 가지지 않은 명령의 경우, 단지 명령 블록의 한 섹터만이 존재할 것이다. 판독 명령의 데이터와 같은 임의의 응답은 아래의 최종 섹션의 판독 프로세스에 의해 처리될 것이다. 도 4의 표는 TrustedFlash protocol에서의 예시적인 명령 블록 구조에 대한 일부 세부사항을 도시한다.
도 5는 제 1 크기의 유닛에 기반한 인스트럭션이 상이한 크기의 논리 블록에 기반한 캐시로 기록될 때 종래 배열 하에 발생할 수 있는 일종의 정렬 불량을 개략적으로 도시한다. 이 예의 경우, 인스트럭션(501)은 5 섹터 크기의 유닛으로 구성되도록 취해지고, 여기서 제 1 섹터(501a)는 명령 부분이고 4 섹터(501b)의 관련 데이터가 존재한다. 캐시(503)는 2KB(또는 정확하게 2048바이트 이상) 블록에 의한 구성이다.(이는 전형적으로 캐시에서 사용되는 블록의 크기가 표준 섹터의 여러 배일 경우가 있을 것이다.) 후술될 종류의 배열 없이, 인스트럭션은 도 5에 도시된 바와 같은 캐시에서 임의의 위치로 캐싱될 수 있고, 그 결과의 문제는 후술된다.
매체 펌웨어가 버퍼링된 IO를 갖는 플랫폼으로부터의 인스트럭션을 이해하도록 하기 위해, 현재 펌웨어는 각각의 인스트럭션의 동적 인스트럭션 크기를 인지하는 것이 바람직하다. 이렇게 하면, 현재 송신 인스트럭션의 총 크기를 지정하기 위해 명령 블록으로 추가되도록 하나의 필드(field)가 도입될 수 있다. 예를 들어, 도 4의 표에서, 어미 섹터 카운트(count)를 위한 새 필드는 바이트 36에서 시작하는 명령 섹터의 제 2 부분으로 추가될 수 있다. 사전 규정된 명령 길이는 디폴트 값으로 처리될 수 있고, 이 필드는 런 타임(run time)에서 이 명령의 실제 크기를 알릴 것이다. 이 필드가 0이면, 디폴트 값이 사용될 수 있다.
플랫폼 OS가 버퍼링된 IO를 사용하고 있다면, 판독 및 기록 이 둘에 대한 작동은 후술한 바와 같이 변경될 수 있다. 다음의 두 섹션은 명령이 매체로 송신될 때, 기록에 대한 캐싱, 응답이 복귀될 때 판독에 대한 캐싱을 처리하는 방법을 기술한다. 간략하게, 이 프로세스는 도 6에 도시되고, 여기서 도 6에 도시된 바는 제외하고 도 5에 유사하게 번호가 매겨지고, 인스트럭션은 이제 캐시 내의 논리 블록 경계와 정렬되고 그 후에 임의의 부분적으로 채워지는 캐시 블록은 음영이 가해진 영역(607)에 의해 도시된 바와 같이 패딩아웃된다.
버퍼링된
IO
에 대한 직접 기록 명령의 방법
보안 전송 펌웨어는 명령들을 처리하는 매체(예를 들어 TrustedFlash) 카드 내의 에이전트(agent)이다. 호스트로부터의 보안 전송 명령은 상기 카드로 즉각 송신되는 것이 바람직하다. 그러므로, 플랫폼 OS가 기록 명령을 상기 카드로 송신하지 않고, 대신에 데이터를 버터 내에 두는 경우, 매체는 명령을 획득하고 그에 응답한 방법을 가지지 못할 것이다. 게다가, 특정 위치에 있을 필요가 있는 명령 블록으로 구성되는 인스트럭션의 경우, 전체 명령의 제 1 섹터이어야 하는 TrustedFlash 명령 블록에서와 마찬가지로, 기록 명령의 시퀀스는 적절한(예를 들어 TrustedFlash) 프로토콜을 따라야 한다: 명령 완료 이전에 명령 시퀀스 내의 여분의 판독 및 기록은, 명령 획득 상태를 포함하여, 펌웨어에 문제를 야기시켜서, 상기 명령은 성공하지 못할 것이다. 아래는 이 문제를 차례로 해결한 방법이다.
OS가 기록 명령을 플러싱하도록 하는 방법은 다음과 같다:
· 디바이스를 폐쇄한다
· 디바이스를 재개방한다
일부 플랫폼은 기록을 위한 플러싱의 기능을 제공할 수 있고, 이 경우에 대응하는 명령이 사용될 수 있다. 그와 같은 명령이 부족하거나 플러싱이 작동할 수 없는 다른 플랫폼에서, 매체는 논리적으로 폐쇄되거나 재개방될 수 있다. 기록 명령이 카드로 플러싱되는 것을 보장하기 위해, 폐쇄-재개방이 언제나 작동한다.
일반적으로, 카드가 호스트에 삽입되면, 호스트는 초기화되고 매체/카드를 실장할 것이다. 매체의 콘텐츠에 액세스하기 위해서, 호스트는 매체를 개방할 것이다. 이는 "논리" 개방으로 간주된다. 관련된 데이터, 테이블, 캐시 등이 설정된다. 이 후에, 디렉토리(directories)를 브라우징(browsing)하거나 판독/기록 동작을 위한 "파일"을 개방할 수 있다. 매체를 "폐쇄"함으로써, 모든 캐시 콘텐츠, 테이블 또는 데이터가 소거되거나 무효화된다. 예를 들어, Linux 운영 시스템은 open() 명령 및 close() 명령을 포함한다. close() 명령은 매체가 더이상 임의의 파일을 언급하지 않고 사용될 수 있도록 상기 매체의 파일 기술자(file descriptor)를 폐쇄한다. 임의의 기록 락(locks)은 자신이 관련되어 있었던 파일 기술자에서 유지되었고, 프로세스에 의해 소유된 기록 락은 제거된다. 디바이스를 논리적으로 재개방하기 위해 open()으로의 호출은 새 개방 파일 기술을 생성한다.(이들은 Linux 프로그래머 매뉴얼에 더 기술되어 있다.)
다른 문제는 기록 위치, 기록 버퍼 크기, 및 명령 시퀀스의 잠재적인 변화이다. 이를 방지하기 위해, 툴킷은 다음과 같은 방식으로 명령을 매체에 송신할 것이다:
· 특정한 플랫폼의 캐시 블록 크기를 인지하고
· 캐시 블록 크기와 정렬된 기록 명령의 시작 섹터를 설정하고
· 버퍼가 캐시 블록 크기로 정렬되도록 하여 송신 명령의 정확한 크기를 제공한다.
이 방식으로, 모든 것이 캐시 블록 크기로 정렬되기 때문에 OS는 이 기록 명령을 정렬할 필요가 없고, 버퍼 크기가 블록 크기로 정렬되기 때문에 OS는 카드로부터 데이터를 판독할 필요가 없다. 결과적으로, 호스트로부터의 기록 명령은 수정되지 않을 것이다. 플랫폼이 직접 IO를 지원하는 경우, 이 방법은 단지 블록 크기를 512 바이트로 설정함으로써 여전히 적용 가능하다.
도 7의 흐름 또는 이 방법의 기록 명령을 도시한다. 흐름은 701에서 매체의 원 상태가 개방인 상태로 시작한다. 그리고나서 703에서 캐시는 디바이스를 논리적으로 폐쇄하고나서 그것을 재개방함으로써 플러싱된다. 대안으로, 운영 시스템이 캐시를 플러싱하기 위하여 특정 명령을 갖는다면, 이것이 대신 사용될 수 있다.
그리고나서 인스트럭션은 블록 705에서 플러싱된 캐시에 배치된다. 도 6에 도시된 바와 같이, 인스트럭션(601)(명령 블록(601a)을 포함하는, 이 예에서 데이터의 네 섹터)이 저장되어 인스트럭션은 캐시(603) 내에 논리 경계와 정렬된다. 이것이 단지 부분적으로 채워진 어떤 캐시 블록을 남기는 경우, 이 블록은 인스트럭션을 캐시 내의 논리 블록의 정수로 유지하기 위해 패딩아웃된다. 이 예에서, 캐시 내의 각각의 논리 블록이 4 섹터를 유지할 수 있으므로, 인스트럭션의 나머지 섹터는 단지 캐시 블록의 일부만을 점유한다. 이 607에서의 음영선은 추가로 패딩되었음을 나타내어, 호스트의 운영 시스템은, 상기 인스트럭션이 완성된 캐시 블록으로 형성되었다고 생각하여 그것을 그와 같이 처리한다.
도 7로 돌아가서, 블록 705에 도시되는 바와 같이, 이 프로세스는 실제 인스트럭션 또는 명령의 총 크기로 채워지고 캐시의 논리 블록 크기와 정렬되어 시작 섹터를 역으로 판독하는 명령 블록을 포함할 수 있다. 그리고나서 완성된 캐시 블록을 완전히 채워는 임의의 더미 섹터를 포함하는, 데이터가 채워진다. 그리고나서 시작 기록 섹터는 인스트럭션의 블록 정렬을 확인하기 위해 조사될 수 있다. 그리고나서 블록 707에서, 이 인스트럭션을 매체로 송신하기 위한 기록 명령은 플랫폼의 운영 시스템으로 송신될 수 있는데, 여기서 기록 프로세스는 이제 캐시의 블록 경계 및 크기로 정렬되는 논리 블록 어드레스(LBA)로 시작할 것이다.
IO
판독을 위한 캐싱을 처리하는 방법
호스트로부터 인스트럭션을 수신한 후에, 매체는 상태와 같은, 또는 판독 요청에 응답한 데이터로서 호스트에 응답할 필요가 있다. 캐싱으로 인해서, 애플리케이션이 판독 명령을 송신할 때마다, 관련 위치 데이터가 캐시 내에 있는 경우에 OS는 캐시를 역으로 판독하기 위해 단지 상기 캐시로 나아간다. 그러므로, 실제 펌웨어 응답은 애플리케이션에 역으로 복귀되지 않는다.
이 문제를 처리하기 위해, 캐시 바이패스(bypass)는 다음의 방식으로 사용될 수 있다:
· 매 판독에 대한 각각의 TrustedFlash 명령 변화를 위한 논리 블록 어드레스(LBA)를 상대적으로 응시(staring)하는 판독.
· 두 판독 명령 사이의 시작 판독 LBA의 차이는 캐시 블록 크기의 차이보다 더 커야 한다.
· 시작 판독 LBA는 캐시 블록 크기로 정렬되어야만 한다.
· OS가 애플리케이션에 대한 판독을 플러싱하는 것을 확인하기 위해 디바이스를 폐쇄 및 재개방한다.
플랫폼이 직접 IO를 지원하는 경우, 이 방법은 캐시 블록 크기를 단지 512 바이트로 설정함으로써 여전히 적용될 수 있다. 도 8의 흐름 또는 이 방법의 판독 명령을 기술한다.
도 8은 매체가 호스트로부터의 인스트럭션에 응답하도록 하기 위한 예시적인 실시예를 도시한다. 전형적으로, 이 판독 프로세스는, 기록 인스트럭션 및 판독 명령 사이에 다른 명령이 삽입되지 않고, 최종 섹션에서 기술되는 기록 프로세스를 즉각 따를 것이다. 흐름은 다시 블록 801에서, 개방되어 있는 원 디바이스 상태로 시작한다.
803에서, 캐시는 703에서와 같이, 폐쇄 이후 개방으로, 또는 가능하다면, 캐시를 플러싱하라는 명령으로, 플러싱된다. 현재 캐시가 비어 있기 때문에, 이는 운영 시스템이 매체로부터의 실제 응답 대신에 캐싱된 재료를 단순히 복귀시키는 것을 방지한다. 805에서, 수신된 응답이 캐시 내에 배치될 때, 그것이 캐시의 논리 블록 구조와 정렬될 것인지 확인하기 위해 상기 정렬이 조사된다. 최종적으로 판독 명령은 플랫폼의 운영 시스템으로 송신된다.
일단 이 준비 과정이 행해지면, 드라이버는 판독 인스트럭션을 매체로 송신할 수 있고, 매체는 이후에 응답을 복귀시킬 것이다. 상술한 바와 같이, 이는 실제 보안 사용자 데이터(즉, 도시된 바와 같이 보안 전송 시스템인 데이터) 또는 상태와 같은 비 데이터(non data) 응답을 포함할 수 있다. 그리고나서 응답은 캐시의 논리 블록 경계와 정렬되어 캐싱된다. 패딩은, 보안 전송 애플리케이션이 무시할 수 있을지라도, 또한 캐시 블록의 정수를 채우기 위해 추가될 수 있다.
본 발명이 특정한 실시예를 참조하여 기술되었을지라도, 본 기술은 단지 본 발명의 응용의 예이므로 제한하는 것으로 해석되지 않아야 한다. 결과적으로, 개시된 실시예의 특징의 다양한 개조 및 결합은 다음의 청구항에 의해 포함되는 본 발명의 범위 내에 있다.
Claims (20)
- 호스팅 디지털 어플라이언스로부터 상기 호스팅 디지털 어플라이언스와 통신하는 휴대용 매체로 애플리케이션 인스트럭션을 송신하기 위한 방법으로서,
크기가 제 1 번 바이트인 하나 이상의 유닛으로 애플리케이션 인스트럭션(501)은 구성되고,
상기 디지털 어플라이언스 상의 캐시(603)의 콘텐츠를 플러싱하는 단계와,
후속하여, 상기 인스트럭션을 상기 캐시(603)에 기록하는 단계로서, 상기 캐시(603)는, 크기가 제 2 번 바이트이고 상기 제 2 번은 상기 제 1 번보다 더 큰, 복수의 논리 블럭으로 구성되는, 상기 캐시에 기록하는 단계를
포함하고, 상기 기록하는 단계는,
상기 논리 블록들의 경계로 상기 인스트럭션(501)의 시작을 정렬하는 단계;
더미 데이터로 상기 인스트럭션(501)을 패딩하여 상기 제 2 번 바이트의 정수 배의 크기를 갖는 단계; 및
상기 캐시(603)로부터 상기 휴대용 매체(250)로 상기 인스트럭션(501)을 송신하는 단계를
포함하고, 상기 캐시(603)의 상기 콘텐츠를 플러싱하는 단계는,
상기 휴대용 매체(250)를 폐쇄하기 위하여 폐쇄 명령에 대한 요청; 및
후속하여 상기 휴대용 매체(250)를 개방하기 위하여 개방 명령에 대한 요청을 포함하는, 애플리케이션 인스트럭션을 송신하기 위한 방법. - 제 1항에 있어서, 상기 제 2 번은 상기 제 1 번의 배수인, 애플리케이션 인스트럭션을 송신하기 위한 방법.
- 제 1항 또는 제 2항에 있어서, 상기 유닛의 크기는 섹터인, 애플리케이션 인스트럭션을 송신하기 위한 방법.
- 제 1항에 있어서, 상기 인스트럭션(501)은 명령 부와 데이터부를 포함하는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
- 제 4항에 있어서, 상기 휴대용 매체(250)는 비휘발성 메모리이고, 상기 명령부는 상기 비휘발성 메모리에서 상기 데이터부를 저장하기 위한 기록 명령인, 애플리케이션 인스트럭션을 송신하기 위한 방법.
- 제 5항에 있어서, 상기 명령부는 크기에 있어 상기 유닛 중 하나이고, 상기 데이터부는 크기에 있어 상기 유닛 중 하나 이상인, 애플리케이션 인스트럭션을 송신하기 위한 방법.
- 제 1항에 있어서, 상기 인스트럭션(501)은 데이터부를 포함하지 않는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
- 제 7항에 있어서, 상기 인스트럭션(501)은 판독 데이터 명령을 포함하는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
- 제 8항에 있어서, 상기 인스트럭션(501)에 응답하여, 상기 휴대용 매체(250)로부터 상기 호스팅 디지털 어플라이언스로 데이터를 복귀시키는 단계를 더 포함하는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
- 제 9항에 있어서, 상기 논리 블록의 경계와 상기 데이터의 시작을 정렬하는 단계를 포함하여, 상기 캐시(603) 내에 상기 복귀 데이터를 저장하는 단계를 더 포함하는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
- 제 7항에 있어서, 상기 캐시(603) 내에 상기 인스트럭션(501)에 대한 응답을 저장하는 단계를 더 포함하고, 상기 응답은 크기가 상기 제 1 번의 바이트인 하나 이상의 유닛으로써 구성되고 상기 저장하는 단계는 상기 논리 블록의 경계와 상기 응답의 시작을 정렬하는 단계를 포함하는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
- 휴대용 매체와 통신하는 호스팅 디지털 어플라이언스 상의 상기 휴대용 매체(250)로부터 애플리케이션 응답을 수신하는 방법으로서,
크기가 제 1 번의 바이트인 하나 이상의 유닛으로 응답은 구성되고,
상기 디지털 어플라이언스 상의 캐시(603)의 콘텐츠를 플러싱하는 단계로서, 상기 디지털 어플라이언스 상의 상기 캐시(603)는 크기가 제 2 번 바이트인 복수의 논리 블록으로 구성되고, 상기 제 2 번은 상기 제 1 번보다 더 큰, 캐시의 콘텐츠를 플러싱하는 단계에 의해 특징되는, 상기 디지털 어플라이언스로부터 상기 휴대용 매체(250)로 인스트럭션(501)을 발행하는 단계;
후속하여, 상기 호스팅 디지털 어플라이언스 상의 상기 인스트럭션(501)에 대한 응답을 수신하는 단계; 및
상기 디지털 어플라이언스 상의 상기 캐시(603) 내에 응답을 저장하는 단계를 포함하고, 상기 저장하는 단계는,
상기 논리 블록의 경계와 상기 응답의 시작을 정렬하는 단계;
상기 제 2 번 바이트의 정수배인 크기를 가지기 위해 더미 데이터로 상기 응답을 패딩하는 단계를 포함하고,
상기 캐시(603)의 콘텐츠를 플러싱하는 단계는
상기 휴대용 매체(250)를 폐쇄하기 위하여 폐쇄 명령에 대한 요청; 및
후속하여, 상기 휴대용 매체(250)를 개방하기 위하여 개방 명령에 대한 요청을
포함하는, 휴대용 매체로부터 애플리케이션 응답을 수신하는 방법. - 제 12항에 있어서, 상기 제 2 번은 상기 제 1 번의 배수인, 휴대용 매체로부터 애플리케이션 응답을 수신하는 방법.
- 제 12항 또는 제 13항에 있어서, 상기 저장하는 단계는 상기 제 2 번의 바이트의 정수배인 크기를 가지기 위해 더미 데이터로 상기 응답을 패딩하는 단계를 더 포함하는, 휴대용 매체로부터 애플리케이션 응답을 수신하는 방법.
- 제 12항에 있어서, 상기 인스트럭션(501)은 판독 명령을 포함하고, 상기 응답은 데이터를 포함하는, 휴대용 매체로부터 애플리케이션 응답을 수신하는 방법.
- 제 12항에 있어서, 상기 응답은 상태인, 휴대용 매체로부터 애플리케이션 응답을 수신하는 방법.
- 제 12항에 있어서, 상기 유닛의 크기는 섹터인, 휴대용 매체로부터 애플리케이션 응답을 수신하는 방법.
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/956,042 | 2007-12-13 | ||
US11/956,042 US9032154B2 (en) | 2007-12-13 | 2007-12-13 | Integration of secure data transfer applications for generic IO devices |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100113059A KR20100113059A (ko) | 2010-10-20 |
KR101538619B1 true KR101538619B1 (ko) | 2015-07-22 |
Family
ID=40377323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107012939A KR101538619B1 (ko) | 2007-12-13 | 2008-12-10 | 일반 io 디바이스에 대한 보안 데이터 전송 애플리케이션의 통합 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9032154B2 (ko) |
EP (1) | EP2245527B1 (ko) |
KR (1) | KR101538619B1 (ko) |
TW (1) | TWI515558B (ko) |
WO (1) | WO2009076405A1 (ko) |
Families Citing this family (5)
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 (ja) * | 2015-02-10 | 2019-07-10 | 富士通株式会社 | ストレージ制御装置、制御方法、および制御プログラム |
US20230214157A1 (en) * | 2021-12-30 | 2023-07-06 | Micron Technology, Inc. | NVMe COMMAND COMPLETION MANAGEMENT FOR HOST SYSTEM MEMORY |
US12008252B2 (en) * | 2022-06-27 | 2024-06-11 | Western Digital Technologies, Inc. | Data storage device with data padding and safe and efficient alignment of data zones with data containers |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050195635A1 (en) * | 2004-03-08 | 2005-09-08 | Conley Kevin M. | Flash controller cache architecture |
Family Cites Families (106)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0175487A3 (en) * | 1984-08-23 | 1989-03-08 | Btg International Limited | Software protection device |
JPS63163930A (ja) * | 1986-12-26 | 1988-07-07 | Toshiba Corp | アライメント補正方式 |
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 (ja) * | 1993-12-27 | 1996-11-27 | インターナショナル・ビジネス・マシーンズ・コーポレイション | ファジィ・パッキング方法及びデータ記憶システム |
DE69532434T2 (de) | 1994-10-27 | 2004-11-11 | Mitsubishi Corp. | Gerät für Dateiurheberrechte-Verwaltungssystem |
TW250616B (en) | 1994-11-07 | 1995-07-01 | Discovery Communicat Inc | Electronic book selection and delivery system |
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 |
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 (ja) | 1994-11-23 | 1996-10-11 | Xerox Corp | ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法 |
CN101359350B (zh) | 1995-02-13 | 2012-10-03 | 英特特拉斯特技术公司 | 用于安全地管理在数据项上的操作的方法 |
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 |
CA2242596C (en) | 1996-01-11 | 2012-06-19 | Mrj, Inc. | System for controlling access and distribution of digital property |
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 |
IL131876A0 (en) | 1997-03-14 | 2001-03-19 | 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 |
US6490408B1 (en) | 1997-10-28 | 2002-12-03 | Lg Electronics Inc. | Apparatus and method for determining ID information recorded on an information-stored medium |
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 (de) | 1998-05-07 | 1999-12-23 | Ems Electronic Management Syst | Funktionsmodul |
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 |
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 |
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 |
KR100488746B1 (ko) | 1999-11-01 | 2005-05-11 | 세이코 엡슨 가부시키가이샤 | 데이터 출력 제어장치 및 데이터 출력 서비스 제공방법 |
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 |
US7068381B1 (en) | 2000-02-02 | 2006-06-27 | Raja Tuli | Portable high speed internet access device |
US7023572B2 (en) | 2000-02-02 | 2006-04-04 | Raja Singh 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 (ja) | 2000-03-14 | 2011-01-26 | ソニー株式会社 | 情報提供装置および方法、情報処理装置および方法、並びにプログラム格納媒体 |
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 |
AU2001264916A1 (en) | 2000-05-31 | 2001-12-11 | 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 |
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 |
US6973445B2 (en) | 2001-05-31 | 2005-12-06 | Contentguard Holdings, Inc. | Demarcated digital content and method for creating and processing demarcated digital works |
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 (ja) | 2001-10-22 | 2005-04-20 | 株式会社東芝 | メモリカードを制御するための装置および方法 |
JP4119152B2 (ja) | 2002-04-17 | 2008-07-16 | 株式会社ルネサステクノロジ | 半導体集積回路装置 |
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 |
WO2004086363A2 (en) | 2003-03-27 | 2004-10-07 | M-Systems Flash Disk Pioneers Ltd. | Data storage device with full access by all users |
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 |
WO2005013436A1 (en) | 2003-07-28 | 2005-02-10 | Sandisk Secure Content Solutions, Inc. | Electrical connector |
EP1652061A2 (en) | 2003-07-28 | 2006-05-03 | SanDisk Secure Content Solutions, Inc. | System, apparatus and method for controlling a storage device |
US7350143B2 (en) | 2003-10-03 | 2008-03-25 | Sandisk Corporation | Method for page translation |
US20050251617A1 (en) * | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
EP2110769B1 (en) | 2004-02-03 | 2012-12-05 | SanDisk Secure Content Solutions, Inc. | Protection of digital data content |
KR100716972B1 (ko) * | 2004-02-19 | 2007-05-10 | 삼성전자주식회사 | 기록/재생 방법 |
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 |
CN1957326B (zh) | 2004-05-27 | 2010-07-28 | Nxp股份有限公司 | 指令对齐的微处理器和方法 |
US20050289072A1 (en) | 2004-06-29 | 2005-12-29 | Vinay Sabharwal | System for automatic, secure and large scale software license management over any computer network |
EP1815478A1 (en) | 2004-11-22 | 2007-08-08 | 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 |
JP2009518759A (ja) | 2005-12-08 | 2009-05-07 | サンディスク コーポレーション | コマンドパススルー機構を備えたメディアカード |
US20070168668A1 (en) | 2005-12-08 | 2007-07-19 | Chang Robert C | Media card with command pass through mechanism |
US20070136501A1 (en) | 2005-12-08 | 2007-06-14 | Chang Robert C | Media card command pass through methods |
JP4740766B2 (ja) * | 2006-02-27 | 2011-08-03 | 富士通株式会社 | データ受信装置、データ送受信システム、データ送受信システムの制御方法及びデータ受信装置の制御プログラム |
US8839005B2 (en) | 2006-09-13 | 2014-09-16 | Sandisk Technologies Inc. | Apparatus for transferring licensed digital content between users |
US20080065552A1 (en) | 2006-09-13 | 2008-03-13 | Gidon Elazar | Marketplace for Transferring Licensed Digital Content |
US8370562B2 (en) * | 2007-02-25 | 2013-02-05 | Sandisk Il Ltd. | Interruptible cache flushing in flash memory systems |
-
2007
- 2007-12-13 US US11/956,042 patent/US9032154B2/en not_active Expired - Fee Related
-
2008
- 2008-12-10 WO PCT/US2008/086168 patent/WO2009076405A1/en active Application Filing
- 2008-12-10 EP EP08859004A patent/EP2245527B1/en active Active
- 2008-12-10 KR KR1020107012939A patent/KR101538619B1/ko active IP Right Grant
- 2008-12-12 TW TW097148609A patent/TWI515558B/zh not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050195635A1 (en) * | 2004-03-08 | 2005-09-08 | Conley Kevin M. | Flash controller cache architecture |
Also Published As
Publication number | Publication date |
---|---|
WO2009076405A1 (en) | 2009-06-18 |
TWI515558B (zh) | 2016-01-01 |
EP2245527A1 (en) | 2010-11-03 |
US20090157971A1 (en) | 2009-06-18 |
US9032154B2 (en) | 2015-05-12 |
EP2245527B1 (en) | 2013-02-27 |
KR20100113059A (ko) | 2010-10-20 |
TW200935218A (en) | 2009-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10108373B2 (en) | Host, system, and methods for transmitting commands to non-volatile memory card | |
US10474585B2 (en) | Nonvolatile memory system and a method of operating the nonvolatile memory system | |
US8806128B2 (en) | System and method for information security device with compact flash interface | |
US10402313B2 (en) | Method and system for accessing a storage system with multiple file systems | |
TWI667590B (zh) | 資料儲存裝置以及韌體加密及更新方法 | |
US11232022B2 (en) | Memory system, data storage device, user device and data management method thereof having a data management information matching determination | |
EP2631916B1 (en) | Data deletion method and apparatus | |
RU2445676C2 (ru) | Способ осуществления связи с многофункциональной картой памяти | |
KR100816761B1 (ko) | 낸드 플래시 메모리 및 에스램/노어 플래시 메모리를포함하는 메모리 카드 및 그것의 데이터 저장 방법 | |
US20080195833A1 (en) | Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit | |
US20080028132A1 (en) | Non-volatile storage device, data storage system, and data storage method | |
KR101538619B1 (ko) | 일반 io 디바이스에 대한 보안 데이터 전송 애플리케이션의 통합 | |
JP2005267628A (ja) | Nandフラッシュメモリを使用するメモリカード及びそれの動作方法 | |
JP5443998B2 (ja) | 不揮発性記憶装置、ホスト装置、不揮発性記憶システム、データ記録方法、およびプログラム | |
US20080005590A1 (en) | Memory system | |
TW201939509A (zh) | 記憶體定址方法及相關聯的控制器 | |
US9171004B2 (en) | System and method to respond to a data file deletion instruction | |
CN110312986B (zh) | 用于在固态设备上存储数据的流的机会性使用 | |
TWI521345B (zh) | 回應讀取方法及資料傳輸系統 | |
TWI715408B (zh) | 快閃記憶體控制器、記憶體裝置以及存取快閃記憶體模組之方法 | |
KR20190106005A (ko) | 메모리 시스템, 그것의 동작 방법 및 전자 장치 | |
KR20210060867A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR101165966B1 (ko) | 커맨드에 의해 동기 모드 또는 비동기 모드로 액세스 가능한 메모리 시스템 | |
US8544424B2 (en) | System, controller and method thereof for transmitting and distributing data stream | |
TWI841113B (zh) | 記憶體定址方法及相關聯的控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |