KR102419505B1 - 스토리지 디바이스의 인증 방법 및 시스템 - Google Patents
스토리지 디바이스의 인증 방법 및 시스템 Download PDFInfo
- Publication number
- KR102419505B1 KR102419505B1 KR1020160068610A KR20160068610A KR102419505B1 KR 102419505 B1 KR102419505 B1 KR 102419505B1 KR 1020160068610 A KR1020160068610 A KR 1020160068610A KR 20160068610 A KR20160068610 A KR 20160068610A KR 102419505 B1 KR102419505 B1 KR 102419505B1
- Authority
- KR
- South Korea
- Prior art keywords
- storage device
- encrypted
- host device
- specific data
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
- G06F21/445—Program or device authentication by mutual authentication, e.g. between devices or programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/007—Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
호스트 디바이스에 의해 스토리지 디바이스를 인증하는 방법 및 시스템이 제공된다. 상기 방법은, 호스트 디바이스의 인증 모듈에 의해, 현재 인증 세션에 대해 암호화된 호스트 디바이스 데이터를 스토리지 디바이스에 전송하고, 상기 인증 모듈에 의해, 상기 스토리지 디바이스에 전송된 상기 암호화된 호스트 디바이스 데이터에 대한 응답으로, 암호화된 스토리지 디바이스 특유 데이터 및 암호화된 제1 출력 스트링을 상기 스토리지 디바이스로부터 수신하고, 상기 인증 모듈에 의해, 상기 스토리지 디바이스로부터 수신된 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 제1 출력 스트링에 기반하여 상기 스토리지 디바이스를 인증하는 것을 포함한다.
Description
본 발명은 일반적으로 디바이스 인증 분야, 더욱 구체적으로는 호스트 디바이스에 의해 스토리지 디바이스를 인증하는 것에 관한 것이다.
전자 디바이스 시장은 수요자들에게 다중 기능을 갖춘 전자 디바이스를 제공한다. 현재, 랩톱, 스마트폰, 태블릿, 웨어러블 디바이스 등과 같은 전자 디바이스는 고해상도 카메라를 탑재하게 되고, 더 높은 계산 능력을 제공하고, 다수의 작업을 수행한다. 또한, 계속되는 고속 인터넷 액세스는 대용량 데이터를 전자 디바이스와 다운로드/업로드할 수 있도록 한다. 이와 같은 디바이스 기능을 지원하기 위해, 전자 디바이스는 추가적인 메모리 스토리지 공간을 필요로 한다. SD(Secure Digital) 카드, 미니 SD 카드, 마이크로 SD 카드, SSD(Solid State Device) 등과 같은 포터블 스토리지 디바이스는, 사용자가 신속하고 용이하게 저장을 원활하게 할 수 있도록 한다. 또한, 스토리지 디바이스는 다양한 전자 디바이스를 통해 대용향 멀티미디어 컨텐츠를 전송할 수 있도록 한다. 이와 같은 특징들은 사용자 경험을 강화할뿐 아니라 전자 디바이스의 성능을 향상시킨다.
스토리지 디바이스에 대한 요구가 증가함에 따라, 카드 제조자가 직면한 주요 도전 과제는, 위조 카드 제조자가 스토리지 디바이스를 복제하여 그것을 낮은 가격에 수요자들에게 판매하는 것을 저지하는 것이다. 위조 스토리지 디바이스는 통상적으로 품질이 낮고, 거의 위조 스토리지 디바이스에 표시된 것보다 더 적은 메모리 스토리지 용량을 제공한다. 또한, 이들 위조 카드 제조자는 일반적으로 카드 제조자의 브랜드 이름을 사용하여 진품 카드 제조자의 브랜드 이름에 큰 손해를 입힌다.
스토리지 디바이스를 인증하기 위한 해결방안을 제공하는 몇몇의 기존 방법들이 있다. 기존 방법에서, 호스트 디바이스라고도 불리우는 전자 디바이스는, 카드 제조자에 의해 제공된 호스트 디바이스 상의 어플리케이션을 이용하여 스토리지 디바이스를 인증한다. 또한, 스토리지 디바이스를 인증하기 위해, 어플리케이션은 미리 정해진 리드 라이트 시퀀스(read write sequence)를 생성하여 스토리지 디바이스에 전송한다. 호스트 디바이스 상의 어플리케이션은 미리 정해진 시퀀스에 대한 스토리지 디바이스의 응답을 분석한다. 스토리지 디바이스가 유효한 시그니처(signature)로 응답할 때마다, 스토리지 디바이스는 인증 스토리지 디바이스로서 식별되고, 그렇지 않은 경우 위조 스토리지 디바이스로서 취급된다. 그러나, 미리 정해진 시퀀스는 정적(static)이기 때문에, 위조 카드 제조자가 미리 정해진 시퀀스를 크랙(crack)할 가능성이 매우 높다. 일단 미리 정해진 시퀀스가 알려지면, 위조 제조자는 알려진 미리 정해진 시퀀스에 응답하는 위조 스토리지 디바이스 상의 펌웨어를 프로그램하여 위조 스토리지 디바이스를 거짓으로 인증할 수 있다. 또한, 기존의 미리 정해진 시퀀스 방법으로, 카드 제조자는, 호스트 디바이스와 스토리지 디바이스 사이의 1회의 통신을 통해 모든 스토리지 디바이스에 대해 동일한 미리 정해진 시퀀스를 사용한다. 이것은 또한 위조 제조자가 미리 정해진 시퀀스를 관찰, 추적 및 크랙하는 것을 용이하게 한다.
본 발명이 해결하고자 하는 기술적 과제는, 스토리지 디바이스를 인증하기 위해 다중 인스턴스(instance)에서 호스트 디바이스와 스토리지 디바이스 사이에 암호화된 데이터가 교환되는 다중 레벨 인증 메커니즘을 이용하는 스토리지 디바이스에 대한 인증 방법 및 시스템을 제공하기 위한 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 호스트 디바이스와 스토리지 디바이스 사이에 교환되는 데이터를 암호화 및 복호화하기 위한 스토리지 디바이스의 스토리지 디바이스 데이터에 따라 호스트 디바이스 및 스토리지 디바이스 상의 랜덤 시드 테이블(random seed table)을 이용하는 방법을 제공하기 위한 것이고, 여기서 교환되는 데이터는 암호화된 호스트 디바이스 데이터, 암호화된 스토리지 디바이스 특유 데이터 및 암호화된 출력 스트링(암호화된 제1 출력 스트링)을 포함한다.
본 발명의 기술적 과제는 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 스토리지 디바이스의 인증 방법은, 호스트 디바이스의 인증 모듈에 의해, 현재 인증 세션에 대해 암호화된 호스트 디바이스 데이터를 스토리지 디바이스에 전송하고, 인증 모듈에 의해, 스토리지 디바이스에 전송된 암호화된 호스트 디바이스 데이터에 대한 응답으로, 암호화된 스토리지 디바이스 특유 데이터 및 암호화된 제1 출력 스트링을 스토리지 디바이스로부터 수신하고, 인증 모듈에 의해, 스토리지 디바이스로부터 수신된 암호화된 스토리지 디바이스 특유 데이터 및 암호화된 제1 출력 스트링에 기반하여 스토리지 디바이스를 인증하는 것을 포함한다.
본 발명의 몇몇의 실시예에서, 상기 암호화된 호스트 디바이스 데이터는, 랜덤 시드 테이블에 대응하는 랜덤 시드 인덱스를 생성하고, 상기 랜덤 시드 테이블로부터의 제1 시드를 이용하여 호스트 디바이스 데이터를 랜덤화하여 상기 암호화된 호스트 디바이스 데이터를 획득함으로써 획득되고, 상기 랜덤 시드 인덱스는 상기 현재 인증 세션에 대한 것이고, 상기 랜덤 시드 테이블은 상기 호스트 디바이스 및 상기 스토리지 디바이스에 존재하고, 상기 호스트 디바이스 데이터는 상기 랜덤 시드 인덱스, 시작 시그니처 및 종료 시그니처를 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 제1 출력 스트링에 기반하여 상기 스토리지 디바이스를 인증하는 것은, 랜덤 시드 테이블의 제2 시드를 이용하여 상기 암호화된 스토리지 디바이스 특유 데이터를 복호화하여, 상기 스토리지 디바이스 특유 데이터를 획득하고, 상기 제2 시드는, 상기 암호화된 호스트 디바이스 데이터에서 상기 스토리지 디바이스와 공유된 랜덤 시드 인덱스에 의해 위치하고, 상기 스토리지 디바이스 특유 데이터는 하나 이상의 파라미터를 포함하는 카드 고유 데이터이고, 상기 호스트 디바이스에서, 상기 카드 고유 데이터의 상기 하나 이상의 파라미터에 대한 함수로서 제2 출력 스트링을 생성하고, 키를 이용하여 상기 암호화된 제1 출력 스트링을 복호화하여 제1 출력 스트링을 획득하고, 상기 키는 상기 카드 고유 데이터의 상기 하나 이상의 파라미터 및 상기 랜덤 시드 테이블을 이용하여 도출되고, 상기 제2 출력 스트링이 상기 제1 출력 스트링과 일치하는 경우 상기 스토리지 디바이스를 인증하는 것을 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 스토리지 디바이스로부터 수신된 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 제1 출력 스트링은, 랜덤 시드 테이블의 제1 시드를 이용하여, 상기 암호화된 호스트 디바이스 데이터를 복호화하여 상기 랜덤 시드 테이블의 랜덤 시드 인덱스, 시작 시그니처 및 종료 시그니처를 포함하는 호스트 디바이스 데이터를 생성하고, 상기 호스트 디바이스 데이터의 상기 랜덤 시드 인덱스는 상기 현재 인증 세션에 대한 것이고, 상기 랜덤 시드 테이블은 상기 호스트 디바이스 및 상기 스토리지 디바이스에 존재하고, 스토리지 디바이스 특유 데이터를 암호화하여 상기 암호화된 스토리지 디바이스 특유 데이터를 생성하고, 상기 스토리지 디바이스 특유 데이터는 상기 랜덤 시드 테이블의 제2 시드를 이용하여 암호화되고, 상기 제2 시드는, 상기 호스트 디바이스 데이터로부터 획득한 상기 랜덤 시드 인덱스를 이용하여 위치하고, 상기 스토리지 디바이스 특유 데이터는 하나 이상의 파라미터를 포함하는 카드 고유 데이터이고, 키를 이용하여 출력 스트링을 암호화하여 상기 암호화된 출력 스트링을 생성하고, 상기 키는 상기 카드 고유 데이터의 상기 하나 이상의 파라미터 및 상기 랜덤 시드 테이블을 이용하여 도출되고, 상기 출력 스트링은 상기 카드 고유 데이터의 상기 하나 이상의 파라미터에 대한 함수이고, 상기 호스트 디바이스에 의해 상기 스토리지 디바이스의 인증을 위해, 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 출력 스트링을 상기 호스트 디바이스에 전송함으로써 상기 스토리지 디바이스에 의해 획득될 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 스토리지 디바이스의 인증을 위한 호스트 디바이스는, 현재 인증 세션에 대해 암호화된 호스트 디바이스 데이터를 스토리지 디바이스에 전송하고, 스토리지 디바이스에 전송된 암호화된 호스트 디바이스 데이터에 대한 응답으로, 암호화된 스토리지 디바이스 특유 데이터 및 암호화된 제1 출력 스트링을 스토리지 디바이스로부터 수신하고, 스토리지 디바이스로부터 수신된 암호화된 스토리지 디바이스 특유 데이터 및 암호화된 제1 출력 스트링에 기반하여 스토리지 디바이스를 인증하도록 설정된 인증 모듈을 포함한다.
본 발명의 몇몇의 실시예에서, 상기 인증 모듈은, 랜덤 시드 테이블에 대응하는 랜덤 시드 인덱스를 생성하고, 상기 랜덤 시드 테이블로부터의 제1 시드를 이용하여 호스트 디바이스 데이터를 랜덤화하여 상기 암호화된 호스트 디바이스 데이터를 획득함으로써, 상기 암호화된 호스트 디바이스 데이터를 획득하고, 상기 랜덤 시드 인덱스는 상기 현재 인증 세션에 대한 것이고, 상기 랜덤 시드 테이블은 상기 호스트 디바이스 및 상기 스토리지 디바이스에 존재하고, 상기 호스트 디바이스 데이터는 상기 랜덤 시드 인덱스, 시작 시그니처 및 종료 시그니처를 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 인증 모듈은, 랜덤 시드 테이블의 제2 시드를 이용하여 상기 암호화된 스토리지 디바이스 특유 데이터를 복호화하여, 상기 스토리지 디바이스 특유 데이터를 획득하고, 상기 제2 시드는, 상기 암호화된 호스트 디바이스 데이터에서 상기 스토리지 디바이스와 공유된 랜덤 시드 인덱스에 의해 위치하고, 상기 스토리지 디바이스 특유 데이터는 하나 이상의 파라미터를 포함하는 카드 고유 데이터이고, 상기 호스트 디바이스에서, 상기 카드 고유 데이터의 상기 하나 이상의 파라미터에 대한 함수로서 제2 출력 스트링을 생성하고, 키를 이용하여 상기 암호화된 제1 출력 스트링을 복호화하여 제1 출력 스트링을 획득하고, 상기 키는 상기 카드 고유 데이터의 상기 하나 이상의 파라미터 및 상기 랜덤 시드 테이블을 이용하여 도출되고, 상기 제2 출력 스트링이 상기 제1 출력 스트링과 일치하는 경우 상기 스토리지 디바이스를 인증함으로써, 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 제1 출력 스트링에 기반하여 상기 스토리지 디바이스를 인증할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 호스트 디바이스에 의해 스토리지 디바이스의 인증을 위한 스토리지 디바이스는, 현재 인증 세션에 대해 암호화된 호스트 디바이스 데이터를 호스트 디바이스로부터 수신하고, 호스트 디바이스로부터 수신한 암호화된 호스트 디바이스 데이터에 대한 응답으로, 암호화된 스토리지 디바이스 특유 데이터 및 암호화된 출력 스트링을 호스트 디바이스에 전송하도록 설정된 인증 모듈을 포함한다.
본 발명의 몇몇의 실시예에서, 상기 인증 모듈은, 랜덤 시드 테이블의 제1 시드를 이용하여, 상기 암호화된 호스트 디바이스 데이터를 복호화하여 상기 랜덤 시드 테이블의 랜덤 시드 인덱스, 시작 시그니처 및 종료 시그니처를 포함하는 호스트 디바이스 데이터를 생성하고, 상기 호스트 디바이스 데이터의 상기 랜덤 시드 인덱스는 상기 현재 인증 세션에 대한 것이고, 상기 랜덤 시드 테이블은 상기 호스트 디바이스 및 상기 스토리지 디바이스에 존재하고, 스토리지 디바이스 특유 데이터를 암호화하여 상기 암호화된 스토리지 디바이스 특유 데이터를 생성하고, 상기 스토리지 디바이스 특유 데이터는 상기 랜덤 시드 테이블의 제2 시드를 이용하여 암호화되고, 상기 제2 시드는, 상기 호스트 디바이스 데이터로부터 획득한 상기 랜덤 시드 인덱스를 이용하여 위치하고, 상기 스토리지 디바이스 특유 데이터는 하나 이상의 파라미터를 포함하는 카드 고유 데이터이고, 키를 이용하여 출력 스트링을 암호화하여 상기 암호화된 출력 스트링을 생성하고, 상기 키는 상기 카드 고유 데이터의 상기 하나 이상의 파라미터 및 상기 랜덤 시드 테이블을 이용하여 도출되고, 상기 출력 스트링은 상기 카드 고유 데이터의 상기 하나 이상의 파라미터에 대한 함수이고, 상기 호스트 디바이스에 의해 상기 스토리지 디바이스의 인증을 위해, 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 출력 스트링을 상기 호스트 디바이스에 전송함으로써 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 제1 출력 스트링을 전송할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따라 호스트 디바이스에 의해 스토리지 디바이스를 인증하기 위한 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따라 호스트 디바이스의 복수의 요소들을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따라 스토리지 디바이스의 복수의 요소들을 설명하기 위한 도면이다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따라 호스트 디바이스 단에서 호스트 디바이스에 의해 스토리지 디바이스를 인증하기 위한 방법을 설명하기 위한 흐름도이다.
도 5는 본 발명의 일 실시예에 따라 스토리지 디바이스 단에서 호스트 디바이스에 의해 스토리지 디바이스를 인증하기 위한 방법을 설명하기 위한 흐름도이다.
도 6은 본 발명의 일 실시예에 따라 스토리지 디바이스의 인증을 위해 호스트 디바이스와 스토리지 디바이스 사이에 교환되는 데이터를 암호화 및 복호화하기 위해 호스트 디바이스 및 스토리지 디바이스에 의해 사용되는 랜덤 시드 테이블(Random Seed Table, RST)을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따라 스토리지 디바이스의 인증을 위해 스토리지 디바이스에 의해 호스트 디바이스와 공유되는 카드 고유 데이터의 예를 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따라 스토리지 디바이스의 인증을 위한 방법을 구현하는 컴퓨팅 환경을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따라 호스트 디바이스의 복수의 요소들을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따라 스토리지 디바이스의 복수의 요소들을 설명하기 위한 도면이다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따라 호스트 디바이스 단에서 호스트 디바이스에 의해 스토리지 디바이스를 인증하기 위한 방법을 설명하기 위한 흐름도이다.
도 5는 본 발명의 일 실시예에 따라 스토리지 디바이스 단에서 호스트 디바이스에 의해 스토리지 디바이스를 인증하기 위한 방법을 설명하기 위한 흐름도이다.
도 6은 본 발명의 일 실시예에 따라 스토리지 디바이스의 인증을 위해 호스트 디바이스와 스토리지 디바이스 사이에 교환되는 데이터를 암호화 및 복호화하기 위해 호스트 디바이스 및 스토리지 디바이스에 의해 사용되는 랜덤 시드 테이블(Random Seed Table, RST)을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따라 스토리지 디바이스의 인증을 위해 스토리지 디바이스에 의해 호스트 디바이스와 공유되는 카드 고유 데이터의 예를 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따라 스토리지 디바이스의 인증을 위한 방법을 구현하는 컴퓨팅 환경을 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
소자(elements) 또는 층이 다른 소자 또는 층의 "위(on)" 또는 "상(on)"으로 지칭되는 것은 다른 소자 또는 층의 바로 위뿐만 아니라 중간에 다른 층 또는 다른 소자를 개재한 경우를 모두 포함한다. 반면, 소자가 "직접 위(directly on)" 또는 "바로 위"로 지칭되는 것은 중간에 다른 소자 또는 층을 개재하지 않은 것을 나타낸다.
공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 소자 또는 구성 요소들과 다른 소자 또는 구성 요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 소자의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들면, 도면에 도시되어 있는 소자를 뒤집을 경우, 다른 소자의 "아래(below)" 또는 "아래(beneath)"로 기술된 소자는 다른 소자의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 소자는 다른 방향으로도 배향될 수 있고, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 명세서의 실시예들은, 스토리지 디바이스를 인증하기 위해 다중 레벨 인증 메커니즘을 사용하는 스토리지 디바이스를 인증하는 방법 및 시스템을 제공한다. 다중 인증 메커니즘은, 다중 인스턴스에서 호스트 디바이스(전자 디바이스)와 스토리지 디바이스 사이에 데이터의 교환을 가능하도록 한다. 상기 방법은, 호스트 디바이스와 스토리지 디바이스 사이에 교환되는 데이터를 암호화 및 복호화하기 위해 호스트 디바이스 및 스토리지 디바이스 상에서 제공되는(저장된) 랜덤 시드 테이블(Random Seed Table, RST)을 이용하는 것을 포함한다. 교환되는 데이터는 암호화된 호스트 디바이스 데이터, 암호화된 스토리지 디바이스 특유 데이터(storage device specific data) 및 암호화된 출력 스트링(암호화된 제1 출력 스트링)을 포함한다. 따라서, 상기 방법은 암호화된 데이터의 다중 인스턴스를 이용하며, 이것은 위조 제조자가 교환되는 데이터를 크랙 또는 식별하고 스토리지 디바이스를 복제하기 위해 이를 이용하는 것을 어렵게 만든다. 또한, 위조 제조자가 특정 인증 세션에 대해 교환되는 암호화된 데이터를 크랙하는 것에 성공한 경우라 할지라도, 동일한 스토리지 디바이스뿐 아니라 서로 다른 스토리디 디바이스에 대한 모든 인증 세션에서 교환되는 데이터는 다양하다. 따라서, 위조 제조자는 교환되는 데이터의 패턴을 식별하고 이를 거짓 인증을 위해 사용하기 어렵게 된다. 모든 인증 세션 동안에 교환되는 데이터의 다양화에 대한 많은 이유 중 하나는 스토리지 디바이스 특유 데이터를 사용하는 것이다. 스토리지 디바이스 특유 데이터는 스토리지 디바이스의 카드 고유 데이터(card unique data)이다. 동일한 타입 또는 동일한 메모리 용량의 2 개의 스토리지 디바이스에 대해 카드 고유 데이터가 동일할 확률은 매우 낮다. 뿐만 아니라, 암호화된 스토리지 디바이스 특유 데이터를 통해 호스트 디바이스와 공유되는 카드 고유 데이터의 사이즈는, 스토리지 디바이스의 메모리 용량이 증가함에 따라 증가하므로, 스토리지 디바이스의 사이즈가 다양해짐에 따라 교환되는 데이터의 패턴을 식별하기 어려워진다. 또한, RST의 사이즈는 다양할 수 있고, 호스트 디바이스와 스토리지 디바이스 사이에 교환되는 데이터의 사이즈 크기가 다양해짐에 따라, 더욱 멀티 폴드(multi fold)화되고 제안된 인증 메커니즘을 강화한다.
본 발명의 일 실시예에서, 전자 디바이스(호스트 디바이스)는 모바일 폰, 태블릿, PDA(personal digital assistant), 랩톱, 웨어러블 디바이스 또는 스토리지 디바이스를 지원하는 기타 임의의 전자 디바이스이다.
본 발명의 일 실시예에서, 스토리지 디바이스는 SD(Secure Digital) 카드, 미니 SD 카드, 마이크로 SD 카드, SSD(Solid State Device), USB(Universal Serial Bus), UFS(Universal Flash Storage) 카드 등이다.
이제 도 1 내지 도 9을 비롯한 도면을 참조하면, 유사한 참조 부호는 도면 전체에 걸쳐 일관적인, 도시된 실시예들의 대응하는 특징들을 나타낸다.
도 1은 본 발명의 일 실시예에 따른 호스트 디바이스(102)에 의한 스토리지 디바이스(104)의 인증을 위한 시스템(100)을 나타낸다. 본 실시예에서, 시스템(100)은, 다중 레벨 인증 메커니즘을 이용하여 스토리지 디바이스(104)를 인증할 수 있는 호스트 디바이스(102)를 포함한다. 다중 레벨 인증 메커니즘은 다중 인스턴스에서 호스트 디바이스(102)와 스토리지 디바이스(104) 사이에 암호화된 데이터가 교환되는 것을 가능하게 한다. 호스트 디바이스(102) 및 스토리지 디바이스에는 랜덤 시드 테이블(RST)이 제공된다. 그러나 RST는 호스트 디바이스 제조자에게 직접 제공되는 것이 아니라, 카드 제조자에 의해 제공되는 어플리케이션 바이너리(application binary)에 RST가 임베딩됨으로써 호스트 디바이스(102)에 간접적으로 제공된다. 호스트 디바이스 상에서 실행되는 어플리케이션 바이너리는, 호스트 디바이스(102)에 연결된 스토리지 디바이스(104)의 진위성(authenticity)을 검사하기 위해 필요한 인증 프로세스를 수행한다.
(만일 스토리지 디바이스(104)가 진정(authentic) 스토리지 디바이스이면) 카드 제조자에 의해 호스트 디바이스(102) 및 스토리지 디바이스(104)에 제공되는 RST는 서로 동일하다. RST는 시드(데이터 엔트리)를 유지하고, RST의 시드 인덱스(인덱스)는 데이터 엔트리(시드)에 대한 포인터이다. 본 발명의 일 실시예에서, RST는 시드를 저장하는 스토리지 디바이스(104) 및 호스트 디바이스(102)에 유지되는 버퍼이다. RST에 대한 더욱 상세한 내용은 도 5와 관련하여 후술하도록 한다.
인증될 스토리지 디바이스(104)가 호스트 디바이스에 연결되면 언제든 호스트 디바이스(102)는 암호화된 호스트 디바이스 데이터(교환될 제1 데이터)를 생성할 수 있다. 암호화된 호스트 디바이스 데이터는 호스트 디바이스 데이터를 랜덤화함으로써 호스트 디바이스(102)에 의해 획득된다. 호스트 디바이스 데이터는 랜덤 시드 인덱스(random seed index), 시작 시그니처(start signature) 및 종료 시그니처(end signature)를 포함한다. 랜덤화는 랜덤 시드 테이블로부터의 제1 시드를 이용하여 수행된다.
본 발명의 일 실시예에서, 호스트 디바이스 데이터를 암호화하기 위해 사용될 RST의 제1 시드는, RST의 다중 시드들 중 임의의 하나의 시드일 수 있고, 호스트 디바이스(102) 및 스토리지 디바이스(104) 양쪽 모두에 프리셋(preset)되고 알려질 수 있다. 랜덤 시드 인덱스는 RST 내의 랜덤 시드를 포인팅하는 시드 인덱스이다. 이 랜덤 시드 인덱스는 매 인증 세션마다 재생성된다. 본 발명의 일 실시예에서, 카드 제조자에 의해 제공되는 어플리케이션 바이너리에 대한 액세스가 가능한 호스트 디바이스(102) 상의 인증 어플리케이션은 랜덤 시드 인덱스로서 사용될 랜덤 수를 생성할 수 있다.
또한, 호스트 디바이스(102)는 암호화된 호스트 디바이스 데이터를 스토리지 디바이스(104)에 전송할 수 있다. 스토리지 디바이스(104)에 의해 암호화된 호스트 디바이스 데이터를 수신한 후, 스토리지 디바이스는 암호화된 호스트 디바이스 데이터를 복호화할 수 있다. 스토리지 디바이스(104)는 RST의 제1 시드(호스트 디바이스(102)에 의해 생성된 시드와 동일한 시드)를 사용하여, 암호화된 호스트 디바이스 데이터를 복호화하고 호스트 디바이스 데이터를 복구할 수 있다. 복호화는, 호스트 디바이스(102)에 의해 공유되는 호스트 디바이스 데이터의 랜덤 시드 인덱스를 제공한다. 또한, 스토리지 디바이스(104)는, 랜덤 시드 인덱스(제2 시드라고도 함)로 포인팅되는 RST의 시드를 이용하여 스토리지 디바이스(104)의 카드 고유 데이터를 암호화하고 암호화된 스토리지 디바이스 특유 데이터를 획득할 수 있다. 또한, 수신된 암호화된 호스트 디바이스 데이터에 대한 응답으로, 스토리지 디바이스(104)는 암호화된 스토리지 디바이스 특유 데이터를 호스트 디바이스(102)에 공유할 수 있다. 또한, 스토리지 디바이스(104)는 카드 고유 데이터를 이용하여 출력 스트링(제1 출력 스트링)을 생성할 수 있다. 스토리지 디바이스(104)의 제1 출력 스트링은 카드 고유 데이터의 하나 이상의 파라미터에 대한 함수이다. 카드 고유 데이터에 대한 내용은 도 3, 도 4 및 도 6과 관련하여 후술하도록 한다. 제1 출력 스트링이 생성되면, 스토리지 디바이스(104)는, 키를 이용하여 제1 출력 스트링을 랜덤화함으로써 암호화된 제1 출력 스트링을 생성할 수 있다. 랜덤화에 이용되는 키는, 새로이 생성된 시드 인덱스에 기초하여 RST로부터 선정된 시드(제3 시드)이다. RST에서 시드(제3 시드)를 포인팅하는 새로운 시드 인덱스가, 카드 고유 데이터의 하나 이상의 파라미터 중 하나로부터 도출된다.
또한, 스토리지 디바이스(104)는 스토리지 디바이스의 인증을 위해 암호화된 제1 출력 스트링을 호스트 디바이스(102)에 전송할 수 있다.
호스트 디바이스(102) 단에서, 암호화된 스토리지 디바이스 특유 데이터를 수신한 후, 호스트 디바이스(102)는 암호화된 스토리지 디바이스 특유 데이터를 복호화하여 스토리지 디바이스(104)에 의해 공유된 카드 고유 데이터를 획득할 수 있다. 복호화는 RST로부터의 시드(제2 시드)를 이용하는 암호화된 스토리지 디바이스 특유 데이터에 대한 탈랜덤화(de-randomizing)를 포함한다. RST의 제2 시드는 RST에 대한 포인터로서 랜덤 시드 인덱스를 이용하여 위치한다. 암호화된 스토리지 디바이스 특유 데이터의 복호화는 호스트 디바이스(102)가 카드 고유 데이터를 검색할 수 있도록 한다. 호스트 디바이스(102)는 카드 고유 데이터의 하나 이상의 파라미터를 이용하여 제2 출력 스트링을 생성할 수 있다. 제1 출력 스트링 및 제2 출력 스트링을 생성하기 위해 이용되는 카드 고유 데이터의 파라미터들은 동일하다. 본 발명의 일 실시예에서, 스토리지 디바이스(104)가 진정 스토리지 디바이스인 경우, 파라미터들은 호스트 디바이스(102) 및 스토리지 디바이스(104) 각각에 프리셋될 수 있다. 또한, 호스트 디바이스(102)는 스토리지 디바이스(104)에 의해 전송된 암호화된 제1 출력 스트링을 수신 및 복호화할 수 있다. 복호화는 수신된 암호화된 제1 출력 스트링을 키를 이용하여 탈랜덤화하여 호스트 디바이스(102) 단에서 제1 출력 스트링을 획득함으로써 수행될 수 있다. 사용되는 키는 제1 출력 스트링을 랜덤화하기 위해 스토리지 디바이스(104)에서 사용된 것과 동일한 키이다.
2 개의 스트링이 생성되면, 호스트 디바이스(102)는, 스토리지 디바이스(104)에 의해 공유된 카드 고유 데이터를 이용하여, 호스트 디바이스(102) 단에서 복구된 제1 출력 스트링과 호스트 디바이스(102) 단에서 생성된 제2 출력 스트링을 비교할 수 있다. 호스트 디바이스(102)는 스토리지 디바이스(104)를 인증하고, 만일 2 개의 스트링이 정확하게 일치하면, 스토리지 디바이스(104)를 진정 스토리지 디바이스로서 취급할 수 있다. 그러나, 제1 출력 스트링과 제2 출력 스트링 사이에 불일치가 하나라도 검출되면, 스토리지 디바이스(104)는, 카드 제조자사의 어플리케이션 바이너리에 의해 스토리지 디바이스(104)를 부진정(non authentic)(위조(fake)) 스토리지 디바이스로서 취급할 수 있고, 이를 사용자에게 표시할 수 있다.
도 2는 본 발명의 일 실시예에 따라 호스트 디바이스(102)의 복수의 요소들을 설명하기 위한 도면이다. 도 2를 참조하면, 호스트 디바이스(102)(전자 디바이스)는 본 발명의 일 실시예에 따라 도시된 것이다. 본 발명의 일 실시예에서, 호스트 디바이스(102)는 하나 이상의 프로세서(202), 입력/출력(I/O) 인터페이스(204)(여기서는 설정 가능한(configurable) 사용자 인터페이스), 메모리(206)를 포함할 수 있다. 하나 이상의 프로세서(202)는 하나 이상의 마이크로 프로세서, 마이크로 컴퓨터, 마이크로 컨트롤러, 디지털 신호 프로세서, 중앙 처리 장치, 상태 기계(state machine), 로직 회로 및/또는 동작 인스트럭션에 기반한 신호를 다루는 임의의 디바이스로 구현될 수 있다. 다른 기능들 중에서, 하나 이상의 프로세서(202)는 메모리(206)에 저장된 컴퓨터로 판독 가능한 인스트럭션을 페치(fetch) 및 실행한다.
I/O 인터페이스(204)는 다양한 소프트웨어 및 하드웨어 인터페이스, 예컨대, 웹 인터페이스, 그래픽 사용자 인터페이스 등을 포함할 수 있다. I/O 인터페이스(204)는 호스트 디바이스(102)가 스토리지 디바이스(104)와 같은 다른 디바이스와 통신할 수 있도록 할 수 있다. I/O 인터페이스(204)는, 예컨대 LAN(Local Area Network), 케이블 등과 같은 유선 네트워크 및, 예컨대 무선 LAN, 셀룰러, D2D(Device to Device) 통신 네트워크, Wi-Fi 네트워크 등과 같은 무선 네트워크를 포함하는 광범위한 네트워크 및 프로토콜 타입의 다중 통신을 이용할 수 있다. 메모리(206)는, 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조, RST를 유지하기 위한 버퍼 공간, 카드 고유 데이터 등을 포함하는 다양한 모듈(208)을 포함한다. 모듈(208)은 특정 태스크, 기능을 수행하거나, 특정 추상 데이터 타입을 구현한다. 본 발명의 일 구현예에서, 모듈(208)은 인증 모듈(210)을 포함할 수 있다. 현재 인증 세션에 대해 인증될 스토리지 디바이스(104)가 I/O 인터페이스(204)를 통해 호스트 디바이스(102)와 연결되면 언제든지, 인증 모듈(210)은 암호화된 호스트 디바이스 데이터(인증될 스토리지 디바이스(102)와 교환되는 제1 데이터)를 생성할 수 있다. 암호화된 호스트 디바이스 데이터는, 랜덤 시드 인덱스, 시작 시그니처 및 종료 시그니처를 포함하는 호스트 디바이스 데이터를 랜덤화함으로써 획득된다. 랜덤화는 랜덤 시드 테이블로부터의 제1 시드를 이용하여 수행된다. 본 발명의 일 실시예에서, 호스트 디바이스 데이터를 암호화하기 위해 사용될 RST의 시드는, 호스트 디바이스(102)와 스토리지 디바이스(104) 양쪽에 프리셋되고 알려질 수 있다. 랜덤 시드 인덱스는 RST 내의 랜덤 시드에 대한 포인터이고, 현재 인증 세션에 대해 생성된다. 본 발명의 일 실시예에서, 호스트 디바이스(102) 상의 인증 어플리케이션은 랜덤 시드 인덱스로서 사용될 랜덤 수를 생성한다. 또한, 호스트 디바이스(102)는 암호화된 호스트 디바이스 데이터를 스토리지 디바이스(104)에 전송할 수 있다.
또한, 스토리지 디바이스(104)에 전송된 암호화된 호스트 디바이스 데이터에 대한 응답으로, 인증 모듈(210)은, 암호화된 스토리지 디바이스 특유 데이터 및 암호화된 제1 출력 스트링을 스토리지 디바이스(104)로부터 수신할 수 있다. 암호화된 스토리지 디바이스 특유 데이터를 수신한 후, 인증 모듈(210)은 암호화된 스토리지 디바이스 특유 데이터를 복호화할 수 있다. 복호화는 스토리지 디바이스(104)에 의해 공유되는 카드 고유 데이터를 제공한다. 복호화는, 랜덤 시드 인덱스에 의해 지시 또는 포인팅되는 RST로부터의 동일한 시드(제2 시드)를 이용하여 암호화된 스토리지 디바이스 특유 데이터를 탈랜덤화하는 것을 포함한다. 암호화된 스토리지 디바이스 특유 데이터의 복호화는 인증 모듈(210)이 카드 고유 데이터를 검색할 수 있도록 한다. 또한, 인증 모듈(210)은, 카드 고유 데이터의 하나 이상의 파라미터를 이용하여 제2 출력 스트링을 생성할 수 있다. 제1 출력 스트링과 제2 출력 스트링을 생성하기 위한 카드 고유 데이터의 파라미터는 동일하다. 본 발명의 일 실시예에서, 파라미터는 호스트 디바이스(102) 및 스토리지 디바이스(104) 각각에 프리셋될 수 있다. (스토리지 디바이스(102)가 진정 스토리지 디바이스의 경우에만) 제1 출력 스트링을 생성하기 위해 스토리지 디바이스(104)에 의해 사용되는 함수와, 제2 출력 스트링을 생성하기 위해 호스트 디바이스(102)에 의해 사용되는 함수는 유사하다. 이것은 인증 프로세스 동안 호스트 디바이스(102) 단에서 제1 출력 스트링과 제2 출력 스트링 사이의 비교가 가능하도록 한다. 또한, 인증 모듈(210)은 스토리지 디바이스(104)에 의해 전송된 암호화된 제1 출력 스트링을 수신 및 복호화할 수 있다. 복호화는, 호스트 디바이스(102) 단에서 제1 출력 스트링을 획득하기 위해 키를 이용하여 수신된 암호화된 제1 출력 스트링을 탈랜덤화함으로써 수행된다. 키는 제1 출력 스트링을 랜덤화하기 위해 스토리지 디바이스에서 사용된 키와 동일한 키이다. 2 개의 스트링이 생성된 후, 인증 모듈(210)은, 스토리지 디바이스에 의해 공유되는 카드 고유 데이터를 이용하여, 호스트 디바이스(102) 단에서 복구된 제1 출력 스트링과, 호스트 디바이스(102) 단에서 생성된 제2 출력 스트링을 비교할 수 있다. 인증 모듈(210)은, 만일 2 개의 스트링이 정확하게 일치하면, 스토리지 디바이스(104)를 진정 스토리지 디바이스로서 인증할 수 있다. 그러나, 호스트 디바이스(102) 단의 제1 출력 스트링과, 제2 출력 스트링 사이에 불일치가 하나라도 검출되면, 스토리지 디바이스(104)는 위조 스토리지 디바이스로서 취급될 수 있다. 따라서, 사용자는 스토리지 디바이스(104)가, 인증이 수행되는 카드 제조사에 의해 제조된 것이 아님을 알 수 있다. 그래픽 사용자 인터페이스와 같은 사용자 인터페이스는 디바이스의 진정성을 사용자에게 표시하기 위해 사용될 수 있다.
모듈(208)은, 호스트 디바이스(102)의 어플리케이션 및 기능을 지원하는 프로그램 또는 코딩된 인스트럭션을 포함할 수 있다. 다른 것들 중에서 데이터(212)는, 하나 이상의 모듈(208)에 의해 처리, 수신 및 생성되는 데이터를 저장하기 위한 저장소의 역할을 할 수 있다. 또한, 호스트 디바이스(102)의 요소들 및 모듈들의 이름은 예시적인 것이며, 본 발명의 범위가 이에 제한되는 것은 아니다.
도 3은 본 발명의 일 실시예에 따라 스토리지 디바이스(104)의 복수의 요소들을 설명하기 위한 도면이다. 도 3을 참조하면, 스토리지 디바이스(104)는 본 발명의 일 실시예에 따라 도시된 것이다. 본 발명의 일 실시예에서, 스토리지 디바이스(104)는 하나 이상의 프로세서(302), 입력/출력(I/O) 인터페이스(304)(여기서는 설정 가능한 사용자 인터페이스), 메모리(306)를 포함할 수 있다. 하나 이상의 프로세서(302)는 하나 이상의 마이크로 프로세서, 마이크로 컴퓨터, 마이크로 컨트롤러, 디지털 신호 프로세서, 중앙 처리 장치, 상태 기계(state machine), 로직 회로 및/또는 동작 인스트럭션에 기반한 신호를 다루는 임의의 디바이스로 구현될 수 있다. 다른 기능들 중에서, 하나 이상의 프로세서(302)는 메모리(306)에 저장된 컴퓨터로 판독 가능한 인스트럭션을 페치 및 실행한다.
I/O 인터페이스(304)는 다양한 소프트웨어 및 하드웨어 인터페이스, 예컨대, 웹 인터페이스, 그래픽 사용자 인터페이스, 호스트 인터페이스 로직 등을 포함할 수 있다. 호스트 인터페이스 로직은 스토리지 디바이스(104)가 호스트 디바이스(102)와 같은 다른 디바이스와 통신할 수 있도록 할 수 있다. 메모리(306)는, 특정 태스크, 기능을 수행하거나, 특정 추상 데이터 타입을 구현하는, 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조, RST를 유지하기 위한 버퍼 공간, 카드 고유 데이터 등을 포함하는 다양한 모듈(308)을 포함한다. 본 발명의 일 구현예에서, 모듈(308)은 인증 모듈(310)을 포함할 수 있다. 현재 인증 세션에 대해 인증될 스토리지 디바이스(104)가 I/O 인터페이스(304)를 통해 호스트 디바이스(102)와 연결되면 언제든지, 인증 모듈(310)은 암호화된 호스트 디바이스 데이터를 호스트 디바이스(102)로부터 수신할 수 있다. 또한, 인증 모듈(310)은 암호화된 호스트 디바이스 데이터를 복호화할 수 있다. 인증 모듈(310)은 스토리지 디바이스(104) 상의 RST의 제1 시드(호스트 디바이스(102)의 것과 동일한 프리셋된 시드)를 이용하여 암호화된 호스트 디바이스를 복호화하고 호스트 디바이스 데이터를 복구할 수 있다. 복호화는 호스트 디바이스(102)에 의해 공유되는 호스트 디바이스 데이터에 포함된 랜덤 시드 인덱스를 제공한다. 또한, 인증 모듈(310)은 RST의 시드(제2 시드)를 이용하여 스토리지 디바이스(104)의 카드 고유 데이터를 암호화하고 암호화된 스토리지 디바이스 특유 데이터를 획득할 수 있다. 제2 시드는 RST에 대한 포인터로서의 랜덤 시드 인덱스를 이용하여 위치한다. 또한, 수신된 압호화된 호스트 디바이스 데이터에 대한 응답으로, 인증 모듈(310)은 암호화된 스토리지 디바이스 특유 데이터를 호스트 디바이스(102)에 공유할 수 있다. 암호화된 스토리지 디바이스 특유 데이터를 통해 호스트 디바이스(102)와 공유되는 카드 고유 데이터는, 스토리지 디바이스(102)의 메모리 용량이 증가함에 따라 증가한다. 아래는 암호화된 스토리지 디바이스 특유 데이터의 사이즈가 메모리 용량의 증가에 따라 증가하는 것을 나타내는 몇몇의 예이다. 16GB 스토리지 디바이스의 경우, 교환되는 암호화된 스토리지 디바이스 특유 데이터의 사이즈는 512 바이트일 수 있다. 이와 유사하게, 32GB의 경우, 교환되는 데이터는 거의 2 배, 1024 바이트의 암호화된 스토리지 디바이스 특유 데이터가 될 수 있다. 이와 유사하게, 64GB의 경우, 교환되는 암호화된 스토리지 디바이스 특유 데이터는 2048 바이트로 또 다시 2 배가가 될 수 있다. 이것은 어떤 위조 카드 제조자라도 16GB의 경우 1024 * 1024 * 4 * 512 바이트 = 2GB의 암호화된 데이터, 32GB의 경우 1024 * 1024 * 4 * 1024 바이트 = 4GB의 암호화된 데이터 의 막대한 양의 데이터를 알아야 한다는 것을 뜻한다. 이것은, 데이터 패턴이 스토리지 디바이스(104)의 사이즈에 따라 달라지기 때문에 암호화된 데이터를 크랙하는 것을 더욱 어렵게 만든다.
또한, 인증 모듈(310)은 카드 고유 데이터를 이용하여 출력 스트링(제1 출력 스트링)을 생성할 수 있다. 예를 들어, 카드 고유 데이터는 CSN(Card Serial Number), BB(Bad Blocks information), RemBlks(Remaining Valid Blocks), FwDate(Firmware Release Date) 등과 같은 하나 이상의 파라미터를 포함하는 정보를 포함할 수 있다. 이들 파라미터는, 스토리지 디바이스(104)와 같은 특정 스토리지 디바이스에 특유적이다. 카드 고유 데이터에 대한 내용은 도 5 및 도 7과 관련하여 후술하도록 한다. 스토리지 디바이스(104)의 제1 출력 스트링은 카드 고유 데이터의 하나 이상의 파라미터의 함수이다. 함수는 동적 함수이다. 본 발명의 일 실시예에서, 스토리지 디바이스의 타입 또는 스토리지 디바이스의 배치(batch)에 대한 함수는 미리 정의되어 (카드 제조사에 의해 제공되는 어플리케이션 바이너리 내에 내장된 정보로서) 호스트 디바이스(102)와 스토리지 디바이스(104) 양쪽에 알려질 수 있다. 제1 출력 스트링이 생성된 후, 인증 모듈(310)은 키를 이용하여 제1 출력 스트링을 랜덤화함으로써 암호화된 제1 출력 스트링을 생성할 수 있다. 랜덤화를 위해 이용되는 키는 RST로부터의 시드(제3 시드)이다. 제3 시드에 대한 시드 인덱스는 카드 고유 데이터의 하나 이상의 파라미터들 중 한 파라미터로부터 도출된다. 예를 들어, 키는 CSN과 같은 카드 고유 데이터의 파라미터에 의해 포인팅되는 RST의 시드에 대응될 수 있고 key=SeedIndex(PBN(CSN))이다. PBN(x)은, 파라미너탁 저장되는 스토리지 디바이스(104) 상의 블록 넘버를 제공하는 함수이다. 예를 들어, PBN(CSN)은 스토리지 디바이스(104) 상에 CSN이 저장된 블록 넘버를 제공한다. 또한, 인증 모듈(310)은 스토리지 디바이스(104)의 인증을 위해 암호화된 제1 출력 스트링을 호스트 디바이스(102)에 전송할 수 있다. 모듈(308)은, 스토리지 디바이스(104)의 어플리케이션 및 기능을 지원하는 프로그램 또는 코딩된 인스트럭션을 포함할 수 있다. 다른 것들 중에서, 데이터(312)는 하나 이상의 모듈(308)에 의해 처리, 수신 및 생성되는 데이터를 저장하기 위한 저장소의 역할을 할 수 있다. 또한, 스토리지 디바이스(104)의 요소들 및 모듈들의 이름은 예시적인 것이며, 본 발명의 범위가 이에 제한되는 것은 아니다.
도 4a 및 도 4b는 본 발명의 일 실시예에 따라 호스트 디바이스(102)에 의해 스토리지 디바이스(104)를 인증하기 위한 방법을 설명하기 위한 흐름도이다. 현재 인증 세션에 대해 스토리지 디바이스(104)가 호스트 디바이스(102)에 연결되면 언제든지, 단계(402)에서, 방법(400)은 인증 모듈(210)이 현재 인증 세션에 대해 RST에 대한 랜덤 시드 인덱스를 생성하는 것을 포함한다. 단계(404)에서, 방법(400)은 인증 모듈(310)이 호스트 디바이스 데이터를 랜덤화함으로써 암호화된 호스트 디바이스 데이터를 획득하는 것을 포함한다. 랜덤화된 호스트 디바이스 데이터는 랜덤 시드 인덱스, 시작 시그니처 및 종료 시그니처를 포함한다. 랜덤화는 랜덤 시드 테이블로부터의 제1 시드를 이용하여 수행된다. 본 발명의 일 실시예에서, 호스트 디바이스 데이터를 암호화하기 위해 사용될 RST의 시드는 호스트 디바이스(102) 및 스토리지 디바이스(104) 양쪽에 프리셋되고 알려질 수 있다. 랜덤 시드 인덱스는 RST 내의 랜덤 시드에 대한 포인터이다. 본 발명의 일 실시예에서, 호스트 디바이스(102) 상의 인증 어플리케이션은 랜덤 시드 인덱스로서 사용될 랜덤 수를 생성할 수 있고, 생성된 랜덤 수는 오로지 현재 인증 세션에 대해서만 유효하다. 따라서, 랜덤 시드 인덱스에 대응하는 값은 동적이고, 모든 인증 세션에 대해 달라진다.
단계(406)에서, 방법(400)은 인증 모듈(210)이 암호화된 호스트 디바이스 데이터를 스토리지 디바이스(104)에 전송하는 것을 포함한다. 단계(408)에서, 방법(400)은 인증 모듈(210)이, 암호화된 호스트 디바이스 데이터에 대한 응답으로 스토리지 디바이스(104)에 의해 전송된, 암호화된 스토리지 디바이스 특유 데이터 및 암호화된 제1 출력 스트링을 수신하는 것을 포함한다. 단계(410)에서, 방법(400)은 인증 모듈(310)이 랜덤 시드 테이블의 제2 시드를 이용하여 암호화된 스토리지 디바이스 특유 데이터를 복호화하여 스토리지 디바이스 특유 데이터를 획득하는 것을 포함한다. 제2 시드는 랜덤 시드 인덱스에 위해 위치하거나 인덱싱된다. 스토리지 디바이스 특유 데이터는 스토리지 디바이스9104)의 카드 고유 데이터이다. 예를 들어, 카드 고유 데이터는, 특정 스토리지 디바이스(104)에 특유한, CSN, BB, RemBlks, FwData 등과 같은 하나 이상의 파라미터를 포함하는 정보를 포함할 수 있다.
단계(412)에서, 방법(400)은 인증 모듈(210)이 호스트 디바이스(102)에서 제2 출력 스트링을 하드 고유 데이터의 하나 이상의 파라미터의 함수로서 생성하는 것을 포함한다. 카드 고유 데이터는 제2 시드를 이용하여 암호화된 스토리지 디바이스 특유 데이터를 복호화함으로써 획득된다. 예를 들어, 함수는 파라미터 PBN(CSN), PBN(BB), RemBlks, FwDate에 기반한 Func(PBN(CSN), PBN(BB), RemBlks, FwDate)일 수 있다. 그러나, 선택된 함수는 정적 함수가 아니라 동적 함수이다. 따라서, 함수는, 앞서 언급된 파라미터가 아닌 카드 고유 데이터의 임의의 다른 파라미터에 의해 정의될 수 있는 스토리지 디바이스의 여러 가지 타입에 대해 서로 다를 수 있다. (스토리지 디바이스(104)가 진정 스토리지 디바이스인 경우에만) 제1 출력 스트링을 생성하기 위해 스토리지 디바이스(104)에 의해 사용되는 함수와, 제2 출력 스트링을 생성하기 위해 호스트 디바이스(102)에 의해 사용되는 함수는 서로 유사하다. 이것은 인증 프로세스 동안에 호스트 디바이스(102) 단에서 제1 출력 스트링과 제2 출력 스트링 사이의 비교가 가능하도록 한다.
제2 출력 스트링을 생성하기 위한 예시적인 함수는 Func(PBN(CSN), PBN(BB), RemBlks, FwDate)일 수 있고, 이것은 다른 산술 연산자와 함께, 불린 연산자(Boolean operator)와 같은 다양한 연산자를 이용하여 만들어진 파라미터 CSN, BB, RemBlks 및 FwDate의 함수이다.
단계(414)에서, 방법(400)은 인증 모듈(210)이 키를 이용하여 암호화된 제1 출력 스트링을 복호화하여 제1 출력 스트링을 획득하는 것을 포함한다. 키는 카드 고유 데이터의 하나 이상의 파라미터 및 RST의 조합을 이용하여 도출된다. 예를 들어, 키는 CSN과 같은 카드 고유 데이터의 파라미터에 의해 포인팅되는 RST의 시드일 수 있고, key= (SeedIndex(PBN(CSN)))이다. 카드 고유 데이터의 임의의 파라미터가 사용될 수 있고, 호스트 디바이스(102)와 스토리지 디바이스(104)에 프리셋될 수 있다.
단계(416)에서, 방법(400)은 인증 모듈(210)이 스토리지 디바이스(104)로부터의 제1 출력 스트링과, 호스트 디바이스(102)에서 생성된 제2 출력 스트링을 비교하는 것을 포함한다.
단계(418)에서, 방법(400)은 인증 모듈(210)이 사용자에게, 2 개의 스트링이 서로 동일하거나 일치하는 경우, 스토리지 디바이스(104)가 진정 스토리지 디바이스임을 표시하는 것을 포함한다. 그러나 만일 2 개의 스트링이 일치하지 않는다면, 단계(420)에서, 방법(400)은 인증 모듈(210)이 사용자에게 스토리지 디바이스(104)가 부진정 스토리지 디바이스임을 표시한다.
방법(400)의 다양한 동작들은 도시된 순서로 수행될 수도 있고, 도시된 것과 다른 순서 혹은 동시에 수행될 수도 있다. 또한, 본 발명의 몇몇의 실시예에서, 도 4a 및 도 4b에 도시된 일부 동작은 생략될 수 있다.
도 5는 본 발명의 일 실시예에 따라 호스트 디바이스(102)에 의해 스토리지 디바이스(104)를 인증하기 위한 방법(500)을 설명하기 위한 흐름도이다. 현재 인증 세션에 대해 인증될 스토리지 디바이스(104)가 호스트 디바이스(102)에 연결되면 언제든지, 단계(502)에서, 방법(500)은 인증 모듈(310)이 현재 인증 세션에 대해 호스트 디바이스(102)로부터 암호화된 호스트 디바이스 데이터를 수신하는 것을 포함한다. 단계(504)에서, 방법(500)은 인증 모듈(310)이 암호화된 호스트 디바이스 데이터를 복호화하여 호스트 디바이스 데이터를 획득하는 것을 포함한다. 암호화된 호스트 디바이스 데이터는 RST의 제1 시드를 이용하여 복호화된다. 호스트 디바이스 데이터는 랜덤 시드 테이블의 랜덤 시드 인덱스, 시작 시그니처 및 종료 시그니처를 포함한다. 랜덤 시드 인덱스는 현재 인증 세션에 대해 호스트 디바이스에 의해 생성되고, 각각의 인증 세션에 대해 서로 다를 수 있다.
단계(506)에서, 방법(500)은 인증 모듈(310)이 스토리지 디바이스 특유 데이터를 암호화하여 암호화된 스토리지 디바이스 특유 데이터를 생성하는 것을 포함한다. 스토리지 디바이스 특유 데이터는 랜덤 시드 테이블의 제2 시드를 이용하여 암호화된다. RST로부터의 제2 시드는 호스트 디바이스 데이터로부터 획득한 랜덤 시드 인덱스를 이용하여 위치하거나 인덱싱된다. 카드 고유 데이터인 스토리지 디바이스 특유 데이터는 하나 이상의 파라미터를 포함한다. 예를 들어, 카드 고유 데이터는, 특정 스토리지 디바이스(104)에 특유한 CSN, BB, RemBlks, FwDate 등과 같은 하나 이상의 파라미터를 포함하는 정보를 포함한다.
단계(508)에서, 방법(500)은 인증 모듈(310)이 카드 고유 데이터의 하나 이상의 파라미터에 대한 함수인 제1 출력 스트링을 생성하는 것을 포함한다. 예를 들어, 함수는, 다른 산술 연산자와 함께, 불린 연산자와 같은 다양한 연산자를 이용하여 만들어진 파라미터 CSN, BB, RemBlks, FwDate에 기반한 Func(PBN(CSN), PBN(BB), RemBlks, FwDate)일 수 있다. 그러나, 선택된 함수는 정적 함수가 아니라 동적 함수이고, 따라서, 스토리지 디바이스의 여러 가지 타입에 대해 서로 다를 수 있다. 또한, 카드 고유 데이터의 임의의 다른 파라미터가 함수를 정의하기 위해 사용될 수 있다. (스토리지 디바이스(104)가 진정 스토리지 디바이스인 경우에만) 제1 출력 스트링을 생성하기 위해 스토리지 디바이스(104)에 의해 사용되는 함수와, 제2 출력 스트링을 생성하기 위해 호스트 디바이스(102)에 의해 사용되는 함수는 서로 유사하다. 이것은 인증 프로세스 동안에 호스트 디바이스(102) 단에서 제1 출력 스트링과 제2 출력 스트링 사이의 비교가 가능하도록 한다. 제2 출력 스트링을 생성하기 위한 예시적인 함수는 Func(PBN(CSN), PBN(BB), RemBlks, FwDate)일 수 있고, 이것은 다른 산술 연산자와 함께, 불린 연산자(Boolean operator)와 같은 다양한 연산자를 이용할 수 있는 파라미터 CSN, BB, RemBlks 및 FwDate의 함수이다.
또한, 제1 출력 스트링은 키를 이용하여 암호화되어 암호화된 제1 출력 스트링을 생성한다. 키는 카드 고유 데이터의 하나 이상의 파라미터 및 랜덤 시드 테이블을 이용하여 도출된다. 예를 들어, 키는 CSN과 같은 카드 고유 데이터의 파라미터에 의해 포인팅되는 RST의 시드일 수 있고, key= (SeedIndex(PBN(CSN)))이다. 카드 고유 데이터의 임의의 파라미터가 키를 위해 사용될 수 있고, 파라미터는 호스트 디바이스(102)와 스토리지 디바이스(104)에 프리셋될 수 있다. 단계(510)에서, 방법(500)은 인증 모듈(310)이 스토리지 디바이스 특유 데이터 및, 호스트 디바이스(102)에 전송된 제1 출력 스트링과 호스트 디바이스(102)에서 생성된 제2 출력 스트링 사이의 비교 결과에 기반하여 호스트 디바이스로부터 인증 표시를 수신하는 것을 포함한다.
도 6은, 본 발명의 일 실시예에 따라 스토리지 디바이스(104)의 인증을 위해 호스트 디바이스(102)와 스토리지 디바이스(104) 사이에 교환되는 데이터를 암호화 및 복호화하기 위해 호스트 디바이스(102) 및 스토리지 디바이스(104)에 의해 사용되는 랜덤 시드 테이블(RST)(600)의 예를 설명하기 위한 도면이다. 도 6은 (스토리지 디바이스(104)가 진정 스토리지 디바이스인 경우) 호스트 디바이스(102) 및 스토리지 디바이스(104)의 메모리의 버퍼 공간에 유지되는 RST(600)를 도시한다. 랜덤 시드 테이블 버퍼 위치는 포인터 또는 시드 인덱스(602), 예컨대, 0, 1, 2, ..., N-1, N, N+1, ... 에 의해 어드레싱된다. 각각의 시드 인덱스에 대응하는 데이터 엔트리는 RST(600)의 시드로서 참조된다. RST의 사이즈는 다양할 수 있다. 예를 들어, RST(600)는 1K 랜덤화기 시드(Randomizer Seeds) 엔트리를 가질 수 있다. 호스트 디바이스(102)와 스토리지 디바이스(104) 사이에 교환되는 암호화된 데이터의 양은, RST 사이즈가 증가하면 멀티 폴드화되고 인증 프로세스를 강화한다. RST(600)의 임의의 시드일 수 있는 제1 시드(606)는 (스토리지 디바이스(104)가 진정 스토리지 디바이스인 경우) 호스트 디바이스(102) 및 스토리지 디바이스(104) 양쪽에 프리셋된다. 본 실시예에서, 제1 시드는 시드 인덱스 2에 의해 인덱싱 또는 포인팅되는 시드 'c3'이다. 시드 'c3'는 랜덤화에 의해 호스트 디바이스 데이터를 암호화하기 위해, 호스트 디바이스(102)에 의해 사용된다. 또한, 동일한 시드 'c3'가 스토리지 디바이스(104) 단에서 암호화된 호스트 디바이스를 복호화하기 위해, 스토리지 디바이스(104)에 의해 사용된다. 랜덤 시드 인덱스(608)(N)은 호스트 디바이스(102)의 랜덤 생성기에 의해 생성되고, 암호화된 호스트 디바이스 데이터를 통해 스토리지 디바이스(104)와 공유된다. 본 실시예에서, 랜덤 시드 인덱스(N)에 의해 포인팅 또는 인덱싱되는 시드 '66'은 암호화된 스토리지 디바이스 특유 데이터를 복호화하고 카드 고유 데이터를 획득하기 위해, 호스트 디바이스(102)에 의해 사용된다. 동일한 시드 '66'이 카드 고유 데이터를 암호화하기 위해, 스토리지 디바이스(104)에 의해 사용된다. RST(600)는 시드 인덱스(612)에 의해 포인팅 또는 인덱싱되는 키(610)를 도시한다. 키(612)는 제1 출력 스트링을 암호화하기 위해 스토리지 디바이스(104)에 의해 사용되고, 제1 출력 스트링을 복호화하기 위해 호스트 디바이스에 의해 사용된다. 키에 대한 시드 인덱스는 카드 고유 데이터의 파라미터로부터 미리 정의된 파라미터로부터 도출된다. 예를 들어, key= SeedIndex(PBN(CSN))은 시드 인덱스가 카드 고유 데이터에 의해 제공되는 CSN 정보와 동일한 수임을 나타낸다. 해당 기술 분야의 통상의 기술자가 이해할 수 있는 바와 같이, 도 6에 도시된 파라미터의 값들은 설명을 위한 예시에 불과하고, 본 발명의 범위가 이에 제한되는 것은 아니다.
도 7은 본 발명의 일 실시예에 따라 스토리지 디바이스(104)의 인증을 위해 스토리지 디바이스(104)에 의해 호스트 디바이스(102)와 공유되는 카드 고유 데이터(700)의 예를 설명하기 위한 도면이다. 도 7은 CSN(Card Serial Number)(702), BB(Bad Blocks information)(704), RemBlks(Remaining Valid Blocks)(706), FwDate(Firmware Release Date)(708)과 같은 하나 이상의 파라미터를 포함하는 카드 고유 데이터(700)를 도시한다. 이들 모든 파라미터 또는 카드 고유 데이터의 임의의 다른 파라미터(도시되지 않음)는 특정 스토리지 디바이스에 특유하고, 다른 스토리지 디바이스와 동일할 확률은 최소이다. 해당 기술 분야의 통상의 기술자가 이해할 수 있는 바와 같이, 도 7에 도시된 파라미터의 값들은 설명을 위한 예시에 불과하고, 본 발명의 범위가 이에 제한되는 것은 아니다.
도 8은 본 발명의 일 실시예에 따라 스토리지 디바이스의 인증을 위한 방법을 구현하는 컴퓨팅 환경을 설명하기 위한 도면이다. 도시된 바와 같이, 컴퓨팅 환경(802)은 제어 유닛(806) 및 ALU(Arithmetic Logic Unit)(808)를 포함하는 하나 이상의 프로세싱 유닛(804), 메모리(810), 스토리지 유닛(812), 복수의 네트워킹 디바이스(814) 및 복수의 입력/출력(I/O) 디바이스(816)를 포함한다. 프로세싱 유닛(804)는 알고리즘의 인스트럭션을 처리하는 것을 담당한다. 프로세싱 유닛(804)은 제어 유닛(806)으로부터 명령을 수신하여, 그 처리를 수행한다. 또한, 인스트럭션의 실행에 관련된 임의의 논리 및 산술 연산이 ALU(808)의 도움과 함께 계산된다.
컴퓨팅 환경(802) 전체는 다수의 동종 코어 및/또는 이종 코어, 여러 종류의 다수의 CPU, 특별 매체 및 다른 가속 장치를 포함할 수 있다. 프로세싱 유닛(804)은 알고리즘의 인스트럭션을 처리하는 것을 담당한다. 또한, 복수의 프로세싱 유닛(804)은 단일 칩 상에, 또는 다수의 칩에 걸쳐 위치할 수 있다.
구현에 필요한 인스트럭션 및 코드를 포함하는 알고리즘은 메모리 유닛(810) 및 스토리지(812) 중 적어도 하나에 저장된다. 실행 시, 인스트럭션은 대응하는 메모리(810) 및/또는 스토리지(812)로부터 페치되어, 프로세싱 유닛(814)에 의해 실행될 수 있다. 하드웨어 구현의 경우, 네트워킹 유닛 및 I/O 디바이스 유닛을 통한 구현을 지원하기 위해, 다양한 네트워킹 디바이스(814) 또는 외부 I/O 디바이스(816)가 컴퓨팅 환경에 연결될 수 있다. 본 명세서에서 설명된 실시예들은 하나 이상의 하드웨어 디바이스 상에서 실행되어 네트워크 요소를 제어하기 위한 네트워크 관리 기능을 수행하는 하나 이상의 소프트웨어 프로그램을 통해 구현될 수 있다. 도 1 내지 도 8에 도시된 네트워크 요소들은 하드웨어 디바이스, 하드웨어 디바이스와 소프트웨어 모듈의 결합 중 적어도 하나일 수 있는 블록들을 포함한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 시스템 102: 호스트 디바이스
104: 스토리지 디바이스 202, 302: 프로세서
204, 304: I/O 인터페이스 206, 306: 메모리
208, 308: 모듈 210, 310: 인증 모듈
212, 312: 데이터 600: 랜덤 시드 테이블
602: 시드 인덱스 604: 시드
606: 제1 시드 608: 랜덤 시드 인덱스
610: 키 612: 키에 대한 시드 인덱스
700: 카드 고유 데이터 702: CSN
704: BB 706: RemBlks
708: FwDate 802: 컴퓨팅 환경
804: 프로세싱 유닛 806: 제어 유닛
808: ALU 810: 메모리
812: 스토리지 814: 네트워킹 디바이스
816: I/O 디바이스
104: 스토리지 디바이스 202, 302: 프로세서
204, 304: I/O 인터페이스 206, 306: 메모리
208, 308: 모듈 210, 310: 인증 모듈
212, 312: 데이터 600: 랜덤 시드 테이블
602: 시드 인덱스 604: 시드
606: 제1 시드 608: 랜덤 시드 인덱스
610: 키 612: 키에 대한 시드 인덱스
700: 카드 고유 데이터 702: CSN
704: BB 706: RemBlks
708: FwDate 802: 컴퓨팅 환경
804: 프로세싱 유닛 806: 제어 유닛
808: ALU 810: 메모리
812: 스토리지 814: 네트워킹 디바이스
816: I/O 디바이스
Claims (9)
- 호스트 디바이스의 인증 모듈을 이용하여, 현재 인증 세션에 대해 암호화된 호스트 디바이스 데이터를 스토리지 디바이스에 전송하고,
상기 인증 모듈을 이용하여, 상기 스토리지 디바이스에 전송된 상기 암호화된 호스트 디바이스 데이터에 기초하여, 암호화된 스토리지 디바이스 특유 데이터 및 암호화된 제1 출력 스트링을 상기 스토리지 디바이스로부터 수신하고,
상기 인증 모듈을 이용하여, 상기 스토리지 디바이스로부터의 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 제1 출력 스트링에 기반하여 상기 스토리지 디바이스를 인증하는 것을 포함하고,
상기 암호화된 호스트 디바이스 데이터는,
랜덤 시드 테이블에 대응하는 랜덤 시드 인덱스를 생성하고,
상기 랜덤 시드 테이블로부터의 제1 시드를 이용하여 호스트 디바이스 데이터를 랜덤화하여 상기 암호화된 호스트 디바이스 데이터를 획득함으로써 획득되고,
상기 랜덤 시드 인덱스는 상기 현재 인증 세션에 대한 것이고, 상기 랜덤 시드 테이블은 상기 호스트 디바이스 및 상기 스토리지 디바이스에 존재하고,
상기 호스트 디바이스 데이터는 상기 랜덤 시드 인덱스, 시작 시그니처 및 종료 시그니처를 포함하는 스토리지 디바이스의 인증 방법. - 삭제
- 제1항에 있어서,
상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 제1 출력 스트링에 기반하여 상기 스토리지 디바이스를 인증하는 것은,
상기 랜덤 시드 테이블의 제2 시드에 기초하여 상기 암호화된 스토리지 디바이스 특유 데이터를 복호화하여, 스토리지 디바이스 특유 데이터를 획득하고, 상기 제2 시드는, 상기 암호화된 호스트 디바이스 데이터에서 상기 스토리지 디바이스와 공유된 랜덤 시드 인덱스에 의해 위치하고, 상기 스토리지 디바이스 특유 데이터는 하나 이상의 파라미터를 포함하는 카드 고유 데이터이고,
상기 호스트 디바이스에서, 상기 카드 고유 데이터의 상기 하나 이상의 파라미터에 대한 함수로서 제2 출력 스트링을 생성하고,
키에 기초하여 상기 암호화된 제1 출력 스트링을 복호화하여 제1 출력 스트링을 획득하고, 상기 키는 상기 카드 고유 데이터의 상기 하나 이상의 파라미터 및 상기 랜덤 시드 테이블에 기초하여 도출되고,
상기 제2 출력 스트링이 상기 제1 출력 스트링과 일치하는 경우 상기 스토리지 디바이스를 인증하는 것을 포함하는 스토리지 디바이스의 인증 방법. - 제1항에 있어서,
상기 스토리지 디바이스로부터의 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 제1 출력 스트링은,
상기 랜덤 시드 테이블의 상기 제1 시드를 이용하여, 상기 암호화된 호스트 디바이스 데이터를 복호화하여 상기 랜덤 시드 테이블의 랜덤 시드 인덱스, 시작 시그니처 및 종료 시그니처를 포함하는 호스트 디바이스 데이터를 생성하고, 상기 호스트 디바이스 데이터의 상기 랜덤 시드 인덱스는 상기 현재 인증 세션에 대한 것이고, 상기 랜덤 시드 테이블은 상기 호스트 디바이스 및 상기 스토리지 디바이스에 존재하고,
스토리지 디바이스 특유 데이터를 암호화하여 상기 암호화된 스토리지 디바이스 특유 데이터를 생성하고, 상기 스토리지 디바이스 특유 데이터는 상기 랜덤 시드 테이블의 제2 시드를 이용하여 암호화되고, 상기 제2 시드는, 상기 호스트 디바이스 데이터로부터 획득한 상기 랜덤 시드 인덱스를 이용하여 위치하고, 상기 스토리지 디바이스 특유 데이터는 하나 이상의 파라미터를 포함하는 카드 고유 데이터이고,
키를 이용하여 출력 스트링을 암호화하여 상기 암호화된 출력 스트링을 생성하고, 상기 키는 상기 카드 고유 데이터의 상기 하나 이상의 파라미터 및 상기 랜덤 시드 테이블을 이용하여 도출되고, 상기 출력 스트링은 상기 카드 고유 데이터의 상기 하나 이상의 파라미터에 대한 함수이고,
상기 호스트 디바이스에 의해 상기 스토리지 디바이스의 인증을 위해, 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 출력 스트링을 상기 호스트 디바이스에 전송함으로써 상기 스토리지 디바이스에 의해 획득되는 스토리지 디바이스의 인증 방법. - 프로세서;
메모리; 및
상기 메모리 내의 인증 모듈을 포함하고,
상기 인증 모듈은,
현재 인증 세션에 대해 암호화된 호스트 디바이스 데이터를 스토리지 디바이스에 전송하고,
상기 스토리지 디바이스에 전송된 상기 암호화된 호스트 디바이스 데이터에 대한 응답으로, 암호화된 스토리지 디바이스 특유 데이터 및 암호화된 제1 출력 스트링을 상기 스토리지 디바이스로부터 수신하고,
상기 스토리지 디바이스로부터 수신된 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 제1 출력 스트링에 기반하여 상기 스토리지 디바이스를 인증하고,
랜덤 시드 테이블에 대응하는 랜덤 시드 인덱스를 생성하고,
상기 랜덤 시드 테이블로부터의 제1 시드를 이용하여 호스트 디바이스 데이터를 랜덤화하여 상기 암호화된 호스트 디바이스 데이터를 획득함으로써, 상기 암호화된 호스트 디바이스 데이터를 획득하고,
상기 랜덤 시드 인덱스는 상기 현재 인증 세션에 대한 것이고, 상기 랜덤 시드 테이블은 상기 호스트 디바이스 및 상기 스토리지 디바이스에 존재하고,
상기 호스트 디바이스 데이터는 상기 랜덤 시드 인덱스, 시작 시그니처 및 종료 시그니처를 포함하는 상기 스토리지 디바이스의 인증을 위한 호스트 디바이스. - 삭제
- 제5항에 있어서,
상기 인증 모듈은,
상기 랜덤 시드 테이블의 제2 시드를 이용하여 상기 암호화된 스토리지 디바이스 특유 데이터를 복호화하여, 상기 스토리지 디바이스 특유 데이터를 획득하고, 상기 제2 시드는, 상기 암호화된 호스트 디바이스 데이터에서 상기 스토리지 디바이스와 공유된 상기 랜덤 시드 인덱스에 의해 위치하고, 상기 스토리지 디바이스 특유 데이터는 하나 이상의 파라미터를 포함하는 카드 고유 데이터이고,
상기 호스트 디바이스에서, 상기 카드 고유 데이터의 상기 하나 이상의 파라미터에 대한 함수로서 제2 출력 스트링을 생성하고,
키를 이용하여 상기 암호화된 상기 제1 출력 스트링을 복호화하여 제1 출력 스트링을 획득하고, 상기 키는 상기 카드 고유 데이터의 상기 하나 이상의 파라미터 및 상기 랜덤 시드 테이블을 이용하여 도출되고,
상기 제2 출력 스트링이 상기 제1 출력 스트링과 일치하는 경우 상기 스토리지 디바이스를 인증함으로써, 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 제1 출력 스트링에 기반하여 상기 스토리지 디바이스를 인증하는 호스트 디바이스. - 프로세서;
메모리; 및
상기 메모리 내의 인증 모듈을 포함하고,
상기 인증 모듈은,
현재 인증 세션에 대해 암호화된 호스트 디바이스 데이터를 호스트 디바이스로부터 수신하고,
상기 호스트 디바이스로부터 수신한 상기 암호화된 호스트 디바이스 데이터에 대한 응답으로, 암호화된 스토리지 디바이스 특유 데이터 및 암호화된 출력 스트링을 상기 호스트 디바이스에 전송하고,
상기 인증 모듈은,
랜덤 시드 테이블의 제1 시드를 이용하여, 상기 암호화된 호스트 디바이스 데이터를 복호화하여 상기 랜덤 시드 테이블의 랜덤 시드 인덱스, 시작 시그니처 및 종료 시그니처를 포함하는 호스트 디바이스 데이터를 생성하고, 상기 호스트 디바이스 데이터의 상기 랜덤 시드 인덱스는 상기 현재 인증 세션에 대한 것이고, 상기 랜덤 시드 테이블은 상기 호스트 디바이스 및 상기 스토리지 디바이스에 존재하고,
스토리지 디바이스 특유 데이터를 암호화하여 상기 암호화된 스토리지 디바이스 특유 데이터를 생성하고, 상기 스토리지 디바이스 특유 데이터는 상기 랜덤 시드 테이블의 제2 시드를 이용하여 암호화되고, 상기 제2 시드는, 상기 호스트 디바이스 데이터로부터 획득한 상기 랜덤 시드 인덱스를 이용하여 위치하고, 상기 스토리지 디바이스 특유 데이터는 하나 이상의 파라미터를 포함하는 카드 고유 데이터이고,
키를 이용하여 출력 스트링을 암호화하여 상기 암호화된 출력 스트링을 생성하고, 상기 키는 상기 카드 고유 데이터의 상기 하나 이상의 파라미터 및 상기 랜덤 시드 테이블을 이용하여 도출되고, 상기 출력 스트링은 상기 카드 고유 데이터의 상기 하나 이상의 파라미터에 대한 함수이고,
상기 호스트 디바이스에 의해 상기 스토리지 디바이스의 인증을 위해, 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 출력 스트링을 상기 호스트 디바이스에 전송함으로써 상기 암호화된 스토리지 디바이스 특유 데이터 및 상기 암호화된 출력 스트링을 전송하는 상기 호스트 디바이스에 의해 상기 스토리지 디바이스의 인증을 위한 스토리지 디바이스. - 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201641008278 | 2016-03-09 | ||
IN201641008278 | 2016-03-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170105393A KR20170105393A (ko) | 2017-09-19 |
KR102419505B1 true KR102419505B1 (ko) | 2022-07-08 |
Family
ID=59786810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160068610A KR102419505B1 (ko) | 2016-03-09 | 2016-06-02 | 스토리지 디바이스의 인증 방법 및 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10242175B2 (ko) |
KR (1) | KR102419505B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11743058B2 (en) * | 2020-03-05 | 2023-08-29 | International Business Machines Corporation | NVDIMM security with physically unclonable functions |
US12001707B2 (en) * | 2020-08-20 | 2024-06-04 | Micron Technology, Inc. | Host verification for a memory device |
KR20220122009A (ko) * | 2021-02-26 | 2022-09-02 | 삼성전자주식회사 | 시스템 온 칩 및 그 동작 방법 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5671368A (en) | 1996-02-22 | 1997-09-23 | O2 Micro, Inc. | PC card controller circuit to detect exchange of PC cards while in suspend mode |
KR100585096B1 (ko) * | 2003-06-26 | 2006-05-30 | 삼성전자주식회사 | 기록 장치를 구비하는 데이터 처리 장치의 인증 방법 및이에 적합한 장치들 |
WO2006064765A1 (ja) | 2004-12-13 | 2006-06-22 | Matsushita Electric Industrial Co., Ltd. | 不正機器検出装置及び不正機器検出システム |
WO2009079734A1 (en) * | 2007-12-20 | 2009-07-02 | Bce Inc. | Contact-less tag with signature, and applications thereof |
KR101535226B1 (ko) | 2008-12-16 | 2015-07-27 | 삼성전자주식회사 | 중간 변환 장치를 통해 연결된 저장 장치 인증 방법 및 시스템 |
US9385871B2 (en) * | 2011-05-23 | 2016-07-05 | Samsung Electronics Co., Ltd | Method and apparatus for authenticating a non-volatile memory device |
KR20130140948A (ko) * | 2012-05-17 | 2013-12-26 | 삼성전자주식회사 | 저장 장치의 식별자에 기반한 컨텐츠의 암복호화 장치 및 방법 |
US20140310536A1 (en) * | 2013-04-16 | 2014-10-16 | Qualcomm Incorporated | Storage device assisted inline encryption and decryption |
-
2016
- 2016-06-02 KR KR1020160068610A patent/KR102419505B1/ko active IP Right Grant
- 2016-12-14 US US15/378,760 patent/US10242175B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20170105393A (ko) | 2017-09-19 |
US10242175B2 (en) | 2019-03-26 |
US20170262626A1 (en) | 2017-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9276753B2 (en) | System and method for data authentication among processors | |
US10091000B2 (en) | Techniques for distributing secret shares | |
US10341091B2 (en) | Secure memory storage | |
CN108345806B (zh) | 一种硬件加密卡和加密方法 | |
US10110380B2 (en) | Secure dynamic on chip key programming | |
JP6449970B2 (ja) | IoTデバイス | |
US9904804B2 (en) | Layout-optimized random mask distribution system and method | |
KR20150041095A (ko) | 선택적 ram 스크램블링을 위한 방법 및 디바이스들 | |
US10021104B2 (en) | Method for operating a security element | |
WO2013107593A1 (en) | Electronic device generating an identifier based on physical unclonable functions | |
US20190278912A1 (en) | Method and apparatus for performing firmware programming on microcontroller chip, and associated microcontroller chip | |
KR102419505B1 (ko) | 스토리지 디바이스의 인증 방법 및 시스템 | |
US20220366030A1 (en) | Password Management Method and Related Apparatus | |
US20080098231A1 (en) | Data transmission method using an acknowledgement code comprising hidden authentication bits | |
CN107111728A (zh) | 安全密钥导出功能 | |
CN111767553B (zh) | 数据加密解密方法、mcu及电子设备、可读存储介质 | |
CN109075974B (zh) | 指纹算法库与指纹传感器的绑定认证方法及指纹识别系统 | |
CN111431706B (zh) | 一种使用fpga逻辑实现提高sm4算法速度的方法,系统及设备 | |
CN204808325U (zh) | 一种对数据进行加密的设备 | |
US9135449B2 (en) | Apparatus and method for managing USIM data using mobile trusted module | |
JP2015026892A (ja) | 情報処理システム | |
CN102473211B (zh) | 获取软件应用程序的方法 | |
EP3193274B1 (en) | Secure memory storage | |
CN202495948U (zh) | 一种网络安全终端 | |
JP6801448B2 (ja) | 電子情報記憶媒体、認証システム、認証方法、及び認証アプリケーションプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |