KR102465738B1 - 하드웨어-가속화된 암호 기법을 위한 키들의 스레드 소유권 - Google Patents
하드웨어-가속화된 암호 기법을 위한 키들의 스레드 소유권 Download PDFInfo
- Publication number
- KR102465738B1 KR102465738B1 KR1020197005233A KR20197005233A KR102465738B1 KR 102465738 B1 KR102465738 B1 KR 102465738B1 KR 1020197005233 A KR1020197005233 A KR 1020197005233A KR 20197005233 A KR20197005233 A KR 20197005233A KR 102465738 B1 KR102465738 B1 KR 102465738B1
- Authority
- KR
- South Korea
- Prior art keywords
- key
- thread
- processor
- processing unit
- central processing
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/061—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
-
- 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/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- 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/74—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 operating in dual or compartmented mode, i.e. at least one secure mode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Advance Control (AREA)
Abstract
설명된 예들에서, 암호 기법 코프로세서(15)를 갖는 임베디드 프로세서는 암호 기법 동작들을 위한 스레드간(inter-thread) 보안을 갖는, 멀티 스레딩 환경에서 동작한다. 코프로세서(15)에 의해 액세스 가능한 보안 메모리 블록(16)은 복수의 키 엔트리들(25X)을 저장하고, 각각의 키 엔트리(25X)는 암호 기법 키에 대응하는 데이터, 및 그 키와 연관된 실행 스레드를 식별하는 스레드 소유자 필드를 저장한다. 중앙 처리 장치(12)는 사용될 키에 대한 키 식별자, 및 현재 실행 스레드를 나타내는 스레드 식별자와 함께 암호 기법 동작을 실행하기 위해 코프로세서(15)에 호출을 발행한다. 코프로세서(15)는 중앙 처리 장치(12)로부터 수신된 스레드 식별자를 키 식별자에 대응하는 키 엔트리(25X)의 스레드 소유자 필드와 비교한다. 스레드 식별자가 키 엔트리(25X) 내의 스레드 소유자와 일치하면, 암호 기법 동작을 위한 코프로세서(15)의 사용을 위해 키가 보안 메모리 블록(16)으로부터 검색된다.
Description
본 발명은 일반적으로 데이터 보안에 관한 것으로, 보다 구체적으로는 프로세서 아키텍처 내의 계산 보안에 관한 것이다.
데이터 통신들의 보안은 슈퍼컴퓨터들과 같은 대규모 시스템들에서 임베디드 프로세서들과 같은 최소 규모의 시스템들에 이르기까지, 사실상 모든 유형의 전자 시스템에 대해 중요한 문제이다. 실제로, 보안은 "사물 인터넷"(IoT)에서의 배치를 위해 계획된 센서들 및 액츄에이터들과 같은 소규모 시스템들에서 주요한 문제가 되고 있다. 넓은 범위의 서비스들 및 애플리케이션들을 통해 많은 수가 구현될, 이러한 고도로 분산된 IoT 객체들은, 그들의 상대적으로 작은 계산 용량 및 원격 구현을 고려해 볼 때, 특히 공격 및 손상에 취약할 수 있다. 그러나, 이러한 센서들 및 액츄에이터들의 네트워크에 의해 수행되는 기능들의 중요성은 보안 이해관계를 증가시킨다.
데이터 통신들, 데이터 저장 및 검색, 및 임베디드 프로세서들에 의해 수행될 수 있는 것들을 포함하는 다른 애플리케이션들에 사용될 수 있는 것과 같은, 다양한 접근법들이 디지털 데이터 암호 기법 분야에서 알려져 있다. 일반적으로, 암호 기법 분야는 데이터 암호화 및 해독, 디지털 인증(예를 들어, 서명/검증 방식들), 기타 등등을 포함한다. 비대칭 암호 기법이라고도 지칭되는, 공개 키 암호 기법은 흔히 사용되는 암호 기법 유형이다. 이 접근법에 따르면, 특정 알고리즘에 따라, 각 키가 데이터 또는 정보의 블록이 되는, 공개-개인 쌍의 "키들"이 생성된다. 송신 노드가 쌍의 키들 중 하나를 사용하여 통신을 보안하고, 수신 노드는 다른 키를 사용하여 통신을 해독 또는 확인하도록, 공개 및 개인 키들은 생성 다항식에 기초하여 서로 역의 관계를 가진다. 특히, 데이터 암호화 컨텍스트에서, 공개 키를 사용하여 암호화된 데이터 블록은 개인 키를 사용하여 해독될 수 있다; 인증 컨텍스트에서, 개인 키를 사용하여 생성된 디지털 서명은 공개 키를 사용하여 확인될 수 있다. 공개 및 개인 키들은 어려운 수학적 문제(흔히 "트랩-도어 함수"로 지칭됨)를 통해 서로 관련되어 있으므로, 개인 키에 대응하는 알려진 공개 키의 지식으로부터 개인 키를 결정하는 것은 계산적으로 어렵다. 따라서 개인 키가 공격자에 의해 계산될 수 있는 현실적인 위험 없이, 개인 키의 보유자와 공개 키를 얻는 사람들 간에 데이터 통신 데이터를 가능하게 하기 위해, 공개 키는 안전이 보장되지 않은 통신을 통해 보내지거나 공개 레지스트리에 나열되는 것과 같이, 공개될 수 있다. 공개/개인 키 접근법은 개인 키의 보유자가 임의의 상대방과 그 키를 공유할 필요가 없으므로, 일반적으로 선호된다; 그에 반해서, 대칭 키 접근법들은 양 당사자가 동일한 암호화 키를 알아야 할 것을 요구한다.
특정 공개 키 방식에 의해 제공되는 보안 레벨은 일반적으로 키들의 길이에 대응한다; 더 긴 키 길이는 공개 키로부터 개인 키를 도출하는 것의 어려움을 증가시킨다. "DH", "DSA", 및 "RSA"와 같은 암호 기법 알고리즘들 하에서 공개 및 개인 키들 모두에 대한 종래의 비트 길이는, 1024비트에서 15360비트 정도의 범위이다. 키들의 길이는 원하는 보안 레벨과 암호화 및 해독 노드들의 가용 계산 용량에 따라, 크게 달라질 수 있다. 특히, 일반적으로, 전자 시스템에서 구현되는 보안 레벨을 증가시키는 것은, 더 높은 보안 레벨과 연관된 더 긴 키들에 요구되는 증가된 기계 사이클들의 수 및 증가된 메모리 공간으로 인한 시스템 성능의 감소를 비용으로 하여 얻어진다.
이러한 트레이드오프는 시스템 프로세서에서의 암호 기법 처리 전용 하드웨어-기반 가속기의 구현에 의해 상당한 정도 완화될 수 있다. Texas Instruments Incorporated에서 얻을 수 있는 SITARA AM335x 프로세서들은 IoT 애플리케이션들에서 사용될 수 있는 것과 같은, 그러한 전용 하드웨어-기반 보안 가속기들이 구현된 임베디드 프로세서들의 예들이다. 이러한 유형의 아키텍처에서는, 암호화, 해독, 및 기타 암호 기법 기능들에 포함된 계산 집약적인 동작들은 중앙 처리 장치에 의해 보안 가속기로 오프로드 된다(offloaded). 이는 중앙 처리 장치가 자신의 처리 대역폭을 최종 사용자 애플리케이션을 처리하는 데 사용할 수 있도록 하므로, 시스템 처리량이 암호 기법 동작들에 크게 영향을 받지 않는다.
도 1은 하드웨어-기반 보안 가속기를 갖는 종래의 임베디드 프로세서의 예시의 일반적인 기능적 아키텍처 및 동작을 도시한다. 이 예시에서, 중앙 처리 장치(CPU)(2)는 전술한 SITARA AM335x 프로세서들에서 사용되는 ARM CORTEX-A8 CPU와 같은, 종래의 다중 코어 프로세서이다. CPU(2)는 LINUX와 같은 종래의 운영 체제 하의 멀티-스레딩 환경에서 자신의 애플리케이션들을 실행한다. 도 1의 예시에서, CPU(2)는 운영 체제(4) 하에서 3개의 스레드(T1, T2, T3)들을 실행한다. 다양한 스레드들(T1, T2, T3)은 운영 체제(4)의 스케줄러 기능에 따라 CPU(2)에 의해 실행되고, 운영 체제(4)는 실행 중인 현재 스레드의 식별자를 도 1에 도시된 바와 같은 CPU(2)의 스레드 ID 레지스터(9)에 기입한다. 이 스레드 ID는 하나의 스레드가 다른 스레드에 의해 가장되는 것을 방지하기 위해, 운영 체제(4)의 제어 하에 CPU(2)의 하드웨어에 의해 관리된다.
도 1의 종래의 프로세서는, 버스(SYS_BUS)를 통해 CPU(2)와 통신하는 하드웨어-기반 보안 가속기로서 동작하고 데이터 블록들의 암호화 및 해독과 같은 실행 암호 기법 동작들에 전용인 암호 기법 코프로세서(5)를 포함한다. 이 아키텍처에서, 암호 기법 코프로세서(5)는 전용 버스(DED_BUS)를 통해 코프로세서(5)에 액세스 가능한 메모리 리소스의 일부 또는 전부인 보안 메모리 블록(6)과 관련하여 이러한 동작들을 수행한다; 일반적으로, 보안 메모리 블록(6)에 대한 액세스는, CPU(2) 및 임베디드 프로세서의 다른 범용 로직 및 I/O 기능들을 배제하여, 코프로세서(5)로 제한된다.
이 종래의 아키텍처에서, 암호 기법 코프로세서(5) 및 보안 메모리 블록(6)은 CPU(2)에 의해 실행되는 다양한 스레드들(T1 내지 T3)에 공통인 공유 리소스로서 기능한다. 멀티 스레딩 환경에서 자주 수행되는 것처럼, 한 스레드에서 다른 스레드로의 실행의 전환은, 나중에 해당 스레드의 실행의 재개 시 검색을 위해, 일시 중지되는 스레드로부터 실행 "컨텍스트"를 저장할 것을 요구한다. 이 컨텍스트는 레지스터 내용들, 실행 상태들, 설정들, 및 마치 그 동안에 중간 스레드 또는 스레드들이 처리되지 않은 것처럼, 논리 회로가 스레드가 중단된 동일한 위치에서 그 스레드의 실행을 다시 시작할 수 있도록 허용하는 다른 정보를 포함한다. 암호 기법 동작들에서, 이 컨텍스트는 특정 스레드에 사용되는 암호 기법 키를 포함한다. 이 종래의 아키텍처에서의 보안 메모리 블록(6)은 암호 기법 컨텍스트, 구체적으로 코프로세서(5)에 의해 암호 기법 동작들에 사용된 키들의 로컬 스토리지를 제공함으로써, 이전 동작으로부터의 상이한 실행 스레드 하에서 암호 기법 동작을 실행하기 위한 명령을 수신하면 코프로세서(5)에 의한 빠른 컨텍스트 전환을 가능하게 한다.
도 1에 도시된 바와 같이, 다수의 암호 기법 키들(즉, 멀티 스레드 컨텍스트들)을 저장하기 위해 복수의 키 엔트리들(8)이 보안 메모리 블록(6)에서 이용 가능하며, 따라서 코프로세서가 자신 고유의 개인, 공개 또는 대칭(공유) 키를 각각 갖는, 다수의 상이한 동작들 및 통신 채널들을 실행할 수 있게 한다. 이러한 통상적인 종래의 구성에서, 각각의 키 엔트리(8X)는 특정 키를 식별하고 참조하기 위해 키 "태그" 또는 다른 식별자(KEY ID)에 의해 호출될 수 있다. 엔트리들(8)의 내용들 각각은 키 자체를 저장하거나 키가 저장된 보안 메모리 블록(6)의 다른 위치를 참조하는 주소 포인터를 저장하기 위한 KEY 필드를 포함한다. 일부 종래의 아키텍처들에서, KEY ATTR 필드는 그 키가 사용되도록 허용된 암호 기법 동작들(즉, 암호화, 해독, 인증, 서명)의 유형과 그 키의 암호 기법 유형(AES, PKA 등)을 나타낸다. 4개의 키 엔트리들(81 내지 84)이 도 1에 도시되어 있지만, 보안 메모리 블록(6)은 적절하게 더 많거나 더 적은 엔트리들을 포함할 수 있다.
이 아키텍처에서, CPU(2)는 버스(SYS_BUS)를 거쳐 암호 기법 코프로세서(5)와 통신한다. 현재 실행 스레드에서 암호 기법 동작을 호출하기 위해, CPU(2)는 버스(SYS_BUS)를 통해 코프로세서(5)에게, 수행될 동작의 타입을 나타내는 명령, 이들 동작들이 수행될 데이터, 및 그 동작에서 사용될 암호 기법 키에 대한 키 엔트리(8X)를 나타내는 키 식별자(KEY ID)의 값을 포함하는 호출을 발행한다. 통상적으로 운영 체제(4)가 CPU(2)에서 하나의 스레드로부터 다른 스레드로 실행을 전환한 경우에 발생하는 바와 같이, 그 키가 현재 코프로세서(5)에 의해 사용되는 키와 다른 경우, 코프로세서(5)는 현재 키, 및 그 이전 키에 대한 보안 메모리 블록(6)의 키 엔트리(8X)에서의 다른 컨텍스트를 저장하고, CPU(2)로부터 새롭게-수신된 KEY ID 값에 대응하는 키 엔트리(8X)에 대한 키를 검색함으로써, 컨텍스트 전환을 수행한다. 원하는 암호 기법 동작이 완료되면, 암호 기법 코프로세서(5)는 결과들을 버스(SYS_BUS)를 통해 CPU(2)에 다시 통신한다.
일부 종래 프로세서 아키텍처들에서, 암호 기법 코프로세서는 "공개" 또는 "개인" 모드 중 어느 하나로 동작할 수 있다. 이러한 아키텍처들에서, 공개 모드는 이 모드에서 복수의 스레드들 간에 공유될 수 있는 하나의 암호 기법 키와 연관될 수 있는 한편, 개인 모드는 이 모드에서 스레드들 간에 또한 공유될 수 있는 다른 암호 기법 키와 연관될 수 있다.
추가적인 배경으로서, 일부 종래의 프로세서 아키텍처들은 암호 기법 코프로세서의 외부에서 컨텍스트 전환을 수행한다. 이러한 아키텍처들에서, 운영 체제는 코프로세서를 호출하는 CPU 또는 다른 프로세서에서, 이전 스레드의 컨텍스트를 현재 코프로세서에 있는 범위까지 "클리닝 업(cleaning up)"하는 컨텍스트 전환을 수행한다. 이 접근법에서, 코프로세서는, 만약 필요하다면 다음 스레드에 의해 그 키가 재기입되게 하는 것 이외의 컨텍스트 전환에 관여되지 않는다.
추가적인 배경으로서, 일부 종래의 프로세서 아키텍처들에서, 공개 및 개인 모드들에 대한 분리된 레지스터들이 암호 기법 코프로세서에 제공된다. 이러한 논리적으로 분리된 레지스터들은 개인 도메인에서 코프로세서에 의해 사용된 암호 기법 키들과 다른 설정들 및 정보를 공개 도메인에서 사용된 것으로부터 격리하며, 반대의 경우도 마찬가지이다. 이 구성에서, 한 도메인에서 다른 도메인으로의 컨텍스트 전환에서 클린업이 필요하지 않다.
설명된 예들에서, 중앙 처리 장치(CPU)는 멀티 스레딩 환경에서 동작한다. CPU는 키를 사용하여, 암호화 및 해독과 같은 암호 기법 동작들을 실행하기 위해 암호 기법 코프로세서에 대한 호출을 발행한다. 코프로세서에 의해 액세스 가능한 보안 메모리 블록은 복수의 키 엔트리들을 저장하고, 각각의 키 엔트리는 그 키와 연관된 (“소유하는”) 실행 스레드를 식별하는 스레드 식별자와 연관된 암호 기법 키를 저장한다. 암호 기법 동작을 위한 코프로세서 호출을 발행할 때, CPU는 사용될 키에 대한 키 식별자, 및 스레드 식별자를 코프로세서에 통신한다. 코프로세서는 CPU로부터 수신된 스레드 식별자와 원하는 키와 함께 보안 메모리에 저장된 스레드 식별자를 비교하여 호출 스레드가 해당 키를 소유하고 있는지 여부를 결정하고; 만약 그렇다면, 키는 암호 기법 동작을 위해 코프로세서에 의해 사용되기 위해 보안 메모리 블록으로부터 검색된다. 스레드 식별자들이 일치하지 않으면, 요청된 동작이 수행되지 않는다.
도 1은 종래의 임베디드 프로세서의 아키텍처의 일부의 블록 형태의 전기 배선도이다.
도 2는 실시예들에 따라 구성된 임베디드 프로세서의 블록 형태의 전기 배선도이다.
도 3은 중앙 처리 장치, 암호 기법 코프로세서, 및 실시예에 따른 도 2의 프로세서의 보안 메모리 블록의 아키텍처의 블록 형태의 전기 배선도이다.
도 4는 그 실시예에 따른 도 3의 아키텍처의 동작을 도시하는 흐름도이다.
도 5는 중앙 처리 장치, 암호 기법 코프로세서, 및 다른 실시예에 따른 도 2의 프로세서의 보안 메모리 블록의 아키텍처의 블록 형태의 전기 배선도이다.
도 2는 실시예들에 따라 구성된 임베디드 프로세서의 블록 형태의 전기 배선도이다.
도 3은 중앙 처리 장치, 암호 기법 코프로세서, 및 실시예에 따른 도 2의 프로세서의 보안 메모리 블록의 아키텍처의 블록 형태의 전기 배선도이다.
도 4는 그 실시예에 따른 도 3의 아키텍처의 동작을 도시하는 흐름도이다.
도 5는 중앙 처리 장치, 암호 기법 코프로세서, 및 다른 실시예에 따른 도 2의 프로세서의 보안 메모리 블록의 아키텍처의 블록 형태의 전기 배선도이다.
프로세서 및 동작 방법의 예시적인 실시예들에서, 암호 기법 동작들은 시스템 성능을 저하시키지 않으면서, 더 높은 레벨의 보안으로 멀티 스레딩 환경에서 하드웨어-기반 보안 가속기에서 수행된다. 이러한 프로세서 및 방법은 암호 기법 동작들의 목적들을 위해, 스레드들 간의 향상된 격리를 제공한다. 또한, 이러한 프로세서 및 방법은 보안 가속기에서 빠른 컨텍스트 전환들을 달성한다.
본 명세서에서 설명되는 하나 이상의 실시예는, 전자 시스템에서, 마이크로제어기와 같은 임베디드 프로세서로 구현되는데, 그러한 구현은 그 컨텍스트에서 특히 유리하기 때문이다. 그러나, 예시적인 실시예들은 스마트폰들, 태블릿 컴퓨터들, 노트북 및 다른 개인용 컴퓨터들, 서버들, 기타 등등을 포함하는, 더 큰 규모의 프로세서들 및 시스템들과 같은, 다른 애플리케이션들에 유리하게 적용될 수 있다.
종래의 임베디드 프로세서들은 암호 기법 코프로세서에 의해 수행되는 것과 같은 그 암호 기법 동작들과 관련하여 "공격"에 취약할 수 있다. 예를 들어, 도 1과 관련하여 전술한 종래의 아키텍처를 참조하면, 제1 실행 스레드는 제1 키를 사용하여 데이터 블록을 암호화하기 위해 코프로세서(5)에 호출을 발행할 수 있다. 컨텍스트 전환 다음에, 그 제1 키는 다수의 CPU 스레드들에 대한 암호 기법 동작들을 위한 컨텍스트 데이터를 국부적으로 저장하는 보안 메모리 블록(6)에 저장된다. 이러한 유형의 공격에서, 다른 스레드에서 실행되는 악성 소프트웨어는 암호화된 데이터를 얻기 위해 CPU(2)와 코프로세서(5) 사이의 버스(SYS_BUS)를 모니터링한 후, 현재 보안 메모리 블록(6)에 저장되어 있는, 데이터가 암호화되어 있는 키인 제1 키를 사용하여 그 데이터 블록을 해독하기 위해 코프로세서(5)에 호출을 발행한다. 요약하면, 도 1과 관련하여 전술한 종래의 코프로세서 아키텍처는 스레드들 간의 암호 기법 키들에 대한 보안을 제공하지 않는다.
이들 실시예들에 따르면, 이 취약점은 코프로세서 시스템의 보안 메모리 내의 각각의 키 엔트리를 특정 스레드에 바인딩함으로써 배제된다. 실시예에서, 키 엔트리는 그 키 엔트리와 연관된 키를 "소유하는", 그 키로 코프로세서를 프로비저닝한 스레드인 스레드를 식별하는 필드를 포함한다. 코프로세서에 의해 액세스될 키에 대해, 동작에 그 키를 사용하도록 코프로세서를 호출하는 스레드는 키에 대한 키 엔트리에서 식별된 스레드 소유자와 일치해야 한다.
도 2는 센서, 제어기, 또는 IoT 컨텍스트에서 전개하기에 적합한 다른 전자 시스템으로 구현될 수 있는 것과 같은, 이러한 실시예들에 따른 임베디드 프로세서(10)의 전체 아키텍처를 도시한다. 전술한 바와 같이, 이들 실시예들은 다양한 규모의 전자 시스템들에 배치되고 넓은 범위의 애플리케이션들을 위한 것인 다양한 아키텍처들의 프로세서 회로에서 구현될 수 있다. 이 실시예에서 임베디드 프로세서(10)의 아키텍처는 Texas Instruments Incorporated로부터 얻을 수 있는 SITARA AM335x ARM 프로세서들과 같은 디바이스들의 전체 아키텍처를 따르지만, 이하에서 설명되는 실시예들 중 하나에 따라 추가적으로 구성된다. 이 아키텍처에 따른 프로세서(10)는 대개 단일 집적 회로로서 실현될 것이지만, 대안적으로 다중 집적 회로들(예를 들어, "칩셋" 또는 다중-모듈 디바이스로서)로서 실현될 수 있다. 또한, 여기에 설명된 것들 이외의 더 많은 또는 더 적은 기능적 유닛들이 이들 실시예들에 따라 프로세서(10)에 포함될 수 있다.
도 2에 도시된 바와 같이, 프로세서(10)는 다수의 상이한 기능적 유닛들을 포함한다. 버스 접속들은 명확성을 위해 도 2에 도시되지 않았다. 중앙 처리 장치(CPU)(12)는 프로세서(10)의 메인 프로그래머블 로직으로서 기능하며, 전술한 SITARA AM335x 프로세서 계열에서와 같이, ARM CORTEX-A8 등과 같은 멀티-코어 프로세서일 수 있다. 이 실시예에서, CPU(12)는 멀티 스레딩 환경에서 그 애플리케이션 프로그램들 기타 등등을 실행하기에 적합하다. CPU(12)는 메인 시스템 버스(도시되지 않음)를 통하는 것과 같이, 시스템 메모리(14)와 관련하여 동작한다. 시스템 메모리(14)는 CPU(12) 및 프로세서(10) 내의 다른 기능들에 유용한 적절한 프로그램 및 데이터 메모리를 포함하며, SRAM과 같은 휘발성 메모리, 및 EEPROM 또는 플래시 메모리와 같은 비휘발성 메모리 또한 포함하는, 상이한 유형들의 메모리의 다중 블록들 또는 배열들로서 실현될 수 있다.
이 실시예에 따른 프로세서(10)에 제공된 다른 기능적 유닛들은, 프로세서(10) 내의 그래픽 코프로세서(도시되지 않음)를 포함하거나 그와 협력할 수 있는 디스플레이 제어기(18), 및 EtherCAT, PROFIBUS, PROFINET 및 EtherNet/IP 프로토콜들 기타 등등과 같은 하나 이상의 종래의 프로토콜을 통해 IoT 내의 다른 디바이스들과 프로세서(10)간의 통신을 지원하는 다양한 프로그래머블 실시간 유닛들(20)을 포함한다. 프로세서(10)는 직렬 인터페이스들(24)(예를 들어, USB 및 EMAC 인터페이스들), 병렬 인터페이스들(26)(예를 들어, SDIO 및 GPIO 인터페이스들), 및 프로세서(10) 외부의 DRAM 또는 다른 메모리와 인터페이스하는 데 사용될 수 있는 것과 같은 메모리 인터페이스(28)를 포함하는, 레벨 3/4 상호 접속 버스(22)를 통하여 CPU(12)에 액세스 가능한 추가적인 인터페이스들을 포함한다. 타이머들, 발진기들, DMA 기능들, 아날로그-디지털(ADC) 및 디지털-아날로그(DAC) 변환기들 기타 등등과 같은, 매우 다양한 시스템 주변 장치(26)들이 또한 프로세서(10) 내에 포함될 수 있다.
이들 실시예들에 따르면, 프로세서(10)는 데이터 암호화, 데이터 해독, 인증 기타 등등과 같은 동작들을 포함하는, 다양한 암호 기법 동작들을 안전하게 실행할 수 있다. 대개, 이러한 암호 기법 동작들은 계산 집약적이며, 많은 수의 프로세서 사이클들과 상당한 메모리 리소스들을 소모한다. 특히 CPU(12)와 관련하여, 전반적인 성능 및 대역폭을 향상시키기 위해, 이 실시예에 따른 프로세서(10)는 암호 기법 동작들을 위한 소프트웨어 루틴들을 실행하는 것에 전용인 프로세서 코어와 같은 프로그래머블 로직 기능인 암호 기법 코프로세서(15)를 포함한다. 이 아키텍처에서, 코프로세서(15)는 보안 키 메모리(16)와 함께 동작한다. 후술되는 바와 같이, 보안 키 메모리(16)는 코프로세서(15)에 의한 암호 기법 동작들의 실행에 사용되는 암호 기법 키들을 저장하기 위한 적절한 메모리 공간 및 구성을 포함한다. 보안 키 메모리(16)는 이에 대한 액세스가 코프로세서(15), 및 다른 회로 기능들을 배제하고, 아마도 프로세서(10)의 다른 특정 회로 기능들로 제한될 수 있다는 의미에서 "보안" 메모리로 간주된다. 이러한 의미에서, 보안 키 메모리(16)는 이와 코프로세서(15) 사이에서 이어지는 전용 메모리 버스로 프로세서(10) 내의 시스템 메모리(14) 및 다른 메모리 리소스들과 물리적으로 분리될 수 있고, 또는 대안적으로 액세스가 "방화벽" 또는 다른 보안 동작에 의해 제한되는 시스템 메모리(14)의 일부로서 실현될 수 있다. 보안 키 메모리(16)에 더하여, 암호 기법 소프트웨어 루틴들 및 코프로세서(15)에 의해 실행 가능한 다른 프로그램 코드를 저장하는 프로그램 메모리가 프로세서(10)에 제공된다; 이 프로그램 메모리는 보안 키 메모리(16)의 일부, 또는 시스템 메모리(14)의 일부일 수 있거나, 대안적으로 코프로세서(15) 내에 있거나 코프로세서(15)가 액세스할 수 있는 다른 메모리 리소스일 수 있다.
여기에 설명된 실시예들 및 다른 대안적인 프로세서 아키텍처들은 특정 애플리케이션에 적합하다.
도 3을 참조하여, 실시예에 따른 암호 기법 코프로세서(15)의 동작과 관련된 프로세서(10)의 아키텍처가 이제 설명될 것이다. 전술한 바와 같이, 이 실시예에서 CPU(12)는 도 3에 도시된 예에서 n개의 스레드들(T1 내지 Tn)을 실행하는 멀티 스레딩 환경에서 동작할 수 있고, 운영 체제(13)를 지원하는 멀티-코어 프로세서이다. CPU(12)는 CPU(12)에 의해 실행되는 현재 스레드의 식별자를 저장하는 스레드 ID 레지스터(11)를 포함한다. 이 스레드 식별자는 구현에 따라, 다양한 형태들을 취할 수 있다. 예를 들어, 멀티-코어 아키텍처에서, 스레드 식별자는 그 스레드를 실행하는 코어에 관계없이 각각의 실행 스레드에 할당된 레이블로 구성될 수 있거나, 또는 대안적으로 그 코어 상의 스레드들 사이를 구별하는 스레드 식별자와 조합하여 그 스레드를 실행하는 CPU 코어의 식별자로 구성될 수 있다. 스레드 ID의 형태에 관계없이, 운영 체제(13)는 다양한 실행 스레드들(T1 내지 Tn)의 스케줄링 및 전환을 제어하고, 그 자신은 현재 스레드 식별자로 스레드 ID 레지스터(11)의 내용들을 기입한다. 이 실시예에서, 운영 체제(13)는 애플리케이션 소프트웨어와 같은 다른 소프트웨어 루틴들보다 더 높은 권한 레벨을 가지므로, 운영 체제(13)는 더 낮은 권한 소프트웨어 루틴들을 배제하고 스레드 ID 레지스터(11)의 내용들을 기입할 수 있다. 현재 스레드 및 스레드 ID 레지스터(11)의 "하드웨어" 설정은 이 멀티 스레딩 환경에서 하나의 스레드가 다른 스레드로 "가장하는" 것을 방지한다.
이 실시예에서, CPU(12)는 프로세서(10)의 메인 디바이스 버스 구조(32)를 통해 코프로세서(15)에 결합되고 코프로세서(15)와 통신한다. 디바이스 버스 구조(32)는 시스템 메모리(14) 및 도 3과 관련하여 전술한 바와 같은 프로세서(10)의 다른 기능들을 포함하는 프로세서(10)의 다양한 기능들 간에 메모리 주소들, 데이터, 및 제어 정보를 통신하기 위한 적절한 컨덕터들을 포함한다.
디바이스 버스 구조(32)에 더하여, CPU(12)는 또한 "측파대(side-band)" 신호들에 의해 암호 기법 코프로세서(15)에 결합된다. 이들 실시예들에서, 측파대 신호들은 디바이스 버스 구조(32)로부터 분리된 하드웨어 통신 경로("측파대 경로")(SC)를 통해 CPU(12)로부터 코프로세서(15)로 통신되는 데이터 및 제어 정보 신호들을 지칭한다. 예를 들어, 측파대 경로(SC)는 디바이스 버스 구조(32)로부터 분리되어 있으므로 디바이스 버스 구조(32) 상에 존재하는 기능에 의해 액세스될 수 없는, 프로세서(10)를 구현하는 집적 회로 내의 하나 이상의 컨덕터에 의해 실현될 수 있다. 따라서, 측파대 경로(SC)를 통해 송신된 측파대 신호들은 가시적이지 않거나, 그렇지 않으면 디바이스 버스 구조(32)를 "스누핑"하는 회로 또는 기능에 의해 이해될 수 없다. 이 실시예에서, 이들 측파대 신호들은 암호 기법 동작을 위한 호출과 관련하여 스레드 ID 레지스터(11)의 내용들, 즉 CPU(12)에 의해 현재 실행 중인 스레드의 식별자를 CPU(12)로부터 코프로세서(15)로 안전하게 통신한다.
이 실시예에서, 코프로세서(15)는 디바이스 버스 구조(32) 및 측파대 경로(SC)를 통한 CPU(12)로부터의 호출에 대한 응답으로서의 암호 기법 동작의 실행에 유용한 기능적 회로를 포함한다. 이 기능적 회로는 CPU(12)에 의해 호출된 태스크와 연관된 암호 기법 키를 검색하기 위해 보안 메모리 블록(16)과 통신하기 위해 코프로세서(15)에서 구현된 시퀀스 로직인 키 액세스 상태 머신(34)을 포함한다. 코프로세서(15)는 또한 보안 메모리 블록(16)으로부터 상태 머신(34)에 의해 검색된 암호 기법 키를 저장하기 위한 메모리 블록 또는 레지스터 위치인 활성 키 저장소(36)를 포함한다. 이 실시예에서, 키 액세스 상태 머신(34)은 프로세서(10)의 메인 디바이스 버스 구조(32)를 통해 보안 메모리 블록(16)으로부터 암호 기법 키를 검색한다. 그 부분을 위해, 보안 메모리 블록(16)은 프로세서(10)의 정상 동작 동안 다른 기능들을 배제하고, 암호 기법 키들 및 관련 정보를 암호 기법 코프로세서(15)에만 저장하는 보안 메모리 블록(16)의 부분들로의 액세스를 제한하는 로직 회로에 의해 구성되는 방화벽(35)을 통해 디바이스 버스 구조(32)와 인터페이스한다. 일부 실시예들에서, 방화벽(35)은 CPU(12) 자체와 같은, 다른 기능들 또한 "보안" 프로세스의 범위 내에서 보안 메모리 블록(16)에 액세스하는 것을, 허용하도록 구성될 수 있다. 예를 들어, 보안 프로세스는 암호 기법 키들로 보안 메모리 블록(16)을 로드하기 위해 CPU(12)에 의해 실행될 수 있다.
대안적으로, 코프로세서(15)는 음영에 도시된, 버스(33)에 의해 도 3에 제안된 바와 같은 전용 버스를 통해 보안 메모리 블록(16)에 결합될 수 있다. 이러한 대안적인 접근법에서, 보안 메모리 블록(16)은 디바이스 버스 구조(32)에 결합되지 않을 수도 있으며, 어느 경우에도 암호 기법 코프로세서(15)에 의해서만 또는 암호 기법 코프로세서(15)를 통해서만 액세스될 수 있다. 이러한 대안적인 구조는 보안 메모리 블록(16)이 키 저장에만 전용이고, 다른 보안 기능들에 대해 이용 가능한 다른 메모리 공간을 포함하지 않는 애플리케이션들에서 유용할 수 있다.
이 실시예에서, 보안 메모리 블록(16)의 전부 또는 일부는 암호 기법 코프로세서(15)를 위한 전용 키 저장 관리 메모리로서의 기능을 한다. 도 3에 도시된 바와 같이, 보안 메모리 블록(16)의 영역은 CPU(12)에 의해 호출된 암호 기법 동작들에서 코프로세서(15)에 의한 사용을 위한 다수의 암호 기법 키들(401 내지 404)(집합적으로, 키들(40))을 저장한다. 이들 암호 기법 키들(40)은 서로 다른 유형 및 크기일 수 있다. 예를 들어, 키들(401 및 404)은 각각 AES 128 키일 수 있고, 키(402)는 PKA 키일 수 있으며, 키(403)는 AES 256 키일 수 있다. 특히 상대적으로 큰 크기, 및 다양한 키 유형들 및 크기들로 인해, 이들 키들(40)은 이하에서 설명하는 바와 같이, 간접 어드레싱에 의해 액세스된다.
이 실시예에서, 보안 메모리 블록(16)은 다수의 키 엔트리들(251 내지 254)(집합적으로, 엔트리들(25))이 저장되어 있는 영역을 포함한다. 4개의 키 엔트리들(251 내지 254)이 이 예에 대해 도 3에 도시되어 있지만, 보안 메모리 블록(16)은 적절하게 더 많거나 더 적은 키 엔트리들(25)을 포함할 수 있다. 이와 관련하여, 각각의 키 엔트리(25X)는 대응하는 암호 기법 키(40X)에 관련되는 다수의 필드들을 포함한다. 전술한 바와 같이 키들(40)의 간접 액세싱의 목적을 위해, 이 실시예에서 각각의 키 엔트리(25X)는 대응하는 키(40X)가 저장된 보안 메모리 블록(16) 내의 메모리 주소를 저장하는 키 주소 포인터 필드(38X)이다. 도 3에 도시된 간접 어드레싱 구성에 대한 대안으로서, 각각의 엔트리(25X) 내의 필드는 키 주소 포인터 필드(38X)를 대신하는 것과 같이, 실제 키(40X) 자체를 저장할 수 있다; 이 구성은 유사한 유형 및 크기의 짧은 키들에 적합할 수 있다. 또한 도 3에 도시된 바와 같이, 각각의 키 엔트리(25X)는 그 대응하는 키(40X)의 암호 기법 유형(예를 들어, PKA, AES 등)을 식별하는 키 속성 필드(39X)를 포함하고, 또한 특히 그 키 (40X)가 사용될 수 있는 동작들의 유형(암호화/해독, 서명/인증 등)과 같은 허가를 포함할 수 있다.
이 실시예에 따르면, 각각의 키 엔트리(25X)는 키 식별자 필드(37X)로서 도 3에 도시된 태그 또는 식별자와 연관되고, 코프로세서(15)는 그 것을 통해 그 특정 키 엔트리(25X)에 액세스한다. 예를 들어, CPU(12)에 의한 코프로세서(15)로의 호출은 그 동작에 사용될 암호 기법 키(40X)에 대응하는 키 식별자 필드(37X)의 내용들에 대응하는 키 식별자 값을 포함할 수 있다. CPU(12)로부터 이 키 식별자 값을 수신하는 키 액세스 상태 머신(34)은 그 후 대응하는 키(40X)에 대한 키 주소 포인터(38X)를 검색하기 위해, 컨텐츠-어드레서블 메모리 또는 캐시 태그 어레이와 유사한 방식으로, 그 값으로 보안 메모리 블록(16)에 있는 키 엔트리(25X)에 액세스할 수 있다. 대안적으로, 키 액세스 상태 머신(34)은 CPU(12)에 의해 통신된 키 식별자 값을 보안 메모리 블록(16)에 있는 대응하는 키 엔트리(25X)에 대한 메모리 주소로 번역하기 위해 룩-업 테이블을 사용하는 것과 같이, 메모리 주소를 사용하여 보안 메모리 블록(16)으로부터 키(40X)를 검색할 수 있다.
이 실시예에 따르면, 각각의 키 엔트리(25X)는 스레드 소유자 필드(30X)를 포함한다. 스레드 소유자 필드(30X)는 그 키 엔트리(25X)와 연관된 암호 기법 키(40X)를 "소유"하는 CPU(12)에서 스레드들(T1 내지 Tn) 중 하나를 식별하는 스레드 식별자 값을 저장한다. 보다 구체적으로는, 이 스레드 소유자 필드(30X)의 내용들은 원래 그 암호 기법 키(40X)를 코프로세서(15)에 제공한 실행 스레드, 및 그에 따라 컨텍스트 전환과 관련하여 키(40X)가 연관되고 보안 메모리 블록(16)에 저장되어 있는 스레드에 대한 스레드 식별자이다. 이들 스레드 식별자 값들은 실행 스레드들이 CPU(12)에서 제공되는 동안 운영 체제(13)에 의해 할당되고, 멀티 스레딩 환경들에서 동작하는 종래의 프로세서들에서와 같이, 실행 동안 현재 스레드로서 CPU(12)의 스레드 ID 레지스터(11)에 저장된다. 다른 기준이나 동작들은 어떤 CPU 스레드가 그 특정 키를 "소유"한다고 여겨지는지 결정할 수 있다.
도 4를 참조하면, 실시예에 따른 프로세서(10)에서의 암호 기법 동작의 실행이 이제 설명될 것이다. 프로세스(42)에서, 코프로세서(15) 및 보안 메모리 블록(16)은 CPU(12)에 의해 하나 이상의 암호 기법 키로 "프로비저닝된다". 예를 들어, CPU(12)에 의해 실행되는 현재 스레드(예를 들어, 스레드(T1))는 측파대 경로(SC)를 통한 이 현재 스레드(T1)에 대한 스레드 ID와 함께, 암호 기법 키가 CPU(12)에 의해 디바이스 버스 구조(32)를 통해 코프로세서(15)로 포워딩되도록 하는, "저장 키" 명령을 포함할 수 있다. 프로비저닝 프로세스(42)는 대안적으로 CPU(12)가 특정 키를 사용하는 코프로세서(15)에 의해 수행될 암호 기법 동작(예를 들어, 데이터 블록을 암호화)에 대한 명령을 발행함으로써 수행될 수 있다. 어느 경우에나, 사용될 키 및 동작이 수행될 데이터와 함께, 관련된 명령은 디바이스 버스 구조(32)를 통해 CPU(12)에 의해 포워딩되고, 현재 실행 스레드에 대한 스레드 ID(예를 들어, T1)는 측파대 경로(SC)를 통해 CPU(12)에 의해 포워딩된다. 프로세스(44)에서, 코프로세서(15)는 보안 메모리 블록(16)에 키를 저장한다. 이 프로세스(44)는 코프로세서(15)에서의 컨텍스트 전환 시에(상이한 스레드, 예를 들어, 암호 기법 동작을 호출하는 스레드(T3)), 또는 명시적 "저장 키" 명령에 대한 즉각적인 응답으로서 수행될 수 있다. 도 3에 도시된 메모리 배열에 대하여, 프로세스(44)의 메모리 기입은 키 식별자(필드(37X)) 및 필드(39X)의 적절한 속성들을 참조한 엔트리(25X)의 생성, 키 주소 포인터(38X)에 저장된 메모리 주소에 키(40X) 자체의 저장, 및 이 키 엔트리(25X)의 스레드 소유자 필드(30X)에 이 키를 프로비저닝하는 현재 스레드에 대한 스레드 ID 값의 저장을 포함할 것이다. 도 3의 프로세서(10)의 아키텍처에서, 이들 메모리 기입 동작들은 방화벽(35)에 의해 허용되는 보안 메모리 블록(16)에 디바이스 버스 구조(32)를 통해 키 액세스 상태 머신(34)에 의해 수행될 것이다.
이 프로비저닝 프로세스(42) 및 저장 프로세스(44)는 코프로세서(15)에 의한 나중 사용을 위해 보안 메모리 블록(16)에 다수의 암호 기법 키들을 설정하는 데 CPU(12)에 의해 요구되는 대로 반복될 수 있다. 그러나, 대개, 이러한 프로세스들(42, 44)은 키 프로비저닝 동작들의 세트에서보다는, 프로세서(10)에 의해 실행되는 애플리케이션 프로그램들의 정상 프로그램 흐름에서 필요하게 되는 대로, 그와 같이 필요한 때에 수행될 것이다. 어쨌든, 프로세스(44)에서의 키의 저장 후에, 코프로세서(15)는 프로세스(45)에서 CPU(12)로부터의 명령을 기다리는 대기 상태에 진입한다.
프로세스(46)에서, CPU(12)는 암호 기법 동작을 실행하기 위해 코프로세서(15)에 호출을 발행한다. 도 3의 아키텍처에서, 이 호출은 동작이 수행될 데이터(또는, 예를 들어, 데이터가 저장되어 있는 시스템 메모리(14)의 주소), 및 보안 메모리 블록(16)에 저장된 어떤 암호 기법 키가 사용될지를 나타내는 키 식별자 값과 함께, 원하는 암호 기법 동작에 대응하는 명령으로서 발행될 수 있다. 이 키 식별자 값은 코프로세서(15)의 키 액세스 상태 머신(34)이 대응하는 키(40X)를 검색하기 위해 보안 메모리 블록(16) 내의 대응하는 엔트리(25X)에 액세스할 수 있게 하는 키 식별자(37X)에 대응하는 태그일 수 있거나, 또는 대안적으로 상태 머신(34)이 키 식별자(37X)에 도달하도록 번역하는 값일 수 있다. 전술한 바와 같이, CPU(12)는 명령, 데이터(또는 주소), 및 키 식별자 값을 디바이스 버스 구조(32)를 통해 코프로세서(15)로 포워딩한다. 또한 프로세스(46)에서, 이 실시예에 따르면, CPU(12)는 또한 자신의 스레드 ID 레지스터(11)에 저장된 현재 스레드 식별자를 경로 SC를 통해 통신되는 측파대 신호들을 통해 키 액세스 상태 머신(34)에 포워딩한다. 전술한 바와 같이, 현재 실행 스레드의 스레드 ID는 그것이 컨텍스트 전환을 수행하는 동안과 같을 때, 운영 체제(13) 하의 스레드 ID 레지스터(11)에 저장되고, 또한 운영 체제(13)에 의해 측파대 경로(SC)를 통해 "하드웨어로" 통신된다. 스레드 ID 레지스터(11)의 기입 및 측파대 경로를 통한 그 내용들의 통신은 가장하는 악성 애플리케이션 소프트웨어 코드가 다른 스레드로부터 가장하는 하나의 스레드에서 실행되는 것을 방지하기 위해, 애플리케이션 소프트웨어와 같은 더 낮은 특권(lower-privilege) 프로세스들을 제외하고, 운영 체제(13)의 높은 특권 레벨로 제한될 수 있다. 따라서, 프로세스(46) 내의 명령 및 키 식별자와 통신된 스레드 ID는 CPU(12)에서 실행되는 진짜의 현재 실행 스레드를 식별한다.
프로세스(48)에서, 이 아키텍처에 따른 CPU(12) 내의 키 액세스 상태 머신(34)은 이 프로세스(46)의 사례에서 CPU(12)에 의해 통신된 키 식별자 값이 대응하는 키 엔트리(25X)에 액세스하고, 이에 응답하여 보안 메모리 블록(16)이 그 키 엔트리(25X)에 대한 스레드 소유자 필드(30X)의 내용들을 상태 머신(34)에 반환한다. 상태 머신(34)은 그리고 나서 프로세스(46)에서 사이드 채널(34)을 통해 CPU(12)에 의해 통신된 스레드 ID 값과 키 엔트리(25X)로부터의 스레드 소유자 필드(30X)의 검색된 내용들을 비교함으로써 결정(49)을 실행한다. 이러한 결정(49)의 비교는 특정 키(40X)를 사용하기 위한 호출을 발행하는 현재 실행 스레드의 스레드 ID를 원래 그 키(40X)와 함께 코프로세서(15)를 프로비저닝한 실행 스레드, 즉, 그 키(40X)의 "소유자"인 스레드의 스레드 ID와 비교한다. 측파대 경로(SC)를 통한 CPU(12)로부터의 스레드 ID 값이 액세스된 키 엔트리(25X)에서의 스레드 소유자 필드(30X)의 내용들과 일치하지 않으면(즉, 결정(49)이 "아니오" 결과를 리턴하면), 상태 머신(34)은 프로세스(50)에서 디바이스 버스 구조(32)를 통해 에러 메시지를 발행하여, 현재 스레드가 프로세스(46)에서 키 식별자에 의해 식별된 암호 기법 키를 사용할 수 있는 허가를 갖고 있지 않기 때문에 코프로세서(15)에 대한 그의 호출이 실패했음을 CPU(12)에게 나타낸다. 그리고 나서 제어는 코프로세서(15)에 대한 다음 호출을 기다리기 위해 대기 상태(45)로 넘어간다.
프로세스(48)에서 측파대 경로(SC)를 통해 상태 머신(34)으로 통신된 스레드 ID가 보안 메모리 블록(16)으로부터 검색된 키 엔트리(25X)에서의 스레드 소유자 필드(30X)의 내용들과 일치하면(결정(49)이 "예" 결과를 리턴하면), 프로세스(46)에서 호출된 암호 기법 동작이 진행될 수 있다. 프로세스(54)에서, 상태 머신(34)은 키 엔트리(25X)의 키 주소 포인터 필드(38X)에 저장된 보안 메모리 블록(16) 안의 메모리 주소를 액세스하거나, 키(40X)가 키 엔트리(25X) 그 자체 내에 저장되어 있으면 키 엔트리(25X)의 대응하는 필드를 읽음으로써 실제 키(40X)를 검색하고, 코프로세서(15)의 활성 키 저장소(36) 안에 키(40X)를 저장한다. 검색된 키 엔트리(25X)의 키 속성 필드(39X) 내의 허가들은 또한 키(40X)가 이 특정 동작을 위해 사용될 수 있음을 보장하기 위해 검사될 수 있다. 그렇게 가정하면, 그 저장된 키(40X)는 그리고 나서 프로세스(56)에서 원하는 암호 기법 동작을 실행하는 데 있어서 코프로세서(15)에 의해 사용된다. 프로세스(56)의 그 동작이 완료되고 결과들이 다시 CPU(12)로 포워딩된 후에, 코프로세서(15)는 다음 호출을 기다리기 위해 대기 상태(45)로 리턴한다.
따라서, 이 실시예에 따르면, 멀티스레딩 환경에서 하나의 실행 스레드에서 사용되는 암호 기법 키에 대한 액세스는 다른 실행 스레드들에 의한 사용으로부터 제한될 수 있다. 이러한 방식으로의 개별 스레드들에 대한 키들의 바인딩은 별도의 스레드에서 실행되는 악의적인 소프트웨어에 의한 공격을 배제함으로써, 보안이 주요 관심사인 IoT 컨텍스트에서의 구현을 위한 것들을 포함하여, 암호 기법 코프로세서를 포함하는 프로세서-기반 시스템들에서 더 큰 보안을 가능하게 한다. 이러한 개선된 보안은 전체적인 시스템 성능을 저하시키는 코프로세서 컨텍스트 전환을 관리하는 것, 및 외부 메모리에 액세스하고, 그에 따라 암호 기법 코프로세서에서의 빠른 컨텍스트 전환들을 가능하게 하는 방식으로 달성되어, 메인 프로세서 로직의 부담을 덜어준다.
도 3에 도시된 실시예에 대해 설명된 바와 같이, 코프로세서(15)에 호출을 발행하는 실행 스레드에 대한 스레드 ID는 CPU(12) 내의 스레드 ID 레지스터(11)로부터 측파대 경로(SC)를 통해 코프로세서(15)로 통신된다. 다른 실시예에 따르면, 도 5에 도시된 바와 같이, 현재 스레드 ID 레지스터(51)는 암호 기법 코프로세서(15') 내에 제공된다. 이 실시예에서, 운영 체제(13)는 코프로세서(15')가 소프트웨어 루틴에 수반되어 있지 않더라도, CPU(12)에서 수행되는 스레드 컨텍스트 전환의 일부와 같이, 디바이스 버스 구조(32)를 통해 CPU(12)가 코프로세서(15')에 현재 스레드 ID 값을 포워딩하도록 야기한다. 도 3의 실시예에서와 같이, 운영 체제가 현재 스레드 ID 레지스터(51)의 내용들을 기입할 수 있는 한편, 낮은 권한의 소프트웨어 루틴들은 그렇게 하는 것이 금지되도록, 운영 체제(13)는 실행 중인 애플리케이션 소프트웨어와 같은 다른 소프트웨어 루틴들의 것보다 더 높은, 충분히 높은 특권 레벨을 가질 것이다. 따라서, 이 실시예에 따르면, 현재 스레드 ID는 코프로세서(15') 자체에서 레지스터(51) 안에 저장된다. 동작에서, 현재 실행 스레드가 표시된 암호 기법 키(40X)의 소유자인지 여부를 결정하기 위한 결정(49)(도 4)에서의 비교는 키 액세스 상태 머신(34)에 의해 자신의 스레드 ID 레지스터(51)의 내용들과 검색된 키 엔트리(25X)의 스레드 소유자 필드(30X)의 내용들을 비교함으로써 수행된다. 도 5의 이 실시예에 따른 코프로세서(15')의 동작은 그렇지 않으면 도 4와 관련하여 전술한 방법을 따른다.
대안으로 더 나아가, 키 엔트리의 내용들은 특정 암호 기법 키를 프로비저닝한(즉, "소유한") 스레드 이외의 스레드들이 동일한 키를 또한 사용하도록 허가될 수 있도록 되어 있을 수 있다. 이러한 대안적 구현에서, 도 4의 결정(49)은 CPU(12)에 의해 통신되거나 또는 운영 체제(13)에 의해 코프로세서(15) 자체에 저장되는 현재 실행 스레드가 그 키를 사용하도록 허가되었는지 여부를 결정하기 위해 키 엔트리의 대응하는 필드를 평가한다; 그렇지 않은 경우에는 오류 메시지가 발행되고, 그런 경우에는 원하는 동작이 그 현재 스레드 내에서 실행된다.
설명된 실시예들에서 수정이 가능하고, 청구범위의 범주 내에서 다른 실시예들이 가능하다.
Claims (20)
- 프로세서로서,
중앙 처리 장치;
상기 중앙 처리 장치에 결합된 제1 버스;
상기 중앙 처리 장치에 결합된 측파대 통신 경로로서, 상기 제1 버스로부터 분리된 상기 측파대 통신 경로;
복수의 키 엔트리들을 저장하기 위한 메모리 - 각각의 키 엔트리는 각각의 키 식별자, 각각의 스레드 소유자, 및 각각의 암호 기법 키(cryptography key)와 연관됨 -; 및
상기 메모리와 상기 중앙 처리 장치에 결합된 프로세서를 포함하고,
상기 프로세서는 상기 제1 버스 및 상기 측파대 통신 경로를 통해 상기 중앙 처리 장치에 결합되고,
상기 프로세서는 복수의 동작들을 실행하도록 구성된 로직 회로를 포함하고, 상기 복수의 동작들은:
상기 제1 버스를 통해 상기 중앙 처리 장치로부터 키 식별자 값을 수신하는 동작;
상기 측파대 통신 경로를 통해 상기 중앙 처리 장치로부터 스레드 식별자 값을 수신하는 동작;
상기 수신된 키 식별자 값에 대응하는 상기 메모리의 키 엔트리를 검색하고 상기 검색된 키 엔트리와 연관된 스레드 소유자를 검색하는 동작; 및
액세스된 키 엔트리와 연관된 스레드 소유자에 대응하는 스레드 식별자 값에 응답하여, 상기 액세스된 키 엔트리와 연관된 암호 기법 키를 사용하여 암호 기법 동작을 실행하는 동작을 포함하는, 프로세서. - 제1항에 있어서, 상기 중앙 처리 장치가 프로그래머블 로직; 및 상기 프로그래머블 로직에 의해 실행되는 현재 스레드를 나타내는 스레드 식별자 값을 저장하기 위한 스레드 ID 레지스터를 포함하는, 프로세서.
- 제1항에 있어서, 상기 프로세서는 상기 중앙 처리 장치에 의해 실행되는 현재 스레드를 나타내는 스레드 식별자 값을 저장하기 위한 스레드 ID 레지스터를 더 포함하고, 상기 중앙 처리 장치는 상기 스레드 식별자 값을 상기 제1 버스를 통해 상기 프로세서에 통신하는, 프로세서.
- 제1항에 있어서, 상기 메모리는 상기 제1 버스를 통해 상기 프로세서에 결합되고, 상기 프로세서는 상기 프로세서를 상기 메모리에 결합하는 채널 상의 상기 메모리에 대한 액세스를 제한하는 방화벽 기능을 더 포함하는, 프로세서.
- 제1항에 있어서, 상기 프로세서를 상기 메모리에 결합하는 제2 버스를 더 포함하는, 프로세서.
- 제1항에 있어서, 상기 중앙 처리 장치, 상기 메모리, 및 상기 프로세서는 단일 집적 회로 내에 있는, 프로세서.
- 제1항에 있어서, 상기 중앙 처리 장치는 복수의 프로세서 코어들을 포함하고, 상기 스레드 식별자 값은 상기 복수의 프로세서 코어들 중 현재 스레드를 실행하는 것에 대응하는, 프로세서.
- 방법으로서,
메모리 내에, 복수의 키 엔트리를 저장하는 단계 - 각각의 키 엔트리는 각각의 키 식별자, 각각의 스레드 소유자, 및 각각의 암호 기법 키와 연관됨 -;
중앙 처리 장치로부터 프로세서에 의해, 제1 버스를 통해 키 식별자 값을 수신하는 단계;
상기 중앙 처리 장치로부터 상기 프로세서에 의해, 측파대 통신 경로를 통해 스레드 식별자 값을 수신하는 단계 - 상기 측파대 통신 경로는 상기 제1 버스로부터 분리됨 -;
상기 메모리로부터 상기 프로세서에 의해, 상기 수신된 키 식별자 값에 대응하는 키 엔트리를 검색하고 상기 검색된 키 엔트리와 연관된 스레드 소유자를 검색하는 단계; 및
검색된 키와 연관된 스레드 소유자에 대응하는 수신된 스레드 소유자 값에 응답하여, 상기 검색된 키 엔트리와 연관된 암호 기법 키를 사용하여 암호 기법 동작을 실행하는 단계를 포함하는, 방법. - 제8항에 있어서, 상기 스레드 식별자 값은 상기 중앙 처리 장치의 운영 체제 하에서 복수의 실행 스레드들 중 하나에 대응하는, 방법.
- 제8항에 있어서,
상기 프로세서에서 레지스터 내에 상기 스레드 식별자 값을 저장하는 단계를 더 포함하는, 방법. - 제8항에 있어서,
상기 수신된 키 식별자 값에 대응하는 키 엔트리를 검색하고 상기 검색된 키 엔트리와 연관된 스레드 소유자를 검색하는 단계는 상기 프로세서를 상기 메모리에 결합하는 제2 버스를 통해 수행되는, 방법. - 제8항에 있어서,
상기 수신된 스레드 소유자 값이 상기 검색된 키와 연관된 스레드 소유자에 대응하지 않는다는 것에 응답하여, 상기 프로세서로부터 상기 중앙 처리 장치로 에러 메시지를 발행하는 단계를 더 포함하는, 방법. - 제8항에 있어서, 상기 중앙 처리 장치는 복수의 프로세서 코어들을 포함하고, 스레드 식별자 값은 상기 복수의 프로세서 코어들 중 현재 실행 스레드를 실행하는 것에 대응하는, 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/244,208 | 2016-08-23 | ||
US15/244,208 US10536441B2 (en) | 2016-08-23 | 2016-08-23 | Thread ownership of keys for hardware-accelerated cryptography |
PCT/US2017/047886 WO2018039152A2 (en) | 2016-08-23 | 2017-08-22 | Thread ownership of keys for hardware-accelerated cryptography |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190040211A KR20190040211A (ko) | 2019-04-17 |
KR102465738B1 true KR102465738B1 (ko) | 2022-11-10 |
Family
ID=61243804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197005233A KR102465738B1 (ko) | 2016-08-23 | 2017-08-22 | 하드웨어-가속화된 암호 기법을 위한 키들의 스레드 소유권 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10536441B2 (ko) |
EP (1) | EP3504837B1 (ko) |
JP (1) | JP6916454B2 (ko) |
KR (1) | KR102465738B1 (ko) |
CN (1) | CN109644129B (ko) |
WO (1) | WO2018039152A2 (ko) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6589996B2 (ja) * | 2016-01-15 | 2019-10-16 | 富士通株式会社 | セキュリティ装置および制御方法 |
US11237828B2 (en) * | 2016-04-26 | 2022-02-01 | Onnivation, LLC | Secure matrix space with partitions for concurrent use |
US10540219B2 (en) | 2017-09-13 | 2020-01-21 | Toshiba Memory Corporation | Reset and error handling in application specific integrated circuits |
US10528414B2 (en) * | 2017-09-13 | 2020-01-07 | Toshiba Memory Corporation | Centralized error handling in application specific integrated circuits |
US11115383B2 (en) * | 2018-05-24 | 2021-09-07 | Texas Instruments Incorporated | System on chip firewall memory architecture |
US11139967B2 (en) | 2018-12-20 | 2021-10-05 | Intel Corporation | Restricting usage of encryption keys by untrusted software |
GB201911802D0 (en) * | 2019-08-16 | 2019-10-02 | Pqshield Ltd | Lattice Coprocessor |
US11165588B1 (en) | 2020-04-09 | 2021-11-02 | International Business Machines Corporation | Key attribute verification |
KR20230144611A (ko) * | 2021-04-06 | 2023-10-16 | 구글 엘엘씨 | 보안 암호화 코프로세서 |
US20220327052A1 (en) * | 2021-04-12 | 2022-10-13 | Meta Platforms, Inc. | Systems and methods for transforming data in-line with reads and writes to coherent host-managed device memory |
CN114662113A (zh) * | 2022-02-15 | 2022-06-24 | 芯翼信息科技(上海)有限公司 | 密钥烧录方法及装置、安全启动方法及装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040230813A1 (en) * | 2003-05-12 | 2004-11-18 | International Business Machines Corporation | Cryptographic coprocessor on a general purpose microprocessor |
CN101431407A (zh) * | 2008-12-15 | 2009-05-13 | 西安电子科技大学 | 支持线程级加解密的密码处理器及其密码运算操作方法 |
KR101012872B1 (ko) * | 2009-09-16 | 2011-02-08 | 주식회사 팬택 | 플랫폼 보안 장치 및 방법 |
US20130238907A1 (en) * | 2011-09-15 | 2013-09-12 | Maxim Integrated Products, Inc. | Systems and methods for managing cryptographic keys in a secure microcontroller |
US20130305342A1 (en) * | 2012-05-10 | 2013-11-14 | Qualcomm Incorporated | Hardware enforced output security settings |
US20140214687A1 (en) * | 2011-07-20 | 2014-07-31 | Horatio Nelson Huxham | Cryptographic expansion device and related protocols |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10000503A1 (de) | 2000-01-08 | 2001-07-12 | Philips Corp Intellectual Pty | Datenverarbeitungseinrichtung und Verfahren zu dessen Betrieb |
DE10061998A1 (de) | 2000-12-13 | 2002-07-18 | Infineon Technologies Ag | Kryptographieprozessor |
CA2474915A1 (en) | 2002-03-18 | 2003-09-25 | Colin Martin Schmidt | Session key distribution methods using a hierarchy of key servers |
US20050198498A1 (en) * | 2004-03-02 | 2005-09-08 | International Business Machines Corporation | System and method for performing cryptographic operations on network data |
US7594236B2 (en) * | 2004-06-28 | 2009-09-22 | Intel Corporation | Thread to thread communication |
US7533248B1 (en) * | 2004-06-30 | 2009-05-12 | Sun Microsystems, Inc. | Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor |
DE102006055830A1 (de) * | 2006-11-27 | 2008-05-29 | Robert Bosch Gmbh | Verfahren zum Schutz eines Steuergeräts vor Manipulation |
US8392726B2 (en) * | 2006-12-20 | 2013-03-05 | Stmicroelectronics S.A. | Protection of memory areas |
US7814243B2 (en) * | 2007-06-01 | 2010-10-12 | Sonics, Inc. | Shared storage for multi-threaded ordered queues in an interconnect |
EP2186250B1 (en) | 2007-08-31 | 2019-03-27 | IP Reservoir, LLC | Method and apparatus for hardware-accelerated encryption/decryption |
US8694997B2 (en) * | 2007-12-12 | 2014-04-08 | University Of Washington | Deterministic serialization in a transactional memory system based on thread creation order |
US8494168B1 (en) * | 2008-04-28 | 2013-07-23 | Netapp, Inc. | Locating cryptographic keys stored in a cache |
US8108367B2 (en) * | 2008-05-20 | 2012-01-31 | International Business Machines Corporation | Constraints with hidden rows in a database |
US8370625B2 (en) * | 2008-06-11 | 2013-02-05 | Microsoft Corporation | Extended data signing |
JP5233449B2 (ja) * | 2008-07-02 | 2013-07-10 | 日本電気株式会社 | 署名生成装置、ならびに、署名検証装置 |
US8266504B2 (en) * | 2009-04-14 | 2012-09-11 | International Business Machines Corporation | Dynamic monitoring of ability to reassemble streaming data across multiple channels based on history |
US9858241B2 (en) * | 2013-11-05 | 2018-01-02 | Oracle International Corporation | System and method for supporting optimized buffer utilization for packet processing in a networking device |
EP2736214B1 (en) * | 2012-11-27 | 2015-10-14 | Nxp B.V. | Controlling application access to mobile device functions |
US9575825B2 (en) * | 2014-12-23 | 2017-02-21 | International Business Machines Corporation | Push instruction for pushing a message payload from a sending thread to a receiving thread |
US9871783B2 (en) * | 2015-06-26 | 2018-01-16 | Verizon Patent And Licensing Inc. | Universal enrollment using biometric PKI |
-
2016
- 2016-08-23 US US15/244,208 patent/US10536441B2/en active Active
-
2017
- 2017-08-22 CN CN201780051475.5A patent/CN109644129B/zh active Active
- 2017-08-22 KR KR1020197005233A patent/KR102465738B1/ko active IP Right Grant
- 2017-08-22 JP JP2019511471A patent/JP6916454B2/ja active Active
- 2017-08-22 EP EP17844233.1A patent/EP3504837B1/en active Active
- 2017-08-22 WO PCT/US2017/047886 patent/WO2018039152A2/en unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040230813A1 (en) * | 2003-05-12 | 2004-11-18 | International Business Machines Corporation | Cryptographic coprocessor on a general purpose microprocessor |
CN101431407A (zh) * | 2008-12-15 | 2009-05-13 | 西安电子科技大学 | 支持线程级加解密的密码处理器及其密码运算操作方法 |
KR101012872B1 (ko) * | 2009-09-16 | 2011-02-08 | 주식회사 팬택 | 플랫폼 보안 장치 및 방법 |
US20140214687A1 (en) * | 2011-07-20 | 2014-07-31 | Horatio Nelson Huxham | Cryptographic expansion device and related protocols |
US20130238907A1 (en) * | 2011-09-15 | 2013-09-12 | Maxim Integrated Products, Inc. | Systems and methods for managing cryptographic keys in a secure microcontroller |
US20130305342A1 (en) * | 2012-05-10 | 2013-11-14 | Qualcomm Incorporated | Hardware enforced output security settings |
Also Published As
Publication number | Publication date |
---|---|
CN109644129B (zh) | 2023-03-28 |
WO2018039152A2 (en) | 2018-03-01 |
KR20190040211A (ko) | 2019-04-17 |
WO2018039152A3 (en) | 2018-03-29 |
CN109644129A (zh) | 2019-04-16 |
JP2019532559A (ja) | 2019-11-07 |
EP3504837A2 (en) | 2019-07-03 |
US10536441B2 (en) | 2020-01-14 |
EP3504837A4 (en) | 2019-08-14 |
US20180063100A1 (en) | 2018-03-01 |
JP6916454B2 (ja) | 2021-08-11 |
EP3504837B1 (en) | 2024-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102465738B1 (ko) | 하드웨어-가속화된 암호 기법을 위한 키들의 스레드 소유권 | |
US11088846B2 (en) | Key rotating trees with split counters for efficient hardware replay protection | |
US10708051B2 (en) | Controlled access to data in a sandboxed environment | |
US9954681B2 (en) | Systems and methods for data encryption | |
US7475257B2 (en) | System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data | |
US10482275B2 (en) | Implementing access control by system-on-chip | |
US7827326B2 (en) | Method and apparatus for delegation of secure operating mode access privilege from processor to peripheral | |
US8095802B2 (en) | System and method for securely saving a program context to a shared memory | |
US11671412B2 (en) | Network bound encryption for orchestrating workloads with sensitive data | |
US10565130B2 (en) | Technologies for a memory encryption engine for multiple processor usages | |
US9678894B2 (en) | Cache-less split tracker architecture for replay protection trees | |
TW201617957A (zh) | 鑑別變數之管理技術 | |
TWI797353B (zh) | 動態密碼密鑰擴展之電路、方法及系統 | |
TW201933169A (zh) | 在一加密系統中管理密碼密鑰之一集合 | |
CN112948139A (zh) | 使用交换机向加速器安全地广播消息的系统和方法 | |
US20210312091A1 (en) | Multi-master security circuit | |
US11763041B2 (en) | Data storage device performing in-storage processing | |
CN112953886B (zh) | 使用具有交换机的虚拟信道向加速器安全地广播消息的系统和方法 | |
JP7027664B2 (ja) | ハッキング耐性のあるコンピュータ設計 | |
US9916262B2 (en) | Least privileged operating system | |
CN112839021B (zh) | 带交换机的加速器之间的密钥共享方法 | |
US20230328045A1 (en) | Secure shell and role isolation for multi-tenant compute | |
WO2023092297A1 (en) | Customers key protection for cloud native deployments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |