KR100857760B1 - A method and device to store secret key in flash memory - Google Patents

A method and device to store secret key in flash memory Download PDF

Info

Publication number
KR100857760B1
KR100857760B1 KR1020070047146A KR20070047146A KR100857760B1 KR 100857760 B1 KR100857760 B1 KR 100857760B1 KR 1020070047146 A KR1020070047146 A KR 1020070047146A KR 20070047146 A KR20070047146 A KR 20070047146A KR 100857760 B1 KR100857760 B1 KR 100857760B1
Authority
KR
South Korea
Prior art keywords
encryption key
flash memory
address
encryption
memory device
Prior art date
Application number
KR1020070047146A
Other languages
Korean (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 삼성전자주식회사
Priority to KR1020070047146A priority Critical patent/KR100857760B1/en
Application granted granted Critical
Publication of KR100857760B1 publication Critical patent/KR100857760B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

An apparatus for storing an encryption key by using a flash memory and a security method thereof are provided to prevent external hacking or intrusion to other product of the same product group though information on one security key is exposed. A security method of an apparatus for storing an encryption key by using a flash memory includes the following several steps. If a security & storage device is turned on, an FTL(Flash Translation Layer) program is executed(S10). Structural properties of a NAND flash memory like positions, addresses and the number of bad blocks are searched(S11). A security engine generates an address of an encryption key by using the information on the bad block from an encryption algorithm(S12). The encryption key is programmed at the first flash memory according to the generated address of the encryption key(S13). The second flash memory stores the address of the generated encryption key(S14).

Description

플래시 메모리를 이용한 암호키 저장 장치 및 그것의 보안 방법{A method and device to store secret key in flash memory}A method and device to store secret key in flash memory}

도 1은 본 발명의 보안 플래시 메모리 장치를 나타내는 블록도;1 is a block diagram illustrating a secure flash memory device of the present invention;

도 2는 본 발명의 보안 플래시 메모리 장치에 암호키가 저장되는 일 예를 설명하는 블록도;2 is a block diagram illustrating an example in which an encryption key is stored in a secure flash memory device of the present invention;

도 3은 본 발명에 따른 보안 플래시 저장 장치에 암호키를 저장하기 위한 방법의 일실시예를 보여주는 순서도;3 is a flow chart showing one embodiment of a method for storing an encryption key in a secure flash storage device in accordance with the present invention;

도 4는 도 3의 실시예에 따라 저장된 암호키를 독출하는 방법을 보여주는 순서도;4 is a flowchart illustrating a method of reading a stored encryption key according to the embodiment of FIG. 3;

도 5는 본 발명에 따른 보안 플래시 저장 장치에 암호키를 저장하기 위한 방법의 다른 실시예를 보여주는 순서도;5 is a flow chart showing another embodiment of a method for storing an encryption key in a secure flash storage device according to the present invention;

도 6은 도 5의 실시예에 따라 저장된 암호키를 독출하는 방법을 보여주는 순서도;6 is a flowchart illustrating a method of reading a stored encryption key according to the embodiment of FIG. 5;

*도면의 주요부분에 대한 부호의 설명** Description of the symbols for the main parts of the drawings *

100 : 호스트 100: host

120 : 보안 플래시 메모리 장치120: secure flash memory device

200 : 호스트 인터페이스200: host interface

220 : CPU220: CPU

240 : 시큐리티 엔진240: security engine

260 : 제 1 플래시 메모리260: first flash memory

280 : 플래시 콘트롤러280: flash controller

300 : 메인 메모리300: main memory

320 : 제 2 플래시 메모리320: second flash memory

400 : 암호키 저장 공간400: encryption key storage space

420 : 코드 에어리어(code area)420 code area

440 : 암호키 및 가비지(garbage) 데이터440: encryption key and garbage data

본 발명은 반도체 메모리 장치에 관한 것으로, 더욱 상세하게는 암호키를 플래시 메모리에 안전하게 저장할 수 있는 저장 방법 및 그것을 이용하는 플래시 메모리 시스템에 관한 것이다.The present invention relates to a semiconductor memory device, and more particularly, to a storage method capable of securely storing an encryption key in a flash memory, and a flash memory system using the same.

일반적으로, 인터넷 발전으로 인하여 종래의 콘텐츠(contents)들은 디지털 형태로 바뀌면서 불법복제가 용이 해졌다. 따라서, 저작권자의 권리가 침해되는 것을 방지하기 위한 기술적 필요성이 증대되었고 그에 대응하는 신규 보안 기술이 개발되어 왔다. DRM(Digital Rights Management)은 디지털 저작권 관리를 의미한다. DRM은 디지털 콘텐츠 공급자의 이익을 안전하게 보호하며, 불법복제를 막고 사용료 부과와 결제대행 등 콘텐츠의 생성에서 유통·관리까지를 일괄적으로 지원하는 기술이다. 여기에는 적법한 사용자만 콘텐츠를 사용하고 적절한 요금을 지불하도록 만드는 디지털 저작권 관리기술, 저작권 승인과 집행을 위한 소프트웨어 및 보안기술, 지불 및 결제기술이 모두 포함된다. 이러한 이유로, 중요한 권리 또는 정보들을 안전하게 저장 관리하기 위한 장치의 중요성이 높아지고 있다. 본 명세서는 보호되어야 할 데이터를 안전하게 저장하기 위한 장치에 대하여 서술하고자 한다. In general, due to the development of the Internet, the conventional contents (contents) are converted into a digital form, making piracy easier. Therefore, the technical necessity for preventing the rights of copyright holders to be infringed has been increased, and new security technologies corresponding thereto have been developed. Digital Rights Management (DRM) means digital rights management. DRM is a technology that secures the interests of digital content providers, prevents illegal copying, and supports the creation, distribution, and management of contents such as charging royalties and settlement services. This includes digital rights management technology that ensures that only legitimate users use content and pay the appropriate fees, software and security technologies for copyright approval and enforcement, and payment and payment technology. For this reason, the importance of devices for securely storing and managing important rights or information is increasing. This specification is intended to describe an apparatus for securely storing data to be protected.

