KR101070766B1 - Usb composite apparatus with memory function and hardware security module - Google Patents

Usb composite apparatus with memory function and hardware security module Download PDF

Info

Publication number
KR101070766B1
KR101070766B1 KR1020100008066A KR20100008066A KR101070766B1 KR 101070766 B1 KR101070766 B1 KR 101070766B1 KR 1020100008066 A KR1020100008066 A KR 1020100008066A KR 20100008066 A KR20100008066 A KR 20100008066A KR 101070766 B1 KR101070766 B1 KR 101070766B1
Authority
KR
South Korea
Prior art keywords
usb
block
data
host
function
Prior art date
Application number
KR1020100008066A
Other languages
Korean (ko)
Other versions
KR20110088245A (en
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 KR1020100008066A priority Critical patent/KR101070766B1/en
Publication of KR20110088245A publication Critical patent/KR20110088245A/en
Application granted granted Critical
Publication of KR101070766B1 publication Critical patent/KR101070766B1/en

Links

Images

Classifications

    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01FADDITIONAL WORK, SUCH AS EQUIPPING ROADS OR THE CONSTRUCTION OF PLATFORMS, HELICOPTER LANDING STAGES, SIGNS, SNOW FENCES, OR THE LIKE
    • E01F9/00Arrangement of road signs or traffic signals; Arrangements for enforcing caution
    • E01F9/60Upright bodies, e.g. marker posts or bollards; Supports for road signs
    • E01F9/604Upright bodies, e.g. marker posts or bollards; Supports for road signs specially adapted for particular signalling purposes, e.g. for indicating curves, road works or pedestrian crossings
    • E01F9/608Upright bodies, e.g. marker posts or bollards; Supports for road signs specially adapted for particular signalling purposes, e.g. for indicating curves, road works or pedestrian crossings for guiding, warning or controlling traffic, e.g. delineator posts or milestones
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01FADDITIONAL WORK, SUCH AS EQUIPPING ROADS OR THE CONSTRUCTION OF PLATFORMS, HELICOPTER LANDING STAGES, SIGNS, SNOW FENCES, OR THE LIKE
    • E01F15/00Safety arrangements for slowing, redirecting or stopping errant vehicles, e.g. guard posts or bollards; Arrangements for reducing damage to roadside structures due to vehicular impact
    • E01F15/003Individual devices arranged in spaced relationship, e.g. buffer bollards
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01FADDITIONAL WORK, SUCH AS EQUIPPING ROADS OR THE CONSTRUCTION OF PLATFORMS, HELICOPTER LANDING STAGES, SIGNS, SNOW FENCES, OR THE LIKE
    • E01F9/00Arrangement of road signs or traffic signals; Arrangements for enforcing caution
    • E01F9/60Upright bodies, e.g. marker posts or bollards; Supports for road signs
    • E01F9/604Upright bodies, e.g. marker posts or bollards; Supports for road signs specially adapted for particular signalling purposes, e.g. for indicating curves, road works or pedestrian crossings
    • E01F9/619Upright bodies, e.g. marker posts or bollards; Supports for road signs specially adapted for particular signalling purposes, e.g. for indicating curves, road works or pedestrian crossings with reflectors; with means for keeping reflectors clean
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01FADDITIONAL WORK, SUCH AS EQUIPPING ROADS OR THE CONSTRUCTION OF PLATFORMS, HELICOPTER LANDING STAGES, SIGNS, SNOW FENCES, OR THE LIKE
    • E01F9/00Arrangement of road signs or traffic signals; Arrangements for enforcing caution
    • E01F9/60Upright bodies, e.g. marker posts or bollards; Supports for road signs
    • E01F9/623Upright bodies, e.g. marker posts or bollards; Supports for road signs characterised by form or by structural features, e.g. for enabling displacement or deflection
    • E01F9/627Upright bodies, e.g. marker posts or bollards; Supports for road signs characterised by form or by structural features, e.g. for enabling displacement or deflection self-righting after deflection or displacement
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01FADDITIONAL WORK, SUCH AS EQUIPPING ROADS OR THE CONSTRUCTION OF PLATFORMS, HELICOPTER LANDING STAGES, SIGNS, SNOW FENCES, OR THE LIKE
    • E01F9/00Arrangement of road signs or traffic signals; Arrangements for enforcing caution
    • E01F9/60Upright bodies, e.g. marker posts or bollards; Supports for road signs
    • E01F9/658Upright bodies, e.g. marker posts or bollards; Supports for road signs characterised by means for fixing

Landscapes

  • Engineering & Computer Science (AREA)
  • Architecture (AREA)
  • Civil Engineering (AREA)
  • Structural Engineering (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 발명은 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치에 관한 것으로, USB 인터페이스 함수 블록에 포함된 디스크립터 정보 함수의 인터페이스 디스크립터에 USB 메모리 인터페이스 방식과 USB 보안토큰 인터페이스 방식이 정의되어 있고, 엔드포인트 디스크립터에 디스크립터 전송용 엔드포인트 0와 USB 메모리용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, USB 보안토큰용 데이터 읽기, 쓰기를 위한 2개의 엔드포이트, 및 USB 보안토큰이 호스트에 정상 접속된 상태를 알리는 인터럽트 신호를 전송하는 인터럽트 인 엔드포인트가 정의되어 있으며, 호스트에서 USB 메모리부로 전달되는 UFI 명령어는 USB 메모리부의 낸드 플래시 파일 시스템 블록으로 전달하여 USB 메모리부의 데이터 읽기/쓰기가 처리되게 하고, 호스트에서 USB 보안토큰부로 전달되는 APDU 명령어와 APDU 명령어의 처리 결과는 USB 메모리부의 GPIO 블록의 2개의 입출력 핀과 USB 보안토큰부의 GPIO 블록의 2개의 입출력 핀 사이의 2 Wire 통신 방식에 의해 USB 보안토큰부와 호스트 간에 주고받도록 하여 사용자 인증 혹은 보안 인증이 처리되게 하는 기능 선택부를 포함한다.
본 발명은 사용자가 금융거래시 사용자 인증, 기업이나 공공기관의 보안 인증에 사용할 뿐만 아니라, USB 메모리로도 편리하게 사용할 수 있다.
The present invention relates to a USB composite device having a memory function and a security token function, wherein a USB memory interface method and a USB security token interface method are defined in an interface descriptor of a descriptor information function included in a USB interface function block. Endpoint 0 for sending a descriptor to the descriptor, two endpoints for reading and writing data to the USB memory, two endpoints for reading and writing data to the USB security token, and two USB secure tokens are normally connected to the host. An endpoint, an interrupt that transmits an interrupt signal, is defined.UFI commands sent from the host to the USB memory section are transferred to the NAND flash file system block of the USB memory section so that data read / write of the USB memory section is processed. A delivered to USB Security Token The processing result of the PDU command and APDU command is exchanged between the USB security token unit and the host by a 2-wire communication method between two input / output pins of the GPIO block of the USB memory unit and two input / output pins of the GPIO block of the USB security token unit. It includes a function selection unit that allows authentication or security authentication to be processed.
The present invention can be used not only for user authentication during financial transactions, security authentication of corporations or public institutions, but also conveniently used as a USB memory.

Description

메모리 기능과 보안토큰 기능을 구비한 USB 복합장치{USB COMPOSITE APPARATUS WITH MEMORY FUNCTION AND HARDWARE SECURITY MODULE}USB COMPOSITE APPARATUS WITH MEMORY FUNCTION AND HARDWARE SECURITY MODULE}

본 발명은 USB(Universal Serial Bus) 복합장치에 관한 것이며, 더욱 상세히는 메모리 기능과 보안토큰(HSM; Hardware Security Module) 기능을 구비한 USB 복합장치에 관한 것이다.The present invention relates to a universal serial bus (USB) composite device, and more particularly, to a USB composite device having a memory function and a hardware security module (HSM) function.

보안토큰은 금융기관의 인터넷뱅킹 인증서를 담아 인터넷뱅킹을 통한 계좌이체 등의 금융거래시 사용자 인증에 사용되거나, 혹은 기업이나 공공기관의 보안 인증서를 담아 인트라넷이나 네트워크 로그인 장치로 사용된다.The security token is used for user authentication in financial transactions such as bank transfer through internet banking with the Internet banking certificate of the financial institution, or as an intranet or network login device with a security certificate of a company or a public institution.

상기와 같은 보안토큰은 주로 USB 타입, 예컨대 휴대 가능한 USB 메모리와 유사한 타입으로 개발이 되어 있어 휴대하기 간편하고 사용이 편리할 뿐만이 아니라, 특히 기기 내부에 CPU 및 암호 연산 장치가 있어 전자 서명 키 생성, 전자 서명 생성 및 검증 등이 가능하기 때문에 PC에 보안토큰이 연결되어 있더라도, 해킹에 의해서 보안토큰 내의 암호화된 개인 키를 절대 외부로 빼낼 수가 없으며, 그 안정성이 금융기관 등에서 인정되어 OTP(One Time Password)라고 하는 일회용 비밀번호 생성기와 더불어 1등급 보안매체로 널리 이용되고 있다.Such security token is mainly developed as a USB type, for example, a type similar to a portable USB memory, so that it is not only easy to carry and easy to use, but also has a CPU and a cryptographic device inside the device to generate an electronic signature key, Since it is possible to generate and verify electronic signatures, even if a security token is connected to the PC, the encrypted private key in the security token can never be taken out by hacking, and its stability is recognized by financial institutions, etc. In addition to the one-time password generator called), it is widely used as a first-class security medium.

도 1은 일반적인 USB 타입 보안토큰의 구성을 나타낸 블록도이다.1 is a block diagram showing the configuration of a general USB type security token.

도 1에 나타낸 바와 같이, 일반적인 USB 타입의 보안토큰(100)은 보안토큰 CPU(110)와 코드 메모리부(120) 및 데이터 메모리부(130)로 구성되며, 통상 이들(110,120,130)은 하나로 묶어 COB(CHIP ON BOARD) 형태로 되어 있다.As shown in FIG. 1, a general USB type security token 100 includes a security token CPU 110, a code memory unit 120, and a data memory unit 130. In general, these (110, 120, 130) are combined into a COB. It is in the form of (CHIP ON BOARD).

상기 보안토큰 CPU(110)는 메인 CPU(111)와 크립토(CRYPTO) CPU(112), USB 블록(113), GPIO(General Purpose Input/Output pins) 블록(114), 클록(CLOCK) 블록(115)을 포함하여 구성된다.The secure token CPU 110 may include a main CPU 111, a CRYPTO CPU 112, a USB block 113, a general purpose input / output pins (GPIO) block 114, and a clock block 115. It is configured to include).

상기 메인 CPU(111)는 USB 핀(111a)을 통해 호스트(HOST)와 통신하면서 보안토큰(100)의 전체적인 동작을 제어할 수 있는 레지스터(Register)들을 포함한다.The main CPU 111 includes registers for controlling the overall operation of the security token 100 while communicating with the host through the USB pin 111a.

상기 호스트는 PC를 포함한 각종 USB 호스트 기능이 추가된 제품을 의미한다.The host means a product to which various USB host functions including a PC are added.

상기 크립토 CPU(112)는 암복호화 관련 명령을 수행하는 레지스터들과 RSA(Rivest Shamir Adleman)(1024bit/2048bit), DES(Data Encryption Standard)/3-DES 등의 암복호화 관련 기능을 지원하는 크립토-코프로세서(Crypto-coprocessor)를 가지고 있다.The crypto CPU 112 supports cryptography-related functions such as registers for performing encryption-related instructions and RSA (Rivest Shamir Adleman) (1024bit / 2048bit) and DES (Data Encryption Standard) / 3-DES. It has a Crypto-coprocessor.

상기 USB 블록(113)은 보안토큰(100)과 호스트 간의 USB 통신을 위해 사용되는 컨트롤 레지스터인 엔드포인트(Endpoint)들을 포함한다.The USB block 113 includes endpoints, which are control registers used for USB communication between the secure token 100 and the host.

상기 엔드포인트는 USB 디바이스와 호스트가 USB 통신을 통해 데이터를 주고받는 논리 포트로서, 통상 하나의 USB 디바이스는 기본적으로 플러그 앤 플레이 방식으로 USB 디바이스의 디스크립터(Descriptor) 정보를 호스트로 전송하거나 호스트의 명령 신호를 받기 위해 최소한 하나의 디스크립터 전송용 엔드포인트(일명 '엔드포인트 0'라고 부름)을 가져야 하며, 특성에 따라 데이터의 읽기, 쓰기 등을 위해 2개 이상의 엔드포인트를 가질 수 있다. 또한, 이러한 엔드포인트는 데이터의 전송 방향에 따라 호스트로 보낼 데이터를 저장하는 벌크 인-엔드포인트(Bulk in-Endpoint)와 호스트로부터 수신한 데이터를 저장하는 벌크 아웃-엔드포인트(Bulk out-Endpoint)로 구분된다.The endpoint is a logical port through which the USB device and the host exchange data through USB communication. Typically, one USB device basically transmits descriptor information of the USB device to the host or commands of the host in a plug and play manner. You must have at least one endpoint for sending descriptors (called 'endpoint 0') to receive the signal, and depending on the characteristics, you can have more than one endpoint for reading, writing, and so on. In addition, these endpoints are bulk in-endpoints storing data to be sent to the host and bulk out-endpoints storing data received from the host, depending on the direction of data transmission. Separated by.

