KR20090007123A - 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템 - Google Patents

보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템 Download PDF

Info

Publication number
KR20090007123A
KR20090007123A KR1020070070778A KR20070070778A KR20090007123A KR 20090007123 A KR20090007123 A KR 20090007123A KR 1020070070778 A KR1020070070778 A KR 1020070070778A KR 20070070778 A KR20070070778 A KR 20070070778A KR 20090007123 A KR20090007123 A KR 20090007123A
Authority
KR
South Korea
Prior art keywords
secret key
kernel
test
boot
boot loader
Prior art date
Application number
KR1020070070778A
Other languages
English (en)
Other versions
KR101393307B1 (ko
Inventor
박동진
황효선
강명희
이원일
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020070070778A priority Critical patent/KR101393307B1/ko
Priority to US12/145,102 priority patent/US8443203B2/en
Publication of KR20090007123A publication Critical patent/KR20090007123A/ko
Application granted granted Critical
Publication of KR101393307B1 publication Critical patent/KR101393307B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity

Abstract

보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리 시스템이 개시된다. 상기 반도체 메모리 시스템은 외부 메모리, 내부 메모리 및 OTP 메모리(One-time Programmable memory)를 구비한다. 상기 외부 메모리는 커널(kernel), 공개키, 상기 공개키를 인증하고 테스트 비밀키를 생성하는데 사용되는 제 1 부팅정보 및 상기 커널의 무결성을 검증하는 제 2 부트로더를 포함한다. 상기 내부 메모리는 상기 제 2 부트로더의 무결성을 검증하고 상기 테스트 비밀키를 생성하는 제 1 부트로더를 포함한다. 상기 OTP 메모리는 상기 공개키와 비밀키를 이용하여 생성된 제 2 부팅정보를 포함한다. 상기 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리 시스템은 종래기술과 달리 비밀키를 저장하기 위해서 별도의 OTP 메모리(One-time Programmable memory)를 필요로 하지 않으므로, OTP 메모리의 용량 및 기록 시간을 종래에 비하여 절반 정도로 감소시킬 수 있는 장점이 있다.

Description

보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리 시스템{Secure boot method and semiconductor memory system for using the method}
본 발명은 반도체 메모리 시스템에 관한 것으로, 특히 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리 시스템에 관한 것이다.
일반적으로 많은 전자장치는 정상적으로 동작하기 위하여 부팅과정을 거친다. 상기 부팅과정을 통해서 전자기기는 적절한 초기화를 수행하고 프로그램을 주메모리로 로드해서 실행할 수 있게 된다. 즉, 전자장치의 초기 상태를 결정하는 상기 부팅과정은 전자장치의 중요한 운영 파라미터에 영향을 미친다. 또한, 상기 부팅과정은 전자장치가 사용될 때 실질적인 영향을 미칠 수 있다. 만약, 상기 부팅과정을 누구든지 쉽게 변경할 수 있어 최초에 의도하지 않았던 프로그램을 로드할 수 있다면 전자장치 생산자는 수입의 손실을 피할 수 없으므로, 상기 부팅과정의 변경을 방지하는 것은 매우 중요하다.
예를 들어, 고사양의 가정용 게임기를 판매한 회사는 손해를 보더라도 게임기 자체는 싸게 판매한 후 게임 프로그램의 판매를 통하여 이윤을 추구하는 경우가 있을 수 있다. 만약, 사용자가 불법 게임프로그램을 게임기에서 실행될 수 있도록 부팅과정을 쉽게 바꿀 수 있다면 회사는 손실을 피할 수 없다.
따라서, 전자장치를 판매하는 회사들은 부팅과정을 자신이 원하는 방식으로 고정시켜 쉽게 변경할 수 없도록 안전하게 부팅할 수 있는 방법, 즉 보안 부팅(secure boot) 방법을 필요로 하고 있다.
또한, 전자장치의 생산자 또는 전자장치를 사용하는 서비스 사업자는 전자장치 내부에 자신만 알고 있는 비밀키를 안전하게 저장하기를 원하는 경우가 있다. 상기 비밀키는 다양한 용도로 사용될 수 있다. 예를 들어, 비밀키는 커널(kernel)의 일부 영역 또는 전체 영역을 암호화하거나 전자장치와 생산자 또는 전자장치와 서비스 사업자 사이에 안전한 통신 채널을 만드는데 사용할 수 있다. 이러한 비밀키를 안전하게 저장하기 위하여 기존에는 전자장치 내부의 안전한 저장공간을 마련하였다. 즉, 종래에는 시스템 온 칩(SoC : System on Chip) 내부의 OTP 메모리(One-time Programmable memory)에 상기 비밀키를 안전하게 저장하는 방법을 사용하였다.
이러한 보안 부팅 방법을 사용하고 상기 비밀키를 안전하게 저장하기 위해서 OTP 메모리를 사용하는 경우를 생각해 볼 수 있다. 일반적으로 OTP 메모리는 셀당 크기가 일반 메모리보다 크기 때문에 필요한 OTP 메모리 요구량의 증가는 생산 단가의 증가를 가져오게 된다. 또한, OTP 메모리의 기록 시간이 증가하면 단위시간 당 생산량이 감소하게 된다. 따라서, OTP 메모리의 용량 및 기록 시간을 감소시킬 필요가 있다.
본 발명이 해결하고자 하는 과제는 OTP 메모리(One-time Programmable memory)의 용량 및 기록 시간을 감소시키는 반도체 메모리 시스템을 제공하는데 있다.
본 발명이 해결하고자 하는 다른 과제는 상기 반도체 메모리 시스템의 보안 부팅 방법을 제공하는데 있다.
상기 과제를 달성하기 위한 본 발명의 실시예에 따른 반도체 메모리 시스템은 외부 메모리, 내부 메모리 및 OTP 메모리(One-time Programmable memory)를 구비한다. 상기 외부 메모리는 커널(kernel), 공개키, 상기 공개키를 인증하고 테스트 비밀키를 생성하는데 사용되는 제 1 부팅정보 및 상기 커널의 무결성을 검증하는 제 2 부트로더를 포함한다. 상기 내부 메모리는 상기 제 2 부트로더의 무결성을 검증하고 상기 테스트 비밀키를 생성하는 제 1 부트로더를 포함한다. 상기 OTP 메모리는 상기 공개키와 비밀키를 이용하여 생성된 제 2 부팅정보를 포함한다.
상기 제 1 부트로더는 상기 외부 메모리의 제 1 부팅정보와 상기 OTP 메모리의 제 2 부팅정보를 이용하여 상기 테스트 비밀키를 생성하는 것이 바람직하다.
상기 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 반도체 메모리 시스템은 외부 메모리, 내부 메모리 및 OTP 메모리(One-time Programmable memory)를 구비한다. 상기 외부 메모리는 커널(kernel), 공개키, 상기 공개키와 비밀키를 이 용하여 생성된 메시지 인증 코드(MAC : Message Authentication Code) 및 상기 커널의 무결성을 검증하는 제 2 부트로더를 포함한다. 상기 내부 메모리는 상기 제 2 부트로더의 무결성을 검증하는 제 1 부트로더를 포함한다. 상기 OTP 메모리는 상기 메시지 인증 코드와 상기 비밀키를 이용하여 생성된 부팅정보를 포함한다.
상기 제 1 부트로더는 상기 OTP 메모리의 부팅정보와 상기 외부 메모리의 메시지 인증 코드를 이용하여 테스트 비밀키를 생성하는 것이 바람직하다.
상기 제 1 부트로더는 상기 테스트 비밀키와 상기 공개키를 이용하여 테스트 메시지 인증 코드를 생성하고, 상기 테스트 메시지 인증코드가 상기 외부 메모리에 저장된 메시지 인증 코드와 동일하지 않은 경우 상기 반도체 메모리 시스템이 부팅을 종료하도록 제어하는 것이 바람직하다.
상기 제 1 부트로더는 상기 테스트 비밀키와 상기 공개키를 이용하여 테스트 메시지 인증 코드를 생성하고, 상기 테스트 메시지 인증코드가 상기 외부 메모리에 저장된 메시지 인증 코드와 동일한 경우 상기 반도체 메모리 시스템이 부팅을 계속하도록 제어하는 것이 바람직하다.
상기 부팅정보는 상기 메시지 인증 코드와 상기 비밀키를 비트 단위로 베타적 논리합(exclusive or) 연산을 한 정보인 것이 바람직하다.
상기 제 1 부트로더는 상기 OTP 메모리의 부팅정보와 상기 외부 메모리의 메시지 인증 코드를 베타적 논리합 연산을 하여 테스트 비밀키를 생성하는 것이 바람직하다.
상기 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 반도체 메모리 시 스템은 외부 메모리, 내부 메모리 및 OTP 메모리(One-time Programmable memory)를 구비한다. 상기 외부 메모리는 커널(kernel), 공개키, 비밀키를 이용하여 생성된 비밀키 해시값(hash value) 및 상기 커널의 무결성을 검증하는 제 2 부트로더를 포함한다. 상기 내부 메모리는 상기 제 2 부트로더의 무결성을 검증하는 제 1 부트로더를 포함한다. 상기 OTP 메모리는 상기 공개키와 상기 비밀키를 이용하여 생성된 부팅정보를 포함한다.
상기 제 1 부트로더는 상기 OTP 메모리의 부팅정보와 상기 외부 메모리의 비밀키 해시값을 이용하여 테스트 비밀키를 생성하는 것이 바람직하다.
상기 제 1 부트로더는 상기 테스트 비밀키를 이용하여 테스트 해시값을 생성하고, 상기 테스트 해시값과 상기 외부 메모리에 저장된 비밀키 해시값이 동일하지 않은 경우 상기 반도체 메모리 시스템의 부팅을 종료하도록 제어하는 것이 바람직하다.
상기 제 1 부트로더는 상기 테스트 비밀키를 이용하여 테스트 해시값을 생성하고, 상기 테스트 해시값과 상기 외부 메모리에 저장된 비밀키 해시값이 동일한 경우 상기 반도체 메모리 시스템의 부팅을 계속하도록 제어하는 것이 바람직하다.
상기 비밀키 해시값은 상기 비밀키를 해싱(hashing)한 값이고, 상기 부팅정보는 상기 비밀키를 해싱한 값과 상기 공개키를 접합(concatenation)한 후 해싱한 값과 상기 비밀키를 비트 단위로 베타적 논리합(exclusive or) 연산을 한 값인 것이 바람직하다.
상기 제 1 부트로더는 상기 외부 메모리의 비밀키 해시값과 상기 공개키를 접합한 후 해싱한 값과 상기 OTP 메모리의 부팅정보를 베타적 논리합 연산을 하여 테스트 비밀키를 생성하는 것이 바람직하다.
상기 다른 과제를 달성하기 위한 본 발명의 실시예에 따른 반도체 메모리 시스템의 보안 부팅 방법은 공개키, 상기 공개키와 비밀키를 이용하여 생성된 메시지 인증 코드(MAC : Message Authentication Code) 및 상기 메시지 인증 코드와 비밀키를 이용하여 생성된 부팅정보를 구비하는 반도체 메모리 시스템의 보안 부팅 방법에 있어서, 상기 부팅정보 및 상기 메시지 인증 코드를 이용하여 테스트 비밀키를 생성하는 단계, 상기 테스트 비밀키 및 상기 공개키를 이용하여 테스트 메시지 인증 코드를 생성하는 단계, 상기 테스트 메시지 인증 코드와 상기 메시지 인증 코드를 비교하는 단계, 상기 비교 결과, 상기 테스트 메시지 인증 코드와 상기 메시지 인증 코드가 동일하지 않은 경우 부팅을 종료하는 단계 및 상기 비교 결과, 상기 테스트 메시지 인증 코드와 상기 메시지 인증 코드가 동일한 경우 부팅을 계속 하는 단계를 구비한다.
상기 테스트 비밀키를 생성하는 단계는 상기 부팅정보와 상기 메시지 인증 코드를 베타적 논리합 연산을 하여 상기 테스트 비밀키를 생성하는 단계인 것이 바람직하다.
상기 다른 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 반도체 메모리 시스템의 보안 부팅 방법은 공개키, 비밀키를 이용하여 생성된 비밀키 해시값(hash value) 및 상기 공개키와 상기 비밀키를 이용하여 생성된 부팅정보를 구비하는 반도체 메모리 시스템의 보안 부팅 방법에 있어서, 상기 비밀키 해시값 및 상 기 부팅정보를 이용하여 테스트 비밀키를 생성하는 단계, 상기 테스트 비밀키를 이용하여 테스트 해시값을 생성하는 단계, 상기 테스트 해시값과 상기 비밀키 해시값을 비교하는 단계, 상기 비교 결과, 상기 테스트 해시값과 상기 비밀키 해시값이 동일하지 않은 경우 부팅을 종료하는 단계 및 상기 비교 결과, 상기 테스트 해시값과 상기 비밀키 해시값이 동일한 경우 부팅을 계속 하는 단계를 구비한다.
상기 테스트 비밀키를 생성하는 단계는 상기 비밀키 해시값과 상기 공개키를 접합한 후 해싱하는 단계 및 상기 해싱한 값과 상기 부팅정보를 베타적 논리합 연산을 하여 상기 테스트 비밀키를 생성하는 단계를 구비하는 것이 바람직하다.
상기 테스트 해시값을 생성하는 단계는 상기 테스트 비밀키를 해싱하여 상기 테스트 해시값을 생성하는 단계인 것이 바람직하다.
본 발명에 따른 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리 시스템은 종래기술과 달리 비밀키를 저장하기 위하여 추가적인 OTP 메모리(One-time Programmable memory)를 필요로 하지 않기 때문에, OTP 메모리의 용량 및 기록 시간을 종래에 비하여 절반 정도로 감소시킬 수 있는 장점이 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 실시예에 따른 반도체 메모리 시스템(100)의 블록도이다.
도 1을 참조하면, 반도체 메모리 시스템(100)은 내부 메모리(120), 한 번만 기록이 가능한 OTP 메모리(One-time Programmable memory)(130) 및 외부 메모리(150)를 구비할 수 있다. 내부 메모리(120) 및 OTP 메모리(130)는 시스템 온 칩(SoC : System on Chip)(110)으로 구현할 수 있다.
외부 메모리(150)는 커널(kernel), 공개키(public key), 상기 공개키를 인증하고 테스트 비밀키를 생성하는데 사용되는 제 1 부팅정보 및 상기 커널의 무결성을 검증하는 제 2 부트로더(SBL : Second Boot Loader)를 포함한다. 내부 메모리(120)는 상기 제 2 부트로더의 무결성을 검증하고 상기 테스트 비밀키를 생성하는 제 1 부트로더(FBL : First Boot Loader)를 포함한다. OTP 메모리(130)는 상기 공개키와 비밀키(SDK : Secret Device Key)를 이용하여 생성된 제 2 부팅정보를 포함한다. 상기 제 1 부트로더(FBL)는 외부 메모리(150)의 제 1 부팅정보와 OTP 메모리(130)의 제 2 부팅정보를 이용하여 상기 테스트 비밀키를 생성한다.
본 발명에서는 내부 메모리(120), OTP 메모리(130) 및 외부 메모리(150)를 이용한 보안 부팅 방법으로써 두 가지 실시예를 제시한다.
도 2는 본 발명의 일 실시예에 따른 반도체 메모리 시스템(200)의 블록도이다.
도 2를 참조하면, 반도체 메모리 시스템(200)은 내부 메모리(220), OTP 메모 리(230) 및 외부 메모리(250)를 구비할 수 있다. 외부 메모리(250)는 공개키(public key), 제 1 부팅정보, 제 2 부트로더(SBL), 제 2 부트로더 전자서명(digital signature), 커널(kernel) 및 커널 전자서명을 포함할 수 있다.
상기 제 2 부트로더 전자서명은 상기 제 2 부트로더(SBL)의 전자서명값이고, 상기 커널 전자서명은 상기 커널의 전자서명값이다. 상기 제 2 부트로더(SBL)는 상기 커널의 무결성을 검증한다. 즉, 상기 제 2 부트로더(SBL)는 상기 공개키를 이용한 상기 커널 전자서명의 검증을 통하여 상기 커널의 무결성을 검증한다. 만약, 제 2 공개키가 있는 경우에는, 상기 제 2 부트로더(SBL)는 상기 제 2 공개키를 이용한 상기 커널 전자서명의 검증을 통하여 상기 커널의 무결성을 검증한다.
상기 커널은 비밀키(SDK)에 의하여 일부 영역 또는 전체 영역이 암호화될 수 있다. 또한, 상기 커널은 상기 비밀키(SDK)에 의해서 암호화(encrypted)된 제 2 비밀키(SDK_2)에 의하여 일부 영역 또는 전체 영역이 암호화될 수도 있다.
이하에서, 상기 제 1 부팅정보는 메시지 인증 코드(MAC : Message Authentication Code)를 의미한다. 상기 메시지 인증 코드(MAC)는 상기 공개키와 상기 비밀키(SDK)를 이용하여 생성할 수 있다. 상기 메시지 인증 코드(MAC)는 데이터가 변조(수정, 삭제, 삽입 등) 되었는지를 검증할 수 있도록 데이터에 덧붙이는 코드이다. 상기 메시지 인증 코드(MAC)를 생성하는 함수로는 해시(hash) 함수를 이용한 해시 메시지 인증 코드(HMAC : The Keyed-Hash Message Authentication Code)와 블록 암호의 CBC(Cipher Block Chaining) 모드를 사용하는 CBC 메시지 인증 코드(CBC_MAC) 등이 있다. 이 외에도 상기 메시지 인증 코드(MAC)를 생성하는 많은 함수들이 있으며, 본 발명에서는 다른 함수를 이용하여 생성된 메시지 인증 코드(MAC)를 사용하여도 본 발명과 동일한 효과를 얻을 수 있음은 당업자에게 자명한 사항이다. 상기 메시지 인증 코드(MAC)의 생성과 검증에는 키(key)를 사용한다. 이하에서, 상기 메시지 인증 코드(MAC)는 상기 공개키를 입력으로 하고 상기 비밀키(SDK)를 키(key)로 하여 생성된 코드인 것으로 예를 들어 설명하고, MAC(SDK, Public Key)로 표현한다. 다만, 상기 메시지 인증 코드(MAC)의 입력과 키를 다른 값으로 하여도 본 발명과 동일한 효과를 얻을 수 있음은 당업자에게 자명한 사항이다.
OTP 메모리(230)는 상기 메시지 인증 코드(MAC)와 상기 비밀키(SDK)를 이용하여 생성된 제 2 부팅정보를 포함한다. 이하에서, 상기 제 2 부팅정보는 메시지 인증 코드(MAC)와 상기 비밀키(SDK)를 비트 단위로 베타적 논리합(exclusive or) 연산을 한 정보인 경우를 예로 들어 설명하고,
Figure 112007051295014-PAT00001
로 표현한다. 상기 메시지 인증 코드(MAC)는 상기 비밀키(SDK)와 비트 단위로 베타적 논리합 연산을 하므로, 상기 메시지 인증 코드(MAC)의 비트수는 상기 비밀키(SDK)의 비트수와 동일한 것이 바람직하다.
내부 메모리(220)는 제 1 부트로더(FBL : First Boot Loader)를 포함할 수 있다. 상기 제 1 부트로더(FBL)는 상기 제 2 부트로더(SBL)의 무결성을 검증한다. 즉, 상기 제 1 부트로더(FBL)는 상기 공개키를 이용한 상기 커널 전자서명의 검증을 통하여 상기 커널의 무결성을 검증한다. 내부 메모리(220)는 ROM(Read Only Memory)일 수 있다. 상기 제 1 부트로더(FBL)의 동작에 관하여는 도 3에서 상세히 설명한다.
도 3은 도 2의 반도체 메모리 시스템(200)의 보안 부팅 방법의 흐름도이다.
도 2 및 도 3을 참조하면, 상기 제 1 부트로더(FBL)는 OTP 메모리(230)에 저장된 상기 제 2 부팅정보 및 외부 메모리(250)에 저장된 상기 메시지 인증 코드(MAC)를 이용하여 테스트 비밀키(SDK_T)를 생성한다(S310 단계). 즉, 상기 제 1 부트로더(FBL)는 상기 제 2 부팅정보와 상기 메시지 인증 코드(MAC)를 비트 단위로 베타적 논리합 연산을 한다. 상기 테스트 비밀키(SDK_T)는 외부 메모리(250)에 저장된 값이 변화되지 않았을 경우에 아래와 같이 수학식 1로 표현할 수 있다.
Figure 112007051295014-PAT00002
상기 제 1 부트로더(FBL)는 상기 테스트 비밀키(SDK_T)와 외부 메모리(250)에 저장된 상기 공개키를 이용하여 테스트 메시지 인증 코드(MAC_T)를 생성한다(S320 단계). 즉, 상기 제 1 부트로더(FBL)는 앞서 설명한 것과 유사하게 상기 공개키를 입력으로 하고 상기 테스트 비밀키(SDK_T)를 키(key)로 하여 상기 테스트 메시지 인증 코드(MAC_T)를 생성한다. 테스트 메시지 인증 코드(MAC_T)는 아래와 같이 수학식 2로 표현할 수 있다.
Figure 112007051295014-PAT00003
상기 제 1 부트로더(FBL)는 상기 테스트 메시지 인증 코드(MAC_T)와 외부 메모리(250)에 저장된 상기 메시지 인증 코드(MAC)가 동일한지 비교한다(S330 단계). 상기 비교 결과, 상기 테스트 메시지 인증 코드(MAC_T)와 상기 메시지 인증 코드(MAC)가 동일하지 않은 경우, 상기 테스트 비밀키(SDK_T)는 상기 비밀키(SDK)와 동일하지 않다고 판단된 것이므로 상기 제 1 부트로더(FBL)는 현재 진행 중인 부팅 과정을 종료하도록 반도체 메모리 시스템(200)을 제어한다(S340 단계).
상기 비교 결과, 상기 테스트 메시지 인증 코드(MAC_T)와 상기 메시지 인증 코드(MAC)가 동일한 경우, 상기 테스트 비밀키(SDK_T)는 상기 비밀키(SDK)와 동일하다고 판단된 것으로 상기 제 1 부트로더(FBL)는 현재 진행 중인 부팅 과정을 계속 진행하도록 반도체 메모리 시스템(200)을 제어한다. 즉, 상기 테스트 메시지 인증 코드(MAC_T)와 상기 메시지 인증 코드(MAC)가 동일한 경우, 상기 제 1 부트로더(FBL)는 상기 공개키를 이용한 상기 제 2 부트로더 전자서명의 검증을 통하여 상기 제 2 부트로더(SBL)의 무결성을 검증한다(S350 단계). 상기 제 2 부트로더(SBL)의 검증이 실패한 경우 현재 진행 중인 부팅 과정을 종료한다(S340 단계).
상기 제 2 부트로더(SBL)의 검증이 성공한 경우, 상기 제 2 부트로더(SBL)는 상기 공개키를 이용한 상기 커널 전자서명의 검증을 통하여 상기 커널의 무결성을 검증한다(S360 단계). 상기 커널의 검증이 실패한 경우 현재 진행 중인 부팅 과정을 종료한다(S340 단계). 상기 커널의 검증이 성공한 경우, 상기 커널을 실행한다(S370 단계).
상기 커널의 일부 영역 또는 전체 영역이 상기 비밀키(SDK)에 의하여 암호화 된 경우, 상기 커널을 실행할 때 상기 비밀키(SDK)를 이용하여 상기 커널의 일부 영역 또는 전체 영역을 복호화한다. 이 경우, 제 1 부트로더(FBL)에서 생성한 테스트 비밀키(SDK_T)는 상기 비밀키(SDK)와 동일하다는 것은 알고 있기 때문에, 상기 테스트 비밀키(SDK_T)를 사용하면 된다. 만약, 상기 커널의 일부 영역 또는 전체 영역이 상기 제 2 비밀키(SDK_2)에 의하여 암호화된 경우, 상기 커널을 실행할 때 상기 제 2 비밀키(SDK_2)를 이용하여 상기 커널의 일부 영역 또는 전체 영역을 복호화한다. 이 경우, 제 1 부트로더(FBL)에서 생성한 테스트 비밀키(SDK_T)는 상기 비밀키(SDK)와 동일하고 상기 제 2 비밀키(SDK_2)는 상기 비밀키(SDK)로 암호화되어 있으므로, 상기 테스트 비밀키(SDK_T)를 이용하여 복호화한 제 2 비밀키(SDK_2)를 사용하면 된다.
외부 메모리(250)가 상기 커널의 무결성 검증 시 사용되는 상기 제 2 공개키를 더 구비하는 경우가 있다. 이 경우, 상기 제 2 부트로더(SBL)는 상기 제 2 공개키를 이용한 상기 커널 전자서명의 검증을 통하여 상기 커널의 무결성을 검증한다(S360 단계). 상기 커널의 검증이 실패한 경우 현재 진행 중인 부팅 과정을 종료한다(S340 단계). 상기 커널의 검증이 성공한 경우, 상기 커널을 실행한다(S370 단계).
도 4는 본 발명의 다른 실시예에 따른 반도체 메모리 시스템(400)의 블록도이다.
도 4를 참조하면, 반도체 메모리 시스템(400)은 내부 메모리(420), OTP 메모리(430) 및 외부 메모리(450)를 구비할 수 있다. 외부 메모리(250)는 공개 키(public key), 제 1 부팅정보, 제 2 부트로더(SBL), 제 2 부트로더 전자서명(digital signature), 커널(kernel) 및 커널 전자서명을 포함할 수 있다.
이하에서, 상기 제 1 부팅정보는 상기 비밀키를 이용하여 생성된 값인 비밀키 해시값(hash value)을 의미한다. 도 2의 외부 메모리(250)와 비교하면, 외부 메모리(450)의 상기 제 1 부팅정보가 메시지 인증 코드(MAC) 대신에 상기 비밀키 해시값이 포함되는 것을 제외하고 동일한 정보를 포함한다. 따라서, 상기 비밀키 해시값에 대하여만 설명하고 나머지 정보들에 대하여는 설명을 생략한다. 이하에서, 상기 비밀키 해시값은 상기 비밀키(SDK)를 해싱(hashing)한 값인 것으로 예를 들어 설명하고, h(SDK)로 표현한다. 상기 해시(hash)란 데이터를 저장하고 찾을 때 사용되는 자료 구조의 한 종류로서, 찾고자 하는 문자열을 특정한 해시 함수(hash function)로 처리하여 얻은 값으로 데이터의 위치를 찾는 방법을 의미한다.
OTP 메모리(430)는 상기 공개키와 상기 비밀키(SDK)를 이용하여 생성된 제 2 부팅정보를 포함한다. 이하에서, 상기 제 2 부팅정보는 상기 공개키와 상기 비밀키(SDK)를 해싱한 값을 접합(concatenation)한 후 해싱한 값과 상기 비밀키를 비트 단위로 베타적 논리합(exclusive or) 연산을 한 값인 것으로 예로 들어 설명하고,
Figure 112007051295014-PAT00004
로 표현한다. 상기 공개키와 상기 비밀키(SDK)를 해싱한 값을 접합(concatenation)한 후 해싱한 값은 상기 비밀키(SDK)와 비트 단위로 베타적 논리합 연산을 하므로, 상기 공개키와 상기 비밀키(SDK)를 해싱한 값을 접합(concatenation)한 후 해싱한 값의 비트수는 상기 비밀키(SDK)의 비트수와 동일한 것이 바람직하다.
내부 메모리(420)는 도 2의 경우와 동일하게 제 1 부트로더(FBL)를 포함하고 있으므로 상세한 설명은 생략한다. 상기 제 1 부트로더(FBL)의 동작에 관하여는 도 5에서 상세히 설명한다.
도 5는 도 4의 반도체 메모리 시스템(400)의 보안 부팅 방법의 흐름도이다.
도 4 및 도 5를 참조하면, 상기 제 1 부트로더(FBL)는 OTP 메모리(430)에 저장된 상기 제 2 부팅정보 및 외부 메모리(450)에 저장된 상기 비밀키 해시값을 이용하여 테스트 비밀키(SDK_T)를 생성한다(S510 단계). 즉, 상기 제 1 부트로더(FBL)는 상기 비밀키 해시값과 상기 공개키를 접합한 후 해싱한 값과 상기 제 2 부팅정보를 비트 단위로 베타적 논리합 연산을 한다. 테스트 비밀키(SDK_T)는 아래와 같이 수학식 3으로 표현할 수 있다.
Figure 112007051295014-PAT00005
상기 제 1 부트로더(FBL)는 상기 테스트 비밀키(SDK_T)를 이용하여 테스트 해시값(Hash_T)을 생성한다(S520 단계). 즉, 상기 제 1 부트로더(FBL)는 상기 테스트 비밀키(SDK_T)를 해싱하여 상기 테스트 해시값(Hash_T)을 생성한다. 상기 테스트 해시값(Hash_T)은 아래와 같이 수학식 4로 표현할 수 있다.
Figure 112007051295014-PAT00006
상기 제 1 부트로더(FBL)는 상기 테스트 해시값(Hash_T)과 외부 메모리(450) 에 저장된 상기 비밀키 해시값이 동일한지 비교한다(S530 단계). 상기 비교 결과, 상기 테스트 해시값(Hash_T)과 상기 비밀키 해시값이 동일하지 않은 경우, 상기 테스트 비밀키(SDK_T)는 상기 비밀키(SDK)와 동일하지 않다고 판단된 것이므로 상기 제 1 부트로더(FBL)는 현재 진행 중인 부팅 과정을 종료하도록 반도체 메모리 시스템(500)을 제어한다(S540 단계).
상기 비교 결과, 상기 테스트 해시값(Hash_T)과 상기 비밀키 해시값이 동일한 경우, 상기 테스트 비밀키(SDK_T)는 상기 비밀키(SDK)와 동일하다고 판단된 것으로 상기 제 1 부트로더(FBL)는 현재 진행 중인 부팅 과정을 계속 진행하도록 반도체 메모리 시스템(500)을 제어한다. 즉, 상기 테스트 해시값(Hash_T)과 상기 비밀키 해시값이 동일한 경우, 상기 제 1 부트로더(FBL)는 상기 공개키를 이용한 상기 제 2 부트로더 전자서명의 검증을 통하여 상기 제 2 부트로더(SBL)의 무결성을 검증한다(S550 단계). 이하, S550 단계 내지 S570 단계는 도 3의 S350 단계 내지 S370 단계와 동일하므로 이하에서는 설명을 생략한다.
도 6(a)는 종래 기술에 따른 OTP 메모리를 도시한 도면이고, 도 6(b)는 도 2 또는 도 4의 반도체 메모리 시스템(200, 400)의 OTP 메모리(230, 430)를 도시한 도면이다.
도 6(a) 및 도 6(b)를 참조하면, 본 발명에서 사용하는 상기 제 2 부팅정보 및 OTP 메모리를 사용하여 종래 기술에 따라 보안 부팅을 하기 위해서는, 상기 OTP 메모리에는 상기 제 2 부팅정보뿐 아니라 상기 비밀키도 저장하여야 한다. 그러나, 본 발명의 도 2 및 도 3 또는 도 4 및 도 5의 실시예에 따를 경우, OTP 메모 리(230, 430)에는 상기 제 2 부팅정보만 저장하면 된다. 본 발명의 반도체 메모리 시스템(200, 400)은 OTP 메모리(230, 430)에 저장된 상기 제 2 부팅정보와 외부 메모리(250, 450)에 저장된 상기 메시지 인증 코드(MAC)를 이용하여 상기 비밀키(SDK)를 생성할 수 있기 때문이다.
본 발명에 따른 보안 부팅 방법을 안전하게 수행하기 위하여는, 상기 비밀키를 일반 응용프로그램이 알 수 없어야 한다. 이를 위하여 두 가지 방법을 예시적으로 설명한다. 첫 번째는 상기 비밀키를 일반 응용프로그램이 알 수 없도록 전용 하드웨어를 구성하는 것이다, 즉, 상기 하드웨어는 평상시에는 상기 OTP 메모리의 접근을 제한하고, 부팅 과정 동안에만 상기 OTP 메모리의 접근이 가능하도록 할 수 있다. 또 다른 방법으로 소프트웨어를 이용하여 상기 OTP 메모리와 상기 비밀키를 보호하는 것이다. 즉, 상기 커널에 가상 주소 체계를 설정하여 응용프로그램이 직접 접근하지 못하게 함으로써, 상기 커널은 응용프로그램이 상기 OTP 메모리를 읽을 수 없도록 할 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시예에 따른 반도체 메모리 시스템의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 반도체 메모리 시스템의 블록도이다.
도 3은 도 2의 반도체 메모리 시스템의 보안 부팅 방법의 흐름도이다.
도 4는 본 발명의 다른 실시예에 따른 반도체 메모리 시스템의 블록도이다.
도 5는 도 4의 반도체 메모리 시스템의 보안 부팅 방법의 흐름도이다.
도 6(a)는 종래 기술에 따른 OTP 메모리를 도시한 도면이다.
도 6(b)는 도 2 또는 도 4의 반도체 메모리 시스템의 OTP 메모리를 도시한 도면이다.

Claims (40)

  1. 커널(kernel), 공개키, 상기 공개키를 인증하고 테스트 비밀키를 생성하는데 사용되는 제 1 부팅정보 및 상기 커널의 무결성을 검증하는 제 2 부트로더를 포함하는 외부 메모리;
    상기 제 2 부트로더의 무결성을 검증하고 상기 테스트 비밀키를 생성하는 제 1 부트로더를 포함하는 내부 메모리; 및
    상기 공개키와 비밀키를 이용하여 생성된 제 2 부팅정보를 포함하는 OTP 메모리(One-time Programmable memory)를 구비하는 것을 특징으로 하는 반도체 메모리 시스템.
  2. 제1항에 있어서, 상기 제 1 부트로더는,
    상기 외부 메모리의 제 1 부팅정보와 상기 OTP 메모리의 제 2 부팅정보를 이용하여 상기 테스트 비밀키를 생성하는 것을 특징으로 하는 반도체 메모리 시스템.
  3. 제1항에 있어서, 상기 제 1 부팅정보는,
    상기 공개키와 상기 비밀키를 이용하여 생성된 메시지 인증 코드(Message Authentication Code)이고,
    상기 제 2 부팅정보는,
    상기 공개키와 상기 비밀키를 이용하여 생성된 메시지 인증 코드와 상기 비 밀키를 비트 단위로 베타적 논리합(exclusive or) 연산을 한 정보인 것을 특징으로 하는 반도체 메모리 시스템.
  4. 제3항에 있어서, 상기 제 1 부트로더는,
    상기 OTP 메모리의 제 2 부팅정보와 상기 외부 메모리의 메시지 인증 코드를 베타적 논리합 연산을 하여 테스트 비밀키를 생성하는 것을 특징으로 하는 반도체 메모리 시스템.
  5. 제4항에 있어서, 상기 제 1 부트로더는,
    상기 테스트 비밀키와 상기 공개키를 이용하여 테스트 메시지 인증 코드를 생성하고, 상기 테스트 메시지 인증 코드와 상기 외부 메모리에 저장된 메시지 인증 코드가 동일하지 않은 경우 상기 반도체 메모리 시스템이 부팅을 종료하도록 제어하는 것을 특징으로 하는 반도체 메모리 시스템.
  6. 제4항에 있어서, 상기 제 1 부트로더는,
    상기 테스트 비밀키와 상기 공개키를 이용하여 테스트 메시지 인증 코드를 생성하고, 상기 테스트 메시지 인증 코드와 상기 외부 메모리에 저장된 메시지 인증 코드가 동일한 경우 상기 반도체 메모리 시스템이 부팅을 계속하도록 제어하는 것을 특징으로 하는 반도체 메모리 시스템.
  7. 제1항에 있어서, 상기 제 1 부팅정보는,
    상기 비밀키를 해싱(hashing)한 값이고,
    상기 제 2 부팅정보는,
    상기 공개키와 상기 비밀키를 해싱한 값을 접합(concatenation)한 후 해싱한 값과 상기 비밀키를 비트 단위로 베타적 논리합(exclusive or) 연산을 한 값인 것을 특징으로 하는 반도체 메모리 시스템.
  8. 제7항에 있어서, 상기 제 1 부트로더는,
    상기 외부 메모리의 상기 공개키와 상기 제 1 부팅정보를 접합한 후 해싱한 값과 상기 OTP 메모리의 제 2 부팅정보를 베타적 논리합 연산을 하여 상기 테스트 비밀키를 생성하는 것을 특징으로 하는 반도체 메모리 시스템.
  9. 제8항에 있어서, 상기 제 1 부트로더는,
    상기 테스트 비밀키를 해싱하여 테스트 해시값을 생성하고, 상기 테스트 해시값과 상기 외부 메모리에 저장된 상기 제 1 부팅정보가 동일하지 않은 경우 부팅을 종료하도록 상기 반도체 메모리 시스템을 제어하는 것을 특징으로 하는 반도체 메모리 시스템.
  10. 제8항에 있어서, 상기 제 1 부트로더는,
    상기 테스트 비밀키를 해싱하여 테스트 해시값을 생성하고, 상기 테스트 해 시값과 상기 외부 메모리에 저장된 상기 제 1 부팅정보가 동일한 경우 부팅을 계속하도록 상기 반도체 메모리 시스템을 제어하는 것을 특징으로 하는 반도체 메모리 시스템.
  11. 제1항에 있어서, 상기 외부 메모리는,
    상기 제 2 부트로더에 대한 전자서명값인 제 2 부트로더 전자서명을 포함하고,
    상기 제 1 부트로더는,
    상기 공개키를 이용한 상기 제 2 부트로더 전자서명의 검증을 통하여 상기 제 2 부트로더의 무결성을 검증하는 것을 특징으로 하는 반도체 메모리 시스템.
  12. 제1항에 있어서, 상기 외부 메모리는,
    상기 커널에 대한 전자서명값인 커널 전자서명을 포함하고,
    상기 제 2 부트로더는,
    상기 공개키를 이용한 상기 커널 전자서명의 검증을 통하여 상기 커널의 무결성을 검증하는 것을 특징으로 하는 반도체 메모리 시스템.
  13. 커널(kernel), 공개키, 상기 공개키와 비밀키를 이용하여 생성된 메시지 인증 코드(Message Authentication Code) 및 상기 커널의 무결성을 검증하는 제 2 부트로더를 포함하는 외부 메모리;
    상기 제 2 부트로더의 무결성을 검증하는 제 1 부트로더를 포함하는 내부 메모리; 및
    상기 메시지 인증 코드와 상기 비밀키를 이용하여 생성된 부팅정보를 포함하는 OTP 메모리(One-time Programmable memory)를 구비하는 것을 특징으로 하는 반도체 메모리 시스템.
  14. 제13항에 있어서, 상기 제 1 부트로더는,
    상기 OTP 메모리의 부팅정보와 상기 외부 메모리의 메시지 인증 코드를 이용하여 테스트 비밀키를 생성하는 것을 특징으로 하는 반도체 메모리 시스템.
  15. 제14항에 있어서, 상기 제 1 부트로더는,
    상기 테스트 비밀키와 상기 공개키를 이용하여 테스트 메시지 인증 코드를 생성하고, 상기 테스트 메시지 인증코드가 상기 외부 메모리에 저장된 메시지 인증 코드와 동일하지 않은 경우 상기 반도체 메모리 시스템이 부팅을 종료하도록 제어하는 것을 특징으로 하는 반도체 메모리 시스템.
  16. 제14항에 있어서, 상기 제 1 부트로더는,
    상기 테스트 비밀키와 상기 공개키를 이용하여 테스트 메시지 인증 코드를 생성하고, 상기 테스트 메시지 인증코드가 상기 외부 메모리에 저장된 메시지 인증 코드와 동일한 경우 상기 반도체 메모리 시스템이 부팅을 계속하도록 제어하는 것 을 특징으로 하는 반도체 메모리 시스템.
  17. 제13항에 있어서, 상기 부팅정보는,
    상기 메시지 인증 코드와 상기 비밀키를 비트 단위로 베타적 논리합(exclusive or) 연산을 한 정보인 것을 특징으로 하는 반도체 메모리 시스템.
  18. 커널(kernel), 공개키, 비밀키를 이용하여 생성된 비밀키 해시값(hash value) 및 상기 커널의 무결성을 검증하는 제 2 부트로더를 포함하는 외부 메모리;
    상기 제 2 부트로더의 무결성을 검증하는 제 1 부트로더를 포함하는 내부 메모리; 및
    상기 공개키와 상기 비밀키를 이용하여 생성된 부팅정보를 포함하는 OTP 메모리(One-time Programmable memory)를 구비하는 것을 특징으로 하는 반도체 메모리 시스템.
  19. 제18항에 있어서, 상기 제 1 부트로더는,
    상기 OTP 메모리의 부팅정보와 상기 외부 메모리의 비밀키 해시값을 이용하여 테스트 비밀키를 생성하는 것을 특징으로 하는 반도체 메모리 시스템.
  20. 제19항에 있어서, 상기 제 1 부트로더는,
    상기 테스트 비밀키를 이용하여 테스트 해시값을 생성하고, 상기 테스트 해 시값과 상기 외부 메모리에 저장된 비밀키 해시값이 동일하지 않은 경우 상기 반도체 메모리 시스템의 부팅을 종료하도록 제어하는 것을 특징으로 하는 반도체 메모리 시스템.
  21. 제19항에 있어서, 상기 제 1 부트로더는,
    상기 테스트 비밀키를 이용하여 테스트 해시값을 생성하고, 상기 테스트 해시값과 상기 외부 메모리에 저장된 비밀키 해시값이 동일한 경우 상기 반도체 메모리 시스템의 부팅을 계속하도록 제어하는 것을 특징으로 하는 반도체 메모리 시스템.
  22. 제18항에 있어서, 상기 비밀키 해시값은,
    상기 비밀키를 해싱(hashing)한 값이고,
    상기 부팅정보는,
    상기 공개키와 상기 비밀키를 해싱한 값을 접합(concatenation)한 후 해싱한 값과 상기 비밀키를 비트 단위로 베타적 논리합(exclusive or) 연산을 한 값인 것을 특징으로 하는 반도체 메모리 시스템.
  23. 공개키, 상기 공개키와 비밀키를 이용하여 생성된 메시지 인증 코드(Message Authentication Code) 및 상기 메시지 인증 코드와 비밀키를 이용하여 생성된 부팅정보를 구비하는 반도체 메모리 시스템의 보안 부팅 방법에 있어서,
    상기 부팅정보 및 상기 메시지 인증 코드를 이용하여 테스트 비밀키를 생성하는 단계;
    상기 테스트 비밀키 및 상기 공개키를 이용하여 테스트 메시지 인증 코드를 생성하는 단계;
    상기 테스트 메시지 인증 코드와 상기 메시지 인증 코드를 비교하는 단계;
    상기 비교 결과, 상기 테스트 메시지 인증 코드와 상기 메시지 인증 코드가 동일하지 않은 경우 부팅을 종료하는 단계; 및
    상기 비교 결과, 상기 테스트 메시지 인증 코드와 상기 메시지 인증 코드가 동일한 경우 부팅을 계속 하는 단계를 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  24. 제23항에 있어서, 상기 부팅정보는,
    상기 메시지 인증 코드와 상기 비밀키를 비트 단위로 베타적 논리합(exclusive or) 연산을 한 정보이고,
    상기 테스트 비밀키를 생성하는 단계는,
    상기 부팅정보와 상기 메시지 인증 코드를 베타적 논리합 연산을 하여 상기 테스트 비밀키를 생성하는 단계인 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  25. 제23항에 있어서, 상기 반도체 메모리 시스템은,
    커널(kernel), 상기 커널에 대한 전자서명값인 커널 전자서명, 상기 커널의 무결성을 검증하는 제 2 부트로더, 상기 제 2 부트로더에 대한 전자서명값인 제 2 부트로더 전자서명 및 상기 제 2 부트로더의 무결성을 검증하는 제 1 부트로더를 더 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  26. 제25항에 있어서, 상기 부팅을 계속하는 단계는,
    상기 공개키를 이용한 상기 제 2 부트로더 전자서명의 검증을 통하여 제 2 부트로더의 무결성을 검증하는 단계;
    상기 제 2 부트로더의 검증이 실패한 경우 상기 부팅을 종료하는 단계; 및
    상기 제 2 부트로더의 검증이 성공한 경우 상기 부팅을 계속하는 단계를 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  27. 제26항에 있어서, 상기 제 2 부트로더의 검증이 성공한 경우 상기 부팅을 계속하는 단계는,
    상기 공개키를 이용한 상기 커널 전자서명의 검증을 통하여 커널의 무결성을 검증하는 단계;
    상기 커널의 검증이 실패한 경우 상기 부팅을 종료하는 단계; 및
    상기 커널의 검증이 성공한 경우 상기 커널을 실행하는 단계를 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  28. 제27항에 있어서, 상기 커널을 실행하는 단계는,
    상기 커널의 일부 영역 또는 전체 영역이 상기 비밀키에 의하여 암호화된 경우, 상기 비밀키를 이용하여 상기 커널의 일부 영역 또는 전체 영역을 복호화하는 단계를 더 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  29. 제27항에 있어서, 상기 커널을 실행하는 단계는,
    상기 커널의 일부 영역 또는 전체 영역이 제 2 비밀키에 의하여 암호화된 경우, 상기 비밀키를 이용하여 상기 제 2 비밀키를 생성하는 단계; 및
    상기 제 2 비밀키를 이용하여 상기 커널의 일부 영역 또는 전체 영역을 복호화하는 단계를 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  30. 제27항에 있어서, 상기 제 2 부트로더의 검증이 성공한 경우 상기 부팅을 계속하는 단계는,
    상기 반도체 메모리 시스템이 상기 커널의 무결성 검증 시 사용되는 제 2 공개키를 더 구비하는 경우, 상기 제 2 공개키를 이용한 상기 커널 전자서명의 검증을 통하여 커널의 무결성을 검증하는 단계;
    상기 커널의 검증이 실패한 경우 상기 부팅을 종료하는 단계; 및
    상기 커널의 검증이 성공한 경우 상기 커널을 실행하는 단계를 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  31. 공개키, 비밀키를 이용하여 생성된 비밀키 해시값(hash value) 및 상기 공개키와 상기 비밀키를 이용하여 생성된 부팅정보를 구비하는 반도체 메모리 시스템의 보안 부팅 방법에 있어서,
    상기 비밀키 해시값 및 상기 부팅정보를 이용하여 테스트 비밀키를 생성하는 단계;
    상기 테스트 비밀키를 이용하여 테스트 해시값을 생성하는 단계;
    상기 테스트 해시값과 상기 비밀키 해시값을 비교하는 단계;
    상기 비교 결과, 상기 테스트 해시값과 상기 비밀키 해시값이 동일하지 않은 경우 부팅을 종료하는 단계; 및
    상기 비교 결과, 상기 테스트 해시값과 상기 비밀키 해시값이 동일한 경우 부팅을 계속 하는 단계를 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  32. 제31항에 있어서, 상기 비밀키 해시값은,
    상기 비밀키를 해싱(hashing)한 값이고,
    상기 부팅정보는,
    상기 공개키와 상기 비밀키 해시값을 접합(concatenation)한 후 해싱한 값과 상기 비밀키를 비트 단위로 베타적 논리합(exclusive or) 연산을 한 값인 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  33. 제32항에 있어서, 상기 테스트 비밀키를 생성하는 단계는,
    상기 공개키와 상기 비밀키 해시값을 접합한 후 해싱하는 단계; 및
    상기 해싱한 값과 상기 부팅정보를 베타적 논리합 연산을 하여 상기 테스트 비밀키를 생성하는 단계를 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  34. 제32항에 있어서, 상기 테스트 해시값을 생성하는 단계는,
    상기 테스트 비밀키를 해싱하여 상기 테스트 해시값을 생성하는 단계인 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  35. 제31항에 있어서, 상기 반도체 메모리 시스템은,
    커널(kernel), 상기 커널에 대한 전자서명값인 커널 전자서명, 상기 커널의 무결성을 검증하는 제 2 부트로더, 상기 제 2 부트로더에 대한 전자서명값인 제 2 부트로더 전자서명 및 상기 제 2 부트로더의 무결성을 검증하는 제 1 부트로더를 더 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  36. 제35항에 있어서, 상기 부팅을 계속하는 단계는,
    상기 공개키를 이용한 상기 제 2 부트로더 전자서명의 검증을 통하여 제 2 부트로더의 무결성을 검증하는 단계;
    상기 제 2 부트로더의 검증이 실패한 경우 상기 부팅을 종료하는 단계; 및
    상기 제 2 부트로더의 검증이 성공한 경우 상기 부팅을 계속하는 단계를 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  37. 제36항에 있어서, 상기 제 2 부트로더의 검증이 성공한 경우 상기 부팅을 계속하는 단계는,
    상기 공개키를 이용한 상기 커널 전자서명의 검증을 통하여 커널의 무결성을 검증하는 단계;
    상기 커널의 검증이 실패한 경우 상기 부팅을 종료하는 단계; 및
    상기 커널의 검증이 성공한 경우 상기 커널을 실행하는 단계를 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  38. 제37항에 있어서, 상기 커널을 실행하는 단계는,
    상기 커널의 일부 영역 또는 전체 영역이 상기 비밀키에 의하여 암호화된 경우, 상기 비밀키를 이용하여 상기 커널의 일부 영역 또는 전체 영역을 복호화하는 단계를 더 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  39. 제37항에 있어서, 상기 커널을 실행하는 단계는,
    상기 커널의 일부 영역 또는 전체 영역이 제 2 비밀키에 의하여 암호화된 경우, 상기 비밀키를 이용하여 상기 제 2 비밀키를 생성하는 단계; 및
    상기 제 2 비밀키를 이용하여 상기 커널의 일부 영역 또는 전체 영역을 복호화하는 단계를 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
  40. 제36항에 있어서, 상기 제 2 부트로더의 검증이 성공한 경우 상기 부팅을 계속하는 단계는,
    상기 반도체 메모리 시스템이 상기 커널의 무결성 검증 시 사용되는 제 2 공개키를 더 구비하는 경우, 상기 제 2 공개키를 이용한 상기 커널 전자서명의 검증을 통하여 커널의 무결성을 검증하는 단계;
    상기 커널의 검증이 실패한 경우 상기 부팅을 종료하는 단계; 및
    상기 커널의 검증이 성공한 경우 상기 커널을 실행하는 단계를 구비하는 것을 특징으로 하는 반도체 메모리 시스템의 보안 부팅 방법.
KR1020070070778A 2007-07-13 2007-07-13 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템 KR101393307B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070070778A KR101393307B1 (ko) 2007-07-13 2007-07-13 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템
US12/145,102 US8443203B2 (en) 2007-07-13 2008-06-24 Secure boot method and semiconductor memory system using the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070070778A KR101393307B1 (ko) 2007-07-13 2007-07-13 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템

Publications (2)

Publication Number Publication Date
KR20090007123A true KR20090007123A (ko) 2009-01-16
KR101393307B1 KR101393307B1 (ko) 2014-05-12

Family

ID=40254112

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070070778A KR101393307B1 (ko) 2007-07-13 2007-07-13 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템

Country Status (2)

Country Link
US (1) US8443203B2 (ko)
KR (1) KR101393307B1 (ko)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914627B2 (en) 2011-02-11 2014-12-16 Samsung Electronics Co., Ltd. Method for generating a secured boot image including an update boot loader for a secured update of the version information
US9298612B2 (en) 2012-11-20 2016-03-29 Samsung Electronics Co., Ltd. Semiconductor memory device and computer system including the same
KR101678793B1 (ko) * 2015-10-07 2016-11-22 (주)에이티솔루션즈 보안운영체제를 통한 앱 무결성 검증 방법
KR20180007717A (ko) * 2016-07-13 2018-01-24 (주)이더블유비엠 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법
US9881161B2 (en) 2012-12-06 2018-01-30 S-Printing Solution Co., Ltd. System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
KR20180059742A (ko) * 2018-05-28 2018-06-05 (주)이더블유비엠 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법
KR20200032920A (ko) * 2018-09-19 2020-03-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
WO2020096345A1 (ko) * 2018-11-07 2020-05-14 시큐리티플랫폼 주식회사 시큐어 부팅 장치 및 방법

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131995B2 (en) * 2006-01-24 2012-03-06 Vixs Systems, Inc. Processing feature revocation and reinvocation
US20100161975A1 (en) * 2008-12-19 2010-06-24 Vixs Systems, Inc. Processing system with application security and methods for use therewith
CN102830986A (zh) * 2011-06-17 2012-12-19 中兴通讯股份有限公司 一种在双boot程序环境下启动系统的方法和装置
US20140164753A1 (en) * 2012-12-06 2014-06-12 Samsung Electronics Co., Ltd System on chip for performing secure boot, image forming apparatus using the same, and method thereof
KR20150008546A (ko) * 2013-07-15 2015-01-23 삼성전자주식회사 보안 다운로드 및 기능 실행방법 및 장치
CN104573572B (zh) * 2013-10-25 2019-06-14 上海华力创通半导体有限公司 加密读写芯片标识符的方法
US20150286823A1 (en) * 2014-04-07 2015-10-08 Qualcomm Incorporated System and method for boot sequence modification using chip-restricted instructions residing on an external memory device
US9195831B1 (en) 2014-05-02 2015-11-24 Google Inc. Verified boot
US9830479B2 (en) * 2014-09-16 2017-11-28 Nxp Usa, Inc. Key storage and revocation in a secure memory system
US10191811B2 (en) * 2015-08-13 2019-01-29 Quanta Computer Inc. Dual boot computer system
KR102617354B1 (ko) 2017-01-05 2023-12-26 삼성전자주식회사 보안 부트 시퀀서 및 보안 부트 장치
KR102518881B1 (ko) * 2017-01-09 2023-04-05 삼성전자주식회사 반도체 장치의 동작 방법
DE102017212618B3 (de) 2017-07-21 2018-12-13 Bundesdruckerei Gmbh Hardwaresystem mit Blockchain
US10657260B2 (en) * 2017-09-19 2020-05-19 Sling Media Pvt Ltd Electronic devices and methods supporting unsecured system-on-chip secure boot functionalities
CN108388817A (zh) * 2018-01-31 2018-08-10 上海集成电路研发中心有限公司 加密读写芯片标识符的方法
CN108388816A (zh) * 2018-01-31 2018-08-10 上海集成电路研发中心有限公司 一种加密读写芯片标识符的方法
CN108280373A (zh) * 2018-01-31 2018-07-13 上海集成电路研发中心有限公司 加密读写芯片标识符的方法
US11714910B2 (en) * 2018-06-13 2023-08-01 Hewlett Packard Enterprise Development Lp Measuring integrity of computing system
KR102499614B1 (ko) 2018-10-30 2023-02-13 삼성전자주식회사 호스트 장치, 저장 장치, 이들을 포함하는 vuc 인증 시스템 및 vuc 인증 방법
WO2021080586A1 (en) * 2019-10-24 2021-04-29 Hewlett-Packard Development Company, L.P. Authentication of write requests
US11385902B2 (en) * 2019-11-17 2022-07-12 Nuvoton Technology Corporation Secure firmware management with hierarchical boot sequence using last known good firmware
KR20210089485A (ko) 2020-01-08 2021-07-16 삼성전자주식회사 소프트웨어의 인증을 위한 장치 및 방법
CN111309512B (zh) * 2020-01-16 2024-01-02 广东九联科技股份有限公司 一种物联网设备及其高安加密方法、存储介质
US20220070004A1 (en) * 2020-08-26 2022-03-03 Micron Technology, Inc. Memory write access control
US11593488B2 (en) * 2020-10-28 2023-02-28 Ares Technologies, Inc. Systems and methods for a cryptographic agile bootloader for upgradable secure environment

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE441897T1 (de) * 1995-02-13 2009-09-15 Intertrust Tech Corp Systeme und verfahren zur verwaltung von gesicherten transaktionen und zum schutz von elektronischen rechten
US5999629A (en) * 1995-10-31 1999-12-07 Lucent Technologies Inc. Data encryption security module
KR100431081B1 (ko) 2001-07-02 2004-05-12 한국전자통신연구원 보안모듈 및 그의 이용 방법
US20030115471A1 (en) 2001-12-19 2003-06-19 Skeba Kirk W. Method and apparatus for building operational radio firmware using incrementally certified modules
US20040025027A1 (en) * 2002-07-30 2004-02-05 Eric Balard Secure protection method for access to protected resources in a processor
EP1429224A1 (en) * 2002-12-10 2004-06-16 Texas Instruments Incorporated Firmware run-time authentication
US7142891B2 (en) * 2003-10-10 2006-11-28 Texas Instruments Incorporated Device bound flashing/booting for cloning prevention
US20060101310A1 (en) * 2004-10-22 2006-05-11 Nimrod Diamant Device, system and method for verifying integrity of software programs
JP2007094879A (ja) * 2005-09-29 2007-04-12 Toshiba Corp オペレーティングシステム用基本プログラムの認証システム、これに用いるコンピュータ、およびコンピュータプログラム
US8239686B1 (en) * 2006-04-27 2012-08-07 Vudu, Inc. Method and system for protecting against the execution of unauthorized software
US20080148001A1 (en) * 2006-12-14 2008-06-19 Telefonaktiebolaget L M Ericsson (Publ) Virtual Secure On-Chip One Time Programming

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914627B2 (en) 2011-02-11 2014-12-16 Samsung Electronics Co., Ltd. Method for generating a secured boot image including an update boot loader for a secured update of the version information
US9298612B2 (en) 2012-11-20 2016-03-29 Samsung Electronics Co., Ltd. Semiconductor memory device and computer system including the same
US9881161B2 (en) 2012-12-06 2018-01-30 S-Printing Solution Co., Ltd. System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
US10878098B2 (en) 2012-12-06 2020-12-29 Hewlett-Packard Development Company, L.P. System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
KR101678793B1 (ko) * 2015-10-07 2016-11-22 (주)에이티솔루션즈 보안운영체제를 통한 앱 무결성 검증 방법
KR20180007717A (ko) * 2016-07-13 2018-01-24 (주)이더블유비엠 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법
KR20180059742A (ko) * 2018-05-28 2018-06-05 (주)이더블유비엠 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법
KR20200032920A (ko) * 2018-09-19 2020-03-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
WO2020096345A1 (ko) * 2018-11-07 2020-05-14 시큐리티플랫폼 주식회사 시큐어 부팅 장치 및 방법
US11899795B2 (en) 2018-11-07 2024-02-13 Security Platform Inc. Secure boot device and process

Also Published As

Publication number Publication date
US8443203B2 (en) 2013-05-14
US20090019275A1 (en) 2009-01-15
KR101393307B1 (ko) 2014-05-12

Similar Documents

Publication Publication Date Title
KR101393307B1 (ko) 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템
WO2020192406A1 (zh) 数据存储、验证方法及装置
US10530576B2 (en) System and method for computing device with improved firmware service security using credential-derived encryption key
US8458480B2 (en) Method and apparatus for binding TPM keys to execution entities
KR100792287B1 (ko) 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치
EP3284000B1 (en) Secure software authentication and verification
US20090193211A1 (en) Software authentication for computer systems
US8392724B2 (en) Information terminal, security device, data protection method, and data protection program
JP2007512787A (ja) トラステッド・モバイル・プラットフォーム・アーキテクチャ
CN109445705B (zh) 固件认证方法及固态硬盘
CN110795126A (zh) 一种固件安全升级系统
CN109657479B (zh) 数据防泄漏方法及计算机可读存储介质
CN109814934B (zh) 数据处理方法、装置、可读介质和系统
US20120096280A1 (en) Secured storage device with two-stage symmetric-key algorithm
CN113722720B (zh) 一种系统启动方法及相关装置
US8499357B1 (en) Signing a library file to verify a callback function
CN112241523A (zh) 一种嵌入式计算机开机身份认证方法
JP2008160325A (ja) リムーバブル・デバイスを用いたユーザの認証方法およびコンピュータ
US20230273977A1 (en) Managing ownership of an electronic device
CN115062330B (zh) 基于tpm的智能密码钥匙密码应用接口的实现方法
JP2015026892A (ja) 情報処理システム
US11768963B2 (en) System and method for validating trust provisioning operation on system-on-chip
CN114065218B (zh) 一种SoC系统芯片安全启动方法
CN116738507B (zh) 一种芯片鉴权方法
CN107943721B (zh) 一种电子设备的数据加密方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170427

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180430

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 6