KR102013841B1 - 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치 - Google Patents

데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치 Download PDF

Info

Publication number
KR102013841B1
KR102013841B1 KR1020120085892A KR20120085892A KR102013841B1 KR 102013841 B1 KR102013841 B1 KR 102013841B1 KR 1020120085892 A KR1020120085892 A KR 1020120085892A KR 20120085892 A KR20120085892 A KR 20120085892A KR 102013841 B1 KR102013841 B1 KR 102013841B1
Authority
KR
South Korea
Prior art keywords
key
command
encryption
encryption key
random number
Prior art date
Application number
KR1020120085892A
Other languages
English (en)
Other versions
KR20140019599A (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 KR1020120085892A priority Critical patent/KR102013841B1/ko
Priority to US13/956,592 priority patent/US9094190B2/en
Priority to DE102013108394.3A priority patent/DE102013108394A1/de
Priority to CN201310339779.5A priority patent/CN103577768A/zh
Publication of KR20140019599A publication Critical patent/KR20140019599A/ko
Priority to US14/251,120 priority patent/US9935768B2/en
Application granted granted Critical
Publication of KR102013841B1 publication Critical patent/KR102013841B1/ko

Links

Images

Classifications

    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치가 개시된다. 본 발명의 키 관리 장치는 호스트로부터 입력되는 커맨드를 수신하고, 상기 커맨드를 해석하여 실행시키는 메인 제어부, 비암호화된 데이터 또는 비암호키를 암호화하고, 암호화된 데이터 또는 암호 키를 복구하는 암호화부, 상기 키를 해싱하는 해시부, 상기 비암호키를 저장하기 위한 비암호키 메모리 및 상기 암호 키를 저장하기 위한 암호키 메모리를 포함한다.

Description

데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치{METHOD OF MANAGING KEY FOR SECURE STORAGE OF DATA, AND AND APPARATUS THERE-OF}
본 발명은 데이터 저장 장치에 관한 것으로, 보다 구체적으로는 데이터를 안전하게 저장 및 관리하기 위하여 키를 관리하는 방법 및 그 장치에 관한 것이다.
모바일 장치 상에서 실행되는 어플리케이션의 다양화에 따라 편리성은 증가하였지만, 중요한 데이터(Financial Data, Key, Certificate, IMEI, SimLock 등)를 처리하는 빈도도 크게 증가하였으며 그 안정성을 위협하는 공격 기술 또한 발전하는 추세이다.
따라서, 암호 기술의 적용은 선택사항이 아닌 필수사항으로 자리매김하고 있다. 특히, 보안 저장 기능은 모바일 보안의 핵심요소중의 하나로써 중요한 데이터를 안전하게 보관하고 복구하는 기술로서, 데이터를 처리하는 어플리케이션의 요청에 따라 데이터를 안전하게 저장하고 관리하며, 해당 어플리케이션에게만 접근을 허용하게 하는 기술을 말한다.
이를 위해서는 데이터 접근 권한을 가지지 않는 어플리케이션이나 악의적인 소프트웨어(Malware, Virus등)로부터 데이터를 보호할 수 있도록 하는 암호화 기술이 반드시 적용되어야 하며, 암호화에 사용되는 키를 안전하게 관리하는 기술 또한 필수적인 기술이다.
따라서, 본 발명이 해결하려는 과제는 키(key)의 생성부터 파기까지의 라이프 싸이클 동안 키의 안정성을 향상시키는 키 관리 장치 및 키 관리 방법을 제공하는 것이다.
본 발명의 일 실시예에 따르면, 호스트로부터 입력되는 커맨드를 수신하고, 상기 커맨드를 해석하여 실행시키는 메인 제어부; 비암호화된 데이터 또는 비암호키를 암호화하고, 암호화된 데이터 또는 암호 키를 복구하는 암호화부; 상기 키를 해싱하는 해시부; 상기 비암호키를 저장하기 위한 비암호키 메모리; 및 상기 암호 키를 저장하기 위한 암호키 메모리를 포함하는 키 관리 장치가 제공된다.
상기 메인 제어부는 상기 커맨드를 저장하는 커맨드를 저장하기 위한 레지스터를 포함하며, 유한 상태 머신으로 구현될 수 있다.
상기 레지스터는 상기 커맨드를 저장하는 커맨드 레지스터 및 상태 정보를 저장할 수 있다.
상기 커맨드는 커맨드 타입과 비암호키 어드레스를 포함하고, 상기 커맨드 레지스터는 상기 커맨드 타입과 비암호키 어드레스를 저장할 수 있다.
상기 커맨드는 미리 정의된 키 생성 커맨드, 키 암호화 커맨드, 키 복구 커맨드, 키 로드 커맨드, 및 키 파기 커맨드를 포함할 수 있다.
상기 키 관리 장치는 테스트 모드 동안 상기 호스트가 상기 레지스터들에 접근할 수 있도록 제어하는 디버그 모드 모듈을 더 포함할 수 있다.
본 발명의 다른 실시예에 따르면, 호스트로부터 입력되는 커맨드를 커맨드 레지스터에 저장하는 단계; 상기 커맨드 레지스터의 상기 커맨드를 해석하여 실행하는 단계; 상기 커맨드가 키 생성 커맨드인 경우, 난수 발생기로부터 비암호키를 생성하여 비암호키 메모리에 저장하는 키 생성 단계; 및 상기 커맨드가 키 암호화 커맨드인 경우, 상기 비암호키를 암호화하여 암호화키 메모리에 저장한 후, 상기 암호화키 메모리로부터 독출하여 출력하는 키 암호화 단계를 포함하는 키 관리 방법이 제공된다.
본 발명의 실시예에 따르면, 호스트는 커맨드를 통해서만 키 관리 장치의 키에 접근할 수 있고, 소프트웨어가 직접적으로 키에 접근하지 못하도록 통제된다.
따라서, 키(key)의 생성부터 파기까지의 전 라이프 싸이클동안 키는 안전하게 관리될 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템의 기능 블록도이다.
도 2는 도 1에 도시된 키 관리 장치를 구체적으로 나타낸 블록도이다.
도 3은 키의 계층 구조를 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 따른 비암호키에서 암호키를 생성하는 과정을 설명하기 위한 도면이다.
도 5는 도 2에 도시된 커맨드 레지스터의 일 예를 나타내는 도면이다.
도 6은 키 생성 커맨드에 대한 처리 플로우이다.
도 7은 키 암호화 커맨드에 대한 처리 플로우이다.
도 8은 키 복구 커맨드에 대한 처리 플로우이다.
도 9는 키 로드 커맨드에 대한 처리 플로우이다.
도 10은 키 파기 커맨드에 대한 처리 플로우이다.
도 11은 비암호 키 메모리에 저장된 각 비암호키 엔트리에 대응하는 유효 비트를 나타내는 도면이다.
도 12는 키의 라이프 싸이클을 나타내는 도면이다.
도 13은 본 발명의 일 실시예에 따른 키 관리 장치의 유한 상태 머신을 나타내는 상태 천이도이다.
도 14는 본 발명의 실시예에 따른 디버그 모드 모듈의 블록도이다.
도 15는 본 발명의 다른 실시예에 따른 데이터 처리 시스템의 구성 블록도이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명에 따른 실시예는 다양한 변경을 가할 수 있고 여러가지 형태를 가질 수 있으므로 특정실시 예들을 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템(10)의 기능 블록도이다. 도 1을 참조하면, 데이터 처리 시스템(10)은 시스템 온 칩(100, 이하 SOC라 함), 디스플레이 장치(135) 및 메모리 장치(155)를 포함할 수 있다.
데이터 처리 시스템(10)은 이동 단말기(mobile device), 스마트 폰(smart phone), PDA(personal digital assistant), PC(personal computer), 태블릿(tablet) PC, 노트북, 넷-북(net-book), e-리더(e-reader), PMP(portable multimedia player), MP3 플레이어, MP4 플레이어 등일 수 있으나, 이에 한정되는 것은 아니다.
SOC(100)는 애플리케이션 프로세서(Application Processor)일 수 있다. 애플리케이션 프로세서는 데이터 처리 시스템(10)의 동작을 전반적으로 제어할 수 있다.
SOC(100)는 CPU(Central processing unit, 110), 키 관리 장치(120), 디스플레이 컨트롤러(130), ROM(read only memory; 140), RAM(random access memory; 160), 메모리 컨트롤러(150) 및 버스를 포함할 수 있다. SoC(100)는 도시된 구성요소 외에도 다른 구성요소, 예컨대, 전원 관리 유닛(power management unit), TV 프로세서. GPU(Central processing unit), 클락 유닛(clock unit) 등을 더 포함할 수 있다.
CPU(110)는 메모리(140, 150 또는 155)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예컨대, CPU(110)는 동작 클락에 따라 상기 프로그램들 및/또는 상기 데이터를 처리 또는 실행할 수 있다.
CPU(110)는 멀티-코어 프로세서(multi-core processor)로 구현될 수 있다. 상기 멀티-코어 프로세서는 두 개 또는 그 이상의 독립적인 실질적인 프로세서들('코어들(cores)'이라고 불림)을 갖는 하나의 컴퓨팅 컴포넌트(computing component)이고, 상기 프로세서들 각각은 프로그램 명령들(program instructions)을 읽고 실행할 수 있다. 상기 멀티-코어 프로세서는 다수의 가속기를 동시에 구동할 수 있으므로, 상기 멀티-코어 프로세서를 포함하는 데이터 처리 시스템은 멀티-가속(multi-acceleration)을 수행할 수 있다.
키 관리 장치(120)는 암호화에 사용되는 키를 관리하고, 데이터 및 키를 암호화하며 복구(복호화)하는 장치이다.
보안 저장(Secure Storage)은 중요한 데이터에 대해서 권한이 허용된 사용자나 프로그램에만 접근(Access)를 허용하는 기술이다. 이를 위해서는 불법적인 사용자나 프로그램으로부터 데이터를 보호할 수 있도록 암호화한 후 안전하게 메모리에 저장하고, 필요시 복구(Decryption)하여 사용한다. 불법적인 접근 여부를 판별하는 기준은 암호화에 사용되는 키에 대한 사용권한의 유무에 따라 결정되므로 키의 안전한 관리가 핵심적인 기술이다.
키 관리의 핵심은 키 스니핑 공격(Key Sniffing Attack)과 키 손상 공격(Key Corruption Attack)으로부터 키를 보호하는 것이다. 키 스니핑 공격은 불법적으로 키에 접근하는 것을 의미하며, 키 손상 공격은 키를 손상시키거나 망가지게 하는 것을 의미한다. 따라서, 키를 안전하게 관리하기 위해서는, 상술한 키에 대한 불법적인 접근을 차단하고, 키 손상시, 키의 무결성을 확인할 수 있어야 한다.
키 관리 장치(120)는 키 관리 기능을 제공한다.
키 관리 기능은 키의 생성, 사용, 저장, 복구, 및 파기 등의 키의 전 라이프 싸이클을 관리하는 것이다. 또한 키 관리 기능은 파워 오프등에 대비해서 키를 비휘발성 메모리 장치로 암호화하여 저장하는 기능 및 필요시 복구하는 기능도 포함한다.
또한, 키 관리 기능은 키를 암호화하는 기능, 키 해싱 기능 및 호스트(예컨대, 호스트에서 실행되는 소프트웨어 또는 어플리케이션)가 키를 접근할 수 없도록 하는 접근 제어 기능을 포함한다.
본 발명의 실시예에 따르면, 키 관리 장치(120)의 암호화부(230), 해시부(240), 및 메모리(270, 280) 등은 전적으로 하드웨어 모듈만으로 구성될 수 있으나 이에 한정되는 것은 아니다. 아울러, 본 발명의 실시예에 따르면, 호스트는 커맨드를 통해서만 키 관리 장치(120)를 동작시킬 수 있고, 소프트웨어는 키에 접근하지 못한다.
메모리 장치(155)에 저장된 프로그램들 및/또는 데이터는 필요에 따라 SOC(100) 또는 CPU(110) 내 메모리에 로드(load)될 수 있다.
ROM(140)은 영구적인 프로그램들 및/또는 데이터를 저장할 수 있다. ROM(140)은 EPROM(erasable programmable read-only memory) 또는 EEPROM(electrically erasable programmable read-only memory)으로 구현될 수 있다.
RAM(160)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대, 메모리(220)에 저장된 프로그램들 및/또는 데이터는 CPU(110)의 제어 또는 ROM(140)에 저장된 부팅 코드(booting code)에 따라 RAM(160)에 일시적으로 저장될 수 있다. RAM(160)은 DRAM(dynamic RAM) 또는 SRAM(static RAM)으로 구현될 수 있다.
메모리 컨트롤러(150)는 외부 메모리 장치(155)와 인터페이스하기 위한 블록이다. 메모리 컨트롤러(150)는 메모리 장치(155)의 동작을 전반적으로 제어하며, 또한 호스트와 메모리 장치(155)간의 제반 데이터 교환을 제어한다. 예컨대, 메모리 컨트롤러(150)는 호스트의 요청에 따라 메모리(155)를 제어하여 데이터를 쓰거나 데이터를 독출한다.
여기서, 호스트는 CPU(110), 디스플레이 컨트롤러(130)와 같은 마스터 장치일 수 있다.
메모리 장치(155)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 메모리 장치(155)는 휘발성 메모리 장치(DRAM 등) 또는 비휘발성 메모리 장치(플래시 메모리, PRAM, MRAM, ReRAM, 또는 FeRAM 장치)일 수 있다. 본 발명의 다른 실시예에서는 메모리 장치(155)는 SoC(100) 내부에 구비되는 내장 메모리일 수 있다.
각 구성 요소는 시스템 버스를 통하여 서로 통신할 수 있다.
디스플레이 디바이스(135)는 멀티미디어 데이터를 디스플레이할 수 있다. 본 실시예에서 디스플레이 디바이스(135)는 LCD 디바이스이지만, 본 발명의 실시예가 이에 한정되는 것은 아니다. 예컨대, 디스플레이 디바이스는 LED, OLED 디바이스, 혹은 다른 종류의 디바이스일 수 있다.
디스플레이 디바이스 컨트롤러(130)는 디스플레이 디바이스(230)의 동작을 제어한다.
도 2는 도 1에 도시된 키 관리 장치(120)의 구성 블록도이다. 도 2를 참조하면, 키 관리 장치(120)는 키 관리부(200), 키 생성부(250, 260) 및 키 메모리(270, 280)를 포함한다.
키 관리부(200)는 레지스터(210), 메인 제어부(220), 블록 암호화부(230), 및 해시부(240)를 포함한다.
키 생성부(250, 260)는 난수 발생기(250), 및 OTP(260)를 포함할 수 있다.
본 실시예에서는, OTP(One Time Programmable Memory, 260)가 키 관리 장치(120) 내에 구비되나, 다른 실시예에서는, OTP(260)는 키 관리 장치(120)의 외부에 구비될 수 있다.
키 메모리(270, 280)는 암호화된 키를 저장하는 암호키 메모리(280)와 비암호화된 키를 저장하는 비암호키 메모리(270)를 포함한다.
키 관리부(200)는 하드웨어로 구현될 수 있다. 키 관리부(200)는 다양한 키 사이즈(Key Size)의 블록 암호화(Block Cipher)를 지원하며, 다양한 커맨드(예컨대, 다섯 개의 Command)를 사용하여 키 생성, 키 암호화, 키 복호화(키 복구), 키 로드, 및 키 파기 기능을 제공한다.
레지스터(210)는 커맨드 레지스터(211) 및 상태 레지스터(212)를 포함한다. 커맨드 레지스터(211)는 호스트(21)로부터 입력되는 커맨드를 저장한다. 상태 레지스터(212)는 호스트(21)의 커맨드에 대한 실행 결과를 저장하는 레지스터로서, 상태 레지스터(212)의 데이터는 인터럽트 또는 폴링 방식으로 호스트에 통보된다.
메인 제어부(220)는 호스트(21)로부터 입력되는 커맨드를 해석하고 실행한다. 메인 제어부(220)는 유한 상태 머신(FSM)으로 구현될 수 있다.
블록 암호화부(230)는 데이터 및 키를 암호화(Encryption)하거나 복호화(Decryption, 복구라고도 함)한다.
블록 암호화부(230)는 데이터를 암호화하는 데 사용되는 키(DEK: Data Encryption Key)(이하, 데이터 암호화 키라 함)는 키 생성부의 난수 발생기(250)로부터 수신할 수 있다.
난수 발생기(250)는 하드웨어 난수 발생기(TRNG : Hardware random number generator) 또는 의사 난수 발생기(PRNG : Pseudo random number generator)로 구현될 수 있다.
블록 암호화부(230)는 키를 암호화하는 데 사용되는 키(KEK: Key Encryption Key) (이하, 키 암호화 키라 함)는 OTP(One-Time Programmable Memory, 260)로부터 수신할 수 있다.
블록 암호화부(230)는 코어 로직(231), 키 레지스터(232), 입력 데이터 레지스터(233) 및 출력 데이터 레지스터(234)를 포함할 수 있다.
코어 로직(231)는 암호 및 복호를 수행하는 로직이다. 키 레지스터(232)는 키 또는 데이터를 암호화(또는 복호화)하는 데 사용되는 키(KEK, DEK)가 임시 저장되는 레지스터이다. 입력 데이터 레지스터(233)는 암호화할 또는 복호화할 키나 데이터를 임시 저장하고, 출력 데이터 레지스터(234)는 암호화된 또는 복호화된 키나 데이터를 임시 저장한다.
키를 암호화할 때 동일한 키에 대해서는 동일한 암호가 나온다. 따라서, 암호화된 키가 외부 메모리에 저장되는 경우, 키의 실제 값을 알 수는 없어도 키의 동일성 여부는 확인이 가능하다. 이를 방지하기 위해서 암호화된 키를 랜덤화하기 위해서 난수를 키와 섞어서 암호화를 수행한다.
이때 사용되는 난수 역시 난수 발생기(250)로부터 생성하여 전달받을 수 있다.
해시부(240)는 키를 해싱하는데 사용된다. 해시부(240)의 해시 알고리즘은 임의의 길이를 가지는 입력값을 고정된 길이의 출력값으로 바꾸어주는 함수이다. 이 때 출력 값을 해시값이라 한다.
해시부(240)의 동작에 대해서는 후술한다.
비암호키 메모리(270)는 난수 발생기(250)로부터 생성된 로(raw) 키, 즉 암호화되지 않은 키 또는 복호화된 키를 저장하는 메모리이고. 암호키 메모리는 키 외부 전송을 위해서 암호화된 키를 저장하는 메모리이다.
키 관리 장치(120)는 호스트 인터페이스(22)를 통해 호스트(21)와 인터페이스 한다.
호스트 인터페이스(22)는 호스트(21)와 커맨드, 상태 및 키를 주고 받기 위한 인터페이스이다. 일 실시예에서, 호스트 인터페이스(22)는 AMBA AHB 슬레이브 인터페이스를 사용할 수 있으나, 이에 한정되는 것은 아니다.
키 관리 장치(120)에서 사용하는 키는 크게 암호 키와 비암호 키로 나누어진다. 비암호 키는 암호화되지 않은 키로서 키 관리 장치(120) 내에서만 사용되며, 호스트(21)가 억세스 할 수 없는 키이다. 암호키는 비암호키를 보관을 위하여 외부로 내보내기 위하여 암호화된 키이다. 키를 암호화할 때 랜덤화를 위하여 난수와 키를 해싱한 해시값을 사용한다.
도 3은 키의 계층 구조를 나타내는 도면이다.
이를 참조하면, 키는 크게 두 가지 종류가 있다. 하나는 시스템 레벨에서 사용되는 키 암호용 키(KEK)이고, 다른 하나는 사용자 레벨에서 사용되는 데이터 암호용 키(DEK)이다. 키 암호용 키는 키를 암호화하는데 사용되는 키로서, 루트 키(Root key)라고도 한다. 키 암호용 키는 외부(예컨대, OTP)로부터 제공받게 된다.
데이터 암호용 키(DEK 1~ DEK N)는 데이터를 암호화는데 사용되는 키이며 난수 발생기(예컨대, TRNG 또는 PRNG)에서 생성되어 전달받게 되며, 비암호 키 메모리(270)에 저장된다.
도 4는 본 발명의 일 실시예에 따른 비암호키에서 암호키를 생성하는 과정을 설명하기 위한 도면이다.
도 4를 참조하면, 비암호키는 두 파트, 즉 제1 비암호키 부분(DEK_1)과 제2 암호키 부분(DEK_2)으로 나누어질 수 있다. 난수 발생기(250)에서 발생된 난수 역시 두 파트, 즉 제1 난수 부분(RN_1)과 제2 난수 부분(RN_2)으로 나누어질 수 있다.
제1 비암호키 부분(DEK_1)과 제1 난수(RN_1)를 결합하여 제1 암호키 부분(41)이 구성된다. 즉, 제1 암호키 부분(41)은 제1 비암호키 부분(DEK_1)과 제1 난수(RN_1)로 구성된다.
제2 비암호키 부분(DEK_2)과 제2 난수(RN_2)를 결합하여 제2 암호키 부분(42)이 구성된다. 즉, 제2 암호키 부분(42)은 제2 비암호키 부분(DEK_2)과 제2 난수(RN_2)로 구성된다.
비암호키는 M(2이상의 정수) 비트로 구성될 수 있다. 난수 발생기(250)에서 발생되는 난수 역시 M 비트로 구성될 수 있으나, 비암호키의 비트수와 난수의 비트수가 동일해야 하는 것은 아니다.
비암호키의 일부분(예컨대, 상위 비트들)은 제1 비암호키 부분(DEK_1)에 해당하고 비암호키의 나머지(예컨대, 하위 비트들)은 제2 비암호키 부분(DEK_2)에 해당할 수 있으나, 본 발명의 실시예가 이에 한정되는 것은 아니다.
난수 발생기(250)에서 발생되는 난수 비트들 중 일부(예컨대, 상위 비트들)은 제1 난수(RN_1)에 해당하고, 다른 일부(예컨대, 중간 비트들)은 제2 난수(RN_2)에 해당할 수 있으나, 본 발명의 실시예에가 이에 한정되는 것은 아니다.
암호키는 상술한 제1 암호키 부분(41), 제2 암호키 부분(42) 및 해시값(43)으로 구성된다.
암호키에서 비암호키를 생성하는 과정, 즉 복호화 과정은 상술한 과정의 반대 과정이다.
도 5는 도 2에 도시된 커맨드 레지스터(211)의 일 예를 나타내는 도면이다.
이를 참조하면, 커맨드는 커맨드 타입(COMMAND_TYPE)과 비암호화키 어드레스(REDMEM_ADDR)를 포함한다. 따라서, 커맨드 레지스터 역시 커맨드 타입과 비암호화키 어드레스를 저장할 수 있는 구성을 가진다.
커맨드 타입(COMMAND_TYPE)은 미리 정의된 개수로 정의될 수 있다. 즉, 커맨드 타입은 미리 정의된 커맨드들 중 하나를 지정하기 위한 데이터이다. 어드레스는 비암호 키에 대한 타겟 주소를 나타낸다.
본 발명의 실시예에서, 5개의 커맨드들만 정의될 수 있으나. 본 발명의 실시예가 이에 한정되는 것은 아니다.
커맨드들은 키 생성 커맨드, 키 암호화 커맨드, 키 복구 커맨드, 키 로드 커맨드, 및 키 파기 커맨드를 포함할 수 있다.
도 6 내지 10은 각각 커맨드에 응답하여 해당 커맨드를 처리하는 과정을 나타내는 흐름도이다. 도 6 내지 10의 과정은 본 발명의 실시예에 따른 데이터 처리 시스템에서 실행될 수 있다.
도 6은 키 생성 커맨드에 대한 처리 플로우이다.
먼저, 호스트(21)가 키 생성 커맨드를 커맨드 레지스터(211)에 기입(write)한다(S110). 예컨대, 호스트(21)는 키 생성 커맨드에 해당하는 커맨드 타입과, 해당 비암호화키 어드레스를 커맨드 레지스터(211)에 기입할 수 있다. 키 생성 커맨드가 커맨드 레지스터(211)에 기입되면, 메인 제어부(220)는 커맨드 레지스터(211)의 커맨드를 해석하여 실행한다.
예컨대, 메인 제어부(220)는 난수 발생기(250)로부터 비암호 키를 제공받는다(S120). 비암호키는 난수 발생기(250)로부터 생성된 난수이다. 다음으로, 메인 제어부(220)는 제공받은 비암호키를 비암호키 메모리(270)의 해당 어드레스에 기입한다(S130).
도 7은 키 암호화 커맨드에 대한 처리 플로우이다.
먼저, 호스트(21)가 키 암호화 커맨드를 커맨드 레지스터(211)에 기입(write)한다(S210). 예컨대, 호스트(21)는 키 암호화 커맨드에 해당하는 커맨드 타입과, 해당 어드레스를 커맨드 레지스터(211)에 기입할 수 있다. 키 암호화 커맨드가 커맨드 레지스터(211)에 기입되면, 메인 제어부(220)는 커맨드 레지스터(211)의 커맨드를 해석하여 실행한다.
예컨대, 메인 제어부(220)는 비암호키 메모리(270)의 해당 어드레스에서 비암호 키를 독출하여 블록 암호화부(230)와 해시부(240)로 전달한다(S220). 해시부(240)는 비암호키를 난수 발생기(250)로부터 제공받은 난수와 섞어 해시값을 발생한다(S230). 해시부(240)는 해시값을 블록 암호화부(230)로 전달한다. 블록 암호화부(230)는 비암호키, 난수 및 해시값에 대해서 키 암호키(KEK)를 사용하여 암호화한다(S240). 키 암호키(KEK)는 OTP(260)로부터 제공받을 수 있다.
생성된 암호키를 암호키 메모리(280)에 저장하면(S250), 호스트가 호스트 인터페이스(22)를 통하여 암호키 메모리(280)로부터 암호키를 독출하여 외부 메모리 장치(155)에 저장한다(S260).
도 8은 키 복구 커맨드에 대한 처리 플로우이다.
먼저, 호스트(21)는 외부 메모리(155)로부터 암호 키를 독출하여 인터페이스를 통하여 암호키 메모리(280)에 기입한 후, 키 복구 커맨드(또는 키 복호화 커맨드라고도 함)를 커맨드 레지스터(211)에 기입(write)한다(S310). 예컨대, 호스트는 키 복구 커맨드에 해당하는 커맨드 타입과, 해당 어드레스를 커맨드 레지스터(211)에 기입할 수 있다. 키 복구 커맨드가 커맨드 레지스터(211)에 기입되면, 메인 제어부(220)는 커맨드 레지스터(211)의 커맨드를 해석하여 실행한다.
에컨대, 메인 제어부(220)는 암호키의 복호화를 위하여 암호키 메모리(280)로부터 암호키를 독출하여 블록 암호화부(230)로 전달한다. 블록 암호화부(230)는 상술한 암호화 과정의 반대 과정을 통해 암호키로부터 비암호키를 생성한다. 키 무결성을 체크하기 위하여 복호된 비암호키는 해시부(240)로 전달된다.
해시부(240)는 복호된 비암호키를 이용하여 해시값을 다시 생성하고 생성된 해시값과 암호키 내의 해시값을 비교하여 키 무결성을 체크한다. 무결성 체크가 통과되면, 비암호키는 비암호키 메모리(270)의 해당 어드레스에 기입된다.
도 9는 키 로드 커맨드에 대한 처리 플로우이다.
키 로드 커맨드는 데이터를 암호화하기 위한 커맨드이다. 먼저, 호스트(21)는 키 로드 커맨드를 커맨드 레지스터(211)에 기입(write)한다(S410). 예컨대, 호스트(21)는 키 로드 커맨드에 해당하는 커맨드 타입과, 해당 어드레스를 커맨드 레지스터(211)에 기입할 수 있다. 키 로드 커맨드가 커맨드 레지스터(211)에 기입되면, 메인 제어부(220)는 커맨드 레지스터(211)의 커맨드를 해석하여 실행한다.
예컨대, 메인 제어부(220)는, 비암호키 메모리(270)의 해당 어드레스로부터 비암호키를 독출하여, 블록 암호화부(230)의 키 레지스터(232)에 기입한다(S420).
도 10는 키 파기 커맨드에 대한 처리 플로우이다.
키 파기 커맨드는 키를 파기하기 위한 커맨드이다. 먼저, 호스트(21)는 키 파기 커맨드를 커맨드 레지스터(211)에 기입(write)한다(S510). 예컨대, 호스트(21)는 키 파기 커맨드에 해당하는 커맨드 타입과, 해당 어드레스를 커맨드 레지스터(211)에 기입할 수 있다. 키 파기 커맨드가 커맨드 레지스터(211)에 기입되면, 메인 제어부(220)는 커맨드 레지스터(211)의 커맨드를 해석하여 실행한다.
예컨대, 메인 제어부(220)는 비암호키 메모리(270)의 해당 어드레스에 저장되어 있는 키를 '0'로 만든다.
상태 레지스터(212)는 커맨드의 실행에 대한 결과(예컨대, 4가지 결과)를 인터럽트 또는 폴링 방식으로 호스트(21)에 통보한다. 예컨대, 메인 제어부(220)는 커맨드 실행 중, 커맨드 실행 완료, 또는 커맨드 실행 실패 등의 커맨드 실행 결과를 상태 레지스터(212)에 기입한다. 이 때, 기입된 상태는 인터럽트를 이용하여 호스트(21)에게 통보될 수도 있고, 호스트(21)가 주기적으로 상태 레지스터(212)를 독출함으로써 확인할 수도 있다.
도 11은 비암호 키 메모리(270)에 저장된 각 비암호키 엔트리에 대응하는 유효 비트를 나타내는 도면이다. 이를 참조하면, 키 관리 장치(120)는 비암호 키 메모리(270)에 저장된 각 비암호키 엔트리에 대응하는 유효 비트를 관리한다.
유효 비트는 하나의 비트로 구성될 수 있으며, '1' 또는 '0'의 값을 가질 수 있다.
유효 비트는 키 생성 커맨드 또는 키 복구 커맨드에 의해서 생성된 비암호키 엔트리에 대해서만 '1'로 설정될 수 있다. 그 이유는 비암호키 메모리는 리셋시 '0'의 값을 가지기 때문에 유효 비트가 없을 경우, 모든 값이 '0'인 키와 유효한키(랜덤키)의 구분이 되지 않기 때문이다. 만약 유효 비트가 '1'로 설정되지 않은 비암호키 엔트리를 키 암호화 커맨드나 키 로드 커맨드를 사용하여 억세스하는 경우, 커맨드 실패(Command Fail)를 호스트에 통보한다. 만약 모든 값이 '0'인 키를 사용하는 한다면, 이는 호스트가 알고 있는 값을 데이터 암호키로 사용하는 경우가 되므로 보안 측면에서 취약성이 생긴다.
메인 제어부(220)는 비암호키 메모리(270)에 저장되는 비암호키 엔트리가 키 생성 커맨드 또는 키 복호화 커맨드에 의하여 생성된 경우에만 해당 유효 비트를 '1'로 설정할 수 있다. 메인 제어부(220)는 또한 비암호키 메모리(270)의 비암호키 엔트리가 '제로 키'인지 체크하여 '제로 키'인 경우 해당 유효 비트를 '0'으로 설정할 수 있다. '제로 키'란 모든 비트가 '0'인 키를 의미한다.
유효 비트의 디폴트 값은 '0'일 수 있다.
본 발명의 실시예에 따르면, 키 관리 장치(120)가 키와 데이터를 설정할 수 있다. 그러나, 본 발명의 다른 실시예에 따르면, 호스트(21)가 호스트 인터페이스(22)를 통하여 직접 키와 데이터를 설정할 수도 있다. 즉, 블록 암호화부(230)에서 사용되는 키와 데이터를 키 관리 장치(120)만 설정할 수도 있지만, 키 관리 장치(120) 외에 호스트(21)가 직접 키와 데이터를 설정할 수도 있다. 후자의 경우, 키 관리 장치(120)에 의해서 설정되거나 또는 커맨드의 결과로 생성되는 키나 데이터는 보안을 위해서 호스트(21)에 의해서 억세스되는 것을 제한할 수 있다. 따라서, 특정 상태(State)상에서 호스트의 억세스를 방지하거나 해당 데이터를 삭제(Clear)하는 동작 및 이를 제어하는 유한 상태 머신(FSM)이 필요하다.
도 12는 키의 라이프 싸이클을 나타내는 도면이다. 도 13은 본 발명의 일 실시예에 따른 키 관리 장치(120)의 유한 상태 머신을 나타내는 상태 천이도이다.
도 12를 참조하면, 키는 키 생성(S10), 키 사용(S20), 키 저장/복구(S30) 및 키 폐기(S40) 과정을 거치게 된다.
도 13을 참조하면, 키 관리 장치(120)의 유한 상태 머신은 5개의 상태를 가질 수 있다.
5개의 상태는 디폴트 상태, 키 사용 상태, 키 저장 상태, 키 복구 상태 및 에러 처리 상태를 포함할 수 있다. 디폴트 상태는 키 및 데이터에 대한 보호를 하지 않는 상태이다. 디폴트 상태에서 키 로드 커맨드에 의하여 키 로드가 시작되면 키 사용 상태로 천이한다. 키 사용 상태는 키가 블록 암호화부(230)의 키 레지스터(232)로 로드되어 데이터를 암호화하는데 사용되는 상태이다. 이 상태에서는 키가 로드되어 있는 키 레지스터(232)가 보호된다. 즉, 키 레지스터(232)에 대한 호스트의 억세스를 차단한다.
디폴트 상태 또는 키 사용 상태에서 키 암호화 커맨드에 의한 키 암호화가 시작되면 키 저장 상태로 천이한다. 키 저장 상태는 키 암호화 커맨드가 처리되는 상태라 할 수 있다. 이 상태에서는, 키 레지스터(232)와 입력 데이터 레지스터(233)가 보호된다. 즉, 키 레지스터(232) 및 입력 데이터 레지스터(233)에 대한 호스트의 억세스를 차단한다. 이 때, 호스트는 출력 데이터 레지스터(234)에 기입된 암호화된 데이터를 억세스하여 독출할 수 있다. 키 암호화가 완료되면 키 저장 상태에서 디폴트 상태로 천이한다. 천이시, 키 레지스터(232)와 입력 데이터 레지스터(233)는 초기화된다. 즉, 키 레지스터(232)와 입력 데이터 레지스터(233)의 값은 삭제된다.
디폴트 상태 또는 키 사용 상태에서 키 복호화 커맨드에 의한 키 복호화가 시작되면 키 복구 상태로 천이한다. 키 복구 상태는 키 복구 커맨드가 처리되는 상태라 할 수 있다. 이 상태에서는, 키 레지스터(232)와 출력 데이터 레지스터(234)가 보호된다. 즉, 키 레지스터(232) 및 출력 데이터 레지스터(234)에 대한 호스트의 억세스를 차단한다. 키 복구가 완료되면 키 복구 상태에서 디폴트 상태로 천이한다. 천이시, 키 레지스터(232)와 출력 데이터 레지스터(234)는 초기화된다. 즉, 키 레지스터(232)와 출력 데이터 레지스터(234)의 값은 삭제된다.
에러 처리 상태는 에러 발생시 에러를 처리하는 상태이다. 디폴트 상태에서 비정상 커맨드가 입력되면 에러 처리 상태로 천이한다. 키 복구 상태에서, 키 해시 미스매치가 발생하면 에러 처리 상태로 천이한다. 이 때, 키 레지스터(232)와 출력 데이터 레지스터(234)는 초기화된다. 키 해시 미스매치란, 키 복구시 해시부(240)에서 생성한 해시값과 암호키 내의 해시값이 불일치하는 것을 의미한다.
본 발명의 일 실시예에서, 키 관리 장치(120)는 디버그의 편리성을 제공하기 위해서 디버그 모드(Debug Mode)를 지원할 수 있다. 키 관리 장치(120)의 주요 메모리는 특정 커맨드가 동작하는 동안에는 보안을 위해서 호스트에 의한 억세스가 불가능하다. 따라서, FPGA나 칩 테스트에서 디버깅하는 데에 어려움이 있을 수 있다. 이를 해소하기 위해 디버그 모드 동안에는 키 관리 장치(120)의 주요 레지스터에 대하여 호스트(21)가 억세스할 수 있도록 한다.
예컨대, 디버그 모드 동안에는 호스트(21)는 유효 비트 레지스터, 입력 데이터 레지스터(233), 출력 데이터 레지스터(234), 키 레지스터(232), 및 해시 출력 레지스터(243)에 억세스하여 데이터를 독출할 수 있다. 또한 디버그 모드 동안에는, 호스트(21)는 난수 레지스터와 비암호키 메모리(270)의 데이터를 독출할 수도 있고, 사용자가 원하는 값으로 설정하여 테스트할 수 있도록 기입 또한 가능하다.
도 14는 본 발명의 실시예에 따른 디버그 모드 모듈의 블록도이다. 디버그 모드 모듈(310)은 상술한 바와 같은 디버그 모드를 인에이블하기 위한 회로이다.
도 14를 참조하면, 본 발명의 실시예에 따른 디버그 모드 모듈(310)은 디버그 모드 인에이블 로직부(320) 및 테스트 모드 레지스터를 포함할 수 있다. 디버그 모드 모듈(310)은 본 발명의 실시예에 따른 키 관리 장치(120) 내에 구비될 수 있다.
테스트 모드 레지스터는 32비트 레지스터일 수 있다. 테스트 모드 레지스터는 테스트 모드 인에이블 비트(r_test_mode_en), 난수 인에이블 비트(r_test_rnd_en), 및 예비 비트들(reserved)을 포함할 수 있다.
디버그 모드 인에이블 로직부(320)는 제1 및 제2 논리곱 소자(321, 322)를 포함할 수 있다. 제1 논리곱 소자(321)는 OTP(260)로부터 발생한 1비트(i_test_mode_en)와 테스트 모드 인에이블 비트(r_test_mode_en)를 반전한 값들을 논리곱하여 출력하고, 제2 논리곱 소자(322)는 제1 논리곱 소자(321)의 출력과 난수 인에이블 비트(r_test_rnd_en), 를 논리곱하여 출력한다.
테스트 모드 인에이블 비트(r_test_mode_en)는 초기값은 '0'이고, 한번만 기입이 가능한 비트일 수 있다. 디버그 모드의 인에이블은 OTP 1비트(i_test_mode_en)와 테스트 모드 인에이블 비트(r_test_mode_en)에 의해서 결정되는데, 둘 다 동시에 '0'이면, 제1 논리곱 소자(321)의 출력은 '1'로 인에이블된다. 따라서, OTP 1비트(i_test_mode_en)와 테스트 모드 인에이블 비트(r_test_mode_en)가 모두 '0'인 동안(Active Low) 디버그 모드가 지속된다. OTP를 '1'로 설정하거나 테스트 모드 인에이블 비트(r_test_mode_en)에 '1'을 기입하게 되면 디버그 모드는 종료될 수 있다.
난수 인에이블 비트(r_test_rnd_en)는 디버그 모드 동안에 사용자의 난수를 난수 레지스터에 기입할 수 있도록 하기 위한 비트이다. 디버그 모드 동안 난수 인에이블 비트(r_test_rnd_en)가 '1'이면 제2 논리곱 소자(322)의 출력은 '1'로 인에이블된다. 따라서, 난수 인에이블 비트(r_test_rnd_en)가 '1'인 경우 사용자가 지정한 난수를 난수 레지스터에 기입하여 테스트할 수 있다.
도 15는 본 발명의 다른 실시예에 따른 데이터 처리 시스템의 구성 블록도이다. 이를 참조하면, 데이터 처리 시스템(500)은 PC(personal computer), 노트북, 랩탑(laptop) 컴퓨터, 또는 데이터 서버로 구현될 수 있다. 데이터 처리 시스템(500)은 또한 휴대용 장치로 구현될 수 있다. 휴대용 장치는 이동 전화기, 스마트 폰(smart phone), 태블릿 (tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라 (digital still camera), 디지털 비디오 카메라 (digital video camera), PMP (portable multimedia player), PDN(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
데이터 처리 시스템(500)은 프로세서(100), 파워 소스(410), 저장 장치(420), 메모리(430), 입출력 포트들(440), 확장 카드(450), 네트워크 장치(460), 및 디스플레이(470)를 포함한다. 실시 예에 따라. 데이터 처리 시스템(500)은 카메라 모듈(480)을 더 포함할 수 있다.
프로세서(100)는 도 1에 도시된 SoC(100)를 의미한다. 프로세서(100)는 멀티-코어 프로세서일 수 있다.
프로세서(100)는 구성 요소들(elements; 100, 및 410~480) 중에서 적어도 하나의 동작을 제어할 수 있다.
파워 소스(410)는 구성 요소들(100, 및 410~480) 중에서 적어도 하나로 동작 전압을 공급할 수 있다.
저장 장치(420)는 하드디스크 드라이브(hard disk drive) 또는 SSD(solid state drive)로 구현될 수 있다.
메모리(430)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있으며, 도 1의 메모리 장치(155)에 해당할 수 있다. 실시 예에 따라, 메모리(430)에 대한 데이터 액세스 동작, 예컨대, 리드 동작, 라이트 동작(또는 프로그램 동작), 또는 이레이즈 동작을 제어할 수 있는 메모리 컨트롤러는 프로세서(100)에 집적 또는 내장될 수 있다. 다른 실시 예에 따라, 상기 메모리 컨트롤러는 프로세서(100)와 메모리(430) 사이에 구현될 수 있다.
입출력 포트들(440)은 데이터 처리 시스템(500)으로 데이터를 전송하거나 또는 데이터 처리 시스템(500)으로부터 출력된 데이터를 외부 장치로 전송할 수 있는 포트들을 의미한다. 예컨대, 입출력 포트들(440)은 컴퓨터 마우스와 같은 포인팅 장치 (pointing device)를 접속하기 위한 포트, 프린터를 접속하기 위한 포트, 또는 USB 드라이브를 접속하기 위한 포트일 수 있다.
확장 카드(450)는 SD(secure digital) 카드 또는 MMC(multimedia card)로 구현될 수 있다. 실시 예에 따라, 확장 카드(450)는 SIM(Subscriber Identification Module) 카드 또는 USIM(Universal Subscriber Identity Module) 카드일 수 있다.
네트워크 장치(460)는 데이터 처리 시스템(500)을 유선 네트워크 또는 무선 네트워크에 접속시킬 수 있는 장치를 의미한다.
디스플레이(470)는 저장 장치(420), 메모리(430), 입출력 포트들(440), 확장 카드(450), 또는 네트워크 장치(460)로부터 출력된 데이터를 디스플레이할 수 있다.
카메라 모듈(480)은 광학 이미지를 전기적인 이미지로 변환할 수 있는 모듈을 의미한다. 따라서, 카메라 모듈(480)로부터 출력된 전기적인 이미지는 저장 장치(420), 메모리(430), 또는 확장 카드(450)에 저장될 수 있다. 또한, 카메라 모듈(480)로부터 출력된 전기적인 이미지는 디스플레이(470)를 통하여 디스플레이될 수 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 본 발명에 따른 객체 정보 추정 방법을 수행하기 위한 프로그램 코드는 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 전송될 수도 있다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
데이터 처리 시스템: 10, 500
시스템 온 칩: 100
디스플레이 장치: 135
메모리 장치: 155
CPU(Central processing unit): 110
키 관리 장치: 120
디스플레이 컨트롤러: 130
ROM(read only memory): 140
RAM(random access memory): 160
메모리 컨트롤러: 150

Claims (21)

  1. 키 관리 장치에 있어서,
    호스트로부터 입력되는 커맨드를 수신하고, 상기 커맨드를 해석하여 실행시키는 메인 제어부;
    비암호키를 저장하도록 구성된 비암호키 메모리;
    암호키를 저장하도록 구성된 암호키 메모리; 및
    상기 메인 제어부의 제어에 따라 상기 비암호키를 암호화 하거나, 상기 메인 제어부가 상기 커맨드를 실행한 결과에 기초하여 데이터를 암호화하는 암호화부 및 해시부를 포함하고,
    상기 비암호키를 암호화하는 암호화부 및 해시부는
    상기 비암호키 및 난수를 해싱함으로써 해시키를 생성하고,
    상기 비암호키 중 제1 비암호키 부분과 상기 난수 중 제1 난수를 포함하는 제1 암호키 부분, 상기 비암호키 중 제2 비암호키 부분과 상기 난수 중 제2 난수를 포함하는 제2 암호키 부분 및 상기 해시키에 대해 암호화를 수행함으로써 상기 암호키를 생성하고,
    상기 생성된 암호키를 상기 암호키 메모리에 저장하는 것을 특징으로 하는 키 관리 장치.
  2. 제1항에 있어서, 상기 메인 제어부는
    상기 커맨드를 저장하는 커맨드를 저장하기 위한 레지스터를 포함하며,
    유한 상태 머신으로 구현되는 키 관리 장치.
  3. 제2항에 있어서, 상기 레지스터는
    상기 커맨드를 저장하는 커맨드 레지스터 및 상태 정보를 저장하는 상태 레지스터를 포함하는 키 관리 장치.
  4. 제3항에 있어서, 상기 커맨드는
    커맨드 타입과 어드레스를 포함하고,
    상기 커맨드 레지스터는 상기 커맨드 타입과 어드레스를 저장하는 키 관리 장치.
  5. 제1항에 있어서, 상기 커맨드는
    미리 정의된 키 생성 커맨드, 키 암호화 커맨드, 키 복구 커맨드, 키 로드 커맨드, 및 키 파기 커맨드를 포함하는 키 관리 장치.
  6. 제1항에 있어서,
    상기 비암호키 또는 상기 암호키는
    키를 암호화하는 데 사용되는 키 암호용 키와
    데이터를 암호화하는 사용되는 데이터 암호용 키를 포함하는 키 관리 장치.
  7. 제6항에 있어서, 상기 키 관리 장치는
    상기 키 암호용 키를 발생하는 원 타임 프로그래머블 메모리(OTP); 및
    상기 데이터 암호용 키를 발생하는 난수 발생기를 더 포함하는 키 관리 장치.
  8. 제1항에 있어서,
    상기 비암호키 메모리, 상기 암호키 메모리 및 상기 암호화부 및 해시부 각각은
    하드웨어로 구현되는 것을 특징으로 하는 키 관리 장치.
  9. 키 관리 방법에 있어서,
    호스트로부터 입력되는 커맨드를 커맨드 레지스터에 저장하는 단계;
    상기 커맨드 레지스터의 상기 커맨드를 해석하여 실행하는 단계;
    상기 커맨드가 키 생성 커맨드인 경우, 난수 발생기로부터 비암호키를 생성하여 비암호키 메모리에 저장하는 키 생성 단계; 및
    상기 커맨드가 키 암호화 커맨드인 경우, 상기 비암호키를 암호화함으로써 암호키를 생성하고, 상기 생성된 암호키를 암호키 메모리에 저장하는 키 암호화 단계;를 포함하고,
    상기 키 암호화 단계는,
    상기 비암호키 및 난수를 해싱하여 해시키를 생성하는 단계;
    상기 비암호키 중 제1 비암호키 부분과 상기 난수 중 제1 난수를 포함하는 제1 암호키 부분을 생성하는 단계;
    상기 비암호키 중 제2 비암호키 부분과 상기 난수 중 제2 난수를 포함하는 제2 암호키 부분을 생성하는 단계; 및
    상기 제1 암호키 부분, 상기 제2 암호키 부분 및 상기 해시키에 대해 암호화를 수행함으로써 상기 암호키를 생성하는 단계를 포함하는 키 관리 방법.
  10. 제1항에 있어서,
    상기 암호화부 및 해시부는,
    상기 메인제어부가 상기 커맨드를 실행한 결과에 기초하여 상기 암호키 또는 상기 암호화된 데이터를 복호화하는 것을 포함하는 키 관리 장치.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
KR1020120085892A 2012-08-06 2012-08-06 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치 KR102013841B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020120085892A KR102013841B1 (ko) 2012-08-06 2012-08-06 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치
US13/956,592 US9094190B2 (en) 2012-08-06 2013-08-01 Method of managing key for secure storage of data and apparatus therefor
DE102013108394.3A DE102013108394A1 (de) 2012-08-06 2013-08-05 Verfahren zum Verwalten eines Schlüssels für sicheres Speichern von Daten und Vorrichtung dafür
CN201310339779.5A CN103577768A (zh) 2012-08-06 2013-08-06 管理用于数据的安全存储的密钥的方法及其设备
US14/251,120 US9935768B2 (en) 2012-08-06 2014-04-11 Processors including key management circuits and methods of operating key management circuits

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120085892A KR102013841B1 (ko) 2012-08-06 2012-08-06 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20140019599A KR20140019599A (ko) 2014-02-17
KR102013841B1 true KR102013841B1 (ko) 2019-08-23

Family

ID=49999318

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120085892A KR102013841B1 (ko) 2012-08-06 2012-08-06 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치

Country Status (4)

Country Link
US (1) US9094190B2 (ko)
KR (1) KR102013841B1 (ko)
CN (1) CN103577768A (ko)
DE (1) DE102013108394A1 (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102060996B1 (ko) * 2013-01-07 2020-02-11 삼성전자주식회사 단말기의 메모리 주소 및 데이터변환 장치 및 방법
GB2512595A (en) * 2013-04-02 2014-10-08 Mastercard International Inc Integrated contactless mpos implementation
US9594698B2 (en) * 2013-08-13 2017-03-14 Dell Products, Lp Local keying for self-encrypting drives (SED)
CN111160902B (zh) * 2013-12-02 2023-06-23 万事达卡国际股份有限公司 用于向不带有安全元件的移动设备安全传送远程通知服务消息的方法及系统
JP6265783B2 (ja) * 2014-03-06 2018-01-24 キヤノン株式会社 暗号化/復号化システム及びその制御方法、並びにプログラム
US9652631B2 (en) 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
GB2529633A (en) * 2014-08-26 2016-03-02 Ibm Password-based generation and management of secret cryptographic keys
US10275767B2 (en) 2014-10-21 2019-04-30 Mastercard International Incorporated Method and system for generating cryptograms for validation in a webservice environment
US10013363B2 (en) * 2015-02-09 2018-07-03 Honeywell International Inc. Encryption using entropy-based key derivation
KR102291806B1 (ko) 2015-04-20 2021-08-24 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
US10341381B2 (en) 2015-04-29 2019-07-02 Entit Software Llc Inhibiting electromagnetic field-based eavesdropping
US9864879B2 (en) 2015-10-06 2018-01-09 Micron Technology, Inc. Secure subsystem
CN105468935A (zh) * 2015-11-13 2016-04-06 福州瑞芯微电子股份有限公司 一种保证key安全烧录的方法、发送端、工具端及烧录端
EP3391584B1 (en) * 2015-12-16 2020-11-04 Cryptography Research, Inc. Cryptographic management of lifecycle states
GB201522244D0 (en) * 2015-12-16 2016-01-27 Nagravision Sa Hardware integrity check
CN108701200B (zh) * 2015-12-24 2023-08-22 黑文技术私人有限公司 改善的存储系统
US9747982B1 (en) 2016-02-22 2017-08-29 Arm Ltd. Device and method for generating random numbers
US10992453B2 (en) * 2016-05-18 2021-04-27 International Business Machines Corporation System architecture for encrypting external memory
EP3472747B1 (en) 2016-06-20 2021-08-04 Hewlett-Packard Development Company, L.P. Firmware-inaccessible key storage
US10721067B2 (en) * 2016-08-10 2020-07-21 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Secure processor for multi-tenant cloud workloads
US10708073B2 (en) 2016-11-08 2020-07-07 Honeywell International Inc. Configuration based cryptographic key generation
KR102518881B1 (ko) * 2017-01-09 2023-04-05 삼성전자주식회사 반도체 장치의 동작 방법
CN106845254A (zh) * 2017-01-20 2017-06-13 杭州华澜微电子股份有限公司 一种用于计算机的加密数据传输线
US10417433B2 (en) 2017-01-24 2019-09-17 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Encryption and decryption of data owned by a guest operating system
CN108416220B (zh) * 2017-02-09 2021-02-09 深圳市中兴微电子技术有限公司 一种访问控制方法及装置
US10949546B2 (en) 2017-08-02 2021-03-16 Samsung Electronics Co., Ltd. Security devices, electronic devices and methods of operating electronic devices
US10104078B1 (en) * 2017-08-07 2018-10-16 Motorola Solutions, Inc. Method and apparatus for associating sim card with a group of mobile communications devices
US10536267B2 (en) 2017-09-15 2020-01-14 Visa International Service Association Cryptographic services utilizing commodity hardware
KR102488636B1 (ko) * 2017-11-23 2023-01-17 삼성전자주식회사 데이터 및 타임스탬프를 암호화하는 암호화 장치, 이를 포함하는 시스템 온 칩, 및 전자 장치
CN108229215A (zh) * 2017-12-06 2018-06-29 杭州中天微系统有限公司 一种地址加扰的存储装置及方法
KR20190075363A (ko) * 2017-12-21 2019-07-01 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 모듈
KR102432451B1 (ko) * 2018-01-10 2022-08-12 삼성전자주식회사 반도체 장치 및 반도체 장치의 동작 방법
GB201807257D0 (en) * 2018-05-02 2018-06-13 Nordic Semiconductor Asa Cryptographic key distribution
US10922441B2 (en) * 2018-05-04 2021-02-16 Huawei Technologies Co., Ltd. Device and method for data security with a trusted execution environment
CN112703703B (zh) * 2018-07-17 2024-04-12 J·B·坎特 用于存储敏感信息和其它数据的闪存设备
CN115051806A (zh) * 2018-10-30 2022-09-13 北京忆芯科技有限公司 一种控制部件
KR102621645B1 (ko) * 2019-03-12 2024-01-05 삼성전자주식회사 보안 집적 회로를 포함하는 전자 장치
US11487886B2 (en) * 2019-05-03 2022-11-01 International Business Machines Corporation Database private document sharing
FR3096161B1 (fr) * 2019-05-14 2021-09-24 Orange Procédé, dispositif et système de sécurisation de données et de clés de chiffrement d'un objet connecté.
US11030124B2 (en) 2019-11-07 2021-06-08 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11182308B2 (en) * 2019-11-07 2021-11-23 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
FR3106909B1 (fr) * 2020-01-31 2022-02-18 St Microelectronics Grenoble 2 Circuit intégré configuré pour réaliser des opérations de chiffrement symétrique avec protection de clé secrète
FR3106910B1 (fr) 2020-01-31 2022-02-18 St Microelectronics Grenoble 2 Circuit intégré configuré pour réaliser des opérations de chiffrement symétrique sans transmission de clé secrète
CN111769934B (zh) * 2020-07-08 2023-12-08 深圳思凯微电子有限公司 数据传输方法、系统及计算机可读存储介质
JP2022030661A (ja) * 2020-08-07 2022-02-18 キオクシア株式会社 メモリシステム、制御方法、および情報処理システム
CN115357528B (zh) * 2022-10-08 2023-01-24 北京智芯微电子科技有限公司 固态硬盘的密钥加密方法、密钥解密方法和安全防护系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080170698A1 (en) * 2003-08-25 2008-07-17 Brant Candelore Apparatus and method for an iterative cryptographic block
US20090116643A1 (en) * 2007-10-31 2009-05-07 Yasuo Hatano Encryption apparatus, decryption apparatus, and cryptography system
US8005227B1 (en) 2007-12-27 2011-08-23 Emc Corporation Key information consistency checking in encrypting data storage system

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4888802A (en) * 1988-06-17 1989-12-19 Ncr Corporation System and method for providing for secure encryptor key management
US5737419A (en) * 1994-11-09 1998-04-07 Bell Atlantic Network Services, Inc. Computer system for securing communications using split private key asymmetric cryptography
US6108425A (en) * 1997-06-30 2000-08-22 International Business Machines Corporation Method and apparatus for controlling the configuration of a cryptographic processor
US6539479B1 (en) * 1997-07-15 2003-03-25 The Board Of Trustees Of The Leland Stanford Junior University System and method for securely logging onto a remotely located computer
US6708273B1 (en) * 1997-09-16 2004-03-16 Safenet, Inc. Apparatus and method for implementing IPSEC transforms within an integrated circuit
US6490680B1 (en) * 1997-12-04 2002-12-03 Tecsec Incorporated Access control and authorization system
EP1090480B1 (en) 1998-06-03 2019-01-09 Cryptography Research, Inc. Improved des and other cryptographic processes with leak minimization for smartcards and other cryptosystems
TW514844B (en) * 2000-01-26 2002-12-21 Sony Corp Data processing system, storage device, data processing method and program providing media
JP4112188B2 (ja) 2001-03-09 2008-07-02 シャープ株式会社 データ記憶装置
US7305567B1 (en) 2002-03-01 2007-12-04 Cavium Networks, In. Decoupled architecture for data ciphering operations
AU2003302544A1 (en) * 2002-12-03 2004-06-23 Matsushita Electric Industrial Co., Ltd. Key sharing system, shared key creation device, and shared key restoration device
JP4559794B2 (ja) * 2004-06-24 2010-10-13 株式会社東芝 マイクロプロセッサ
US7792303B2 (en) * 2004-07-14 2010-09-07 Intel Corporation Method of delivering direct proof private keys to devices using a distribution CD
US7929518B2 (en) * 2004-07-15 2011-04-19 Broadcom Corporation Method and system for a gigabit Ethernet IP telephone chip with integrated DDR interface
US7546461B2 (en) 2005-06-28 2009-06-09 Microsoft Corporation Strengthening secure hash functions
FR2892876A1 (fr) * 2005-11-02 2007-05-04 Gemplus Sa Procede de depot securise de donnees numeriques, procede associe de recuperation de donnees numeriques, dispositifs associes pour la mise en oeuvre des procedes, et systeme comprenant les dits dispositifs
US7657754B2 (en) * 2005-12-08 2010-02-02 Agere Systems Inc Methods and apparatus for the secure handling of data in a microcontroller
US8094819B1 (en) * 2006-07-28 2012-01-10 Rockwell Collins, Inc. Method and apparatus for high agility cryptographic key manager
JP2008098696A (ja) * 2006-10-05 2008-04-24 Toshiba Corp 暗号鍵管理装置及び暗号鍵管理方法
JP2008103936A (ja) * 2006-10-18 2008-05-01 Toshiba Corp 秘密情報管理装置および秘密情報管理システム
CN101174942A (zh) * 2006-10-31 2008-05-07 华为技术有限公司 一种实现密钥保护的方法及系统
JP2009032003A (ja) 2007-07-26 2009-02-12 Toshiba Corp 携帯可能電子装置、端末装置、認証システム、及び認証方法
EP2186250B1 (en) * 2007-08-31 2019-03-27 IP Reservoir, LLC Method and apparatus for hardware-accelerated encryption/decryption
WO2009060631A1 (ja) * 2007-11-09 2009-05-14 Icon Corp. 鍵管理装置及び当該装置を用いた情報伝達システム
JP4934010B2 (ja) 2007-11-27 2012-05-16 日本電信電話株式会社 公開鍵暗号システム、公開鍵暗号方法、暗号化装置、復号化装置、暗号化プログラム及び復号化プログラム
KR100992184B1 (ko) 2007-12-17 2010-11-04 한국전자통신연구원 플랫폼 장착용 모듈 및 플랫폼 장착용 모듈을 위한 기능변경 방법
US8850568B2 (en) * 2008-03-07 2014-09-30 Qualcomm Incorporated Method and apparatus for detecting unauthorized access to a computing device and securely communicating information about such unauthorized access
KR100954841B1 (ko) 2008-07-18 2010-04-28 고려대학교 산학협력단 모바일 기기에서의 통합형 데이터 관리 방법, 그 장치 및이를 기록한 기록 매체
DE102009053392A1 (de) 2009-11-14 2011-06-22 Umicore AG & Co. KG, 63457 Verfahren zur Herstellung von Ru(0) Olefin-Komplexen
KR20110090602A (ko) * 2010-02-04 2011-08-10 삼성전자주식회사 인증서버 없이 공개키를 인증하는 방법 및 장치
CN102163178A (zh) * 2010-02-24 2011-08-24 上海果壳电子有限公司 数据安全存储方法
JP5624526B2 (ja) * 2011-08-26 2014-11-12 株式会社東芝 鍵共有装置、鍵共有方法および鍵共有プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080170698A1 (en) * 2003-08-25 2008-07-17 Brant Candelore Apparatus and method for an iterative cryptographic block
US20090116643A1 (en) * 2007-10-31 2009-05-07 Yasuo Hatano Encryption apparatus, decryption apparatus, and cryptography system
US8005227B1 (en) 2007-12-27 2011-08-23 Emc Corporation Key information consistency checking in encrypting data storage system

Also Published As

Publication number Publication date
CN103577768A (zh) 2014-02-12
DE102013108394A1 (de) 2014-02-13
US9094190B2 (en) 2015-07-28
KR20140019599A (ko) 2014-02-17
US20140037093A1 (en) 2014-02-06

Similar Documents

Publication Publication Date Title
KR102013841B1 (ko) 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치
US10097349B2 (en) Systems and methods for protecting symmetric encryption keys
US8645716B1 (en) Method and apparatus for overwriting an encryption key of a media drive
EP3326105B1 (en) Technologies for secure programming of a cryptographic engine for secure i/o
US8572410B1 (en) Virtualized protected storage
JP2013236376A (ja) システムオンチップとその動作方法、及びそれを含むシステムインパッケージ
US20150317495A1 (en) Protecting Critical Data Structures in an Embedded Hypervisor System
JP2021505995A (ja) アドレススクランブルのための記憶機器及び方法
US11222144B2 (en) Self-encrypting storage device and protection method
US20140040632A1 (en) Low-overhead cryptographic method and apparatus for providing memory confidentiality, integrity and replay protection
US9935768B2 (en) Processors including key management circuits and methods of operating key management circuits
US11775652B2 (en) Platform security mechanism
US20190325142A1 (en) Warm boot attack mitigations for non-volatile memory modules
CN114764512A (zh) 加密密钥管理
US11533172B2 (en) Apparatus and method for securely managing keys
CN109583196B (zh) 一种密钥生成方法
KR102240830B1 (ko) 키 관리자를 포함하는 데이터 프로세싱 시스템 및 및 키 관리자의 동작 방법
CN109598150B (zh) 一种密钥使用方法
CN111357003A (zh) 预操作系统环境中的数据保护
KR20230145166A (ko) 읽기 전용 메모리(rom) 보안
TW202240406A (zh) 唯讀記憶體(rom)安全性
CN117194284A (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