보안 저장 장치(secure storage system)는 호스트(host)로부터 전달되는 쓰기(write) 요청에 응답하여, 데이터를 비휘발성 메모리(non-volatile memory)의 특정 영역에 저장한다. 또는, 보안 저장 장치(120)는 호스트로부터 전달되는 읽기(read) 요청에 응답하여 내부에 저장된 데이터를 호스트로 전송한다. 이때 호스트와 보안 저장 시스템간 안전한 데이터 전달을 위해서는 암호키가 필요하다. 이 암호키는 외부 불특정 사용자로부터의 공격이나 해킹으로부터 안전하게 보호되어야 하며 암호키가 어떠한 방법으로 어디에 저장되는지에 따라 전체 시스템의 보안성이 결정된다. A secure storage system stores data in a specific area of non-volatile memory in response to a write request from a host. Alternatively, the secure storage device 120 transmits data stored therein to the host in response to a read request from the host. In this case, an encryption key is required for secure data transfer between the host and the secure storage system. The encryption key must be secured from attacks or hacks from external unspecified users and the security of the entire system depends on how and where the encryption key is stored.

종래의 경우, 암호키는 보안 저장 장치의 내부에 구비되는 불휘발성 반도체 메모리에 저장되었다. 암호키는 제품의 양산 단계에서 일괄적이고 규칙적인 순서로 보안 저장 장치 내부의 불휘발성 반도체 메모리에 저장되었다. 일괄적이고 규칙적인 순서를 갖는 보안키는 외부의 해킹이나, 침입에 쉽게 노출될 수 있는 문제점이 존재한다. 또한, 하나의 보안키 정보를 획득하게 되면 다른 동일한 보안키를 갖는 제품도 쉽게 공격 될 수 있는 문제점이 있다. In the related art, the encryption key is stored in a nonvolatile semiconductor memory provided in the secure storage device. The encryption keys were stored in the nonvolatile semiconductor memory inside the secure storage device in a batch and regular order during the mass production stage of the product. There is a problem that security keys with a batch and regular order can be easily exposed to external hacking or intrusion. In addition, if one security key information is obtained, another product having the same security key may be easily attacked.

본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로, 본 발명의 목적은 암호키를 제품별로 다른 위치에 저장하여 보안 저장 장치의 보안성을 높이는 방법 및 장치를 제공하는데 있다.The present invention has been proposed to solve the above problems, and an object of the present invention is to provide a method and apparatus for increasing the security of the secure storage device by storing the encryption key in a different location for each product.

상기 목적을 달성하기 위하여 본 발명의 암호키 저장 방법은, 상기 플래시 메모리의 배드 블록 정보를 검색 및 수집하는 단계; 상기 배드 블록 정보를 이용하여 상기 암호키가 저장되는 암호키 주소를 생성하는 단계; 및 상기 암호키 주소에 따라 상기 암호키를 상기 플래시 메모리에 프로그램하는 단계를 포함한다. In order to achieve the above object, the encryption key storage method of the present invention includes: searching and collecting bad block information of the flash memory; Generating an encryption key address in which the encryption key is stored using the bad block information; And programming the encryption key into the flash memory according to the encryption key address.

바람직한 실시예에 있어서, 상기 플래시 메모리는 제 1 플래시 메모리와 제 2 플래시 메모리를 포함한다.In a preferred embodiment, the flash memory comprises a first flash memory and a second flash memory.

바람직한 실시예에 있어서, 상기 제 1 플래시 메모리는 노어형 플래시 메모리인 것을 특징으로 한다.In a preferred embodiment, the first flash memory is a NOR flash memory.

바람직한 실시예에 있어서, 상기 제 2 플래시 메모리는 낸드형 플래시 메모리인 것을 특징으로 한다. In a preferred embodiment, the second flash memory is NAND flash memory.

바람직한 실시예에 있어서, 상기 암호키 주소는 상기 암호키를 상기 제 1 플래시 메모리에 저장하기 위한 주소인 것을 특징으로 한다.In an exemplary embodiment, the encryption key address is an address for storing the encryption key in the first flash memory.

바람직한 실시예에 있어서, 상기 배드 블록 정보는 상기 제 2 플래시 메모리의 배드 블록 주소 또는 배드 블록 개수에 대한 정보를 포함한다. In a preferred embodiment, the bad block information includes information on the bad block address or the number of bad blocks of the second flash memory.

바람직한 실시예에 있어서, 상기 암호키 주소는 상기 배드 블록 정보를 참조 하여 시큐리티 엔진이 암호화 알고리즘을 통하여 생성한 랜덤화된 데이터인 것을 특징으로 한다. In an exemplary embodiment, the encryption key address is randomized data generated by a security engine through an encryption algorithm with reference to the bad block information.

바람직한 실시예에 있어서, 상기 암호키 주소를 상기 플래시 메모리에 저장하는 단계를 더 포함한다.In a preferred embodiment, the method further comprises storing the encryption key address in the flash memory.

