KR20110088245A - 메모리 기능과 보안토큰 기능을 구비한 usb 복합장치 - Google Patents

메모리 기능과 보안토큰 기능을 구비한 usb 복합장치 Download PDF

Info

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

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

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 메모리로도 편리하게 사용할 수 있다.

Description

메모리 기능과 보안토큰 기능을 구비한 USB 복합장치{USB COMPOSITE APPARATUS WITH MEMORY FUNCTION AND HARDWARE SECURITY MODULE}
본 발명은 USB(Universal Serial Bus) 복합장치에 관한 것이며, 더욱 상세히는 메모리 기능과 보안토큰(HSM; Hardware Security Module) 기능을 구비한 USB 복합장치에 관한 것이다.
보안토큰은 금융기관의 인터넷뱅킹 인증서를 담아 인터넷뱅킹을 통한 계좌이체 등의 금융거래시 사용자 인증에 사용되거나, 혹은 기업이나 공공기관의 보안 인증서를 담아 인트라넷이나 네트워크 로그인 장치로 사용된다.
상기와 같은 보안토큰은 주로 USB 타입, 예컨대 휴대 가능한 USB 메모리와 유사한 타입으로 개발이 되어 있어 휴대하기 간편하고 사용이 편리할 뿐만이 아니라, 특히 기기 내부에 CPU 및 암호 연산 장치가 있어 전자 서명 키 생성, 전자 서명 생성 및 검증 등이 가능하기 때문에 PC에 보안토큰이 연결되어 있더라도, 해킹에 의해서 보안토큰 내의 암호화된 개인 키를 절대 외부로 빼낼 수가 없으며, 그 안정성이 금융기관 등에서 인정되어 OTP(One Time Password)라고 하는 일회용 비밀번호 생성기와 더불어 1등급 보안매체로 널리 이용되고 있다.
도 1은 일반적인 USB 타입 보안토큰의 구성을 나타낸 블록도이다.
도 1에 나타낸 바와 같이, 일반적인 USB 타입의 보안토큰(100)은 보안토큰 CPU(110)와 코드 메모리부(120) 및 데이터 메모리부(130)로 구성되며, 통상 이들(110,120,130)은 하나로 묶어 COB(CHIP ON BOARD) 형태로 되어 있다.
상기 보안토큰 CPU(110)는 메인 CPU(111)와 크립토(CRYPTO) CPU(112), USB 블록(113), GPIO(General Purpose Input/Output pins) 블록(114), 클록(CLOCK) 블록(115)을 포함하여 구성된다.
상기 메인 CPU(111)는 USB 핀(111a)을 통해 호스트(HOST)와 통신하면서 보안토큰(100)의 전체적인 동작을 제어할 수 있는 레지스터(Register)들을 포함한다.
상기 호스트는 PC를 포함한 각종 USB 호스트 기능이 추가된 제품을 의미한다.
상기 크립토 CPU(112)는 암복호화 관련 명령을 수행하는 레지스터들과 RSA(Rivest Shamir Adleman)(1024bit/2048bit), DES(Data Encryption Standard)/3-DES 등의 암복호화 관련 기능을 지원하는 크립토-코프로세서(Crypto-coprocessor)를 가지고 있다.
상기 USB 블록(113)은 보안토큰(100)과 호스트 간의 USB 통신을 위해 사용되는 컨트롤 레지스터인 엔드포인트(Endpoint)들을 포함한다.
상기 엔드포인트는 USB 디바이스와 호스트가 USB 통신을 통해 데이터를 주고받는 논리 포트로서, 통상 하나의 USB 디바이스는 기본적으로 플러그 앤 플레이 방식으로 USB 디바이스의 디스크립터(Descriptor) 정보를 호스트로 전송하거나 호스트의 명령 신호를 받기 위해 최소한 하나의 디스크립터 전송용 엔드포인트(일명 '엔드포인트 0'라고 부름)을 가져야 하며, 특성에 따라 데이터의 읽기, 쓰기 등을 위해 2개 이상의 엔드포인트를 가질 수 있다. 또한, 이러한 엔드포인트는 데이터의 전송 방향에 따라 호스트로 보낼 데이터를 저장하는 벌크 인-엔드포인트(Bulk in-Endpoint)와 호스트로부터 수신한 데이터를 저장하는 벌크 아웃-엔드포인트(Bulk out-Endpoint)로 구분된다.
상기와 같은 보안토큰(100)은 일반적인 USB 디바이스와 달리 상기한 엔드포인트 0와 보안토큰(100)이 호스트에 정상 접속된 상태를 알리는 인터럽트 신호를 전송하는 인터럽트 인 엔드포인트(Interrupt IN Endpoint)를 가져야 하며, 특성에 따라 데이터의 읽기, 쓰기 등을 위해 2개 이상의 엔드포인트를 가질 수 있다
상기한 디스크립터는 USB 디바이스가 무슨 역할을 하는지에 대한 정보를 가지고 있는 자료 구조로서, USB 디바이스가 호스트의 USB 포트에 삽입되면 가장 먼저 호스트로 전달되는 정보이며, 디바이스의 기존 정보를 가지고 있는 디바이스(Device) 디스크립터, 디바이스의 세부 정보를 가지고 있는 컨피규레이션(Configuration) 디스크립터, 인터페이스 방식을 정의하는 인터페이스 디스크립터, 엔드포인트 사용 방식을 정의하는 엔드포인트 디스크립터로 구분된다.
참고로, 상기 USB 디바이스가 호스트의 USB 포트에 삽입된 후 가장 먼저 호스트와 디스크립터를 주고 받는 과정을 이뉴머레이션(Enumeration)이라고 하며, 호스트에서는 이러한 이뉴머레이션 과정이 완료되면 USB 디바이스를 등록하고, 이후부터 USB 디바이스는 디스크립터에서 설정한 벌크 인-엔드포인트와 벌크 아웃-엔드포인트를 통해 호스트와 데이터를 주고받게 된다.
상기와 같은 보안토큰(100)은 일반적인 USB 디바이스와 달리 호스트에서 이뉴머레이션 과정을 완료하고 보안토큰(100)을 등록하면, 그 직후에 상기한 인터럽트 인 엔드포인트를 통해 호스트에게 정상 연결 상태를 알리는 인터럽트 신호를 전송하고, 이후부터 디스크립터에서 설정한 벌크 인-엔드포인트와 벌크 아웃-엔드포인트를 통해 호스트와 데이터를 주고받게 된다.
상기 GPIO 블록(114)은 보안토큰(100)의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 입출력 핀들을 포함하며, 일반적으로 USB 디바이스의 전원 공급 상태를 나타내는 LED의 ON/OFF 혹은 다른 장치와의 통신을 목적으로 사용될 수 있다.
상기 클록 블록(115)은 상기 메인 CPU(111), 크립토 CPU(112), USB 블록(113), GPIO 블록(114)에 사용되는 클록 주파수를 따로 설정할 수 있는 레지스터들을 포함한다.
상기 코드 메모리부(120)는 주로 보안토큰(100)의 기능을 구현하기 위한 소프트웨어들이 저장되어 있으며, 램(RAM)처럼 전원이 인가되어 있는 경우만 데이터가 저장되는 것이 아니라 한번 쓰기가 된 데이터는 전원이 없어지더라도 지워지지 않고 계속 저장되어 있는 롬(ROM)이다.
상기 코드 메모리부(120)는 상기 보안토큰 CPU(110)가 가지고 있는 레지스터들의 값을 기능별로 직접 제어하기 위하여 보안토큰 파일시스템 블록(121)과 USB 인터페이스 함수 블록(122), 암복호 함수 블록(123), GPIO 제어 함수 블록(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)에 저장한다.
상기 USB 인터페이스 함수 블록(122)은 상기 보안토큰 CPU(110)의 USB 블록(113)의 엔드포인트 레지스터들을 이용하여 데이터를 전달하는 기능과, USB 이뉴머레이션(Enumeration)에 필요한 디스크립터 정보를 가지는 함수를 포함하고 있다.
상기 암복호 함수 블록(123)은 호스트로부터 전달되는 APDU 명령어가 암복호와 관련된 명령어일 경우 상기 보안토큰 파일시스템 블록(121)에 의해 호출되는 암복호와 관련된 함수(예컨대, 개인 키 생성 함수, RSA, DES 등의 암복호화 함수, 서명 및 서명 인증 함수)를 포함한다.
상기 GPIO 제어 함수 블록(124)은 보안토큰(100)의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 상기 GPIO 블록(114)의 입출력 핀들의 입출력을 설정하는 입출력 제어 함수를 포함한다.
상기 데이터 메모리부(130)는 호스트의 APDU 명령어(예컨대, 개인 키 생성, 파일 읽기, 파일 쓰기, 암호화, 복호화, 서명, 서명 인증 등)와 관련한 데이터(예컨대, 개인 키, 읽기/쓰기 데이터, 암호 데이터, 복호 데이터, 서명 키, 서명 인증 키 등)를 저장한다.
상기와 같이 구성되는 종래의 보안토큰(100)은 다음과 같이 작동한다.
상기 보안토큰(100)의 USB 핀(111a)이 PC와 같은 호스트의 USB 포트에 삽입되면, 가장 먼저 상기 메인 CPU(111)가 구동하여 호스트의 디스크립터 요청(request)을 수신하여 상기 보안토큰 파일 시스템 블록(121)으로 전달한다.
이에 따라서, 상기 보안토큰 파일 시스템 블록(121)은 상기 USB 인터페이스 함수 블록(122)의 디스크립터 정보 함수를 호출하여 이 디스크립터 정보 함수에서 설정한 디바이스 디스크립터, 컨피규레이션 디스크립터, 인터페이스 디스크립터, 엔드포인트 디스크립터를 상기 메인 CPU(111)와 USB 핀(111a)을 통해 호스트로 전달하는 이뉴머레이션 과정을 수행한다.
이때, 또한 상기 메인 CPU(111)는 상기 GPIO 블록(114)으로 전원 온 신호를 전달하여, 상기 GPIO 블록(114)의 어느 하나의 출력 핀에 연결된 LED를 온시킴으로써 현재 보안토큰(100)이 전원 온 상태임을 사용자에게 알린다.
이때, 또한 상기 메인 CPU(111)가 구동함과 동시에 상기 클록 블록(115)이 구동하여 상기 메인 CPU(111), 크립토 CPU(112), USB 블록(113), GPIO 블록(114)에 사용되는 클록 주파수를 발생한다.
이와 같이 상기 보안토큰(100)과 호스트 간의 이뉴머레이션 과정이 완료되면 상기 호스트는 상기 보안토큰(100)을 등록하고, 그 직후에 상기 보안토큰(100)은 상기 USB 블록(113)의 인터럽트 인 엔드포인트를 통해 호스트에게 정상 연결 상태를 알리는 인터럽트 신호를 전송한다.
이와 같이 상기 보안토큰(100)은 상기 USB 블록(113)의 인터럽트 인 엔드포인트를 통해 호스트에게 정상 연결 상태를 알리는 인터럽트 신호를 전송하고 나면, 이후부터 엔드포인트 디스크립터에서 설정한 상기 USB 블록(113)의 벌크 인-엔드포인트와 벌크 아웃-엔드포인트를 통해 호스트와 데이터를 주고받게 된다.
예컨대, 호스트에서 파일 읽기 혹은 파일 쓰기를 위한 APDU 명령어를 보안토큰(100)의 메인 CPU(111)로 전달하면, 상기 메인 CPU(111)는 이 명령어를 상기 보안토큰 파일 시스템 블록(121)으로 전달한다.
이에 따라서, 상기 보안토큰 파일 시스템 블록(121)은 상기 USB 블록(113)의 엔드포인트 레지스터들을 이용하여 데이터를 읽기 혹은 쓰기 하면서 호스트에서 상기 데이터 메모리부(130)로 전달하거나, 혹은 상기 데이터 메모리부(130)에서 호스트로 전달한다.
예컨대, 호스트에서 암복호와 관련된 명령어(예컨대, 개인 키 생성, 암호화, 복호화, 서명, 서명 인증 등)를 보안토큰(100)의 메인 CPU(111)로 전달하면, 상기 메인 CPU(111)는 이 명령어를 상기 보안토큰 파일 시스템 블록(121)으로 전달한다.
이에 따라서, 상기 보안토큰 파일 시스템 블록(121)은 상기 암복호 함수 블록(123)의 해당 암복호와 관련한 함수(예컨대, 개인 키 생성 함수, RSA, DES 등의 암복호화 함수, 서명 및 서명 인증 함수)를 호출하여 상기 크립토 CPU(112)로 처리 요청하고, 상기 크립토 CPU(112)가 암복호와 관련 명령을 수행한 결과를 수신하여 필요에 따라 호스트 측으로 전달하거나 상기 데이터 메모리부(130)에 저장한다.
한편, 상기와 같이 작동하는 보안토큰(100)은 USB 타입, 예컨대 휴대 가능한 USB 메모리와 유사한 타입으로 개발이 되어 전적으로 금융거래시 사용자 인증에 사용되거나, 혹은 기업이나 공공기관의 보안 인증에 사용되므로, 사용자가 필요로 하는 USB 메모리 기능을 전혀 제공하지 못하는 단점이 있다.
참고로, 도 2는 일반적인 USB 메모리의 구성을 나타낸 블록도이다.
도 2에 나타낸 바와 같이, 일반적인 USB 메모리(100')는 메모리 CPU(110')와 코드 메모리부(120') 및 데이터 메모리부(130')로 구성되며, 상기 메모리 CPU(110')와 코드 메모리부(120')는 원칩 형태로 이루어지고, 상기 데이터 메모리부(130')로는 주로 낸드 플래시 메모리가 사용된다.
상기 메모리 CPU(110')는 메인 CPU(111')와 USB 블록(112'), GPIO 블록(113'), 클록 블록(114')을 포함하여 구성된다.
상기 메인 CPU(111')는 USB 핀(111a')을 통해 호스트와 통신하면서 USB 메모리(100')의 전체적인 동작을 제어할 수 있는 레지스터(Register)들을 포함한다.
상기 호스트는 PC를 포함한 각종 USB 호스트 기능이 추가된 제품을 의미한다.
상기 USB 블록(112')은 USB 메모리(100')와 호스트 간의 USB 통신을 위해 사용되는 컨트롤 레지스터인 엔드포인트(Endpoint)들을 포함하며, 기본적으로 상기한 이뉴머레이션을 위한 엔드포인트 0와 데이터의 읽기, 쓰기 등을 위해 2개 이상의 엔드포인트를 가질 수 있다.
상기와 같은 USB 메모리(100')는 호스트에서 이뉴머레이션 과정을 완료하고 USB 메모리(100')를 등록하면, 이후부터 디스크립터에서 설정한 벌크 인-엔드포인트와 벌크 아웃-엔드포인트를 통해 호스트와 데이터를 주고받게 된다.
상기 GPIO 블록(113')은 USB 메모리(100')의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 입출력 핀들을 포함하며, 일반적으로 USB 디바이스의 전원 공급 상태를 나타내는 LED의 ON/OFF 혹은 다른 장치와의 통신을 목적으로 사용될 수 있다.
상기 클록 블록(114')은 상기 메인 CPU(111'), USB 블록(112'), GPIO 블록(113')에 사용되는 클록 주파수를 따로 설정할 수 있는 레지스터들을 포함한다.
상기 코드 메모리부(120')는 주로 USB 메모리(100')의 기능을 구현하기 위한 소프트웨어들이 저장되어 있으며, 한번 쓰기가 된 데이터는 전원이 없어지더라도 지워지지 않고 계속 저장되어 있는 롬(ROM)이다.
상기 코드 메모리부(120')는 상기 데이터 메모리부(130')에 저장되는 데이터를 직접 관리하기 위하여 낸드 플래시 파일시스템 블록(121')과 USB 인터페이스 함수 블록(122'), GPIO 제어 함수 블록(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')는 호스트에 연결되었을 경우 마치 하드디스크처럼 인식되어 이동식 디스크로 사용할 수 있게 된다.
상기 USB 인터페이스 함수 블록(122')은 상기 USB 메모리(100')의 USB 블록(112')의 엔드포인트 레지스터들을 이용하여 데이터를 전달하는 기능과, USB 이뉴머레이션에 필요한 디스크립터 정보를 가지는 함수를 포함하고 있다.
상기 GPIO 제어 함수 블록(123')은 USB 메모리(100')의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 상기 GPIO 블록(113')의 입출력 핀들의 입출력을 설정하는 입출력 제어 함수를 포함한다.
상기 데이터 메모리부(130')는 호스트의 UFI 명령어(예컨대, 데이터 읽기, 데이터 쓰기 등)와 관련한 데이터(예컨대, 읽기/쓰기 데이터 등)를 저장한다.
상기와 같이 구성되는 종래의 USB 메모리(100')는 다음과 같이 작동한다.
상기 USB 메모리(100')의 USB 핀(111a')이 PC와 같은 호스트의 USB 포트에 삽입되면, 가장 먼저 상기 메인 CPU(111')가 구동하여 호스트의 디스크립터 요청(request)을 수신하여 상기 낸드 플래시 파일 시스템 블록(121')으로 전달한다.
이에 따라서, 상기 낸드 플래시 파일 시스템 블록(121')은 상기 USB 인터페이스 함수 블록(122')의 디스크립터 정보 함수를 호출하여 이 디스크립터 정보 함수에서 설정한 디바이스 디스크립터, 컨피규레이션 디스크립터, 인터페이스 디스크립터, 엔드포인트 디스크립터를 상기 메인 CPU(111')와 USB 핀(111a')을 통해 호스트로 전달하는 이뉴머레이션 과정을 수행한다.
이때, 또한 상기 메인 CPU(111')는 상기 GPIO 블록(113')으로 전원 온 신호를 전달하여, 상기 GPIO 블록(113')의 어느 하나의 출력 핀에 연결된 LED를 온시킴으로써 현재 USB 메모리(100')가 전원 온 상태임을 사용자에게 알린다.
이때, 또한 상기 메인 CPU(111')가 구동함과 동시에 상기 클록 블록(114')이 구동하여 상기 메인 CPU(111'), USB 블록(112'), GPIO 블록(113')에 사용되는 클록 주파수를 발생한다.
이와 같이 상기 USB 메모리(100')와 호스트 간의 이뉴머레이션 과정이 완료되면 상기 호스트는 상기 USB 메모리(100')를 등록하고, 이후부터 엔드포인트 디스크립터에서 설정한 상기 USB 블록(113')의 벌크 인-엔드포인트와 벌크 아웃-엔드포인트를 통해 호스트와 데이터를 주고받게 된다.
예컨대, 호스트에서 데이터 읽기 혹은 데이터 쓰기를 위한 UFI 명령어를 USB 메모리(100')의 메인 CPU(111')로 전달하면, 상기 메인 CPU(111')는 이 명령어를 상기 낸드 플래시 파일 시스템 블록(121')으로 전달한다.
이에 따라서, 상기 낸드 플래시 파일 시스템 블록(121')은 상기 USB 블록(112')의 엔드포인트 레지스터들을 이용하여 데이터를 읽기 혹은 쓰기 하면서 호스트에서 상기 데이터 메모리부(130')로 전달하거나, 혹은 상기 데이터 메모리부(130')에서 호스트로 전달한다.
본 발명은 상기한 바와 같은 종래의 문제점을 해결하기 위한 것으로, 본 발명의 목적은 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 복합장치를 제공하는 것이다.
상기한 바와 같은 본 발명의 목적을 달성하기 위하여, 본 발명에 따른 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치는, 호스트에서 UFI 명령어가 전달되면 데이터를 읽기 혹은 쓰기 기능을 수행하고, 호스트에서 APDU 명령어가 전달되면 외부로 전송하는 USB 메모리부; 및 상기 USB 메모리부에서 외부로 전송하는 APDU 명령어를 수신하면 상기 USB 메모리부를 통하여 호스트와 사용자 인증 혹은 보안 인증 기능을 수행하는 USB 보안토큰부(HIM);로 구성되는 것을 특징으로 한다.
본 발명은 사용자가 금융거래시 사용자 인증, 기업이나 공공기관의 보안 인증에 사용할 뿐만 아니라, USB 메모리로도 편리하게 사용할 수 있다.
도 1은 일반적인 USB 타입 보안토큰의 구성을 나타낸 블록도.
도 2는 일반적인 USB 메모리의 구성을 나타낸 블록도.
도 3은 본 발명에 따른 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치의 구성을 나타낸 블록도.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 더욱 상세하게 설명한다.
도 3을 참조하면, 본 발명에 따른 USB 복합장치(200)는 호스트에서 UFI 명령어가 전달되면 데이터를 읽기 혹은 쓰기 기능을 수행하고, 호스트에서 APDU 명령어가 전달되면 외부로 전송하는 USB 메모리부(MEM) 및 상기 USB 메모리부(MEM)에서 외부로 전송하는 APDU 명령어를 수신하면 상기 USB 메모리부(MEM)를 통하여 호스트와 사용자 인증 혹은 보안 인증 기능을 수행하는 USB 보안토큰부(HSM)로 구성된다.
상기 USB 메모리부(MEM)는 메모리 CPU(210)와 코드 메모리부(220) 및 데이터 메모리부(230)를 포함하여 구성되며, 상기 메모리 CPU(210)와 코드 메모리부(220)는 원칩 형태로 이루어지고, 상기 데이터 메모리부(230)로는 주로 낸드 플래시 메모리가 사용된다.
상기 메모리 CPU(210)는 메인 CPU(211)와 USB 블록(212), GPIO 블록(213), 클록 블록(214)을 포함하여 구성된다.
상기 메인 CPU(211)는 USB 핀(211a)을 통해 호스트와 통신하면서 호스트의 UFI 명령어와 APDU 명령어를 전달받고, USB 메모리부(MEM)의 전체적인 동작을 제어할 수 있는 레지스터들을 포함한다.
상기 USB 블록(212)은 USB 메모리부(MEM)와 호스트 간의 USB 통신을 위해 사용되는 컨트롤 레지스터인 엔드포인트들을 포함하며, 기본적으로 디스크립터 전송용 엔드포인트인 엔드포인트 0와 USB 메모리용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, USB 보안토큰용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, 및 USB 보안토큰부(HSM)가 호스트에 정상 접속된 상태를 알리는 인터럽트 신호를 전송하는 인터럽트 인 엔드포인트를 가진다.
상기 GPIO 블록(213)은 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 입출력 핀들을 포함하며, 일반적으로 USB 디바이스의 전원 공급 상태를 나타내는 LED의 ON/OFF 혹은 다른 장치와의 통신을 목적으로 사용될 수 있다.
상기 GPIO 블록(213)은 상기 USB 메모리부(MEM)와 USB 보안토큰부(HSM) 간의 통신을 위하여 클록(CLOCK) 핀과 데이터(DATA) 핀으로 설정된 2개의 입출력 핀을 포함한다.
상기 클록 블록(214)은 상기 메인 CPU(211), USB 블록(212), GPIO 블록(213)에 사용되는 클록 주파수를 따로 설정할 수 있는 레지스터들을 포함한다.
상기 코드 메모리부(220)는 기능 선택부(221)와 낸드 플래시 파일 시스템 블록(222), USB 인터페이스 함수 블록(223), GPIO 제어 함수 블록(224)을 포함하여 구성된다.
상기 기능 선택부(221)는 호스트에서 USB 메모리부(MEM)로 전달되는 명령어가 UFI 명령어인지 APDU 명령어인지를 구별하여 UFI 명령어는 상기 메인 CPU(211)를 통해 USB 메모리부(MEM)의 낸드 플래시 파일 시스템 블록(222)으로 전달하여 USB 메모리부(MEM)의 데이터 읽기/쓰기가 처리되게 한다.
상기 기능 선택부(221)는 APDU 명령어와 APDU 명령어의 처리 결과는 USB 메모리부(MEM)의 GPIO 블록(213)의 2개의 입출력 핀과 USB 보안토큰부(HSM)의 GPIO 블록(244)에서 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀 사이의 2 Wire 통신 방식에 의해 USB 보안토큰부(HSM)와 호스트 간에 주고받도록 하여 사용자 인증 혹은 보안 인증이 처리되게 한다.
상기 낸드 플래시 파일시스템 블록(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)는 호스트에 연결되었을 경우 마치 하드디스크처럼 인식되어 이동식 디스크로 사용할 수 있게 된다.
상기 USB 인터페이스 함수 블록(223)은 USB 메모리부(MEM)의 USB 블록(212)의 엔드포인트 레지스터들을 이용하여 데이터를 전달하는 기능과, USB 이뉴머레이션에 필요한 디스크립터 정보를 가지는 함수를 포함하고 있다.
상기 USB 인터페이스 함수 블록(223)은 특히, 디스크립터 정보를 가지는 함수의 인터페이스 디스크립터에 USB 메모리 인터페이스 방식과 USB 보안토큰 인터페이스 방식이 정의되어 있고, 디스크립터 정보 함수의 엔드포인트 디스크립터에 디스크립터 전송용 엔드포인트인 엔드포인트 0와 USB 메모리용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, USB 보안토큰용 데이터 읽기, 쓰기를 위한 2개의 엔드포인트, 및 USB 보안토큰이 호스트에 정상 접속된 상태를 알리는 인터럽트 신호를 전송하는 인터럽트 인 엔드포인트가 정의되어 있다.
상기 GPIO 제어 함수 블록(224)은 USB 메모리부(MEM)의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 상기 GPIO 블록(213)의 입출력 핀들 중 2개의 입출력 핀을 각각 클록 핀과 데이터 핀으로 설정하는 입출력 제어 함수를 포함한다.
상기 데이터 메모리부(230)는 호스트의 UFI 명령어(예컨대, 데이터 읽기, 데이터 쓰기 등)와 관련한 데이터(예컨대, 읽기/쓰기 데이터 등)를 저장한다.
상기 USB 보안토큰부(HSM)는 보안토큰 CPU(240)와 코드 메모리부(250) 및 데이터 메모리부(260)로 구성되며, 이들(240,250,260)은 하나로 묶어 COB(CHIP ON BOARD) 형태로 되어 있는 것이 바람직하다.
상기 보안토큰 CPU(240)는 메인 CPU(241)와 크립토 CPU(242), GPIO 블록(243), 클록 블록(244)을 포함하여 구성된다.
상기 메인 CPU(241)는 USB 메모리부(MEM)를 통해 호스트와 통신하면서 USB 보안토큰부(HSM)의 전체적인 동작을 제어할 수 있는 레지스터들을 포함한다.
상기 크립토 CPU(242)는 암복호화 관련 명령을 수행하는 레지스터들과 RSA(Rivest Shamir Adleman)(1024bit/2048bit), DES(Data Encryption Standard)/3-DES 등의 암복호화 관련 기능을 지원하는 크립토-코프로세서(Crypto-coprocessor)를 가지고 있다.
상기 GPIO 블록(243)은 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 입출력 핀들을 포함하며, 상기 USB 메모리부(MEM)와 USB 보안토큰부(HSM) 간의 통신을 위하여 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀을 포함한다.
상기 클록 블록(244)은 상기 메인 CPU(241), 크립토 CPU(242), GPIO 블록(243)에 사용되는 클록 주파수를 따로 설정할 수 있는 레지스터들을 포함한다.
상기 코드 메모리부(250)는 보안토큰 파일 시스템 블록(251)과 암복호 함수 블록(252), GPIO 제어 함수 블록(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)에 저장한다.
상기 암복호 함수 블록(252)은 호스트로부터 전달되는 APDU 명령어가 암복호와 관련된 명령어일 경우 상기 보안토큰 파일시스템 블록(251)에 의해 호출되는 암복호와 관련된 함수(예컨대, 개인 키 생성 함수, RSA, DES 등의 암복호화 함수, 서명 및 서명 인증 함수)를 포함한다.
상기 GPIO 제어 함수 블록(253)은 USB 보안토큰부(HSM)의 사용자의 목적에 맞게 다른 장치의 입출력을 설정할 수 있는 상기 GPIO 블록(243)의 입출력 핀들 중 2개의 입출력 핀을 각각 클록 핀과 데이터 핀으로 설정하는 입출력 제어 함수를 포함한다.
상기 데이터 메모리부(260)는 호스트의 APDU 명령어(예컨대, 개인 키 생성, 파일 읽기, 파일 쓰기, 암호화, 복호화, 서명, 서명 인증 등)와 관련한 데이터(예컨대, 개인 키, 읽기/쓰기 데이터, 암호 데이터, 복호 데이터, 서명 키, 서명 인증 키 등)를 저장한다.
상기 USB 메모리부(MEM)와 USB 보안토큰부(HSM) 간의 통신을 위하여 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀을 포함하는 상기 USB 메모리부(MEM)의 GPIO 블록(213)과 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)은 2 Wire 통신 방식에 의해 클록 핀의 동기에 맞춰 데이터 핀을 통해 데이터를 전달한다.
상기 USB 메모리부(MEM)의 GPIO 블록(213)과 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)은 2 Wire 통신 방식으로 데이터를 주고 받을 때 데이터 통신을 시작한다는 의미의 헤더(HEADER) 정보를 먼저 어느 일 측에 전송한 후, 통신할 데이터의 총 데이터 수를 의미하는 데이터 사이즈(DATASIZE)를 보낸 다음 최종적으로 실제 데이터를 전달한다.
예컨대, 호스트로부터 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)으로 전달한다.
상기와 같이 구성되는 본 발명에 따른 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치(200)는 다음과 같이 작동한다.
상기 USB 복합장치(200)의 USB 핀(211a)이 PC와 같은 호스트의 USB 포트에 삽입되면, 가장 먼저 상기 USB 메모리부(MEM)의 메인 CPU(211)와 USB 보안토큰부(HSM)의 메인 CPU(241)가 구동하고, 이후 상기 USB 메모리부(MEM)는 호스트의 디스크립터 요청(request)을 수신하여 상기 낸드 플래시 파일 시스템 블록(222)으로 전달한다.
이에 따라서, 상기 낸드 플래시 파일 시스템 블록(222)은 상기 USB 인터페이스 함수 블록(223)의 디스크립터 정보 함수를 호출하여 이 디스크립터 정보 함수에서 설정한 디바이스 디스크립터, 컨피규레이션 디스크립터, 인터페이스 디스크립터, 엔드포인트 디스크립터를 상기 메인 CPU(211)와 USB 핀(211a)을 통해 호스트로 전달하는 이뉴머레이션 과정을 수행한다.
이때, 또한 상기 USB 메모리부(MEM)의 메인 CPU(211)는 상기 GPIO 블록(213)으로 전원 온 신호를 전달하여, 상기 GPIO 블록(213)의 어느 하나의 출력 핀에 연결된 LED를 온시킴으로써 현재 USB 복합장치(200)가 전원 온 상태임을 사용자에게 알린다.
이때, 또한 상기 USB 메모리부(MEM)의 메인 CPU(211)가 구동함과 동시에 상기 클록 블록(214)이 구동하여 상기 메인 CPU(211), USB 블록(212), GPIO 블록(213)에 사용되는 클록 주파수를 발생한다.
이때, 또한 상기 USB 보안토큰부(HSM)의 메인 CPU(240)가 구동함과 동시에 상기 클록 블록(244)이 구동하여 상기 메인 CPU(241), 크립토 CPU(242), GPIO 블록(243)에 사용되는 클록 주파수를 발생한다.
이와 같이 상기 USB 복합장치(200)와 호스트 간의 이뉴머레이션 과정이 완료되면 상기 호스트는 상기 USB 복합장치(200)를 등록하고, 그 직후에 상기 USB 복합장치(200)는 USB 메모리부(MEM)의 USB 블록(212)의 인터럽트 인 엔드포인트를 통해 호스트에게 정상 연결 상태를 알리는 인터럽트 신호를 전송한다.
이와 같이 상기 USB 복합장치(200)가 USB 메모리부(MEM)의 USB 블록(212)의 인터럽트 인 엔드포인트를 통해 호스트에게 정상 연결 상태를 알리는 인터럽트 신호를 전송하고 나면, 이후부터 상기 USB 인터페이스 함수 블록(223)의 엔드포인트 디스크립터에서 설정한 USB 메모리부(MEM)의 USB 블록(212)의 벌크 인-엔드포인트와 벌크 아웃-엔드포인트를 통해 호스트와 데이터를 주고받게 된다.
이때, 만약 호스트에서 데이터 읽기 혹은 데이터 쓰기를 위한 UFI 명령어를 USB 메모리부(MEM)의 메인 CPU(211)로 전달하거나, 혹은 호스트에서 파일 읽기 혹은 파일 쓰기를 위한 APDU 명령어를 USB 메모리부(MEM)의 메인 CPU(211)로 전달하거나, 혹은 호스트에서 암복호와 관련된 APDU 명령어(예컨대, 개인 키 생성, 암호화, 복호화, 서명, 서명 인증 등)를 USB 메모리부(MEM)의 메인 CPU(211)로 전달하면, 상기 메인 CPU(211)는 이 모든 명령어를 상기 기능 선택부(221)로 전달한다.
이에 따라서, 상기 기능 선택부(221)는 호스트에서 USB 메모리부(MEM)로 전달되는 명령어가 UFI 명령어인지 APDU 명령어인지를 구별한다.
이때, 상기 기능 선택부(221)에서 구별한 UFI 명령어는 USB 메모리부(MEM)의 메인 CPU(211)를 통해 상기 낸드 플래시 파일 시스템 블록(222)으로 전달하여 USB 메모리부(MEM)의 데이터 읽기/쓰기가 처리되게 한다.
이 경우, 상기 낸드 플래시 파일 시스템 블록(222)은 상기 USB 블록(212)의 엔드포인트 레지스터들을 이용하여 데이터를 읽기 혹은 쓰기 하면서 호스트에서 상기 데이터 메모리부(230)로 전달하거나, 혹은 상기 데이터 메모리부(230)에서 호스트로 전달한다.
이와 달리, 상기 기능 선택부(221)에서 구별한 APDU 명령어와 APDU 명령어의 처리 결과는 USB 메모리부(MEM)의 GPIO 블록(213)의 2개의 입출력 핀과 USB 보안토큰부(HSM)의 GPIO 블록(244)에서 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀 사이의 2 Wire 통신 방식에 의해 USB 보안토큰부(HSM)와 호스트 간에 주고받도록 하여 사용자 인증 혹은 보안 인증이 처리되게 한다.
예컨대, 도 3에 나타낸 바와 같이, 상기 기능 선택부(221)에서 구별한 APDU 명령어는 2 Wire 통신 방식에 의해 각자의 클록 핀에 동기하여 각자의 데이터 핀을 통해 데이터를 주고받는 USB 메모리부(MEM)의 GPIO 블록(213)과 USB 보안토큰부(HSM)의 GPIO 블록(243) 간의 통신을 통해 USB 보안토큰부(HSM)의 메인 CPU(241)로 전달되며, 이때 상기 메인 CPU(241)는 이 APDU 명령어를 상기 보안토큰 파일 시스템 블록(251)으로 전달한다.
이 경우, 상기 보안토큰 파일 시스템 블록(251)이 호스트에서 파일 읽기 혹은 파일 쓰기를 위한 APDU 명령어를 전달받으면, 상기 보안토큰 파일 시스템 블록(251)은 USB 메모리부(MEM)의 GPIO 블록(213)과 USB 보안토큰부(HSM)의 GPIO 블록(243) 간의 통신을 통해 상기 USB 메모리부(MEM)의 USB 블록(212)의 엔드포인트 레지스터들을 이용하여 데이터를 읽기 혹은 쓰기 하면서 호스트에서 상기 데이터 메모리부(260)로 전달하거나, 혹은 상기 데이터 메모리부(260)에서 호스트로 전달한다.
또한, 상기 보안토큰 파일 시스템 블록(251)이 호스트에서 암복호와 관련된 APDU 명령어(예컨대, 개인 키 생성, 암호화, 복호화, 서명, 서명 인증 등)를 전달받으면, 상기 보안토큰 파일 시스템 블록(251)은 상기 암복호 함수 블록(252)의 해당 암복호와 관련한 함수(예컨대, 개인 키 생성 함수, RSA, DES 등의 암복호화 함수, 서명 및 서명 인증 함수)를 호출하여 상기 크립토 CPU(242)로 처리 요청하고, 상기 크립토 CPU(242)가 암복호와 관련 명령을 수행한 결과를 수신하여 메인 CPU(241)를 경유하여 필요에 따라 USB 메모리부(MEM)의 GPIO 블록(213)과 USB 보안토큰부(HSM)의 GPIO 블록(243) 간의 통신을 통해 호스트 측으로 전달하거나 상기 데이터 메모리부(260)에 저장한다.
이상에서 설명한 본 발명에 따른 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치는 상기한 실시예에 한정되지 않고, 이하의 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양하게 변경하여 실시할 수 있는 범위까지 그 기술적 정신이 있다.
<도면의 주요부분에 대한 부호의 설명>
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 보안토큰부

Claims (5)

  1. 호스트에서 UFI 명령어가 전달되면 데이터를 읽기 혹은 쓰기 기능을 수행하고, 호스트에서 APDU 명령어가 전달되면 외부로 전송하는 USB 메모리부(MEM); 및
    상기 USB 메모리부(MEM)에서 외부로 전송하는 APDU 명령어를 수신하면 상기 USB 메모리부(MEM)를 통하여 호스트와 사용자 인증 혹은 보안 인증 기능을 수행하는 USB 보안토큰부(HSM);
    로 구성되는 것을 특징으로 하는 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치.
  2. 제 1 항에 있어서, 상기 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 복합장치.
  3. 제 1 항 또는 제 2 항에 있어서, 상기 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 복합장치.
  4. 제 2 항 또는 제 3 항에 있어서,
    상기 USB 메모리부(MEM)와 USB 보안토큰부(HSM) 간의 통신을 위하여 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀을 포함하는 상기 USB 메모리부(MEM)의 GPIO 블록(213)과 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)은 2 Wire 통신 방식에 의해 클록 핀의 동기에 맞춰 데이터 핀을 통해 데이터를 전달하는 것을 특징으로 하는 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치.
  5. 제 4 항에 있어서, 상기 USB 메모리부(MEM)의 GPIO 블록(213)과 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)은 2 Wire 통신 방식으로 데이터를 주고 받을 때 데이터 통신을 시작한다는 의미의 헤더(HEADER) 정보를 먼저 어느 일 측에 전송한 후, 통신할 데이터의 총 데이터 수를 의미하는 데이터 사이즈(DATASIZE)를 보낸 다음 최종적으로 실제 데이터를 전달하는 것을 특징으로 하는 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치.
KR1020100008066A 2010-01-28 2010-01-28 메모리 기능과 보안토큰 기능을 구비한 usb 복합장치 KR101070766B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100008066A KR101070766B1 (ko) 2010-01-28 2010-01-28 메모리 기능과 보안토큰 기능을 구비한 usb 복합장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100008066A KR101070766B1 (ko) 2010-01-28 2010-01-28 메모리 기능과 보안토큰 기능을 구비한 usb 복합장치

Publications (2)

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

Family

ID=44926885

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100008066A KR101070766B1 (ko) 2010-01-28 2010-01-28 메모리 기능과 보안토큰 기능을 구비한 usb 복합장치

Country Status (1)

Country Link
KR (1) KR101070766B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105260645A (zh) * 2015-10-09 2016-01-20 北京大明五洲科技有限公司 安全认证系统
KR101980487B1 (ko) * 2018-07-09 2019-05-20 박영훈 네트워크 보안 usb 장치
CN111708722A (zh) * 2020-07-09 2020-09-25 飞鱼网络技术(武汉)有限公司 一种usb终端设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210069480A (ko) 2019-12-03 2021-06-11 삼성전자주식회사 메모리 컨트롤러를 포함하는 스토리지 장치 및 비휘발성 메모리 시스템과 이의 동작 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004013438A (ja) 2002-06-05 2004-01-15 Takeshi Sakamura 電子価値データ通信方法、通信システム、icカード及び携帯端末
JP2004086584A (ja) * 2002-08-27 2004-03-18 Ntt Comware Corp パーソナルコンピュータにおける認証装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105260645A (zh) * 2015-10-09 2016-01-20 北京大明五洲科技有限公司 安全认证系统
KR101980487B1 (ko) * 2018-07-09 2019-05-20 박영훈 네트워크 보안 usb 장치
US10547619B1 (en) 2018-07-09 2020-01-28 Young Hoon Park USB device for network security
CN111708722A (zh) * 2020-07-09 2020-09-25 飞鱼网络技术(武汉)有限公司 一种usb终端设备

Also Published As

Publication number Publication date
KR101070766B1 (ko) 2011-10-07

Similar Documents

Publication Publication Date Title
CN110414244B (zh) 加密卡、电子设备及加密服务方法
US8627100B2 (en) Separate type mass data encryption/decryption apparatus and implementing method therefor
KR100555003B1 (ko) 기억 장치
CN100419663C (zh) 数据安全
CN101853417B (zh) Cf接口信息安全设备的工作方法和系统
US8516232B2 (en) Method and memory device for performing an operation on data
US8122172B2 (en) Portable information security device
US20080082825A1 (en) Memory card
US20120124380A1 (en) Usb composite device and method therefor
CN108345806A (zh) 一种硬件加密卡和加密方法
TWI472927B (zh) 資料串分派與傳送方法、記憶體控制器與記憶體儲存裝置
KR20060102584A (ko) 유에스비 인터페이스를 구비한 보안 데이터 저장 장치 및방법
CN101561751A (zh) 一种usb加解密桥接芯片
KR101070766B1 (ko) 메모리 기능과 보안토큰 기능을 구비한 usb 복합장치
CN101510245A (zh) 高速加解密usb桥接芯片以及芯片高速加解密方法
CN103617127B (zh) 带分区的存储装置及存储器分区的方法
CN103903042A (zh) 一种数据流加密sd卡
CN101540191A (zh) 实时加密u盘及高速加解密方法
TWI430104B (zh) 資料串分派與傳送方法、記憶體控制器與記憶體儲存裝置
CN109657502A (zh) 一种基于国产密码算法的sata桥接实时传输加密系统及方法
CN103400087A (zh) 多接口加密板卡
KR20100048705A (ko) Usb 허브 보안 장치 및 이를 이용한 데이터 보안 방법
CN107967432A (zh) 一种安全存储装置、系统及方法
CN110321317A (zh) 一种多接口和多协处理器的芯片
CN102957537B (zh) 数据安全认证系统及相关的多功能存储卡和转换单元

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