KR20180031584A - 메모리 시스템 및 그것과 호스트 사이의 바인딩 방법 - Google Patents
메모리 시스템 및 그것과 호스트 사이의 바인딩 방법 Download PDFInfo
- Publication number
- KR20180031584A KR20180031584A KR1020170118619A KR20170118619A KR20180031584A KR 20180031584 A KR20180031584 A KR 20180031584A KR 1020170118619 A KR1020170118619 A KR 1020170118619A KR 20170118619 A KR20170118619 A KR 20170118619A KR 20180031584 A KR20180031584 A KR 20180031584A
- Authority
- KR
- South Korea
- Prior art keywords
- host
- key
- binding
- memory
- signature
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4081—Live connection to bus, e.g. hot-plugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- 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/606—Protecting data by securing the transmission between two devices or processes
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/85—Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
메모리 시스템은 인터페이스, 비휘발성 메모리 및 컨트롤러를 포함한다. 인터페이스는 외부의 호스트와 보안되지 않은 통신 링크를 통해 통신하도록 구성된다. 비휘발성 메모리는 메모리 시스템 외부에 존재하고 호스트에 의해 보안되게 접근 가능한 데이터베이스에 추가적으로 저장되는 장치 식별자 및 대응하는 초기화 키로 사전 프로그램 된다. 컨트롤러는 장치 식별자를 호스트로 송신하고, 인터페이스를 통해 호스트에서 생성된 바인딩 정보를 수신하고, 적어도 수신된 바인딩 정보 및 사전 프로그램 된 초기화 키를 이용해 데이터베이스로부터 호스트에 의해 보안되게 얻어진 초기화 키를 기초로 호스트에서 생성된 제2 바인딩 키와 매칭되는 제1 바인딩 키를 생성하고, 제1 바인딩 키를 이용해 통신 링크를 통해 호스트와 보안되게 통신하도록 구성된다.
Description
본 명세서에 기술된 실시예들은 일반적으로 데이터 저장 장치에 관한 것이고, 특히 호스트와 메모리 칩 사이의 보안된 바인딩(securely binding)을 위한 방법들 및 시스템들에 관한 것이다.
본 출원은 2016년 9월 18일에 출원된 미국 특허 가출원 62/396,165 및 2017년 8월 31일 출원된 미국 특허 출원 15/691,758에 대해 우선권의 이익을 주장한다. 상기 언급된 특허 출원의 전체는 본 명세서에 참조로써 병합된다.
다양한 사용자 장치들에서, 호스트는 메모리 칩과 같은 보안된 메모리 시스템에 데이터를 저장한다. 상호간에 보안되게 통신하기 위해, 호스트와 메모리 칩은 전형적으로 공유된 비밀 키를 설정한다.
본 명세서에 기술된 일 실시예는 인터페이스, 비휘발성 메모리 및 컨트롤러를 포함하는 메모리 시스템을 제공한다. 인터페이스는 보안되지 않은(unsecured) 통신 링크를 통해 메모리 시스템 외부의 호스트와 통신하도록 구성된다. 비휘발성 메모리는 적어도 하나의 장치 식별자 및 대응하는 초기화 키로 사전 프로그램 된다. 장치 식별자 및 각각의 초기화 키는 메모리 시스템 외부의 데이터베이스에 추가적으로 저장된다. 데이터베이스는 호스트에 의해 보안되게 접근 가능하다. 컨트롤러는 호스트에 장치 식별자를 송신하고, 호스트에서 생성된 바인딩 정보를 인터페이스를 통해 호스트로부터 수신하고, 적어도 수신한 바인딩 정보 및 사전 프로그램 된 초기화 키를 이용해 제2 바인딩 키와 매칭되는 제1 바인딩 키를 생성하고, 제1 바인딩 키를 이용해 통신 링크를 통해 호스트와 보안되게 통신하도록 구성된다. 상기 제2 바인딩 키는 컨트롤러로부터 수신된 장치 식별자를 이용해 데이터베이스에 질의함으로써 데이터베이스로부터 호스트에 의해 보안되게 얻어진 초기화 키를 기초로 호스트에서 생성된다.
일부 실시예들에서, 바인딩 정보는 호스트에 의해 생성되고 데이터베이스로부터 얻어진 초기화 키를 이용해 암호화 된 바인딩 키를 포함하고, 컨트롤러는 사전 프로그램 된 초기화 키를 이용해 바인딩 정보로부터 암호화된 바인딩 키를 복호화 함으로써 제1 바인딩 키를 생성하도록 구성된다. 다른 실시예들에서, 바인딩 정보는 호스트에 의해 생성된 시드를 포함하고, 컨트롤러는 시드 및 사전 프로그램 된 초기화 키를 기초로 제1 바인딩 키를 생성하도록 구성된다. 또 다른 실시예들에서, 컨트롤러는 시드 및 사전 프로그램 된 초기화 키에 대한 해시 함수를 계산함으로써 제1 바인딩 키를 생성하도록 구성된다.
일 실시예에서, 컨트롤러는 호스트가 적어도 시드 및 데이터베이스로부터 얻어진 초기화 키에 대해 계산한 서명을 호스트로부터 수신하고, 서명을 이용해 바인딩 정보를 인증하도록 구성된다. 다른 실시예에서, 컨트롤러는 바인딩 정보의 적어도 일부분에 대해 계산된 서명을 호스트로부터 수신하고, 상기 서명을 이용해 수신된 바인딩 정보를 인증하고, 수신된 바인딩 정보가 성공적으로 인증된 경우에만 호스트와의 통신을 위한 제1 바인딩 키를 수용하도록 구성된다. 또 다른 실시예에서, 컨트롤러는 비휘발성 메모리의 사전 프로그램 된 콘텐트에 대해 계산된 메모리 서명을 수신하고, 상기 메모리 서명을 이용해 비휘발성 메모리의 실제 콘텐트를 인증하고, 메모리 서명이 성공적으로 인증된 경우에만 호스트와의 통신을 위한 제1 바인딩 키를 수용하도록 구성된다.
일부 실시예들에서, 데이터베이스는 장치 식별자와 연관된 메모리 서명을 저장하고, 컨트롤러는 장치 식별자를 이용해 데이터베이스로부터 호스트에 의해 검색된 메모리 서명을 호스트로부터 수신하도록 구성된다. 다른 실시예들에서, 컨트롤러는 호스트로부터 바인딩 정보의 적어도 일부분 및 메모리 서명에 대해 계산된 결합된 서명을 호스트로부터 수신하고, 결합된 서명에 기초해 바인딩 정보 및 사전 프로그램 된 콘텐트를 인증하도록 구성된다.
본 명세서에 기술된 일 실시예에 따라, 외부 호스트와 연결된 메모리 시스템에서, 보안되지 않은 통신 링크에 대해 호스트로 장치 식별자를 송신하는 단계를 포함하는 방법이 추가적으로 제공된다. 상기 메모리 시스템은 적어도 장치 식별자 및 대응하는 초기화 키로 사전 프로그램 된 비휘발성 메모리를 포함한다. 장치 식별자 및 각각의 초기화 키는 메모리 시스템 외부의 데이터베이스에 추가적으로 저장된다. 데이터베이스는 호스트에 의해 보안되게 접근 가능하다. 호스트에서 생성된 바인딩 정보는 호스트로부터 수신된다. 제1 바인딩 키는 적어도 수신된 바인딩 정보 및 사전 프로그램된 초기화 키를 이용해 메모리 시스템에 의해 생성된다. 생성된 제1 바인딩 키는 컨트롤러부터 수신된 장치 식별자를 이용해 데이터베이스에 질의함으로써 데이터베이스로부터 호스트에 의해 보안되게 얻어진 초기화 키를 기초로 호스트에서 생성된 제2 바인딩 키와 매칭된다. 데이터는 제1 바인딩 키를 이용해 통신 링크를 통해 호스트와 보안되게 통신된다.
이 실시예들 및 다른 실시예들은 도면들과 함께 이하의 실시예들의 상세한 설명으로부터 더욱 완전히 이해될 것이다.
도 1은 본 명세서에 기술된 일 실시예에 따라, 호스트 및 메모리 칩이 공유된 비밀 키를 설정하는 사용자 장치를 도식적으로 나타내는 블록 다이어그램이다.
그리고 도 2는 본 명세서에 기술된 일 실시예에 따라, 보안된 바인딩을 위한 방법을 도식적으로 나타내는 플로우 차트이다.
그리고 도 2는 본 명세서에 기술된 일 실시예에 따라, 보안된 바인딩을 위한 방법을 도식적으로 나타내는 플로우 차트이다.
<개요>
다양한 어플리케이션들에서, 스마트 카드 같은 사용자 장치는 데이터 저장 공간 뿐 아니라 개인 식별 및 인증과 같은 다른 서비스들을 제공한다. 일부 유형의 사용자 장치들은 메모리 시스템에 연결된 호스트를 포함한다. 메모리 시스템, 예를 들어, 메모리 칩은 전형적으로 메모리 컨트롤러에 의해 관리되는 비휘발성 메모리를 포함한다. 이하의 설명에서 메모리 칩을 포함하는 예시적인 메모리 시스템을 주로 참조하기로 한다.
본 명세서에 기술된 실시예들은 호스트와 메모리 시스템 사이에 공유되는 비밀 키를 설정하기 위한 방법들 및 시스템들을 제공한다. 공유된 비밀 키를 설정하는 프로세스는 편의상 “바인딩 프로세스” 또는 간단히 “바인딩”이라고도 지칭된다. 바인딩 프로세스에 의해 생성된 공유된 비밀 키는 또한 본 명세서에서 “바인딩 키”로서 지칭된다.
개시된 기술들에서, 바인딩 프로세스는 메모리 칩과 호스트 사이에서 비밀 정보를 보안되게 공유하는 것을 필요로 하며, 비밀 정보는 메모리 칩에서 사전 프로그램 된다. 바인딩 프로세스가 호스트와 메모리 칩 사이의 보안되지 않은 링크를 통해 초기화된다고 하더라도, 바인딩 프로세스는 메모리 칩의 보안을 위협하지 않는다.
바인딩 프로세스는 전형적으로 메모리 칩에서 바인딩 키를 생성하고, 호스트에서 매칭되는 바인딩 키를 생성한다. 상기 매칭된 바인딩 키들은 대칭적일 수 있고, 비대칭적일 수 있다. 대칭적인 바인딩 키들을 이용함에 있어서, 호스트와 메모리 칩은 공통의 바인딩 키를 공유한다. 비대칭적인 바인딩 키들을 이용함에 있어서, 호스트와 메모리 칩에서 바인딩 키들은 다르지만, 그럼에도 불구하고 호스트와 메모리 칩이 보안되게 통신하는 것이 가능케 한다. 본 개시 및 청구항들에서, “공유된 바인딩 키”, “매칭된 바인딩 키들” 및 “제2 바인딩 키와 매칭되는 제1 바인딩 키”와 같은 용어들은 대칭적인 바인딩 키들 및 비대칭적인 바인딩 키들을 모두 지칭한다.
호스트와 메모리 칩은 그들 사이에 교환되는 정보를 암호화 하고, 상호적으로 서로를 인증하고, 인증이 실패했을 때 메모리 칩의 비밀 정보로의 비인가된 접근을 방지하기 위해 전형적으로 매칭된 바인딩 키들을 이용한다.
원칙적으로, 호스트가 적절한 링크에 의해 메모리 칩에 물리적으로 연결된 뒤에는, 호스트는 비밀 키를 국부적으로 생성할 수 있고, 바인딩 프로세스를 완료하기 위해 메모리 칩에 이 비밀 키를 송신할 수 있다. 그러나 호스트와 메모리 칩 사이의 링크는 바인딩 프로세스가 완료될 때까지 전형적으로 보안되지 않기 때문에, 그러한 바인딩 방식은 인가되지 않은 사용자가 메모리 칩에 저장된 기밀 정보에 대한 접근을 시도하는 보안 공격에 취약할 수 있다. 이하에서 기술될 실시예들은 메모리 시스템의 보안을 유지하는 바인딩 방식을 구현한다.
일부 실시예들에서, 메모리 칩은 고유의 장치 식별자(Dev-ID로 표시됨) 및 대응하는 비밀 초기화 키(I-Key로 표시됨)로 사전 프로그램 된다. Dev-ID 및 I-Key는 사용자 장치 외부의 데이터베이스(아마도 제3의 데이터베이스)에 추가적으로 저장된다. 데이터베이스는 호스트에 의해 보안되게 접근될 수 있다.
일부 실시예들에서, 호스트는 메모리 컨트롤러에 바인딩 요청을 송신함으로써 바인딩 프로세스를 개시한다. 이에 응답하여, 메모리 컨트롤러는 그것의 사전 프로그램 된 Dev-ID를 호스트에 송신한다. 호스트는 Dev-ID에 대응하는 I-Key를 데이터베이스로부터 보안되게 검색한다. 호스트는 바인딩 정보를 생성하고, 메모리 컨트롤러에 바인딩 정보를 송신한다. 바인딩 정보는 바인딩 키 자체(예를 들어, 호스트에 의해 암호화되어 전송된) 또는 바인딩 키가 유도될 수 있는 다른 바인딩 정보를 포함할 수 있다. 호스트 및 메모리 컨트롤러는 바인딩 정보 및 I-Key를 기초로 매칭되는 바인딩 키들을 생성한다. 특히, 호스트는 생성된 바인딩 정보 및 데이터베이스로부터 얻어진 I-Key 인스턴스를 기초로 그것의 바인딩 키를 생성한다. 메모리 컨트롤러는 호스트로부터 수신된 바인딩 정보 및 사전 프로그램 된 I-Key를 기초로 그것의 바인딩 키를 생성한다.
일부 실시예들에서, 호스트는 호스트에 의해 생성되고 데이터베이스로부터 얻어진 I-Key 인스턴스를 이용해 암호화 된 바인딩 키를 포함하는 바인딩 정보를 메모리 컨트롤러로 송신한다. 메모리 컨트롤러는 바인딩 키를 복구하기 위해 사전 프로그램 된 I-Key를 이용해 바인딩 정보를 복호화 한다. 다른 실시예들에서, 바인딩 정보는 호스트에 의해 생성된 랜덤 시드를 포함한다. 호스트 및 메모리 컨트롤러는 랜덤 시드 및 각각의 I-Key의 인스턴스들을 기초로 각각의 바인딩 키들을 생성한다. 예를 들어, 호스트 및 메모리 컨트롤러는 랜덤 시드 및 I-Key에 대한 적절한 해시 함수를 계산함으로써 각각의 바인딩 키들을 생성한다. 대안적으로, 호스트는 유사하게 비 랜덤 시드의 생성을 기초로 바인딩 정보를 생성한다. 본 개시 및 청구항들에서, “시드”라는 용어는, 예를 들어 랜덤, 수도-랜덤(pseudo-random) 및 비 랜덤 시드들을 포함하는 시드들의 다양한 유형들 및 구현들을 광범위하게 지칭한다.
일부 실시예들에서, 메모리 컨트롤러는 호스트로부터 수신한 서명을 이용해 바인딩 정보를 인증한다. 호스트는 바인딩 정보 및 데이터베이스로부터 얻은 I-Key의 인스턴스에 대해 서명을 계산한다. 메모리 컨트롤러는 바인딩 정보가 성공적으로 인증되었을 경우에만 바인딩 프로세스를 완료한다. 일부 실시예들에서, 바인딩 프로세스를 완료하기 전에, 메모리 컨트롤러는 비휘발성 메모리 전체(또는 일부만) 또는 적어도 비휘발성 메모리에 저장된 모든 기밀 정보를 소거한다.
일부 실시예들에서, 예컨대 대량 생산의 경우에, 메모리 칩은 소거되어서는 안되는 콘텐트로 사전 프로그램 된다. 일부 실시예들에서, 데이터베이스는 Dev-ID와 연관된, 사전 프로그램 된 콘텐트(또는 사전 프로그램 된 콘텐트의 관련된 부분들)에 대해 계산된 메모리 서명을 저장한다. 일 실시예에서, Dev-ID가 주어지면, 호스트는 데이터베이스로부터 메모리 서명을 검색하고, 메모리 칩에 실제로 저장된 사전 프로그램 된 콘텐트를 인증하기 위해 그것을 메모리 컨트롤러로 송신한다. 일 실시예에서, 바인딩 정보 및 메모리 서명을 인증하기 위한 서명은 하나의 서명으로 결합되어 메모리 컨트롤러는 바인딩 정보 및 사전 프로그램 된 콘텐트 모두를 커버하는 하나의 인증 동작을 수행한다.
<시스템 설명>
도 1은 본 명세서에 기술된 일 실시예에 따라, 호스트 및 메모리 칩이 공유된 비밀 키를 설정하는 사용자 장치(24)를 도식적으로 나타내는 블록 다이어그램이다. 사용자 장치(24)는 통신 버스 또는 링크(36)를 통해 사용자 장치의 메모리 칩(32)에 연결된 호스트(28)를 포함한다. 메모리 칩(32)은 비휘발성 메모리(44)에 호스트에 대한 데이터를 저장한다. 비휘발성 메모리(44)는 본 예에서 플래시 메모리이다. 메모리 칩(32)에 저장된 데이터의 적어도 일부는 기밀성이 있고, 메모리 칩 외부로 노출되거나 유출되어서는 안 된다.
메모리 칩(32)은 다양한 사용자 호스트 시스템들 및 장치들에서 이용될 수 있다. 예를 들어, 메모리 칩(32)은 예로서 신용 카드들, 연료 카드들, 이동 전화 SIM 카드들, 유료 텔레비전, 선 지불 카드들, 높은 보안 식별 및 액세스 제어 카드들, 전자 지갑들 등과 같은 다양한 어플리케이션들을 위한 스마트 카드들에 이용될 수 있다. 메모리 칩(32)은 또한 컴퓨팅 장치들, PCs(Personal Computers) 또는 컴퓨터 서버들, 휴대 전화 또는 다른 통신 단말기들, 탈착식 메모리 모듈들, SSD(Solid State Disks), SD(Secure Digital) 카드들, MMC(Multi-Media Cards) 및 eMMC(embedded MMC), 디지털 카메라들, 음악 및 기타 미디어 플레이어들, 사물 인터넷(IoT; Internet of Things) 노드들 및/또는 데이터가 저장되고 검색되는 다른 어떠한 시스템 또는 장치에 이용될 수 있다.
호스트(28)는 사용자 장치에 의해 요구되는 적절한 프로그램들을 실행하는 프로세서(40)를 포함한다. 호스트(28)는 통신 버스(36)를 통해 메모리 칩과 통신하기 위한 적절한 인터페이스(50A)를 포함한다. 호스트(28)는 원격 서버에 설치된 데이터베이스와 보안되게 통신하기 위한 수단을 추가적으로 포함한다.
비휘발성 메모리(44)는 전형적으로 복수의 메모리 셀들을 포함한다(미도시). 본 예에서, 비휘발성 메모리(44)는 플래시 메모리를 포함하지만, 대안적으로 다른 어떠한 적절한 저장 기술을 사용하여 구현될 수 있다. 비휘발성 메모리(44)의 저장 용량은 호스팅 사용자 장치의 저장 공간 요구에 의존하고, 예를 들어, 수 메가 비트 또는 수 기가 비트 정도일 수 있다.
메모리 칩(32)은 비휘발성 메모리(44)의 데이터 저장을 관리하는 메모리 컨트롤러(48)를 포함한다. 메모리 컨트롤러(48)는 적절한 인터페이스(50B)를 통해 호스트(28)와 통신 버스(36)를 통해 통신한다. 메모리 컨트롤러(48)는 임의의 적절한 내부 통신 버스 또는 링크(52)를 통해 비휘발성 메모리(44)에 연결될 수 있다. 메모리 칩(32)에서, 통신 버스(52)를 통해 메모리 컨트롤러 및 비휘발성 메모리 사이에 전송되는 임의의 정보는 메모리 칩(32) 외부에서 접근 불가능하다.
호스트와 메모리 칩 사이의 통신 버스(36)는 임의의 적절한 프로토콜에 따라 동작하는 임의의 적절한 버스 또는 링크를 포함할 수 있다. 통신 버스(36)는 예를 들어, SPI(Serial Peripheral Interface) 버스 또는 I2C 버스(Inter-Integrated Circuit)를 포함할 수 있다. 통신 버스(36)는 임의의 적절한 속도로 정보를 송신 및 수신하는 직렬 버스 또는 병렬 버스로서 동작할 수 있다. SPI 버스 및 유사하게 I2C 버스는 수 Kbps 내지 수 Mbps의 비트율(예를 들어, 50MHz 기반 Octal SPI 버스에서 400Mbps 이상)로 동작할 수 있다.
호스트 및 메모리 칩은 암호화, 복호화, 해싱 및 인증과 같은 암호 동작들을 지원하는 각각의 암호 엔진들(60A, 60B)을 포함한다. 암호 엔진들(60A, 60B)은 각각의 바인딩 키들(64A, 64B)을 이용해 암호 동작들을 수행한다. 비록 우리는 일반적으로 바인딩 키들(64A, 64B)이 동일하다고 가정하지만, 이 가정은 강제적이지 않으며, 비대칭적인(즉, 상이한) 바인딩 키들(64A, 64B) 또한 이용될 수 있다. 바인딩 키들을 설정하는 바인딩 프로세스는 이하에서 상세하게 기술될 것이다. 일반적으로, 암호 엔진들(60A, 60B)은 바인딩 키들(64A, 64B) 이외의 비밀 키들을 이용하여 보안된 바인딩 이외의 다른 목적들로 이용될 수 있다.
메모리 칩(32)은 고유의 장치 식별자(Dev-ID로 표시됨) 및 연관된 각각의 비밀 초기화 키(72)(I-Key로 표시됨)를 포함한다. Dev-ID(68) 및 그것의 연관된 I-Key(72)는 제조 시 또는 메모리 칩 및 호스트가 사용자 장치 내에 함께 어셈블링 된 후에 메모리 칩에 사전 프로그램 될 수 있다. 일부 실시예들에서, Dev-ID 및 연관된 I-Key는 비휘발성 메모리(44)에서 사전 프로그램 된다. 일부 실시예들에서, Dev-ID 및 I-Key를 초기화하기 위해, 메모리 칩은 Dev-ID 및 각각의 I-Key를 메모리 칩에 프로그램하고, 기록을 위해 보안된 방식으로 데이터베이스(76)에 {Dev-ID, I-Key} 쌍을 송신하는 초기화 서버에 연결된다. 데이터베이스(76)는 사용자 장치 외부에 존재하고, 전형적으로 서버 또는 다른 적절한 컴퓨터 내에 구현된다.
비밀 I-Key(72)는 메모리 칩 마다 고유하게 할당될 수 있고, 또는 복수의 메모리 칩들 간에 공유될 수 있다. 메모리 칩에 사전 프로그램 된 후에는, I-Key(72)는 메모리 칩 또는 사용자 장치의 임의의 설계된 인터페이스들을 통해 판독되거나 재기입 될 수 없다.
도 1의 예에서, 호스트(28)는 임의의 적절한 보안된 통신 프로토콜을 이용해 예를 들어 이더넷 또는 인터넷 프로토콜(IP) 네트워크와 같은 통신 네트워크(78)를 통해 데이터베이스(76)와 통신한다. 대안적으로, 통신 네트워크(78)는 임의의 다른 적절한 표준 또는 프로토콜에 따라 동작할 수 있다. 또한 대안적으로, 호스트(28)는 적절한 보안된 버스 또는 링크를 이용해 데이터베이스(76)에 직접적으로 연결된다.
도 1의 사용자 장치(24) 및 메모리 칩(32)의 구성들은 개념적 명료함을 위해 단순히 선택된 예시적인 구성들이다. 대안적 실시예들에서, 사용자 장치 및 메모리 칩의 임의의 다른 적절한 구성들 또한 이용될 수 있다. 메모리 컨트롤러(48) 및 암호 엔진(60B)과 같은 메모리 칩(32)의 다른 요소들은 ASIC(Application -Specific Integrated Circuit) 또는 FPGA(Field-Programmable Gate Array)와 같은 임의의 적절한 하드웨어를 이용해 구현될 수 있다. 비휘발성 메모리(44)는 임의의 적절한 유형의 반도체 메모리, 예를 들어 하나 또는 그 이상의 플래시 메모리 장치들을 이용해 구현될 수 있다. 일부 실시예들에서, 메모리 칩(32), 호스트(28) 또는 그 둘의 일부 요소들은 소프트웨어 또는 하드웨어 및 소프트웨어 요소들의 결합을 이용해 구현될 수 있다.
일부 실시예들에서, 메모리 컨트롤러(48) 및/또는 프로세서(40)와 같은 사용자 장치(24)의 특정 요소들은 본 명세서에 기술된 기능들을 수행하기 위해 소프트웨어로 프로그램 된 하나 또는 그 이상의 범용 프로세서들을 포함할 수 있다. 소프트웨어는 예를 들어 네트워크를 통해 프로세서들에 전자적인 형태로 다운로드 될 수 있거나, 대안적으로 또는 추가적으로 자기, 광학 또는 전자 메모리와 같은 비일시적 유형의 매체에 제공 및/또는 저장될 수 있다.
사용자 장치(24)에서, 호스트(28) 및 메모리 칩(32)은 각각 분리된 반도체 다이를 포함할 수 있고, 두 다이들은 공통의 패키지 또는 분리된 패키지들에 존재한다. 대안적으로, 호스트(28) 및 메모리 칩(32)은 모놀리식 다이 상에 제조된다. 일부 실시예들에서, 메모리 컨트롤러(48), 비휘발성 메모리(44) 및 암호 엔진(56)은 모두 메모리 칩(32)을 포함하는 공통된 다이에 존재한다.
<보안된 바인딩을 위한 방법들>
먼저 보안된 바인딩 프로세스를 수행하는 실시예들의 일반적인 개요를 제공하고, 이하에서 추가적으로 보안된 바인딩을 위한 방법들을 상세히 기술한다. 바인딩 프로세스를 수행함에 있어서, 메모리 칩은 사전 프로그램 된 Dev-ID(68)를 링크(36)를 통해 호스트로 보고한다. 사전 프로그램 된 Dev-ID(68)는 비밀이 아닌 것으로 간주되며 링크(36)를 통해 노출될 수 있다. 호스트는 보고된 Dev-ID로 원격 서버의 데이터베이스(76)에 질의하고, 이에 응답하여 데이터베이스는 이 Dev-ID와 연관된 데이터베이스에 기록된 I-Key를 검색한다. 데이터베이스(76)를 보유하는 서버는 검색된 I-Key를 보안된 방식으로 호스트에 송신한다.
이 시점에서, 각각의 호스트 및 메모리 칩은 비밀 초기화 키의 인스턴스를 보유한다. 특히, 메모리 칩은 메모리 칩에 사전 프로그램 된 I-Key의 인스턴스를 가지며, 호스트는 데이터베이스로부터 검색된 비밀 I-Key의 인스턴스를 가진다.
호스트는 바인딩 정보를 생성하고 가능하면 보안된 방식으로 링크(36)를 통해 메모리 칩으로 바인딩 정보를 송신한다. 바인딩 정보 및 각각의 I-Key 인스턴스들을 기초로, 호스트 및 메모리 칩은 국부적으로 매칭되는 바인딩 키들을 얻어낸다.
도 2는 본 명세서에 기술된 일 실시예에 따라, 보안된 바인딩을 위한 방법을 도식적으로 나타내는 플로우 차트이다. 상기 방법은, 예시적으로 사용자 장치(24)에서 링크(36)를 통해 상호간 연결된 메모리 컨트롤러(48) 및 호스트(28)에 의해 실행될 수 있다.
상기 방법은 메모리 컨트롤러(48)가 예로서 초기화 서버로부터 장치 식별자 및 연관된 초기화 키를 수신하는 것 및 사전 프로그램 단계(100)에서 비휘발성 메모리(44)에서 수신된 장치 식별자를 Dev-ID(68)로서, 수신된 초기화 키를 I-Key(72)로서 프로그램 하는 것으로 시작한다. 메모리 컨트롤러는 Dev-ID 및 적절한 초기화 명령에 포함된 초기화 서버로부터 얻은 연관된 I-Key를 수신할 수 있다. 초기화 서버는 상기 기술된 바와 같이 데이터베이스(76)에 {Dev-ID, I-Key} 쌍을 추가적으로 기록한다.
바인딩 요청 단계(104)에서, 메모리 컨트롤러는 링크(36)를 통해 호스트(28)로부터 바인딩 요청을 수신한다. 바인딩 요청의 수신에 응답하여, 메모리 컨트롤러는 사전 프로그램 된 Dev-ID(68)를 판독하고, 판독된 Dev-ID를 링크(36)를 통해 호스트로 다시 송신한다.
질의 단계(112)에서, 호스트(28)는 메모리 컨트롤러로부터 수신된 Dev-ID를 이용해 데이터베이스(76)에 질의한다. 일부 실시예들에서, 호스트는 통신 네트워크(78)를 통해 데이터베이스에 Dev-ID를 포함하는 적절한 질의 명령을 송신함으로써 데이터베이스(76)에 질의한다. 또한 질의 단계(112)에서, 호스트는 질의된 Dev-ID에 대응하는 I-Key를 데이터베이스로부터 수신한다. 데이터베이스는 통신 네트워크(78)를 통해 호스트에 I-Key를 보안된 방식으로 송신한다. 따라서, 메모리 칩(32) 및 호스트(28) 이외의 엔티티는 메모리 칩에 프로그램 된 I-Key(72)의 정보를 얻을 수 없다. 추가적으로, 데이터베이스로부터 얻어진 I-Key의 인스턴스는 호스트(28) 내에서 비밀로 유지된다.
바인딩 단계(116)에서, 호스트는 바인딩 정보를 생성하고 이 바인딩 정보를 메모리 컨트롤러로 송신한다. 바인딩 정보 및 I-Key를 기초로, 호스트 및 메모리 칩은 매칭되는 각각의 바인딩 키들(64A, 64B)을 생성할 수 있다. 바인딩 키(64A)를 생성하기 위해 호스트는 데이터베이스로부터 검색된 I-Key의 인스턴스를 이용한다. 바인딩 키(64B)를 생성하기 위해, 메모리 컨트롤러는 사전 프로그램 된 I-Key(72)를 이용한다.
일부 실시예들에서, 바인딩 단계(116)에서, 호스트는 데이터베이스로부터 얻어진 I-Key를 이용해 암호화 된 바인딩 키(64A)를 포함하는 바인딩 정보를 생성한다. 호스트는 임의의 적절한 암호화 방법을 이용해 바인딩 정보를 생성하기 위해 바인딩 키(64A)를 암호화 할 수 있다.
다른 실시예에서, 바인딩 단계(116)에서, 호스트는 시드를 포함하는 바인딩 정보를 생성한다. 시드는 랜덤일 수 있고, 수도-랜덤일 수 있으며, 또는 비 랜덤일 수 있다. 호스트는 난수 발생기 또는 임의의 다른 적절한 방법을 이용해 랜덤 또는 수도-랜덤 시드를 생성할 수 있다. 호스트는 생성된 시드를 (바인딩 정보로서) 예를 들어 보안되지 않은 메모리 컨트롤러로 송신한다.
일부 실시예들에서, 바인딩 단계(116)에서, 호스트는 바인딩 정보에 대한 서명을 생성하고, 인증을 위해 서명을 메모리 컨트롤러에 송신한다. 예를 들어, 호스트는 바인딩 정보 또는 바인딩 정보의 일부분에 대해 적절한 해시 함수 “H”를 계산함으로써 서명을 생성할 수 있다. 인증 단계(120)에서, 메모리 컨트롤러는 호스트로부터 서명을 수신하고, 서명을 이용해 바인딩 정보를 인증한다.
일부 실시예들에서, 인증 단계(120)에서, 메모리 컨트롤러는 테스트 서명을 생성하기 위해 수신한 바인딩 정보에 대해 해시 함수 H를 계산한다. 검증 단계(124)에서, 메모리 컨트롤러는 테스트 서명과 호스트로부터 수신된 서명을 비교하고, 이 서명들이 매칭되지 않는 경우, 메모리 컨트롤러는 실패 보고 단계(128)에서 바인딩 실패 이벤트를 보고하고, 방법은 종료된다.
검증 단계(124)에서 테스트 서명 및 호스트로부터 수신한 서명이 매칭될 때, 바인딩 정보는 성공적으로 인증되고, 메모리 컨트롤러는 바인딩 키 생성 단계(132)로 진행한다. 바인딩 키 생성 단계(132)에서, 메모리 컨트롤러는 적어도 바인딩 단계(116)에서 수신된 바인딩 정보 및 사전 프로그램 단계(100)에서 사전 프로그램 된 I-Key(72)를 기초로 바인딩 키(64B)를 생성한다. 바인딩 키들(64A, 64B)을 생성하는 방법들은 이하에서 상세히 기술된다.
바인딩 키 생성 단계(132)에 이어, 호스트와 메모리 컨트롤러는 매칭된 바인딩 키들(64A, 64B)을 갖게 되고, 보안된 통신 단계(136)에서 바인딩 키들을 이용해 상호간 보안되게 통신할 수 있다. 일부 실시예들에서, 통신을 위한 바인딩 키(64B)를 수용하기에 앞서, 메모리 컨트롤러는 비휘발성 메모리(44) 전체(또는 일부분)를 소거하거나, 비휘발성 메모리(44)에 저장된 모든 기밀 정보를 삭제하여, 메모리 칩에 포함된 비밀 정보가 노출되는 것을 막을 수 있다.
상호간 보안되게 통신하기 위해, 메모리 컨트롤러 및 호스트는 링크(36)를 통해 송신되는 데이터를 암호화 할 수 있고, 링크(36)를 통해 수신되는 데이터를 복호화 할 수 있다. 추가적으로 또는 대안적으로, 메모리 컨트롤러 및 호스트는 링크(36)를 통해 송신되는 데이터에 서명할 수 있고, 링크(36)를 통해 수신되는 서명된 데이터를 인증할 수 있다.
호스트(28) 및 메모리 컨트롤러(48)는 사용되는 바인딩 정보의 유형에 따라 각각의 바인딩 키들(64A, 64B)을 생성한다. 예를 들어, 상기 기술되었듯이, 일부 실시예들에서, 호스트는 바인딩 키(64A)를 생성하고, 바인딩 정보는 데이터베이스로부터 얻어진 I-Key를 이용해 암호화 된 바인딩 키(64A)를 포함한다. 그러한 실시예들에서, 메모리 컨트롤러는 사전 프로그램 된 I-Key(72)를 이용해 바인딩 정보를 복호화함으로써 매칭되는 바인딩 키(64B)를 생성한다.
다른 실시예에서, 바인딩 정보가 시드를 포함할 때, 호스트 및 메모리 컨트롤러는 BK=H(I-Key,Seed)를 계산함으로써 각각의 바인딩 키들(64A, 64B)을 생성한다. 여기서, BK는 바인딩 키를 나타내고, Seed는 호스트에 의해 생성된 시드를 나타내며, I-Key는 메모리 컨트롤러에서 BK(64B)를 계산하기 위한 사전 프로그램 된 I-Key(72) 및 호스트에서 BK(64A)를 계산하기 위해 데이터베이스로부터 검색된 I-Key를 나타낸다.
일부 실시예들에서, 예를 들어 대량 생산의 경우에, 메모리 칩(32)의 비휘발성 메모리(44)는 소거되어서는 안 되는 콘텐트로 사전 프로그램 된다. 그러한 실시예들에서, 메모리 컨트롤러는 바인딩 키(64B)를 수용하기 전에 사전 프로그램 된 콘텐트를 인증할 것이 요구된다.
일부 실시예들에서, 사전 프로그램 된 콘텐트를 보호하기 위해, 콘텐트에 대응하는 메모리 서명 (MemSig로 표시됨)은 사전 프로그램 된 Dev-ID(72)와 함께 데이터베이스(76)에 저장된다. 대안적으로, 메모리 서명은 데이터베이스(76) 이외의 다른 데이터베이스 또는 다른 정보 소스에 저장될 수 있다(다른 데이터 베이스 및 다른 소스는 도 1에 미도시됨). 또한 대안적으로, MemSig는 (호스트가 관련된 사전 프로그램 된 콘텐트에 대한 정보를 가지고 있을 때) 호스트에 의해 생성된다
메모리 서명은 적절한 암호화 함수, 예를 들어 적절한 해시 함수를 이용해 관련된 메모리 콘텐트에 대해 계산될 수 있다. 일 실시예에서, MemSig를 계산함에 있어서, 해시 함수는 사전 프로그램 된 메모리 콘텐트 및 각각의 Dev-ID와 연관된 I-Key 모두를 커버한다. 비휘발성 메모리(44)에서, 보호되는 메모리 콘텐트는 메모리 공간의 하나 또는 그 이상의 섹션에 저장될 수 있다.
일부 실시예들에서, Dev-ID가 주어지면, 호스트는 상기 기술된 바와 같이 I-Key를 검색하는 것 이외에 데이터베이스로부터 MemSig를 검색하고, 검색된 MemSig를 메모리 컨트롤러로 송신한다. 대안적으로, 메모리 컨트롤러는 메모리 서명이 저장되는 다른 관련된 소스로부터 메모리 서명을 수신한다. 메모리 컨트롤러는 비휘발성 메모리(44)에서 실제로 관련된 콘텐트에 대해 테스트 메모리 서명을 계산하고, 호스트로부터 수신한 MemSig가 테스트 메모리 서명과 매칭되는 것을 감지하는 것에 응답해서만 바인딩 키(64B)를 수용한다.
일부 실시예들에서, 호스트 및 메모리 컨트롤러는 바인딩 키의 생성, 바인딩 정보의 인증 또는 모두를 위해 메모리 서명을 사용한다. 예를 들어, 일 실시예에서, 호스트 및 메모리 컨트롤러는 각각의 바인딩 키들(64A, 64B)을 BK=H(I-Key,Seed,MemSig)로서 계산하고, 바인딩 정보를 인증하기 위한 서명을 서명(Signature)=H(BK)로서 계산한다. 다른 실시예에서, 호스트 및 메모리 컨트롤러는 각각의 바인딩 키들(64A, 64B)을 BK=H(I-Key,Seed)로서 계산하고, 바인딩 정보를 인증하기 위한 서명을 서명(Signature)=H(BK,MemSig)로서 계산한다. 또 다른 실시예에서, 바인딩 정보를 인증하는데 사용되는 서명은 서명(Signature)=H(BK-encrypted,I-Key,MemSig)으로 주어진다. 여기서, BK-encrypted는 I-Key를 이용해 암호화 된 바인딩 키이다.
상기 기술된 실시예들은 예시로서 주어지는 것이며, 다른 적절한 실시예들 또한 이용될 수 있다. 예를 들어, 상기 기술된 실시예들에서 서명들의 계산은 주로 초기화 키, 즉 메모리 컨트롤러에서 사전 프로그램 된 I-Key(72) 인스턴스 또는 호스트에서 데이터베이스로부터 검색된 I-Key의 인스턴스를 기초로 한다. 대안적인 실시예들에서, 서명들의 계산은 I-Key 인스턴스들의 파생물들(derivatives)을 기초로 할 수 있다. 각각의 메모리 컨트롤러 및 호스트는 예시로서 I-Key 인스턴스 및 각각의 Dev-ID에 대해 적절한 해시 함수를 계산함으로써 그것의 I-Key 인스턴스의 하나 또는 그 이상의 파생물들을 생성할 수 있다. 대안적으로, 메모리 컨트롤러는 I-Key 인스턴스 및 몇몇의 시드 또는 메모리 서명에 대해 적절한 해시 함수를 계산함으로써 I-Key 파생물들을 계산할 수 있다.
비록 상기 기술된 일부 실시에들에서 바인딩 정보가 랜덤 시드를 포함하지만, 다른 적절한 파라미터들 역시 이용될 수 있다. 예를 들어, 그러한 파라미터들은 OTP(One Time Program) 데이터 및 호스트에 할당된 비밀 키를 포함한다. OTP 데이터는 전형적으로 호스트의 비휘발성 메모리에 프로그램 되고, 사용자 장치의 수명 동안 절대 변경되지 않는다.
비록 본 명세서에 기술된 실시예들이 주로 호스트와 메모리 칩 사이의 보안된 바인딩을 기술하지만, 본 명세서에 기술된 상기 방법들 및 시스템들은 예시적으로 하드 디스크, 자기 또는 광학 저장 매체 등과 같은 임의의 컴퓨팅 장치들 사이의 보안된 통신 링크를 형성하기 위한 보안된 바인딩과 같은 다른 어플리케이션들에서도 이용될 수 있다.
상기 기술된 실시예들은 예시로서 인용되며, 이하의 청구항들이 특별히 상기 본 명세서에서 도시되고 설명된 것에 한정되지 않는다는 것은 이해될 것이다. 오히려, 적용 범위는 상기 기술된 다양한 특징들의 조합 및 서브-조합 뿐 아니라, 전술한 설명을 읽을 때 당업자에게 발생할 수 있고 종래 기술에 개시되지 않은 변형 및 수정을 포함한다. 본 특허 출원에 참조로서 결합된 문서들은 임의의 용어가 본 명세서에서 명시적 또는 암시적으로 이루어진 정의들과 모순되는 방식으로 이 결합된 문서들에 정의되어, 본 명세서의 정의들 만이 고려되어야 하는 경우를 제외하고는 적용의 필수적인 부분으로 간주된다.
Claims (14)
- 메모리 시스템에 있어서,
상기 메모리 시스템 외부의 호스트와 보안되지 않은 통신 링크를 통해 통신하도록 구성되는 인터페이스;
적어도 하나의 장치 식별자 및 대응하는 초기화 키로 사전 프로그램 되는 비휘발성 메모리로서, 상기 장치 식별자 및 각각의 상기 초기화 키는 상기 메모리 시스템 외부의 데이터베이스에 추가적으로 저장되고, 상기 데이터베이스는 상기 호스트에 의해 보안되게 접근 가능한 상기 비휘발성 메모리; 및
컨트롤러를 포함하고,
상기 컨트롤러는,
상기 호스트로 상기 장치 식별자를 송신하고,
상기 인터페이스를 통해, 상기 호스트에서 생성된 바인딩 정보를 상기 호스트로부터 수신하고,
적어도 상기 수신된 바인딩 정보 및 상기 사전 프로그램 된 초기화 키를 이용해, 제2 바인딩 키와 매칭되는 제1 바인딩 키를 생성하고, 상기 제2 바인딩 키는 상기 컨트롤러로부터 수신된 상기 장치 식별자를 이용해 상기 데이터베이스에 질의함으로써 상기 데이터베이스로부터 상기 호스트에 의해 보안되게 얻어진 초기화 키를 기초로 상기 호스트에서 생성되며,
상기 제1 바인딩 키를 이용해 상기 통신 링크를 통해 상기 호스트와 보안되게 통신하도록 구성되는 것을 특징으로 하는 메모리 시스템. - 제 1항에 있어서,
상기 바인딩 정보는 상기 호스트에 의해 생성되고 상기 데이터베이스로부터 얻어진 상기 초기화 키를 이용해 암호화 된 바인딩 키를 포함하고,
상기 컨트롤러는 상기 바인딩 정보로부터 상기 암호화 된 바인딩 키를 상기 사전 프로그램 된 초기화 키를 이용해 복호화함으로써 상기 제1 바인딩 키를 생성하도록 구성되는 것을 특징으로 하는 메모리 시스템. - 제 1항에 있어서,
상기 바인딩 정보는 상기 호스트에 의해 생성되는 시드(seed)를 포함하고,
상기 컨트롤러는 상기 시드 및 상기 사전 프로그램 된 초기화 키를 기초로 상기 제1 바인딩 키를 생성하도록 구성되는 것을 특징으로 하는 메모리 시스템. - 제3항에 있어서,
상기 컨트롤러는 상기 시드 및 상기 사전 프로그램 된 초기화 키에 대해 해시 함수를 계산함으로써 상기 제1 바인딩 키를 생성하도록 구성되는 것을 특징으로 하는 메모리 시스템. - 제3항에 있어서,
상기 컨트롤러는 상기 호스트가 적어도 상기 시드 및 상기 데이터베이스로부터 얻어진 상기 초기화 키에 대해 계산한 서명(signature)을 상기 호스트로부터 수신하고, 상기 서명을 이용해 상기 바인딩 정보를 인증하도록 구성되는 것을 특징으로 하는 메모리 시스템. - 제1항에 있어서,
상기 컨트롤러는 상기 바인딩 정보의 적어도 일부분에 대해 계산된 서명을 상기 호스트로부터 수신하고, 상기 서명을 이용해 상기 수신된 바인딩 정보를 인증하고, 상기 수신된 바인딩 정보가 성공적으로 인증된 경우에만 상기 호스트와 통신하기 위한 상기 제1 바인딩 키를 수용하도록 구성되는 것을 특징으로 하는 메모리 시스템. - 제1항에 있어서,
상기 컨트롤러는 상기 비휘발성 메모리의 사전 프로그램 된 콘텐트(content)에 대해 계산된 메모리 서명을 수신하고, 상기 메모리 서명을 이용해 상기 비휘발성 메모리의 실제 콘텐트를 인증하고, 상기 메모리 서명이 성공적으로 인증된 경우에만 상기 호스트와 통신하기 위한 상기 제1 바인딩 키를 수용하도록 구성되는 것을 특징으로 하는 메모리 시스템. - 제7항에 있어서,
상기 데이터베이스는 상기 장치 식별자와 연관된 상기 메모리 서명을 저장하고,
상기 컨트롤러는 상기 장치 식별자를 이용해 상기 데이터베이스로부터 상기 호스트에 의해 검색된 상기 메모리 서명을 상기 호스트로부터 수신하도록 구성되는 것을 특징으로 하는 메모리 시스템. - 제7항에 있어서,
상기 컨트롤러는 상기 바인딩 정보의 적어도 일부분 및 상기 메모리 서명에 대해 계산된 결합된 서명을 상기 호스트로부터 수신하고, 상기 결합된 서명을 기초로 상기 바인딩 정보 및 상기 사전 프로그램 된 콘텐트 모두를 인증하도록 구성되는 것을 특징으로 하는 메모리 시스템. - 메모리 시스템 및 호스트 사이의 바인딩 방법에 있어서,
외부의 상기 호스트에 연결된 상기 메모리 시스템에서, 보안되지 않은 통신 링크를 통해 상기 호스트로 장치 식별자를 송신하는 단계로서, 상기 메모리 시스템은 적어도 상기 장치 식별자 및 대응하는 초기화 키로 사전 프로그램 된 비휘발성 메모리를 포함하고, 상기 장치 식별자 및 각각의 상기 초기화 키는 상기 메모리 시스템 외부의 데이터베이스에 추가적으로 저장되고, 상기 데이터베이스는 상기 호스트에 의해 보안되게 접근 가능한, 상기 장치 식별자를 송신하는 단계;
상기 호스트에서 생성된 바인딩 정보를 상기 호스트로부터 수신하는 단계;
적어도 상기 수신된 바인딩 정보 및 상기 사전 프로그램 된 초기화 키를 이용해, 상기 메모리 시스템에 의해 제2 바인딩 키와 매칭되는 제1 바인딩 키를 생성하는 단계로서, 상기 제2 바인딩 키는 컨트롤러로부터 수신된 상기 장치 식별자를 이용해 상기 데이터베이스에 질의함으로써 상기 데이터베이스로부터 상기 호스트에 의해 보안되게 얻어진 초기화 키를 기초로 상기 호스트에서 생성되는, 상기 제1 바인딩 키를 생성하는 단계; 및
상기 제1 바인딩 키를 이용해 상기 통신 링크를 통해 상기 호스트와 보안되게 통신하는 단계를 포함하는 바인딩 방법. - 제10항에 있어서,
상기 바인딩 정보는 상기 호스트에 의해 생성되고 상기 데이터베이스로부터 얻어진 상기 초기화 키를 이용해 암호화 된 바인딩 키를 포함하고,
상기 제1 바인딩 키를 생성하는 단계는,
상기 사전 프로그램 된 초기화 키를 이용해 상기 바인딩 정보로부터 상기 암호화 된 바인딩 키를 복호화 하는 단계를 포함하는 것을 특징으로 하는 바인딩 방법. - 제10항에 있어서,
상기 바인딩 정보는 상기 호스트에 의해 생성되는 시드를 포함하고,
상기 제1 바인딩 키를 생성하는 단계는,
상기 시드 및 상기 사전 프로그램 된 초기화 키를 기초로 상기 제1 바인딩 키를 계산하는 단계를 포함하는 것을 특징으로 하는 바인딩 방법. - 제12항에 있어서,
상기 제1 바인딩 키를 생성하는 단계는 상기 시드 및 상기 사전 프로그램 된 초기화 키에 대해 해시 함수를 계산하는 단계를 포함하는 것을 특징으로 하는 바인딩 방법. - 제12항에 있어서,
상기 호스트가 적어도 상기 시드, 및 상기 데이터베이스로부터 얻어진 상기 초기화 키에 대해 계산한 서명을 상기 호스트로부터 수신하는 단계; 및
상기 서명을 이용해 상기 바인딩 정보를 인증하는 단계를 더 포함하는 바인딩 방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662396165P | 2016-09-18 | 2016-09-18 | |
US62/396,165 | 2016-09-18 | ||
US15/691,758 | 2017-08-31 | ||
US15/691,758 US10482036B2 (en) | 2016-09-18 | 2017-08-31 | Securely binding between memory chip and host |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180031584A true KR20180031584A (ko) | 2018-03-28 |
KR102024339B1 KR102024339B1 (ko) | 2019-11-04 |
Family
ID=59914313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170118619A KR102024339B1 (ko) | 2016-09-18 | 2017-09-15 | 메모리 시스템 및 그것과 호스트 사이의 바인딩 방법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10482036B2 (ko) |
EP (1) | EP3296912B1 (ko) |
KR (1) | KR102024339B1 (ko) |
CN (1) | CN107846396B (ko) |
ES (1) | ES2873598T3 (ko) |
TW (1) | TWI635394B (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10565229B2 (en) | 2018-05-24 | 2020-02-18 | People.ai, Inc. | Systems and methods for matching electronic activities directly to record objects of systems of record |
US11463441B2 (en) | 2018-05-24 | 2022-10-04 | People.ai, Inc. | Systems and methods for managing the generation or deletion of record objects based on electronic activities and communication policies |
US11258772B2 (en) * | 2018-06-19 | 2022-02-22 | Cypress Semiconductor Corporation | Secured communication from within non-volatile memory device |
US10942909B2 (en) * | 2018-09-25 | 2021-03-09 | Salesforce.Com, Inc. | Efficient production and consumption for data changes in a database under high concurrency |
US11726923B2 (en) * | 2019-06-18 | 2023-08-15 | Micron Technology, Inc. | Memory device with cryptographic kill switch |
CN113032786B (zh) * | 2019-12-25 | 2023-07-04 | 成都鼎桥通信技术有限公司 | 认证凭证的传递方法、芯片及设备 |
KR20210089486A (ko) | 2020-01-08 | 2021-07-16 | 삼성전자주식회사 | 키를 안전하게 관리하기 위한 장치 및 방법 |
SG10202105796SA (en) * | 2021-06-01 | 2021-07-29 | Flexxon Pte Ltd | Module and method for authenticating data transfer between a storage device and a host device |
WO2024164295A1 (en) * | 2023-02-10 | 2024-08-15 | Qualcomm Incorporated | Hardware-based data protection for replay protected data |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130266137A1 (en) * | 2012-04-10 | 2013-10-10 | Western Digital Technologies, Inc. | Digital rights managment system, devices, and methods for binding content to an intelligent storage device |
US20160085960A1 (en) * | 2014-09-23 | 2016-03-24 | Intel Corporation | Securely Pairing Computing Devices |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004139433A (ja) * | 2002-10-18 | 2004-05-13 | Toshiba Corp | 端末装置とこの装置で使用する記録媒体、及びコンテンツ管理システムとその管理サーバ |
TWI263431B (en) * | 2004-09-22 | 2006-10-01 | Inst Information Industry | Data encryption system and method |
WO2009027126A1 (en) * | 2007-08-24 | 2009-03-05 | International Business Machines Corporation | System and method for protection of content stored in a storage device |
KR101473488B1 (ko) * | 2007-11-29 | 2014-12-17 | 삼성전자주식회사 | 휴대 방송을 지원하는 이동 단말로 전달되는 응답 메시지를생성하는 스마트 카드 및 방법 그리고 그 이동 단말 |
KR100936885B1 (ko) * | 2007-12-10 | 2010-01-14 | 한국전자통신연구원 | 다운로드 가능한 제한수신시스템에서의 상호 인증 방법 및그 장치 |
CN101740111B (zh) * | 2008-11-11 | 2013-11-06 | 国民技术股份有限公司 | 半导体存储装置及其实现数据安全存储的方法 |
US8225110B2 (en) * | 2009-01-09 | 2012-07-17 | Telefonaktiebolaget Lm Ericsson (Publ) | Cryptographic protection of usage restrictions in electronic devices |
US8484720B2 (en) * | 2009-05-22 | 2013-07-09 | Sandisk Il Ltd. | Service binding method and system |
US8788842B2 (en) * | 2010-04-07 | 2014-07-22 | Apple Inc. | System and method for content protection based on a combination of a user PIN and a device specific identifier |
US20120137137A1 (en) * | 2010-11-30 | 2012-05-31 | Brickell Ernest F | Method and apparatus for key provisioning of hardware devices |
US8788849B2 (en) * | 2011-02-28 | 2014-07-22 | Sandisk Technologies Inc. | Method and apparatus for protecting cached streams |
US9124432B2 (en) * | 2012-05-25 | 2015-09-01 | Kabushiki Kaisha Toshiba | Host device and authentication method for host device |
WO2013175641A2 (ja) * | 2012-05-25 | 2013-11-28 | 株式会社東芝 | セキュリティシステム |
GB2504457A (en) * | 2012-06-06 | 2014-02-05 | Univ Bruxelles | Message authentication via distributed secret keys |
US9141783B2 (en) * | 2012-06-26 | 2015-09-22 | Ologn Technologies Ag | Systems, methods and apparatuses for the application-specific identification of devices |
IL235729A (en) * | 2014-11-17 | 2017-06-29 | Kaluzhny Uri | A device and method for securely storing information |
US9787726B2 (en) * | 2015-01-30 | 2017-10-10 | Blackberry Limited | Control of accesses for IMS services |
-
2017
- 2017-08-31 US US15/691,758 patent/US10482036B2/en active Active
- 2017-09-13 TW TW106131424A patent/TWI635394B/zh active
- 2017-09-15 KR KR1020170118619A patent/KR102024339B1/ko active IP Right Grant
- 2017-09-18 CN CN201710865497.7A patent/CN107846396B/zh active Active
- 2017-09-18 EP EP17191517.6A patent/EP3296912B1/en active Active
- 2017-09-18 ES ES17191517T patent/ES2873598T3/es active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130266137A1 (en) * | 2012-04-10 | 2013-10-10 | Western Digital Technologies, Inc. | Digital rights managment system, devices, and methods for binding content to an intelligent storage device |
US20160085960A1 (en) * | 2014-09-23 | 2016-03-24 | Intel Corporation | Securely Pairing Computing Devices |
Also Published As
Publication number | Publication date |
---|---|
EP3296912B1 (en) | 2021-03-17 |
ES2873598T3 (es) | 2021-11-03 |
TWI635394B (zh) | 2018-09-11 |
EP3296912A1 (en) | 2018-03-21 |
CN107846396B (zh) | 2020-12-15 |
TW201814541A (zh) | 2018-04-16 |
CN107846396A (zh) | 2018-03-27 |
KR102024339B1 (ko) | 2019-11-04 |
US10482036B2 (en) | 2019-11-19 |
US20180081827A1 (en) | 2018-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102024339B1 (ko) | 메모리 시스템 및 그것과 호스트 사이의 바인딩 방법 | |
US9294279B2 (en) | User authentication system | |
CN1269071C (zh) | 存储卡 | |
US8953790B2 (en) | Secure generation of a device root key in the field | |
US9118467B2 (en) | Generating keys using secure hardware | |
US9824239B2 (en) | System for and method of cryptographic provisioning | |
US9264426B2 (en) | System and method for authentication via a proximate device | |
JP7277270B2 (ja) | 埋め込まれたルートオブトラストシークレットで生成される集積回路の個人化 | |
US9721071B2 (en) | Binding of cryptographic content using unique device characteristics with server heuristics | |
US20190280853A1 (en) | Device keys protection | |
EP1643675A1 (en) | Stateless hardware security module | |
US20090268902A1 (en) | System for and method of cryptographic provisioning | |
US9338005B2 (en) | System for and method of remote secure backup | |
CN111401901B (zh) | 生物支付设备的认证方法、装置、计算机设备和存储介质 | |
KR20210132721A (ko) | 네트워크에 액세스 시의 보안 통신 | |
TWI476629B (zh) | Data security and security systems and methods | |
CN113569303A (zh) | 存储装置、安全销装置和存储装置的操作方法 | |
US20240249002A1 (en) | Storage system including storage device and host provisioning certificate into the storage device, system including the storage system, and method of operating the system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |