KR20220122009A - 시스템 온 칩 및 그 동작 방법 - Google Patents
시스템 온 칩 및 그 동작 방법 Download PDFInfo
- Publication number
- KR20220122009A KR20220122009A KR1020210026097A KR20210026097A KR20220122009A KR 20220122009 A KR20220122009 A KR 20220122009A KR 1020210026097 A KR1020210026097 A KR 1020210026097A KR 20210026097 A KR20210026097 A KR 20210026097A KR 20220122009 A KR20220122009 A KR 20220122009A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- key
- seed
- encryption key
- seed table
- Prior art date
Links
- 238000011017 operating method Methods 0.000 title claims abstract description 8
- 230000000873 masking effect Effects 0.000 claims abstract description 25
- 238000000034 method Methods 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 17
- 238000010586 diagram Methods 0.000 description 25
- 101100257262 Caenorhabditis elegans soc-1 gene Proteins 0.000 description 24
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000036962 time dependent Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0822—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using key encryption key
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/107—License processing; Key processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
- Saccharide Compounds (AREA)
Abstract
시큐어 엘리먼트를 포함하는 시스템 온 칩(SoC)이 제공된다. 시큐어 엘리먼트를 포함하는 시스템 온 칩의 동작방법은 제1 데이터를 타겟 주소에 상응하는 제1 데이터 시드값으로 마스킹하는 단계, 상기 마스킹된 제1 데이터를 제1 유형 제1 암호키로 암호화하는 단계 및 상기 제1 암호화된 제1 데이터를 외부 메모리의 상기 타겟 주소에 라이트하는 단계를 포함하고, 상기 데이터 시드값 또는 상기 제1 유형 제1 암호키 중 어느 하나는 동적으로 변이할 수 있다.
Description
본 발명은 시스템 온 칩 및 동작방법에 관한 것으로서, 특히 시큐어 엘리먼트를 포함하는 시스템 온 칩에서의 데이터의 암호화/복호화를 수행하는 방법 및 장치에 관한 것이다.
일반적으로, 시스템 온 칩(System On Chip)에서는 도 1에 도시된 바와 같이 공통의 데이터 전송로인 버스(BUS)를 사용하여 중앙 처리 장치(CPU; Central Processor Unit)와 메모리(memory) 및 기타 주변기기들을 연결하고 있으며, 최근에는 단일 칩의 확장성을 위해 상기 시스템 온 칩 내부의 버스 신호들을 외부와 연결하여 상기 시스템 온 칩에 메모리 혹은 주변 기기를 추가할 수 있도록 하고 있다. 있다.
한편, 최근에는 전기전자 기술의 발달로 인해 과거보다 가치적으로 중요한 정보들이 디지털화되면서, 상기 정보들에 대한 보안과 저작권에 대한 관심이 높아지고 있다. 예를 들어, 전자거래에 사용되는 아이디(ID), 비밀번호(password) 및 인증서 등과 같은 사용자 개인 정보가 누출될 경우, 사용자의 명의 도용을 통한 피해가 발생될 수 있으며, 특정 기기의 펌웨어(Firmware)가 유출될 경우 이를 해킹(Hacking)한 펌웨어를 통해 상기 펌웨어가 상기 제작자의 의도와는 다른 용도로 사용될 수 있어, 이를 방지 혹은 해결하기 위한 보안 및 저작권에 대한 연구가 활발히 진행되고 있다.
종래에는 상기 중요한 정보들을 보호하기 위해 몇 가지 보안 기법이 제공되고 있다. 예를 들어, 소프트웨어 수준에서 중요한 정보를 암호화하여 저장하는 기법, 물리적으로 접근 가능한 외부 메모리 혹은 주변 기기에 전용의 암호화 인터페이스(encryption interface)를 이용하는 기법, 멀티 프로세서에 의한 내무 메모리의 정보 추출을 방지하기 위하여 내부적으로 이중 구조를 설계하는 기법, 및 버스 수준에서 영역별로 접근을 제어하는 기법이 제공되고 있다.
시스템 온 칩에서는 별도의 CPU 및 내장 메모리를 이용하여 높은 보안 수준을 요구하는 응용 프로그램을 구현하고 있으나, 내장 메모리의 용량 한계로 인하여, 구현할 수 있는 응용 프로그램에 제약이 생길 수 있다.
본 발명이 해결하고자 하는 기술적 과제는 외장 메모리를 이용하여 응용 프로그램의 수용용량을 확장하면서, 외부 공격에 안전한 시스템 온 칩 및 그 동작방법을 제공하는 것이다.
구체적으로 본 발명이 해결하고자 하는 기술적 과제는 하드웨어 수준에서 정보를 암호화/복호화하는 시스템 온 칩 및 그 동작방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 메모리 위치 및 시간 변이에 따라 암호화를 위한 시드(seed)를 동적으로 변경하여, 향상된 데이터 무결성(integrity)를 제공하는 시스템 온 칩 및 그 동작방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 메모리 위치 및 시간 변이에 따라 암호화를 위한 시드(seed)를 동적으로 변경하여, 외부의 의도된 공격을 막아낼 수 있는 시스템 온 칩 및 그 동작방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상술한 과제를 해결하기 위하여, 몇몇 실시예에 따른 시큐어 엘리먼트를 포함하는 SoC(System on Chip)의 동작방법은 전원이 켜지면, 랜덤 넘버가 형성되는 단계, 시드 테이블 운영 정책에 기초하여 상기 랜덤 넘버에 따른 시드 테이블이 생성되는 단계, 제1 데이터를 상기 시드 테이블에서 타겟 주소에 상응하는 제1 데이터 시드값으로 마스킹하는 단계, 상기 마스킹된 제1 데이터를 상기 시드 테이블에서 제1 유형 제1 암호키로 암호화하는 단계 및 상기 제1 암호화된 제1 데이터를 외부 메모리의 상기 타겟 주소에 라이트하는 단계를 포함하고, 상기 데이터 시드값 또는 상기 제1 유형 제1 암호키 중 어느 하나는 동적으로 변이한다.
상술한 과제를 해결하기 위하여, 몇몇 실시예에 따른 외부 메모리와 연결된 SoC(System On Chip)는 타겟 주소 및 라이트 커맨드를 출력하는 CPU 및 프로세싱 회로를 포함하는 시큐어 엘리먼트를 포함하고, 상기 프로세싱 회로는 제1 데이터를, 데이터 시드 테이블에서 상기 타겟 주소에 상응하는 상기 데이터 시드값으로 마스킹하고, 키 시드 테이블에서, 상기 타겟 주소에 상응하는 키 시드값을 추출하여 제1유형 암호키로 생성하고, 상기 마스킹된 제1 데이터를 상기 제1유형 암호키로 암호화하고, 상기 암호화된 제1 데이터를 상기 외부 메모리에 저장시키고, 상기 데이터 시드값 또는 상기 제1유형 암호키 중 적어도 하나는 시드 테이블 운영정책에 기초하여 동적으로 변이된다.
상술한 과제를 해결하기 위하여, 몇몇 실시예에 따른 시큐어 엘리먼트의 동작방법은 전원이 켜지면, 시간-종속적으로 랜덤 넘버가 생성되고, 데이터 시드 테이블 정책을 설정하는 단계, 상기 데이터 시드 테이블 정책에 따라 상기 랜덤 넘버에 상응하는 데이터 시드 테이블을 설정하는 단계, 비휘발성 메모리 장치로부터 제1 데이터를 리드하는 단계, 상기 제1 데이터를 타겟 주소에 상응하는 데이터 시드값과 마스킹하는 단계, 상기 마스킹된 제1 데이터를 외부 메모리의 상기 타겟 주소에 라이트하는 단계를 포함한다.
상술한 과제를 해결하기 위하여, 몇몇 실시예에 따른 비휘발성 메모리 장치 및 외부 메모리에 연결된 SoC(System on Chip)는 상기 비휘발성 메모리 장치에서 리드된 제1 데이터를 마스킹하여 제1유형 암호키로 제1 암호화하여 상기 외부 메모리로 전송하는 시큐어 엘리먼트를 포함하고, 상기 외부 메모리는 상기 제1 암호화된 데이터를 타겟 주소에 저장하고, 상기 시큐어 엘리먼트는 상기 타겟 주소에 상응하는 데이터 시드값 및 상기 제1유형 암호키로 상기 제1 데이터를 마스킹한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 시스템 온 칩을 나타내는 도면이다.
도 2는 몇몇 실시예에 따른 시큐어 엘리먼트의 구체적 구성을 나타낸 블록도이다.
도 3은 도 2에 도시된 데이터 블록의 구체적 구성을 나타낸 블록도이다.
도 4는 도 2에 도시된 키 블록의 구체적 구성을 나타낸 블록도이다.
도 5는 도 1에 도시된 외부 메모리를 구체적으로 나타낸 도면이다.
도 6은 도 1에 도시된 내부 메모리를 구체적으로 나타낸 도면이다.
도 7은 몇몇 실시예에 따른 SoC의 동작방법을 설명하기 위한 개념도이다.
도 8 및 도 9는 몇몇 실시예에 따른 SoC의 동작방법을 설명하기 위한 흐름도이다.
도 10은 몇몇 실시예에 따른 SoC를 구체적으로 나타낸 블록도이다.
도 11은 몇몇 실시예에 따른 SoC를 구체적으로 나타낸 블록도이다.
도 12는 도 11에 도시된 키 블럭을 구체적으로 나타낸 블록도이다.
도 13은 몇몇 실시예에 따른 SoC를 구체적으로 나타낸 블록도이다.
도 14는 도 13에 도시된 데이터 블럭을 구체적으로 나타낸 블록도이다.
도 2는 몇몇 실시예에 따른 시큐어 엘리먼트의 구체적 구성을 나타낸 블록도이다.
도 3은 도 2에 도시된 데이터 블록의 구체적 구성을 나타낸 블록도이다.
도 4는 도 2에 도시된 키 블록의 구체적 구성을 나타낸 블록도이다.
도 5는 도 1에 도시된 외부 메모리를 구체적으로 나타낸 도면이다.
도 6은 도 1에 도시된 내부 메모리를 구체적으로 나타낸 도면이다.
도 7은 몇몇 실시예에 따른 SoC의 동작방법을 설명하기 위한 개념도이다.
도 8 및 도 9는 몇몇 실시예에 따른 SoC의 동작방법을 설명하기 위한 흐름도이다.
도 10은 몇몇 실시예에 따른 SoC를 구체적으로 나타낸 블록도이다.
도 11은 몇몇 실시예에 따른 SoC를 구체적으로 나타낸 블록도이다.
도 12는 도 11에 도시된 키 블럭을 구체적으로 나타낸 블록도이다.
도 13은 몇몇 실시예에 따른 SoC를 구체적으로 나타낸 블록도이다.
도 14는 도 13에 도시된 데이터 블럭을 구체적으로 나타낸 블록도이다.
본 발명은 Smart Cards, Smart Secure Platform ETSI TS 103 465, 구체적으로 103-666 -1 및 103-666-2의 규약을 준수하도록 구현될 수 있다. 또한 본 발명은 GlobalPlatform Virtual Primary Platform의 규약을 준수하도록 구현될 수 있다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 예를 들어 암호키를 제1 유형, 제2 유형 등으로 서술할 수 있다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다.
도 1은 몇몇 실시예에 따른 시스템 온 칩을 나타내는 도면이다.
도 1을 참조하면, 시스템 온 칩(1)은 실행환경 REE(10) 및 TEE(20), 호스트 하드웨어(30) 및 시큐어 엘리먼트(SE; Secure Element, 100)를 포함한다.
예로서, 시스템 온 칩(System On Chip, 이후 SoC로 호칭: 1)은 어플리케이션 프로세서로 구현되어 전자 장치에 포함될 수 있다. SoC(1)는 전자 장치의 전반적인 동작을 제어하며, 적어도 하나의 다른 구성요소들을 제어할 수 있다. SoC(1)는 OS(Operating System) 및 응용 프로그램(application)을 구동하며, 다양한 연산이나 데이터 처리를 수행할 수 있다. SoC(1)는 특정한 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)를 의미할 수 있다. 예컨대 SoC(1)는 중앙처리장치(CPU), 마이크로 프로세서, 또는 CP(Communication Processor) 등으로 구현될 수 있다. 실시예에 있어서, SoC(1)는 일반적인 연산을 수행하기 위한 영역 및 보안과 관련된 데이터의 처리와 관련된 연산을 수행하기 위한 영역을 포함할 수 있다.
몇몇 실시예에 따라 SoC(1)를 포함하는 전자 장치는 스마트폰, 태블릿 PC, PC, 스마트 TV, 휴대폰, PDA(personal digital assistant), 랩톱, 미디어 플레이어, 마이크로 서버, GPS(global positioning system) 장치, 전자책 단말기, 디지털방송용 단말기, 네비게이션, 키오스크, MP3 플레이어, 디지털 카메라, 가전기기 및 기타 모바일 또는 비모바일 컴퓨팅 장치일 수 있으나, 이에 제한되지 않는다. 또한, 전자 장치는 데이터 프로세싱 기능을 구비한 시계, 안경, 헤어밴드 및 반지 등의 웨어러블 디바이스일 수 있다. 그러나, 이에 제한되지 않으며, 전자 장치는 프로세서를 이용하여 OS 기반으로 동작하는 모든 종류의 기기를 포함할 수 있다.
몇몇 실시예에 따라 SoC(1)는 비휘발성 메모리 장치(200) 및 외부 메모리(300)와 연결될 수 있다. SoC(1)는 호스트 하드웨어 모듈(30)을 더 포함할 수 있고, 호스트 하드웨어 모듈(30)은 비휘발성 메모리 장치(200) 및 외부 메모리(300)와의 데이터 송수신을 인터페이싱할 수 있다.
몇몇 실시예에 따라 SoC(1)는 iSE(100)와 직접 연결되어 보안 데이터를 저장하기 위한 전용 메모리(400)와도 연결될 수 있다. 전용 메모리(400)는 호스트 하드웨어 모듈(30)에 연결되지 않을 수 있다.
몇몇 실시예에 따라 SoC(1)는 리치 실행 환경 프로세서(Rich Execution Environment, 이하 REE라고 칭함, 10)과 트러스티드 실행 환경 프로세서(Trusted Execution Environment, 이하 TEE라고 칭함, 20)을 포함할 수 있다. REE(10)와 TEE(20)는 일 실시예에 따라 SoC(1)에서 물리적으로 격리되도록(hardware based isolation) 구현될 수 있다.
REE(10)는 논-트러스티드 실행 환경(Non-Trusted Execution Environment; NTEE)으로서, 리치 운영 체계(Rich Operating System)에서 애플리케이션을 위한 비-보안 동작을 수행할 수 있다. 즉, REE(10)는 보안을 요구하지 않는 일반적인 연산을 수행하고, 보안과 관련없는 구성요소들을 제어하고, 일반적인 데이터를 송수신할 수 있다.
TEE(20)는 트러시티드 실행 환경, 즉, 보안 실행 환경에서 애플리케이션을 위한 보안 동작을 수행한다. 즉, TEE(20)는 보안을 요하는 연산을 수행하고, 보안과 관련된 구성요소들을 제어하고, 보안 데이터를 송수신할 수 있다. 보안 데이터는 예를 들면, 보안 어플리케이션에 관한 정보, 또는 금융 결제 서비스에 연관된 정보 및 임베디드 서비스에 연관된 정보 중 적어도 하나를 포함할 수 있다. 보안 어플리케이션에 대한 정보는 예를 들면, 사용자 인증 정보와 같은 생체 정보를 포함할 수 있다. TEE(20)는 iSE(100)와 동일한 보안레벨을 가지는 보안 영역일 수 있고, iSE(100)의 드라이브(drive)로서 기능할 수 있다.
iSE(internal Secure Element:100)는 TEE(20)의 구동에 따라, 보안 애플리케이션을 설치, 구동할 수 있고 또는 보안 데이터를 저장할 수 있다. iSE(100)는 보안 저장 및 지불, 인증 또는 다른 다양한 서비스를 위한 애플리케이션의 실행을 제공하는 하드웨어, 소프트웨어, 인터페이스, 및 프로토콜을 포함할 수 있다.
몇몇 실시예에 따라, iSE(100)는 SoC(1)의 슬롯에 삽입될 수 있는 범용 집적 회로 카드(Universal Integrated Circuit Card; UICC) 형태 또는 SoC(1)에 매립된 형태로 장착될 수 있다.
몇몇 실시예에 따라 iSE(100)는 시큐어 채널을 통해 TEE(20)와 데이터를 송수신할 수 있다. iSE(100)는 시큐어 채널을 통하여 TEE(20)로부터 수신된 암호화된 정보를 해독하여 iSE(100) 내의 내부 메모리(170), 외부 메모리(300) 또는 iSE(100)에 연결된 전용 외부 메모리(400)에 저장할 수 있다.
내부 메모리(170)는 보안 데이터, iSE(100)에서 실행되는 프로그램 코드 등을 저장하는데, 이때 임베디드되는 내장 메모리(170)의 용량이 제한될 수 있다. 본 발명은 SoC(1)에 연결된 외부 메모리(300)에서 물리적 공격(Physical Attack) 등의 외부 공격에 안전한 별도의 영역을 구현하여, 내장 메모리(170)의 한계를 극복할 수 있다.
몇몇 실시예에 따라 외부 메모리(300)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 휘발성 메모리로 구현될 수 있다. 외부 메모리(300)는 REE(10) 및 TEE(20)에 각각 상응하는 노말 영역 및 보안 영역을 포함할 수 있다. 외부 메모리(300)의 보안 영역에 저장되는 데이터는 신뢰성(Confidentiallity) 및 무결성(Integrity) 유지가 필요하다. iSE(100)는 데이터 신뢰성을 위해 사용되는 D 암호키 또는 시드값을 시간-의존적으로 변이시켜, 외부 공격자가 외부 메모리(300)에 저장되는 데이터를 획득하더라도, 유효하지 않은(Invalid) 데이터로서 데이터 무결성을 유지시킬 수 있다.
몇몇 실시예에 따라 iSE(100)는 CPU(Central Processing Unit, 이하 CPU: 110), 내부 메모리(iMemory, 170), 시큐어 하드웨어 모듈(190)를 포함할 수 있다. 보다 구체적으로 iSE(100)의 구성 및 동작은 도 2 이하에서 설명한다.
비휘발성 메모리 장치(200)는 REE(10) 및 TEE(20)에 각각 상응하는 노말 영역 및 보안 영역을 포함할 수 있다. 비휘발성 메모리 장치(200)의 보안 영역은 코드 또는 데이터 및 재생방지 카운터(anti-replay counter; 이하 ARC)를 저장할 수 있다. 재생방지 카운터는 코드 또는 데이터가 전송될 때마다 카운트값을 증가시켜, 해당 코드 또는 데이터의 무결성을 확인할 수 있다. 비휘발성 메모리 장치(200)는 코드 또는 데이터를 F 암호키로 암호화하여 저장할 수 있다. 호스트 하드웨어 모듈(30)은 F 암호키를 이용하여 SoC(1)에서 비휘발성 메모리 장치(200)로 전송되는 데이터를 암호화하고, 비휘발성 메모리 장치(200)에서 SoC(1)로 수신되는 데이터는 복호화할 수 있다.
전용 외부 메모리(400)는 플래시(flash) 메모리, 상변화 메모리(PCRAM), 저항변화 메모리(ReRAM), 강유전체 메모리(FeRAM), 자기저항 메모리(MRAM)와 같은 비휘발성 메모리로 구현될 수 있다. 전용 외부 메모리(400)는 예를 들면 ARC 카운트값, 적어도 둘의 F 암호키(F_key 1~N) 및 보안 데이터(Data)를 저장할 수 있다.
도 2는 몇몇 실시예에 따른 시큐어 엘리먼트의 구체적 구성을 나타낸 블록도이고, 도 3은 도 2에 도시된 데이터 블록의 구체적 구성을 나타낸 블록도이며, 도 4는 도 2에 도시된 키 블록의 구체적 구성을 나타낸 블록도이다.
도 2를 참조하면, iSE(100)는 몇몇 실시예에 따라 CPU(110), 랜덤 넘버 생성부(120), 데이터 블록(DUD, 130), 암호화엔진(140), 키 블록(DUK, 150), 키 레지스터(160)를 포함할 수 있다. 일 예로 랜덤 넘버 생성부(120), 데이터 블록(130), 암호화엔진(140), 키 블록(150), 키 레지스터(160)는 시큐어 하드웨어 모듈(190)에 포함될 수도 있고, 다른 예로 시큐어 하드웨어 모듈(190)과 별개로 구현될 수도 있다.
iSE(100)의 각 구성요소들, 예를 들어, 랜덤 넘버 생성부(120), 데이터 블록(DUD, 130), 암호화엔진(140), 키 블록(DUK, 150), 키 레지스터(160) 등은, 실시예에 따라 별개의 프로세싱 회로로 구현될 수도 있고, 하나의 프로세싱 회로로 구현될 수도 있다. 여기서 프로세싱 회로는 알고리즘에 의한 프로그램 코드 등의 소프트웨어 형식일 수도 있고, 특정 동작을 하는 하드웨어로 구현될 수도 있으며, 소프트웨어와 하드웨어가 결합된 형태로 구현될 수도 있다.
CPU(110)는 iSE(100)의 전반적인 동작을 제어한다. 예를 들면 CPU(110)는 TEE(30)로부터 수신된 제어 커맨드를 수신하여 iSE 내부 커맨드 및 타겟 주소로 디코딩할 수 있고, iSE 내부 커맨드에 따라 iSE(100)의 구성 요소들에 대한 동작을 제어할 수 있다. 예를 들어 CPU(110)는 비휘발성 메모리(200), 외부 메모리(300) 또는 전용 메모리(400) 중 어느 하나 타겟 주소에 저장된 데이터를 리드하여 iSE 내부 커맨드에 상응하는 연산을 수행할 수 있다.
랜덤 넘버 생성부(120)는 랜덤 넘버를 생성할 수 있다. 랜덤 넘버 생성부(120)는 몇몇 실시예에 따라 기설정된 조건에 따라 비주기적으로 또는 주기적으로 랜덤 넘버를 생성할 수 있다. 예를 들어 랜덤 넘버 생성부(120)는 SoC(1)의 전원이 켜질 때마다 랜덤 넘버를 생성할 수 있다. 또는 예를 들어 랜덤 넘버 생성부(120)는 시간-의존적으로 기설정된 주기로 랜덤 넘버를 생성할 수 있다. 또는 예를 들어 랜덤 넘버 생성부(120)는 기설정된 트리거 조건에 따라 비주기적으로 랜덤 넘버를 생성할 수도 있다.
데이터 블록(130) 및 키 블록(140)은 랜덤 넘버 및 타겟 주소를 기초로 시드값 및 D 암호키를 생성할 수 있다.
도 2 및 도 3을 참조하면, 데이터 블록(130)은 송수신되는 데이터를 마스킹/언마스킹할 수 있다.
데이터 블록(130)은 몇몇 실시예에 따라 CPU(110)로부터 타겟 주소(Address) 및 iSE 내부 커맨드(이하 커맨드)에 기초한 데이터(decrypted data)를 수신하고 외부 메모리(300)로 전송할 수 있다. 데이터 블록(130)은 데이터(decrypted data)를 시드값(Seed Value)로 마스킹하여 외부 메모리(300)로 전송할 수 있다.
또는 데이터 블록(130)은 몇몇 실시예에 따라 외부 메모리(300)로부터 iSE 내부 커맨드(이하 커맨드)에 기초한 데이터(encrypted data)를 CPU(110)로 전송할 수 있다. 데이터 블록(130)은 데이터(encrypted data)를 시드값(Seed Value)로 언마스킹하여 CPU(110)로 전송할 수 있다.
데이터 블록(130)은 설정된 데이터 시드 테이블 운영 정책에 따라 랜덤 넘버에 상응하는 데이터 시드 테이블을 생성할 수 있다. 데이터 시드 테이블은 복수의 주소 각각에 매핑되는 복수의 시드값을 포함할 수 있다. 상기 주소는 암호화/복호화를 수행할 데이터의 주소, 예를 들어 외부 메모리(300)에 대한 주소일 수 있다. 몇몇 실시예에 따라 데이터 시드 테이블 운영 정책은 복수 개일 수 있고, 사용자의 설정 또는 시스템 설정에 따라 적어도 하나로 설정될 수 있다.
데이터 블록(130)은 생성된 데이터 시드 테이블에서 타겟 주소를 참조하여 어느 하나의 시드값을 추출하고, 추출된 시드값을 저장할 수 있다.
몇몇 실시예에 따라 데이터 블록(130)은 데이터 시드 테이블 매니저(131), 데이터 시드 테이블 저장부(132), 데이터 시드 피더(133), 마스킹 회로(135, 137)를 포함할 수 있다. 데이터 시드 테이블 매니저(131)는 적어도 하나의 데이터 시드 테이블 운영 정책을 설정할 수 있다. 데이터 시드 테이블 매니저(131)는 일 예로 사용자의 설정 또는 시스템 설정에 따라 적어도 하나의 운영 정책을 설정할 수 있다. 운영 정책은 예를 들면, 메모리 블록 사이즈, 주소, 데이터 시드 테이블의 업데이트 주기 등에 대한 정책을 포함할 수 있다.
데이터 시드 테이블 매니저(131)는 랜덤 넘버를 기초로 운영 정책에 따라 데이터 시드 테이블을 생성할 수 있다. 몇몇 실시예로 데이터 시드 테이블 매니저(131)는 운영 정책에 기초하여 외부 메모리(300)의 보안 영역(350) 전체에 대해 테이블 엘리먼트(element)를 변경시킬 수도 있고, 또는 보안 영역(350) 일부에 대해 테이블 엘리먼트를 변경시킬 수도 있고, 또는 운영 정책으로 변경 위치를 가변시키거나, 변경 주기를 가변시킬 수도 있다. 즉, 시드 테이블 운영 정책은 테이블 엘리먼트의 가변 범위 스킴(scheme), 위치의 가변 스킴, 또는 변경 주기 중 적어도 하나에 대한 것일 수 있다.
데이터 시드 테이블 저장부(132)는 데이터 시드 테이블 매니저(131)에서 생성된 데이터 시드 테이블을 저장한다. 데이터 시드 테이블은 복수의 주소(Address 1 ~ Address N) 각각에 매핑된 복수의 데이터 시드값(Seed Value D1 ~ Seed Value DN)일 수 있다.
데이터 시드 피더(133)는 CPU(110)로부터 타겟 주소를 수신하면, 데이터 시드 테이블 저장부(132)에 저장된 데이터 시드 테이블에서 상기 타겟 주소(Address k)에 상응하는 시드값(Seed Value Dk)을 추출한다.
마스킹 회로(135, 137)는 데이터 시드 피더(133)에서 추출된 시드값을 기초로 데이터를 마스킹하거나 언마스킹할 수 있다. 마스킹 회로(135,137)는 일 예로 XOR 연산으로 데이터 및 시드값을 마스킹 데이터로 생성하거나 마스킹 데이터 및 시드값을 XOR 연산하여 언마스킹 데이터로 생성할 수 있다. 일 예로 마스킹 회로(135, 137)는 송신 패스와 수신 패스 각각에 XOR 회로로 별개로 구현될 수 있다. 또는 다른 예로 하나의 XOR 회로로 구현되어 송신 패스 및 수신 패스에 공통으로 마스킹 또는 언마스킹 연산을 수행할 수도 있다.
예를 들어 마스킹 회로(135)는 CPU(110)에서 수신된 데이터(Data)와 시드값을 XOR 연산하여 마스킹 데이터((DATA))를 암호화 엔진(140)으로 출력한다. 예를 들어 마스킹 회로(137)는 암호화 엔진(140)에서 수신된 마스킹 데이터((DATA))와 시드값을 XOR 연산하여 언마스킹 데이터(DATA)를 CPU(110)로 출력한다.
암호화 엔진(140)은 D 암호키로 마스킹 데이터(decrypted data)를 암호화(encrypt)하여 외부 메모리(300)로 전송하고, D 암호키로 외부 메모리(300)에서 수신된 데이터(encrypted data)를 복호화(decrypt)하여 데이터 블록(130)으로 전송한다.
몇몇 실시예에 따라 D 암호키는 키 레지스터(160)에 저장된 것일 수 있다.
키 블록(150)은 복수의 D 암호키를 저장할 수 있다. 키 블록(150)은 일 실시예에 따라 기설정된 복수의 D 암호키를 저장할 수도 있고, 다른 실시예에 따라 시간-의존적으로(time dependent) 변경되는 복수의 D 암호키를 저장할 수도 있다. 복수의 D 암호키는 키 시드 테이블일 수 있다.
키 블록(150)은 설정된 키 시드 테이블 운영 정책에 따라 랜덤 넘버에 상응하는 키 시드 테이블을 생성할 수 있다. 키 시드 테이블은 복수의 주소 각각에 매핑되는 복수의 키 시드값을 포함할 수 있다. 상기 주소는 암호화/복호화를 수행할 데이터의 주소, 예를 들어 외부 메모리(300)에 대한 주소일 수 있다. 몇몇 실시예에 따라 키 시드 테이블 운영 정책은 복수 개일 수 있고, 사용자의 설정 또는 시스템 설정에 따라 적어도 하나로 설정될 수 있다
키 블록(150)은 생성된 키 시드 테이블에서 타겟 주소를 참조하여 어느 하나의 키 시드값을 추출하고, 추출된 키 시드값을 키 레지스터(160)에 D 암호키로 저장할 수 있다.
키 블록(150)은 키 시드 테이블 매니저(151), 키 시드 테이블 저장부(152) 및 키 시드 피더(153)를 포함할 수 있다. 키 시드 테이블 매니저(151)는 적어도 하나의 키 시드 테이블 운영 정책을 설정할 수 있다. 키 시드 테이블 매니저(151)는 일 예로 사용자의 설정 또는 시스템 설정에 따라 적어도 하나의 운영 정책을 설정할 수 있다. 운영 정책은 예를 들면, 메모리 블록 사이즈, 주소, 키 시드 테이블의 업데이트 주기 등에 대한 정책을 포함할 수 있다.
몇몇 실시예로 키 시드 테이블 매니저(151)는 운영 정책에 기초하여 외부 메모리(300)의 보안 영역(350) 전체에 대해 테이블 엘리먼트(element)를 변경시킬 수도 있고, 또는 보안 영역(350) 일부에 대해 테이블 엘리먼트를 변경시킬 수도 있고, 또는 운영 정책으로 변경 위치를 가변시키거나, 변경 주기를 가변시킬 수도 있다.
예를 들어 키 시드 테이블의 업데이트 주기는 데이터 시드 테이블과 동일한 업데이트 주기를 가질 수도 있고, 다른 예로 별개의 조건에 따른 서로 다른 업데이트 주기를 가질 수도 있다. 키 시드 테이블 매니저(151)는 랜덤 넘버를 기초로 운영 정책에 따라 키 시드 테이블을 생성할 수 있다.
키 시드 테이블 저장부(152)는 키 시드 테이블 매니저(151)에서 생성된 키 시드 테이블을 저장한다. 키 시드 테이블은 복수의 주소(Address 1 ~ Address N) 각각에 매핑된 복수의 키 시드값(Seed Value K1 ~ Seed Value KN)일 수 있다.
키 시드 피더(153)는 CPU(110)로부터 타겟 주소를 수신하면, 데이터 시드 테이블 저장부(152)에 저장된 데이터 시드 테이블에서 상기 타겟 주소(Address k)에 상응하는 키 시드값(Seed Value Kk)을 추출한다.
키 레지스터(160)는 추출된 키 시드값(Seed Value K)을 D 암호키로 저장할 수 있다.
즉, 데이터 블록(130)은 iSE(100)의 외부로 송수신할 데이터는 마스킹(1차 암호화)하고, 암호화 엔진(140)은 마스킹 데이터((DATA))를 D 암호키로 암호화(2차 암호화)함으로써 데이터의 신뢰성 및 무결성을 보다 향상시킬 수 있다. 다만 복수 차수의 암호화에도 불구하고, 외부 공격에 시드값 또는 D 암호키가 노출될 수 있으므로 다양한 실시예에 따라 시드값 또는 D 암호키는 시간 의존적으로 변화하는 값을 가질 수도 있다.
본 발명은 데이터를 D 암호키로 암호화 또는 복호화하여 외부 메모리(300)에 송수신하기 때문에 데이터 신뢰성(Confidentiality)을 유지할 수 있다. 또한, 본 발명은, 소정의 운영정책에 기초하여 D 암호키 또는 데이터 시드값을 변이하여 이용함으로써, 외부 메모리(300)에 저장되는 데이터의 내용을 공격자가 예측하기 어렵게 할 수 있다(Integrity 유지).
도 5는 도 1에 도시된 외부 메모리를 구체적으로 나타낸 도면이고, 도 6은 도 1에 도시된 내부 메모리를 구체적으로 나타낸 도면이다.
도 1 및 도 5를 참조하면, 외부 메모리(300)는 보안을 요구하지 않는 데이터를 저장하는 노말 영역(310) 및 보안 데이터를 저장하는 시큐어 영역(350)으로 구분될 수 있다.
앞서 설명한 바와 같이 예를 들면, 보안 데이터는 보안 어플리케이션에 관한 정보, 또는 금융 결제 서비스에 연관된 정보 및 임베디드 서비스에 연관된 정보 중 적어도 하나를 포함할 수 있다. 보안 어플리케이션에 대한 정보는 예를 들면, 사용자 인증 정보와 같은 생체 정보를 포함할 수 있다.
다른 예를 들어, 보안 데이터는 보안 저장 및 지불, 인증 또는 다른 다양한 서비스를 위한 애플리케이션의 실행을 제공하는데 필요한 소프트웨어, 코드 또는 데이터를 포함할 수 있다.
도 1 및 도 6을 참조하면, 내부 메모리(170)는 iSE(100)에 포함되는 메모리로서, ROM(Read Only Memory, 이하 ROM; 171), RAM(Random Access Memory, 이하 RAM; 172) 및 OTP(One Time Programmable Memory, 이하 OTP; 173)를 포함할 수 있다.
ROM(171)은 몇몇 실시예에 따라 iSE(100)의 동작과 관련된 설정코드를 저장할 수 있다. 일 예로 설정코드는 iSE(100)와 주변 장치(10, 20, 30, 400)간 데이터 액세스 동작 등을 관리할 수 있다. 다른 예로 ROM(171)은 도 2 내지 도 4에서 설명한 데이터 시드 테이블 운영 정책 또는 키 시드 테이블 운영 정책에 대한 설정코드를 저장할 수 있다.
SoC(1)의 전원이 켜지면, iSE(100)는 ROM(171)에 저장되어 있는 데이터 시드 테이블 운영 정책과 관련된 제1 설정코드를 데이터 시드 테이블 매니저(131)에 전송하고, 데이터 시드 테이블 매니저(131)는 제1 설정코드에 기초하여 데이터 시드 테이블 운영 정책을 설정한다. SoC(1)의 전원이 켜지면, iSE(100)는 ROM(171)에 저장되어 있는 키 시드 테이블 운영 정책과 관련된 제2 설정코드를 키 시드 테이블 매니저(151)에 전송하고, 키 시드 테이블 매니저(151)는 제2 설정코드에 기초하여 키 시드 테이블 운영 정책을 설정한다.
RAM(172)은 iSE(100)의 동작메모리일 수 있다. 예를 들어 RAM(172)은 도 2 내지 도 4에서 설명한 시드 테이블(132, 152)을 저장할 수 있다.
몇몇 실시예에 따라 OTP(173)는 랜덤 넘버 제너레이터(120)를 포함할 수 있다. iSE(100)는 OTP(173)에 저장된 랜덤 넘버 제너레이터(120)에 기초하여 랜덤 넘버를 생성할 수 있고, 랜덤 넘버는 데이터 블록(130)에서는 데이터 시드 테이블을, 키 블록(150)에서는 키 시드 테이블을 생성하는데 이용될 수 있다.
도 7은 몇몇 실시예에 따른 SoC의 동작방법을 설명하기 위한 개념도이다.
도 7을 참조하면, SoC(1)의 전원이 켜지면, SoC(1)는 비휘발성 메모리 장치(200)에 저장된 코드 또는 데이터(이하 설명 편의상 제1 데이터로 호칭한다)를 리드한다. iSE(100)는 전용 외부 메모리(400)로부터 F 암호키(F_key1)를 리드하고, 호스트 하드웨어 모듈(30)은 비휘발성 메모리 장치(200)에서 수신된 제1 데이터를 F 암호키로 복호화하여, iSE(100)의 내부 메모리(170)로 저장한다. 이 때 전송된 제1 데이터의 ARC는 증가된다.
CPU(110)는 내부 메모리(170)에 저장된 제1 데이터를 프로세싱하며, 프로세싱으로 나오는 제2 데이터를 캐시(111)에 저장한다. 제2 데이터는 예를 들면, iSE(100)에서 필요한 응용 프로그램 코드 또는 설정 코드일 수 있다.
CPU(110)는 캐시(111)에 저장된 제2 데이터를 외부 메모리(300)의 타겟 주소로 전송한다. iSE(100)는 제2 데이터(Code 1, Code 2, Code 3)를 시드값으로 마스킹하고, D 암호키(D_key1)로 암호화하여 외부 메모리(300)로 전송한다. 외부 메모리(300)는 보안 영역(350)에 암호화된 제2 데이터를 저장한다. 이때 시드값 또는 D 암호키 중 적어도 하나는 동적으로 변이할 수 있다. 외부 메모리(300)에 저장된 제2 데이터는 내부 메모리(170)로 로딩되어 CPU(110)의 프로세싱 동작에 이용될 수 있다.
CPU(110)의 프로세싱 동작으로 생성되는 보안 데이터는 전용 외부 메모리(400)에 저장될 수 있다.
만약 외부 공격을 시도하는 공격자가 외부 메모리(300)에 저장된 데이터를 획득하여 이용할 경우, 공격 시점에 이용되는 D 암호키(D_key2)는 데이터 저장시점의 D 암호키(D_key1)와 다르므로, D 암호키(D_key2)에 기초한 제2 데이터(Code H)는 무효한 데이터가 된다.
SoC(1)의 전원이 꺼지는 경우, 전원이 꺼지기 전에 iSE(100)는 내장 메모리(170) 또는 캐시(111)에 저장하였던 제2 데이터를 비휘발성 메모리(200)로 전송할 수 있다. 이때 제2 데이터는 시간-의존적으로 변이되는 D 암호키 또는 시드값으로 복호화 및 언마스킹된 후, F 암호키로 암호화되어 비휘발성 메모리 장치(200)로 저장될 수 있다.
도 8 및 도 9는 몇몇 실시예에 따른 SoC의 동작방법을 설명하기 위한 흐름도이다.
도 8 및 도 9를 참조하면, SoC(1)의 전원이 켜지면(S100), iSE(100)는 랜덤 넘버를 생성하고(S11), 데이터 시드 테이블 운영 정책 및 키 시드 테이블 운영 정책을 설정한다(S12, S51). iSE(100)는 설정된 데이터 시드 테이블 운영 정책에 따라 랜덤 넘버에 기초한 데이터 시드 테이블을 생성하고(S13), 설정된 키 시드 테이블 운영 정책에 따라 랜덤 넘버에 기초한 키 시드 테이블을 생성한다(S52).
iSE(100)는 비휘발성 메모리 장치(200)에 저장된 제1 데이터(코드 또는 데이터)를 리드하고(S14, S15), 리드된 제1 데이터를 F 암호키로 복호화한다(S16, S17). F 암호키는 iSE(100)의 전용 외부 메모리(400)에 저장된 값일 수 있다.
iSE(100)는 제1 데이터를 프로세싱하여 제2 데이터를 생성하고, 제2 데이터를 외부 메모리(300)에 저장하기 위해 D 암호키를 이용하여 암호화한다(S18). 이때 제2 데이터는 복호화된 제1 데이터를 시드값으로 마스킹한 데이터일 수 있다. 이 경우 시드값은 S13의 데이터 시드 테이블에서 제1 데이터가 저장될 타겟 주소에 상응하는 데이터 시드값일 수 있다. D 암호키는 S52의 키 시드 테이블에서 제1 데이터가 저장될 타겟 주소에 상응하는 키 시드값일 수 있다(S53). D 암호키로 암호화된 제2 데이터는 외부 메모리(300)로 전송되어 저장될 수 있다(S19, S20).
몇몇 실시예에 따라 데이터 시드 테이블 또는 키 시드 테이블은 랜덤 넘버가 변경되기 전까지 유지될 수 있고, 랜덤 넘버는 일 예로 전원이 켜진 후 전원이 꺼질 때까지(S100~S200) 일정하게 유지될 수도 있고, 다른 예로 비주기적으로 또는 주기적으로 변경될 수도 있다.
iSE(100)의 동작에 따라 외부 메모리(300)는 저장된 데이터에 대한 리드 명령을 수신할 수 있다(S21). 외부 메모리(300)는 리드 명령에 따른 타겟 주소의 제3 데이터를 리드하여(S22) iSE(100)로 전송한다(S23). iSE(100)는 제3 데이터를 타겟 주소에 기초한 D-암호키로 복호화하고, 타겟 주소에 기초한 시드값으로 언마스킹할 수 있다(S24).
만약 SoC(1)의 전원이 꺼질 경우(S25), iSE(100)는 내부 메모리(170), 캐시(111) 또는 외부 메모리(300)에 있던 제4 데이터를 리드한다(S26, S27, S28). iSE(100)는 리드된 제4 데이터를 F 암호키로 암호화하여(S29) 비휘발성 메모리 장치(200)에 저장한 후(S30, S31) 전원을 오프할 수 있다.
도 10 내지 도 14는 몇몇 실시예에 따른 SoC를 나타낸 것이다. 중복되는 설명은 생략하고 앞선 실시예와 차이점을 위주로 설명한다.
도 10은 몇몇 실시예에 따른 SoC를 구체적으로 나타낸 블록도이다.
도 10을 참조하면, 몇몇 실시예에 따른 iSE(100')는 CPU(110), 랜덤 넘버 제너레이터(121), 시드 테이블 매니저(122), 데이터 블록(130'), 키 블록(150'), 암호화 엔진(140) 및 키 레지스터(160)를 포함할 수 있다.
도 10의 iSE(100')는 도 3 및 도 4와 달리 시드 테이블 매니저(122)가 데이터 블록(130') 및 키 블록(150')과 별개로 구현될 수 있다. 이 경우 데이터 블록(130')은 데이터 시드 테이블 저장부(132), 데이터 시드 피더(133) 및 마스킹 회로(135, 137)를 포함할 수 있다. 또한 키 블록(150')은 키 시드 테이블 저장부(152), 키 시드 피더(153)를 포함할 수 있다.
시드 테이블 매니저(122)는 데이터 시드 테이블 운영정책 및 키 시드 테이블 운영정책을 각각 포함할 수 있다. 시드 테이블 매니저(122)는 랜덤 넘버에 기초하여 데이터 시드 테이블 운영정책에 따른 데이터 시드 테이블을 생성하고, 데이터 시드 테이블 저장부(132)에 저장할 수 있다. 시드 테이블 매니저(122)는 랜덤 넘버에 기초하여 키 시드 테이블 운영정책에 따른 키 시드 테이블을 생성하고, 키 시드 테이블 저장부(152)에 저장할 수 있다.
도 11은 몇몇 실시예에 따른 SoC를 구체적으로 나타낸 블록도이고, 도 12는 도 11에 도시된 키 블럭을 구체적으로 나타낸 블록도이다.
도 11을 참조하면, 몇몇 실시예에 따른 iSE(100)는 CPU(110), 랜덤 넘버 제너레이터(120), 데이터 블록(130), 키 블록(150), 암호화 엔진(140) 및 키 레지스터(160)를 포함할 수 있다. 랜덤 넘버는 도 2와 달리 데이터 블록(130)에만 입력되고, 키 블록(150)에는 입력되지 않을 수 있다.
도 12를 참조하면, 몇몇 실시예에 따른 데이터 블록(130)은 랜덤 넘버의 변이에 따라 데이터 시드값이 변이되고, 데이터 시드값이 마스킹된 값으로 외부 메모리(300)에 저장될 수 있다. 키 블록(130)은 랜덤 넘버를 참조하지 않고 기설정되는 키 시드 테이블(152)을 포함한다. 키 시드 피더(153)는 키 시드 테이블(152)에서 타겟 주소(address k)에 상응하는 키 시드값(seed value k)을 추출하여 암호키로 이용할 수 있다.
도 13은 몇몇 실시예에 따른 SoC를 구체적으로 나타낸 블록도이고, 도 14는 도 13에 도시된 데이터 블럭을 구체적으로 나타낸 블록도이다.
도 13을 참조하면, 몇몇 실시예에 따른 iSE(100)는 CPU(110), 랜덤 넘버 제너레이터(120), 데이터 블록(130), 키 블록(150), 암호화 엔진(140) 및 키 레지스터(160)를 포함할 수 있다. 랜덤 넘버는 도 2와 달리 데이터 블록(130)에는 입력되지 않고, 키 블록(150)에만 입력될 수 있다.
도 14를 참조하면, 몇몇 실시예에 따른 데이터 블록(130)은 기설정되어 저장된 데이터 시드 테이블(132)에서, 타겟 주소에 상응하는 시드값을 추출하여 데이터를 마스킹/언마스킹 한다. 키 블록(130)은 랜덤 넘버를 참조하여 생성되는 키 시드 테이블(152)에서, 타겟 주소에 상응하는 키 시드값을 추출하여 암호키로 이용할 수 있다.
즉, 도 11 내지 도 14의 실시예는 데이터 블록 또는 키 블록 중 어느 하나만 랜덤 넘버에 기초하여 변이될 수 있다. 시드값과 키 중 어느 하나만 동적으로 변이하게 되면 도 2 내지 도 5의 실시예보다 보다 빠르게 시드 테이블을 생성하여 이용하므로 동작 속도가 좀더 향상될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1000 : 전자장치
1: SoC
10 : REE 20: TEE
30: 호스트 하드웨어 모듈 100: 시큐어 엘리먼트, iSE
200 : 비휘발성 메모리 장치 300 : 외부 메모리
400 : 전용 메모리
110 : CPU 120 : 랜덤넘버 제너레이터
130 : 데이터 블록 140 : 암호화 엔진
150 : 키 블록 160 : 키 레지스터
170 : 내부 메모리 190 : SE 하드웨어 모듈
10 : REE 20: TEE
30: 호스트 하드웨어 모듈 100: 시큐어 엘리먼트, iSE
200 : 비휘발성 메모리 장치 300 : 외부 메모리
400 : 전용 메모리
110 : CPU 120 : 랜덤넘버 제너레이터
130 : 데이터 블록 140 : 암호화 엔진
150 : 키 블록 160 : 키 레지스터
170 : 내부 메모리 190 : SE 하드웨어 모듈
Claims (20)
- 시큐어 엘리먼트를 포함하는 SoC(System on Chip)의 동작방법에 있어서,
전원이 켜지면, 랜덤 넘버가 형성되는 단계;
시드 테이블 운영 정책에 기초하여 상기 랜덤 넘버에 따른 시드 테이블이 생성되는 단계;
제1 데이터를 상기 시드 테이블에서 타겟 주소에 상응하는 제1 데이터 시드값으로 마스킹하는 단계;
상기 마스킹된 제1 데이터를 상기 시드 테이블에서 제1 유형 제1 암호키로 암호화하는 단계; 및
상기 제1 암호화된 제1 데이터를 외부 메모리의 상기 타겟 주소에 라이트하는 단계를 포함하고,
상기 데이터 시드값 또는 상기 제1 유형 제1 암호키 중 어느 하나는 동적으로 변이하는 것인, SoC의 동작방법. - 제1항에 있어서, 상기 랜덤 넘버는 동적으로 변이하는 것인, SoC의 동작방법.
- 제1항에 있어서, 상기 시드 테이블 운영 정책은
상기 시드 테이블에 포함되는 테이블 엘리먼트의 가변 범위 스킴, 위치의 가변 스킴 또는 변경 주기 중 적어도 하나를 포함하는, SoC의 동작방법. - 제1항에 있어서,
상기 외부 메모리에서 수신된 제2 데이터를 제1 유형 제2 암호키로 복호화하는 단계;
상기 복호화된 제2 데이터를 상기 제2 데이터의 주소값에 상응하는 제2 데이터 시드값으로 언마스킹하는 단계를 더 포함하는, SoC의 동작방법. - 제4항에 있어서, 상기 제1 유형 제2 암호키 또는 상기 제2 데이터 시드값은 상기 제1 유형 제1 암호키 또는 상기 제1 데이터 시드값과 다른 랜덤 넘버에 기초하여 생성된 것인, SoC의 동작방법.
- 제1항에 있어서, 상기 제1 데이터는
비휘발성 메모리 장치로부터 리드되어 제2 유형 암호키로 복호화된 데이터인, SoC의 동작방법. - 외부 메모리와 연결된 SoC(System On Chip)에 있어서,
상기 SoC는
타겟 주소 및 라이트 커맨드를 출력하는 CPU 및 프로세싱 회로를 포함하는 시큐어 엘리먼트를 포함하고,
상기 프로세싱 회로는
제1 데이터를, 데이터 시드 테이블에서 상기 타겟 주소에 상응하는 상기 데이터 시드값으로 마스킹하고,
키 시드 테이블에서, 상기 타겟 주소에 상응하는 키 시드값을 추출하여 제1유형 암호키로 생성하고, 상기 마스킹된 제1 데이터를 상기 제1유형 암호키로 암호화하고,
상기 암호화된 제1 데이터를 상기 외부 메모리에 저장시키고,
상기 데이터 시드값 또는 상기 제1유형 암호키 중 적어도 하나는 시드 테이블 운영정책에 기초하여 동적으로 변이되는, SoC. - 제7항에 있어서, 상기 외부 메모리는 상기 암호화된 제1 데이터를 저장하는 보안 영역 및 암호화되지 않은 일반 데이터를 저장하는 노말 영역을 포함하는 휘발성 메모리인, SoC.
- 제7항에 있어서, 상기 데이터 시드 테이블 및 상기 키 시드 테이블은 동적으로 변이되는 랜덤 넘버에 따라 생성되고,
상기 시큐어 엘리먼트는
상기 데이터 시드값을 추출하여 상기 제1 데이터를 마스킹하는 데이터 블록;
상기 타겟 주소에 상응하는 상기 키 시드값을 추출하는 키 블록;
상기 키 시드값을 상기 제1유형 암호키로 저장하는 키 레지스터; 및
상기 마스킹된 제1 데이터를 상기 저장된 제1 유형 암호키로 암호화하여 상기 외부 메모리로 출력하는 암호화 엔진을 포함하는, SoC. - 제7항에 있어서, 상기 데이터 시드 테이블은 동적으로 변이되는 랜덤 넘버에 따라 생성되고, 상기 키 시드 테이블은 기설정된 테이블이고,
상기 시큐어 엘리먼트는
상기 데이터 시드값으로 상기 제1 데이터를 마스킹하는 데이터 블록;
상기 타겟 주소에 상응하는 상기 키 시드값을 추출하는 키 블록;
상기 키 시드값을 상기 제1유형 암호키로 저장하는 키 레지스터; 및
상기 마스킹된 제1 데이터를 상기 저장된 제1 유형 암호키로 암호화하여 상기 외부 메모리로 출력하는 암호화 엔진을 포함하는, SoC. - 제7항에 있어서, 상기 데이터 시드 테이블은 기설정된 테이블이고 및 상기 키 시드 테이블은 동적으로 변이되는 랜덤 넘버에 따라 생성되고,
상기 시큐어 엘리먼트는
타겟 주소에 상응하는 상기 데이터 시드값을 추출하고, 상기 데이터 시드값으로 상기 제1 데이터를 마스킹하는 데이터 블록;
상기 키 시드값을 추출하는 키 블록;
상기 키 시드값을 상기 제1유형 암호키로 저장하는 키 레지스터; 및
상기 마스킹된 제1 데이터를 상기 저장된 제1 유형 암호키로 암호화하여 상기 외부 메모리로 출력하는 암호화 엔진을 포함하는, SoC. - 제7항에 있어서, 상기 시드 테이블 운영정책은
상기 시드 테이블에 포함되는 테이블 엘리먼트의 가변 범위 스킴, 위치의 가변 스킴 또는 변경 주기 중 적어도 하나를 포함하는, SoC. - 제7항에 있어서, 상기 시드 테이블 운영정책은
상기 데이터 시드 테이블 또는 상기 키 시드 테이블 중 적어도 하나에 적용되는, SoC. - 제7항에 있어서, 상기 SoC는
적어도 하나의 제2 유형 암호키를 저장하는 전용 메모리 및 비휘발성 메모리와 각각 연결되고,
상기 프로세싱 회로는
상기 전용 메모리에서 수신한 상기 제2 유형 암호키로 제2 데이터를 암호화하고,
상기 암호화된 제2 데이터를 상기 비휘발성 메모리에 라이트하는, SoC. - 제14항에 있어서, 상기 SoC는
상기 시큐어 엘리먼트의 내부 메모리 또는 상기 외부 메모리에 저장된 상기 제2 데이터를 암호화하여 상기 비휘발성 메모리에 라이트하고,
상기 SoC의 전원을 끄는, SoC. - 전원이 켜지면, 시간-종속적으로 랜덤 넘버가 생성되고, 데이터 시드 테이블 정책을 설정하는 단계;
상기 데이터 시드 테이블 정책에 따라 상기 랜덤 넘버에 상응하는 데이터 시드 테이블을 설정하는 단계;
비휘발성 메모리 장치로부터 제1 데이터를 리드하는 단계;
상기 제1 데이터를 타겟 주소에 상응하는 데이터 시드값과 마스킹하는 단계;
상기 마스킹된 제1 데이터를 외부 메모리의 상기 타겟 주소에 라이트하는 단계를 포함하는, 시큐어 엘리먼트의 동작방법. - 제16항에 있어서, 상기 데이터 시드 테이블 정책은
상기 데이터 시드 테이블에 포함되는 테이블 엘리먼트의 가변 범위 스킴, 위치의 가변 스킴 또는 변경 주기 중 적어도 하나를 포함하는, 시큐어 엘리먼트의 동작방법. - 제16항에 있어서, 상기 마스킹하는 단계는
상기 비휘발성 메모리 장치에 대한 제1 유형 암호키를 이용해 상기 리드된 제1 데이터를 복호화하는 단계;
상기 설정된 데이터 시드 테이블에서 상기 타겟 주소에 상응하는 상기 데이터 시드값을 추출하는 단계;
상기 데이터 시드값을 이용하여 상기 복호화된 제1 데이터를 마스킹하는 단계; 및
상기 마스킹된 제1 데이터를 제2유형 암호키를 이용해 암호화하는 단계를 포함하는, 시큐어 엘리먼트의 동작방법. - 제18항에 있어서,
상기 외부 메모리에 저장된 제2 데이터를 리드하는 단계;
상기 제2 데이터를 상기 제2유형 암호키를 이용하여 복호화하는 단계; 및
상기 복호화된 제2 데이터를 상기 데이터 시드값으로 언-마스킹하는 단계를 더 포함하는, 시큐어 엘리먼트의 동작방법. - 제18항에 있어서, 상기 시큐어 엘리먼트는,
상기 전원이 켜지면, 키 시드 테이블 정책을 설정하는 단계;
상기 키시드 테이블 정책에 따라 상기 랜덤 넘버에 상응하는 키 시드 테이블을 설정하는 단계; 및
상기 키 시드 테이블에서 상기 타겟 주소에 상응하는 제2유형 암호키를 추출하는 단계를 더 포함하는, 시큐어 엘리먼트의 동작방법.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210026097A KR20220122009A (ko) | 2021-02-26 | 2021-02-26 | 시스템 온 칩 및 그 동작 방법 |
DE102021128459.7A DE102021128459A1 (de) | 2021-02-26 | 2021-11-02 | Ein-Chip-System und Betriebsverfahren davon |
US17/518,013 US20220277088A1 (en) | 2021-02-26 | 2021-11-03 | System on chip and operating method thereof |
CN202210139559.7A CN114968905A (zh) | 2021-02-26 | 2022-02-15 | 片上***及其操作方法 |
TW111105635A TW202234272A (zh) | 2021-02-26 | 2022-02-16 | 系統單晶片及其操作方法以及安全元件電路的操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210026097A KR20220122009A (ko) | 2021-02-26 | 2021-02-26 | 시스템 온 칩 및 그 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220122009A true KR20220122009A (ko) | 2022-09-02 |
Family
ID=82799381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210026097A KR20220122009A (ko) | 2021-02-26 | 2021-02-26 | 시스템 온 칩 및 그 동작 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220277088A1 (ko) |
KR (1) | KR20220122009A (ko) |
CN (1) | CN114968905A (ko) |
DE (1) | DE102021128459A1 (ko) |
TW (1) | TW202234272A (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024049141A1 (ko) * | 2022-09-02 | 2024-03-07 | 삼성전자주식회사 | 암호화된 데이터를 비휘발성 메모리 내에 저장하기 위한 전자 장치 및 그 방법 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
KR102466412B1 (ko) * | 2016-01-14 | 2022-11-15 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR102419505B1 (ko) * | 2016-03-09 | 2022-07-08 | 삼성전자주식회사 | 스토리지 디바이스의 인증 방법 및 시스템 |
CN112020843A (zh) * | 2018-08-17 | 2020-12-01 | 惠普发展公司,有限责任合伙企业 | 非易失性存储器设备中的临时区 |
CN111010266B (zh) * | 2019-12-09 | 2023-04-07 | 广州市百果园信息技术有限公司 | 消息的加解密、读写方法、装置、计算机设备和存储介质 |
WO2022132184A1 (en) * | 2020-12-20 | 2022-06-23 | Intel Corporation | System, method and apparatus for total storage encryption |
-
2021
- 2021-02-26 KR KR1020210026097A patent/KR20220122009A/ko unknown
- 2021-11-02 DE DE102021128459.7A patent/DE102021128459A1/de active Pending
- 2021-11-03 US US17/518,013 patent/US20220277088A1/en active Pending
-
2022
- 2022-02-15 CN CN202210139559.7A patent/CN114968905A/zh active Pending
- 2022-02-16 TW TW111105635A patent/TW202234272A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
TW202234272A (zh) | 2022-09-01 |
US20220277088A1 (en) | 2022-09-01 |
DE102021128459A1 (de) | 2022-09-01 |
CN114968905A (zh) | 2022-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI493951B (zh) | 保護對稱加密鑰的系統及方法 | |
US7636858B2 (en) | Management of a trusted cryptographic processor | |
EP2052344B1 (en) | Bi-processor architecture for secure systems | |
US8347114B2 (en) | Method and apparatus for enforcing a predetermined memory mapping | |
KR102208072B1 (ko) | 데이터 처리 시스템 | |
US9690922B2 (en) | System, apparatus, and method for anti-replay protection of data stored in a non-volatile memory device | |
KR100678927B1 (ko) | 비보안 영역에 보안 영역을 할당하는 방법 및 이를제공하는 휴대용 저장 장치 | |
US9081724B2 (en) | Method and device for protecting memory content using first and second addressable storage regions and first and second encryption keys | |
CN101189586B (zh) | 计算机***及程序生成装置 | |
US20110131418A1 (en) | Method of password management and authentication suitable for trusted platform module | |
US10142303B2 (en) | Separation of software modules by controlled encryption key management | |
MX2007008540A (es) | Metodo y dispositivo de almacenamiento portatil para asignar area segura en area insegura. | |
EP3844647B1 (en) | System and method for providing protected data storage in data memory | |
US10452565B2 (en) | Secure electronic device | |
US11019098B2 (en) | Replay protection for memory based on key refresh | |
EP2116955B1 (en) | Information converting technique | |
US20220277088A1 (en) | System on chip and operating method thereof | |
US20240012950A1 (en) | System-on-chip and electronic device including the same | |
CN103154967A (zh) | 修改元素的长度以形成加密密钥 | |
KR20240008227A (ko) | 시스템 온 칩 및 이를 포함하는 전자 장치 | |
TW202327312A (zh) | 安全資料傳輸的方法及裝置 |