상기와 같은 보안토큰(100)은 일반적인 USB 디바이스와 달리 상기한 엔드포인트 0와 보안토큰(100)이 호스트에 정상 접속된 상태를 알리는 인터럽트 신호를 전송하는 인터럽트 인 엔드포인트(Interrupt IN Endpoint)를 가져야 하며, 특성에 따라 데이터의 읽기, 쓰기 등을 위해 2개 이상의 엔드포인트를 가질 수 있다Unlike the general USB device, the secure token 100 has an interrupt IN endpoint that transmits an interrupt signal indicating that the endpoint 0 and the secure token 100 are normally connected to the host. Depending on the characteristics, it can have more than two endpoints for reading and writing data.

상기한 디스크립터는 USB 디바이스가 무슨 역할을 하는지에 대한 정보를 가지고 있는 자료 구조로서, USB 디바이스가 호스트의 USB 포트에 삽입되면 가장 먼저 호스트로 전달되는 정보이며, 디바이스의 기존 정보를 가지고 있는 디바이스(Device) 디스크립터, 디바이스의 세부 정보를 가지고 있는 컨피규레이션(Configuration) 디스크립터, 인터페이스 방식을 정의하는 인터페이스 디스크립터, 엔드포인트 사용 방식을 정의하는 엔드포인트 디스크립터로 구분된다.The descriptor is a data structure that contains information about the role of a USB device. When the USB device is inserted into a USB port of a host, the descriptor is transmitted to the host first, and the device having existing information of the device (Device ) Descriptor, configuration descriptor with device details, interface descriptor that defines the interface method, and endpoint descriptor that defines how the endpoint is used.

참고로, 상기 USB 디바이스가 호스트의 USB 포트에 삽입된 후 가장 먼저 호스트와 디스크립터를 주고 받는 과정을 이뉴머레이션(Enumeration)이라고 하며, 호스트에서는 이러한 이뉴머레이션 과정이 완료되면 USB 디바이스를 등록하고, 이후부터 USB 디바이스는 디스크립터에서 설정한 벌크 인-엔드포인트와 벌크 아웃-엔드포인트를 통해 호스트와 데이터를 주고받게 된다. For reference, the first process of exchanging a descriptor with the host after the USB device is inserted into a USB port of the host is called enumeration. The host registers the USB device when such enumeration is completed. From then on, USB devices exchange data with the host through the bulk in-end and bulk out-end points set in the descriptor.

상기와 같은 보안토큰(100)은 일반적인 USB 디바이스와 달리 호스트에서 이뉴머레이션 과정을 완료하고 보안토큰(100)을 등록하면, 그 직후에 상기한 인터럽트 인 엔드포인트를 통해 호스트에게 정상 연결 상태를 알리는 인터럽트 신호를 전송하고, 이후부터 디스크립터에서 설정한 벌크 인-엔드포인트와 벌크 아웃-엔드포인트를 통해 호스트와 데이터를 주고받게 된다. Unlike the general USB device, the secure token 100 as described above completes the enumeration process on the host and registers the secure token 100. Then, the secure token 100 notifies the host of the normal connection state through the interrupt-in endpoint immediately after that. It sends an interrupt signal, and then exchanges data with the host through the bulk in-end and bulk out-end points set in the descriptor.

상기 GPIO 블록(114)은 보안토큰(100)의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 입출력 핀들을 포함하며, 일반적으로 USB 디바이스의 전원 공급 상태를 나타내는 LED의 ON/OFF 혹은 다른 장치와의 통신을 목적으로 사용될 수 있다.The GPIO block 114 includes input / output pins that can set input / output of another device according to a user's purpose of the security token 100, and generally, an ON / OFF or other device of an LED indicating a power supply state of a USB device. Can be used for communication with.

상기 클록 블록(115)은 상기 메인 CPU(111), 크립토 CPU(112), USB 블록(113), GPIO 블록(114)에 사용되는 클록 주파수를 따로 설정할 수 있는 레지스터들을 포함한다.The clock block 115 includes registers for separately setting clock frequencies used in the main CPU 111, the crypto CPU 112, the USB block 113, and the GPIO block 114.

상기 코드 메모리부(120)는 주로 보안토큰(100)의 기능을 구현하기 위한 소프트웨어들이 저장되어 있으며, 램(RAM)처럼 전원이 인가되어 있는 경우만 데이터가 저장되는 것이 아니라 한번 쓰기가 된 데이터는 전원이 없어지더라도 지워지지 않고 계속 저장되어 있는 롬(ROM)이다.The code memory unit 120 mainly stores software for implementing a function of the security token 100. The data is written once instead of being stored only when power is applied, such as RAM. It is a ROM that is not erased even if power is lost.

상기 코드 메모리부(120)는 상기 보안토큰 CPU(110)가 가지고 있는 레지스터들의 값을 기능별로 직접 제어하기 위하여 보안토큰 파일시스템 블록(121)과 USB 인터페이스 함수 블록(122), 암복호 함수 블록(123), GPIO 제어 함수 블록(124)으로 구분된다.The code memory unit 120 controls the secure token file system block 121, the USB interface function block 122, and the encryption / decryption function block to directly control the values of the registers of the secure token CPU 110 for each function. 123, GPIO control function block 124.

상기 보안토큰 파일시스템 블록(121)은 상기 데이터 메모리부(130)에 저장되는 데이터를 직접 관리하는 시스템 블록으로서, 일명 COS(Smart Card Operating System) 블록이라고 하며, USB 스마트 카드 클래스(USB SCC; Universal Serial Bus Smart Card Class)의 사양(Specification)에 맞게 호스트에서 스마트 카트 국제표준 프로토콜인 ISO 7816-4에 따른 APDU(Application Protocol Data Unit) 명령어들(예컨대, 개인 키 생성, 파일 읽기, 파일 쓰기, 암호화, 복호화, 서명, 서명 인증 등)이 상기 메인 CPU(111)를 통해 전달되었을 경우 구동된다. 통상, 호스트는 상기 데이터 메모리부(130)의 실제 주소를 알지 못하기 때문에 파일 인덱스(File Index) 값이나, 레코드 넘버(Record Number)를 이용하여 파일 읽기, 쓰기 동작의 APDU 명령어를 전달하게 된다. 이때, 상기 보안토큰 파일시스템 블록(121)은 전달받은 APDU 명령어에서 파일 인덱스나 레코드 넘버를 분석하여 상기 데이터 메모리부(130)의 실제 주소로 변경함으로써 실제 데이터에 접근하도록 하는 역할을 한다. 파일 읽기, 쓰기 동작의 APDU 명령어뿐만 아니라 보안토큰(100)과 관련된 ISO 7816-4에 해당하는 APDU 명령어 모두를 보안토큰 파일시스템 블록(121)이 처리를 하며, 암복호와 관련된 명령어(예컨대, 개인 키 생성, 암호화, 복호화, 서명, 서명 인증 등)가 전달되는 경우에는 상기 암복호 함수 블록(123)의 해당 암복호와 관련된 함수를 호출하여 상기 크립토 CPU(112)로 처리 요청하고, 상기 크립토 CPU(112)가 암복호와 관련된 명령을 수행한 결과를 수신하여 필요에 따라 호스트 측으로 전달하거나 상기 데이터 메모리부(130)에 저장한다.The secure token file system block 121 is a system block that directly manages data stored in the data memory unit 130, and is called a COS (Smart Card Operating System) block, and is a USB smart card class (USB SCC). Application Protocol Data Unit (APDU) commands (e.g., private key generation, file reading, file writing, encryption) in accordance with ISO 7816-4, the smart cart international standard protocol, on the host in accordance with the specifications of the Serial Bus Smart Card Class. , Decryption, signature, signature authentication, etc.) is driven when the main CPU 111 is transferred. In general, since the host does not know the actual address of the data memory unit 130, the host transmits an APDU command of a file read or write operation using a file index value or a record number. In this case, the secure token file system block 121 accesses the actual data by analyzing the file index or record number in the received APDU command and changing the file index or record number to the actual address of the data memory unit 130. All APDU commands corresponding to ISO 7816-4 related to the security token 100 as well as APDU commands for file read and write operations are processed by the security token file system block 121, and commands related to decryption and decryption (eg, personal Key generation, encryption, decryption, signing, signature authentication, etc.) is delivered, a function related to the corresponding decryption of the decryption function block 123 is called to request processing to the crypto CPU 112, and the crypto CPU Receiving a result of the 112 performing the command related to decryption and decryption, it is transmitted to the host side as needed or stored in the data memory unit 130.

상기 USB 인터페이스 함수 블록(122)은 상기 보안토큰 CPU(110)의 USB 블록(113)의 엔드포인트 레지스터들을 이용하여 데이터를 전달하는 기능과, USB 이뉴머레이션(Enumeration)에 필요한 디스크립터 정보를 가지는 함수를 포함하고 있다.The USB interface function block 122 has a function of transferring data using endpoint registers of the USB block 113 of the secure token CPU 110 and a function having descriptor information necessary for USB enumeration. It includes.

상기 암복호 함수 블록(123)은 호스트로부터 전달되는 APDU 명령어가 암복호와 관련된 명령어일 경우 상기 보안토큰 파일시스템 블록(121)에 의해 호출되는 암복호와 관련된 함수(예컨대, 개인 키 생성 함수, RSA, DES 등의 암복호화 함수, 서명 및 서명 인증 함수)를 포함한다.The decryption function block 123 is a function related to decryption called by the secure token file system block 121 when the APDU command transmitted from the host is a decryption related command (eg, a private key generation function, an RSA). , Encryption and decryption functions such as DES, signature and signature authentication functions).

상기 GPIO 제어 함수 블록(124)은 보안토큰(100)의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 상기 GPIO 블록(114)의 입출력 핀들의 입출력을 설정하는 입출력 제어 함수를 포함한다.The GPIO control function block 124 includes an input / output control function for setting the input / output of the input / output pins of the GPIO block 114 to set the input / output of another device according to the purpose of the user of the security token 100.

상기 데이터 메모리부(130)는 호스트의 APDU 명령어(예컨대, 개인 키 생성, 파일 읽기, 파일 쓰기, 암호화, 복호화, 서명, 서명 인증 등)와 관련한 데이터(예컨대, 개인 키, 읽기/쓰기 데이터, 암호 데이터, 복호 데이터, 서명 키, 서명 인증 키 등)를 저장한다.The data memory unit 130 may include data (eg, private key, read / write data, encryption) related to an APDU command (eg, private key generation, file reading, file writing, encryption, decryption, signature, signature authentication, etc.) of a host. Data, decrypted data, signature key, signature authentication key, etc.).

상기와 같이 구성되는 종래의 보안토큰(100)은 다음과 같이 작동한다.The conventional security token 100 configured as described above operates as follows.

상기 보안토큰(100)의 USB 핀(111a)이 PC와 같은 호스트의 USB 포트에 삽입되면, 가장 먼저 상기 메인 CPU(111)가 구동하여 호스트의 디스크립터 요청(request)을 수신하여 상기 보안토큰 파일 시스템 블록(121)으로 전달한다.When the USB pin 111a of the secure token 100 is inserted into a USB port of a host such as a PC, the main CPU 111 first operates to receive a descriptor request of the host to secure the file system. Transfer to block 121.

이에 따라서, 상기 보안토큰 파일 시스템 블록(121)은 상기 USB 인터페이스 함수 블록(122)의 디스크립터 정보 함수를 호출하여 이 디스크립터 정보 함수에서 설정한 디바이스 디스크립터, 컨피규레이션 디스크립터, 인터페이스 디스크립터, 엔드포인트 디스크립터를 상기 메인 CPU(111)와 USB 핀(111a)을 통해 호스트로 전달하는 이뉴머레이션 과정을 수행한다.Accordingly, the secure token file system block 121 calls the descriptor information function of the USB interface function block 122 and stores the device descriptor, configuration descriptor, interface descriptor, and endpoint descriptor set in the descriptor information function. The enumeration process is performed by transferring the CPU 111 and the USB pin 111a to the host.

이때, 또한 상기 메인 CPU(111)는 상기 GPIO 블록(114)으로 전원 온 신호를 전달하여, 상기 GPIO 블록(114)의 어느 하나의 출력 핀에 연결된 LED를 온시킴으로써 현재 보안토큰(100)이 전원 온 상태임을 사용자에게 알린다.At this time, the main CPU 111 also transmits a power-on signal to the GPIO block 114 to turn on the LED connected to any one of the output pins of the GPIO block 114 to secure the current security token 100. Inform the user that it is on.

