KR101538619B1 - 일반 io 디바이스에 대한 보안 데이터 전송 애플리케이션의 통합 - Google Patents

일반 io 디바이스에 대한 보안 데이터 전송 애플리케이션의 통합 Download PDF

Info

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
Application number
KR1020107012939A
Other languages
English (en)
Other versions
KR20100113059A (ko
Inventor
시안 준 리우
로버트 씨. 창
포 유안
준쯔히 왕
론 바질라이
바만 콰와미
파시드 사벳-샤히
Original Assignee
샌디스크 테크놀로지스, 인코포레이티드
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 샌디스크 테크놀로지스, 인코포레이티드 filed Critical 샌디스크 테크놀로지스, 인코포레이티드
Publication of KR20100113059A publication Critical patent/KR20100113059A/ko
Application granted granted Critical
Publication of KR101538619B1 publication Critical patent/KR101538619B1/ko

Links

Images

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

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

일반 IO 디바이스에 대한 보안 데이터 전송 애플리케이션의 통합{INTEGRATION OF SECURE DATA TRANSFER APPLICATIONS FOR GENERIC IO DEVICES}
본 발명은, 보안 메모리 카드와 같은 휴대용 매체를 전화 핸드셋(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은, 응답을 호스트의 캐시 내에 배치하는 방법을 도시한 도면.
메모리 카드와 같은 휴대용 매체 및 이동 전화 핸드셋과 같은 호스팅 디지털 어플라이언스 사이에서 콘텐트를 전송할 때, 호스트의 운영 시스템은 종종 콘텐트에 대한 캐싱 메커니즘을 사용할 것이다. 이 캐시는 전형적으로 특정한 크기의 다수의 블록으로 분산되는 논리 구조를 갖는다. 데이터이든지 또는 인스트럭션(명령 및 또는 일부 관련된 데이터)이든지 간에, 전송되는 콘텐트는 또한 특정 크기의 하나 이상의 섹션과 같은 특정한 방식으로 구성될 수 있다. 콘텐트가 하나의 크기의 유닛(예를 들어 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. 호스팅 디지털 어플라이언스로부터 상기 호스팅 디지털 어플라이언스와 통신하는 휴대용 매체로 애플리케이션 인스트럭션을 송신하기 위한 방법으로서,
    크기가 제 1 번 바이트인 하나 이상의 유닛으로 애플리케이션 인스트럭션(501)은 구성되고,
    상기 디지털 어플라이언스 상의 캐시(603)의 콘텐츠를 플러싱하는 단계와,
    후속하여, 상기 인스트럭션을 상기 캐시(603)에 기록하는 단계로서, 상기 캐시(603)는, 크기가 제 2 번 바이트이고 상기 제 2 번은 상기 제 1 번보다 더 큰, 복수의 논리 블럭으로 구성되는, 상기 캐시에 기록하는 단계를
    포함하고, 상기 기록하는 단계는,
    상기 논리 블록들의 경계로 상기 인스트럭션(501)의 시작을 정렬하는 단계;
    더미 데이터로 상기 인스트럭션(501)을 패딩하여 상기 제 2 번 바이트의 정수 배의 크기를 갖는 단계; 및
    상기 캐시(603)로부터 상기 휴대용 매체(250)로 상기 인스트럭션(501)을 송신하는 단계를
    포함하고, 상기 캐시(603)의 상기 콘텐츠를 플러싱하는 단계는,
    상기 휴대용 매체(250)를 폐쇄하기 위하여 폐쇄 명령에 대한 요청; 및
    후속하여 상기 휴대용 매체(250)를 개방하기 위하여 개방 명령에 대한 요청을 포함하는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
  2. 제 1항에 있어서, 상기 제 2 번은 상기 제 1 번의 배수인, 애플리케이션 인스트럭션을 송신하기 위한 방법.
  3. 제 1항 또는 제 2항에 있어서, 상기 유닛의 크기는 섹터인, 애플리케이션 인스트럭션을 송신하기 위한 방법.
  4. 제 1항에 있어서, 상기 인스트럭션(501)은 명령 부와 데이터부를 포함하는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
  5. 제 4항에 있어서, 상기 휴대용 매체(250)는 비휘발성 메모리이고, 상기 명령부는 상기 비휘발성 메모리에서 상기 데이터부를 저장하기 위한 기록 명령인, 애플리케이션 인스트럭션을 송신하기 위한 방법.
  6. 제 5항에 있어서, 상기 명령부는 크기에 있어 상기 유닛 중 하나이고, 상기 데이터부는 크기에 있어 상기 유닛 중 하나 이상인, 애플리케이션 인스트럭션을 송신하기 위한 방법.
  7. 제 1항에 있어서, 상기 인스트럭션(501)은 데이터부를 포함하지 않는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
  8. 제 7항에 있어서, 상기 인스트럭션(501)은 판독 데이터 명령을 포함하는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
  9. 제 8항에 있어서, 상기 인스트럭션(501)에 응답하여, 상기 휴대용 매체(250)로부터 상기 호스팅 디지털 어플라이언스로 데이터를 복귀시키는 단계를 더 포함하는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
  10. 제 9항에 있어서, 상기 논리 블록의 경계와 상기 데이터의 시작을 정렬하는 단계를 포함하여, 상기 캐시(603) 내에 상기 복귀 데이터를 저장하는 단계를 더 포함하는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
  11. 제 7항에 있어서, 상기 캐시(603) 내에 상기 인스트럭션(501)에 대한 응답을 저장하는 단계를 더 포함하고, 상기 응답은 크기가 상기 제 1 번의 바이트인 하나 이상의 유닛으로써 구성되고 상기 저장하는 단계는 상기 논리 블록의 경계와 상기 응답의 시작을 정렬하는 단계를 포함하는, 애플리케이션 인스트럭션을 송신하기 위한 방법.
  12. 휴대용 매체와 통신하는 호스팅 디지털 어플라이언스 상의 상기 휴대용 매체(250)로부터 애플리케이션 응답을 수신하는 방법으로서,
    크기가 제 1 번의 바이트인 하나 이상의 유닛으로 응답은 구성되고,
    상기 디지털 어플라이언스 상의 캐시(603)의 콘텐츠를 플러싱하는 단계로서, 상기 디지털 어플라이언스 상의 상기 캐시(603)는 크기가 제 2 번 바이트인 복수의 논리 블록으로 구성되고, 상기 제 2 번은 상기 제 1 번보다 더 큰, 캐시의 콘텐츠를 플러싱하는 단계에 의해 특징되는, 상기 디지털 어플라이언스로부터 상기 휴대용 매체(250)로 인스트럭션(501)을 발행하는 단계;
    후속하여, 상기 호스팅 디지털 어플라이언스 상의 상기 인스트럭션(501)에 대한 응답을 수신하는 단계; 및
    상기 디지털 어플라이언스 상의 상기 캐시(603) 내에 응답을 저장하는 단계를 포함하고, 상기 저장하는 단계는,
    상기 논리 블록의 경계와 상기 응답의 시작을 정렬하는 단계;
    상기 제 2 번 바이트의 정수배인 크기를 가지기 위해 더미 데이터로 상기 응답을 패딩하는 단계를 포함하고,
    상기 캐시(603)의 콘텐츠를 플러싱하는 단계는
    상기 휴대용 매체(250)를 폐쇄하기 위하여 폐쇄 명령에 대한 요청; 및
    후속하여, 상기 휴대용 매체(250)를 개방하기 위하여 개방 명령에 대한 요청을
    포함하는, 휴대용 매체로부터 애플리케이션 응답을 수신하는 방법.
  13. 제 12항에 있어서, 상기 제 2 번은 상기 제 1 번의 배수인, 휴대용 매체로부터 애플리케이션 응답을 수신하는 방법.
  14. 제 12항 또는 제 13항에 있어서, 상기 저장하는 단계는 상기 제 2 번의 바이트의 정수배인 크기를 가지기 위해 더미 데이터로 상기 응답을 패딩하는 단계를 더 포함하는, 휴대용 매체로부터 애플리케이션 응답을 수신하는 방법.
  15. 제 12항에 있어서, 상기 인스트럭션(501)은 판독 명령을 포함하고, 상기 응답은 데이터를 포함하는, 휴대용 매체로부터 애플리케이션 응답을 수신하는 방법.
  16. 제 12항에 있어서, 상기 응답은 상태인, 휴대용 매체로부터 애플리케이션 응답을 수신하는 방법.
  17. 제 12항에 있어서, 상기 유닛의 크기는 섹터인, 휴대용 매체로부터 애플리케이션 응답을 수신하는 방법.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020107012939A 2007-12-13 2008-12-10 일반 io 디바이스에 대한 보안 데이터 전송 애플리케이션의 통합 KR101538619B1 (ko)

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)

* 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 (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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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