KR101070766B1 - 메모리 기능과 보안토큰 기능을 구비한 usb 복합장치 - Google Patents
메모리 기능과 보안토큰 기능을 구비한 usb 복합장치 Download PDFInfo
- 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
Links
Images
Classifications
-
- E—FIXED CONSTRUCTIONS
- E01—CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
- E01F—ADDITIONAL WORK, SUCH AS EQUIPPING ROADS OR THE CONSTRUCTION OF PLATFORMS, HELICOPTER LANDING STAGES, SIGNS, SNOW FENCES, OR THE LIKE
- E01F9/00—Arrangement of road signs or traffic signals; Arrangements for enforcing caution
- E01F9/60—Upright bodies, e.g. marker posts or bollards; Supports for road signs
- E01F9/604—Upright 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/608—Upright 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
-
- E—FIXED CONSTRUCTIONS
- E01—CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
- E01F—ADDITIONAL WORK, SUCH AS EQUIPPING ROADS OR THE CONSTRUCTION OF PLATFORMS, HELICOPTER LANDING STAGES, SIGNS, SNOW FENCES, OR THE LIKE
- E01F15/00—Safety 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/003—Individual devices arranged in spaced relationship, e.g. buffer bollards
-
- E—FIXED CONSTRUCTIONS
- E01—CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
- E01F—ADDITIONAL WORK, SUCH AS EQUIPPING ROADS OR THE CONSTRUCTION OF PLATFORMS, HELICOPTER LANDING STAGES, SIGNS, SNOW FENCES, OR THE LIKE
- E01F9/00—Arrangement of road signs or traffic signals; Arrangements for enforcing caution
- E01F9/60—Upright bodies, e.g. marker posts or bollards; Supports for road signs
- E01F9/604—Upright 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/619—Upright 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
-
- E—FIXED CONSTRUCTIONS
- E01—CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
- E01F—ADDITIONAL WORK, SUCH AS EQUIPPING ROADS OR THE CONSTRUCTION OF PLATFORMS, HELICOPTER LANDING STAGES, SIGNS, SNOW FENCES, OR THE LIKE
- E01F9/00—Arrangement of road signs or traffic signals; Arrangements for enforcing caution
- E01F9/60—Upright bodies, e.g. marker posts or bollards; Supports for road signs
- E01F9/623—Upright 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/627—Upright 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
-
- E—FIXED CONSTRUCTIONS
- E01—CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
- E01F—ADDITIONAL WORK, SUCH AS EQUIPPING ROADS OR THE CONSTRUCTION OF PLATFORMS, HELICOPTER LANDING STAGES, SIGNS, SNOW FENCES, OR THE LIKE
- E01F9/00—Arrangement of road signs or traffic signals; Arrangements for enforcing caution
- E01F9/60—Upright bodies, e.g. marker posts or bollards; Supports for road signs
- E01F9/658—Upright 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 메모리로도 편리하게 사용할 수 있다.
본 발명은 사용자가 금융거래시 사용자 인증, 기업이나 공공기관의 보안 인증에 사용할 뿐만 아니라, USB 메모리로도 편리하게 사용할 수 있다.
Description
본 발명은 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 복합장치의 구성을 나타낸 블록도.
도 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 보안토큰부
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)
- 호스트에서 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 복합장치.
- 삭제
- 제 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 복합장치. - 제 1 항 또는 제 3 항에 있어서,
상기 USB 메모리부(MEM)와 USB 보안토큰부(HSM) 간의 통신을 위하여 클록 핀과 데이터 핀으로 설정된 2개의 입출력 핀을 포함하는 상기 USB 메모리부(MEM)의 GPIO 블록(213)과 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)은 2 Wire 통신 방식에 의해 클록 핀의 동기에 맞춰 데이터 핀을 통해 데이터를 전달하는 것을 특징으로 하는 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치. - 제 4 항에 있어서, 상기 USB 메모리부(MEM)의 GPIO 블록(213)과 상기 USB 보안토큰부(HSM)의 GPIO 블록(243)은 2 Wire 통신 방식으로 데이터를 주고 받을 때 데이터 통신을 시작한다는 의미의 헤더(HEADER) 정보를 먼저 어느 일 측에 전송한 후, 통신할 데이터의 총 데이터 수를 의미하는 데이터 사이즈(DATASIZE)를 보낸 다음 최종적으로 실제 데이터를 전달하는 것을 특징으로 하는 메모리 기능과 보안토큰 기능을 구비한 USB 복합장치.
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 KR20110088245A (ko) | 2011-08-03 |
KR101070766B1 true 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 (1)
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)
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终端设备 |
Citations (2)
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 | パーソナルコンピュータにおける認証装置 |
-
2010
- 2010-01-28 KR KR1020100008066A patent/KR101070766B1/ko not_active IP Right Cessation
Patent Citations (2)
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 (2)
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 |
US12019907B2 (en) | 2019-12-03 | 2024-06-25 | 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 (ko) | 2011-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110414244B (zh) | 加密卡、电子设备及加密服务方法 | |
KR100555003B1 (ko) | 기억 장치 | |
US7650503B2 (en) | Memory card | |
CN100419663C (zh) | 数据安全 | |
US8627100B2 (en) | Separate type mass data encryption/decryption apparatus and implementing method therefor | |
CN101551784B (zh) | 一种usb接口的ata类存储设备中数据的加密方法及装置 | |
US8122172B2 (en) | Portable information security device | |
US8516232B2 (en) | Method and memory device for performing an operation on data | |
CN105243344A (zh) | 具有硬盘加密功能的芯片组以及主机控制器 | |
TWI451248B (zh) | 資料保護方法、記憶體控制器與記憶體儲存裝置 | |
CN108345806A (zh) | 一种硬件加密卡和加密方法 | |
US20120124380A1 (en) | Usb composite device and method therefor | |
TWI472927B (zh) | 資料串分派與傳送方法、記憶體控制器與記憶體儲存裝置 | |
KR20060102584A (ko) | 유에스비 인터페이스를 구비한 보안 데이터 저장 장치 및방법 | |
CN101561751A (zh) | 一种usb加解密桥接芯片 | |
KR101070766B1 (ko) | 메모리 기능과 보안토큰 기능을 구비한 usb 복합장치 | |
CN103903042A (zh) | 一种数据流加密sd卡 | |
CN101540191A (zh) | 实时加密u盘及高速加解密方法 | |
CN103617127A (zh) | 带分区的存储装置及存储器分区的方法 | |
TWI430104B (zh) | 資料串分派與傳送方法、記憶體控制器與記憶體儲存裝置 | |
CN109657502A (zh) | 一种基于国产密码算法的sata桥接实时传输加密***及方法 | |
CN107967432A (zh) | 一种安全存储装置、***及方法 | |
CN110321317A (zh) | 一种多接口和多协处理器的芯片 | |
EP4086800A1 (en) | Integrated circuit module for information security | |
CN201048046Y (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 |