상기 목적을 달성하기 위하여 본 발명의 보안 플래시 메모리 시스템은, 암호키가 저장되는 제 1 플래시 메모리; 복수의 배드 블록들을 포함하는 제 2 플래시 메모리; 상기 제 2 플래시 메모리의 배드 블록 정보를 참조하여 상기 암호키가 저장되는 암호키 주소를 생성하는 시큐리티 엔진; 및 상기 제 2 플래시 메모리를 검색하여 상기 배드 블록 정보를 상기 시큐리티 엔진에 제공하고, 상기 암호키 주소에 따라 상기 암호키를 저장하도록 상기 제 1 플래시 메모리 및 상기 제 2 플래시 메모리를 제어하는 중앙처리장치를 포함한다.In order to achieve the above object, the secure flash memory system of the present invention includes a first flash memory in which an encryption key is stored; A second flash memory including a plurality of bad blocks; A security engine generating an encryption key address in which the encryption key is stored by referring to bad block information of the second flash memory; And a central processing unit searching for the second flash memory to provide the bad block information to the security engine, and to control the first flash memory and the second flash memory to store the encryption key according to the encryption key address. It includes.

바람직한 실시예에 있어서, 상기 제 1 플래시 메모리는 노어형 플래시 메모리인 것을 특징으로 한다.In a preferred embodiment, the first flash memory is a NOR flash memory.

바람직한 실시예에 있어서, 상기 제 2 플래시 메모리는 낸드형 플래시 메모리인 것을 특징으로 한다.In a preferred embodiment, the second flash memory is NAND flash memory.

바람직한 실시예에 있어서, 상기 배드 블록 정보는 상기 제 2 플래시 메모리의 배드 블록 주소 또는 배드 블록 개수에 대한 정보를 포함한다.In a preferred embodiment, the bad block information includes information on the bad block address or the number of bad blocks of the second flash memory.

바람직한 실시예에 있어서, 상기 암호키 주소는 상기 시큐리티 엔진에서 Data Encryption Standard(DES), Rivest-Shamir-Adleman(RSA), 그리고 Advanced Encryption Standard(AES) 등의 암호화 알고리즘들 중 어느 하나에 따라 생성된다.In a preferred embodiment, the encryption key address is generated in accordance with any one of encryption algorithms such as Data Encryption Standard (DES), Rivest-Shamir-Adleman (RSA), and Advanced Encryption Standard (AES) in the security engine. .

바람직한 실시예에 있어서, 상기 암호키는 제 1 플래시 메모리에 저장된다.In a preferred embodiment, the encryption key is stored in the first flash memory.

바람직한 실시예에 있어서, 상기 암호키 주소는 제 2 플래시 메모리에 저장된다. In a preferred embodiment, the cryptographic key address is stored in a second flash memory.

바람직한 실시예에 있어서, 상기 제 2 플래시 메모리와의 인터페이싱을 위한 플래시 컨트롤러를 더 포함한다.In a preferred embodiment, further comprising a flash controller for interfacing with the second flash memory.

이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부된 도면을 참조하여 설명하기로 한다. 바람직한 설명을 위하여 SecureMMC(Multi Media Card) 장치를 이용하여 설명하기로 한다. DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described with reference to the accompanying drawings so that those skilled in the art may easily implement the technical idea of the present invention. do. For a preferable description, it will be described using a Secure MMC (Multi Media Card) device.

도 1은 본 발명의 바람직한 구성도를 보여주는 블록도이다. 도 1을 참조하면, 호스트(100)는 컴퓨터 장치, 휴대용 전화기, 디지털 카메라 등의 장치를 포함한다. 호스트(100)는 보안 저장 장치(120)와 프로토콜을 동기화한 후 상호 인터페이스를 경유하여 통신을 개시한다. 호스트(100)와 보안 저장 장치 사이에 사용되는 프로토콜은 SD, MMC 카드, 하드디스크(HDD), USB, SATA, 그리고 PATA 등과 같이 그 응용 목적에 따라 달라진다.1 is a block diagram showing a preferred configuration of the present invention. Referring to FIG. 1, the host 100 includes a device such as a computer device, a portable telephone, a digital camera, and the like. The host 100 synchronizes the protocol with the secure storage device 120 and then initiates communication via the mutual interface. The protocol used between the host 100 and the secure storage device depends on its application purpose, such as SD, MMC card, hard disk (HDD), USB, SATA, and PATA.

보안 저장 장치(120)는 보안 저장 장치를 구동하기 위하여, 호스트 인터페이스(200), CPU(220), 시큐리티 엔진(240), 제 1 플래시 메모리(260), 플래시 콘트롤러(280), 메인 메모리(300)와 제 2 플래시 메모리(320)로 구성된다.The secure storage device 120 may include a host interface 200, a CPU 220, a security engine 240, a first flash memory 260, a flash controller 280, and a main memory 300 to drive the secure storage device. ) And the second flash memory 320.

호스트 인터페이스(200)는 호스트(100)의 요청에 응답하여 보안 저장 장치(120)와 호스트(100) 간 통신을 위한 프로토콜을 매칭시킨다. The host interface 200 matches a protocol for communication between the secure storage device 120 and the host 100 in response to a request from the host 100.

CPU(220)는 호스트(100)의 요청에 응답하여, 보안 저장 장치(120)를 구동하기 위해 각각의 블럭(예를 들면, 호스트 인터페이스(200), 제 1 플래시 메모리(260), 메인 메모리(300), 시큐리티 엔진(240), 플래시 콘트롤러(280), 그리고 제 2 플래시 메모리(320))을 제어한다. CPU(220)는 메인 메모리(300)의 FTL(이하 FTL이라 함)(flash translation layer) 소프트웨어가 구동될 때 플래시 메모리의 배드 블록 정보를 수집하도록 제어한다. In response to a request from the host 100, the CPU 220 may drive each block (eg, the host interface 200, the first flash memory 260, and the main memory) to drive the secure storage device 120. 300, the security engine 240, the flash controller 280, and the second flash memory 320. The CPU 220 controls to collect bad block information of the flash memory when the FTL (hereinafter referred to as FTL) software of the main memory 300 is driven.

시큐리티 엔진(240)은 CPU(220)의 제어에 따라 제공되는 데이터를 암호화 또는 복호화한다. 일반적으로, 개인키를 사용하여 데이터를 암호화하는 Data Encryption Standard(DES)와, 보편적으로 사용되는 암호화 알고리즘으로서 Rivest-Shamir-Adleman(RSA)와, 미국 표준 암호 알고리즘인 Advanced Encryption Standard(AES) 등의 알고리즘을 선택적으로 수행한다. FTL에 따라 제공되는 제 2 플래시 메모리(320)의 배드 블록 정보는 시큐리티 엔진(240)에서 다음과 같은 수학식에 따라 랜덤한 주소를 갖는 암호키 주소로 생성된다. The security engine 240 encrypts or decrypts data provided under the control of the CPU 220. Generally, Data Encryption Standard (DES) encrypts data using a private key, Rivest-Shamir-Adleman (RSA) as a commonly used encryption algorithm, and Advanced Encryption Standard (AES), a US standard encryption algorithm. Optionally run the algorithm. The bad block information of the second flash memory 320 provided according to the FTL is generated by the security engine 240 as an encryption key address having a random address according to the following equation.

Figure 112007035793772-pat00002
Figure 112007035793772-pat00002

제 2 플래시 메모리(320)의 배드 블록 주소는 시큐리티 엔진(240)에서 구동되는 암호키 주소 생성 알고리즘을 통해 암호키를 저장하기 위한 암호키 주소로 생성된다. The bad block address of the second flash memory 320 is generated as an encryption key address for storing the encryption key through an encryption key address generation algorithm driven by the security engine 240.

제 1 플래시 메모리(260)는 호스트(100)로부터 제공된 데이터를 저장한다. 제 1 플래시 메모리(260)는 본 발명에 있어서 노어 플래시 메모리로 구성될 수 있 으며, 암호키가 저장될 공간을 갖는다. 암호키는 가비지(garbage) 데이터와 혼합되어 저장된다. The first flash memory 260 stores data provided from the host 100. The first flash memory 260 may be configured as a NOR flash memory in the present invention, and has a space for storing an encryption key. The encryption key is stored mixed with garbage data.

플래시 콘트롤러(280)는 제 2 플래시 메모리(320)와의 데이터 교환을 위한 제어 동작을 수행한다. The flash controller 280 performs a control operation for exchanging data with the second flash memory 320.

메인 메모리(300)는 코드(code) 또는 어드레스 매핑 테이블, FTL 프로그램, 펌웨어(frimware) 등과 같은 보안 저장 장치(120)를 운용하기 위한 정보가 저장된다. 메인 메모리(300)는 휘발성 메모리인 SRAM, DRAM으로 구성된다. 그리고 메인 메모리(300)은 제 1 플래시 메모리(260)로부터 독출되는 암호키를 전달받아 임시로 저장한다.The main memory 300 stores information for operating the secure storage device 120 such as a code or an address mapping table, an FTL program, firmware, or the like. The main memory 300 is composed of SRAM and DRAM, which are volatile memories. The main memory 300 receives the encryption key read from the first flash memory 260 and temporarily stores the encryption key.

제 2 플래시 메모리(320)는 호스트(100)의 읽기/쓰기 요청에 응답하여 암호키 주소와 일반 데이터를 저장한다. 제 2 플래시 메모리(320)는 본 발명에 있어서 낸드 플래시 메모리로 구성될 수 있으며, RAdd 함수로부터 생성된 암호키 주소를 제 2 플래시 메모리(320)에 저장한다. The second flash memory 320 stores an encryption key address and general data in response to a read / write request of the host 100. The second flash memory 320 may be configured as a NAND flash memory in the present invention, and stores the encryption key address generated from the R Add function in the second flash memory 320.

요약하면, 보안 저장 장치(120)는 FTL 프로그램에 따라, 플래시 메모리의 고유한 특성인 배드 블록 정보를 수집한다. 수집된 배드 블록 정보에 따라 시큐리티 엔진(240)의 함수 RAdd로부터 암호키 주소를 생성한다. RAdd 함수로부터 생성된 암호키 주소에 따라 암호키는 제 1 플래시 메모리(260)의 특정 영역에 저장된다. 암호키가 저장되지 않은 제 1 플래시 메모리(260)의 나머지 공간은 가비지 데이터가 저장된다.In summary, the secure storage device 120 collects bad block information, which is a unique characteristic of the flash memory, according to the FTL program. An encryption key address is generated from the function R Add of the security engine 240 according to the collected bad block information. The encryption key is stored in a specific area of the first flash memory 260 according to the encryption key address generated from the R Add function. Garbage data is stored in the remaining space of the first flash memory 260 in which the encryption key is not stored.

