KR102240830B1 - 키 관리자를 포함하는 데이터 프로세싱 시스템 및 및 키 관리자의 동작 방법 - Google Patents

키 관리자를 포함하는 데이터 프로세싱 시스템 및 및 키 관리자의 동작 방법 Download PDF

Info

Publication number
KR102240830B1
KR102240830B1 KR1020140049450A KR20140049450A KR102240830B1 KR 102240830 B1 KR102240830 B1 KR 102240830B1 KR 1020140049450 A KR1020140049450 A KR 1020140049450A KR 20140049450 A KR20140049450 A KR 20140049450A KR 102240830 B1 KR102240830 B1 KR 102240830B1
Authority
KR
South Korea
Prior art keywords
key
manager
memory
user
user setting
Prior art date
Application number
KR1020140049450A
Other languages
English (en)
Other versions
KR20150027677A (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
Priority claimed from US14/251,120 external-priority patent/US9935768B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20150027677A publication Critical patent/KR20150027677A/ko
Application granted granted Critical
Publication of KR102240830B1 publication Critical patent/KR102240830B1/ko

Links

Images

Landscapes

  • Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)

Abstract

본 발명은 데이터 프로세싱 시스템에 관한 것이다. 본 발명의 데이터 프로세싱 시스템은, 메모리, 중앙 처리부, 그리고 키 관리자를 포함한다. 키 관리자는, 커맨드를 저장하는 제1 레지스터, 사용자 설정 값을 저장하는 제2 레지스터, 고유값을 출력하는 고유값 저장부, 그리고 커맨드에 응답하여, 사용자 설정 값 및 고유값을 이용하여 키를 생성하는 메인 컨트롤러로 구성된다. 고유값은 키 관리자의 외부로 출력되지 않고 키 관리자의 내부에서만 사용된다. 키 관리자는, 동일한 사용자 설정 값들을 이용하여 동일한 키들을 생성하고, 서로 다른 사용자 설정 값들을 이용하여 서로 다른 키들을 생성한다.

Description

