KR20180025261A - 보안형 메모리 칩의 롤백 방지 버전 업그레이드 - Google Patents

보안형 메모리 칩의 롤백 방지 버전 업그레이드 Download PDF

Info

Publication number
KR20180025261A
KR20180025261A KR1020170109686A KR20170109686A KR20180025261A KR 20180025261 A KR20180025261 A KR 20180025261A KR 1020170109686 A KR1020170109686 A KR 1020170109686A KR 20170109686 A KR20170109686 A KR 20170109686A KR 20180025261 A KR20180025261 A KR 20180025261A
Authority
KR
South Korea
Prior art keywords
data item
version identifier
storage location
signature
version
Prior art date
Application number
KR1020170109686A
Other languages
English (en)
Inventor
니르 타셔
이태이 애드몬
Original Assignee
윈본드 일렉트로닉스 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윈본드 일렉트로닉스 코포레이션 filed Critical 윈본드 일렉트로닉스 코포레이션
Publication of KR20180025261A publication Critical patent/KR20180025261A/ko
Priority to KR1020200064515A priority Critical patent/KR102254256B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/73Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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
    • H04L9/3247Cryptographic 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 involving digital signatures

Abstract

보안형 저장 시스템은 비휘발성 메모리와 제어기를 포함한다. 비휘발성 메모리는, 제1 데이터 아이템 및 제1 데이터 아이템에 배정된 각각의 제1 버전 식별자를 저장하도록 구성된다. 제어기는, 비휘발성 메모리의 제1 데이터 아이템을 교체하도록 제2 버전 식별자와 서명이 동반되는 제2 데이터 아이템을 수신하고, 서명을 이용하여 적어도 제2 버전 식별자를 인증하고, 저장된 제1 버전 식별자와 제2 버전 식별자 간의 비교를 행하고, (i) 제2 버전 식별자가 성공적으로 인증되었으며 (ii) 저장된 제1 버전 식별자와 인증된 제2 버전 식별자 간의 비교에 의해 표시되는 바와 같이 제2 데이터 아이템이 제1 데이터 아이템보다 최근의 것이라는 검증에만 응답하여, 제1 데이터 아이템을 제2 데이터 아이템으로 교체하도록 구성된다.

Description

보안형 메모리 칩의 롤백 방지 버전 업그레이드{ANTI-ROLLBACK VERSION UPGRADE IN SECURED MEMORY CHIP}
관련 출원에 대한 상호 참조
본 출원원은 2016년 8월 30일에 가출원한 미국 가특허출원 제62/381,028호인 우선권을 주장하며, 우선권의 개시 내용은 본 명세서에 참고로 원용된다.
발명의 기술분야
본원에서 설명하는 실시예들은, 일반적으로 데이터 저장 장치에 관한 것으로서, 구체적으로는, 메모리 칩의 보안형 버전 업그레이드(secured version upgrade)를 위한 방법 및 시스템에 관한 것이다.
다양한 휴대용 장치 및 기타 장치에 있어서, 프로세서는, 메모리 칩에 결합되며 메모리 칩에 저장되어 있는 컴퓨터 프로그램을 실행한다. 이러한 유형의 일부 장치에 있어서, 메모리 칩은 데이터 저장 장치를 보안 방식으로 관리한다.
본원에서 설명하는 일 실시예는 비휘발성 메모리와 제어기를 포함하는 보안형 저장 시스템을 제공한다. 비휘발성 메모리는, 제1 데이터 아이템 및 제1 데이터 아이템에 배정된 각 제1 버전 식별자를 저장하도록 구성된다. 제어기는, 비휘발성 메모리의 제1 데이터 아이템을 교체하도록 제2 버전 식별자와 서명이 동반되는 제2 데이터 아이템을 수신하고, 서명을 이용하여 적어도 제2 버전 식별자를 인증하고, 저장된 제1 버전 식별자와 제2 버전 식별자 간의 비교를 행하고, (i) 제2 버전 식별자가 성공적으로 인증되었으며 (ii) 저장된 제1 버전 식별자와 인증된 제2 버전 식별자 간의 비교에 의해 표시되는 바와 같이 제2 데이터 아이템이 제1 데이터 아이템보다 최근의 것이라는 검증에만 응답하여, 제1 데이터 아이템을 제2 데이터 아이템으로 교체하도록 구성된다.
일부 실시예에서, 제어기는, (i) 적어도 버전 식별자를 인증하여 인증 결과를 생성하고, (ii) 비교를 행하고, (iii) 단일 무중단(uninterruptible) 동작으로, 인증 결과와 비교에 기초하여 제1 데이터 아이템을 제2 데이터 아이템으로 조건적으로 교체하도록 구성된다. 다른 실시예에서, 제어기는, 제어기가 제2 데이터 아이템의 제공자와 공유하는 비밀 키에 기초하여 서명을 검증함으로써 제2 버전 식별자를 인증하도록 구성된다. 또 다른 실시예에서, 제어기는, 비밀 키 및 적어도 제2 버전 식별자에 기초하여 수신된 제2 데이터 아이템에 대한 서명을 계산하여 계산된 서명을 생성하고, 계산된 서명이 수신된 서명과 일치하는지 여부를 체크하도록 구성된다.
일 실시예에서, 제1 데이터 아이템은 비휘발성 메모리의 물리적 어드레스 공간의 제1 물리적 저장 위치를 점유하고, 제어기는, 제2 데이터 아이템에 대하여 물리적 어드레스 공간의 제2 물리적 저장 위치를 할당하고, 제1 물리적 저장 위치의 물리적 어드레스와 저장 시스템에 의해 사용되는 논리적 어드레스 공간의 제1 논리적 저장 위치의 논리적 어드레스 간을 맵핑하고, 제2 물리적 저장 위치의 물리적 어드레스와 논리적 어드레스 공간의 제2 논리적 저장 위치의 논리적 어드레스 간을 맵핑하도록 구성된다. 다른 일 실시예에서, 제어기는, 제2 데이터 아이템을 제2 논리적 저장 위치를 통해 비휘발성 메모리의 제2 물리적 저장 위치에 기입함으로써 제1 데이터 아이템을 제2 데이터 아이템으로 교체하도록 구성된다. 또 다른 일 실시예에서, 제어기는, 제1 논리적 저장 위치의 논리적 어드레스를 제2 데이터 아이템을 판독하기 위한 제2 물리적 저장 위치의 물리적 어드레스에 리맵핑(re-map)함으로써 제1 데이터 아이템을 제2 데이터 아이템으로 교체하도록 구성된다.
일부 실시예에서, 제어기는, 제2 물리적 저장 위치의 기입을 잠금 및 잠금해제하기 위한 기입 방지 표시자를 배정하고, 제2 데이터 아이템을 제2 물리적 저장 위치에 기입하기 전에 제2 물리적 저장 위치를 잠금해제하고, 제2 데이터 아이템을 제2 물리적 저장 위치에 기입하는 것을 종료한 후 제2 물리적 저장 위치를 잠그도록 구성된다. 다른 실시예에서, 제어기는, 제2 데이터 아이템의 각 부분을 각각 반송하는 다수의 기입 커맨드를 비휘발성 메모리에 전송함으로써 제2 데이터 아이템을 제2 물리적 저장 위치에 기입하도록 구성된다. 또 다른 실시예에서, 기입 커맨드의 각각은 제2 데이터 아이템에 연관된 비밀 키를 이용하여 계산된 각 커맨드 서명을 포함하고, 제어기는, 제2 데이터 아이템에 연관된 비밀 키를 이용하여 각 커맨드 서명을 검증한 후에만 각 기입 커맨드를 실행하도록 구성된다.
일부 실시예에서, 서명은 제2 데이터 아이템과 제2 버전 식별자 모두에 대하여 계산되고, 제어기는, 각 커맨드 서명의 제2 버전 식별자가 제1 버전 식별자보다 최근의 것임을 확인(validate)한 후에만 기입 커맨드를 실행하도록 구성된다. 다른 실시예에서, 제어기는, 제2 버전 식별자와 후속 버전 업데이트의 버전 식별자 간의 비교를 위해 비휘발성 메모리에 제2 버전 식별자를 저장하도록 구성된다.
또한, 본원에서 설명하는 일 실시예에 따라, 제1 데이터 아이템 및 제1 데이터 아이템에 배정된 각각의 제1 버전 식별자를 저장 시스템의 비휘발성 메모리에 저장하는 단계를 포함하는 보안형 저장 방법을 제공한다. 제2 버전 식별자와 서명이 동반되는 제2 데이터 아이템을, 비휘발성 메모리의 제1 데이터 아이템을 교체하도록 수신한다. 서명을 이용하여 적어도 제2 버전 식별자를 인증한다. 저장된 제1 버전 식별자와 인증된 제2 버전 식별자 간의 비교를 행한다. 제1 데이터 아이템은, (i) 제2 버전 식별자가 성공적으로 인증되었으며 (ii) 저장된 제1 버전 식별자와 상기 인증된 제2 버전 식별자 간의 비교에 의해 표시되는 바와 같이 제2 데이터 아이템이 제1 데이터 아이템보다 최근의 것이라는 검증에만 응답하여, 제2 데이터 아이템으로 교체된다.
이러한 실시예 및 다른 실시예는, 첨부 도면과 함께 다음에 따르는 실시예들의 상세한 설명으로부터 더욱 완전하게 이해될 것이다.
도 1은 본원에서 설명하는 일 실시예에 따라 로컬 메모리 칩에 안전하게 저장될 업데이트를 수신하는 사용자 장치를 개략적으로 도시하는 블록도;
도 2는 본원에서 설명하는 일 실시예에 따라 도 1의 메모리 칩의 메모리 제어기를 개략적으로 도시하는 블록도;
도 3은 본원에서 설명하는 일 실시예에 따라 새로운 데이터 아이템을 안전하게 저장하는 방법을 개략적으로 도시하는 흐름도; 및
도 4는 본원에서 설명하는 일 실시예에 따라 저장된 데이터 아이템을 안전하게 업데이트하는 방법을 개략적으로 도시하는 흐름도.
본원에서 설명하는 실시예는 저장 시스템에서의 보안형 데이터 저장을 위한 방법 및 시스템을 제공한다. 저장 시스템은, 예를 들어, 솔리드 스테이트 드라이브(SSD)와 같은 임의의 다른 적절한 유형의 메모리 칩 또는 저장 시스템을 포함할 수도 있다. 이하의 설명에서는, 메모리 칩을 포함하는 저장 시스템의 일례를 주로 참조한다. 메모리 칩은, 메모리 제어기, 및 플래시 메모리 장치와 같은 비휘발성 메모리 장치를 포함한다. 메모리 칩은, 예를 들어, 퍼스널 컴퓨터(PC), 셀룰러 폰, 또는 사물 인터넷(IOT) 노드와 같은 다양한 사용자 장치에서 사용될 수 있다.
일부 실시예에서, 메모리 칩은, 비휘발성 메모리에 사용자 장치의 프로세서에 대한 데이터 아이템을 저장하고 필요에 따라 프로세서에 대한 데이터 아이템을 검색한다. 데이터 아이템은, 예를 들어, 기본 운영 체제의 애플리케이션 프로그램 또는 부팅 코드와 같은 실행가능 코드를 포함할 수도 있다. 대안적으로 또는 추가적으로, 다른 적절한 유형의 데이터 아이템이 또한 사용될 수 있다. 다른 유형의 데이터 아이템은, 키 및 다른 암호 정보, 패스워드 및 식별 자격증명, 지문 및 기타 생체 데이터, 뱅킹 및 금융 데이터, 전자 지갑, 의료 데이터, 기타 개인 정보 등을 포함할 수도 있다.
비휘발성 메모리에 저장된 데이터 아이템은 수시로 업데이트되어야 할 수도 있다. 예를 들어, 현재 저장되어 있는 애플리케이션 프로그램의 버전은, 버그 수정, 최근 추가된 기능 등을 포함하는 고급 버전으로 교체될 수도 있다.
데이터 아이템의 업데이트된 배포물은 때때로 원격 서버로부터 다운로드될 수 있다. 원칙적으로, 메모리 칩은 인가된 제공자가 데이터 아이템의 서명에 사용되는 비밀 키를 그 데이터 아이템의 인가된 제공자와 공유할 수 있으며, 메모리 칩은 다운로드된 데이터 아이템의 무결성 및 신뢰성을 확인하기 위해 사용된다. 인가된 제공자는 비밀 키를 메모리 칩과 공유한다.
전술한 업데이트 방식은 롤백(rollback) 공격에 취약할 수도 있는데, 이 경우, 공격자는, 정확한 비밀 키를 사용하여 인가된 제공자에 의해 서명되었지만 현재 저장되어 있는 데이터 아이템보다 먼저 그 인가된 제공자에 의해 배포된 이전에 캡처된 데이터 아이템을 메모리 칩에 설치하려고 시도한다. 공격자는, 이전 버전의 애플리케이션 프로그램 코드에서 이미 알려진 취약점을 악용하려는 의도로 롤백 공격(제로 데이 공격이라고도 함)을 시작할 수도 있다.
개시된 일부 실시예에서, 메모리 칩에 저장하기 위해 수신된 데이터 아이템에는 버전 식별자가 배정된다. 통상적으로, 인가된 제공자는, 주어진 데이터 아이템의 업데이트를 임의의 배포 순서로 배포하고, 배포 순서에 따라 각각의 버전 식별자를 배포된 업데이트에 배정한다.
일부 실시예에서, 메모리 제어기는 비휘발성 메모리에 저장되어 있는 데이터 아이템을 교체하기 위한 데이터 아이템을 수신한다. 메모리 제어기는, (i) 수신된 데이터 아이템의 버전 식별자가 성공적으로 인증되었으며, (ii) 수신된 데이터 아이템과 저장되어 있는 데이터 아이템의 각 버전 식별자 간의 비교에 기초하여 수신된 데이터 아이템이 저장되어 있는 데이터 아이템보다 최근의 것이라는 검증에만 응답하여, 저장되어 있는 데이터 아이템을 수신된 데이터 아이템으로 교체한다. 일부 실시예에서, 데이터 아이템과 버전 식별자는 공통 서명으로 함께 서명되며, 메모리 제어기는 이 공통 서명을 이용하여 데이터 아이템을 인증한다.
일부 실시예에서, 메모리 제어기는 각각의 서명을 데이터 아이템과 함께 수신한다. 메모리 제어기는 공유된 비밀 키를 이용하여 수신된 데이터 아이템에 대해 계산된 서명을 계산한다. 메모리 제어기는, 계산된 서명이 수신된 데이터 아이템의 서명과 일치하는지 여부를 체크함으로써, 수신된 데이터 아이템의 버전 식별자가 진본임을 검증한다.
일부 실시예에서, 메모리 제어기는, 메모리 칩의 호스트에 의해 사용되는 논리적 어드레스와 비휘발성 메모리 장치에 의해 사용되는 물리적 어드레스 간을 맵핑한다. 물리적 어드레스 공간에서, 메모리 제어기는, 현재 사용되는 버전을 위한 저장 공간 및 데이터 아이템의 업데이트된 버전을 기입하기 위한 다른 저장 공간을 데이터 아이템에 대하여 할당한다. 전술한 바와 같이 업데이트된 버전을 확인한 후, 메모리 제어기는, 논리적-물리적 어드레스들을 리맵핑하여 그 두 개의 저장 공간 간의 역할을 스와핑한다.
일부 실시예에서, 데이터 아이템을 저장 공간에 기입하기 위해, 메모리 제어기는, 기입 전에 이 저장 공간을 잠금해제하고, 데이터 아이템의 기입이 완료된 후에 저장 공간을 잠근다. 다른 실시예에서, 메모리 제어기는, 비휘발성 메모리에 다수의 기입 커맨드를 전송함으로써 데이터 아이템을 기입하고, 이때 각 커맨드는 데이터 아이템 콘텐츠의 각 부분을 반송하고, 각 커맨드는 각각의 서명으로 서명된다. 비휘발성 메모리는 각각의 서명을 확인한 후에만 각 기입 커맨드를 실행한다.
일부 실시예에서, 메모리 제어기는, 단일 무중단 원자 동작으로, 수신된 버전 식별자를 인증하고, 각각의 버전 식별자에 기초하여, 수신된 데이터 아이템이 저장된 데이터 아이템보다 최근의 것임을 확인한다. 이러한 실시예는, 모든 요구 조건이 만족되는 경우에만 실제 업데이트가 허용되는 것을 보장한다.
개시된 기술은 메모리 칩에서의 보안형 데이터 저장을 지원한다. 개시된 기술을 이용함으로써, 복잡한 신뢰 체인이 필요하지 않고, 메모리 칩의 데이터 아이템을 안전하고 효율적으로 업데이트할 수 있으므로, 지연이 최소한으로 발생한다.
시스템 설명
도 1은, 본 명세서에 설명하는 일 실시예에 따라 로컬 메모리 칩(32)에 안전하게 저장되는 업데이트를 수신하는 사용자 장치(24)를 개략적으로 도시하는 블록도이다. 사용자 장치(24)는 통신 버스 또는 링크(36)를 통해 사용자 장치의 메모리 칩(32)에 연결된 호스트(28)를 포함한다. 메모리 칩(32)은, 호스트에 대한 데이터를, 비휘발성 메모리(44)에, 본 예에서는 플래시 메모리에 저장한다. 메모리 칩(32)은, 이하에서 상세히 설명하는 바와 같이, 비휘발성 메모리(44)에 저장된 정보를 보안 방식으로 업데이트하는 것을 지원한다.
메모리 칩(32)은, 컴퓨팅 장치, 퍼스널 컴퓨터(PC) 또는 컴퓨터 서버, 셀룰러 폰 또는 다른 통신 단말기, 랩톱 컴퓨터, 태블릿 컴퓨터, 착탈식 메모리 모듈, 솔리드 스테이트 디스크(SSD), 하드 디스크, 시큐어 디지털(SD) 카드, 멀티 미디어 카드(MMC) 및 임베디드 MMC(eMMC)와 같은 저장 장치, 디지털 카메라, 음악 및 기타 미디어 플레이어, IOT 노드, 및/또는 데이터가 저장 및 검색되는 다른 임의의 시스템이나 장치 등의 다양한 사용자 호스트 시스템 및 장치에서 사용될 수 있다.
호스트(28)는, 통상적으로, 예를 들어, 운영 체제, 부트 로더 기능, 펌웨어, 하나 이상의 사용자 애플리케이션 프로그램, 통신 스택 등의 프로그램을 실행하는 프로세서(40)를 포함한다. 사용자 장치(24)는, 통상적으로, 프로세서(40)와 키보드 또는 터치 패드와 같은 인간 사용자 간을 인터페이싱하기 위한 수단, 및 디스플레이(도시되지 않음)를 포함한다. 호스트(28)는 후술되는 바와 같이 원격 서버와 통신하기 위한 수단을 포함한다.
비휘발성 메모리(44)는 통상적으로 복수의 메모리 셀(도시되지 않음)을 포함한다. 본 예에서, 비휘발성 메모리(44)는, 플래시 메모리를 포함하지만, 대안으로, 다른 임의의 적절한 기술을 사용하여 구현될 수도 있다. 비휘발성 메모리(44)의 저장 용량은, 호스팅 사용자 장치의 저장 요구 조건에 의존하며, 수 메가비트 또는 심지어 수 기가비트 정도일 수도 있다.
메모리 칩(32)은 비휘발성 메모리(44)의 데이터 저장을 관리하는 메모리 제어기(48)를 포함한다. 메모리 제어기(48)는, 임의의 적합한 통신 버스를 포함하는 내부 통신 버스 또는 링크(52)를 통해 비휘발성 메모리(44)에 연결된다. 메모리 칩(32)에서, 메모리 제어기와 비휘발성 메모리 간의 통신 버스(52)를 통해 전송되는 임의의 정보는 메모리 칩(32)의 외부에서 액세스 불가능하다.
비휘발성 메모리(44)는 다수의 물리적 메모리 뱅크를 포함할 수도 있지만, 메모리 제어기는 비휘발성 메모리를 단일화된 논리적 메모리로서 액세스한다.
일부 실시예에서, 호스트(28)는 논리적 어드레스를 포함하는 어드레스 공간에서 동작하는 반면, 비휘발성 메모리(44)는 물리적 어드레스를 포함하는 다른 어드레스 공간에서 동작한다. 데이터를 비휘발성 메모리에 저장 및 비휘발성 메모리로부터 검색하는 경우, 메모리 제어기는 아래의 도 2를 참조하여 상세히 설명되는 바와 같이 논리적 어드레스와 물리적 어드레스 간에 변환을 행한다.
호스트와 메모리 칩 간의 통신 버스(36)는 임의의 적합한 프로토콜에 따라 동작하는 임의의 적합한 버스 또는 링크를 포함할 수도 있다. 통신 버스(36)는, 예를 들어, 직렬 주변 장치 인터페이스(SPI) 버스 또는 상호 집적 회로(I2C 버스)를 포함할 수도 있다. 통신 버스(36)는 임의의 적절한 속도로 정보를 송신 및 수신하는 직렬 버스 또는 병렬 버스로서 동작할 수도 있다. SPI 버스 및 유사하게 I2C 버스는, 수 Kbps 내지 수 Mbps(예를 들어, 50MHz 기반의 옥탈 SPI 버스에서 400Mbps 이상)의 비트레이트로 동작할 수도 있다. 직렬 ATA(SATA) 버스 및 통합 구동 전자장치(IDE) 버스는 통상적으로 수백 Mbps의 비트레이트로 동작한다.
도 1의 실시예에서, 메모리 칩(32)은 메모리 칩의 다양한 보안 양태들을 구현하기 위한 암호 엔진(56)을 포함하는데, 이는 이하에서 상세히 설명될 것이다. 일 실시예에서, 암호 엔진(56)은, 메모리 제어기로부터 암호화, 복호화, 인증, 데이터 해싱, 서명 확인 등의 복잡한 암호 연산을 적용하는 부담을 덜어 낸다. 대체 실시예에서, 메모리 제어기는 필요한 암호화 동작의 일부 또는 전부를 수행한다.
일부 실시예에서, 통신 버스(36)를 통해 호스트(28)와 메모리 칩(32) 간에 통신되는 트래픽은 보안된다. 이러한 실시예에서, 호스트(28)와 메모리 제어기(48)의 각각은, (임의의 적절한 암호화 방법을 사용하여) 통신 버스(36)를 통해 전송될 데이터를 암호화하고, 통신 버스(36)로부터 수신되는 암호화된 데이터를 복호화한다. 통신 버스(36)를 통한 트래픽의 암호화는, 통신 버스(36)에 대한 액세스를 얻을 수도 있는 공격자가 전송되는 정보를 해독할 수 없음을 보장한다. 통신 버스(36)를 통한 통신의 다른 보안 양태는, 서명에 기초한 진본성 검증, 및 순환 중복 검사(CRC) 코드, 해시 함수, 서명 또는 다른 임의의 적절한 무결성 체크 방법에 기초한 무결성 검증을 포함한다.
호스트(28)는, 메모리 칩(32)에 데이터를 저장할 수도 있고, 필요시 데이터를 검색할 수도 있다. 저장된 데이터는, 통상적으로, 예를 들어 운영 체제, 운영 체제의 부팅 코드 또는 사용자 애플리케이션 프로그램과 같은 실행가능 코드와 같은 임의의 적합한 유형의 하나 이상의 데이터 아이템을 포함한다. 관련된 다른 데이터 유형은, 비밀 키, 식별 자격증명, 사용자 데이터, 펌웨어, 다양한 드라이버 등을 포함한다.
도 1의 예에서, 비휘발성 메모리(44)는, 호스트의 프로세서(40)에 의해 각각 실행되는 APP1 및 APP2로 표시된 2개의 애플리케이션 프로그램(60A 및 60B)을 저장한다. 일부 실시예에서, 호스트는, APP1 또는 APP2와 같은 애플리케이션 프로그램을 실행하기 위해, 예를 들어, 적절한 판독 커맨드를 메모리 칩(32)에 전송함으로써 애플리케이션 프로그램의 코드를 비휘발성 메모리(44)로부터 판독한다.
비휘발성 메모리(44)는, 각각의 애플리케이션 프로그램(60A 및 60B)에 대해 각각의 버전 식별자((62A)(VER1로 표시됨) 또는 62B(VER2로 표시됨))를 추가로 저장한다. 메모리 제어기는, 아래에서 설명하는 바와 같이, 진본이며 현재 저장되어 있는 대응본보다 최근의 것인 데이터 아이템의 업데이트만이 설치되는 것을 검증하도록 버전 식별자들을 이용한다.
각각의 데이터 아이템의 초기 버전 및 예를 들어 애플리케이션 프로그램(APP1 및 APP2)의 데이터 아이템의 업데이트된 버전은 통상적으로 통신 네트워크(68)를 통해 사용자 장치(24)에 의해 다운로드될 수 있다. 도 1의 예에서, 제공자(64A)(PROVIDER1로 표시됨)는 애플리케이션 프로그램 APP1(60A)의 APP1'(72A)로 표시된 업데이트된 버전을 저장하고, 제공자(64B)(PROVIDER2로 표시됨)는 애플리케이션 프로그램 APP2(60B)의 APP2'(72B)로 표시된 업데이트된 버전을 저장한다. 제공자들(64)은 통상적으로 통신 네트워크(68)에 접속하는 서버에 각 데이터 아이템의 하나 이상의 버전을 저장한다.
통신 네트워크(68)는, 예를 들어, 이더넷 또는 인터넷 프로토콜(IP) 네트워크와 같은 패킷 네트워크를 포함할 수도 있다. 대안으로, 통신 네트워크(68)는 다른 임의의 적합한 표준 또는 프로토콜에 따라 동작할 수도 있다. 통신 네트워크(68)는, 근거리 통신망(LAN) 또는 광역 통신망(WAN) 등의 유선 네트워크, 또는 셀룰러 네트워크 또는 Wi-Fi 네트워크와 같은 무선 LAN 등의 무선 네트워크를 포함할 수도 있다. 게다가, 대안으로 또는 또한, 통신 네트워크(68)는 유선 네트워크와 무선 네트워크를 결합한다.
일부 실시예에서, 통신 네트워크(68)에 인터페이싱하는 대신에(또는 이러한 인터페이싱에 더하여), 사용자 장치(24)는, 데이터 아이템의 초기 버전 또는 업데이트된 버전을 직접적으로 수신하기 위한 하나 이상의 전용 인터페이스(도시하지 않음)를 포함한다. 예를 들어, 메모리 장치는, 컴팩트 디스크(CD) 저장 장치에 또는 유니버설 시리얼 버스(USB) 저장 장치에 저장된 데이터 아이템을 다운로드할 수도 있다.
각 제공자(64)는 때때로 제공자의 서버에 로컬 저장된 데이터 아이템을 업데이트할 수도 있다. 예를 들어, 제공자(64A)(또는 64B)는, 애플리케이션 프로그램의 기능의 문제점을 고치는, 예컨대, 보안 위험성을 해결하고, 및/또는 새로운 기능을 애플리케이션 프로그램에 추가하는, 애플리케이션 프로그램 APP1(또는 APP2)의 업데이트 버전을 발행할 수도 있다. 예를 들어, 업데이트된 버전 APP1'(72A)이 제공자 측에서 이용가능하게 되면, 사용자 장치(24)는, 비휘발성 메모리(44)에 현재 저장되어 있는 APP1(60A)을 교체하도록 통신 네트워크(68)를 통해 업데이트된 버전을 다운로드할 수도 있다.
일부 실시예에서, 각 제공자(64)는, 각 버전 식별자를 데이터 아이템의 로컬 저장된 버전에 배정한다. 이 예에서, 제공자(64A)는 버전 식별자 76A(VER1'로 표시함)를 APP1'에 배정하고, 제공자(64B)는 버전 식별자 76B(VER2'로 표시함)를 APP2'에 배정한다.
각 제공자(64)는 버전 식별자들을 각각의 데이터 아이템에 증가하는 순서로 배정한다. 이와 같이, 데이터 아이템의 더욱 최신 버전에는 그 순서에서 더 진행된 버전 식별자가 배정된다. 예를 들면, 제공자(64A)가 버전 식별자들을 소정의 순서로 발행한다고 가정하면, APP1(72A)이 APP1(60A)의 업데이트된 버전이므로, 제공자(64A)는, APP1의 VER1(62A)보다 진행된 순서로 APP1'에 버전 식별자 VER1'(76A)을 배정한다. 일부 실시예에서, 버전 식별자는 버전 번호를 포함한다. 이러한 실시예에서, 할당된 버전 번호는 VER1'> VER1을 만족한다. 버전 식별자를 배정하는 유사한 원리는 애플리케이션 프로그램 APP2 및 다른 임의의 적합한 유형의 데이터 아이템에 적용된다.
사용자 장치(24)는 데이터 아이템의 버전 식별자가 수반되는 그 데이터 아이템의 업데이트된 버전을 다운로드한다. 본 예에서, 사용자 장치(24)는 VER1'을 갖는 APP1' 및 VER2'을 갖는 APP2'을 다운로드한다. 메모리 제어기는, 이하에서 상세히 설명하는 바와 같이, 관련 데이터 아이템의 수신된 버전 식별자와 저장된 버전 식별자를 비교하고, 저장된 버전보다 최신인 인증된 버전만을 비휘발성 메모리에 설치하는 것을 허용한다.
일부 실시예에서, 메모리 제어기는, 데이터 아이템의 인가된 제공자와 공유되는 비밀 키를 이용하여 다운로드된 데이터 아이템의 버전 식별자를 인증한다. 다음에 따르는 설명에서, "인가된 제공자"라는 용어는, 메모리 칩이 비밀 키를 공유하는 데이터 아이템의 제공자를 가리킨다.
도 1의 예에서, 메모리 칩(32)은, APP1(및 APP1')의 제공자(64A)와 비밀 키(80A)(KEY1로 표시함)를 공유하고, APP2(및 APP2')의 제공자(64B)와 비밀 키(80B)(KEY2로 표시함)를 공유한다. 각 제공자(64)는 서명을 갖는 각각의 데이터 아이템에 서명하기 위해 비밀 키를 이용하고, 메모리 칩(32)은 비밀 키를 이용하여 서명을 검증함으로써 수신된 데이터 아이템 및 그의 버전 식별자를 인증한다. 키들(80)은, 통상적으로 비휘발성 메모리(44)에 저장되고, 예를 들어 메모리 제어기(48) 및/또는 암호 엔진(56)에 의해 메모리 칩(32) 내에서만 액세스 가능하다.
도 1에서, 각 데이터 아이템(애플리케이션 프로그램(APP1 및 APP2))은 각각의 비밀 키에 연관되어 있지만, 이러한 배정이 필수적인 것은 아니다. 예를 들어, 2개 이상의 데이터 아이템, 또는 메모리 칩에 의해 인증된 모든 데이터 아이템조차도 공통 비밀 키와 연관될 수 있다. 다른 일례로, 하나 이상의 사용자 장치는 주어진 비밀 키를 사용자 장치(24)와 공유할 수 있다. 비밀 키들(80)은, 통상적으로, 메모리 칩(32)의 제조 중에 또는 나중에, 예를 들어 메모리 칩 또는 사용자 장치의 제조자에 의해 초기화된다. 대안으로, 사용자 장치(24)의 사용자는 비밀 키들(80)을 초기화한다. 비밀 키는, 초기화된 후에, 메모리 칩 또는 사용자 장치의 설계된 인터페이스를 통해 판독될 수 없고 또는 덮어쓰기될 수 없다.
메모리 칩의 보안 액세스 제어
도 2는 본원에서 설명하는 일 실시예에 따라 도 1의 메모리 칩(32)의 메모리 제어기(48)를 개략적으로 도시하는 블록도이다. 도 2의 예는, 주로 액세스 제어를 애플리케이션 프로그램(APP1)(도 1의 60A)에 적용하는 것을 가리키지만, 유사하게 다른 적절한 애플리케이션 프로그램 및 데이터 아이템에 적용된다.
메모리 제어기(48)는 비휘발성 메모리(44)에 대한 보안 액세스를 관리하기 위한 액세스 제어 모듈(86)을 포함한다. 일부 실시예에서, 저장 및 액세스 제어를 관리하도록, 메모리 제어기는 비휘발성 메모리에 저장된 데이터 아이템들 중 적어도 일부에 각각의 디스크립터를 배정하고, 예를 들어, 메모리 제어기는 디스크립터(90A)를 애플리케이션 프로그램(APP1)에 배정한다. 일 실시예에서, 메모리 제어기는 비휘발성 메모리에 디스크립터를 저장한다. 디스크립터, 예컨대 디스크립터(90A)는 통상적으로 여기에 열거된 것과 같은 다수의 필드를 포함한다:
Figure pat00001
어드레스
Figure pat00002
크기(예를 들어, 바이트 단위)
Figure pat00003
버전 식별자(예를 들어, 버전 번호)
Figure pat00004
데이터 아이템의 서명
Figure pat00005
상태
Figure pat00006
액세스 권한: 예를 들어, 판독 방지 및 기입 방지 표시자.
디스크립터의 어드레스 필드는 물리적 어드레스, 논리적 어드레스, 또는 둘 다를 포함할 수도 있다. 어드레스 필드는 통상적으로 하나 이상의 저장 위치를 식별하는 데 사용된다. 상태 필드는, 제어 및 관리를 위해, 예를 들어, 인증 상태(예를 들어, 통과 또는 실패) 및 어드레스 스와핑 상태를 유지하도록 사용될 수 있다.
일부 실시예에서, APP1과 같은 주어진 데이터 아이템은 이하에서 설명되는 바와 같이 비휘발성 메모리의 다수의 저장 공간을 점유한다. 디스크립터는, 데이터 아이템에 배정된 각 저장 공간마다 필드들 중 적어도 일부에 대한 값들의 개별 세트를 포함할 수도 있다. 판독을 위해 데이터 아이템(예를 들어, APP1)을 활성화(또는 비활성화)하기 위해, 메모리 제어기는 관련된 판독 방지 표시자를 설정(또는 해제)한다. 유사하게, 비휘발성 메모리에서 데이터 아이템을 기입 또는 업데이트하는 것을 활성화하도록(또는 비활성화하도록), 메모리 제어기는 관련된 기록 방지 표시자를 설정(또는 해제)한다. 메모리 제어기가 데이터 아이템에 대한 액세스를 요구할 때, 액세스 제어 모듈(86)은, 예를 들어, APP1의 디스크립터(90A)에서 각 디스크립터의 액세스 권한을 체크하고, 이에 따라 액세스를 허용하거나 방지한다.
메모리 제어기는 데이터 아이템의 상이한 저장 공간들에 대하여 상이한 액세스 권한들을 설정할 수 있다. 저장 공간에 대한 액세스를 방지하고 허용하는 동작은 본원에서 각각 "잠금" 동작 및 "잠금해제" 동작으로 지칭된다. 예를 들어, 소정의 기간 동안, 메모리 제어기는, 판독만을 위해 데이터 아이템의 하나의 저장 공간을 잠금해제할 수도 있고, 기입만을 위해 동일한 데이터 아이템의 다른 저장 공간을 잠금해제할 수도 있다.
각 디스크립터는 각 비밀 키에 연관될 수도 있다. 도 2는 애플리케이션 프로그램(APP1)(60A)의 각 디스크립터(90A)에 연관된 KEY1(80A)을 도시한다. 대안으로, 데이터 아이템 및 데이터 아이템의 각 디스크립터는 상이한 각각의 비밀 키에 연관될 수도 있다. 일부 실시예에서, 디스크립터(예를 들어, 90A)의 필드에 대한 액세스를 얻는 것은 각각의 비밀 키(예를 들어, 80A)에 대한 지식을 필요로 한다.
일부 실시예에서, 메모리 제어기는 데이터 아이템(예를 들어, APP1)을 각각의 서명과 함께 저장 공간에 저장한다. 일부 실시예에서, 메모리 제어기는 데이터 아이템에 배정된 디스크립터의 필드에 서명을 저장한다. 메모리 제어기는 저장된 서명을 이용하여 관련 저장 공간의 데이터 아이템의 무결성을 검증한다. 이를 위해, 메모리 제어기는, 서명을 계산하고, 계산된 서명을 저장된 서명과 비교한다. 메모리 제어기는, 계산된 서명이 저장된 서명과 일치한다는 검출에 응답하여, 데이터 아이템이 변경되지 않았음(즉, 무결성 검사가 성공적으로 통과되었음)을 결정한다.
메모리 제어기는 다양한 방식으로 각각의 저장 공간 내의 데이터 아이템에 대응하는 서명을 계산할 수도 있다. 일부 실시예에서, 메모리 제어기는 적절한 암호 해시 함수, SHA 해시 함수를 저장 공간에 대하여 계산함으로써 서명을 계산한다. 일부 실시예에서, 메모리 제어기는, 데이터 아이템에 연관된 비밀 키를 이용하여 데이터 아이템 및 그 데이터 아이템의 각 버전 식별자에 대한 서명을 계산한다. 대안으로, 메모리 제어기는, (관련 비밀 키를 이용하는) 임의의 적절한 대칭 키 암호화 방법을 이용하여, 예를 들어, 사이퍼 블록 체이닝(CBC) 모드에서 동작하도록 구성된 고급 암호화 표준(AES) 방법을 이용하여 서명을 계산한다.
일부 실시예에서, 메모리 제어기는, 프로세서(40)로부터 적절한 확인 커맨드를 수신한 것에 응답하여 비휘발성 메모리에 저장된 데이터 아이템을 (예를 들어, 전술한 바와 같은 서명을 이용하여) 확인한다. 대안으로 또는 또한, 관련 디스크립터는, 데이터 아이템의 현재 사용되는 버전이 저장되어 있는 각각의 저장 공간을 통해 각각의 데이터 아이템을 확인하도록 메모리 제어기에 지시하는 확인 필드를 포함할 수도 있다. 예를 들어, 메모리 칩, 사용자 장치, 또는 둘 다의 재시작 프로세스를 완료하면, 메모리 제어기는, 현재 저장되어 있는 데이터 아이템의 디스크립터를 스캔하고, 각 디스크립터에서 확인을 위해 표시된 데이터 아이템을 확인한다.
일부 실시예에서, 메모리 제어기는 주어진 데이터 아이템에 대하여 예정된 저장 커맨드를 프로세서(40)로부터 수신하고, 저장 커맨드는 주어진 데이터 아이템의 디스크립터에 연관된 비밀 키를 갖는 공급자에 의해 서명된 것이다. 저장 커맨드는, 예를 들어, 주어진 데이터 아이템의 저장 공간을 잠그거나 잠금해제하기 위한 커맨드, 각각의 저장 공간의 데이터 아이템을 확인하기 위한 커맨드, 또는 다른 임의의 적절한 저장 커맨드를 포함할 수도 있다. 이러한 실시예에서, 메모리 제어기는 저장 커맨드를 실행하기 전에 비밀 키를 이용하여 저장 커맨드의 진본성을 검증한다.
일부 실시예에서, 메모리 제어기는, 기입을 위해 각 데이터 아이템의 업데이트된 버전이 기입될 저장 공간을 잠금해제하고, 업데이트된 버전의 기입이 종료되면 이 저장 공간을 잠근다. 예를 들어, 업데이트된 버전의 APP1을 비휘발성 메모리에 기입하기 전에, 메모리 제어기는 저장 공간(SEC_1P 또는 SEC_2P) 중 하나를 기입하도록 잠금해제한다.
일부 실시예에서, 비교적 긴 시간 동안 저장 공간을 잠금해제하는 것을 피하기 위해, 메모리 제어기는, 각각이 각 데이터 아이템에 연관된 비밀 키를 이용하여 서명된 다수의 기입 커맨드를 비휘발성 메모리에 전송함으로써, 관련 저장 공간에 데이터 아이템의 업데이트된 버전을 기입한다. 비휘발성 메모리는, 각각의 기입 커맨드의 서명을 검증하고 각각의 서명에 기초하여 기입 커맨드를 인증한 후에만 기입 커맨드를 명령을 실행함으로써, 업데이트된 버전을 기입한다. 일 실시예에서, 서명은 제2 데이터 아이템 및 제2 데이터 아이템의 각 버전 식별자 모두에 대해 계산된다. 이러한 실시예에서, 메모리 제어기는, 기입 커맨드의 각 서명의 버전 식별자가 데이터 아이템의 현재 사용되는 버전의 버전 식별자보다 최근의 것임을 확인한 후에만 기입 커맨드를 실행한다.
일부 실시예에서, 각각의 기입 커맨드(예컨대, 16바이트를 포함함)는 개별적으로 서명되고, 메모리 제어기는 서명된 커맨드 내의 검증 식별자 및 어드레스 정보를 또한 수신한다. 메모리 제어기는, 다수의 기입 커맨드를 포함하는 전체 업데이트 "패키지"를 수신한 다음 서명된 "롤백 방지" 커맨드를 수신한다. 메모리 제어기는, 검증된 기입 커맨드에 의해 반송되는 데이터를 비휘발성 메모리에 저장한 후, 기입된 전체 데이터 아이템을 인증하도록 롤백 방지 커맨드를 실행한다. 메모리 제어기는, 마지막으로 논리적 대 물리적 어드레스 맵핑을 스와핑하여 저장되어 있는 데이터 아이템을 업데이트된 버전의 데이터 아이템으로 교체한다.
액세스 제어 모듈(86)은, 호스트(28)에 의해 사용되는 논리적 어드레스 공간의 논리적 어드레스와 비휘발성 메모리(44)에서 사용되는 물리적 어드레스 공간의 물리적 어드레스 간을 맵핑하는 어드레스 맵퍼(88)를 포함한다. 호스트의 프로세서(40)는, 논리적 어드레스를 사용하여 칩 메모리(32)에 저장 동작을 적용하고, 통상적으로 논리적 어드레스가 맵핑되는 물리적 어드레스를 알지 못한다. 일 실시예에서, 어드레스 맵퍼(88)는 비휘발성 메모리(44)에 또는 메모리 칩(32)(도시하지 않음)의 다른 메모리에 저장된 테이블로서 구현된다.
일부 실시예에서, 각 데이터 아이템에는, 논리적 어드레스 공간과 물리적 어드레스 공간의 각각에 있어서 하나 이상의 저장 공간이 배정된다.
본 개시 내용과 청구 범위에서, 다수의 어드레스를 포함하는 저장 공간은 "저장 위치"라고도 한다. 물리적 저장 위치는 물리적 어드레스 공간에 다수의 물리적 어드레스를 포함하고, 논리적 저장 위치는 논리적 어드레스 공간에 다수의 논리적 어드레스를 포함한다. 일부 실시예에서, 저장 위치의 어드레스는 관련 어드레스 공간에서 어드레스들의 연속적 범위를 점유한다. 대안으로, 저장 위치 내의 어드레스는 관련 어드레스 공간에서 비연속적이다. 다음에 따르는 설명에서, "저장 공간" 및 "저장 위치"라는 용어는 같은 의미로 사용된다.
도 2에서, 도 1의 애플리케이션 프로그램(APP1)에는, 논리적 어드레스 공간에서 SEC_1L 및 SEC_2L로 표시된 2개의 저장 공간 및 물리적 어드레스 공간에서 SEC_1P 및 SEC_2P로 표시된 2개의 저장 공간이 배정된다.
일부 실시예에서, LA1로 표시된 SEC_1L의 논리적 어드레스는 메모리 칩으로부터 APP1의 현재 설치된 버전을 판독하도록 기능하는 반면, LA2로 표시된 SEC_2L의 논리적 어드레스는 APP1의 업데이트된 버전을 메모리 칩에 기입하도록 기능한다. APP1의 현재 사용되는 버전은 비휘발성 메모리의 SEC_1P 또는 SEC_2P에 저장될 수도 있다.
APP1의 현재 사용되는 버전이 SEC_1P에 저장되면, 어드레스 맵퍼(88)는 SEC_1L로부터 애플리케이션 프로그램(APP1)을 판독하기 위해 논리적 어드레스 LA1을 물리적 어드레스 PA1에 맵핑한다. 메모리 제어기가 논리적 어드레스 LA2를 통해 애플리케이션 프로그램(APP1)의 업데이트된 버전을 수신하면, 어드레스 맵퍼는 APP1의 업데이트된 버전을 SEC_2P에 기입하도록 논리적 어드레스 LA2를 물리적 어드레스 PA2에 맵핑한다.
유사하게, APP1의 현재 사용되는 버전은, 비휘발성 메모리의 SEC_2P에 저장될 수도 있고, 논리적 어드레스 LA1을 물리적 어드레스 PA2에 맵핑하는 어드레스 맵퍼에 의해 판독을 위해 액세스될 수도 있다. 이 경우, 메모리 제어기는, 어드레스 맵퍼(88)를 사용하여 논리적 어드레스 LA2를 물리적 어드레스 PA1에 맵핑함으로써 SEC_1P에 APP1의 업데이트된 버전을 기입한다. 표 1은 선택된 논리적-물리적 매핑 대안을 요약한 것이다.
논리적-물리적 어드레스 맵핑
데이터 아이템(APP1):
SEC_1P에 저장됨
SEC_2P에 업데이트됨
맵 판독을 위해:
LA1을 PA1에
맵 기입을 위해:
LA2를 PA2에
데이터 아이템:
SEC_2P에 저장됨
SEC_1P에 업데이트됨
맵 판독을 위해:
LA1을 PA2에
맵 기입을 위해:
LA2를 PA1에
각 데이터 아이템(예를 들어, APP1)에 대해 두 개의 개별적인 저장 공간을 사용함으로써, 메모리 제어기는, 비휘발성 메모리의 한 저장 공간으로부터 현재 설치된 버전의 데이터 아이템을 판독할 수 있고, 현재 사용되는 데이터 아이템을 교체하도록 수신된 데이터 아이템의 버전을 비휘발성 메모리의 다른 저장 공간에 기입할 수 있다.
메모리 제어기는, 수신된 버전 식별자의 무결성과 진보성을 확인하고 수신된 데이터 아이템의 버전이 현재 사용되는 버전보다 최근의 것임을 확인한 후에만, 현재 사용되는 버전을 수신된 버전으로 실제로 교체한다. 일부 실시예에서, 메모리 제어기는, SEC_1P와 SEC_2P의 논리적-물리적 어드레스 맵핑을 스와핑함으로써 현재 사용되는 데이터 아이템을 데이터 아이템의 업데이트된 (및 인증된) 버전으로 교체한다. 스와핑 후에, 메모리 제어기는 논리적 어드레스 LA1을 통해 데이터 아이템의 업데이트된 버전을 판독할 수 있다. 또한, 메모리 제어기는 논리적 어드레스 LA2를 통해 구 버전의 저장 공간에 데이터를 기입할 수 있다.
일부 실시예에서, 저장 공간들은, SEC_1P 내의 각 물리적 어드레스가 SEC_2P 내의 대응하는 물리적 어드레스를 가져서 이들 2개의 물리적 어드레스가 물리적 어드레스 공간의 최상위 비트에서만 상이하도록 할당된다. 이러한 실시예에서, 어드레스 맵퍼는, 물리적 어드레스의 MSB를 반전함으로써 SEC_1P와 SEC_2P 간을 스와핑하고, 이에 따라 어드레스 리맵핑을 수행하는 데 최소 지연을 달성한다.
도 1과 도 2의 사용자 장치(24) 및 메모리 칩(32)의 구성은 단지 개념적인 명확성을 위해 선택된 예시적인 구성이다. 대체 실시예에서, 사용자 장치와 메모리 칩의 다른 임의의 적절한 구성도 사용될 수 있다. 메모리 제어기(48), 비휘발성 메모리(44), 및 암호 엔진(56)과 같은 메모리 칩(32)의 상이한 요소들은, 주문형 집적 회로(ASIC) 또는 필드 프로그래머블 게이트 어레이(FPGA)에서와 같이 임의의 적절한 하드웨어를 사용하여 구현될 수도 있다. 일부 실시예에서, 메모리 칩(32)의 일부 요소들은, 소프트웨어를 사용하여 또는 하드웨어 및 소프트웨어 요소들의 조합을 사용하여 구현될 수 있다.
일부 실시예에서, 메모리 제어기(48)와 같은 메모리 칩(32)의 소정 요소는, 본원에서 설명되는 기능을 수행하기 위해 소프트웨어로 프로그래밍된 범용 프로세서를 포함할 수도 있다. 소프트웨어는, 예를 들어, 네트워크를 통해 전자적 형태로 프로세서에 다운로드될 수도 있고, 혹은, 대안으로 또는 추가적으로, 자기 메모리, 광학 메모리, 또는 전자 메모리와 같은 비일시적 유형의 매체에 제공 및/또는 저장될 수도 있다.
사용자 장치(24)에서, 호스트(28)와 메모리 칩(32) 각각은 개별 반도체 다이를 포함할 수도 있으며, 2개의 다이는 공통 패키지 또는 개별 패키지들 상에 상주한다. 일부 실시예에서, 메모리 제어기(48), 비휘발성 메모리(44), 및 암호 엔진(56)은 모두 메모리 칩(32)을 포함하는 공통 다이에 상주한다.
메모리 칩에 데이터 아이템을 보안 업데이트하기 위한 방법
도 3은 본원에 설명된 일 실시예에 따라 새로운 데이터 아이템을 안전하게 저장하기 위한 방법을 개략적으로 도시하는 흐름도이다. 이 방법은 예를 들어 메모리 칩(32)의 메모리 제어기(48)에 의해 실행될 수 있다. 도 3의 방법은 주로 도 1과 도 2의 데이터 아이템 APP1(60A)을 참조하여 설명된다. 그러나, 이 방법은 다른 임의의 적합한 유형의 데이터 아이템에도 유사하게 적용될 수 있다. 도 3의 방법에서, 버전 식별자는 버전 번호를 포함한다.
이 방법은 수신 단계(100)에서 메모리 제어기(48)가 저장 애플리케이션 프로그램(APP1)을 수신하는 것으로 시작한다. 본 예에서, APP1은 메모리 칩(32)에 아직 설치되지 않은 것으로 가정한다. 메모리 제어기는 또한 APP1에 대해 각각의 버전 번호 및 서명을 수신한다. 이 예에서 예를 들어 PROVIDER1(64A)인 인가된 제공자가 APP1을 시작할 때, 인가된 제공자는, 버전 번호 VER1(62A)을 APP1에 배정하였으며, APP1에 대한 서명 및 버전 번호를, 메모리 칩이 PROVIDER1과 공유하는 비밀 키 KEY1(80A)을 이용하여 계산하였다.
어드레스 할당 단계(104)에서, 메모리 제어기는 APP1에 대하여 논리적 저장 위치 SEC_1L 및 SEC_2L의 논리적 어드레스 LA1 및 LA2를 각각 할당한다. 메모리 제어기는, 어드레스 맵퍼(88)를 사용하여, 논리적 어드레스 LA1 및 LA2를 비휘발성 메모리의 각각의 물리적 저장 위치(SEC_1P 및 SEC_2P)의 각각의 물리적 어드레스 PA1 및 PA2에 맵핑한다. 일부 실시예에서, 메모리 제어기는 비휘발성 메모리 내의 APP1에 대한 디스크립터(90A)를 초기화한다.
기입 단계(108)에서, 메모리 제어기는, 예를 들어, APP1의 디스크립터(90A)의 액세스 권한을 사용하여 기입을 위한 물리적 어드레스 PA1을 잠금해제하고, 논리적 저장 위치(SEC_1L)의 논리적 어드레스(LA1)를 통해 물리적 저장 위치 SEC_1P의 물리적 어드레스 PA1에 수신된 데이터 아이템 APP1을 기입한다.
검증 단계(112)에서, 메모리 제어기는 물리적 어드레스(PA1)에 저장된 APP1의 진본성 및 무결성을 검증한다. 이를 위해, 메모리 제어기는, 수신된 버전 번호를 포함하는 저장된 APP1에 대한 서명을 계산하여, 단계(100)에서 수신된 서명과 비교한다. 계산된 서명과 수신된 서명이 일치하면 APP1과 그 수신된 버전 번호가 성공적으로 인증된다.
초기화 단계(116)에서, 단계(112)에서의 성공적인 검증에 응답하여, 메모리 제어기는, 예를 들어, 각각의 디스크립터(90A)에 APP1의 수신된 버전 번호 VER1을 저장한다. 저장된 버전 번호는, APP1보다 늦은 다운로드를 위해 PROVIDER1에 의해 발행되는 APP1의 후속 업데이트를 허용하기 위한 참조 버전 식별자로서 사용된다. 또한, 메모리 제어기는, 디스크립터(90A) 내의 판독 및 기입 액세스 권한 표시자를 설정함으로써, APP1을 판독하기 위한 (논리적 저장 위치 SEC_1L의) 논리적 어드레스(LA1) 및 APP1의 업데이트된 버전을 기입하기 위한 (논리적 저장 위치 SEC_2L의) 논리적 어드레스(LA2)를 배정한다. 단계(116)에 이어서, 본 방법은 종료된다.
도 4는 본원에 설명된 일 실시예에 따라 저장된 데이터 아이템을 안전하게 업데이트하는 방법을 개략적으로 도시하는 흐름도이다. 이 방법은 예를 들어 메모리 칩(32)의 메모리 제어기(48)에 의해 실행될 수 있다. 도 4의 방법을 설명함에 있어서, 애플리케이션 프로그램(APP1)은, 예를 들어, 도 3의 방법을 사용하여 메모리 칩에 이미 설치되었고 물리적 저장 위치(SEC_1P)의 물리적 어드레스(PA1)를 점유한다고 가정한다. 그러나, 이 방법은 다른 임의의 적합한 유형의 데이터 아이템에 유사하게 적용될 수 있다. 도 4의 방법에서, 버전 식별자는 버전 번호를 포함한다.
이 방법은, 수신 단계(200)에서, 메모리 제어기(48)가 비휘발성 메모리의 물리적 저장 위치(SEC_1P)의 물리적 어드레스(PA1)에 현재 저장되어 있는 버전(APP1)을 교체하기 위한 업데이트 버전(APP1')을 수신하는 것으로 시작한다. 메모리 제어기는, 또한, APP1'에 대하여 각각의 업데이트된 버전 번호 VER1' 및 각각의 서명을 수신한다.
APP1이 메모리 칩(APP1의 경우 PROVIDER1)과 KEY1을 공유하는 인가된 제공자에 의해 시작되는 경우, 인가된 제공자는, 업데이트된 버전 번호 VER1'을 APP1'에 배정하였으며, APP1'과 VER1'에 대한 서명을 비밀 키 KEY1(80A)을 이용하여 계산하였다. 또한, 인가된 제공자는, 업데이트된 버전 번호 VER1'을, VER1'> VER1이도록, 즉, 현재 설치된 버전의 APP1의 버전 번호보다 크도록 배정한다.
기입 단계(204)에서, 메모리 제어기는, 논리적 저장 위치(SEC_2L)의 논리적 어드레스(LA2)를 통해 물리적 저장 위치(SEC_2P)의 물리적 어드레스(PA2)에 수신된 업데이트 버전(APP1')을 기입한다. 확인 단계(208)에서, 메모리 제어기는, 단계(200)에서 수신된 서명 및 데이터 아이템(APP1)에 연관된 비밀 키(KEY1)를 이용하여 APP1' 및 업데이트된 버전 번호 VER1'을 인증한다. 메모리 제어기는, 도 3의 단계(112)와 유사하지만 물리적 저장 위치(SEC_2P)의 물리적 어드레스(PA2)에서 APP1'에 대하여 인증을 수행한다.
버전 번호 검증 단계(212)에서, VER1'이 성공적으로 인증되었음을 검출한 것에 응답하여, 메모리 제어기는 또한 VER1'이 VER1 이상, 즉, 현재 저장된 APP1의 버전 번호를 확인한다. 인가된 제공자만이 관련 공유 키(KEY1)를 소유하고 APP1 및 선택된 버전 번호에 서명할 수 있으므로, 단계(208 및 212)에서의 확인은 롤백 공격으로부터 보호를 제공한다.
스와핑 단계(216)에서, 단계(208)에서의 성공적인 인증 및 단계(212)에서의 성공적인 확인시, 메모리 제어기는 논리적 대 물리적 어드레스를 리맵핑한다. 구체적으로, 어드레스 맵퍼(88)는, 논리적 저장 위치(SEC_1L)의 논리적 어드레스(LA1)를 물리적 저장 위치(SEC_2P)의 물리적 어드레스 (PA_2)에 맵핑하고(이 경우 업데이트된 버전 APP1'이 이제 저장되며), 이용가능한 경우, APP1의 후속 업데이트를 기입하도록 논리적 저장 위치(SEC_2L)의 논리적 어드레스(LA2)를 물리적 저장 위치(SEC_1P)의 물리적 어드레스(PA1)에 맵핑한다.
일부 실시예에서, 메모리 제어기는 단일 원자 동작을 이용하여 데이터 아이템을 업데이트한다. 이러한 실시예에서, 메모리 제어기는, 전술한 단계들(208, 212, 216)을, 검증 식별자를 인증하여 인증 결과를 생성하는 단계(단계 208), 수신된 버전 번호와 저장된 버전 번호를 비교하는 단계(단계 212), 및 인증 결과와 비교에 기초하여 저장된 데이터 아이템을 수신된 데이터 아이템으로 조건적으로 교체하는 단계(216)를 포함하는 무중단 동작으로서 실행한다. 이 실시예는, 메모리 제어기가 필요한 모든 조건들이 만족될 때에만 데이터 아이템을 실제로 업데이트하는 것을 보장한다.
전술한 실시예는 예시로서 주어진 것이며, 다른 적절한 실시예도 사용될 수 있다. 예를 들어, 상술한 실시예에서는 비휘발성 메모리에 2개의 저장 공간이 배정되었지만, 대체 실시예에서는, 예를 들어, 데이터 아이템이 그 데이터 아이템의 다수의 버전을 저장하기 위한 2개보다 많은 저장 공간에 연관될 수 있다.
전술한 실시예에서는, 일반적으로 공유 키(예를 들어, KEY1(80A))가 제공자측 및 메모리 칩에서 동일하다고 가정하였다. 대체 실시예에서는, 공급자 측에서 데이터 아이템에 서명하는 것 및 메모리 칩에서 데이터 아이템의 진본성을 검증하는 것을 지원하는 비대칭 키들이 공유될 수 있다.
전술한 실시예들에서는 KEY1(80A) 및 KEY2(80B)와 같은 공유 키들이 인증에 사용되지만, 이러한 키들, 또는 예를 들어 KEY1 및 KEY2로부터 유도된 다른 키들이 통신 네트워크를 통해 전송되는 데이터 아이템의 종단간 암호화에 사용될 수 있다.
상술한 실시예들에서는, 데이터 아이템(즉, SEC_1L 및 SEC_2L)당 2개의 논리적 저장 위치를 주로 언급하는데, 여기서 논리적 저장 위치들 중 하나는 데이터 아이템을 판독하기 위해 사용되는 것이고, 나머지 것들은 데이터 아이템의 업데이트된 버전을 기입하기 위해 사용되는 것이다. 그러나, 이러한 구성은 필수적이지 않으며, 대체 실시예에서, 2개의 논리적 저장 위치는 판독과 기입 간에 역할을 (예를 들어, 동적으로) 스와칭할 수도 있다.
상술한 실시예들은 예시로서 기재된 것이며, 이하의 청구범위는 구체적으로 도시되고 전술한 바로 한정되지 않는다는 점을 이해할 것이다. 오히려, 범위는, 전술한 다양한 특징의 조합과 부조합, 및 전술한 설명을 읽을 때 통상의 기술자에게 발생할 수 있고 종래 기술에 개시되지 않은 변형예와 수정예를 포함한다. 본 특허 출원에 참고로 원용되는 문헌은, 본 명세서에서 명시적으로 또는 암시적으로 행한 정의와 상충되는 방식으로 이러한 원용되는 문헌에서 임의의 용어가 정의되는 정도까지를 제외하고는 본원의 필수적인 부분으로 간주되어야 하며, 본 명세서의 정의가 고려되어야 한다.

Claims (14)

  1. 보안형 저장 시스템으로서,
    제1 데이터 아이템을 저장하고, 상기 제1 데이터 아이템에 배정된 각각의 제1 버전 식별자를 또한 저장하도록 구성된 비휘발성 메모리; 및
    제어기를 포함하되,
    상기 제어기는,
    상기 비휘발성 메모리의 상기 제1 데이터 아이템을 교체하도록 제2 버전 식별자와 서명이 동반되는 제2 데이터 아이템을 수신하고;
    상기 서명을 이용하여 적어도 상기 제2 버전 식별자를 인증하고;
    저장된 상기 제1 버전 식별자와 상기 제2 버전 식별자 간의 비교를 행하고; 그리고
    (i) 상기 제2 버전 식별자가 성공적으로 인증되었으며 (ii) 상기 저장된 제1 버전 식별자와 인증된 상기 제2 버전 식별자 간의 비교에 의해 표시되는 바와 같이 상기 제2 데이터 아이템이 상기 제1 데이터 아이템보다 최근의 것이라는 검증에만 응답하여, 상기 제1 데이터 아이템을 상기 제2 데이터 아이템으로 교체하도록 구성된, 보안형 저장 시스템.
  2. 제1항에 있어서, 상기 제어기는, (i) 적어도 버전 식별자를 인증하여 인증 결과를 생성하고, (ii) 상기 비교를 행하고, (iii) 단일 무중단(uninterruptible) 동작으로, 상기 인증 결과와 상기 비교에 기초하여 상기 제1 데이터 아이템을 상기 제2 데이터 아이템으로 조건적으로 교체하도록 구성된, 보안형 저장 시스템.
  3. 제1항에 있어서, 상기 제어기는, 상기 제어기가 상기 제2 데이터 아이템의 제공자와 공유하는 비밀 키에 기초하여 상기 서명을 검증함으로써 상기 제2 버전 식별자를 인증하도록 구성되고; 상기 제어기는, 상기 비밀 키 및 적어도 상기 제2 버전 식별자에 기초하여 수신된 상기 제2 데이터 아이템에 대한 상기 서명을 계산하여 계산된 서명을 생성하고, 상기 계산된 서명이 수신된 서명과 일치하는지 여부를 체크하도록 구성된, 보안형 저장 시스템.
  4. 제1항에 있어서, 상기 제1 데이터 아이템은 상기 비휘발성 메모리의 물리적 어드레스 공간의 제1 물리적 저장 위치를 점유하고, 상기 제어기는, 상기 제2 데이터 아이템에 대하여 상기 물리적 어드레스 공간의 제2 물리적 저장 위치를 할당하고, 상기 제1 물리적 저장 위치의 물리적 어드레스와 상기 저장 시스템에 의해 사용되는 논리적 어드레스 공간의 제1 논리적 저장 위치의 논리적 어드레스 간을 맵핑하고, 상기 제2 물리적 저장 위치의 물리적 어드레스와 상기 논리적 어드레스 공간의 제2 논리적 저장 위치의 논리적 어드레스 간을 맵핑하도록 구성된, 보안형 저장 시스템.
  5. 제4항에 있어서, 상기 제어기는, 상기 제2 데이터 아이템을 상기 제2 논리적 저장 위치를 통해 상기 비휘발성 메모리의 제2 물리적 저장 위치에 기입함으로써 상기 제1 데이터 아이템을 상기 제2 데이터 아이템으로 교체하도록 구성되고;
    상기 제어기는, 상기 제1 논리적 저장 위치의 논리적 어드레스를 상기 제2 데이터 아이템을 판독하기 위한 상기 제2 물리적 저장 위치의 물리적 어드레스에 리맵핑(re-map)함으로써 상기 제1 데이터 아이템을 상기 제2 데이터 아이템으로 교체하도록 구성되고;
    상기 제어기는, 상기 제2 물리적 저장 위치의 기입을 잠금 및 잠금해제하기 위한 기입 방지 표시자를 배정하고, 상기 제2 데이터 아이템을 상기 제2 물리적 저장 위치에 기입하기 전에 상기 제2 물리적 저장 위치를 잠금해제하고, 상기 제2 데이터 아이템을 상기 제2 물리적 저장 위치에 기입하는 것을 종료한 후 상기 제2 물리적 저장 위치를 잠그도록 구성된, 보안형 저장 시스템.
  6. 제1항에 있어서, 상기 제어기는, 상기 제2 데이터 아이템의 각 부분을 각각 반송하는 다수의 기입 커맨드를 상기 비휘발성 메모리에 전송함으로써 상기 제2 데이터 아이템을 상기 제2 물리적 저장 위치에 기입하도록 구성되고;
    상기 기입 커맨드의 각각은 상기 제2 데이터 아이템에 연관된 비밀 키를 이용하여 계산된 각 커맨드 서명을 포함하고, 상기 제어기는, 상기 제2 데이터 아이템에 연관된 상기 비밀 키를 이용하여 상기 각 커맨드 서명을 검증한 후에만 각 기입 커맨드를 실행하도록 구성되고;
    상기 서명은 상기 제2 데이터 아이템과 상기 제2 버전 식별자 모두에 대하여 계산되고, 상기 제어기는, 상기 각 커맨드 서명의 제2 버전 식별자가 상기 제1 버전 식별자보다 최근의 것임을 확인한 후에만 상기 기입 커맨드를 실행하도록 구성된, 보안형 저장 시스템.
  7. 제1항에 있어서, 상기 제어기는, 상기 제2 버전 식별자와 후속 버전 업데이트의 버전 식별자 간의 비교를 위해 상기 비휘발성 메모리에 상기 제2 버전 식별자를 저장하도록 구성된, 보안형 저장 시스템.
  8. 보안형 저장 방법으로서,
    제1 데이터 아이템 및 상기 제1 데이터 아이템에 배정된 각각의 제1 버전 식별자를 저장 시스템의 비휘발성 메모리에 저장하는 단계;
    상기 비휘발성 메모리의 상기 제1 데이터 아이템을 교체하도록 제2 버전 식별자와 서명이 동반되는 제2 데이터 아이템을 수신하는 단계;
    상기 서명을 이용하여 적어도 상기 제2 버전 식별자를 인증하는 단계;
    저장된 상기 제1 버전 식별자와 인증된 상기 제2 버전 식별자 간의 비교를 행하는 단계; 및
    (i) 상기 제2 버전 식별자가 성공적으로 인증되었으며 (ii) 상기 저장된 제1 버전 식별자와 상기 인증된 제2 버전 식별자 간의 비교에 의해 표시되는 바와 같이 상기 제2 데이터 아이템이 상기 제1 데이터 아이템보다 최근의 것이라는 검증에만 응답하여, 상기 제1 데이터 아이템을 상기 제2 데이터 아이템으로 교체하는 단계를 포함하는, 보안형 저장 방법.
  9. 제8항에 있어서, (i) 적어도 버전 식별자를 인증하여 인증 결과를 생성하는 것, (ii) 상기 비교를 행하는 것, 및 (iii) 상기 인증 결과와 상기 비교에 기초하여 상기 제1 데이터 아이템을 상기 제2 데이터 아이템으로 조건적으로 교체하는 것을 포함하는 단일 무중단 동작을 적용하는 단계를 포함하는, 보안형 저장 방법.
  10. 제8항에 있어서, 상기 제2 데이터 아이템을 인증하는 것은, 상기 저장 시스템이 상기 제2 데이터 아이템의 제공자와 공유하는 비밀 키에 기초하여 상기 서명을 검증하는 것을 포함하고;
    상기 서명을 검증하는 것은, 상기 비밀 키 및 적어도 상기 제2 버전 식별자에 기초하여 수신된 상기 제2 데이터 아이템에 대한 상기 서명을 계산하여 계산된 서명을 생성하고, 상기 계산된 서명이 수신된 서명과 일치하는지 여부를 체크하는 것을 포함하는, 보안형 저장 방법.
  11. 제8항에 있어서, 상기 제1 데이터 아이템은 상기 비휘발성 메모리의 물리적 어드레스 공간의 제1 물리적 저장 위치를 점유하고;
    상기 제2 데이터 아이템에 대하여 상기 물리적 어드레스 공간의 제2 물리적 저장 위치를 할당하고, 상기 제1 물리적 저장 위치의 물리적 어드레스와 상기 저장 시스템에 의해 사용되는 논리적 어드레스 공간의 제1 논리적 저장 위치의 논리적 어드레스 간을 맵핑하고, 상기 제2 물리적 저장 위치의 물리적 어드레스와 상기 논리적 어드레스 공간의 제2 논리적 저장 위치의 논리적 어드레스 간을 맵핑하는 것을 포함하는, 보안형 저장 방법.
  12. 제11항에 있어서, 상기 제1 데이터 아이템을 상기 제2 데이터 아이템으로 교체하는 단계는, 상기 제2 데이터 아이템을 상기 제2 논리적 저장 위치를 통해 상기 비휘발성 메모리의 제2 물리적 저장 위치에 기입하는 단계를 포함하고;
    상기 제1 데이터 아이템을 상기 제2 데이터 아이템으로 교체하는 단계는, 상기 제1 논리적 저장 위치의 논리적 어드레스를 상기 제2 데이터 아이템을 판독하기 위한 상기 제2 물리적 저장 위치의 논리적 어드레스에 리맵핑하는 단계를 포함하고,
    상기 제1 데이터 아이템을 상기 제2 데이터 아이템으로 교체하는 단계는, 상기 제2 물리적 저장 위치의 기입을 잠금 및 잠금해제하기 위한 기입 방지 표시자를 배정하고, 상기 제2 데이터 아이템을 상기 제2 물리적 저장 위치에 기입하기 전에 상기 제2 물리적 저장 위치를 잠금해제하고, 상기 제2 데이터 아이템을 상기 제2 물리적 저장 위치에 기입하는 것을 종료한 후 상기 제2 물리적 저장 위치를 잠그는 단계를 포함하는, 보안형 저장 방법.
  13. 제8항에 있어서, 상기 제1 데이터 아이템을 상기 제2 데이터 아이템으로 교체하는 단계는, 상기 제2 데이터 아이템의 각 부분을 각각 반송하는 다수의 기입 커맨드를 상기 비휘발성 메모리에 전송함으로써 상기 제2 데이터 아이템을 상기 제2 물리적 저장 위치에 기입하는 단계를 포함하고;
    기입 커맨드는 상기 제2 데이터 아이템에 연관된 비밀 키를 이용하여 계산되는 각 커맨드 서명을 포함하고, 상기 제2 데이터 아이템에 연관된 상기 비밀 키를 이용하여 상기 각 커맨드 서명을 검증한 후에만 상기 비휘발성 메모리에서 각 기입 커맨드를 실행하는 것을 포함하고, 상기 커맨드 서명은 상기 제2 데이터 아이템과 상기 제2 버전 식별자 모두에 대하여 계산되고, 각 기입 커맨드를 실행하는 것은, 상기 각 커맨드 서명의 제2 버전 식별자가 상기 제1 버전 식별자보다 최근의 것임을 확인한 후에만 상기 기입 커맨드를 실행하는 것을 포함하는, 보안형 저장 방법.
  14. 제8항에 있어서, 상기 제2 버전 식별자와 후속 버전 업데이트의 버전 식별자 간의 비교를 위해 상기 비휘발성 메모리에 상기 제2 버전 식별자를 저장하는 단계를 포함하는, 보안형 저장 방법.
KR1020170109686A 2016-08-30 2017-08-29 보안형 메모리 칩의 롤백 방지 버전 업그레이드 KR20180025261A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200064515A KR102254256B1 (ko) 2016-08-30 2020-05-28 보안형 메모리 칩의 롤백 방지 버전 업그레이드

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662381028P 2016-08-30 2016-08-30
US62/381,028 2016-08-30
US15/670,062 US10754988B2 (en) 2016-08-30 2017-08-07 Anti-rollback version upgrade in secured memory chip
US15/670,062 2017-08-07

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020200064515A Division KR102254256B1 (ko) 2016-08-30 2020-05-28 보안형 메모리 칩의 롤백 방지 버전 업그레이드

Publications (1)

Publication Number Publication Date
KR20180025261A true KR20180025261A (ko) 2018-03-08

Family

ID=59772403

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020170109686A KR20180025261A (ko) 2016-08-30 2017-08-29 보안형 메모리 칩의 롤백 방지 버전 업그레이드
KR1020200064515A KR102254256B1 (ko) 2016-08-30 2020-05-28 보안형 메모리 칩의 롤백 방지 버전 업그레이드

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020200064515A KR102254256B1 (ko) 2016-08-30 2020-05-28 보안형 메모리 칩의 롤백 방지 버전 업그레이드

Country Status (6)

Country Link
US (1) US10754988B2 (ko)
EP (1) EP3291122B1 (ko)
KR (2) KR20180025261A (ko)
CN (1) CN107797827A (ko)
ES (1) ES2938363T3 (ko)
TW (1) TWI676116B (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11640288B2 (en) * 2017-09-26 2023-05-02 C-Sky Microsystems Co., Ltd. System version upgrading method and apparatus
CN108985049A (zh) * 2018-06-06 2018-12-11 晶晨半导体(上海)股份有限公司 防回滚方法及系统
US11258772B2 (en) * 2018-06-19 2022-02-22 Cypress Semiconductor Corporation Secured communication from within non-volatile memory device
JP6697038B2 (ja) * 2018-07-31 2020-05-20 日本電信電話株式会社 情報処理装置、検証方法および検証プログラム
US11263124B2 (en) 2018-08-03 2022-03-01 Micron Technology, Inc. Host-resident translation layer validity check
US11100228B2 (en) * 2018-10-25 2021-08-24 Dell Products, L.P. System and method to recover FPGA firmware over a sideband interface
CN109460249A (zh) * 2018-11-07 2019-03-12 绿驰汽车科技(上海)有限公司 一种控制模块刷新方法
US11226907B2 (en) 2018-12-19 2022-01-18 Micron Technology, Inc. Host-resident translation layer validity check techniques
US11226894B2 (en) * 2018-12-21 2022-01-18 Micron Technology, Inc. Host-based flash memory maintenance techniques
JP2020119298A (ja) * 2019-01-24 2020-08-06 キオクシア株式会社 メモリシステム
CN110244976A (zh) * 2019-05-21 2019-09-17 深圳壹账通智能科技有限公司 应用程序版本切换方法及装置
CN110412907A (zh) * 2019-06-11 2019-11-05 武汉欣叶电子科技有限公司 一种香氛发生器、车载香氛控制系统及方法
SG11202002416RA (en) * 2019-06-26 2020-04-29 Alibaba Group Holding Ltd Improved anti-replay device based on memory space interchange
US11301566B2 (en) * 2019-07-03 2022-04-12 Ati Technologies Ulc Firmware anti-rollback
US11409877B2 (en) 2020-03-27 2022-08-09 Intel Corporation Firmware verification mechanism
US11681514B2 (en) * 2020-12-29 2023-06-20 Pixart Imaging Inc. Mouse chip easily updating firmware and operating method thereof
EP4312136A1 (en) * 2022-07-25 2024-01-31 Nxp B.V. Apparatuses and methods for verification of updated data-set
US20240086170A1 (en) * 2022-09-09 2024-03-14 Renesas Electronics Corporation Software update system and software update method

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6801994B2 (en) * 2000-12-20 2004-10-05 Microsoft Corporation Software management systems and methods for automotive computing devices
JP2003256228A (ja) * 2002-02-28 2003-09-10 Denso Corp プログラム書換装置
US7844367B2 (en) * 2003-12-23 2010-11-30 Rain Bird Corporation Code replacement for irrigation controllers
US20060069849A1 (en) * 2004-09-30 2006-03-30 Rudelic John C Methods and apparatus to update information in a memory
US7761922B1 (en) * 2005-02-28 2010-07-20 Adobe Systems Inc. Methods and apparatus for contemporaneously acquiring and certifying content
GB2430774B (en) * 2005-10-03 2007-08-08 Nec Technologies Method of software updating and related device
US20070168668A1 (en) * 2005-12-08 2007-07-19 Chang Robert C Media card with command pass through mechanism
JP2007219802A (ja) * 2006-02-16 2007-08-30 Hitachi Global Storage Technologies Netherlands Bv 記憶装置、そのコントローラ、および、その制御方法
DE602006014801D1 (de) * 2006-04-24 2010-07-22 Ericsson Telefon Ab L M Prüfung der Berechtigung der Installation einer Softwareversion
US20080307507A1 (en) * 2007-06-08 2008-12-11 Conley Kevin M Memory device using time from a trusted host device
ATE540371T1 (de) * 2008-06-23 2012-01-15 St Ericsson Sa Elektronische vorrichtung und verfahren zur software- oder firmwareaktualisierung einer elektronischen vorrichtung
US8689206B2 (en) * 2009-03-05 2014-04-01 International Business Machines Corporation Isolating operating system in-memory modules using error injection
US8364886B2 (en) * 2010-01-26 2013-01-29 Seagate Technology Llc Verifying whether metadata identifies a most current version of stored data in a memory space
JP2011227611A (ja) * 2010-04-16 2011-11-10 Sony Corp メモリ装置、ホスト装置、およびメモリシステム
JP5556895B2 (ja) * 2010-10-14 2014-07-23 富士通株式会社 コンテンツデータ再生装置、更新管理方法、及び更新管理プログラム
US8745612B1 (en) * 2011-01-14 2014-06-03 Google Inc. Secure versioning of software packages
WO2012127266A1 (en) * 2011-03-23 2012-09-27 Sandisk Il Ltd. Storage device and method for updating data in a partition of the storage device
US9146683B2 (en) * 2011-04-20 2015-09-29 Seagate Technology Llc Logical block address mapping
CN102243595B (zh) * 2011-08-03 2014-02-19 浙江大学 基于MMU架构的Java Card系统组件更新方法
CN102724308A (zh) * 2012-06-13 2012-10-10 腾讯科技(深圳)有限公司 软件更新方法及软件更新系统
US9910659B2 (en) * 2012-11-07 2018-03-06 Qualcomm Incorporated Methods for providing anti-rollback protection of a firmware version in a device which has no internal non-volatile memory
US20140250290A1 (en) * 2013-03-01 2014-09-04 St-Ericsson Sa Method for Software Anti-Rollback Recovery
WO2014138626A1 (en) * 2013-03-08 2014-09-12 Robert Bosch Gmbh Systems and methods for maintaining integrity and secrecy in untrusted computing platforms
EP3028228A4 (en) * 2013-07-16 2016-12-07 Intel Corp MOBILE PURSE DETECTION AT A CONTACTLESS POINT OF A SALES TERMINAL
JP5876017B2 (ja) * 2013-08-30 2016-03-02 株式会社ソニー・コンピュータエンタテインメント 周辺機器制御装置および情報処理装置
US9898410B2 (en) * 2013-09-10 2018-02-20 Intel Corporation Hybrid main memory using a fine-grain level of remapping
WO2015065333A1 (en) * 2013-10-29 2015-05-07 Hewlett-Packard Development Company, L.P. Mapping virtual memory pages to physical memory pages
US10203876B2 (en) * 2013-11-22 2019-02-12 Nec Corporation Storage medium apparatus, method, and program for storing non-contiguous regions
US9230634B2 (en) * 2013-12-09 2016-01-05 Qualcomm Incorporated Refresh scheme for memory cells with next bit table
KR101527779B1 (ko) * 2014-01-13 2015-06-10 현대자동차주식회사 효율적인 차량용 리프로그래밍 장치 및 그 제어방법
US9460312B2 (en) * 2014-03-11 2016-10-04 Qualcomm Incorporated Data integrity protection from rollback attacks for use with systems employing message authentication code tags
US9983878B2 (en) * 2014-05-15 2018-05-29 International Business Machines Corporation Branch prediction using multiple versions of history data
US9804922B2 (en) * 2014-07-21 2017-10-31 Sandisk Technologies Llc Partial bad block detection and re-use using EPWR for block based architectures
US9621549B2 (en) * 2014-07-25 2017-04-11 Qualcomm Incorporated Integrated circuit for determining whether data stored in external nonvolative memory is valid
US9658782B2 (en) * 2014-07-30 2017-05-23 Excelero Storage Ltd. Scalable data using RDMA and MMIO
KR102261815B1 (ko) * 2014-10-30 2021-06-07 삼성전자주식회사 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US9817752B2 (en) * 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9710675B2 (en) * 2015-03-26 2017-07-18 Intel Corporation Providing enhanced replay protection for a memory
JP6595822B2 (ja) * 2015-07-07 2019-10-23 キヤノン株式会社 情報処理装置及びその制御方法
GB2545250B (en) * 2015-12-10 2019-06-12 Advanced Risc Mach Ltd Devices and method of operation thereof
US10339317B2 (en) * 2015-12-18 2019-07-02 Intel Corporation Computing devices
US9940123B1 (en) * 2015-12-29 2018-04-10 Amazon Technologies, Inc. Updating device code through a bus
US10496388B2 (en) * 2016-03-24 2019-12-03 Intel Corporation Technologies for securing a firmware update
US10673811B2 (en) * 2016-07-25 2020-06-02 ColorTokens, Inc. Updating address mapping for local and network resources
US10289847B2 (en) * 2016-07-29 2019-05-14 Qualcomm Incorporated Updating virtual memory addresses of target application functionalities for an updated version of application binary code
US11461485B2 (en) * 2016-08-12 2022-10-04 ALTR Solutions, Inc. Immutable bootloader and firmware validator

Also Published As

Publication number Publication date
TWI676116B (zh) 2019-11-01
CN107797827A (zh) 2018-03-13
EP3291122B1 (en) 2022-11-23
US20180060607A1 (en) 2018-03-01
ES2938363T3 (es) 2023-04-10
KR102254256B1 (ko) 2021-05-21
KR20200064968A (ko) 2020-06-08
EP3291122A1 (en) 2018-03-07
TW201807616A (zh) 2018-03-01
US10754988B2 (en) 2020-08-25

Similar Documents

Publication Publication Date Title
KR102254256B1 (ko) 보안형 메모리 칩의 롤백 방지 버전 업그레이드
US8898477B2 (en) System and method for secure firmware update of a secure token having a flash memory controller and a smart card
US8949626B2 (en) Protection of security parameters in storage devices
US11791984B2 (en) Local ledger block chain for secure updates
CN107846396B (zh) 存储器系统及其与主机之间的绑定方法
US20200186342A1 (en) Self-Encryption Drive (SED)
CN111475871A (zh) 存储器系统
US20220358221A1 (en) Local ledger block chain for secure electronic control unit updates
US11683155B2 (en) Validating data stored in memory using cryptographic hashes
TW202201217A (zh) 韌體更新系統及方法
CN116420145A (zh) 基于多个组件的启动时间绑定的端点验证
CN113946881A (zh) 安全串行外围接口(spi)闪存
US20230273977A1 (en) Managing ownership of an electronic device
CN113826071A (zh) 空中更新确认
US11947676B2 (en) Processor system with a communication interface
US11775650B2 (en) Processor system
CN115391844A (zh) 安全密钥存储装置
JP2024507531A (ja) デジタルデバイスのためのトラステッドコンピューティング
CN115699005A (zh) 用于安全地处理数字信息的安全元件
US20230072572A1 (en) I/o command control device and information storage device
US20220138114A1 (en) Using memory as a block in a block chain
EP2138946A1 (en) Secure memory management system
WO2023164227A1 (en) Managing ownership of an electronic device

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
E902 Notification of reason for refusal
AMND Amendment
X601 Decision of rejection after re-examination