도 2는 본 발명에 따른 제 1 플래시 메모리(260)의 데이터 영역을 보여주는 블록도이다. 도 2를 참조하면, 제 1 플래시 메모리(260)는 암호키 저장 공간(400)과 코드 에어리어(420)를 포함한다. 암호키 저장 공간(400)은 암호키와 가비지로 구성되는 암호키 저장 영역을 구비한다. 예를 들어, RAdd 함수로부터 생성된 암호키 주소가 3개라고 가정하면, 도 2에 도시된 바와 같이 암호키 "Key 0"은 함수 R_Add로부터 랜덤하게 생성된 암호키 주소에 대응하여 주소 "1"번에 대응하는 영역에 저장된다. 암호키 "Key 1"는 함수 RAdd로부터 랜덤하게 생성된 암호키 주소에 대응하여 주소 "5"번에 위치하고 있다. 암호키 "Key M"은 함수 RAdd로부터 랜덤하게 생성된 암호키 주소에 대응하여 주소 "N"번에 저장된다. 나머지 주소들에는 가비지 데이터들이 입력된다. 시큐리티 엔진(240)의 RAdd 함수로부터 생성되는 랜덤 암호키 주소는 일괄적이고 규칙성을 갖지 않는다. 이로 인해, 각각의 제품마다 다른 특성을 갖는 배드 블록 정보를 이용하면 제품마다 서로 다른 어드레스에 암호키를 저장하기 때문에 보안성을 높일 수 있다. 암호키의 개수는 제품 개발의 목적에 따라 변경될 수 있다. 2 is a block diagram illustrating a data area of the first flash memory 260 according to the present invention. Referring to FIG. 2, the first flash memory 260 includes an encryption key storage space 400 and a code area 420. The encryption key storage space 400 includes an encryption key storage area consisting of an encryption key and garbage. For example, assuming that there are three encryption key addresses generated from the R Add function, as shown in FIG. 2, the encryption key "Key 0" corresponds to the encryption key address randomly generated from the function R_Add, and the address "1". "Is stored in the area corresponding to the times. The encryption key "Key 1" is located at address "5" corresponding to the encryption key address randomly generated from the function R Add . The encryption key "Key M" is stored at address "N" corresponding to the encryption key address randomly generated from the function R Add . Garbage data is input to the remaining addresses. The random cryptographic key address generated from the R Add function of the security engine 240 is batch and non-regular. For this reason, if the bad block information having different characteristics for each product is used, encryption keys are stored at different addresses for each product, thereby improving security. The number of encryption keys can be changed according to the purpose of product development.

코드 에어리어(code area)(420)는 보안 저장 장치(120)를 구동하기 위한 코드 또는 펌웨어(firmware) 소프트웨어를 저장한다. Code area 420 stores code or firmware software for driving secure storage device 120.

도 3은 본 발명의 일실시예를 보여주는 순서도이다. 보안 저장 장치(120)는 호스트(100)와 호환성을 위해서 디스크 에뮬레이션 소프트웨어(disk emulation software)라 불리는 추가적인 소프트웨어를 필요로 한다. 통신 동작 동안, 호스 트(100)와 보안 저장 장치(120) 사이의 호환성은 플래시 변환 레이어와 같은 내장 시스템을 운영함으로써 달성될 수 있다. 다시 말해서, 호스트(100)는 보안 저장 장치(120)를 하드 드스크와 같이 인식하여 하드 디스크와 동일한 방식으로 접속한다. 도 3를 참조하면, 보안 저장 장치(120)에 전원이 인가되면, FTL 프로그램이 실행된다(S10). FTL 프로그램이 실행되면, 낸드 플래시 메모리의 구조적인 특성인 배드 블록의 위치, 주소 및 개수 등의 배드 블록 정보를 검색한다(S11). 검색된 배드 블록 정보는 시큐리티 엔진(240)으로 전송된다. 시큐리티 엔진(240)은 암호 알고리즘(예를 들면, Rivest-Shamir-Adleman(RSA))로부터 배드 블록 정보를 이용해 암호키 주소로 생성한다(S12). 암호키는 암호 알고리즘으로 생성된 암호키 주소에 따라 제 1 플래시 메모리(260)에 프로그램된다(S13). 그리고 제 2 플래시 메모리(320)에는 암호 알고리즘으로 생성된 암호키 주소가 저장된다(S14). 플래시 메모리의 특성상 보안 저장 장치(120) 전원이 차단되어도 제 2 플래시(320)에 프로그램된 암호키 주소는 삭제되지 않고 유지된다. 3 is a flowchart showing one embodiment of the present invention. The secure storage device 120 requires additional software called disk emulation software for compatibility with the host 100. During the communication operation, compatibility between the host 100 and the secure storage device 120 may be achieved by operating an embedded system such as a flash translation layer. In other words, the host 100 recognizes the secure storage device 120 as a hard disk and connects the same in the same manner as the hard disk. Referring to FIG. 3, when power is applied to the secure storage device 120, an FTL program is executed (S10). When the FTL program is executed, bad block information such as the location, address, and number of bad blocks, which are structural characteristics of the NAND flash memory, is retrieved (S11). The retrieved bad block information is transmitted to the security engine 240. The security engine 240 generates an encryption key address using bad block information from an encryption algorithm (for example, Rivest-Shamir-Adleman (RSA)) (S12). The encryption key is programmed in the first flash memory 260 according to the encryption key address generated by the encryption algorithm (S13). In operation S14, an encryption key address generated by an encryption algorithm is stored in the second flash memory 320. Due to the characteristics of the flash memory, the encryption key address programmed in the second flash 320 is maintained without being deleted even when the secure storage device 120 is powered off.

도 4는 도 3의 실시예에 따라 SecureMMC 카드의 구동예를 보여주는 순서도이다. 도 4는 실제 사용자 환경에서 실시된다. 보안 저장 장치(120)에 외부로부터 전원이 인가되면, FTL 프로그램이 실행된다(S20). 제 2 플래시(320)로부터 암호키 주소가 독출되어 메인 메모리(300)에 로드(load)된다(S21). 독출된 암호키 주소에 따라 제 1 플래시 메모리(260)에 저장되어 있는 암호키를 독출한다(S22). 메인 메모리(300)로부터 독출된 암호키에 따라 암호키를 검증 후 보안 저장 장치(120)가 구동된다(S23). 4 is a flowchart showing an example of driving a SecureMMC card according to the embodiment of FIG. 4 is implemented in a real user environment. When power is applied to the secure storage device 120 from the outside, the FTL program is executed (S20). The encryption key address is read from the second flash 320 and loaded into the main memory 300 (S21). The encryption key stored in the first flash memory 260 is read according to the read encryption key address (S22). After verifying the encryption key according to the encryption key read from the main memory 300, the secure storage device 120 is driven (S23).

도 5는 본 발명에 따른 보안 플래시 저장 장치에 암호키를 저장하기 위한 방법의 다른 실시예를 보여주는 순서도이다. 도 5를 참조하면, 보안 저장 장치(120)에 전원이 인가되면, FTL 프로그램이 실행된다(S30). FTL 프로그램이 실행되면, 낸드 플래시 메모리의 구조적인 특성인 배드 블록의 위치, 주소 및 개수 등의 배드 블록 정보를 검색한다(S31). 검색된 배드 블록 정보는 시큐리티 엔진(240)으로 전송된다. 시큐리티 엔진(240)으로 전송된 배드 블록 정보는 암호 알고리즘(예를 들면, Rivest-Shamir-Adleman(RSA))에 의하여 암호키 주소로 생성된다(S32). 암호키는 암호키 주소에 따라 제 1 플래시 메모리(260)에 프로그램된다(S33). 도 3에 서술된 제 1 실시예와는 달리 본 발명의 제 2 실시예에 따르면, 제 2 플래시 메모리(320)에는 암호 알고리즘으로 생성된 암호키 주소가 저장되지 않는다. 따라서, 보안 저장 장치(120)의 전원이 차단되면 메인 메모리(300) 상에서 존재하는 암호키 주소 정보는 삭제된다. 5 is a flowchart illustrating another embodiment of a method for storing an encryption key in a secure flash storage device according to the present invention. Referring to FIG. 5, when power is applied to the secure storage device 120, an FTL program is executed (S30). When the FTL program is executed, bad block information such as the location, address, and number of bad blocks, which are structural characteristics of the NAND flash memory, is retrieved (S31). The retrieved bad block information is transmitted to the security engine 240. The bad block information transmitted to the security engine 240 is generated as an encryption key address by an encryption algorithm (for example, Rivest-Shamir-Adleman (RSA)) (S32). The encryption key is programmed in the first flash memory 260 according to the encryption key address (S33). Unlike the first embodiment described in FIG. 3, according to the second embodiment of the present invention, the encryption key address generated by the encryption algorithm is not stored in the second flash memory 320. Therefore, when the power of the secure storage device 120 is cut off, the encryption key address information existing on the main memory 300 is deleted.

도 6은 도 5의 실시예에 따른 SecureMMC 카드의 구동예를 보여주는 순서도이다. 도 6은 실제 사용자 환경에서 실시된다. 보안 저장 장치(120)에 전원이 인가되면, FTL 프로그램이 실행된다(S40). FTL 프로그램이 실행되면, 낸드 플래시 메모리의 구조적인 특성인 배드 블록의 위치, 주소 및 개수 등의 배드 블록 정보를 검색한다(S41). 검색된 배드 블록 정보는 암호화를 하기 위해 시큐리티 엔진(240)으로 전송된다. 시큐리티 엔진(240)으로 전송된 배드 블록 정보는 암호 알고리즘(예를 들면, Rivest-Shamir-Adleman(RSA))에 의하여 암호키 주소로 생성된다(S42). 암호키 주소에 따라 제 1 플래시 메모리(260)로부터 암호키를 독출한다(S43). 제 1 플 래시 메모리로부터 독출된 암호키에 따라 보안 저장 장치(120)가 구동된다(S44). 6 is a flowchart showing an example of driving a SecureMMC card according to the embodiment of FIG. 6 is implemented in a real user environment. When power is applied to the secure storage device 120, the FTL program is executed (S40). When the FTL program is executed, bad block information such as the location, address, and number of bad blocks, which are structural characteristics of the NAND flash memory, is retrieved (S41). The retrieved bad block information is transmitted to the security engine 240 for encryption. The bad block information transmitted to the security engine 240 is generated as an encryption key address by an encryption algorithm (for example, Rivest-Shamir-Adleman (RSA)) (S42). The encryption key is read from the first flash memory 260 according to the encryption key address (S43). The secure storage device 120 is driven according to the encryption key read from the first flash memory (S44).

요약하면, 설명된 제 1 실시예에 따르면 배드 블록 정보로 생성된 암호키 주소는 제 2 플래시 메모리(320)에 프로그램된다. 따라서, 보안 저장 장치(120)의 전원이 차단되어도 저장된 암호키 주소는 삭제되지 않는다. 반면에, 도 5와 도 6에서 설명된 제 2 실시예에 따르면 배드 블록 정보로 생성된 암호키 주소는 제 2 플래시 메모리(320)에 저장되지 않고 메인 메모리(300) 상에서 구동된다. 보안 저장 장치(120)의 전원이 차단되면 저장된 암호키 주소는 삭제되며 보안 저장 장치(120)에 전원이 인가될 때마다 암호키 주소를 생성한다. In summary, according to the first embodiment described, the encryption key address generated with the bad block information is programmed in the second flash memory 320. Therefore, even if the power of the secure storage device 120 is cut off, the stored encryption key address is not deleted. On the other hand, according to the second embodiment described with reference to FIGS. 5 and 6, the encryption key address generated with the bad block information is driven on the main memory 300 without being stored in the second flash memory 320. When the power of the secure storage device 120 is cut off, the stored encryption key address is deleted and generates an encryption key address whenever power is applied to the secure storage device 120.