이때, 또한 상기 메인 CPU(111)가 구동함과 동시에 상기 클록 블록(115)이 구동하여 상기 메인 CPU(111), 크립토 CPU(112), USB 블록(113), GPIO 블록(114)에 사용되는 클록 주파수를 발생한다.At this time, the main CPU 111 is driven and the clock block 115 is driven to be used for the main CPU 111, the crypto CPU 112, the USB block 113, and the GPIO block 114. Generate a clock frequency.

이와 같이 상기 보안토큰(100)과 호스트 간의 이뉴머레이션 과정이 완료되면 상기 호스트는 상기 보안토큰(100)을 등록하고, 그 직후에 상기 보안토큰(100)은 상기 USB 블록(113)의 인터럽트 인 엔드포인트를 통해 호스트에게 정상 연결 상태를 알리는 인터럽트 신호를 전송한다.As such, when the enumeration process between the security token 100 and the host is completed, the host registers the security token 100, and immediately after that, the security token 100 is an interrupt of the USB block 113. Sends an interrupt signal to the host through the endpoint to indicate normal connection status.

이와 같이 상기 보안토큰(100)은 상기 USB 블록(113)의 인터럽트 인 엔드포인트를 통해 호스트에게 정상 연결 상태를 알리는 인터럽트 신호를 전송하고 나면, 이후부터 엔드포인트 디스크립터에서 설정한 상기 USB 블록(113)의 벌크 인-엔드포인트와 벌크 아웃-엔드포인트를 통해 호스트와 데이터를 주고받게 된다.As described above, after the secure token 100 transmits an interrupt signal indicating a normal connection state to the host through the interrupt in endpoint of the USB block 113, the USB block 113 set in the endpoint descriptor thereafter. Data exchanges with the host through bulk in-endpoints and bulk out-endpoints.

예컨대, 호스트에서 파일 읽기 혹은 파일 쓰기를 위한 APDU 명령어를 보안토큰(100)의 메인 CPU(111)로 전달하면, 상기 메인 CPU(111)는 이 명령어를 상기 보안토큰 파일 시스템 블록(121)으로 전달한다.For example, when an APDU command for reading or writing a file is transmitted from the host to the main CPU 111 of the secure token 100, the main CPU 111 transfers the command to the secure token file system block 121. do.

이에 따라서, 상기 보안토큰 파일 시스템 블록(121)은 상기 USB 블록(113)의 엔드포인트 레지스터들을 이용하여 데이터를 읽기 혹은 쓰기 하면서 호스트에서 상기 데이터 메모리부(130)로 전달하거나, 혹은 상기 데이터 메모리부(130)에서 호스트로 전달한다.Accordingly, the secure token file system block 121 transfers data from the host to the data memory unit 130 while reading or writing data using the endpoint registers of the USB block 113 or the data memory unit. Forward to host at 130.

예컨대, 호스트에서 암복호와 관련된 명령어(예컨대, 개인 키 생성, 암호화, 복호화, 서명, 서명 인증 등)를 보안토큰(100)의 메인 CPU(111)로 전달하면, 상기 메인 CPU(111)는 이 명령어를 상기 보안토큰 파일 시스템 블록(121)으로 전달한다.For example, when a host transmits a command related to decryption (for example, a private key generation, encryption, decryption, signature, signature authentication, etc.) to the main CPU 111 of the security token 100, the main CPU 111 reads this. The command is transmitted to the secure token file system block 121.

이에 따라서, 상기 보안토큰 파일 시스템 블록(121)은 상기 암복호 함수 블록(123)의 해당 암복호와 관련한 함수(예컨대, 개인 키 생성 함수, RSA, DES 등의 암복호화 함수, 서명 및 서명 인증 함수)를 호출하여 상기 크립토 CPU(112)로 처리 요청하고, 상기 크립토 CPU(112)가 암복호와 관련 명령을 수행한 결과를 수신하여 필요에 따라 호스트 측으로 전달하거나 상기 데이터 메모리부(130)에 저장한다.Accordingly, the secure token file system block 121 is a function related to the corresponding decryption of the decryption function block 123 (e.g., a decryption function such as a private key generation function, RSA, DES, signature and signature authentication function). Call) to request processing to the crypto CPU 112, and receive the result of the crypto CPU 112 performing the encryption and decryption related command, and transfer the result to the host side as necessary or store it in the data memory unit 130. do.

한편, 상기와 같이 작동하는 보안토큰(100)은 USB 타입, 예컨대 휴대 가능한 USB 메모리와 유사한 타입으로 개발이 되어 전적으로 금융거래시 사용자 인증에 사용되거나, 혹은 기업이나 공공기관의 보안 인증에 사용되므로, 사용자가 필요로 하는 USB 메모리 기능을 전혀 제공하지 못하는 단점이 있다.On the other hand, since the security token 100 that operates as described above is developed in a type similar to a USB type, for example, a portable USB memory, and used entirely for user authentication during financial transactions, or used for security authentication of corporations or public institutions, The disadvantage is that it does not provide the USB memory function that the user needs.

참고로, 도 2는 일반적인 USB 메모리의 구성을 나타낸 블록도이다.For reference, FIG. 2 is a block diagram showing the configuration of a general USB memory.