키 관리자를 포함하는 데이터 프로세싱 시스템 및 및 키 관리자의 동작 방법{DATA PROCESSING SYSTEM INCLUDING KEY MANAGER AND OPERATING METHOD OF KEY MANAGER}
본 발명은 반도체 장치에 관한 것으로, 더 상세하게는 키 관리자를 포함하는 데이터 프로세싱 시스템 및 및 키 관리자의 동작 방법에 관한 것이다.
반도체 기술이 발전하면서, 개인용 컴퓨터, 노트북 컴퓨터, 스마트폰, 스마트패드 등과 같은 개인 전자 장치들의 성능이 고도화되고 있다. 개인 전자 장치들의 성능이 고도화되면서, 개인 전자 장치들에서 구동되는 콘텐츠의 종류가 다양해지고, 용량이 증가하고 있다.
개인 전자 장치들에서 구동되는 콘텐츠는 개인 정보를 포함할 수 있다. 예를 들어, 개인 전자 장치들은 메모, 일기 등과 같은 개인 정보, 공인인증서, 신용카드 결재정보 등과 같은 개인 금융 정보 등을 저장할 수 있다. 이러한 개인 정보가 개인 전자 장치의 분실, 해킹 등을 통해 유출되면, 금융 사고까지 초래될 수 있다.
개인 전자 장치들에서 구동되는 콘텐츠의 보안성을 향상시키기 위하여, 암호화 및 복호화 스킴이 사용될 수 있다. 암호화 및 복호화 스킴에 따르면, 개인 전자 장치들에 저장되는 데이터는 암호화된다. 개인 전자 장치가 데이터를 사용하고자 할 때, 암호화된 데이터는 복호화된다. 데이터를 암호화하여 저장함으로써, 개인 정보의 유출이 방지될 수 있다.
그러나, 기존의 암호화 및 복호화 스킴을 무력화할 수 있는 해킹 수단들이 발견되고 있다. 따라서, 해킹을 차단하고, 더 높은 수준의 보안성을 달성할 수 있는 암호화 및 복호화 스킴에 대한 요구가 지속적으로 증가하고 있다.
본 발명의 목적은, 향상된 보안성을 갖는 암호화 및 복호화를 위한 키를 관리하는 키 관리자를 포함하는 데이터 프로세싱 시스템 및 및 키 관리자의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 데이터 프로세싱 시스템은, 메모리; 상기 메모리를 제어하도록 구성되는 중앙 처리부; 그리고 상기 중앙 처리부의 제어에 따라 키를 관리하도록 구성되는 키 관리자를 포함하고, 상기 키 관리자는, 상기 중앙 처리부로부터 수신되는 커맨드를 저장하도록 구성되는 제1 레지스터; 상기 중앙 처리부로부터 수신되는 사용자 설정 값을 저장하도록 구성되는 제2 레지스터; 고유값을 출력하도록 구성되는 고유값 저장부; 그리고 상기 제1 레지스터에 저장된 상기 커맨드에 응답하여, 상기 제2 레지스터에 저장된 상기 사용자 설정 값 및 상기 고유값을 이용하여 상기 키를 생성하도록 구성되는 메인 컨트롤러를 포함하고, 상기 고유값은 상기 키 관리자의 외부로 출력되지 않고 상기 키 관리자의 내부에서만 사용되고, 상기 키 관리자는, 동일한 사용자 설정 값들을 이용하여 동일한 키들을 생성하고, 서로 다른 사용자 설정 값들을 이용하여 서로 다른 키들을 생성한다.
실시 예로서, 상기 메인 컨트롤러는, 상기 고유값 및 상기 사용자 설정 값을 이용하여 블록 암호화(block cipher) 또는 키 해시(key hash)를 수행하여 상기 키를 도출하도록 구성된다.
실시 예로서, 난수를 출력하도록 구성되는 난수 발생기를 더 포함하고, 상기 메인 컨트롤러는 상기 난수 발생기로부터 출력되는 상기 난수를 상기 키로 선택하도록 구성된다.
실시 예로서, 키 메모리를 더 포함하고, 상기 메인 컨트롤러는 상기 키로 선택된 상기 난수를 상기 사용자 설정 값과 연관하여 상기 키 메모리에 저장하도록 구성된다.
실시 예로서, 상기 메인 컨트롤러는, 상기 제1 레지스터에 저장된 상기 커맨드가 미리 생성된 키의 로딩을 요청하는 커맨드이고 상기 사용자 설정 값이 상기 키 메모리에 저장되어 있으면, 상기 사용자 설정 값에 대응하는 키를 상기 키 메모리로부터 출력하도록 구성된다.
실시 예로서, 상기 메인 컨트롤러는, 상기 제1 레지스터에 저장된 상기 커맨드가 미리 생성된 키의 백업을 요청하는 커맨드이고 상기 사용자 설정 값이 상기 키 메모리에 저장되어 있으면, 상기 사용자 설정 값에 대응하는 키를 상기 키 메모리로부터 읽어 백업하도록 구성된다.
실시 예로서, 상기 고유값을 이용하여 상기 사용자 설정 값 및 상기 키 메모리로부터 읽힌 키를 암호화하도록 구성되는 블록 암호화부를 더 포함하고, 상기 백업을 요청하는 커맨드에 응답하여, 상기 블록 암호화부에 의해 암호화된 데이터가 백업된다.
실시 예로서, 상기 사용자 설정 값 및 상기 키 메모리로부터 읽어진 상기 키의 해시를 생성하도록 구성되는 해시부를 더 포함하고, 상기 백업을 요청하는 커맨드에 응답하여, 상기 해시가 상기 키 메모리로부터 읽어진 상기 키와 함께 백업된다.
실시 예로서, 상기 제1 레지스터에 저장된 커맨드가 복원을 요청하는 커맨드일 때, 상기 해시부는 상기 제2 레지스터에 저장된 상기 사용자 설정 값 및 상기 백업된 키의 해시를 생성하도록 구성되고, 상기 백업된 해시 및 상기 생성된 해시가 동일할 때, 상기 백업된 키가 복원된다.
실시 예로서, 상기 사용자 설정 값은 상기 중앙 처리부에서 구동되는 어플리케이션들 별로 다르게 설정된다.
실시 예로서, 상기 사용자 설정 값은 상기 중앙 처리부에서 구동되는 어플리케이션들의 식별자(ID) 정보에 기반하여 생성되는 값이다.
실시 예로서, 상기 고유값 저장부는, 상기 고유값을 저장 및 출력하는 원-타임 프로그램(OTP, One-Time Program) 회로를 포함한다.
실시 예로서, 상기 고유값 저장부는, 상기 고유값을 저장 및 출력하는 전기퓨즈(electrical fuse)를 포함한다.
데이터를 암호화 또는 복호화하기 위한 키를 관리하는 본 발명의 실시 예에 따른 키 관리자의 동작 방법은, 키 요청 커맨드 및 사용자 설정 값을 수신하는 단계; 그리고 상기 키 요청 커맨드에 응답하여, 고유값 및 상기 사용자 설정 값을 이용하여 상기 키를 출력하는 단계를 포함하고, 상기 고유값은 상기 키 관리자의 외부로 출력되지 않고 상기 키 관리자의 내부에서만 사용되고, 동일한 사용자 설정 값들을 이용하여 동일한 키들이 생성되고, 서로 다른 사용자 설정 값들을 이용하여 서로 다른 키들이 생성된다.
실시 예로서, 상기 키를 출력하는 단계는, 상기 키 요청 커맨드가 제1 타입일 때, 제1 스킴에 따라 상기 키를 출력하고, 상기 키 요청 커맨드가 상기 제1 타입과 다른 제2 타입일 때, 상기 제1 스킴과 다른 제2 스킴에 따라 상기 키를 출력하는 단계를 포함하고, 동일한 사용자 설정 값들에 응답하여, 상기 제1 스킴에 따라 출력되는 키와 상기 제2 스킴에 따라 출력된다.
본 발명에 따르면, 사용자 설정 값 및 고유값을 이용하여 키가 생성된다. 고유값 및 키는 중앙 처리부에서 구동되는 어플리케이션에 의한 액세스가 허용되지 않는다. 따라서, 향상된 보안성을 갖는 키 관리자를 포함하는 데이터 프로세싱 시스템 및 및 키 관리자의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템을 보여주는 블록도이다.
도 2는 도 1의 키 관리자를 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 키 관리자의 동작 방법을 보여주는 순서도이다.
도 4는 커맨드를 분석하는 단계를 더 상세하게 보여주는 순서도이다.
도 5는 제1 스킴의 선택된 때의 키 관리자의 동작을 설명하기 위한 도면이다.
도 6은 제1 스킴의 예를 보여주는 순서도이다.
도 7은 제2 스킴의 제1 예를 보여주는 순서도이다.
도 8은 키 메모리의 예를 보여주는 블록도이다.
도 9는 제2 스킴의 제2 예를 보여주는 순서도이다.
도 10은 제2 스킴의 제3 예를 보여주는 순서도이다.
도 11은 제2 스킴의 제4 예를 보여주는 순서도이다.
도 12는 도 1의 데이터 프로세싱 시스템의 동작 방법의 제1 예를 보여주는 순서도이다.
도 13은 도 1의 데이터 프로세싱 시스템의 동작 방법의 제2 예를 보여주는 순서도이다.
도 14는 도 11의 컴퓨팅 장치의 동작 방법의 제3 예를 보여주는 순서도이다.
도 15는 도 1의 컴퓨팅 장치의 동작 방법의 제4 예를 보여주는 순서도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템(10)을 보여주는 블록도이다. 도 1을 참조하면, 데이터 처리 시스템(10)은 시스템-온-칩(SoC, 100), 표시 장치(135), 그리고 외부 메모리(155)를 포함한다. 데이터 처리 시스템(10)은 모바일 장치, 스마트폰, PDA, 개인용 컴퓨터, 태블릿 PC, 노트북 컴퓨터, 넷북, e-리더, PMP, MP3 플레이어, MP4 플레이어 등일 수 있수 있으나, 이들에 한정되지 않는다.
시스템-온-칩(100)은 어플리케이션 프로세서일 수 있다. 어플리케이션 프로세서는 데이터 처리 시스템(10)의 제반 동작을 제어할 수 있다. 시스템-온-칩(100)은 중앙 처리부(110), 키 관리자(120), 표시 제어기(130), ROM (140), RAM (160), 메모리 컨트롤러(150), 그리고 버스를 포함한다. 시스템-온-칩(100)은 전원 관리부, 텔레비전 프로세서, 그래픽 프로세싱 유닛, 클럭 유닛 등과 같은 다른 구성 요소들을 더 포함할 수 있다.
중앙 처리부(110)은 동작 클럭 주파수에 따라, 메모리(140, 160 또는 155)에 저장된 프로그램들 또는 데이터를 처리하거나 실행할 수 있다. 중앙 처리부(110)는 멀티코어 프로세서로 구현될 수 있다. 멀티코어 프로세서는 둘 또는 그 이상의 독립적인 프로세서들(예를 들어, 코어들)을 갖는 단일 연산 장치일 수 있다. 프로세서들 각각은 프로그램 명령들을 읽고 실행할 수 있다. 멀티코어 프로세서들은 한 번데 복수의 가속기들을 구동할 수 있고, 따라서, 멀티코어 프로세서들을 포함하는 데이터 처리 시스템은 멀티 가속을 수행할 수 있다.
키 관리자(120)는 암호화에 사용되는 키들을 관리하고, 데이터 및 키들을 암호화 및 복호화할 수 있다. 보안 스토리지는 허가된 사용자 또는 프로그램만이 중요 데이터를 액세스하도록 허용하는 기술이다. 보안 스토리지를 위해, 데이터는 암호화되어 메모리에 안전하게 저징되고 필요할 때에 복호화된다. 따라서, 데이터는 불법적인 사용자 또는 프로그램으로부터 보호된다. 불법적인 액세스에 대한 판단은, 해당 액세스가 암호화 또는 복호화 키를 사용할 권한을 가졌는지에 따라 수행될 수 있다.
키 관리자(120)는 키를 가로채는 공격 및 키를 오염시키는 공격으로부터 키를 보호한다. 키를 가로채는 공격은 키를 불법적으로 액세스하는 공격이고,키를 오염시키는 공격은 키를 손상하거나 파괴하는 공격이다. 따라서, 키를 안전하게 관리하기 위하여, 키 관리자(120)는 키에 대한 이러한 불법적인 공격을 차단하고, 키의 무결성을 보장할 수 있다.
키 관리자(120)는 키 관리 기능을 제공한다. 기 관리 기능은 키의 생성, 사용, 저장, 암호화 및 파괴를 포함하는 키의 전체 주기의 관리와 연관된 기능이다. 키 관리 기능은 파워 오프에 대비하여 키를 암호화하여 불휘발성 메모리 저장하고, 필요할 때에 복호화하는 기능을 포함한다. 키 관리 기능은 키 암호화, 키 해싱(key hashing), 그리고 호스트(예를 들어, 호스트에서 구동되는 소프트웨어 또는 어플리케이션)가 키를 액세스하는 것을 금지하는 접근 제어를 포함할 수 있다.
예시적으로, 호스트는 커맨드를 통해서만 키 관리자(120)를 구동할 수 있고, 소프트웨어(예를 들어, 호스트)는 키를 액세스하는 것이 금지된다.
외부 메모리(155)에 저장된 프로그램 또는 데이터는, 필요할 때에 시스템-온-칩(100) 내의 메모리 또는 중앙 처리부(110)에 로드될 수 있다.
ROM (140)는 영구적인 프로그램들 또는 데이터를 저장할 수 있다. ROM (140)은 EPROM 또는 EEPROM으로 구현될 수 있다.
RAM (160)은 프로그램, 데이터 또는 명령을 임시로 저장할 수 있다. ROM (140)에 저장된 프로그램 또는 데이터는 중앙 처리부(110) 또는 ROM (140)에 저장된 부트 코드의 제어에 따라, RAM (160)에 임시로 저장될 수 있다. RAM (160)은 DRAM 또는 SRAM으로 구현될 수 있다.
메모리 컨트롤러(150)는 외부 메모리(155)와의 인터페이스를 위해 사용될 수 있다. 메모리 컨트롤러(150)는 외부 메모리(155)의 제반 동작을 제어하고, 호스트 및 외부 메모리(155) 사이의 데이터 통신을 제어할 수 있다. 메모리 컨트롤러(150)는 외부 메모리(155)가 호스트의 요청에 따라 데이터를 읽거나 쓰도록 제어할 수 있다. 호스트는 중앙 처리부(110) 또는 표시 제어기(130)와 같은 마스터 장치일 수 있다.
외부 메모리(155)는 데이터, 운영체제, 그리고 다양한 프로그램들을 저장하는 저장 장치일 수 있다. 외부 메모리(155)는 DRAM과 같은 휘발성 메모리, 또는 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등과 같은 불휘발성 메모리로 구현될 수 있다. 다른 예로서, 외부 메모리(155)는 시스템-온-칩(100)에 실장될 수 있다.
데이터 처리 시스템(10)의 구성 요소들(110~160)은 버스를 통해 상호 통신할 수 있다.
표시 장치(135)는 멀티미디어 데이터를 표시할 수 있다. 표시 장치(135)는 LCD일 수 있으나, 그에 한정되지 않는다. 다른 예로서, 표시 장치(135)는 LED 표시 장치, OLED 표시 장치 등으로 구현될 수 있다. 표시 제어기(130)는 표시 장치(135)의 동작을 제어할 수 있다.
도 2는 도 1의 키 관리자(120)를 보여주는 블록도이다.
도 1 및 도 2를 참조하면, 키 관리자(120)는 키 관리 코어(200), 난수 발생기(250), 고유값 저장부(260), 키 메모리(270), 그리고 암호화된 키 메모리(280)를 포함한다.
키 관리 코어(200)는 다양한 키 사이즈들을 갖는 블록 암호화부(230)를 지원하고, 키 생성 기능, 키 암호화 기능, 키 복호화 기능, 키 로드 기능, 키 파괴 기능을 제공할 수 있다. 키 관리 코어(200)는 하드웨어로 구현될 수 있다.
난수 발생기(250)는 진성 난수(pure random number) 또는 의사 난수(pseudo random number)를 생성할 수 있다. 난수 발생기(250)는 생성된 난수(DEK)를 키 관리 코어(200)로 제공할 수 있다. 난수 발생기(250)는 생성된 난수(DEK)를 호스트 인터페이스(22)를 통해 데이터 처리 시스템(10)의 다른 구성 요소로 전송할 수 있다. 난수 발생기(250)는 키 관리자(120)에 위치하는 것으로 도시되어 있으나, 난수 발생기(250)는 키 관리자(120)의 외부에 위치할 수 있다.
고유값 저장부(260)는 고유값(KEK)을 저장할 수 있다. 고유값(KEK)은 데이터 처리 시스템(10)에 대응하는 고유한 값일 수 있다. 복수의 서로 다른 데이터 처리 시스템들의 고유값들은 서로 다를 수 있다. 예시적으로, 고유값 저장부(260)는 고유값(KEK)을 저장하도록 구성되는 원-타임 프로그램(OTP, One-Time Program) 회로, 전기 퓨즈(electric fuse), 레이저 퓨즈(laser fuse) 등을 포함할 수 있다. 고유값 저장부(260)는 고유값(KEK)을 저장하도록 구성되는 불휘발성 메모리를 포함할 수 있다. 고유값 저장부(260)는 고유값(KEK)을 키 관리 코어(200)로 출력할 수 있다.
고유값 저장부(260)는 데이터 처리 시스템(10)에서 구동되는 운영체제, 어플리케이션 등과 같은 소프트웨어에 의한 액세스가 불능일(또는 금지될) 수 있다. 예를 들어, 고유값 저장부(260)는 소프트웨어에 의해 액세스가 가능한 어드레스가 할당되지 않는 블록일 수 있다. 고유값 저장부(260)에 어드레스가 할당되는 경우에도, 고유값 저장부(260)에 대한 소프트웨어의 액세스 요청(읽기, 쓰기 또는 소거 요청)은 무시될 수 있다.
도 2에서, 고유값 저장부(260)는 키 관리자(120) 내부에 위치하는 것으로 도시되어 있으나, 고유값 저장부(260)는 키 관리자(120)의 외부에 위치할 수 있다.
키 메모리(270)는 암호화되지 않은 키를 저장하고, 암호화된 키 메모리(280)는 암호화된 키를 저장할 수 있다.
키 관리 코어(200)는 레지스터(210), 메인 컨트롤러(220), 블록 암호화부(230), 그리고 해시부(240)를 포함한다.
레지스터(210)는 커맨드 레지스터(211), 사용자 설정 값 레지스터(213) 및 상태 레지스터를 포함한다. 커맨드 레지스터(211)는 호스트(21)로부터 수신되는 커맨드를 저장한다. 상태 레지스터(212)는 호스트(21)의 커맨드를 실행한 결과를 저장한다. 상태 레지스터(212)의 데이터는 인터럽트 또는 폴링을 통해 호스트(21)로 보고된다. 사용자 설정 값 레지스터(213)는 호스트(21)로부터 수신되는 사용자 설정 값(USV)을 저장한다.
커맨드 및 사용자 설정 값(USV)은 호스트(21)에 의해 구동되는 운영체제 또는 어플리케이션에 의해 발행(issue)될 수 있다. 커맨드(CMD)는 키 관리자(120)에 키를 요청하는 커맨드, 키의 백업을 요청하는 커맨드, 그리고 키의 복원(restore)를 요청하는 커맨드를 포함할 수 있다. 커맨드(CMD)는 키 관리자(120)에 제1 스킴에 따른 키를 요청하는 커맨드, 그리고 제1 스킴과 다른 제2 스킴에 따른 키를 요청하는 커맨드를 포함할 수 있다.
사용자 설정 값(USV)은 사용자에 의해 설정된 값일 수 있다. 동일한 사용자 설정 값은 동일한 사용자에 대응하고, 상이한 사용자 설정 값은 상이한 사용자에 대응할 수 있다. 예시적으로, 사용자는 호스트(21)에서 구동되는 어플리케이션일 수 있다. 호스트(21)에서 구동되는 어플리케이션들은 각각 서로 다른 사용자 설정 값들을 사용할 수 있다. 예를 들어, 어플리케이션들의 식별자들(ID)이 사용자 설정 값들로 사용될 수 있다.
사용자는 호스트(21)에서 구동되는 운영체제에 설정된 계정들일 수 있다. 동일한 계정은 동일한 사용자 설정 값을 사용하고, 서로 다른 계정들은 서로 다른 사용자 설정 값들을 사용할 수 있다. 사용자 설정 값은 계정에 설정된 패스워드, 계정에 설정된 패스워드로부터 생성된 데이터, 계정의 명칭, 계정의 명칭으로부터 생성된 데이터 등을 포함할 수 있다.
사용자는 데이터 처리 시스템(10)을 포함하는 단말기일 수 있다. 동일한 단말기는 동일한 사용자 설정 값을 사용할 수 있다. 사용자 설정 값은 단말기를 사용하는 사용자에 의해 설정된 잠금 패스워드일 수 있다.
사용자는 호스트(21)에서 구동되는 소프트웨어들의 그룹들일 수 있다. 동일한 그룹은 동일한 사용자 설정 값을 사용하고, 서로 다른 그룹들은 서로 다른 사용자 설정 값들을 사용할 수 있다. 소프트웨어의 그룹들은 소프트웨어의 카테고리 또는 소프트웨어가 배치된 폴더 등에 따라 분류될 수 있다.
사용자는 일반 사람(User)일 수 있다. 동일한 사람은 동일한 사용자 설정 값을 사용할 수 있다.
메인 컨트롤러(220)는 호스트(21)로부터의 커맨드를 번역하고 실행한다. 메인 컨트롤러(220)는 유한 스테이트 머신(FSM, Finite State Machine)으로 구현될 수 있다.
메인 컨트롤러(220)는 커맨드 레지스터(211)에 저장된 커맨드에 응답하여 동작할 수 있다. 메인 컨트롤러(220)는 사용자 설정 값 레지스터(213)에 저장된 사용자 설정 값(USV)을 이용하여 동작할 수 있다. 메인 컨트롤러(220)는 커맨드의 실행 결과를 상태 레지스터(212)에 저장할 수 있다. 예를 들어, 실행 결과는 제어 신호(CTRL)로서 상태 레지스터(212)에 저장될 수 있다.
메인 컨트롤러(220)는 난수 발생기(250)로부터 난수(DEK)를 수신할 수 있다. 메인 컨트롤러(220)는 고유값 저장부(260)로부터 고유값(KEK)을 수신할 수 있다. 사용자 설정 값(USV), 난수(DEK), 그리고 고유값(KEK)에 기반하여, 메인 컨트롤러(220)는 키를 생성할 수 있다.
예를 들어, 제1 스킴에 따라, 메인 컨트롤러(220)는 블록 암호화(block cipher) 또는 키 해시(key hash)를 이용하여 사용자 설정 값(USV) 및 고유값(KEK)으로부터 키를 도출할 수 있다. 메인 컨트롤러(220)는 출력값으로부터 입력값을 추출 또는 유추할 수 없는 다양한 도출 방법들 중 하나를 이용하여, 사용자 설정 값(USV) 및 고유값(KEK)으로부터 키를 도출할 수 있다.
예를 들어, 제2 스킴에 따라, 메인 컨트롤러(220)는 난수 발생기(250)로부터 수신된 난수(DEK)를 키로 선택할 수 있다. 메인 컨트롤러(220)는 키로 선택된 난수(DEK) 및 사용자 설정 값(USV)을 상호 연관하여 관리할 수 있다. 메인 컨트롤러(220)는 상호 연관된 키 및 사용자 설정 값(USV)을 키 메모리(270)에 저장할 수 있다. 메인 컨트롤러(220)는 상호 연관된 키 및 사용자 설정 값(USV)을 블록 암호화부(230) 및 해시부(240)로 전달할 수 있다.
메인 컨트롤러(290)는 사용자 체크 블록(290)을 포함한다. 사용자 체크 블록(290)은 사용자 설정 값 레지스터(213)로부터 수신되는 사용자 설정 값(USV)이, 키 메모리(270)에 저장된 사용자 설정 값들 중 하나와 일치하는지 판별할 수 있다. 사용자 체크 블록(290)에서 사용자 체크가 수행되면, 메인 컨트롤러(220)는 사용자 체크의 결과에 따라 후속 동작을 수행할 수 있다.
예를 들어, 커맨드 레지스터(211)로부터 수신되는 커맨드가 제1 타입의 키를 요청하는 커맨드일 때, 메인 컨트롤러(220)는 고유값(KEK) 및 사용자 설정 값(USV)으로부터 키를 도출할 수 있다. 예를 들어, 제1 타입의 키가 필요할 때, 호스트(21)는 제1 타입의 키를 요청하는 커맨드 및 사용자 설정 값(USV)을 레지스터(210)로 전송할 수 있다.
예를 들어, 커맨드 레지스터(211)로부터 수신되는 커맨드가 제2 타입의 키를 요청(예를 들어, 생성 요청)하는 커맨드일 때, 메인 컨트롤러(220)는 난수(DEK)를 키로서 선택하고, 선택된 키 및 사용자 설정 값(USV)을 연관하여 키 메모리(270)에 저장할 수 있다. 즉, 제2 타입의 키가 필요할 때, 호스트(21)는 제2 타입의 키를 요청하는 커맨드 및 사용자 설정 값(USV)을 레지스터(210)로 전송할 수 있다.
예를 들어, 커맨드 레지스터(211)로부터 수신되는 커맨드가 제2 타입의 키를 요청(예를 들어, 미리 생성된 키의 로드를 요청)하는 커맨드일 때, 사용자 체크 블록(290)은 사용자 설정 값 레지스터(213)로부터 수신되는 사용자 설정 값(USV)과 대응하는(예를 들어, 동일한) 사용자 설정 값이 키 메모리(270)에 존재하는지 판별한다. 대응하는 사용자 설정 값이 키 메모리(270)에 존재하는 경우, 메인 컨트롤러(220)는 대응하는 사용자 설정 값과 연관되어 키 메모리(250)에 저장된 키, 즉 난수(DEK)를 선택할 수 있다. 즉, 제2 타입의 키가 필요할 때, 호스트(21)는 제2 타입의 키를 요청하는 커맨드 및 사용자 설정 값(USV)을 레지스터(210)로 전송할 수 있다.
예를 들어, 커맨드 레지스터(211)로부터 수신되는 커맨드가 제2 타입의 키의 백업을 요청하는 커맨드일 때, 사용자 체크 블록(290)은 사용자 설정 값 레지스터(213)로부터 수신되는 사용자 설정 값(USV)과 대응하는(예를 들어, 동일한) 사용자 설정 값이 키 메모리(270)에 존재하는지 판별한다. 대응하는 사용자 설정 값이 키 메모리(270)에 존재하는 경우, 메인 컨트롤러(220)는 대응하는 사용자 설정 값(USV) 및 연관된 키(KEY)를 블록 암호화부(230) 및 해시부(240)로 전송할 수 있다. 블록 암호화부(230) 및 해시부(240)를 통해 암호화된 키는 암호화된 키 메모리(280)에 저장될 수 있다. 즉, 제2 타입의 키의 백업이 필요할 때, 호스트(21)는 제2 타입의 키를 요청하는 커맨드 및 사용자 설정 값(USV)을 레지스터(210)로 전송할 수 있다.
블록 암호화부(230)는 메인 컨트롤러(220)의 제어에 따라, 데이터 및 키를 암호화 또는 복호화(또는 복원)할 수 있다. 예를 들어, 블록 암호화부(230)는 메인 컨트롤러(220)로부터 키 및 사용자 설정 값(USV)을 수신할 수 있다. 블록 암호화부(230)는 해시부(240)로부터 해시를 수신할 수 있다. 블록 암호화부(230)는 고정값을 이용하여, 키, 사용자 설정 값(USV) 및 해시를 암호화할 수 있다. 암호화된 데이터는 암호화된 키 메모리(280)에 저장될 수 있다. 또한, 블록 암호화부(230)는 암호화된 키 메모리(280)로부터 암호화된 데이터를 읽고, 고정값을 이용하여 복호를 수행할 수 있다. 블록 암호화부(230)는 복호를 수행하여 키, 사용자 설정 값(USV) 및 해시를 복원할 수 있다. 예시적으로, 고정값은 고유값 저자장부(260)로부터 출력되는 고유값(KEK)을 포함할 수 있다.
블록 암호화부(230)는 코어 로직(231), 키 레지스터(232), 입력 데이터 레지스터(233) 및 출력 데이터 레지스터(234)를 포함한다.
코어 로직(231)은 암호화 및 복호화를 수행하는 로직일 수 있다. 키 레지스터(232)는 키(예를 들어, DEK 는 KEK)를 임시로 저장할 수 있다. 입력 데이터 레지스터(233)는 암호화 또는 복호화될 데이터를 임시로 저장할 수 있다. 출력 데이터 레지스터(234)는 암호화 또는 복호화된 데이터를 임시로 저장할 수 있다.
해시부(240)는 메인 컨트롤러(220)의 제어에 따라 키 및 사용자 설정 값(USV)의 해시를 생성할 수 있다. 해시부(240)의 해시 알고리즘은 임의의 길이의 입력값을 고정된 길이의 출력값으로 변환할 수 있다. 출력값은 해시일 수 있다. 해시부(240)는 해시를 생성하는 코어(232), 입력 데이터를 저장하는 입력 데이터 레지스터(242) 및 출력 데이터(예를 들어, 해시)를 저장하는 출력 데이터 레지스터(243)를 포함할 수 있다.
키 관리자(120)는 호스트 인터페이스(22)를 통해 호스트(21)와 인터페이스한다. 호스트 인터페이스(22)는 커맨드, 상태 및 키를 호스트(21) 및 키 관리자(120) 사이에서 전송할 수 있다. 호스트 인터페이스(22)는 AMBA, AHB 등을 포함할 수 있으나, 한정되지 않는다.
도 3는 본 발명의 실시 예에 따른 키 관리 블록(170)의 동작 방법을 보여주는 순서도이다. 도 2 및 도 3을 참조하면, S110 단계에서, 키 관리자(120)는 호스트(21)로부터 커맨드(CMD) 및 사용자 설정 값(USV)을 수신한다. 예를 들어, 키 관리자(120)는 호스트(21)에서 구동되는 운영체제 또는 어플리케이션에 의해 발행된 커맨드(CMD) 및 사용자 설정 값(USV)을 수신할 수 있다.
S120 단계에서, 키 관리자(120)는 수신된 커맨드(CMD)를 분석한다. 예를 들어, 메인 컨트롤러(220)는 커맨드 레지스터(211)에 저장된 커맨드를 분석할 수 있다.
S130 단계에서, 키 관리자(120)는 커맨드(CMD)의 분석 결과에 따라, 사용자 설정 값(USV)을 이용하여 키(KEY)를 생성한다. 예를 들어, 메인 컨트롤러(220)는 제1 스킴에 따라 사용자 설정 값(USV) 및 고유값(KEK)으로부터 키(KEY)를 도출할 수 있다. 메인 컨트롤러(220)는 제2 스킴에 따라 난수 발생기(250)로부터 출력되는 난수(DEK)를 키(KEY)로 선택할 수 있다. 메인 컨트롤러(220)는 제2 스킴에 따라 키 메모리(270)에 저장된 사용자 설정 값(USV)에 대응하는 키(KEY)를 선택할 수 있다.
예시적으로, 키(KEY)의 생성은 사용자 설정 값(USV)의 인증에 기반하여 수행될 수 있다. 사용자 설정 값(USV)이 올바른 값이 아닌 경우, 메인 컨트롤러(220)는 사용자 설정 값(USV) 및 고유값(KEK)으로부터 부적절한 키를 생성한다. 사용자 설정 값(USV)이 올바른 값이 아닌 경우, 메인 컨트롤러(220)는 키 메모리(270)에서 올바른 키(KEY)를 선택할 수 없다. 올바른 키가 선택되지 않으면, 정상적으로 암호화 또는 복호화가 수행될 수 없다. 즉, 암호화된 데이터에 대한 부적절한 접근이 방지된다.
본 발명에 따르면, 사용자 설정 값(USV)을 이용하여 인증이 수행되고, 인증이 성공한 경우에, 소프트웨어에 의해 액세스될 수 없는 키를 사용하여 데이터의 암호화 및 복호화가 수행된다. 키는 소프트웨어에 의해 액세스될 수 없는 고유값(KEK)을 이용하여 생성되거나, 난수(KEK)를 이용하여 생성된다. 따라서, 해킹과 같은 부적절한 방법으로 키를 획득하거나 데이터를 획득하고자 하는 시도가 차단되므로, 키 관리자(120) 및 키 관리자(120)를 포함하는 데이터 프로세싱 시스템(10)의 보안성이 향상된다.
도 4는 커맨드(CMD)를 분석하는 단계(S120)를 더 상세하게 보여주는 순서도이다. 도 2 내지 도 4를 참조하면, S121 단계에서, 수신된 커맨드(CMD)가 제1 타입인지 판별된다. 예를 들어, 메인 컨트롤러(220)는 커맨드 레지스터(211)로부터 수신된 커맨드(CMD)가 제1 타입인지 판별할 수 있다.
수신된 커맨드(CMD)가 제1 타입이면, S123 단계에서, 키(KEY)를 관리하기 위한 제1 스킴이 선택된다. 예를 들어, 메인 컨트롤러(220)는 고유값(KEK) 및 사용자 설정 값(USB)을 이용하여 키(KEY)를 생성하는 제1 스킴을 선택할 수 있다.
수신된 커맨드(CMD)가 제1 타입이 아니면, S125 단계에서, 키(KEY)를 관리하기 위한 제2 스킴이 선택된다. 예를 들어, 메인 컨트롤러(220)는 난수 발생기(250)로부터 출력되는 난수(DEK)를 키로 선택하거나, 키 메모리(270)에 에 저장된 난수(DEK)를 키로 선택하는 제2 스킴을 선택할 수 있다.
도 5는 제1 스킴이 선택된 때의 키 관리자(120)의 동작을 설명하기 위한 도면이다. 예시적으로, 도 2의 키 관리자(120)와 비교하면, 제1 스킴이 선택된 때에 사용되지 않는 블록들이 점선으로 도시되어 있다. 도 5를 참조하면, 제1 스킴이 선택된 때에, 블록 암호화부(230), 해시부(240), 난수 발생기(250), 키 메모리(270), 암호화된 키 메모리(280), 그리고 사용자 체크 블록(290)이 사용되지 않을 수 있다.
도 6은 제1 스킴의 예를 보여주는 순서도이다. 예시적으로, 제1 스킴을 이용하여 키를 생성하는 동작이 도 6에 도시된다. 예를 들어, 호스트(21)로부터 수신되는 커맨드(CMD)는 제1 타입의 커맨드일 수 있다.
도 5 및 도 6을 참조하면, S141 단계에서, 고유값(KEK)이 읽어진다. 예를 들어, 메인 컨트롤러(220)는 고유값 저장부(260)로부터 고유값(KEK)을 읽을 수 있다. 예를 들어, 키 도출 블록(173)은 고유값 저장부(260)에 저장된 고유값 중 일부분을 고유값(KEK)으로 읽을 수 있다.
S143 단계에서, 사용자 설정 값(USV1) 및 고유값(KEK)을 이용하여 키(KEY)가 생성된다. 예를 들어, 메인 컨트롤러(220)는 사용자 설정 값(USV) 및 고유값(KEK)에 대해 미리 정의된 알고리즘을 적용하여, 키(KEY)를 생성할 수 있다. 메인 컨트롤러(220)는 블록 암호화(block cipher) 또는 키 해시(key hash)를 이용하여 사용자 설정 값(USV) 및 고유값(KEK)으로부터 키(KEY)를 도출할 수 있다. 메인 컨트롤러(220)는 출력값으로부터 입력값을 추출 또는 유추할 수 없는 다양한 도출 알고리즘들 중 하나를 이용하여, 사용자 설정 값(USV) 및 고유값(KEK)으로부터 키(KEY)를 도출할 수 있다. 메인 컨트롤러(220)는 동일한 입력에 대해 동일한 출력을 생성하는 알고리즘을 이용하여 키(KEY)를 생성할 수 있다.
예시적으로, 생성된 키(KEY)는 호스트(21)로 출력되거나, 또는 블록 암호화부(230)로 전송될 수 있다. 호스트(21) 또는 블록 암호화부(230)에서, 키(KEY)는 데이터의 암호화를 위해 사용될 수 있다.
상술된 바와 같이, 제1 스킴은 키(KEY)가 필요할 때마다 즉시(instantly) 키(KEY)를 생성하는 방식을 사용한다. 고유값 저장부(260)는 항상 동일한 값을 갖는 고유값(KEK)을 출력한다. 따라서, 동일한 제1 값을 갖는 사용자 설정 값(USV)이 입력되면 항상 동일한 제1 값을 갖는 키(KEY)가 출력된다. 제1 값과 상이한 제2 값을 갖는 사용자 설정 값(USV)이 입력되면 제1 값과 상이한 제2 값을 갖는 키(KEY)가 출력된다. 따라서, 올바른 사용자에 대해서만 적절한 키(KEY)가 생성되므로, 사용자 인증에 기반한 향상된 보안성을 갖는 키 관리자(120) 및 키 관리자(120)를 포함하는 데이터 처리 시스템(10), 그리고 데이터 관리 방법이 제공된다. 또한, 고유값(KEK)은 호스트(21)에서 구동되는 소프트웨어에 의해 액세스되지 않는다. 따라서, 향상된 보안성을 갖는 키 관리자(120) 및 키 관리자(120)를 포함하는 데이터 처리 시스템(10), 그리고 데이터 관리 방법이 제공된다.
도 7은 제2 스킴의 제1 예를 보여주는 순서도이다. 예시적으로, 제2 스킴을 이용하여 키를 생성하는 동작이 도 7에 도시된다. 예를 들어, 호스트(21)로부터 수신된 커맨드(CMD)는 제2 타입이고, 키(KEY)의 생성을 요청하는 커맨드일 수 있다.
도 2 및 도 7을 참조하면, S151 단계에서, 난수(DEK) 및 사용자 설정 값(USV)이 수신된다. 메인 컨트롤러(220)는 난수 발생기(250)로부터 난수(DEK)를 수신하고, 사용자 설정 값 레지스터(213)로부터 사용자 설정 값(USV)을 수신할 수 있다.
S153 단계에서, 난수(DEK)가 사용자 설정 값(USV)과 연관된 키로 선택된다. 예를 들어, 난수(DEK)는 사용자 설정 값(USV)에 대응하는 키로 선택될 수 있다. 키로 선택된 난수(DEK)는 연관된 사용자 설정 값(USV)과 함께 키 메모리(270)에 저장될 수 있다.
예시적으로, 사용자 설정 값(USV) 및 키(KEY)로 선택된 난수(DEK)는 해시부(240)로 전송될 수 있다. 해시부(240)는 사용자 설정 값(USV) 및 키(KEY)에 기반하여 해시를 생성할 수 있다. 생성된 해시는 블록 암호화부(230)로 전송될 수 있다.
사용자 설정 값(USV) 및 키(KEY)로 선택된 난수(DEK)는 블록 암호화부(230)로도 전송될 수 있다. 블록 암호화부(230)는 해시부(240)로부터 해시를 수신할 수 있다. 블록 암호화부(230)는 고정값을 이용하여, 사용자 설정 값(USV), 키로 선택된 난수(DEK), 그리고 해시를 암호화할 수 있다. 고정된 값은 고유값 저장부(260)로부터 출력되는 고유값(KEK)일 수 있다. 암호화된 데이터는 암호화된 키 메모리(280)에 저장될 수 있다. 즉, 키는 암호화되어 백업된다. 예시적으로, 키의 백업은 키의 생성에 후속하여 또는 호스트(21)의 요청에 따라 수행될 수 있다.
다른 예로서, 사용자 체크 블록(290)은 사용자 설정 값(USV)을 이용하여 사용자 체크를 수행할 수 있다. 즉, 사용자 체크 블록(290)은 사용자 설정 값(USV)이 키 메모리(270)에 저장되어 있는지 확인할 수 있다. 사용자 설정 값(USV)이 키 메모리(270)에 저장되어 있지 않은 경우, 메인 컨트롤러(220)는 난수 발생기(250)로부터 출력되는 난수(DEK)를 키(KEY)로 선택할 수 있다. 사용자 설정 값(USV)이 키 메모리(270)에 저장되어 있는 경우, 메인 컨트롤러(220)는 사용자 설정 값(USV)에 대응하는 키(KEY)가 이미 생성되어 있음을 호스트(21)에 통지할 수 있다. 다른 예로서, 사용자 설정 값(USV)이 키 메모리(270)에 저장되어 있는 경우, 메인 컨트롤러(220)는 사용자 설정 값(USV)에 대응하며 키 메모리(270)에 저장되어 있는 난수(DEK)를 키로 선택할 수 있다.
예시적으로, 생성된 키(KEY)는 호스트(21)로 출력되거나, 또는 블록 암호화부(230)로 전송될 수 있다. 호스트(21) 또는 블록 암호화부(230)에서, 키(KEY)는 데이터의 암호화를 위해 사용될 수 있다.
도 8은 키 메모리(270)의 예를 보여주는 블록도이다. 도 8을 참조하면, 키 메모리(270)는 사용자 설정 값 리스트(UL) 및 키 리스트(KL)를 저장할 수 있다. 사용자 설정 값 리스트(UL)는 복수의 사용자 설정 값들(USV_1~USV_n)을 포함할 수 있다. 키 리스트(KL)는 복수의 키들(KEY_1~KEY_n)을 포함할 수 있다. 복수의 사용자 설정 값들(USV_1~USV_n)은 복수의 키들(KEY_1~KEY_n)에 각각 대응할 수 있다. 예를 들어, 사용자 설정 값(USV_k) 및 키(KEY_k)가 사용자 설정 값 리스트(UL) 및 키 리스트(KL)에 각각 등록될 때, 사용자 설정 값(USV_k) 및 키(KEY_k)가 상호 연관되어 있음을 가리키는 정보가 함께 생성 및 저장될 수 있다. 다른 예로서, 상호 연관된 사용자 설정 값(USB_k) 및 키(KEY_k)는 미리 정해진 규칙에 따라 미리 정해진 위치(예를 들어, 미리 정해진 어드레스 등)에 저장될 수 있다.
도 9는 제2 스킴의 제2 예를 보여주는 순서도이다. 예시적으로, 제2 스킴을 이용하여 미리 생성된 키를 선택(또는 로딩)하는 동작이 도 9에 도시된다. 예를 들어, 호스트(21)로부터 수신된 커맨드(CMD)는 제2 타입이고, 미리 생성된 키(KEY)를 요청하는 커맨드일 수 있다.
도 2 및 도 9를 참조하면, S161 단계에서, 사용자 설정 값(USV)이 키 메모리(270)에 저장되어 있는지 판별된다. 예를 들어, 사용자 체크 블록(290)은 사용자 설정 값 레지스터(213)로부터 수신되는 사용자 설정 값(USV)이 키 메모리(270)에 저장되어 있는지 판별할 수 있다.
사용자 설정 값(USV)이 키 메모리(270)에 존재하면, S163 단계에서, 사용자 설정 값(USV)에 대응하는 키(KEY)가 키 메모리(270)로부터 읽어진다. 사용자 설정 값(USV)이 키 메모리(270)에 존재하지 않으면, 사용자 체크 블록(290) 또는 메인 컨트롤러(220)는 에러가 발생한 것으로 처리할 수 있다. 메인 컨트롤 블록(220)은 사용자 설정 값(USV)에 대응하는 키(KEY)가 생성되어 있지 않음을 호스트(21)에 통지할 수 있다.
다른 예로서, 사용자 설정 값(USV)이 키 메모리(270)에 존재하지 않을 때, 메인 컨트롤러(220)는 도 7을 참조하여 설명된 바와 같이 키(KEY)를 생성할 수 있다.
예시적으로, 읽어진 키(KEY)는 호스트(21)로 출력되거나, 또는 블록 암호화부(230)로 전송될 수 있다. 호스트(21) 또는 블록 암호화부(230)에서, 키(KEY)는 데이터의 암호화를 위해 사용될 수 있다.
도 10은 제2 스킴의 제3 예를 보여주는 순서도이다. 예시적으로, 제2 스킴을 이용하여 키를 백업하는 동작이 도 10에 도시된다. 예를 들어, 호스트(21)로부터 수신된 커맨드(CMD)는 제2 타입이고, 키(KEY)의 백업을 요청하는 커맨드일 수 있다.
도 2 및 도 10을 참조하면, S171 단계에서, 사용자 설정 값(USV)이 키 메모리(270)에 존재하는지 판별된다.
사용자 설정 값(USV)이 키 메모리(270)에 저장되어 있지 않으면, S179 단계에서, 백업이 수행되지 않고 종료된다. 메인 컨트롤러(220)는 사용자 설정 값(USV)에 대응하는 키(KEY)가 생성되어 있지 않음을 호스트(21)에 통지할 수 있다.
사용자 설정 값(USV)이 키 메모리(270)에 저장되어 있으면, S173 단계에서, 사용자 설정 값(USV) 및 키(KEY)를 이용하여 해시가 생성된다. 예를 들어, 메인 컨트롤러(220)는 키(KEY) 및 사용자 설정 값(USV)을 해시부(240)로 전송할 수 있다. 해시부(230)는 키(KEY) 및 사용자 설정 값(USV)을 이용하여 해시를 생성할 수 있다.
S175 단계에서, 고정값을 이용하여 사용자 설정 값(USV), 키(KEY) 및 해시가 암호화된다. 예를 들어, 메인 컨트롤러(220)는 사용자 설정 값(USV) 및 키(KEY)를 블록 암호화부(230)로 전송한다. 해시부(240)는 해시를 블록 암호화부(230)로 전송한다. 블록 암호화부(230)는 고정값을 이용하여 사용자 설정 값(USV), 키(KEY) 및 해시를 암호화한다. 고정값은 블록 암호화부(230) 내부에서 생성되는 고정된 값 또는 고유값 저장부(260)로부터 출력되는 고유값(KEK)일 수 있다.
S177 단계에서, 암호화된 데이터가 저장된다. 예를 들어, 암호화된 데이터는 암호화된 키 메모리(280)에 저장될 수 있다. 다른 예로서, 암호화된 데이터는 호스트 인터페이스(22)를 통해 호스트 인터페이스(22)에 연결된 불휘발성 메모리에 저장될 수 있다. 즉, 암호화된 데이터는 키 관리자(120)에서 내부적으로 또는 키 관리자(120) 외부의 불휘발성 메모리에 백업될 수 있다.
도 11은 제2 스킴의 제4 예를 보여주는 순서도이다. 예시적으로, 제2 스킴을 이용하여 백업된 키를 복원하는 동작이 도 11에 도시된다. 예를 들어, 호스트(21)로부터 수신된 커맨드(CMD)는 제2 타입이고, 백업된 키(KEY)의 복원을 요청하는 커맨드일 수 있다.
도 2 및 도 11을 참조하면, S181 단계에서, 암호화된 데이터가 수신된다. 예를 들어, 암호화된 데이터는 백업된 저장소로부터 읽어질 수 있다. 암호화된 데이터는 암호화된 키 메모리(280) 또는 호스트 인터페이스(22)에 연결된 불휘발성 메모리로부터 읽어질 수 있다.
S183 단계에서, 암호화된 데이터가 복호된다. 블록 암호화부(230)는 암호화된 데이터를 수신하고, 암호화된 데이터를 고정값을 이용하여 복호할 수 있다. 고정값은 고유값 저장부(260)로부터 출력되는 고유값(KEK)일 수 있다.
S185 단계에서, 해시 체크가 수행된다. 예를 들어, 메인 컨트롤러(220)는 사용자 설정 값 레지스터(213)에 저장된 사용자 설정 값(USV) 및 암호화된 데이터로부터 블록 암호화부(230)에 의해 복호된 키(KEY)를 해시부(240)로 전송할 수 있다. 해시부(240)는 사용자 설정 값 레지스터(213)로부터 전송된 사용자 설정 값(USV) 및 암호화된 데이터로부터 복호된 키(KEY)를 이용하여 해시를 생성할 수 있다. 메인 컨트롤러(220)는 해시부(240)에서 생성된 해시 및 암호화된 데이터로부터 블록 암호화부(230)에 의해 복호된 해시를 비교할 수 있다.
S187 단계에서, 해시 체크가 성공하는지 판별된다. 예를 들어, 비교되는 두 개의 해시들이 동일할 때, 메인 컨트롤러(220)는 해시 체크가 성공하는 것으로 판별할 수 있다. 비교되는 두 개의 해시들이 동일하지 않을 때, 메인 컨트롤러(220)는 해시 체크가 실패하는 것으로 판별할 수 있다.
해시 체크가 성공하면, S189 단계에서, 키(KEY) 및 사용자 설정 값(USV)이 키 메모리(280)에 저장된다. 해시 체크가 성공하지 않으면, S188 단계에서, 에러가 발생한 것으로 판별된다. 키(KEY)는 복원되지 않고, 메인 컨트롤러(220)는 복원이 실패하였음을 호스트(21)에 통지할 수 있다.
예시적으로, 키(KEY)의 복원을 요청하는 커맨드와 함께 수신된 사용자 설정 값(USV)이 키(KEY)의 암호화 시에 사용된 사용자 설정 값(USV)과 동일할 때, 비교되는 두 개의 해시들은 동일할 수 있다. 또한, 암호화된 데이터로부터 복호된 키(KEY)에 에러가 존재하지 않을 때, 비교되는 두 개의 해시들은 동일할 수 있다. 즉, 권한을 갖는 사용자를 가리키는 올바는 사용자 설정 값이 입력될 때, 그리고 키(KEY)에 에러가 존재하지 않을 때, 키(KEY)는 백업된 저장소로부터 복원되어 키 메모리(270)에 저장된다. 권한을 갖지 않은 사용자를 가리키는 올바르지 않은 사용자 설정 값이 입력될 때, 또는 키(KEY)에 에러가 존재할 때, 키(KEY)는 복원되지 않는다.
상술된 바와 같이, 제2 스킴에 따르면, 호스트(21)로부터 올바른 사용자 설정 값(USV)이 입력될 때에만, 대응하는 키(KEY)가 출력된다. 따라서, 사용자 인증에 기반하여 향상된 보안성을 갖는 키 관리자(120), 키 관리자를 포함하는 데이터 프로세싱 시스템(10), 그리고 데이터 관리 방법이 제공된다.
도 12는 도 1의 데이터 프로세싱 시스템(10)의 동작 방법의 제1 예를 보여주는 순서도이다. 예시적으로, 데이터 프로세싱 시스템(10)이 외부 메모리(155)에 데이터를 기입하는 방법이 도 12에 도시되어 있다.
도 1 및 도 12를 참조하면, S210 단계에서, 데이터 쓰기 이벤트가 발생한다. 쓰기 이벤트는 외부 메모리(155)에 데이터를 기입할 것이 요구되는 상황을 의미한다. 예를 들어, 중앙 처리부(110)에서 구동되는 운영체제, 어플리케이션 등과 같은 소프트웨어에 의해 쓰기 이벤트가 발생할 수 있다.
쓰기 이벤트가 발생하면, S220 단계에서, 중앙 처리부(110)는 키 관리자(120)로 사용자 설정 값(USV) 및 커맨드(CMD)를 전송한다. 커맨드(CMD)는 키(KEY)를 요청하는 커맨드일 수 있다. 예를 들어, 커맨드(CMD)는 제1 스킴에 따라 키(KEY)를 생성할 것을 요청하는 커맨드, 제2 스킴에 따라 키(KEY)를 생성하거나 로드할 것을 요청하는 커맨드일 수 있다. 사용자 설정 값은, 데이터의 기입을 요청한 운영체제 또는 어플리케이션의 식별자일 수있다.
S230 단계에서, 키 관리자(120)은 키(KEY)를 출력한다. 예를 들어, 키 관리자(120)는 사용자 설정 값(USV)에 기반하여, 제1 스킴에 따라 키(KEY)를 생성하거나, 제2 스킴에 따라 키(KEY)를 생성 또는 로드하여 출력할 수 있다. S230 단계에서, 상술된 에러 없이, 키(KEY)가 정상적으로 출력되는 것으로 가정된다. 예시적으로, 키 관리자(120)는 외부 메모리(155)에 기입될 데이터를 암호화하는 구성 요소로 키(KEY)를 출력할 수 있다. 중앙 처리부(110)가 암호화를 수행하는 경우, 키 관리자(120)는 중앙 처리부(110)로 키(KEY)를 출력할 수 있다. 키 관리자(120)가 데이터의 암호화까지 수행하는 경우, 즉 블록 암호화부(230)가 외부 메모리(155)에 기입될 데이터의 암호화까지 수행하는 경우, 키 관리자(120)는 키(KEY)를 출력하지 않고 내부적으로 사용할 수 있다. 외부 메모리(155)에 기입될 데이터의 암호화를 수행하는 별도의 회로 또는 로직이 데이터 프로세싱 시스템(10)에 제공되는 경우, 키 관리자(120)는 별도의 회로 또는 로직으로 키(KEY)를 출력할 수 있다. 도 12에서, 키 관리자(120)는 중앙 처리부(110)로 키(KEY)를 출력하는 것으로 가정되나, 본 발명의 기술적 사상은 이에 한정되지 않는다.
S240 단계에서, 중앙 처리부 (110)는 외부 메모리(155)로 쓰기 커맨드, 어드레스 및 암호화된 데이터를 전송한다. 예시적으로, 중앙 처리부 (110)는 키 관리자(120)로부터 수신된 키(KEY)를 이용하여 데이터를 암호화할 수 있다. 중앙 처리부(110)는 암호화된 데이터를 쓰기 커맨드 및 어드레스와 함께 외부 메모리(155)로 전달할 수 있다. 예시적으로, 외부 메모리(155)의 기입될 데이터의 암호화가 별도의 회로 또는 로직 의해 수행되는 경우, 암호화된 데이터는 중앙 처리부(110)가 아닌 별도의 회로 또는 로직으로부터 외부 메모리(155)로 전달될 수 있다. 외부 메모리(155)에 기입될 데이터의 암호화가 키 관리자(120)에 의해 수행되는 경우, 암호화된 데이터는 키 관리자(120)로부터 외부 메모리(155)로 전달될 수 있다.
S250 단계에서, 외부 메모리(155)에 암호화된 데이터가 기입된다.
도 12를 참조하여 설명된 바와 같이, 외부 메모리(155)에 기입되는 데이터는 키(KEY)를 이용하여 암호화된다. 키(KEY)는 사용자 설정 값(USV)에 기반한 사용자 인증을 통해 생성된다. 따라서, 외부 메모리(155)에 저장되는 데이터의 보안성이 향상된다.
도 13은 도 1의 데이터 프로세싱 시스템(10)의 동작 방법의 제2 예를 보여주는 순서도이다. 예시적으로, 데이터 프로세싱 시스템(10)이 외부 메모리(155)로부터 데이터를 읽는 방법이 도 13에 도시되어 있다.
도 1 및 도 13을 참조하면, S310 단계에서, 데이터 읽기 이벤트가 발생한다. 데이터 읽기 이벤트는 외부 메모리(155)로부터 데이터를 읽는 것이 요구되는 상황을 의미한다. 예를 들어, 데이터 프로세싱 시스템(10)의 중앙 처리부(110)에서 구동되는 운영체제, 어플리케이션 등과 같은 소프트웨어에 의해 데이터 읽기 이벤트가 발생할 수 있다.
S320 단계에서, 중앙 처리부(110)는 키 관리자(120)로 사용자 설정 값(USV) 및 커맨드(CMD)를 전송한다. 커맨드(CMD)는 키(KEY)를 요청하는 커맨드일 수 있다.
S330 단계에서, 키 관리자(120)는 중앙 처리부(110)로 키(KEY)를 전송할 수 있다. 예를 들어, 키 관리자(120)는 사용자 설정 값(USV)에 기반하여, 제1 스킴에 따라 키(KEY)를 생성하거나, 제2 스킴에 따라 키(KEY)를 생성 또는 로드하여 출력할 수 있다.
S330 단계에서, 상술된 에러 없이 키(KEY)가 정상적으로 출력되는 것으로 가정된다. 예시적으로, 키 관리자(120)는 외부 메모리(155)로부터 읽히는 데이터를 복호화하는 구성 요소로 키(KEY)를 출력할 수 있다. 중앙 처리부(110)가 복호화를 수행하는 경우, 키 관리자(120)는 중앙 처리부(110)로 키(KEY)를 출력할 수 있다. 키 관리자(120)가 데이터의 복호화까지 수행하는 경우, 즉 블록 암호화부(230)가 외부 메모리(155)로부터 읽히는 데이터의 복호화까지 수행하는 경우, 키 관리자(120)는 키(KEY)를 출력하지 않고 내부적으로 사용할 수 있다. 외부 메모리(155)로부터 읽히는 데이터의 복호화를 수행하는 별도의 회로 또는 로직이 데이터 프로세싱 시스템(10)에 제공되는 경우, 키 관리자(120)는 별도의 회로 또는 로직으로 키(KEY)를 출력할 수 있다. 도 13에서, 키 관리자(120)는 중앙 처리부(110)로 키(KEY)를 출력하는 것으로 가정되나, 본 발명의 기술적 사상은 이에 한정되지 않는다.
S340 단계에서, 중앙 처리부(110)는 외부 메모리(155)로 읽기 커맨드 및 어드레스를 전송할 수 있다.
S350 단계에서, 외부 메모리(155)는, S340 단계에서 수신된 읽기 커맨드에 응답하여, S340 단계에서 수신된 어드레스에 대응하는 위치에 저장된 암호화된 데이터를 읽을 수 있다.
S360 단계에서, 외부 메모리(155)는 읽어진 데이터, 즉 암호화된 데이터를 중앙 처리부(10)로 전송한다. 상술된 바와 같이, 외부 메모리(155)는 암호화된 데이터를 복호화하는 구성 요소로 암호화된 데이터를 전송할 수 있다. 외부 메모리(155)는 키(KEY)가 전송된 구성 요소로 암호화된 데이터를 전송할 수 있다. 중앙 처리부(110)가 복호화를 수행하는 경우, 외부 메모리(155)는 암호화된 데이터를 중앙 처리부(110)로 전송할 수 있다.
예시적으로, S320 단계 및 S330 단계는 순차적으로 수행될 수 있다. S340 단계 내지 S360 단계는 순차적으로 수행될 수 있다. S320 단계 및 S330 단계의 각 단계는 S340 단계 내지 S360 단계의 각 단계와 병렬적으로, 또는 각 단계의 이전에 또는 이후에 수행될 수 있다. S340 단계 내지 S360 단계의 각 단계는 S320 단계 및 S330 단계의 각 단계와 병렬적으로, 또는 각 단계의 이전에 또는 이후에 수행될 수 있다.
도 13을 참조하여 설명된 바와 같이, 외부 메모리(155)로부터 읽어지는 데이터는 키(KEY)를 이용하여 복호화된다. 키(KEY)는 사용자 설정 값(USV)에 기반한 사용자 인증을 통해 출력된다. 따라서, 외부 메모리(155)에 저장되는 데이터의 보안성이 향상된다.
도 14는 도 1의 데이터 프로세싱 시스템(10)의 동작 방법의 제3 예를 보여주는 순서도이다. 예시적으로, 데이터 프로세싱 시스템(10)이 제2 스킴에 따라 키(KEY)를 외부 메모리(155)에 백업하는 방법이 도 14에 도시되어 있다.
도 1 및 도 14를 참조하면, S410 단계에서, 백업 이벤트가 발생한다. 백업 이벤트는 제2 스킴에 따라 키(KEY)를 외부 메모리(155)에 백업하는 것이 요구되는 상황을 의미한다. 예를 들어, 데이터 프로세싱 시스템(10)의 중앙 처리부(110)에서 구동되는 운영체제, 어플리케이션 등과 같은 소프트웨어에 의해 백업 이벤트가 발생할 수 있다.
S420 단계에서, 중앙 처리부(110)는 사용자 설정 값(USV) 및 커맨드(CMD)를 키자(120)로 전송한다. 예시적으로, 커맨드(CMD)는 키(KEY)의 백업을 요청하는 커맨드일 수 있다.
S430 단계에서, 키 관리자(120)는 사용자 설정 값(USV) 및 키(KEY)를 이용하여 해시를 생성한다. 해시는 해시부(240)에 의해 생성될 수 있다. 키 관리자(120)는 사용자 설정 값(USV), 키(KEY) 및 해시(H)를 암호화하여 암호화된 데이터를 생성한다. 암호화는 블록 암호화부(230)에 의해 수행될 수 있다.
S440 단계에서, 키 관리자(120)은 암호화된 데이터를 외부 메모리(155)로 전송한다.
S450 단계에서, 중앙 처리부(110)는 쓰기 커맨드 및 어드레스를 외부 메모리(155)로 전송한다. 예시적으로, S450 단계는 S420 단계 내지 S440 단계 중 적어도 하나의 단계와 병렬적으로 수행될 수 있다. S450 단계는 S420 단계 내지 S440 단계 중 각 단계의 이전에 또는 이후에 수행될 수 있다.
예시적으로, 키 관리자(120)는 키(KEY)를 외부 메모리(155)로 출력하는 대신, 중앙 처리부(110)로 출력할 수 있다. 중앙 처리부(110)는 쓰기 커맨드 및 어드레스와 함께 키(KEY)를 외부 메모리(155)로 전송할 수 있다.
S460 단계에서, 외부 메모리(155)는, S450 단계에서 수신된 쓰기 커맨드에 응답하여, S450 단계에서 수신된 어드레스에 대응하는 위치에 암호화된 데이터를 기입한다.
도 14를 참조하여 설명된 바와 같이, 제2 스킴에 따라 생성 및 관리되는 키들은 사용자 설정 값(USV)에 기반한 사용자 인증을 통해 백업된다. 따라서, 해킹과 같은 불법적인 수단을 통해 키(KEY)가 복원될 수 없으므로, 키(KEY)의 보안성이 향상된다.
도 14에서, 키(KEY)는 외부 메모리(155)로 백업되는 것으로 설명되었다. 그러나, 키(KEY)는 외부 메모리(155)가 아닌 암호화된 키 메모리(280)로 백업될 수 있다. 즉, 키(KEY)는 키 관리자(120) 내부에서 백업될 수 있다.
도 15는 도 1의 데이터 프로세싱 시스템(10)의 동작 방법의 제4 예를 보여주는 순서도이다. 예시적으로, 데이터 프로세싱 시스템(10)이 제2 스킴에 따라 키(KEY)를 외부 메모리(155)로부터 복원하는 방법이 도 15에 도시되어 있다.
도 1 및 도 15를 참조하면, S510 단계에서, 복원 이벤트가 발생한다. 복원 이벤트는 제2 스킴에 따라 키(KEY)를 외부 메모리(155)로부터 복원하는 것이 요구되는 상황을 의미한다. 예를 들어, 데이터 프로세싱 시스템(10)의 중앙 처리부(110)에서 구동되는 운영체제, 어플리케이션 등과 같은 소프트웨어에 의해 복원 이벤트가 발생할 수 있다.
S520 단계에서, 중앙 처리부(110)는 키 관리자(120)로 사용자 설정 값 및 커맨드(CMD)를 전송할 수 있다. 커맨드(CMD)는 키(KEY)의 복원을 요청하는 커맨드일 수 있다.
S530 단계에서, 중앙 처리부(110)는 외부 메모리(155)로 읽기 커맨드 및 어드레스를 전송한다.
S540 단계에서, 외부 메모리(155)는, S530 단계에서 수신된 읽기 커맨드에 응답하여, S530 단계에서 수신된 어드레스에 대응하는 위치로부터 암호화된 데이터를 읽을 수 있다.
S550 단계에서, 외부 메모리(155)는 읽어진 데이터, 즉 암호화된 데이터를 키 관리자(120)로 전송할 수 있다.
예시적으로, S520 단계는 S530 단계 내지 S550 단계 중 적어도 하나의 단계와 병렬적으로 수행될 수 있다. S520 단계는 S530 단계 내지 S550 단계의 각 단계의 이전에 또는 이후에 수행될 수 있다.
예시적으로, 외부 메모리(155)는 암호화된 데이터를 키 관리자(120)로 출력하는 대신, 중앙 처리부(110)로 출력할 수 있다. 중앙 처리부(110)는 암호화된 데이터를 키 관리자(120)로 전송할 수 있다. 키 관리자(120)는 암호화된 데이터를 복호화하여, 키 메모리(270)에 저장할 수 있다.
도 15를 참조하여 설명된 바와 같이, 제2 스킴에 따라 생성 및 관리되는 키들은 사용자 설정 값(USV)에 기반한 사용자 인증을 통해 복원된다. 따라서, 해킹과 같은 불법적인 수단을 통해 키(KEY)가 복원될 수 없으므로, 키(KEY)의 보안성이 향상된다.
도 15에서, 키(KEY)는 외부 메모리(155)로부터 복원되는 것으로 설명되었다. 그러나, 키(KEY)는 외부 메모리(155)가 아닌 암호화된 키 메모리(280)로부터 복원될 수 있다. 즉, 키(KEY)는 키 관리자(120) 내부에서 복원될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10; 데이터 처리 시스템
100; 시스템-온-칩
135; 표시 장치
155; 외부 메모리
110; 중앙 처리부
120; 키 관리자
130; 표시 제어기
140; ROM
150; 메모리 컨트롤러
160; RAM