한편, 본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.On the other hand, in the detailed description of the present invention has been described with respect to specific embodiments, various modifications are of course possible without departing from the scope of the invention. Therefore, the scope of the present invention should not be limited to the above-described embodiments, but should be defined by the equivalents of the claims of the present invention as well as the following claims.

상술한 바와 같이 암호키의 주소가 낸드 플래시 메모리의 구조적 특성인 배드 블록 정보를 사용하여 생성된다. 배드 블록 정보를 암호키 주소로 사용하면, 암호키는 메모리 상에서 랜덤한 위치에 프로그램된다. 따라서, 외부의 해킹이나, 침입에 쉽게 노출되기 어렵다. 또한, 하나의 보안키 정보를 획득하더라도 동일 제품군의 다른 제품에 대해서 해킹 되기가 어렵다.As described above, the address of the encryption key is generated using bad block information, which is a structural characteristic of the NAND flash memory. Using bad block information as an encryption key address, the encryption key is programmed at a random location in memory. Therefore, it is hard to be easily exposed to external hacking or intrusion. Also, even if one piece of security key information is acquired, it is difficult to be hacked into other products of the same product family.

Claims (16)

메모리 시스템의 암호키 저장 방법에 있어서:A method for storing encryption keys in a memory system: 제 1 메모리 장치의 배드 블록의 수 또는 위치 정보를 검색하는 단계; 및Retrieving the number or location information of the bad blocks of the first memory device; And 상기 배드 블록의 수 또는 위치 정보를 참조하여 상기 암호키를 저장하기 위한 제 2 메모리 장치 내의 암호키 주소를 생성하는 단계를 포함하되,Generating an encryption key address in a second memory device for storing the encryption key with reference to the number or location information of the bad blocks; 상기 암호키 주소는 상기 배드 블록의 수 또는 위치 정보로부터 암호화 알고리즘을 통하여 랜덤화된 데이터로 생성되는 암호키 저장 방법.And the encryption key address is generated as data randomized through an encryption algorithm from the number or location information of the bad blocks. 제 1 항에 있어서,The method of claim 1, 상기 암호키 주소에 따라 상기 암호키를 상기 제 2 메모리 장치에 기입하는 단계를 더 포함하는 암호키 저장 방법.And writing the encryption key to the second memory device according to the encryption key address. 제 2 항에 있어서,The method of claim 2, 상기 암호키는 상기 암호키 주소에 따라 상기 제 2 메모리 장치의 복수 영역에 불연속적으로 저장되는 암호키 저장 방법.And the encryption key is discontinuously stored in a plurality of areas of the second memory device according to the encryption key address. 제 3 항에 있어서,The method of claim 3, wherein 상기 제 2 메모리 장치에서 상기 불연속적인 복수 영역들 사이에 대응하는 메모리 영역들에는 가비지 데이터가 기입되는 암호키 저장 방법. And in the second memory device, garbage data is written in memory areas corresponding to the plurality of discrete areas. 제 1 항에 있어서, The method of claim 1, 상기 제 1 메모리 장치는 낸드형 플래시 메모리 장치인 것을 특징으로 하는 암호키 저장 방법.And the first memory device is a NAND flash memory device. 제 5 항에 있어서,The method of claim 5, wherein 상기 제 2 메모리 장치는 노어형 플래시 메모리 장치인 것을 특징으로 하는 암호키 저장 방법.And the second memory device is a NOR flash memory device. 제 1 항에 있어서,The method of claim 1, 상기 암호키 주소를 상기 제 1 메모리 장치 또는 상기 제 2 메모리 장치에 저장하는 단계를 더 포함하는 암호키 저장 방법.And storing the encryption key address in the first memory device or the second memory device. 삭제delete 암호키가 저장되는 제 1 플래시 메모리;A first flash memory in which an encryption key is stored; 복수의 배드 블록들을 포함하는 제 2 플래시 메모리;A second flash memory including a plurality of bad blocks; 상기 제 2 플래시 메모리의 배드 블록 정보를 참조하여 상기 암호키가 저장되는 암호키 주소를 생성하는 시큐리티 엔진; 및A security engine generating an encryption key address in which the encryption key is stored by referring to bad block information of the second flash memory; And 상기 제 2 플래시 메모리를 검색하여 상기 배드 블록 정보를 상기 시큐리티 엔진에 제공하고, 상기 암호키 주소에 따라 상기 암호키를 저장하도록 상기 제 1 플래시 메모리 및 상기 제 2 플래시 메모리를 제어하는 중앙처리장치를 포함하는 보안 플래시 메모리 시스템.A central processing unit for searching the second flash memory to provide the bad block information to the security engine, and to control the first flash memory and the second flash memory to store the encryption key according to the encryption key address. Including a secure flash memory system. 제 9 항에 있어서,The method of claim 9, 상기 제 1 플래시 메모리는 노어형 플래시 메모리인 것을 특징으로 하는 보안 플래시 메모리 시스템.And the first flash memory is a NOR flash memory. 제 10 항에 있어서,The method of claim 10, 상기 제 2 플래시 메모리는 낸드형 플래시 메모리인 것을 특징으로 하는 보안 플래시 메모리 시스템.And said second flash memory is a NAND flash memory. 제 11 항에 있어서,The method of claim 11, 상기 배드 블록 정보는 상기 제 2 플래시 메모리의 배드 블록 주소 또는 배드 블록 개수에 대한 정보를 포함하는 보안 플래시 메모리 시스템.The bad block information includes information on the bad block address or the number of bad blocks of the second flash memory. 제 9 항에 있어서,The method of claim 9, 상기 암호키 주소는 상기 시큐리티 엔진에서 Data Encryption Standard(DES), Rivest-Shamir-Adleman(RSA), 그리고 Advanced Encryption Standard(AES) 등의 암호화 알고리즘들 중 어느 하나에 따라 생성되는 보안 플래시 메모리 시스템.The encryption key address is generated by the security engine according to any one of encryption algorithms such as Data Encryption Standard (DES), Rivest-Shamir-Adleman (RSA), and Advanced Encryption Standard (AES). 제 9 항에 있어서,The method of claim 9, 상기 암호키는 제 1 플래시 메모리에 저장되는 것을 특징으로 하는 보안 플래시 메모리 시스템.And the encryption key is stored in a first flash memory. 제 14 항에 있어서,The method of claim 14, 상기 암호키 주소는 제 2 플래시 메모리에 저장되는 것을 특징으로 하는 보안 플래시 메모리 시스템.And the encryption key address is stored in a second flash memory. 제 9 항에 있어서,The method of claim 9, 상기 제 2 플래시 메모리와의 인터페이싱을 위한 플래시 컨트롤러를 더 포함하는 보안 플래시 메모리 시스템.And a flash controller for interfacing with the second flash memory.
KR1020070047146A 2007-05-15 2007-05-15 A method and device to store secret key in flash memory KR100857760B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070047146A KR100857760B1 (en) 2007-05-15 2007-05-15 A method and device to store secret key in flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070047146A KR100857760B1 (en) 2007-05-15 2007-05-15 A method and device to store secret key in flash memory