도 2에 나타낸 바와 같이, 일반적인 USB 메모리(100')는 메모리 CPU(110')와 코드 메모리부(120') 및 데이터 메모리부(130')로 구성되며, 상기 메모리 CPU(110')와 코드 메모리부(120')는 원칩 형태로 이루어지고, 상기 데이터 메모리부(130')로는 주로 낸드 플래시 메모리가 사용된다.As shown in FIG. 2, a general USB memory 100 ′ is composed of a memory CPU 110 ′, a code memory unit 120 ′, and a data memory unit 130 ′, and the memory CPU 110 ′ and a code. The memory unit 120 ′ is formed in a one chip form, and a NAND flash memory is mainly used as the data memory unit 130 ′.

상기 메모리 CPU(110')는 메인 CPU(111')와 USB 블록(112'), GPIO 블록(113'), 클록 블록(114')을 포함하여 구성된다.The memory CPU 110 'includes a main CPU 111', a USB block 112 ', a GPIO block 113', and a clock block 114 '.

상기 메인 CPU(111')는 USB 핀(111a')을 통해 호스트와 통신하면서 USB 메모리(100')의 전체적인 동작을 제어할 수 있는 레지스터(Register)들을 포함한다.The main CPU 111 ′ includes registers for controlling overall operation of the USB memory 100 ′ while communicating with a host through the USB pin 111 a ′.

상기 호스트는 PC를 포함한 각종 USB 호스트 기능이 추가된 제품을 의미한다.The host means a product to which various USB host functions including a PC are added.

상기 USB 블록(112')은 USB 메모리(100')와 호스트 간의 USB 통신을 위해 사용되는 컨트롤 레지스터인 엔드포인트(Endpoint)들을 포함하며, 기본적으로 상기한 이뉴머레이션을 위한 엔드포인트 0와 데이터의 읽기, 쓰기 등을 위해 2개 이상의 엔드포인트를 가질 수 있다.The USB block 112 'includes endpoints, which are control registers used for USB communication between the USB memory 100' and the host, and basically the endpoint 0 and data for the enumeration. You can have more than one endpoint for reading, writing, and so on.

상기와 같은 USB 메모리(100')는 호스트에서 이뉴머레이션 과정을 완료하고 USB 메모리(100')를 등록하면, 이후부터 디스크립터에서 설정한 벌크 인-엔드포인트와 벌크 아웃-엔드포인트를 통해 호스트와 데이터를 주고받게 된다. When the USB memory 100 'is completed with the enumeration process at the host and registers the USB memory 100', the USB memory 100 'is then connected with the host through the bulk in-end point and the bulk out-end point set in the descriptor. You exchange data.

상기 GPIO 블록(113')은 USB 메모리(100')의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 입출력 핀들을 포함하며, 일반적으로 USB 디바이스의 전원 공급 상태를 나타내는 LED의 ON/OFF 혹은 다른 장치와의 통신을 목적으로 사용될 수 있다.The GPIO block 113 'includes input / output pins that can set input / output of another device according to a user's purpose of the USB memory 100', and generally, an on / off of an LED indicating a power supply state of a USB device or It can be used for communication with other devices.

상기 클록 블록(114')은 상기 메인 CPU(111'), USB 블록(112'), GPIO 블록(113')에 사용되는 클록 주파수를 따로 설정할 수 있는 레지스터들을 포함한다.The clock block 114 'includes registers for separately setting clock frequencies used in the main CPU 111', the USB block 112 ', and the GPIO block 113'.

상기 코드 메모리부(120')는 주로 USB 메모리(100')의 기능을 구현하기 위한 소프트웨어들이 저장되어 있으며, 한번 쓰기가 된 데이터는 전원이 없어지더라도 지워지지 않고 계속 저장되어 있는 롬(ROM)이다.The code memory unit 120 'mainly stores software for implementing the functions of the USB memory 100', and once written, the data is a ROM that is stored without being erased even if power is lost.

상기 코드 메모리부(120')는 상기 데이터 메모리부(130')에 저장되는 데이터를 직접 관리하기 위하여 낸드 플래시 파일시스템 블록(121')과 USB 인터페이스 함수 블록(122'), GPIO 제어 함수 블록(123')으로 구분된다.The code memory unit 120 ′ is configured to directly manage data stored in the data memory unit 130 ′, the NAND flash file system block 121 ′, a USB interface function block 122 ′, and a GPIO control function block ( 123 ').

상기 낸드 플래시 파일시스템 블록(121')은 상기 데이터 메모리부(130')에 저장되는 데이터의 읽기/쓰기를 직접 관리하는 시스템 블록으로서, USB 대용량 저장장치 클래스(USB MSC; Universal Serial Bus Mass Storage Class)의 사양(Specification)에 맞게 호스트에서 UFI(USB Floppy Interface)의 기준에 따른 UFI 명령어들(예컨대, 데이터 읽기, 데이터 쓰기 등)이 상기 메인 CPU(111')를 통해 전달되었을 경우 구동된다. 참고로, 호스트는 낸드 플래시 기준의 실제 물리적 주소(Physical Address)가 아닌 PC에서 사용하는 파일 시스템을 기준으로 한 논리적 주소(Logical Address)의 형태로 이루어진 UFI 명령어를 USB 메모리(100')로 전달한다. 또한, PC에서 사용하는 파일 시스템은 읽기/쓰기(Read/Write) 동작의 최소 단위가 섹터(Sector)인 512 Bytes이고, 낸드 플래시 메모리는 읽기/쓰기 동작의 최소 단위가 페이지(Page)인 2048 Bytes이기 때문에 이와 같이 읽기/쓰기 동작의 최소 단위가 서로 다른 문제들을 해결하기 위해서는 반드시 상기 낸드 플래시 파일시스템 블록(121')을 통해 호스트에서 내려오는 논리적 주소를 물리적 주소로 바꾸어서 사용해야만 한다. 이는 USB 메모리(100')가 PC와 같은 호스트의 USB 포트에 연결되었을 때 PC 파일 시스템과 호환되는 낸드 플래시 파일시스템으로 포맷이 되어있어야만 호스트에서 사용 가능하기 때문이다. 또한, 낸드 플래시 파일 시스템은 단순히 주소변환 기능만 하는 것이 아니라, 낸드 플래시는 특성상 블록당 읽기/쓰기(Read/Write) 할 수 있는 횟수가 제한되어 있고 사용 중 배드 블록(Bad Block)이 발생할 수 있기 때문에 주기적으로 논리 주소에 맞는 물리 주소로 변환하는 플래시 변환층(FTL; Flash Translation Layer)도 구현되어 있어야 한다. 이렇게 플래시 변환층(FTL)을 포함한 낸드 플래시 파일시스템이 구현된 USB 메모리(100')는 호스트에 연결되었을 경우 마치 하드디스크처럼 인식되어 이동식 디스크로 사용할 수 있게 된다.The NAND flash file system block 121 ′ is a system block that directly manages read / write of data stored in the data memory unit 130 ′, and is a USB mass storage class (USB MSC; Universal Serial Bus Mass Storage Class). In accordance with the specification, UFI commands (for example, data read, data write, etc.) according to the standard of UFI (USB Floppy Interface) are transmitted to the host through the main CPU 111 '. For reference, the host transfers UFI commands in the form of logical addresses based on the file system used in the PC to the USB memory 100 ', not the actual physical addresses of the NAND flash standard. . In addition, the file system used in the PC is 512 Bytes, the minimum unit of read / write operation is sector, and N48 flash memory is 2048 Bytes, the minimum unit of read / write operation is page. Therefore, in order to solve the problems in which the minimum unit of the read / write operation is different from each other, the logical address coming down from the host through the NAND flash file system block 121 'must be replaced with a physical address. This is because when the USB memory 100 'is connected to a USB port of a host such as a PC, the USB memory 100' can be used by the host only if it is formatted as a NAND flash file system compatible with the PC file system. In addition, the NAND flash file system does not merely perform address translation, but NAND flash has a limited number of read / write operations per block due to its nature, and a bad block may occur during use. For this reason, a Flash Translation Layer (FTL), which periodically translates a physical address into a logical address, must also be implemented. When the NAND flash file system including the flash translation layer (FTL) is implemented, the USB memory 100 'is connected to a host and is recognized as a hard disk and can be used as a removable disk.

상기 USB 인터페이스 함수 블록(122')은 상기 USB 메모리(100')의 USB 블록(112')의 엔드포인트 레지스터들을 이용하여 데이터를 전달하는 기능과, USB 이뉴머레이션에 필요한 디스크립터 정보를 가지는 함수를 포함하고 있다.The USB interface function block 122 'has a function of transferring data using endpoint registers of the USB block 112' of the USB memory 100 'and a function having descriptor information necessary for USB enumeration. It is included.

상기 GPIO 제어 함수 블록(123')은 USB 메모리(100')의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 상기 GPIO 블록(113')의 입출력 핀들의 입출력을 설정하는 입출력 제어 함수를 포함한다.The GPIO control function block 123 'includes an input / output control function for setting the input / output of the input / output pins of the GPIO block 113' that can set the input / output of another device according to the user's purpose of the USB memory 100 '. do.

상기 데이터 메모리부(130')는 호스트의 UFI 명령어(예컨대, 데이터 읽기, 데이터 쓰기 등)와 관련한 데이터(예컨대, 읽기/쓰기 데이터 등)를 저장한다.The data memory unit 130 ′ stores data (eg, read / write data, etc.) related to a UFI command (eg, data read, data write, etc.) of the host.

상기와 같이 구성되는 종래의 USB 메모리(100')는 다음과 같이 작동한다.The conventional USB memory 100 'configured as described above operates as follows.

상기 USB 메모리(100')의 USB 핀(111a')이 PC와 같은 호스트의 USB 포트에 삽입되면, 가장 먼저 상기 메인 CPU(111')가 구동하여 호스트의 디스크립터 요청(request)을 수신하여 상기 낸드 플래시 파일 시스템 블록(121')으로 전달한다.When the USB pin 111a 'of the USB memory 100' is inserted into a USB port of a host such as a PC, the main CPU 111 'is driven first to receive a descriptor request from the host to the NAND. Transfer to the flash file system block 121 '.

이에 따라서, 상기 낸드 플래시 파일 시스템 블록(121')은 상기 USB 인터페이스 함수 블록(122')의 디스크립터 정보 함수를 호출하여 이 디스크립터 정보 함수에서 설정한 디바이스 디스크립터, 컨피규레이션 디스크립터, 인터페이스 디스크립터, 엔드포인트 디스크립터를 상기 메인 CPU(111')와 USB 핀(111a')을 통해 호스트로 전달하는 이뉴머레이션 과정을 수행한다.Accordingly, the NAND flash file system block 121 'calls the descriptor information function of the USB interface function block 122' to determine the device descriptor, configuration descriptor, interface descriptor, and endpoint descriptor set in the descriptor information function. The enumeration process is performed to the host via the main CPU 111 'and the USB pin 111a'.

이때, 또한 상기 메인 CPU(111')는 상기 GPIO 블록(113')으로 전원 온 신호를 전달하여, 상기 GPIO 블록(113')의 어느 하나의 출력 핀에 연결된 LED를 온시킴으로써 현재 USB 메모리(100')가 전원 온 상태임을 사용자에게 알린다.At this time, the main CPU 111 ′ also transmits a power-on signal to the GPIO block 113 ′ and turns on the LED connected to any one of the output pins of the GPIO block 113 ′. ') Notifies the user that the power is on.

이때, 또한 상기 메인 CPU(111')가 구동함과 동시에 상기 클록 블록(114')이 구동하여 상기 메인 CPU(111'), USB 블록(112'), GPIO 블록(113')에 사용되는 클록 주파수를 발생한다.At this time, the main CPU 111 'is driven and the clock block 114' is driven to drive the main CPU 111 ', the USB block 112', and the GPIO block 113 '. Generate frequency.

이와 같이 상기 USB 메모리(100')와 호스트 간의 이뉴머레이션 과정이 완료되면 상기 호스트는 상기 USB 메모리(100')를 등록하고, 이후부터 엔드포인트 디스크립터에서 설정한 상기 USB 블록(113')의 벌크 인-엔드포인트와 벌크 아웃-엔드포인트를 통해 호스트와 데이터를 주고받게 된다.As such, when the enumeration process between the USB memory 100 'and the host is completed, the host registers the USB memory 100', and thereafter, the bulk of the USB block 113 'set in the endpoint descriptor. Data is exchanged with the host through in-end points and bulk out-end points.

예컨대, 호스트에서 데이터 읽기 혹은 데이터 쓰기를 위한 UFI 명령어를 USB 메모리(100')의 메인 CPU(111')로 전달하면, 상기 메인 CPU(111')는 이 명령어를 상기 낸드 플래시 파일 시스템 블록(121')으로 전달한다.For example, when a UFI command for reading or writing data from a host is transferred to the main CPU 111 ′ of the USB memory 100 ′, the main CPU 111 ′ sends the command to the NAND flash file system block 121. ') To pass.

이에 따라서, 상기 낸드 플래시 파일 시스템 블록(121')은 상기 USB 블록(112')의 엔드포인트 레지스터들을 이용하여 데이터를 읽기 혹은 쓰기 하면서 호스트에서 상기 데이터 메모리부(130')로 전달하거나, 혹은 상기 데이터 메모리부(130')에서 호스트로 전달한다.Accordingly, the NAND flash file system block 121 'is transferred from the host to the data memory unit 130' while reading or writing data using the endpoint registers of the USB block 112 ', or The data is transferred from the memory unit 130 'to the host.

본 발명은 상기한 바와 같은 종래의 문제점을 해결하기 위한 것으로, 본 발명의 목적은 USB 인터페이스 함수 블록에 포함된 디스크립터 정보 함수의 인터페이스 디스크립터에 USB 메모리 인터페이스 방식과 USB 보안토큰 인터페이스 방식이 정의되어 있고, USB 인터페이스 함수 블록에 포함된 디스크립터 정보 함수의 엔드포인트 디스크립터에 디스크립터 전송용 엔드포인트인 엔드포인트 0와 USB 메모리용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, USB 보안토큰용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, 및 USB 보안토큰이 호스트에 정상 접속된 상태를 알리는 인터럽트 신호를 전송하는 인터럽트 인 엔드포인트가 정의되어 있으며, 호스트에서 USB 메모리부로 전달되는 명령어가 UFI 명령어인지 APDU 명령어인지를 구별하여 UFI 명령어는 USB 메모리부의 낸드 플래시 파일 시스템 블록으로 전달하여 USB 메모리부의 데이터 읽기/쓰기가 처리되게 하고, APDU 명령어와 APDU 명령어의 처리 결과는 USB 메모리부의 GPIO 블록에서 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀과 USB 보안토큰부의 GPIO 블록에서 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀 사이의 2 Wire 통신 방식에 의해 USB 보안토큰부와 호스트 간에 주고받도록 하여 사용자 인증 혹은 보안 인증이 처리되게 하는 기능 선택부를 포함하는 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치를 제공하는 것이다.The present invention is to solve the conventional problems as described above, an object of the present invention is to define the USB memory interface method and USB security token interface method in the interface descriptor of the descriptor information function included in the USB interface function block, The endpoint descriptor of the descriptor information function contained in the USB interface function block, endpoint 0, which is the endpoint for transferring the descriptor, and two endpoints for reading and writing data for the USB memory, and two for reading and writing data for the USB security token. Endpoints are defined, and an interrupt-in endpoint that transmits an interrupt signal indicating that the USB security token is normally connected to the host, and UFI is distinguished whether the command transmitted from the host to the USB memory unit is a UFI command or an APDU command. Command is USB memory part The data read / write of the USB memory part is processed by the flash file system block, and the result of processing the APDU command and APDU command is 2 input / output pins and the USB security token set as the clock pin and the data pin in the GPIO block of the USB memory part. Memory function including a function selection unit for allowing user authentication or security authentication to be processed by sending and receiving between the USB security token unit and the host by a 2-wire communication method between two input / output pins configured as clock pins and data pins in a negative GPIO block. It is to provide a USB composite device with a security token function.

상기한 바와 같은 본 발명의 목적을 달성하기 위하여, 본 발명에 따른 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치는, 호스트에서 UFI 명령어가 전달되면 데이터를 읽기 혹은 쓰기 기능을 수행하고, 호스트에서 APDU 명령어가 전달되면 외부로 전송하는 USB 메모리부; 및 상기 USB 메모리부에서 외부로 전송하는 APDU 명령어를 수신하면 상기 USB 메모리부를 통하여 호스트와 사용자 인증 혹은 보안 인증 기능을 수행하는 USB 보안토큰부(HIM);로 구성되는 것을 특징으로 한다.In order to achieve the object of the present invention as described above, a USB composite device having a memory function and a security token function according to the present invention, when a UFI command is transmitted from the host to perform a data read or write function, USB memory unit for transmitting to the outside when the APDU command is transmitted; And a USB security token unit (HIM) which performs a user authentication or security authentication function with a host through the USB memory unit when receiving the APDU command transmitted from the USB memory unit to the outside.

본 발명은 사용자가 금융거래시 사용자 인증, 기업이나 공공기관의 보안 인증에 사용할 뿐만 아니라, USB 메모리로도 편리하게 사용할 수 있다.The present invention can be used not only for user authentication during financial transactions, security authentication of corporations or public institutions, but also conveniently used as a USB memory.

도 1은 일반적인 USB 타입 보안토큰의 구성을 나타낸 블록도.
도 2는 일반적인 USB 메모리의 구성을 나타낸 블록도.
도 3은 본 발명에 따른 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치의 구성을 나타낸 블록도.
1 is a block diagram showing the configuration of a general USB type security token.
2 is a block diagram showing a configuration of a general USB memory.
Figure 3 is a block diagram showing the configuration of a USB composite device having a memory function and a security token function according to the present invention.

이하, 본 발명의 실시예를 첨부된 도면을 참조하여 더욱 상세하게 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 3을 참조하면, 본 발명에 따른 USB 복합장치(200)는 호스트에서 UFI 명령어가 전달되면 데이터를 읽기 혹은 쓰기 기능을 수행하고, 호스트에서 APDU 명령어가 전달되면 외부로 전송하는 USB 메모리부(MEM) 및 상기 USB 메모리부(MEM)에서 외부로 전송하는 APDU 명령어를 수신하면 상기 USB 메모리부(MEM)를 통하여 호스트와 사용자 인증 혹은 보안 인증 기능을 수행하는 USB 보안토큰부(HSM)로 구성된다.Referring to FIG. 3, the USB composite apparatus 200 according to the present invention performs a function of reading or writing data when a UFI command is transmitted from a host, and transmitting the data to an external device when the APDU command is transmitted from the host. ) And a USB security token unit (HSM) that performs a user authentication or security authentication function with a host through the USB memory unit MEM when the APDU command transmitted from the USB memory unit MEM is externally received.

상기 USB 메모리부(MEM)는 메모리 CPU(210)와 코드 메모리부(220) 및 데이터 메모리부(230)를 포함하여 구성되며, 상기 메모리 CPU(210)와 코드 메모리부(220)는 원칩 형태로 이루어지고, 상기 데이터 메모리부(230)로는 주로 낸드 플래시 메모리가 사용된다.The USB memory unit MEM includes a memory CPU 210, a code memory unit 220, and a data memory unit 230, and the memory CPU 210 and the code memory unit 220 are in a single chip form. The NAND flash memory is mainly used as the data memory unit 230.

상기 메모리 CPU(210)는 메인 CPU(211)와 USB 블록(212), GPIO 블록(213), 클록 블록(214)을 포함하여 구성된다.The memory CPU 210 includes a main CPU 211, a USB block 212, a GPIO block 213, and a clock block 214.

상기 메인 CPU(211)는 USB 핀(211a)을 통해 호스트와 통신하면서 호스트의 UFI 명령어와 APDU 명령어를 전달받고, USB 메모리부(MEM)의 전체적인 동작을 제어할 수 있는 레지스터들을 포함한다.The main CPU 211 includes registers that communicate with the host through the USB pin 211a to receive the host's UFI command and the APDU command, and control the overall operation of the USB memory unit MEM.

상기 USB 블록(212)은 USB 메모리부(MEM)와 호스트 간의 USB 통신을 위해 사용되는 컨트롤 레지스터인 엔드포인트들을 포함하며, 기본적으로 디스크립터 전송용 엔드포인트인 엔드포인트 0와 USB 메모리용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, USB 보안토큰용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, 및 USB 보안토큰부(HSM)가 호스트에 정상 접속된 상태를 알리는 인터럽트 신호를 전송하는 인터럽트 인 엔드포인트를 가진다.The USB block 212 includes endpoints, which are control registers used for USB communication between the USB memory unit MEM and the host, and basically reads and writes data for endpoint 0 and USB memory, which are endpoints for descriptor transfer. It has two endpoints for it, two endpoints for reading and writing data for the USB security token, and an interrupt-in endpoint that sends an interrupt signal indicating that the USB security token unit (HSM) is normally connected to the host. .

상기 GPIO 블록(213)은 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 입출력 핀들을 포함하며, 일반적으로 USB 디바이스의 전원 공급 상태를 나타내는 LED의 ON/OFF 혹은 다른 장치와의 통신을 목적으로 사용될 수 있다.The GPIO block 213 includes input / output pins for setting input / output of another device according to a user's purpose, and generally for the purpose of ON / OFF of an LED indicating a power supply state of a USB device or for communication with another device. Can be used.

상기 GPIO 블록(213)은 상기 USB 메모리부(MEM)와 USB 보안토큰부(HSM) 간의 통신을 위하여 클록(CLOCK) 핀과 데이터(DATA) 핀으로 설정된 2개의 입출력 핀을 포함한다.The GPIO block 213 includes two input / output pins configured as a clock pin and a data pin for communication between the USB memory unit MEM and the USB security token unit HSM.

상기 클록 블록(214)은 상기 메인 CPU(211), USB 블록(212), GPIO 블록(213)에 사용되는 클록 주파수를 따로 설정할 수 있는 레지스터들을 포함한다.The clock block 214 includes registers for separately setting clock frequencies used in the main CPU 211, the USB block 212, and the GPIO block 213.

상기 코드 메모리부(220)는 기능 선택부(221)와 낸드 플래시 파일 시스템 블록(222), USB 인터페이스 함수 블록(223), GPIO 제어 함수 블록(224)을 포함하여 구성된다.The code memory unit 220 includes a function selection unit 221, a NAND flash file system block 222, a USB interface function block 223, and a GPIO control function block 224.

상기 기능 선택부(221)는 호스트에서 USB 메모리부(MEM)로 전달되는 명령어가 UFI 명령어인지 APDU 명령어인지를 구별하여 UFI 명령어는 상기 메인 CPU(211)를 통해 USB 메모리부(MEM)의 낸드 플래시 파일 시스템 블록(222)으로 전달하여 USB 메모리부(MEM)의 데이터 읽기/쓰기가 처리되게 한다.The function selector 221 distinguishes whether a command transmitted from the host to the USB memory unit MEM is a UFI command or an APDU command, and the UFI command is transmitted to the NAND flash of the USB memory unit MEM through the main CPU 211. The data is transferred to the file system block 222 so that data read / write of the USB memory unit MEM is processed.

상기 기능 선택부(221)는 APDU 명령어와 APDU 명령어의 처리 결과는 USB 메모리부(MEM)의 GPIO 블록(213)의 2개의 입출력 핀과 USB 보안토큰부(HSM)의 GPIO 블록(244)에서 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀 사이의 2 Wire 통신 방식에 의해 USB 보안토큰부(HSM)와 호스트 간에 주고받도록 하여 사용자 인증 혹은 보안 인증이 처리되게 한다.The function selector 221 clocks the APDU command and the processing result of the APDU command in two input / output pins of the GPIO block 213 of the USB memory unit MEM and the GPIO block 244 of the USB security token unit HSM. User authentication or security authentication is processed by sending and receiving between USB security token unit (HSM) and host by 2 wire communication method between two I / O pins configured as pin and data pin.

상기 낸드 플래시 파일시스템 블록(222)은 상기 데이터 메모리부(230)에 저장되는 데이터의 읽기/쓰기를 직접 관리하는 시스템 블록으로서, USB 대용량 저장장치 클래스(USB MSC; Universal Serial Bus Mass Storage Class)의 사양에 맞게 호스트에서 UFI(USB Floppy Interface)의 기준에 따른 UFI 명령어들(예컨대, 데이터 읽기, 데이터 쓰기 등)이 상기 메인 CPU(211)를 통해 전달되었을 경우 구동한다. 참고로, 호스트는 낸드 플래시 기준의 실제 물리적 주소(Physical Address)가 아닌 PC에서 사용하는 파일 시스템을 기준으로 한 논리적 주소(Logical Address)의 형태로 이루어진 UFI 명령어를 USB 메모리부(MEM)로 전달한다. 또한, PC에서 사용하는 파일 시스템은 읽기/쓰기(Read/Write) 동작의 최소 단위가 섹터(Sector)인 512 Bytes이고, 낸드 플래시 메모리는 읽기/쓰기 동작의 최소 단위가 페이지(Page)인 2048 Bytes이기 때문에 이와 같이 읽기/쓰기 동작의 최소 단위가 서로 다른 문제들을 해결하기 위해서는 반드시 상기 낸드 플래시 파일시스템 블록(222)을 통해 호스트에서 내려오는 논리적 주소를 물리적 주소로 바꾸어서 사용해야만 한다. 이는 USB 메모리부(MEM)가 PC와 같은 호스트의 USB 포트에 연결되었을 때 PC 파일 시스템과 호환되는 낸드 플래시 파일시스템으로 포맷이 되어있어야만 호스트에서 사용 가능하기 때문이다. 또한, 낸드 플래시 파일 시스템은 단순히 주소변환 기능만 하는 것이 아니라, 낸드 플래시는 특성상 블록당 읽기/쓰기(Read/Write) 할 수 있는 횟수가 제한되어 있고 사용 중 배드 블록(Bad Block)이 발생할 수 있기 때문에 주기적으로 논리 주소에 맞는 물리 주소로 변환하는 플래시 변환층(FTL; Flash Translation Layer)도 구현되어 있어야 한다. 이렇게 플래시 변환층(FTL)을 포함한 낸드 플래시 파일시스템이 구현된 USB 메모리부(MEM)는 호스트에 연결되었을 경우 마치 하드디스크처럼 인식되어 이동식 디스크로 사용할 수 있게 된다.The NAND flash file system block 222 is a system block that directly manages read / write of data stored in the data memory unit 230, and includes a USB MSC (Universal Serial Bus Mass Storage Class). In accordance with the specification, UFI commands (eg, data read, data write, etc.) according to a standard of the USB Floppy Interface (UFI) are driven by the host through the main CPU 211. For reference, the host transfers UFI commands in the form of logical addresses based on the file system used in the PC to the USB memory unit (MEM), not the actual physical addresses of NAND flash standards. . In addition, the file system used in the PC is 512 Bytes, the minimum unit of read / write operation is sector, and N48 flash memory is 2048 Bytes, the minimum unit of read / write operation is page. Therefore, in order to solve the problems in which the minimum unit of the read / write operation is different from each other, the logical address coming out of the host through the NAND flash file system block 222 must be replaced with a physical address. This is because when the USB memory unit (MEM) is connected to a USB port of a host such as a PC, it can be used by the host only if it is formatted as a NAND flash file system compatible with the PC file system. In addition, the NAND flash file system does not merely perform address translation, but NAND flash has a limited number of read / write operations per block due to its nature, and a bad block may occur during use. For this reason, a Flash Translation Layer (FTL), which periodically translates a physical address into a logical address, must also be implemented. When the NAND flash file system including the flash translation layer (FTL) is implemented, the USB memory unit (MEM) is recognized as a hard disk when connected to a host and can be used as a removable disk.

상기 USB 인터페이스 함수 블록(223)은 USB 메모리부(MEM)의 USB 블록(212)의 엔드포인트 레지스터들을 이용하여 데이터를 전달하는 기능과, USB 이뉴머레이션에 필요한 디스크립터 정보를 가지는 함수를 포함하고 있다.The USB interface function block 223 includes a function of transferring data using endpoint registers of the USB block 212 of the USB memory unit MEM and a function having descriptor information required for USB enumeration. .

상기 USB 인터페이스 함수 블록(223)은 특히, 디스크립터 정보를 가지는 함수의 인터페이스 디스크립터에 USB 메모리 인터페이스 방식과 USB 보안토큰 인터페이스 방식이 정의되어 있고, 디스크립터 정보 함수의 엔드포인트 디스크립터에 디스크립터 전송용 엔드포인트인 엔드포인트 0와 USB 메모리용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, USB 보안토큰용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, 및 USB 보안토큰이 호스트에 정상 접속된 상태를 알리는 인터럽트 신호를 전송하는 인터럽트 인 엔드포인트가 정의되어 있다.In particular, the USB interface function block 223 has a USB memory interface method and a USB security token interface method defined in an interface descriptor of a function having descriptor information, and an endpoint for transmitting a descriptor in an endpoint descriptor of the descriptor information function. Point 0 and two endpoints for reading and writing data to the USB memory, reading and writing data for the USB security token, two endpoints for writing and sending an interrupt signal indicating that the USB security token is normally connected to the host. An interrupt in endpoint is defined.

상기 GPIO 제어 함수 블록(224)은 USB 메모리부(MEM)의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 상기 GPIO 블록(213)의 입출력 핀들 중 2개의 입출력 핀을 각각 클록 핀과 데이터 핀으로 설정하는 입출력 제어 함수를 포함한다.The GPIO control function block 224 includes two input / output pins of the input / output pins of the GPIO block 213 that can set the input / output of another device according to the user's purpose of the USB memory unit MEM, respectively. Contains input and output control functions.

상기 데이터 메모리부(230)는 호스트의 UFI 명령어(예컨대, 데이터 읽기, 데이터 쓰기 등)와 관련한 데이터(예컨대, 읽기/쓰기 데이터 등)를 저장한다.The data memory 230 stores data (eg, read / write data, etc.) related to a UFI command (eg, data read, data write, etc.) of the host.

상기 USB 보안토큰부(HSM)는 보안토큰 CPU(240)와 코드 메모리부(250) 및 데이터 메모리부(260)로 구성되며, 이들(240,250,260)은 하나로 묶어 COB(CHIP ON BOARD) 형태로 되어 있는 것이 바람직하다.The USB security token unit (HSM) is composed of a security token CPU 240, a code memory unit 250 and a data memory unit 260, and these (240, 250, 260) are combined into a COB (CHIP ON BOARD) form It is preferable.

상기 보안토큰 CPU(240)는 메인 CPU(241)와 크립토 CPU(242), GPIO 블록(243), 클록 블록(244)을 포함하여 구성된다.The secure token CPU 240 includes a main CPU 241, a crypto CPU 242, a GPIO block 243, and a clock block 244.

상기 메인 CPU(241)는 USB 메모리부(MEM)를 통해 호스트와 통신하면서 USB 보안토큰부(HSM)의 전체적인 동작을 제어할 수 있는 레지스터들을 포함한다.The main CPU 241 includes registers for controlling the overall operation of the USB security token unit HSM while communicating with the host through the USB memory unit MEM.

상기 크립토 CPU(242)는 암복호화 관련 명령을 수행하는 레지스터들과 RSA(Rivest Shamir Adleman)(1024bit/2048bit), DES(Data Encryption Standard)/3-DES 등의 암복호화 관련 기능을 지원하는 크립토-코프로세서(Crypto-coprocessor)를 가지고 있다.The crypto CPU 242 supports cryptography-related functions such as registers that perform encryption-related instructions and RSA (Rivest Shamir Adleman) (1024 bit / 2048 bit), DES (Data Encryption Standard) / 3-DES, and the like. It has a Crypto-coprocessor.

상기 GPIO 블록(243)은 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 입출력 핀들을 포함하며, 상기 USB 메모리부(MEM)와 USB 보안토큰부(HSM) 간의 통신을 위하여 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀을 포함한다.The GPIO block 243 includes input / output pins for setting input / output of another device according to a user's purpose, and includes a clock pin and a data pin for communication between the USB memory unit MEM and the USB security token unit HSM. Contains two input and output pins.

상기 클록 블록(244)은 상기 메인 CPU(241), 크립토 CPU(242), GPIO 블록(243)에 사용되는 클록 주파수를 따로 설정할 수 있는 레지스터들을 포함한다. The clock block 244 includes registers for separately setting a clock frequency used for the main CPU 241, the crypto CPU 242, and the GPIO block 243.

상기 코드 메모리부(250)는 보안토큰 파일 시스템 블록(251)과 암복호 함수 블록(252), GPIO 제어 함수 블록(253)을 포함하여 구성된다.The code memory unit 250 includes a secure token file system block 251, a decryption function block 252, and a GPIO control function block 253.

상기 보안토큰 파일 시스템 블록(251)은 상기 데이터 메모리부(260)에 저장되는 데이터를 직접 관리하는 시스템 블록으로서, 일명 COS 블록이라고 하며, USB 스마트 카드 클래스(USB SCC; Universal Serial Bus Smart Card Class)의 사양에 맞게 호스트에서 스마트 카트 국제표준 프로토콜인 ISO 7816-4에 따른 APDU(Application Protocol Data Unit) 명령어들(예컨대, 개인 키 생성, 파일 읽기, 파일 쓰기, 암호화, 복호화, 서명, 서명 인증 등)이 상기 메인 CPU(241)를 통해 전달되었을 경우 구동된다. 통상, 호스트는 상기 데이터 메모리부(260)의 실제 주소를 알지 못하기 때문에 파일 인덱스(File Index) 값이나, 레코드 넘버(Record Number)를 이용하여 파일 읽기, 쓰기 동작의 APDU 명령어를 전달하게 된다. 이때, 상기 보안토큰 파일시스템 블록(251)은 전달받은 APDU 명령어에서 파일 인덱스나 레코드 넘버를 분석하여 상기 데이터 메모리부(260)의 실제 주소로 변경함으로써 실제 데이터에 접근하도록 하는 역할을 한다. 파일 읽기, 쓰기 동작의 APDU 명령어뿐만 아니라 USB 보안토큰부(HSM)와 관련된 ISO 7816-4에 해당하는 APDU 명령어 모두를 보안토큰 파일시스템 블록(251)이 처리를 하며, 암복호와 관련된 명령어(예컨대, 개인 키 생성, 암호화, 복호화, 서명, 서명 인증 등)가 전달되는 경우에는 상기 암복호 함수 블록(252)의 해당 암복호와 관련된 함수를 호출하여 상기 크립토 CPU(242)로 처리 요청하고, 상기 크립토 CPU(242)가 암복호와 관련된 명령을 수행한 결과를 수신하여 필요에 따라 호스트 측으로 전달하거나 상기 데이터 메모리부(260)에 저장한다.The secure token file system block 251 is a system block that directly manages data stored in the data memory unit 260, and is called a COS block, and is a USB Smart Card Class (USB SCC). Application Protocol Data Unit (APDU) commands (e.g., private key generation, file reading, file writing, encryption, decryption, signing, signature authentication, etc.) according to ISO 7816-4, a smart cart international standard protocol When it is delivered through the main CPU 241 is driven. In general, since the host does not know the actual address of the data memory unit 260, the host transmits an APDU command of a file read or write operation using a file index value or a record number. At this time, the secure token file system block 251 serves to access the actual data by analyzing the file index or record number in the received APDU command and changing it to the actual address of the data memory unit 260. Security token file system block 251 processes all APDU commands corresponding to ISO 7816-4 related to USB Security Token (HSM) as well as APDU commands for file read and write operations. , Private key generation, encryption, decryption, signature, signature authentication, and the like), when a function related to the decryption of the decryption function block 252 is called and requested to be processed by the crypto CPU 242, and The crypto CPU 242 receives a result of performing a command related to decryption and transfers the result to the host side as needed, or stores the result in the data memory unit 260.

상기 암복호 함수 블록(252)은 호스트로부터 전달되는 APDU 명령어가 암복호와 관련된 명령어일 경우 상기 보안토큰 파일시스템 블록(251)에 의해 호출되는 암복호와 관련된 함수(예컨대, 개인 키 생성 함수, RSA, DES 등의 암복호화 함수, 서명 및 서명 인증 함수)를 포함한다.The decryption function block 252 is a function related to decryption called by the secure token file system block 251 when the APDU command transmitted from the host is a decryption related command (eg, a private key generation function, an RSA). , Encryption and decryption functions such as DES, signature and signature authentication functions).

상기 GPIO 제어 함수 블록(253)은 USB 보안토큰부(HSM)의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 상기 GPIO 블록(243)의 입출력 핀들 중 2개의 입출력 핀을 각각 클록 핀과 데이터 핀으로 설정하는 입출력 제어 함수를 포함한다.The GPIO control function block 253 includes two input / output pins of the input / output pins of the GPIO block 243, which can set the input / output of another device according to the user's purpose of the USB security token unit (HSM), respectively. Contains input and output control functions that are set by pins.

상기 데이터 메모리부(260)는 호스트의 APDU 명령어(예컨대, 개인 키 생성, 파일 읽기, 파일 쓰기, 암호화, 복호화, 서명, 서명 인증 등)와 관련한 데이터(예컨대, 개인 키, 읽기/쓰기 데이터, 암호 데이터, 복호 데이터, 서명 키, 서명 인증 키 등)를 저장한다.The data memory unit 260 may include data (eg, private key, read / write data, encryption) related to APDU commands (eg, private key generation, file reading, file writing, encryption, decryption, signature, signature authentication, etc.) of a host. Data, decrypted data, signature key, signature authentication key, etc.).

상기 USB 메모리부(MEM)와 USB 보안토큰부(HSM) 간의 통신을 위하여 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀을 포함하는 상기 USB 메모리부(MEM)의 GPIO 블록(213)과 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)은 2 Wire 통신 방식에 의해 클록 핀의 동기에 맞춰 데이터 핀을 통해 데이터를 전달한다.GPIO block 213 and USB security of the USB memory unit MEM including two input / output pins configured as clock pins and data pins for communication between the USB memory unit MEM and the USB security token unit HSM. The GPIO block 243 of the token unit HSM transfers data through the data pin in synchronization with the clock pin by a 2-wire communication method.

상기 USB 메모리부(MEM)의 GPIO 블록(213)과 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)은 2 Wire 통신 방식으로 데이터를 주고 받을 때 데이터 통신을 시작한다는 의미의 헤더(HEADER) 정보를 먼저 어느 일 측에 전송한 후, 통신할 데이터의 총 데이터 수를 의미하는 데이터 사이즈(DATASIZE)를 보낸 다음 최종적으로 실제 데이터를 전달한다.The header HEADER means that data communication is started when the GPIO block 213 of the USB memory unit MEM and the GPIO block 243 of the USB security token unit HSM exchange data. The information is first transmitted to one side, and then the data size (DATASIZE), which means the total number of data to be communicated, is sent, and finally the actual data is transmitted.

예컨대, 호스트로부터 USB 메모리부(MEM)로 전달된 UFI 명령어는 상기 낸드 플래시 파일 시스템(222)으로 바로 전달이 되지만, 호스트로부터 USB 메모리부(MEM)로 전달된 APDU 명령어는 USB 보안토큰부(HSM)로 전달하기 전에 상기 USB 메모리부(MEM)의 GPIO 블록(213)에서 데이터 통신을 시작한다는 의미의 헤더 정보를 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)으로 전송한 후, 통신할 데이터의 총 데이터 수를 의미하는 데이터 사이즈를 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)으로 보낸 다음 최종적으로 호스트에서 전달받은 APDU 명령어를 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)으로 전달한다.For example, the UFI command transferred from the host to the USB memory unit MEM is transferred directly to the NAND flash file system 222, but the APDU command transferred from the host to the USB memory unit MEM is a USB security token unit (HSM). Before transmitting data to the GPIO block 243 of the USB security token unit (HSM) to communicate with the GPIO block 213 of the USB memory unit MEM. Data size representing the total number of data of the data is sent to the GPIO block 243 of the USB security token unit (HSM), and finally, the APDU command received from the host is sent to the GPIO block 243 of the USB security token unit (HSM). ).

상기와 같이 구성되는 본 발명에 따른 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치(200)는 다음과 같이 작동한다.The USB composite device 200 having a memory function and a security token function according to the present invention configured as described above operates as follows.

상기 USB 복합장치(200)의 USB 핀(211a)이 PC와 같은 호스트의 USB 포트에 삽입되면, 가장 먼저 상기 USB 메모리부(MEM)의 메인 CPU(211)와 USB 보안토큰부(HSM)의 메인 CPU(241)가 구동하고, 이후 상기 USB 메모리부(MEM)는 호스트의 디스크립터 요청(request)을 수신하여 상기 낸드 플래시 파일 시스템 블록(222)으로 전달한다.When the USB pin 211a of the USB composite device 200 is inserted into a USB port of a host such as a PC, first of all, the main CPU 211 and the USB security token unit HSM of the USB memory unit MEM are first connected. The CPU 241 is driven, and then the USB memory unit MEM receives a descriptor request from a host and transfers the request to the NAND flash file system block 222.

이에 따라서, 상기 낸드 플래시 파일 시스템 블록(222)은 상기 USB 인터페이스 함수 블록(223)의 디스크립터 정보 함수를 호출하여 이 디스크립터 정보 함수에서 설정한 디바이스 디스크립터, 컨피규레이션 디스크립터, 인터페이스 디스크립터, 엔드포인트 디스크립터를 상기 메인 CPU(211)와 USB 핀(211a)을 통해 호스트로 전달하는 이뉴머레이션 과정을 수행한다.Accordingly, the NAND flash file system block 222 calls the descriptor information function of the USB interface function block 223, and sets the device descriptor, configuration descriptor, interface descriptor, and endpoint descriptor set in the descriptor information function to the main descriptor. The enumeration process is performed by transferring the CPU 211 and the USB pin 211a to the host.

이때, 또한 상기 USB 메모리부(MEM)의 메인 CPU(211)는 상기 GPIO 블록(213)으로 전원 온 신호를 전달하여, 상기 GPIO 블록(213)의 어느 하나의 출력 핀에 연결된 LED를 온시킴으로써 현재 USB 복합장치(200)가 전원 온 상태임을 사용자에게 알린다. At this time, the main CPU 211 of the USB memory unit MEM also transmits a power-on signal to the GPIO block 213 to turn on the LED connected to any one of the output pins of the GPIO block 213. Notifies the user that the USB composite device 200 is in a power-on state.

이때, 또한 상기 USB 메모리부(MEM)의 메인 CPU(211)가 구동함과 동시에 상기 클록 블록(214)이 구동하여 상기 메인 CPU(211), USB 블록(212), GPIO 블록(213)에 사용되는 클록 주파수를 발생한다.At this time, the main CPU 211 of the USB memory unit MEM is driven and the clock block 214 is driven to be used for the main CPU 211, the USB block 212, and the GPIO block 213. To generate a clock frequency.

이때, 또한 상기 USB 보안토큰부(HSM)의 메인 CPU(240)가 구동함과 동시에 상기 클록 블록(244)이 구동하여 상기 메인 CPU(241), 크립토 CPU(242), GPIO 블록(243)에 사용되는 클록 주파수를 발생한다.At this time, the main CPU 240 of the USB security token unit (HSM) is driven and the clock block 244 is driven to the main CPU 241, the crypto CPU 242, and the GPIO block 243. Generates the clock frequency used.

이와 같이 상기 USB 복합장치(200)와 호스트 간의 이뉴머레이션 과정이 완료되면 상기 호스트는 상기 USB 복합장치(200)를 등록하고, 그 직후에 상기 USB 복합장치(200)는 USB 메모리부(MEM)의 USB 블록(212)의 인터럽트 인 엔드포인트를 통해 호스트에게 정상 연결 상태를 알리는 인터럽트 신호를 전송한다.As such, when the enumeration process between the USB composite apparatus 200 and the host is completed, the host registers the USB composite apparatus 200, and immediately after that, the USB composite apparatus 200 is a USB memory unit MEM. An interrupt signal of the normal connection state is transmitted to the host through an interrupt in endpoint of the USB block 212.

이와 같이 상기 USB 복합장치(200)가 USB 메모리부(MEM)의 USB 블록(212)의 인터럽트 인 엔드포인트를 통해 호스트에게 정상 연결 상태를 알리는 인터럽트 신호를 전송하고 나면, 이후부터 상기 USB 인터페이스 함수 블록(223)의 엔드포인트 디스크립터에서 설정한 USB 메모리부(MEM)의 USB 블록(212)의 벌크 인-엔드포인트와 벌크 아웃-엔드포인트를 통해 호스트와 데이터를 주고받게 된다.As described above, after the USB composite apparatus 200 transmits an interrupt signal indicating a normal connection state to the host through the interrupt in endpoint of the USB block 212 of the USB memory unit MEM, the USB interface function block thereafter. Data is exchanged with the host through the bulk in-end point and the bulk out-end point of the USB block 212 of the USB memory unit MEM set in the endpoint descriptor of 223.

이때, 만약 호스트에서 데이터 읽기 혹은 데이터 쓰기를 위한 UFI 명령어를 USB 메모리부(MEM)의 메인 CPU(211)로 전달하거나, 혹은 호스트에서 파일 읽기 혹은 파일 쓰기를 위한 APDU 명령어를 USB 메모리부(MEM)의 메인 CPU(211)로 전달하거나, 혹은 호스트에서 암복호와 관련된 APDU 명령어(예컨대, 개인 키 생성, 암호화, 복호화, 서명, 서명 인증 등)를 USB 메모리부(MEM)의 메인 CPU(211)로 전달하면, 상기 메인 CPU(211)는 이 모든 명령어를 상기 기능 선택부(221)로 전달한다.At this time, if the host transfers UFI commands for reading or writing data to the main CPU 211 of the USB memory unit MEM, or the APDU commands for reading or writing files from the host are stored in the USB memory unit MEM. The APDU command (for example, private key generation, encryption, decryption, signing, signature authentication, etc.) related to encryption or decryption at the host to the main CPU 211 of the USB memory unit MEM. If so, the main CPU 211 transfers all these instructions to the function selector 221.

이에 따라서, 상기 기능 선택부(221)는 호스트에서 USB 메모리부(MEM)로 전달되는 명령어가 UFI 명령어인지 APDU 명령어인지를 구별한다.Accordingly, the function selector 221 distinguishes whether a command transmitted from the host to the USB memory unit MEM is a UFI command or an APDU command.

이때, 상기 기능 선택부(221)에서 구별한 UFI 명령어는 USB 메모리부(MEM)의 메인 CPU(211)를 통해 상기 낸드 플래시 파일 시스템 블록(222)으로 전달하여 USB 메모리부(MEM)의 데이터 읽기/쓰기가 처리되게 한다.At this time, the UFI command distinguished by the function selection unit 221 is transferred to the NAND flash file system block 222 through the main CPU 211 of the USB memory unit MEM to read data of the USB memory unit MEM. / Write is processed.

이 경우, 상기 낸드 플래시 파일 시스템 블록(222)은 상기 USB 블록(212)의 엔드포인트 레지스터들을 이용하여 데이터를 읽기 혹은 쓰기 하면서 호스트에서 상기 데이터 메모리부(230)로 전달하거나, 혹은 상기 데이터 메모리부(230)에서 호스트로 전달한다.In this case, the NAND flash file system block 222 transfers data from the host to the data memory unit 230 while reading or writing data using the endpoint registers of the USB block 212, or the data memory unit. Forward to host at 230.

이와 달리, 상기 기능 선택부(221)에서 구별한 APDU 명령어와 APDU 명령어의 처리 결과는 USB 메모리부(MEM)의 GPIO 블록(213)의 2개의 입출력 핀과 USB 보안토큰부(HSM)의 GPIO 블록(244)에서 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀 사이의 2 Wire 통신 방식에 의해 USB 보안토큰부(HSM)와 호스트 간에 주고받도록 하여 사용자 인증 혹은 보안 인증이 처리되게 한다.In contrast, the APDU command and the APDU command processing result distinguished by the function selector 221 may include two input / output pins of the GPIO block 213 of the USB memory unit MEM and a GPIO block of the USB security token unit HSM. At 244, the USB security token unit (HSM) and the host are exchanged between the host and the host by a 2-wire communication method between two input / output pins configured as a clock pin and a data pin, thereby processing user authentication or security authentication.

예컨대, 도 3에 나타낸 바와 같이, 상기 기능 선택부(221)에서 구별한 APDU 명령어는 2 Wire 통신 방식에 의해 각자의 클록 핀에 동기하여 각자의 데이터 핀을 통해 데이터를 주고받는 USB 메모리부(MEM)의 GPIO 블록(213)과 USB 보안토큰부(HSM)의 GPIO 블록(243) 간의 통신을 통해 USB 보안토큰부(HSM)의 메인 CPU(241)로 전달되며, 이때 상기 메인 CPU(241)는 이 APDU 명령어를 상기 보안토큰 파일 시스템 블록(251)으로 전달한다.For example, as shown in FIG. 3, the APDU command distinguished by the function selector 221 may transmit and receive data through its data pin in synchronization with its clock pin by a 2-wire communication method. Is transmitted to the main CPU 241 of the USB secure token unit HSM through communication between the GPIO block 213 of the USB security token unit HSM and the GPIO block 243 of the USB security token unit HSM. The APDU command is transmitted to the secure token file system block 251.

이 경우, 상기 보안토큰 파일 시스템 블록(251)이 호스트에서 파일 읽기 혹은 파일 쓰기를 위한 APDU 명령어를 전달받으면, 상기 보안토큰 파일 시스템 블록(251)은 USB 메모리부(MEM)의 GPIO 블록(213)과 USB 보안토큰부(HSM)의 GPIO 블록(243) 간의 통신을 통해 상기 USB 메모리부(MEM)의 USB 블록(212)의 엔드포인트 레지스터들을 이용하여 데이터를 읽기 혹은 쓰기 하면서 호스트에서 상기 데이터 메모리부(260)로 전달하거나, 혹은 상기 데이터 메모리부(260)에서 호스트로 전달한다.In this case, when the secure token file system block 251 receives an APDU command for reading or writing a file from the host, the secure token file system block 251 is a GPIO block 213 of the USB memory unit MEM. The data memory unit at the host while reading or writing data using the endpoint registers of the USB block 212 of the USB memory unit MEM through communication between the GPIO block 243 of the USB security token unit (HSM). 260, or the data memory unit 260 to the host.

또한, 상기 보안토큰 파일 시스템 블록(251)이 호스트에서 암복호와 관련된 APDU 명령어(예컨대, 개인 키 생성, 암호화, 복호화, 서명, 서명 인증 등)를 전달받으면, 상기 보안토큰 파일 시스템 블록(251)은 상기 암복호 함수 블록(252)의 해당 암복호와 관련한 함수(예컨대, 개인 키 생성 함수, RSA, DES 등의 암복호화 함수, 서명 및 서명 인증 함수)를 호출하여 상기 크립토 CPU(242)로 처리 요청하고, 상기 크립토 CPU(242)가 암복호와 관련 명령을 수행한 결과를 수신하여 메인 CPU(241)를 경유하여 필요에 따라 USB 메모리부(MEM)의 GPIO 블록(213)과 USB 보안토큰부(HSM)의 GPIO 블록(243) 간의 통신을 통해 호스트 측으로 전달하거나 상기 데이터 메모리부(260)에 저장한다.In addition, when the secure token file system block 251 receives an APDU command (eg, private key generation, encryption, decryption, signature, signature authentication, etc.) related to decryption from the host, the secure token file system block 251 is received. Calls a function related to the corresponding decryption of the decryption function block 252 (for example, a private key generation function, an encryption / decryption function such as RSA, DES, a signature and a signature authentication function), and processes it to the crypto CPU 242. Requesting, receiving the result of the encryption / decryption and the related command from the crypto CPU 242, and via the main CPU 241, the GPIO block 213 and the USB security token unit of the USB memory unit MEM as necessary. The GPIO block 243 of the HSM communicates with the host or stores the data in the data memory unit 260.

이상에서 설명한 본 발명에 따른 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치는 상기한 실시예에 한정되지 않고, 이하의 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양하게 변경하여 실시할 수 있는 범위까지 그 기술적 정신이 있다.The USB composite device having the memory function and the security token function according to the present invention described above is not limited to the above-described embodiment, and the present invention belongs without departing from the gist of the present invention as claimed in the following claims. To those skilled in the art, the technical spirit is to the extent that anyone can make various changes.

<도면의 주요부분에 대한 부호의 설명>
100: 보안토큰 100': USB 메모리
110: 보안토큰 CPU 110': 메모리 CPU
111,111': 메인 CPU 111a,111a': USB 핀
112: 크립토 CPU 113,112': USB 블록
114,113': GPIO 블록 115,114': 클록 블록
120,120': 코드 메모리부 121: 보안토큰 파일 시스템 블록
121': 낸드 플래시 파일 시스템 블록
122,122': USB 인터페이스 함수 블록
123: 암호화 블록 124,123': GPIO 제어 함수 블록
130,130': 데이터 메모리부 200: USB 복합장치
210: 메모리 CPU 211: 메인 CPU
211a: USB 핀 212: USB 블록
213: GPIO 블록 214: 클록 블록
220: 코드 메모리부 221: 기능 선택부
222: 낸드 플래시 파일 시스템 블록
223: USB 인터페이스 함수 블록
224: GPIO 제어 함수 블록 230,260: 데이터 메모리부
240: 보안토큰 CPU 241: 메인 CPU
242: 크립토 CPU 243: GPIO 블록
244: 클록 블록 250: 코드 메모리부
251: 보안토큰 파일 시스템 블록
252: 암복호 함수 블록 253: GPIO 제어 함수 블록
MEM: USB 메모리부 HSM: USB 보안토큰부
<Description of the symbols for the main parts of the drawings>
100: security token 100 ': USB memory
110: security token CPU 110 ': memory CPU
111,111 ': Main CPU 111a, 111a': USB pin
112: Crypto CPU 113,112 ': USB block
114,113 ': GPIO block 115,114': clock block
120,120 ': code memory section 121: secure token file system block
121 ': NAND Flash File System Block
122,122 ': USB interface function block
123: encryption block 124,123 ': GPIO control function block
130,130 ': data memory 200: USB composite device
210: memory CPU 211: main CPU
211a: USB Pin 212: USB Block
213: GPIO block 214: clock block
220: code memory unit 221: function selection unit
222: NAND flash file system block
223: USB interface function block
224: GPIO control function block 230, 260: data memory section
240: secure token CPU 241: main CPU
242: crypto CPU 243: GPIO block
244: clock block 250: code memory section
251: Secure Token File System Block
252: decryption function block 253: GPIO control function block
MEM: USB memory section HSM: USB security token section

Claims (5)

호스트에서 UFI 명령어가 전달되면 데이터를 읽기 혹은 쓰기 기능을 수행하고, 호스트에서 APDU 명령어가 전달되면 외부로 전송하는 USB 메모리부(MEM); 및
상기 USB 메모리부(MEM)에서 외부로 전송하는 APDU 명령어를 수신하면 상기 USB 메모리부(MEM)를 통하여 호스트와 사용자 인증 혹은 보안 인증 기능을 수행하는 USB 보안토큰부(HSM);로 구성되는 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치에 있어서,
상기 USB 메모리부(MEM)는
USB 핀(121a)을 통해 호스트와 통신하면서 호스트의 UFI 명령어와 APDU 명령어를 전달받고, USB 메모리부(MEM)의 전체적인 동작을 제어할 수 있는 레지스터들을 포함하는 메인 CPU(211)와; USB 메모리부(MEM)와 호스트 간의 USB 통신을 위해 사용되는 컨트롤 레지스터인 엔드포인트들을 포함하며, 기본적으로 디스크립터 전송용 엔드포인트인 엔드포인트 0와 USB 메모리용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, USB 보안토큰용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, 및 USB 보안토큰부(HSM)가 호스트에 정상 접속된 상태를 알리는 인터럽트 신호를 전송하는 인터럽트 인 엔드포인트를 가지는 USB 블록(212); 상기 USB 메모리부(MEM)와 USB 보안토큰부(HSM) 간의 통신을 위하여 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀을 포함하는 GPIO 블록(213); 및 상기 메인 CPU(211), USB 블록(212), GPIO 블록(213)에 사용되는 클록 주파수를 따로 설정할 수 있는 레지스터들을 포함하는 클록 블록(214);을 포함하는 메모리 CPU(210)와;
호스트에서 USB 메모리부(MEM)로 전달되는 명령어가 UFI 명령어인지 APDU 명령어인지를 구별하여 UFI 명령어는 상기 메인 CPU(211)를 통해 USB 메모리부(MEM)의 낸드 플래시 파일 시스템 블록(222)으로 전달하여 USB 메모리부(MEM)의 데이터 읽기/쓰기가 처리되게 하고, APDU 명령어와 APDU 명령어의 처리 결과는 USB 메모리부(MEM)의 GPIO 블록(213)의 2개의 입출력 핀과 USB 보안토큰부(HSM)의 GPIO 블록(243)에서 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀 사이의 2 Wire 통신 방식에 의해 USB 보안토큰부(HSM)와 호스트 간에 주고받도록 하여 사용자 인증 혹은 보안 인증이 처리되게 하는 기능 선택부(221)와; 데이터 메모리부(230)에 저장되는 데이터의 읽기/쓰기를 직접 관리하는 시스템 블록으로서, USB 대용량 저장장치 클래스(USB MSC; Universal Serial Bus Mass Storage Class)의 사양에 맞게 호스트에서 UFI(USB Floppy Interface)의 기준에 따른 UFI 명령어들이 상기 메인 CPU(211)를 통해 전달되었을 경우 구동하는 낸드 플래시 파일시스템 블록(222); USB 메모리부(MEM)의 USB 블록(212)의 엔드포인트 레지스터들을 이용하여 데이터를 전달하는 기능과, USB 이뉴머레이션에 필요한 디스크립터 정보를 가지는 함수를 포함하고 있으며, 디스크립터 정보를 가지는 함수의 인터페이스 디스크립터에 USB 메모리 인터페이스 방식과 USB 보안토큰 인터페이스 방식이 정의되어 있고, 디스크립터 정보 함수의 엔드포인트 디스크립터에 디스크립터 전송용 엔드포인트인 엔드포인트 0와 USB 메모리용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, USB 보안토큰용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, 및 USB 보안토큰이 호스트에 정상 접속된 상태를 알리는 인터럽트 신호를 전송하는 인터럽트 인 엔드포인트가 정의되어 있는 USB 인터페이스 함수 블록(223); 및 USB 메모리부(MEM)의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 상기 GPIO 블록(213)의 입출력 핀들 중 2개의 입출력 핀을 각각 클록 핀과 데이터 핀으로 설정하는 입출력 제어 함수를 포함하는 GPIO 제어 함수 블록(224);을 포함하는 코드 메모리부(220); 및
호스트의 UFI 명령어와 관련한 데이터를 저장하는 데이터 메모리부(230);
를 포함하여 구성되는 것을 특징으로 하는 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치.
A USB memory unit (MEM) that performs data read or write function when a UFI command is transmitted from the host, and transmits externally when the APDU command is transmitted from the host; And
A USB security token unit (HSM) for performing a user authentication or security authentication function with a host through the USB memory unit (MEM) when receiving the APDU command transmitted from the USB memory unit (MEM) to the outside; In the USB composite device equipped with a security token function,
The USB memory unit (MEM) is
A main CPU 211 that receives registers for controlling the overall operation of the USB memory unit MEM while receiving a host UFI command and an APDU command while communicating with the host through the USB pin 121a; It includes endpoints, which are control registers used for USB communication between the USB memory section (MEM) and the host, basically endpoint 0 for descriptor transfer, two endpoints for reading and writing data for USB memory, A USB block 212 having two endpoints for reading and writing data for the USB security token, and an interrupt in endpoint for transmitting an interrupt signal informing that the USB security token unit (HSM) is normally connected to the host; A GPIO block 213 including two input / output pins configured as clock pins and data pins for communication between the USB memory unit MEM and the USB security token unit HSM; And a clock block (214) including registers for separately setting clock frequencies used in the main CPU (211), the USB block (212), and the GPIO block (213).
The UFI command is transmitted to the NAND flash file system block 222 of the USB memory unit MEM through the main CPU 211 by distinguishing whether the command transmitted from the host to the USB memory unit MEM is a UFI command or an APDU command. The data read / write of the USB memory unit MEM is processed, and the result of processing the APDU command and the APDU command is the two input / output pins of the GPIO block 213 of the USB memory unit MEM and the USB security token unit (HSM). In the GPIO block 243, the user can make a user authentication or security authentication by sending and receiving between the USB security token unit (HSM) and the host by a 2-wire communication method between two input / output pins configured as clock pins and data pins. A selection unit 221; As a system block that directly manages read / write of data stored in the data memory unit 230, the USB Floppy Interface (UFI) is used in the host according to the specification of the USB MSC (Universal Serial Bus Mass Storage Class). A NAND flash file system block 222 which is driven when UFI instructions according to the criteria of the present invention are transmitted through the main CPU 211; Interface descriptor of a function having descriptor information necessary for USB enumeration, and a function having data transfer function using endpoint registers of the USB block 212 of the USB memory unit MEM. The USB memory interface method and the USB security token interface method are defined in the endpoint descriptor of the descriptor information function, endpoint 0, which is a descriptor for transferring a descriptor, two endpoints for reading and writing data for a USB memory, and USB security. A USB interface function block 223 which defines two endpoints for reading and writing data for the token, and an interrupt in endpoint for transmitting an interrupt signal informing that the USB security token is normally connected to the host; And an input / output control function for setting two input / output pins of the input / output pins of the GPIO block 213 that can set input / output of another device according to a user's purpose of the USB memory unit MEM as clock pins and data pins, respectively. A code memory unit 220 including a GPIO control function block 224; And
A data memory unit 230 storing data related to a UFI command of the host;
USB composite device having a memory function and a security token function, characterized in that configured to include.
삭제delete 제 1 항에 있어서, 상기 USB 보안토큰부(HSM)는
USB 메모리부(MEM)를 통해 호스트와 통신하면서 USB 보안토큰부(HSM)의 전체적인 동작을 제어할 수 있는 레지스터들을 포함하는 메인 CPU(241)와; 암복호화 관련 명령을 수행하는 레지스터들과 암복호화 관련 기능을 지원하는 프로세서를 가지고 있는 크립토 CPU(242); 상기 USB 메모리부(MEM)와 USB 보안토큰부(HSM) 간의 통신을 위하여 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀을 포함하는 GPIO 블록(243); 및 상기 메인 CPU(241), 크립토 CPU(242), GPIO 블록(243)에 사용되는 클록 주파수를 따로 설정할 수 있는 레지스터들을 포함하는 클록 블록(244);을 포함하는 보안토큰 CPU(240)와;
상기 데이터 메모리부(260)에 저장되는 데이터를 직접 관리하는 시스템 블록으로서, USB 스마트 카드 클래스(USB SCC; Universal Serial Bus Smart Card Class)의 사양에 맞게 호스트에서 스마트 카트 국제표준 프로토콜인 ISO 7816-4에 따른 APDU(Application Protocol Data Unit) 명령어들이 상기 메인 CPU(241)를 통해 전달되었을 경우 구동되는 보안토큰 파일 시스템 블록(251)과; 호스트로부터 전달되는 APDU 명령어가 암복호와 관련된 명령어일 경우 상기 보안토큰 파일시스템 블록(251)에 의해 호출되는 암복호와 관련된 함수를 포함하는 암복호 함수 블록(252); 및 USB 보안토큰부(HSM)의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 상기 GPIO 블록(243)의 입출력 핀들 중 2개의 입출력 핀을 각각 클록 핀과 데이터 핀으로 설정하는 입출력 제어 함수를 포함하는 GPIO 제어 함수 블록(253);을 포함하는 코드 메모리부(250); 및
호스트의 APDU 명령어와 관련한 데이터를 저장하는 데이터 메모리부(260);
를 포함하여 구성되는 것을 특징으로 하는 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치.
The method of claim 1, wherein the USB security token unit (HSM)
A main CPU 241 including registers for communicating with the host through the USB memory unit MEM and controlling the overall operation of the USB security token unit HSM; A crypto CPU 242 having registers for performing decryption related instructions and a processor supporting a decryption related function; A GPIO block 243 including two input / output pins configured as clock pins and data pins for communication between the USB memory unit MEM and the USB security token unit HSM; And a clock block (244) including registers for separately setting clock frequencies used in the main CPU (241), the crypto CPU (242), and the GPIO block (243).
As a system block that directly manages data stored in the data memory unit 260, an ISO 7816-4, which is an international standard protocol for smart carts in a host, meets the specifications of a universal serial bus smart card (USB SCC). A security token file system block 251 that is driven when APDU (Application Protocol Data Unit) instructions are transmitted through the main CPU 241; A decryption function block 252 including a function related to decryption called by the secure token file system block 251 when the APDU command transmitted from the host is a decryption related command; And an input / output control function for setting two input / output pins of the input / output pins of the GPIO block 243 that can set the input / output of another device according to the user's purpose of the USB security token unit (HSM) as clock pins and data pins, respectively. Code memory unit 250 including; GPIO control function block 253; And
A data memory unit 260 for storing data related to an APDU command of a host;
USB composite device having a memory function and a security token function, characterized in that configured to include.
제 1 항 또는 제 3 항에 있어서,
상기 USB 메모리부(MEM)와 USB 보안토큰부(HSM) 간의 통신을 위하여 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀을 포함하는 상기 USB 메모리부(MEM)의 GPIO 블록(213)과 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)은 2 Wire 통신 방식에 의해 클록 핀의 동기에 맞춰 데이터 핀을 통해 데이터를 전달하는 것을 특징으로 하는 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치.
The method according to claim 1 or 3,
GPIO block 213 and USB security of the USB memory unit MEM including two input / output pins configured as clock pins and data pins for communication between the USB memory unit MEM and the USB security token unit HSM. GPIO block 243 of the token unit (HSM) is a USB composite device having a memory function and a security token function, characterized in that for transferring data through the data pin in synchronization with the clock pin by a 2-wire communication method.
제 4 항에 있어서, 상기 USB 메모리부(MEM)의 GPIO 블록(213)과 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)은 2 Wire 통신 방식으로 데이터를 주고 받을 때 데이터 통신을 시작한다는 의미의 헤더(HEADER) 정보를 먼저 어느 일 측에 전송한 후, 통신할 데이터의 총 데이터 수를 의미하는 데이터 사이즈(DATASIZE)를 보낸 다음 최종적으로 실제 데이터를 전달하는 것을 특징으로 하는 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치.5. The method of claim 4, wherein the GPIO block 213 of the USB memory unit MEM and the GPIO block 243 of the USB security token unit HSM start data communication when data is transmitted and received in a 2-wire communication method. Memory function and security, characterized in that the header (HEADER) information is first sent to one side, and then the data size (DATASIZE), which means the total number of data to be communicated, is transmitted and finally the actual data is transmitted. USB composite device with token function.
KR1020100008066A 2010-01-28 2010-01-28 Usb composite apparatus with memory function and hardware security module KR101070766B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100008066A KR101070766B1 (en) 2010-01-28 2010-01-28 Usb composite apparatus with memory function and hardware security module

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100008066A KR101070766B1 (en) 2010-01-28 2010-01-28 Usb composite apparatus with memory function and hardware security module

Publications (2)

Publication Number Publication Date
KR20110088245A KR20110088245A (en) 2011-08-03
KR101070766B1 true KR101070766B1 (en) 2011-10-07

Family

ID=44926885

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100008066A KR101070766B1 (en) 2010-01-28 2010-01-28 Usb composite apparatus with memory function and hardware security module

Country Status (1)

Country Link
KR (1) KR101070766B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11645000B2 (en) 2019-12-03 2023-05-09 Samsung Electronics Co., Ltd. Storage device including memory controller, and non-volatile memory system including the same and operating method thereof

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105260645A (en) * 2015-10-09 2016-01-20 北京大明五洲科技有限公司 Security authentication system
KR101980487B1 (en) * 2018-07-09 2019-05-20 박영훈 Usb device for network security
CN111708722A (en) * 2020-07-09 2020-09-25 飞鱼网络技术(武汉)有限公司 USB terminal equipment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004013438A (en) 2002-06-05 2004-01-15 Takeshi Sakamura Electronic value data communication method, communication system, ic card, and portable terminal
JP2004086584A (en) * 2002-08-27 2004-03-18 Ntt Comware Corp Authentication device for personal computer

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004013438A (en) 2002-06-05 2004-01-15 Takeshi Sakamura Electronic value data communication method, communication system, ic card, and portable terminal
JP2004086584A (en) * 2002-08-27 2004-03-18 Ntt Comware Corp Authentication device for personal computer

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11645000B2 (en) 2019-12-03 2023-05-09 Samsung Electronics Co., Ltd. Storage device including memory controller, and non-volatile memory system including the same and operating method thereof

Also Published As

Publication number Publication date
KR20110088245A (en) 2011-08-03

Similar Documents

Publication Publication Date Title
CN110414244B (en) Encryption card, electronic equipment and encryption service method
KR100555003B1 (en) Memory card
US7650503B2 (en) Memory card
CN101853417B (en) Working method and system of CF (Compact Flash) interface information safety equipment
CN100419663C (en) Data security
US8627100B2 (en) Separate type mass data encryption/decryption apparatus and implementing method therefor
US8122172B2 (en) Portable information security device
CN108345806A (en) A kind of hardware encryption card and encryption method
TWI451248B (en) Data protecting method, memory controller and memory storage apparatus
CN105243344A (en) Chipset with hard disk encryption function and host computer controller
US20120124380A1 (en) Usb composite device and method therefor
US20100332855A1 (en) Method and Memory Device for Performing an Operation on Data
TWI472927B (en) Method for dispatching and transmitting data stream, memory controller and memory storage apparatus
KR20060102584A (en) Secure data storage apparatus with usb interface, and method thereof
CN101561751A (en) USB encryption and decryption bridging chip
KR101070766B1 (en) Usb composite apparatus with memory function and hardware security module
CN103617127B (en) The method of the storage device with subregion and memory partition
CN103903042A (en) Data flow encryption SD card
CN101540191A (en) Real-time encrypted U disk and high speed encryption-decryption method
TWI430104B (en) Method for dispatching and transmitting data stream, memory controller and memory storage apparatus
CN109657502A (en) A kind of SATA bridge based on domestic cryptographic algorithm connects real-time Transmission encryption system and method
CN107967432A (en) A kind of safe storage device, system and method
CN110321317A (en) A kind of chip of multiplex roles and more coprocessors
EP4086800A1 (en) Integrated circuit module for information security
CN201048046Y (en) Multifunctional identification card

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