Claims (10)

  1. 메모리;
    상기 메모리를 제어하도록 구성되는 중앙 처리부; 그리고
    상기 중앙 처리부의 제어에 따라 키를 관리하도록 구성되는 키 관리자를 포함하고,
    상기 키 관리자는,
    상기 키 관리자에 고유한 고유값을 저장하고,
    상기 중앙 처리부로부터 커맨드 및 사용자 설정 값이 수신되는 것에 응답하여, 상기 사용자 설정 값 및 상기 고유값에 기반하여 키를 생성하고, 그리고 상기 생성된 키를 상기 중앙 처리부로 출력하도록 구성되고,
    상기 고유값은 상기 키 관리자의 외부로 출력되지 않고 상기 키 관리자의 내부에서만 사용되고,
    상기 키 관리자는, 동일한 사용자 설정 값들을 이용하여 동일한 키들을 생성하고, 서로 다른 사용자 설정 값들을 이용하여 서로 다른 키들을 생성하는 시스템-온-칩.
  2. 제1 항에 있어서,
    상기 키 관리자는, 상기 고유값 및 상기 사용자 설정 값을 이용하여 블록 암호화(block cipher) 또는 키 해시(key hash)를 수행하여 상기 키를 도출하도록 구성되는 시스템-온-칩.
  3. 제1 항에 있어서,
    난수를 출력하도록 구성되는 난수 발생기를 더 포함하고,
    상기 키 관리자는 상기 난수 발생기로부터 출력되는 상기 난수를 상기 키로 선택하도록 구성되는 시스템-온-칩.
  4. 제3 항에 있어서,
    키 메모리를 더 포함하고,
    상기 키 관리자는 상기 키로 선택된 상기 난수를 상기 사용자 설정 값과 연관하여 상기 키 메모리에 저장하도록 구성되는 시스템-온-칩.
  5. 제4 항에 있어서,
    상기 키 관리자는, 키의 로딩을 요청하는 커맨드에 응답하여, 상기 사용자 설정 값에 대응하는 키를 상기 키 메모리로부터 출력하도록 구성되는 시스템-온-칩.
  6. 제4 항에 있어서,
    상기 키 관리자는, 키의 백업을 요청하는 커맨드에 응답하여, 상기 사용자 설정 값에 대응하는 키를 상기 키 메모리로부터 읽어 백업하도록 구성되는 시스템-온-칩.
  7. 제6 항에 있어서,
    상기 고유값을 이용하여 상기 사용자 설정 값 및 상기 키 메모리로부터 읽힌 키를 암호화하도록 구성되는 블록 암호화부를 더 포함하고,
    상기 키의 백업을 요청하는 커맨드에 응답하여, 상기 블록 암호화부에 의해 암호화된 키가 백업되는 시스템-온-칩.
  8. 제6 항에 있어서,
    상기 사용자 설정 값 및 상기 키 메모리로부터 읽어진 상기 키의 해시를 생성하도록 구성되는 해시부를 더 포함하고,
    상기 키의 백업을 요청하는 커맨드에 응답하여, 상기 해시가 상기 키 메모리로부터 읽어진 상기 키와 함께 백업되는 시스템-온-칩.
  9. 중앙 처리부 및 데이터를 암호화 또는 복호화하기 위한 키를 관리하는 키 관리자를 포함하는 시스템-온-칩의 동작 방법에 있어서:
    상기 키 관리자가 상기 중앙 처리부로부터 키 요청 커맨드 및 사용자 설정 값을 수신하는 단계; 그리고
    상기 키 요청 커맨드에 응답하여, 상기 키 관리자가 상기 키 관리자의 고유값 및 상기 사용자 설정 값을 이용하여 키를 생성하고, 그리고 상기 중앙 처리부로 상기 키를 출력하는 단계를 포함하고,
    상기 고유값은 상기 키 관리자의 외부로 출력되지 않고 상기 키 관리자의 내부에서만 사용되고,
    동일한 사용자 설정 값들을 이용하여 동일한 키들이 생성되고, 서로 다른 사용자 설정 값들을 이용하여 서로 다른 키들이 생성되는 동작 방법.
  10. 제 9 항에 있어서,
    상기 키를 출력하는 단계는,
    상기 키 요청 커맨드가 제1 타입일 때, 제1 스킴에 따라 상기 키를 출력하고, 상기 키 요청 커맨드가 상기 제1 타입과 다른 제2 타입일 때, 상기 제1 스킴과 다른 제2 스킴에 따라 상기 키를 출력하는 단계를 포함하고,
    동일한 사용자 설정 값들에 응답하여, 상기 제1 스킴에 따라 출력되는 키와 상기 제2 스킴에 따라 출력되는 키는 서로 다른 동작 방법.
KR1020140049450A 2013-08-30 2014-04-24 키 관리자를 포함하는 데이터 프로세싱 시스템 및 및 키 관리자의 동작 방법 KR102240830B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
KR1020130104382 2013-08-30
KR20130104382 2013-08-30
US201361885840P 2013-10-02 2013-10-02
US61/885,840 2013-10-02
US14/251,120 2014-04-11
US14/251,120 US9935768B2 (en) 2012-08-06 2014-04-11 Processors including key management circuits and methods of operating key management circuits

Publications (2)

Publication Number Publication Date
KR20150027677A KR20150027677A (ko) 2015-03-12
KR102240830B1 true KR102240830B1 (ko) 2021-04-19

Family

ID=53022952

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140049450A KR102240830B1 (ko) 2013-08-30 2014-04-24 키 관리자를 포함하는 데이터 프로세싱 시스템 및 및 키 관리자의 동작 방법

Country Status (1)

Country Link
KR (1) KR102240830B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9864879B2 (en) * 2015-10-06 2018-01-09 Micron Technology, Inc. Secure subsystem

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009135890A (ja) * 2007-10-31 2009-06-18 Hitachi Ltd 暗号化装置、復号装置及び暗号システム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009135890A (ja) * 2007-10-31 2009-06-18 Hitachi Ltd 暗号化装置、復号装置及び暗号システム

Also Published As

Publication number Publication date
KR20150027677A (ko) 2015-03-12

Similar Documents

Publication Publication Date Title
KR102013841B1 (ko) 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치
US9537656B2 (en) Systems and methods for managing cryptographic keys in a secure microcontroller
KR101608510B1 (ko) 글로벌 플랫폼 규격을 사용하는 발행자 보안 도메인에 대한 키 관리 시스템 및 방법
US9455963B1 (en) Long term encrypted storage and key management
TWI245182B (en) Method, chipset, system and recording medium for responding to a sleep attack
US9582656B2 (en) Systems for validating hardware devices
US9935768B2 (en) Processors including key management circuits and methods of operating key management circuits
WO2019104988A1 (zh) Plc的安全处理单元及其总线仲裁方法
US9660986B2 (en) Secure access method and secure access device for an application program
TW202036347A (zh) 資料儲存、驗證方法及裝置
US11222144B2 (en) Self-encrypting storage device and protection method
WO2017128720A1 (zh) 基于vtpm对虚拟机进行安全保护的方法及系统
US9262631B2 (en) Embedded device and control method thereof
EP3757838B1 (en) Warm boot attack mitigations for non-volatile memory modules
US20130326219A1 (en) Stored public key validity registers for cryptographic devices and systems
US20150227755A1 (en) Encryption and decryption methods of a mobile storage on a file-by-file basis
US11520859B2 (en) Display of protected content using trusted execution environment
CN101150459B (zh) 提高信息安全装置安全性的方法及系统
US11308238B2 (en) Server and method for identifying integrity of application
KR102240830B1 (ko) 키 관리자를 포함하는 데이터 프로세싱 시스템 및 및 키 관리자의 동작 방법
CN115062330B (zh) 基于tpm的智能密码钥匙密码应用接口的实现方法
CN109583196B (zh) 一种密钥生成方法
CN111357003A (zh) 预操作系统环境中的数据保护
US20160299854A1 (en) Techniques for preventing physical attacks on contents of memory
WO2018017019A1 (en) Personal security device and method

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