Publications (1)

Publication Number Publication Date
KR100857760B1 true KR100857760B1 (en) 2008-09-10

Family

ID=40022859

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070047146A KR100857760B1 (en) 2007-05-15 2007-05-15 A method and device to store secret key in flash memory

Country Status (1)

Country Link
KR (1) KR100857760B1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9258111B2 (en) 2011-12-16 2016-02-09 Samsung Electronics Co., Ltd. Memory device which protects secure data, method of operating the memory device, and method of generating authentication information
US10438684B2 (en) 2014-08-07 2019-10-08 Samsung Electronics Co., Ltd. Memory device, memory system, and method of operating the memory system
US11716205B2 (en) 2020-05-19 2023-08-01 Samsung Electronics Co., Ltd. Nonvolatile memory device storing a public key and a secret key, and an electronic device comprising the same

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000339417A (en) 1999-05-25 2000-12-08 Nippon Telegr & Teleph Corp <Ntt> Ic card security managing method, ic card system and storage medium storing ic card security management program
KR20050088121A (en) * 2002-12-16 2005-09-01 마쯔시다덴기산교 가부시키가이샤 Memory device and electronic device using the same
KR20060026478A (en) * 2006-01-03 2006-03-23 노키아 코포레이션 Key storage administration
KR20070111254A (en) * 2006-05-17 2007-11-21 삼성전자주식회사 Key control system and persistent storage control method using file

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000339417A (en) 1999-05-25 2000-12-08 Nippon Telegr & Teleph Corp <Ntt> Ic card security managing method, ic card system and storage medium storing ic card security management program
KR20050088121A (en) * 2002-12-16 2005-09-01 마쯔시다덴기산교 가부시키가이샤 Memory device and electronic device using the same
KR20060026478A (en) * 2006-01-03 2006-03-23 노키아 코포레이션 Key storage administration
KR20070111254A (en) * 2006-05-17 2007-11-21 삼성전자주식회사 Key control system and persistent storage control method using file

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9258111B2 (en) 2011-12-16 2016-02-09 Samsung Electronics Co., Ltd. Memory device which protects secure data, method of operating the memory device, and method of generating authentication information
US10438684B2 (en) 2014-08-07 2019-10-08 Samsung Electronics Co., Ltd. Memory device, memory system, and method of operating the memory system
US11716205B2 (en) 2020-05-19 2023-08-01 Samsung Electronics Co., Ltd. Nonvolatile memory device storing a public key and a secret key, and an electronic device comprising the same

Similar Documents

Publication Publication Date Title
JP5175856B2 (en) Protection and method of flash memory block in secure device system
US7269741B2 (en) Recording apparatus, medium, method, and related computer program
US8751795B2 (en) Secure transfer and tracking of data using removable non-volatile memory devices
EP2528004A1 (en) Secure removable media and method for managing the same
KR101081118B1 (en) System and method for securely restoring a program context from a shared memory
JP2013506910A (en) Write Once Read Many (WORM) Memory Device Authentication and Secure Ring
US20090187769A1 (en) System and method for an autonomous software protection device
US8533807B2 (en) Methods for accessing content based on a session ticket
US20180260151A1 (en) Data Storage Device and Operating Method Therefor
WO2006031030A1 (en) Method and apparatus for searching for rights objects stored in portable storage device using object identifier
JP2015172959A (en) Access method for flash memory
US20130073870A1 (en) Secure relocation of encrypted files
US9805186B2 (en) Hardware protection for encrypted strings and protection of security parameters
KR100857760B1 (en) A method and device to store secret key in flash memory
Chen et al. A cross-layer plausibly deniable encryption system for mobile devices
US20080114686A1 (en) Apparatuses for linking content with license
WO2010021975A2 (en) Memory device upgrade
US20190278891A1 (en) Method and apparatus for preventing and investigating software piracy
KR100562255B1 (en) Method for initializing key of security domain
US20080112562A1 (en) Methods for linking content with license
Choi et al. Password-based single-file encryption and secure data deletion for solid-state drive
KR20080088911A (en) New data storage card, interface device and method by memory&#39;s bad pattern
JP2011108151A (en) Security adaptor for external storage
Dolgunov Enabling optimal security for removable storage devices
JP2006190011A (en) Radio ic chip, decoding system using the same, program to be used for the same, recording medium with the program recorded thereon, decoding method, and installation method of program

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee