KR101656092B1 - Secured computing system with asynchronous authentication - Google Patents

Secured computing system with asynchronous authentication Download PDF

Info

Publication number
KR101656092B1
KR101656092B1 KR1020140029902A KR20140029902A KR101656092B1 KR 101656092 B1 KR101656092 B1 KR 101656092B1 KR 1020140029902 A KR1020140029902 A KR 1020140029902A KR 20140029902 A KR20140029902 A KR 20140029902A KR 101656092 B1 KR101656092 B1 KR 101656092B1
Authority
KR
South Korea
Prior art keywords
data item
output
program
processing core
bridge
Prior art date
Application number
KR1020140029902A
Other languages
Korean (ko)
Other versions
KR20150020017A (en
Inventor
지브 허쉬만
발레리 테페르
모쉐 알론
Original Assignee
윈본드 일렉트로닉스 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/965,256 external-priority patent/US9703945B2/en
Application filed by 윈본드 일렉트로닉스 코포레이션 filed Critical 윈본드 일렉트로닉스 코포레이션
Publication of KR20150020017A publication Critical patent/KR20150020017A/en
Application granted granted Critical
Publication of KR101656092B1 publication Critical patent/KR101656092B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals

Landscapes

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

Abstract

컴퓨팅 디바이스는 입력 브리지, 출력 브리지, 처리 코어, 및 인증 로직을 포함한다. 입력 브리지는 프로그램을 실행하는 디바이스에 의해 사용하기 위한 데이터 항목의 시퀀스를 수신하도록 연결된다. 처리 코어는 입력 브리지로부터 데이터 항목을 수신하고 프로그램을 실행하여 시퀀스에서 주어진 데이터 항목에 응답해서 출력 브리지에서 신호를 출력하도록 연결되고, 인증 로직은 처리 코어가 프로그램을 실행하는 동안 데이터 항목을 수신하고 인증하며, 주어진 데이터 항목이 인증될 때까지 출력 브리지에 의한 상기 신호의 출력을 금지하도록 연결된다.The computing device includes an input bridge, an output bridge, a processing core, and authentication logic. The input bridge is coupled to receive a sequence of data items for use by a device executing the program. The processing core is coupled to receive a data item from an input bridge and to execute a program to output a signal in an output bridge in response to a given data item in the sequence, wherein the authentication logic receives the data item while the processing core is executing the program, And is connected to inhibit output of the signal by the output bridge until a given data item is authenticated.

Description

비동기적인 인증을 갖는 보안 컴퓨팅 시스템{SECURED COMPUTING SYSTEM WITH ASYNCHRONOUS AUTHENTICATION}[0001] SECURED COMPUTING SYSTEM WITH ASYNCHRONOUS AUTHENTICATION [0002]

관련 출원에 대한 상호 참조Cross-reference to related application

본 출원은, 2012년 9월 19일에 출원된 미국 가특허 출원 제61/702,763호의 이익을 주장하며, 이 기초 출원은, 그 전체 내용이 본 명세서에 참조로 포함된다.This application claims the benefit of U.S. Provisional Patent Application No. 61 / 702,763, filed September 19, 2012, the entirety of which is incorporated herein by reference.

기술 분야Technical field

본 발명은 일반적으로 컴퓨팅 시스템에 관한 것으로, 보다 상세하게는 외부 디바이스에 저장된 프로그램을 보안 실행하는 방법 및 시스템에 관한 것이다.FIELD OF THE INVENTION The present invention relates generally to computing systems, and more particularly to a method and system for securely executing programs stored on external devices.

보안 컴퓨팅 시스템에서, 보안 컴퓨팅 디바이스는 종종 하나 이상의 외부 디바이스와 통신한다. 외부 디바이스는 일반적으로 컴퓨팅 디바이스 내 처리 코어에 의해 실행되는 프로그램 명령을 저장하는 메모리 디바이스를 적어도 포함한다. 컴퓨팅 디바이스와 외부 디바이스 사이의 통신 링크에 보안이 되어 있지 않은 경우에, 보안 컴퓨팅 디바이스는 종종 링크를 통해 수신된 데이터의 무결성(integrity) 및 진정성(authenticity)을 확인(validate)하는 것이 필요하다. 진정성 확인은 데이터가 적법한 소스(예를 들어, 허가된 메모리 디바이스)로부터 송신되었다는 것을 수신 디바이스(예를 들어, 보안 컴퓨팅 디바이스)가 검증할 수 있는 것을 의미한다. 무결성은 데이터가 수신 디바이스에 입력되기 전에 변경되지 않았다는 것을 의미한다. 이하 상세한 설명 및 청구범위에서, "인증"이라는 용어는 집합적으로 데이터의 진정성 또는 무결성 또는 이들 둘 모두를 확인하는 기술을 말한다.In secure computing systems, secure computing devices often communicate with one or more external devices. The external device generally includes at least a memory device that stores program instructions that are executed by a processing core in a computing device. In the event that the communication link between the computing device and the external device is not secured, the secure computing device often needs to validate the integrity and authenticity of the data received over the link. Authenticity verification means that the receiving device (e.g., a secure computing device) can verify that the data has been transmitted from a legitimate source (e.g., an authorized memory device). Integrity means that the data has not changed before being input to the receiving device. In the following description and claims, the term "authentication" collectively refers to a technique for verifying authenticity or integrity of data or both.

컴퓨팅 환경 외부에 있는 디바이스에 저장된 코드 및 데이터를 인증하는 방법은 이 기술 분야에 알려져 있다. 전체 내용이 본 명세서에 참조 문헌으로 병합된, 예를 들어, 미국 특허 출원 공개 제2010/0070779호는 암호화(ciphering) 및 복호화(deciphering)에서 동일한 것을 의미하는 적어도 하나의 중간 상태를 제공하는 암호화 알고리즘에 의해 암호화된 데이터의 무결성을 보호하는 방법을 기술하며, 이 중간 상태는 시그너처(signature)를 생성하도록 암호화 동안 샘플링된다. 본 발명은 보다 구체적으로 보안으로 고려되는 집적 회로 외부에 있는 메모리의 컨텐츠의 프라이버시(privacy) 및 무결성(또는 진정성)을 보호하는데 적용된다.Methods for authenticating codes and data stored in devices outside the computing environment are known in the art. For example, U.S. Patent Application Publication No. 2010/0070779, which is incorporated herein by reference in its entirety, discloses an encryption algorithm that provides at least one intermediate state, which means the same in ciphering and deciphering, Which is sampled during encryption to generate a signature. ≪ RTI ID = 0.0 > [0031] < / RTI > The present invention is more particularly applied to protect the privacy and integrity (or authenticity) of the contents of a memory external to an integrated circuit considered security.

전체 내용이 본 명세서에 참조 문헌으로 병합된 미국 특허 8,108,941은 비휘발성 메모리를 인증하기 위한 제1 메모리 인증 정보를 저장하는 비휘발성 메모리에 연결된 프로세서를 기술한다. 이 프로세서는 비휘발성 메모리에 저장된 정보를 사용하여 동작을 수행하도록 구성된 동작 유닛, 상기 동작 유닛과 일체로 형성되고 상기 비휘발성 메모리를 인증하기 위한 제2 메모리 인증 정보를 저장하는 인증 메모리, 상기 비휘발성 메모리로부터 상기 제1 메모리 인증 정보를 획득하도록 구성된 인증 정보 획득 유닛, 상기 제1 메모리 인증 정보와 상기 제2 메모리 인증 정보를 비교하여 상기 비휘발성 메모리를 인증하도록 구성된 메모리 인증 유닛, 및 상기 메모리 인증 유닛이 인증에 성공할 때 상기 비휘발성 메모리에 액세스하는 것을 허가하도록 구성된 메모리 액세스 제어 유닛을 포함한다.U.S. Patent No. 8,108,941, which is incorporated herein by reference in its entirety, describes a processor coupled to a non-volatile memory for storing first memory authentication information for authenticating non-volatile memory. The processor includes an operation unit configured to perform an operation using information stored in a nonvolatile memory, an authentication memory formed integrally with the operation unit and storing second memory authentication information for authenticating the nonvolatile memory, An authentication information obtaining unit configured to obtain the first memory authentication information from the memory, a memory authentication unit configured to compare the first memory authentication information and the second memory authentication information to authenticate the nonvolatile memory, And a memory access control unit configured to permit access to the nonvolatile memory when the authentication is successful.

전체 내용이 본 명세서에 참조 문헌으로 병합된 미국 특허 8,140,824는 부트 코드(boot code)와 같은 코드를 인증하기 위한 컴퓨터 판독가능한 프로그램을 구비하는 컴퓨터 사용가능한 매체를 포함하는 컴퓨터 프로그램 제품을 기술한다. 메모리 어드레스 지정 엔진은, 단계 값(step value)의 함수로, 제1 입력 해쉬 값(hash value)으로, 메모리의 일부를 선택하도록 사용가능하다. 상기 단계 값은 좌측으로 회전된 이전의 해쉬 값과 같은 제2 입력 해쉬 값을 갖는 복수의 메모리 부분의 비-가환 누적 해쉬(non-commutative cumulative hash)를 가능하게 한다. 인증기 회로는 상기 제2 입력 해쉬 값과 메모리의 이 부분에 해쉬를 수행하도록 사용가능하다. 비교 회로는 인증기 회로의 출력을 예상 값과 비교하는데 사용가능하다.U.S. Patent No. 8,140,824, which is incorporated herein by reference in its entirety, describes a computer program product comprising a computer usable medium having a computer readable program for authenticating a code, such as a boot code. The memory addressing engine is usable to select a portion of memory as a first input hash value, as a function of the step value. The step value enables a non-commutative cumulative hash of a plurality of memory portions having a second input hash value equal to the previous hash value rotated to the left. The authenticator circuit is operable to perform a hash on the portion of the memory and the second input hash value. The comparison circuit can be used to compare the output of the authenticator circuit with the expected value.

본 발명의 일 실시예는, 입력 브리지(bridge), 출력 브리지, 처리 코어, 및 인증 로직을 포함하는 컴퓨팅 디바이스를 제공한다. 입력 브리지는 프로그램을 실행하는 디바이스에 의해 사용하기 위한 데이터 항목(data item)의 시퀀스를 수신하도록 연결된다. 상기 처리 코어는 입력 브리지로부터 데이터 항목을 수신하고 프로그램을 실행하여 시퀀스에서 주어진 데이터 항목에 응답해서 출력 브리지에서 신호를 출력하도록 연결되고, 인증 로직은, 처리 코어가 상기 프로그램을 실행하는 동안 데이터 항목을 수신하고 인증하며, 상기 주어진 데이터 항목이 인증될 때까지 출력 브리지에 의한 신호의 출력을 금지하도록 연결된다.One embodiment of the present invention provides a computing device comprising an input bridge, an output bridge, a processing core, and authentication logic. The input bridge is connected to receive a sequence of data items for use by the device executing the program. Wherein the processing core is coupled to receive a data item from an input bridge and to execute a program to output a signal in an output bridge in response to a given data item in the sequence, Receive and authenticate, and are inhibited from outputting the signal by the output bridge until the given data item is authenticated.

일부 실시예에서, 상기 데이터 항목은 프로그램 명령을 포함하고 주어진 데이터 항목은 출력 명령을 포함하며, 상기 처리 코어는 출력 명령을 포함하는 프로그램 명령을 실행하는 것에 의해 프로그램을 실행하도록 구성된다. 다른 실시예에서, 상기 인증 로직은 상기 처리 코어에 의한 프로그램의 실행과 비동기적으로 데이터 항목을 인증하도록 구성된다. 더 다른 실시예에서, 인증 로직은, 주어진 데이터 항목이 처리 코어에 의해 프로그램을 실행하는데 사용된 후에 주어진 데이터 항목을 인증하고, 주어진 데이터 항목의 인증이 완료될 때까지 출력 브리지에 의한 신호의 출력을 지연시키도록 구성된다.In some embodiments, the data item comprises a program instruction, the given data item comprises an output instruction, and the processing core is configured to execute the program by executing a program instruction comprising an output instruction. In another embodiment, the authentication logic is configured to authenticate the data item asynchronously with the execution of the program by the processing core. In yet another embodiment, the authentication logic authenticates a given data item after a given data item is used to execute the program by the processing core, and outputs the signal by the output bridge until authentication of the given data item is completed .

일 실시예에서, 인증 로직은 데이터 항목의 하나 이상의 디지털 시그너처를 계산하고 계산된 시그너처를 입력 브리지를 통해 디바이스에 의해 수신된 각 오리지널 시그너처와 비교하는 것에 의해 데이터 항목을 인증하도록 구성된다. 다른 실시예에서, 인증 로직은 계산된 시그너처 중 적어도 하나가 각 오리지널 시그너처와 매칭되지 않는 경우 알람(alert) 신호를 생성하도록 구성된다. 또 다른 실시예에서, 입력 브리지는 데이터 항목의 제1 및 제2 블록을 수신하는 것에 의해 데이터 항목을 수신하도록 구성되고, 제2 블록을 수신하는 것은 인증 로직을 사용하여 제1 블록의 모든 데이터 항목을 인증한 후에만 가능하다.In one embodiment, the authentication logic is configured to authenticate the data item by calculating one or more digital signatures of the data item and comparing the calculated signature with each original signature received by the device via the input bridge. In another embodiment, the authentication logic is configured to generate an alert signal if at least one of the calculated signatures does not match each original signature. In another embodiment, the input bridge is configured to receive a data item by receiving first and second blocks of data items, and receiving the second block is configured to use all of the data items of the first block Only after you have authenticated.

본 발명의 일 실시예에 따라 추가적으로 방법이 제공되고, 본 방법은, 입력 브리지를 통해 컴퓨팅 디바이스에서, 디바이스의 처리 코어에 의해 프로그램을 실행하는데 사용하기 위한 데이터 항목의 시퀀스를 수신하는 단계, 처리 코어에 의해 프로그램을 실행하여 시퀀스에서 주어진 데이터 항목에 응답해서 디바이스로부터 신호를 출력하는 단계, 및 처리 코어가 프로그램을 실행하는 동안 인증 로직을 사용하여 데이터 항목을 인증하고, 주어진 데이터 항목이 인증될 때까지 신호의 출력을 금지하는 단계를 포함한다.An additional method is provided according to an embodiment of the invention, the method comprising: receiving at a computing device via an input bridge a sequence of data items for use in executing a program by a processing core of the device; And outputting a signal from the device in response to a given data item in the sequence; and authenticating the data item using the authentication logic while the processing core is executing the program, until a given data item is authenticated And inhibiting the output of the signal.

본 발명의 일 실시예에 따라 추가적으로 컴퓨팅 시스템이 제공되며, 본 컴퓨팅 시스템은, 외부 디바이스 및 컴퓨팅 디바이스를 포함한다. 외부 디바이스는 데이터 항목의 시퀀스를 제공하도록 구성되고, 컴퓨팅 디바이스는 입력 브리지, 출력 브리지, 처리 코어, 및 인증 로직을 더 포함한다. 입력 브리지는 외부 디바이스로부터 프로그램을 실행하는 컴퓨팅 디바이스에 의해 사용하기 위한 데이터 항목의 시퀀스를 수신하도록 연결된다. 처리 코어는 입력 브리지로부터 데이터 항목을 수신하고 프로그램을 실행하여 시퀀스에서 주어진 데이터 항목에 응답해서 출력 브리지에서 신호를 출력하도록 연결되고, 인증 로직은, 처리 코어가 프로그램을 실행하는 동안 데이터 항목을 수신하고 인증하며, 주어진 데이터 항목이 인증될 때까지 출력 브리지에 의한 신호의 출력을 금지하도록 연결된다.In accordance with an embodiment of the present invention, a computing system is additionally provided, which includes an external device and a computing device. The external device is configured to provide a sequence of data items, and the computing device further includes an input bridge, an output bridge, a processing core, and authentication logic. The input bridge is coupled to receive a sequence of data items for use by a computing device executing a program from an external device. The processing core is coupled to receive a data item from an input bridge and execute the program to output a signal in an output bridge in response to a given data item in the sequence, wherein the authentication logic receives the data item while the processing core is executing the program And is connected to prohibit the output of the signal by the output bridge until a given data item is authenticated.

본 발명은 첨부 도면과 함께 본 실시예의 이하 상세한 설명으로부터 보다 완전히 이해될 수 있을 것이다.BRIEF DESCRIPTION OF THE DRAWINGS The invention will be more fully understood from the following detailed description of the embodiments, taken in conjunction with the accompanying drawings, in which: FIG.

도 1은 본 발명의 일 실시예에 따른 보안 컴퓨팅 시스템을 도시한 개략 블록도;
도 2는 본 발명의 일 실시예에 따른 도 1의 보안 컴퓨팅 시스템의 상세를 도시한 개략 블록도;
도 3은 본 발명의 일 실시예에 따른 보안 상태-기계(state-machine)를 도시하는 도면;
도 4는 본 발명의 일 실시예에 따라 보안 컴퓨팅 디바이스에서 인증하는 방법을 도시한 개략 흐름도.
1 is a schematic block diagram illustrating a secure computing system in accordance with one embodiment of the present invention;
2 is a schematic block diagram illustrating details of the secure computing system of FIG. 1 in accordance with one embodiment of the present invention; FIG.
Figure 3 illustrates a secure state-machine in accordance with one embodiment of the present invention;
4 is a simplified flow diagram illustrating a method for authenticating at a secure computing device in accordance with one embodiment of the present invention.

개요summary

외부 소스로부터 데이터(메시지라고도 언급됨)를 수신하는 보안 컴퓨팅 시스템은, 종종 내부에서 사용하기 전에 데이터의 무결성과 진정성을 확인하는 것이 요구된다. 아래에 제시되는 본 발명의 실시예는 데이터 인증에 디지털 시그너처를 사용한다. 디지털 시그너처는 일반적으로, 데이터와 함께 저장되거나 송신자 측(예를 들어, 메모리 디바이스)에서 실시간으로 생성되어 인증을 위해 데이터와 함께 수신자(예를 들어, 보안 컴퓨팅 디바이스)에 송신되는 비트-스트링(bit-string)을 포함한다. 수신자는 수신된 데이터의 시그너처를 계산하고 계산된 시그너처를 송신자의 오리지널 시그너처와 비교한다. 이 시그너처들이 매칭하면, 수신자는 데이터가 진정한 것이고 임의의 비허가된 자에 의해 변경되지 않은 것으로 가정할 수 있다.A secure computing system that receives data (also referred to as a message) from an external source often needs to verify the integrity and authenticity of the data before it is used internally. The embodiments of the invention presented below use digital signatures for data authentication. The digital signature is typically stored in the data or in real time on the sender side (e.g., a memory device) and sent to the recipient (e.g., a secure computing device) along with the data for authentication, -string). The recipient computes the signature of the received data and compares the computed signature with the sender's original signature. If these signatures match, the recipient can assume that the data is authentic and has not been altered by any unauthorized party.

많은 경우에, 시그너처를 생성하고 확인하는 것은 데이터 메시지 및 비밀 키(secret key)에 기초한다. 시그너처를 생성하는 알고리즘은 일반적으로 비허가된 자가 비밀 키를 전부 알지 못하고는 유효한 시그너처를 생성하지 못하도록 설계된다. 추가적으로, 데이터 메시지를 임의로 변경하면(즉, 데이터 무결성이 깨지면) 수신자 측에서 시그너처 검증이 실패하게 된다.In many cases, creating and verifying signatures is based on data messages and secret keys. The algorithm that generates the signature is generally designed so that the unauthorized person does not know the secret key and does not generate a valid signature. Additionally, arbitrary changes to the data message (i.e., data integrity failure) will cause signature verification to fail on the recipient side.

비밀 키를 사용하여 시그너처를 생성하고 확인하는 여러 방법이 이 기술 분야에 알려져 있다. 예를 들어, 송신자는 프라이빗 키(private key)를 사용하여 시그너처를 생성할 수 있는 반면, 수신자는 공개 키(public key)를 사용하여 시그너처를 확인한다. 다른 예로서, 송신자 및 수신자는 이들 사이에 비밀로 유지되는 공통 키를 공유할 수 있다. 수신자와 송신자 사이에 키를 교환하는 방법은 이 기술 분야에 알려져 있다. 특정 데이터에 대응하는 시그너처를 확인한 후(키의 비밀이 누설되지 않았다고 가정하고), 보안 컴퓨팅 디바이스는 수신된 데이터를 안전하게 처리할 수 있다. 예를 들어, 데이터가 컴퓨터 프로그램 명령을 포함하면, 컴퓨팅 디바이스는 보안 정보를 노출시킬 위험이 없이 인증된 프로그램을 안전하게 실행할 수 있다. Various methods of generating and verifying signatures using secret keys are known in the art. For example, a sender can create a signature using a private key, while a recipient uses a public key to verify a signature. As another example, the sender and the recipient may share a common key that remains secret between them. Methods for exchanging keys between a recipient and a sender are known in the art. After verifying the signature corresponding to the specific data (assuming that the secret of the key has not been leaked), the secure computing device can securely process the received data. For example, if the data includes computer program instructions, the computing device may securely execute the authenticated program without risking exposing the security information.

보안 측면에서, 컴퓨팅 디바이스 내 처리에 영향을 미치는 비인증된 프로그램 명령 및 다른 데이터 항목은 본 발명의 실시예를 위해 2개의 카테고리로 분류될 수 있다. 제1 카테고리의 비인증된 데이터 항목을 처리하는 것은 보안 정보를 전혀 노출시키지 않아서, 이 카테고리에서의 데이터 항목은 그리하여 중립 명령 또는 데이터 항목이라고 지칭된다. 한편, 제2 카테고리의 비인증된 데이터 항목을 처리하는 것은 비밀 또는 보안 정보를 직접 또는 간접으로 노출시킬 수 있다. 이 제2 카테고리의 데이터 항목은 본 명세서에서 출력 명령이라고도 지칭된다.In terms of security, unauthorized program commands and other data items that affect processing within a computing device may be categorized into two categories for embodiments of the present invention. Processing an unauthenticated data item in the first category does not expose any security information, so the data item in this category is thus referred to as a neutral command or data item. On the other hand, processing the unauthenticated data item of the second category may expose the secret or security information directly or indirectly. The data items of this second category are also referred to herein as output instructions.

본 명세서에 설명된 본 발명의 실시예는 보안 컴퓨팅 디바이스에서 인증하는 개선하는 방법 및 시스템을 제공한다. 예시적인 실시예에서, 컴퓨팅 디바이스에서 처리 코어는 입력 브리지를 통해 메모리와 같은 외부 디바이스로부터 실행할 프로그램 명령을 수신한다. 이 명령은 디지털 시그너처로 서명(signed)된다. 이 명령(즉, 출력 명령)의 일부는 처리 코어가 출력 브리지를 통해 정보를 출력하게 할 수 있다. "입력 브리지" 및 "출력 브리지"라는 용어는 본 명세서에서 컴퓨팅 디바이스가 각각 신호를 송수신할 수 있는 임의의 및 모든 연결을 폭넓게 지칭하는데 사용된다. 이하 상세한 설명과 청구범위에서, "신호"라는 용어는 물리적 신호 연결을 통하든 아니든 간에 디바이스로 정보를 운반하거나 디바이스로부터 정보를 운반하는 임의의 채널을 지칭한다. 비-물리적인 신호 채널의 예로는, 조건부 리셋 동작을 수행하는 공격자에 노출될 수 있는, 전력 라인을 통한 전압 패턴, 전자기 방사파의 변화 및 보안 정보와 같은 측면-채널 공격에서 픽업될 수 있는 신호를 포함한다.The embodiments of the invention described herein provide an improved method and system for authenticating at a secure computing device. In an exemplary embodiment, at a computing device, a processing core receives program instructions to be executed from an external device, such as a memory, via an input bridge. This command is signed with a digital signature. A portion of this command (i.e., an output command) may cause the processing core to output information via the output bridge. The terms "input bridge" and "output bridge" are used herein to broadly refer to any and all connections in which a computing device can send and receive signals, respectively. In the following description and claims, the term "signal" refers to any channel that carries or carries information to or from the device, whether through a physical signal connection or not. Examples of non-physical signal channels include signals that can be picked up in a side-channel attack, such as a voltage pattern across a power line, changes in electromagnetic radiation, and security information that can be exposed to an attacker performing a conditional reset operation .

입력 브리지를 통해 수신된 명령은 컴퓨팅 디바이스 내 전용 인증 로직에 의해 인증된다. 인증은 프로그램의 적어도 일부의 처리 코어에 의한 실행과 병렬로 수행될 수 있다. 처리 코어가 아직 인증되지 않은 출력 명령을 만나면, 인증 로직은 출력 브리지를 금지시키고, 현재 출력 명령 및 이보다 앞선 모든 명령이 인증될 때까지 신호의 실제 출력을 지연시킨다. 그리하여, 비밀 정보의 의도치 않은 노출을 방지하면서 인증을 대기하는 동안 불필요한 실행의 지연을 회피하는 것에 의해 성능이 최대화된다.The command received via the input bridge is authenticated by dedicated authentication logic within the computing device. Authentication may be performed in parallel with execution by at least some of the processing cores of the program. If the processing core encounters an unauthenticated output instruction, the authentication logic inhibits the output bridge and delays the actual output of the signal until the current output instruction and all preceding instructions are authenticated. Thus, performance is maximized by avoiding delays in unnecessary execution while waiting for authentication while preventing unintended exposures of confidential information.

일 실시예에서, 외부 디바이스는 비보안 메모리 디바이스를 포함한다. 메모리 용량 중 선택된 공유 부분을 사용하여 메모리 데이터 블록에 대응하는 시그너처를 저장한다. 컴퓨팅 디바이스는 메모리 디바이스로부터 데이터 및 각 시그너처 또는 시그너처들을 수신하고 서명 있는 블록을 인증한다. 수신된 데이터는 처리 코어에 의해 실행되기 전에 또는 실행되는 것과 병렬로 캐시에 저장될 수 있고, 외부 디바이스로부터 데이터를 재-페치(re-fetching)하는 것은 캐시 미스 이벤트(cache miss event) 시 일어난다. 단일 블록 페치(fetch)-인증 사이클에서 동작하는 대신에, 컴퓨팅 디바이스는 다수의 시그너처들이 다수의 데이터 블록을 페치할 때 계산되고 저장되며 검증되는 모드에서 동작한다. 이 동작 모드는 컴퓨팅 디바이스의 효율을 개선시킨다.In one embodiment, the external device includes a non-secure memory device. And stores the signature corresponding to the block of memory data using the selected shared portion of memory capacity. The computing device receives data and each signature or signatures from the memory device and authenticates the signed block. The received data may be stored in the cache before or in parallel with the execution by the processing core, and re-fetching data from the external device occurs during a cache miss event. Instead of operating in a single block fetch-authentication cycle, the computing device operates in a mode in which a number of signatures are computed, stored and verified when fetching multiple data blocks. This mode of operation improves the efficiency of the computing device.

다른 실시예에서, 외부 디바이스는 시그너처 엔진을 구비하는 보안 메모리 디바이스를 포함한다. 보안 외부 디바이스는 컴퓨팅 디바이스와 비밀 키를 공유하고, 데이터 시그너처를 생성, 유지하며 이를 컴퓨팅 디바이스에 송신할 수 있다. 데이터 시그너처는 디바이스 인터페이스를 통해 전달된 하나 이상의 (예를 들어, 블록-기반) 데이터 항목 및/또는 어드레스 및/또는 제어 신호를 통해 메시지 다이제스트(message digest)를 계산하는 것에 의해 생성될 수 있다. 비밀 키는 메시지 다이제스트와 혼합될 의사-랜덤 시퀀스를 생성하는 시드(seed)로서 사용될 수 있다. 대안적으로, 메시지 다이제스트는 적절한 비밀 키로 암호화(encrypted)되어 시그너처를 생성할 수 있다.In another embodiment, the external device includes a secure memory device having a signature engine. A secure external device may share a secret key with the computing device, create and maintain a data signature, and send it to the computing device. The data signatures may be generated by computing a message digest via one or more (e.g., block-based) data items and / or address and / or control signals conveyed via the device interface. The secret key may be used as a seed to generate a pseudo-random sequence to be mixed with the message digest. Alternatively, the message digest may be encrypted with an appropriate secret key to generate a signature.

데이터 시그너처를 컴퓨팅 디바이스에 송신하는 대안적인 스케줄링은 배타적으로(즉, 시그너처가 생성되자마자), 주기적으로, 요청 시, 또는 병렬로 동작할 다수의 스케줄링 방법을 조합하는 것과 같은 임의의 다른 스케줄링 방법에 따라 송신하는 것을 포함한다. 컴퓨팅 디바이스는 메모리 디바이스로부터 데이터 및 각 시그너처를 수신하고 시그너처를 사용하여 데이터를 인증한다. 비-보안 외부 메모리 디바이스를 사용하는 실시예와 유사하게, 수신된 데이터는 처리 코어에 의해 실행되기 전에 또는 실행되는 것과 병렬로 캐시에 저장될 수 있고, 외부 디바이스로부터 데이터를 재-페치하는 것은 캐시 미스 이벤트 시 일어난다.Alternative scheduling for sending data signatures to the computing device may be performed exclusively (i.e., as soon as the signature is created), periodically, on demand, or any other scheduling method, such as combining multiple scheduling methods to operate in parallel . The computing device receives the data and each signature from the memory device and uses the signature to authenticate the data. Similar to embodiments that use non-secure external memory devices, the received data may be stored in the cache before or in parallel with the execution by the processing core, and re-fetching data from the external device may be stored in the cache Occurs when a miss event occurs.

시스템 설명System Description

도 1은 본 발명의 일 실시예에 따른 보안 컴퓨팅 시스템(20)을 도시한 개략 블록도이다. 도 1의 예에서, 보안 컴퓨팅 디바이스(24)는 보안 외부 디바이스(26) 및 비-보안 외부 디바이스(28)와 통신한다. 각 디바이스(26 및 28)는 데이터 항목으로 지칭되는 기본 유닛(대안적으로 데이터 블록으로 지칭될 수 있음)으로 데이터를 저장하는 각 메모리(32A 또는 32B)를 포함한다. 디바이스(28)에서 데이터 항목에 걸쳐 계산된 디지털 시그너처는 메모리(32B)에 저장된다. 보안 디바이스(26)는 메모리(32A)에서 데이터 항목에 걸쳐 계산된 시그너처(도 1에 미도시)를 유사하게 저장할 수 있다. 대안적으로 또는 추가적으로, 디바이스(26)는 후술되는 바와 같이, 컴퓨팅 디바이스(24)에 전달되는, 데이터, 어드레스 및/또는 제어 신호와 같은 신호를 통해 진행 중에(on the fly) 시그너처를 생성할 수 있다. 1 is a schematic block diagram illustrating a secure computing system 20 in accordance with one embodiment of the present invention. In the example of FIG. 1, secure computing device 24 communicates with secure external device 26 and non-secured external device 28. Each device 26 and 28 includes a respective memory 32A or 32B that stores data in a basic unit (alternatively referred to as a data block) referred to as a data item. The digital signatures calculated over the data items in the device 28 are stored in the memory 32B. The secure device 26 may similarly store the calculated signature (not shown in FIG. 1) across the data item in the memory 32A. Alternatively or additionally, the device 26 may generate a signature on the fly through a signal, such as data, address and / or control signals, communicated to the computing device 24, as described below. have.

이후 상세한 설명 및 청구범위에서, "데이터 항목"이라는 용어는 메모리 디바이스(예를 들어, 디바이스(26 또는 28))에 저장된 데이터 및/또는 보안 메모리 디바이스(예를 들어, 디바이스(26)) 및 컴퓨팅 디바이스(예를 들어, 디바이스(24)) 사이에 전달되는, 데이터, 어드레스, 및/또는 제어 신호를 지칭할 수 있다. 저장된 데이터 항목은, 예를 들어, 프로그램 명령 또는 데이터 워드를 포함할 수 있다. 추가적으로 또는 대안적으로 저장된 데이터 항목은 프로그램 명령 및/또는 데이터 워드의 그룹을 포함할 수 있다.In the following description and claims, the term "data item" refers to data stored in a memory device (e.g., device 26 or 28) and / or data stored in a secure memory device May refer to data, addresses, and / or control signals that are communicated between devices (e.g., device 24). The stored data items may include, for example, program instructions or data words. Additionally or alternatively stored data items may comprise a group of program instructions and / or data words.

컴퓨팅 디바이스(24)는 각 인터페이스(36A 또는 36B)를 통해 디바이스(26 또는 28)에 의해 송신된 데이터 항목을 처리할 수 있다. 디바이스(24)는 입력 브리지(44)를 통해 명령을 수신하고 각 프로그램을 실행한다.The computing device 24 may process data items transmitted by the device 26 or 28 via each interface 36A or 36B. The device 24 receives the command via the input bridge 44 and executes each program.

일부 실시예에서, 각 외부 디바이스(26 또는 28)는 각 메모리(36A 또는 36B)에서 하나 이상의 데이터 항목 및 하나 이상의 디지털 시그너처를 저장한다. 일부 실시예에서, 외부 디바이스(26 및 28)에서 시그너처는 미리-계산되고 저장된다. 시그너처는 데이터 항목의 전체 집합 또는 그 부분 집합에 걸쳐 계산될 수 있다. 예를 들어, 시그너처는 컴퓨터 프로그램의 서브루틴을 포함하는 데이터 항목의 그룹에 서명하도록 계산될 수 있다. 추가적으로 또는 대안적으로, 시그너처는 적절한 사이즈의 다수의 데이터 항목의 블록에 걸쳐 계산될 수 있다. 일부 실시예에서, 모든 데이터 항목은 단일 키를 사용하여 서명된다. 그러나, 대안적인 실시예에서, 데이터 항목의 부분 집합은 상이한 키를 사용하여 서명될 수 있다.In some embodiments, each external device 26 or 28 stores one or more data items and one or more digital signatures in each memory 36A or 36B. In some embodiments, the signatures at the external devices 26 and 28 are pre-computed and stored. Signatures can be computed over the entire set of data items or a subset thereof. For example, the signature may be computed to sign a group of data items containing subroutines of the computer program. Additionally or alternatively, the signature may be computed over a block of multiple data items of appropriate size. In some embodiments, all data items are signed using a single key. However, in an alternative embodiment, a subset of data items may be signed using a different key.

시그너처를 계산하는 키는 비휘발성 메모리(non-volatile memory: NVM), 한번 프로그래밍가능한(one time programmable: OTP) NVM, 전기 퓨즈 버닝(electric fuse burning), 또는 물리적으로 예측할 수 없는 함수(physical unpredicatable function: PUF, 물리적으로 복제될 수 없는 함수라고도 지칭됨)를 사용하여 (그러나 이들로 제한되지 않음) 이 기술 분야에 알려진 여러 수단에 의하여 컴퓨팅 디바이스(24)에서 및/또는 보안 외부 디바이스(26)에서 프로그래밍되거나 저장될 수 있다. 추가적으로, 보안 외부 디바이스(26)는 보안 환경에서 적절한 각 공유 키(42)로 디바이스(24 및 26) 각각을 프로그래밍하는 것에 의해 또는 이 기술 분야에 알려진 키 교환 방법을 적용하는 것에 의해 보안 컴퓨팅 디바이스(24)와 짝지어질 수 있다.The key to calculate the signature can be a non-volatile memory (NVM), a one time programmable (OTP) NVM, an electric fuse burning, or a physical unpredictable function (Also referred to as a PUF, a function that can not be physically replicated), at computing device 24 and / or in secure external device 26 by various means known in the art Programmed or stored. In addition, the secure external device 26 can be configured to securely communicate with the secure computing device (e. G., The secure computing device) by programming each of the devices 24 and 26 with each appropriate shared key 42 in a secure environment or by applying a key exchange method known in the art 24). ≪ / RTI >

디바이스(26)는 보안 디바이스(24)와 통신하는 동안 인터페이스(36A)를 통과하는 프로그램 명령, 데이터, 제어 신호, 및/또는 어드레스 신호에 걸쳐 시그너처를 (진행 중에) 생성할 수 있는 시그너처 엔진(40)을 더 포함한다. 대안적으로 또는 추가적으로, 시그너처 엔진(40)은 메모리(32A)에 저장된 데이터 항목에 걸쳐 하나 이상의 시그너처를 계산한다. 엔진(40)에 의해 생성된 시그너처는 메모리(32A)에 국부적으로 저장되고, 요청시 또는 임의의 다른 적절한 스케줄링 방법을 사용하여 컴퓨팅 디바이스(24)로 송신될 수 있다.The device 26 may be coupled to a signature engine 40 that may generate signatures (on the fly) over program instructions, data, control signals, and / or address signals that pass through the interface 36A while communicating with the secure device 24. [ ). Alternatively or additionally, the signature engine 40 computes one or more signatures over the data items stored in the memory 32A. The signature generated by the engine 40 may be stored locally in the memory 32A and transmitted to the computing device 24 upon request or using any other suitable scheduling method.

일부 실시예에서, 외부 디바이스(26 및 28)에 저장된 데이터 항목의 일부나 전부는 암호화된다. 이러한 실시예에서, 시그너처 엔진(40)은 암호화기(encrypting cipher)를 더 포함할 수 있고, 디바이스(24)는 복호화기(decrypting cipher)를 더 포함할 수 있다. 복호화기는 처리 코어(48)에 의하여 실행하기 전에 암호화된 데이터 항목을 복호화하는데 적절한 키를 구비한다(후술됨).In some embodiments, some or all of the data items stored in the external devices 26 and 28 are encrypted. In such an embodiment, the signature engine 40 may further comprise an encrypting cipher, and the device 24 may further comprise a decrypting cipher. The decryptor has a key (described below) that is appropriate for decrypting the encrypted data item before execution by the processing core 48.

입력 브리지(44)는 외부 디바이스(26 및 28)와 양방향 통신 인터페이스로 기능하고, 수신하는 데이터 항목을 처리 코어(48)에 전달한다. 처리 코어(48)는 일반적으로 보안 시스템(20)의 메인 CPU, 가능하게는 추가적인 프로세서, 및 버스 마스터(bus master)를 포함하여 코어의 내부 및 I/O 동작(activity)을 조정한다.The input bridge 44 functions as a bidirectional communication interface with the external devices 26 and 28 and communicates the receiving data item to the processing core 48. [ The processing core 48 generally coordinates the internal and I / O activity of the core, including the main CPU of the security system 20, possibly additional processors, and a bus master.

디바이스(24)에서 시그너처 엔진(56)은 수신된 데이터 항목(및/또는 다른 데이터, 어드레스, 및/또는 제어 신호)에 걸쳐 시그너처를 계산하여 데이터 항목의 진정성을 확인한다. 확인이 실패하면, 디바이스(24)는 비밀 정보의 누설이나 노출을 방지하는 적절한 조치를 취한다. 컴퓨팅 디바이스(24)의 구조와 기능은 도 2를 참조하여 아래에서 상세히 설명된다.At the device 24, the signature engine 56 calculates the signature across the received data item (and / or other data, address, and / or control signal) to verify the authenticity of the data item. If the verification fails, the device 24 takes appropriate measures to prevent leakage or exposure of confidential information. The structure and function of the computing device 24 is described in detail below with reference to FIG.

일부 실시예에서, 시그너처 엔진(56 또는 40)에 의해 시그너처를 계산하기 전에, 서명될 데이터는 사용시 시그너처 계산 구조(scheme)에 지정된 적절한 입력 사이즈에 맞는 길이로 패딩(padded)된다.In some embodiments, before computing the signature by the signature engine 56 or 40, the data to be signed is padded with a length that matches the appropriate input size specified in the signature calculation scheme in use.

도 2는 본 발명의 일 실시예에 따른 보안 컴퓨팅 시스템(20)의 상세를 도시한 개략 블록도이다. 도 2에서, 보안 컴퓨팅 디바이스(24)는 보안 시스템 입력(30)이라고 지칭되는 모듈로 표현되는 외부 디바이스와 통신한다. 보안 시스템 입력(30)은 예를 들어, 도 1의 외부 디바이스(26 또는 28), 메모리 디바이스, 또는 데이터 항목 및 각 시그너처의 임의의 다른 적절한 소스를 포함할 수 있다. 이하 상세한 설명에서, "보안 시스템 입력" 및 "외부 디바이스" 라는 용어는 상호 교환가능하게 사용될 수 있다.2 is a schematic block diagram illustrating details of a secure computing system 20 in accordance with one embodiment of the present invention. In FIG. 2, the secure computing device 24 communicates with an external device represented as a module, referred to as a security system input 30. The security system input 30 may include, for example, the external device 26 or 28 of FIG. 1, a memory device, or any other appropriate source of data items and each signature. In the following detailed description, the terms "security system input" and "external device" may be used interchangeably.

디바이스(24)는 외부 디바이스의 메모리에 저장된 데이터에 액세스하기 위하여 입력 브리지(44)를 통해 라우팅된 제어 및 어드레스 지정 신호를 생성한다. 처리 코어(48)는 입력 브리지(44)를 통해 라우팅된 제어 및 어드레스 지정 신호를 생성하여 외부 디바이스로부터 프로그램 명령과 같은 데이터 항목을 판독한다. 입력 브리지(44)는 데이터 항목을 수신하고, 실행을 위해 처리 코어(48)에 전달한다. 일부 실시예에서, 데이터 항목은 처리 코어에 전달하기 전에 (또는 전달하는 것과 병렬로) 국부 캐시 메모리(50)에 캐싱된다. The device 24 generates control and addressing signals routed through the input bridge 44 to access data stored in the memory of the external device. Processing core 48 generates control and addressing signals routed through input bridge 44 to read data items, such as program instructions, from external devices. The input bridge 44 receives the data item and forwards it to the processing core 48 for execution. In some embodiments, the data items are cached in the local cache memory 50 before (or in parallel with) the delivery to the processing core.

수신된 데이터 항목은 또한 인증 제어 로직(52)에 및 시그너처 엔진(56)에 입력된다. 로직(52) 및 엔진(56)은 코어(48)와 동시에 및 코어와 비동기적으로 동작할 수 있다. 인증 로직(52)은 입력 브리지(44)를 통해 외부 디바이스로 라우팅된 적절한 제어 및 어드레스 지정 신호를 생성하는 것에 의해 외부 디바이스에 저장되거나 생성된 데이터 항목의 오리지널 시그너처를 추가적으로 판독한다. 대안적으로, 이들 시그너처는 데이터와 함께 자동적으로 입력(30)에 의해 입력 브리지(44)로 운반될 수 있다. 수신된 데이터 항목 및 각 키를 사용하여, 엔진(56)은 데이터 항목의 시그너처를 계산하고 이 시그너처를 확인을 위해 인증 로직(52)에 송신한다. 인증 로직(52)은 엔진(56)에 의해 계산된 시그너처와 오리지널 시그너처 사이에 매칭이 있는지를 찾는 것에 의해 수신된 데이터 항목의 진정성과 무결성을 확인한다. 일부 실시예에서, 시그너처 엔진(56)은 다수의 시그너처(예를 들어, 데이터 블록에서 다수의 데이터 항목의 시그너처)를 계산하고 이 시그너처를 시그너처 버퍼(58)에 저장한다. 이러한 실시예에서, 인증 로직(52)은 입력 브리지(44)에서 후속 데이터 항목(또는 블록)을 입력하기 전에 버퍼에 계류 중인 모든 시그너처를 확인할 수 있다. 시그너처를 확인하는 대안적인 방법은 아래에서 더 설명된다.The received data items are also input to the authentication control logic 52 and to the signature engine 56. The logic 52 and the engine 56 may operate concurrently with the core 48 and asynchronously with the core. The authentication logic 52 additionally reads the original signature of the data item stored or generated in the external device by generating an appropriate control and addressing signal routed through the input bridge 44 to the external device. Alternatively, these signatures can be conveyed automatically to the input bridge 44 by the input 30 along with the data. Using the received data items and each key, engine 56 computes the signature of the data item and sends this signature to authentication logic 52 for verification. The authentication logic 52 verifies the authenticity and integrity of the received data item by looking for a match between the signature calculated by the engine 56 and the original signature. In some embodiments, the signature engine 56 computes a plurality of signatures (e.g., the signatures of a plurality of data items in a data block) and stores the signatures in the signature buffer 58. In this embodiment, the authentication logic 52 can identify all pending pending signatures in the buffer before inputting the subsequent data item (or block) at the input bridge 44. Alternative methods of identifying signatures are described further below.

출력 브리지(60)는 처리 코어(48)를, 출력 채널이라고도 지칭되는 보안 시스템 출력(64)에 연결한다. 보안 시스템 출력(64)은, 처리 코어(48)에 의한 기록 또는 판독 동작이 보안 정보를 직접 또는 간접으로 노출시킬 수 있는 임의의 어드레스 공간, 및 출력 브리지(60)로부터 신호를 수신할 수 있는 임의의 다른 종류의 수신기를 포함한다. 디바이스(24)는 보안 시스템 출력(64)에 대응하는 어드레스 공간을 정적으로 구성할 수 있다. 추가적으로 또는 대안적으로, 어드레스 공간 또는 그 일부는 보안 시스템(20)의 상태와 구성의 변동에 따라 동적으로 변할 수 있다.Output bridge 60 connects processing core 48 to a security system output 64, also referred to as an output channel. The security system output 64 may include any address space in which write or read operations by the processing core 48 may expose security information directly or indirectly and any arbitrary address space that may receive signals from the output bridge 60. [ And other types of receivers. The device 24 may statically configure an address space corresponding to the security system output 64. Additionally or alternatively, the address space, or a portion thereof, can be dynamically changed in accordance with variations in the state and configuration of the security system 20. [

이하 상세한 설명 및 청구범위에서, 실행시 출력 브리지(60)에 (출력(64)에 의해 수신되거나 센싱될 수 있는) 신호를 생성할 수 있는 데이터 항목 또는 프로그램 명령은 출력 명령이라고 지칭된다. 일부 실시예에서, 처리 코어(48)는 출력 명령을 실행할 때 OUT REQUEST 신호를 인증 로직(52)에 신호 전달한다. 부수적으로, 인에이블될 때, 출력 명령에 대한 출력 브리지(60)의 응답은 신호를 출력하는 것이라고 지칭된다. 실행시 보안 정보를 보안 시스템 출력(64)에 노출시킬 수 있는 출력 명령의 예로는,In the following description and claims, a data item or program instruction that is capable of generating a signal (which may be received or sensed by output 64) to an output bridge 60 at run time is referred to as an output instruction. In some embodiments, the processing core 48 signals the OUT REQUEST signal to the authentication logic 52 when executing the output command. Incidentally, when enabled, the response of the output bridge 60 to the output command is referred to as outputting a signal. Examples of output commands that may expose security information at runtime to the security system output 64 include,

Figure 112014024534928-pat00001
비휘발성 메모리(NVM)에 및/또는 한번 프로그래밍가능한(OTP) 메모리에 기록하는 것.
Figure 112014024534928-pat00001
Writing to non-volatile memory (NVM) and / or once-programmable (OTP) memory.

Figure 112014024534928-pat00002
시스템 내 다른 칩, 메모리 디바이스, 또는 일반 목적 I/O(GPIO)와 같은 외부 디바이스에 신호를 기록하는 것.
Figure 112014024534928-pat00002
Writing signals to other chips in a system, memory devices, or external devices such as general purpose I / O (GPIO).

Figure 112014024534928-pat00003
로크-비트(lock-bit), 테스트 모드, 클록 구성, 및 리셋 레지스터(register)에 액세스하는 것.
Figure 112014024534928-pat00003
Access to lock-bit, test mode, clock configuration, and reset register.

Figure 112014024534928-pat00004
보안 가속기 모듈(즉, 전력 분석 또는 EMI(electro-magnetic interference) 분석과 같은 측면 채널 공격 기술을 사용하여 공격자에 비밀 정보 및 키를 노출시킬 수 있는 컴퓨팅 AES, SHA1, SHA256, RSA, 또는 ECC 값과 같은 보안 기능을 수행하는 모듈)의 제어 및/또는 구성 레지스터(register)에 액세스하는 것을 포함한다.
Figure 112014024534928-pat00004
SHA1, SHA256, RSA, or ECC values that can expose confidential information and keys to an attacker using side-channel attack techniques such as security accelerator modules (ie, power analysis or electro-magnetic interference (E.g., a module that performs the same security functions) and / or a configuration register.

입력 브리지(44)는 인증 제어 로직(52)과 처리 코어(48) 사이에 중재자(arbitrator)로 기능한다. 디폴트로, 처리 코어(48)는 더 높은 우선순위를 취하여 외부 디바이스(30)로부터 데이터 항목을 페치한다. 그러나, 요청 시에는 (예를 들어, 아래 도 3에 도시된 바와 같이 인증 상태에 있을 때에는), 인증 로직(52)은 입력 브리지(44)에서 STALL CORE INPUT 신호를 작동시키는 것에 의해 후속 데이터 항목, 또는 데이터 항목의 블록을 페치하는 것을 스톨(stall)하고, 입력 브리지(44)를 인수받아 외부에서 저장되거나 생성된 시그너처를 판독할 수 있다. 일부 실시예에서, 후속 데이터 블록의 입력은 이전에 페치된 데이터 블록에 있는 모든 데이터 항목이 인증될 때까지 금지된다. 추가적으로, 인증 로직(52)은 출력 브리지(60)를 스톨하여 STALL OUTPUT 신호를 작동시키는 것에 의해 보안 출력(64)에 액세스하는 것을 금지시킬 수 있다. 디바이스(24)의 기능, 및 구체적으로 보안 데이터의 노출을 방지하는데 이 "STALL" 기능을 사용하는 것은, 아래 도 3을 참조하여 더 설명된다.The input bridge 44 functions as an arbitrator between the authentication control logic 52 and the processing core 48. By default, the processing core 48 takes a higher priority and fetches data items from the external device 30. However, upon request (e.g., when in the authentication state, as shown in FIG. 3 below), the authentication logic 52 activates the STALL CORE INPUT signal at the input bridge 44, Or stall the fetching of a block of data items and read the signatures stored or generated externally in response to the input bridge 44. [ In some embodiments, the input of subsequent data blocks is prohibited until all data items in a previously fetched data block are authenticated. Additionally, the authorization logic 52 may inhibit access to the secure output 64 by stalling the output bridge 60 and activating the STALL OUTPUT signal. The use of this "STALL" function to prevent the functioning of the device 24, and specifically the exposure of security data, is further described below with reference to FIG.

전술된 시그너처 확인 기술이 시그너처 엔진(56)에 의해 연산된 시그너처를 입력 브리지(44)를 통해 수신된 시그너처와 비교하는 것인 반면, 대안적인 실시예에서 시그너처 확인은 해쉬 메시지 다이제스트를 비교하는 것에 기초할 수 있다. 시그너처를 계산하는 알고리즘은 때때로 해쉬 및 암호(encryption) 함수를 이용한다. While the signature verification technique described above compares the signature computed by the signature engine 56 with the signature received via the input bridge 44, the signature verification in an alternative embodiment is based on comparing the hash message digest can do. The algorithm for calculating signatures sometimes uses hashing and encryption functions.

컴퓨팅 디바이스(24)가 보안 디바이스(26)와 통신하는 예시적인 실시예에서, 특정 데이터에 대응하는 시그너처는 해쉬 함수를 사용하여 이 데이터에 걸쳐 계산된 메시지 다이제스트를 포함한다. 메시지 다이제스트는 인터페이스(36A)를 통해 전달된 하나 이상의 데이터 항목 및/또는 데이터, 어드레스 및/또는 제어 신호에 걸쳐 계산될 수 있다. 메시지 다이제스트는 진행 중에 계산되어 디바이스(24 및 26)에 의해 최신으로 유지될 수 있다. 보안 외부 디바이스(26)는 메시지 다이제스트 시그너처를 스케줄링하고 배타적으로, 주기적으로, 또는 보안 컴퓨팅 디바이스(24)에 의해 야기된 요청 시 보안 컴퓨팅 디바이스(24)에 송신할 수 있다. 업데이트된 메시지 다이제스트를 수신할 때, 인증 제어 로직(52)은 디바이스(26)에 의해 계산된 메시지 다이제스트를 수신된 데이터에 걸쳐 시그너처 엔진(56)에 의해 내부에서 계산된 메시지 다이제스트와 비교하고 서명된 데이터의 진정성을 검증할 수 있다. 디바이스(24 및 26)들 사이에 공유된 비밀 키(42)는, 메시지 다이제스트 데이터와 혼합될 의사-랜덤 시퀀스를 생성하는 시드로 사용될 수 있다.In an exemplary embodiment, in which the computing device 24 communicates with the secure device 26, the signature corresponding to the particular data includes a message digest computed over this data using a hash function. The message digest may be computed over one or more data items and / or data, addresses, and / or control signals conveyed via interface 36A. The message digest may be calculated in the course of the process and kept up-to-date by the devices 24 and 26. The secure external device 26 may schedule the message digest signature and transmit it exclusively, periodically, or on demand to the secure computing device 24 upon request by the secure computing device 24. Upon receiving the updated message digest, the authentication control logic 52 compares the message digest computed by the device 26 with the message digest computed internally by the signature engine 56 over the received data, The authenticity of the data can be verified. The secret key 42 shared between the devices 24 and 26 may be used as a seed to generate a pseudo-random sequence to be mixed with the message digest data.

대안적인 실시예에서, 비밀 키에 종속하는 시퀀스와 메시지 다이제스트를 혼합하는 대신에, 암호 알고리즘은 비밀 키를 사용하여 메시지 다이제스트를 암호화하여 시그너처를 생성한다. 수신자(예를 들어, 보안 컴퓨팅 디바이스(24))는 데이터 및 시그너처를 수신하고 각 키를 사용하여 시그너처를 복호화하여 오리지널 비암호화된 메시지 다이제스트를 복구하고, 메시지 다이제스트 그 자체를 수신된 메시지에 걸쳐 재계산한다. 오리지널 및 재계산된 메시지 다이제스트가 매칭하면, 데이터는 진정한 것으로 가정될 수 있다. 해쉬 및 암호 함수의 예로는, 예를 들어, 보안 해쉬 알고리즘(SHA) SHA-1, 및 개선된 암호 알고리즘(AES)을 포함한다.In an alternative embodiment, instead of blending a message digest with a sequence dependent on a secret key, the encryption algorithm encrypts the message digest using the secret key to generate a signature. The recipient (e. G., Secure computing device 24) receives the data and signature, decrypts the signature using each key to recover the original unencrypted message digest, and sends the message digest itself over the received message . If the original and recalculated message digests match, then the data can be assumed to be real. Examples of hash and cryptographic functions include, for example, Secure Hash Algorithm (SHA) SHA-1, and Advanced Encryption Algorithm (AES).

도 1 및 도 2에서 컴퓨팅 디바이스(24) 및 외부 디바이스(26 및 28)의 구성은 개념을 명확히 하기 위하여 선택된 순전히 예시적인 구성이다. 대안적인 실시예에서, 임의의 다른 적절한 구성이 사용될 수 있다. 컴퓨팅 디바이스(24) 및 외부 디바이스(26 및 28)의 상이한 요소는 ASIC 회로(Application-Specific Integrated Circuit) 또는 FPGA(Field-Programmable Gate Array)에서와 같이 임의의 적절한 하드웨어를 사용하여 구현될 수 있다. 일부 실시예에서, 컴퓨팅 디바이스 및 외부 디바이스의 일부 요소는 소프트웨어를 사용하여, 또는 하드웨어 및 소프트웨어 요소의 조합을 사용하여 구현될 수 있다. 예를 들어, 본 실시예에서, 시그너처 엔진(56) 및 인증 로직(52)은 전용 하드웨어 모듈로 구현될 수 있다. 다른 예로서, 시그너처 계산 및 암호/복호 기능은 시그너처 엔진(56 및 40) 내에서 하드웨어로, 처리 코어(48)에 의해 실행될 수 있는 소프트웨어로, 또는 하드웨어 및 소프트웨어의 조합으로 구현될 수 있다.The configurations of computing device 24 and external devices 26 and 28 in Figures 1 and 2 are purely exemplary configurations selected to clarify concepts. In alternative embodiments, any other suitable configuration may be used. The different elements of computing device 24 and external devices 26 and 28 may be implemented using any suitable hardware, such as in an ASIC circuit (Application-Specific Integrated Circuit) or FPGA (Field-Programmable Gate Array). In some embodiments, some elements of the computing device and external device may be implemented using software, or using a combination of hardware and software elements. For example, in the present embodiment, the signature engine 56 and the authentication logic 52 may be implemented as dedicated hardware modules. As another example, signature computation and encryption / decryption functions may be implemented in hardware within signature engines 56 and 40, software that may be executed by processing core 48, or a combination of hardware and software.

일반적으로, 컴퓨팅 디바이스(24) 내 처리 코어(48)는 본 명세서에 설명된 기능을 수행하도록 소프트웨어로 프로그래밍된 적어도 하나의 일반-목적 컴퓨터 프로세서를 포함한다. 이 소프트웨어는 예를 들어, 네트워크를 통해, 전자적 형태로 컴퓨팅 디바이스로 다운로딩될 수 있거나 또는 이 소프트웨어는 대안적으로 또는 추가적으로, 자기, 광, 또는 전자 메모리와 같은 비-일시적인 유형적 매체에 제공되거나 및/또는 저장될 수 있다.In general, the processing core 48 in the computing device 24 includes at least one general purpose computer processor programmed with software to perform the functions described herein. The software may be downloaded to the computing device in electronic form, for example over a network, or the software may alternatively or additionally be provided to non-transitory tangible media such as magnetic, optical, or electronic memory and / / RTI >

도 3은 본 발명의 일 실시예에 따른 보안 상태-기계를 도시하는 도면이다. 디바이스(24)의 일부 보안 측면 및 동작 모드는 상태-기계의 3개의 상태 및 상태들 중에서 한정된 전이 규칙으로부터 유도된다. 보안 상태(80)에서, 동시에 실행되는 데이터 항목 또는 명령, 및 입력 브리지(44)를 통해 수신된 모든 앞서 실행된 데이터 항목은, 인증 로직(52)에 의해 진정한 것으로 이미 확인된 것이다. 보안 상태(80)는 디바이스(24)가 보안 시스템 출력(64)에 액세스하는 것이 허용된 (3개의 상태 중) 유일한 상태이다. 상태(80)에 있는 동안, 디바이스(24)는 입력 브리지(44)를 통해 데이터 항목을 수신하도록 허용된다. 데이터 항목을 수신할 때, 상태-기계는 비보안 상태(84)로 전이한다.3 is a diagram illustrating a secure state machine in accordance with one embodiment of the present invention. Some security aspects and modes of operation of the device 24 are derived from the limited transition rule among the three states and states of the state-machine. In the secure state 80, concurrently executed data items or commands, and all previously executed data items received via the input bridge 44, have already been confirmed as authentic by the authentication logic 52. The security state 80 is the only state (among the three states) in which the device 24 is allowed to access the security system output 64. While in state 80, device 24 is allowed to receive data items via input bridge 44. Upon receiving the data item, the state-machine transitions to the non-secure state 84.

비보안 상태(84)에 있는 동안, 임의의 새로이 수신된 데이터 항목의 적어도 일부의 진정성은 아직 확인되지 않아서, 디바이스(24)는 보안 시스템 출력(64)에 액세스하는 것이 허용되지 않는다. 처리 코어(48)가 출력 명령을 만나는 경우, 출력 채널에 실제 액세스하는 것은 출력 명령이 인증될 때까지 지연된다(즉, 출력 브리지(60)에 의한 신호의 출력이 지연된다). 그러나, 비보안 상태(84)에 있는 동안, 처리 코어(48)는 중립 데이터 항목이 아직 인증되지 않은 경우에도 보안 시스템 출력(64)에 액세스를 요청하지 않는 중립 데이터 항목을 계속 처리할 수 있다. While in the non-secure state 84, the authenticity of at least a portion of any newly received data item has not yet been ascertained, so that the device 24 is not allowed to access the secure system output 64. When the processing core 48 encounters an output command, the actual access to the output channel is delayed (i.e., the output of the signal by the output bridge 60 is delayed) until the output command is authenticated. However, while in the non-secure state 84, the processing core 48 may continue to process the neutral data item that does not request access to the security system output 64, even if the neutral data item has not yet been authenticated.

비보안 상태(84)로부터 인증 상태(88)로 전이하는 것은 인증 로직(52)이 AUTHENTICATION REQUEST 신호를 수신할 때 일어난다. 인증 상태(88)에 있는 동안, 인증 로직(52)은 입력 브리지(44)에서 데이터 항목을 수신하는 것을 스톨(stall)시키고 입력 브리지를 인수받아 외부 디바이스(30)로부터 오리지널 시그너처를 판독한다. 인증 로직(52)은 오리지널 시그너처를 시그너처 엔진(56)에 의해 계산된 시그너처와 비교하여 데이터를 인증한다. 전술된 바와 같이, 인증 로직(52)은 처리 코어(48)가 (아마도 다른) 데이터 항목을 실행하고 있는 동안 데이터 항목을 비동기적으로 인증할 수 있다.Transitioning from the non-secure state 84 to the authentication state 88 occurs when the authentication logic 52 receives the AUTHENTICATION REQUEST signal. While in the authentication state 88, the authentication logic 52 stalls receiving the data item at the input bridge 44 and takes the input bridge and reads the original signature from the external device 30. [ The authentication logic 52 compares the original signature with the signature computed by the signature engine 56 to authenticate the data. As described above, the authentication logic 52 may asynchronously authenticate the data item while the processing core 48 is executing the (possibly other) data item.

여러 트리거들이 AUTHENTICATION REQUEST 신호를 생성하여 상태-기계를 인증 상태(88)로 전이시킬 수 있다. 일부 예시적인 트리거들이 아래에 주어진다:Multiple triggers may generate an AUTHENTICATION REQUEST signal to transition the state machine to the authentication state 88. [ Some exemplary triggers are given below:

Figure 112014024534928-pat00005
처리 코어(48)가 보안 시스템 출력(64)에 액세스를 하려고 시도하고 디바이스가 보안 상태(80)에 있지 않을 때 OUT REQUEST 신호를 작동시키는 것.
Figure 112014024534928-pat00005
The processing core 48 attempts to access the security system output 64 and activates the OUT REQUEST signal when the device is not in the secure state 80. [

OUT REQUEST 신호를 주기적으로 작동시키거나, 또는 마지막으로 방문한 인증 상태(88) 이후 미리 한정된 타임아웃 후에 작동시키는 것. To operate the OUT REQUEST signal periodically, or to operate after a predefined timeout since the last visited authentication state (88).

Figure 112014024534928-pat00006
검증을 위해 계류 중인 시그너처에 할당된 메모리 공간이 가득 차 있을 때. 다수의 계류 중인 시그너처를 검증하는 비보안 메모리를 갖는 예시적인 실시예는 아래에 더 설명된다.
Figure 112014024534928-pat00006
When the memory space allocated to the pending signatures is full for verification. An exemplary embodiment with a non-secure memory verifying a number of pending signatures is further described below.

Figure 112014024534928-pat00007
입력 브리지(44)가 전달 데이터 항목으로 차 있지 않아서, 인증 로직(52)이 입력 브리지를 통해 보안 입력 시스템 입력(30)에 저장된 시그너처를 검색할 수 있을 때.
Figure 112014024534928-pat00007
When the input bridge 44 is not filled with the forwarded data item so that the authentication logic 52 can retrieve the signature stored in the secure input system input 30 via the input bridge.

데이터 항목이 상태(88)에서 진정한 것으로 확인될 때, 상태-기계는 보안 상태(80)로 다시 전이한다. 그렇지 않은 경우에는, 인증은 실패한 것이고 인증 로직(52)은 알람 신호를 생성한다.When the data item is found to be true in state 88, the state-machine transitions back to secure state 80. Otherwise, the authentication is unsuccessful and the authentication logic 52 generates an alarm signal.

디바이스(24)는 알람 신호에 응답해서 여러 조치를 취하여 높은 보안 레벨을 유지할 수 있다. 디바이스(24)가 알람 신호에 응답해서 취할 수 있는 예시적인 동작은,The device 24 can take several actions in response to the alarm signal to maintain a high security level. Exemplary operations that device 24 may take in response to an alarm signal include,

Figure 112014024534928-pat00008
보안 환경을 리셋하는 것.
Figure 112014024534928-pat00008
Resetting the security environment.

Figure 112014024534928-pat00009
비밀 키와 같은 보안 데이터를 소거하는 것.
Figure 112014024534928-pat00009
Clearing security data such as secret keys.

Figure 112014024534928-pat00010
디바이스(24)가 데이터 항목의 처리/인증과 같은 모든 동작을 수행하는 것을 영구적으로 종료시켜, 입력 및 출력 브리지를 추가적으로 스톨시키는 것.
Figure 112014024534928-pat00010
To permanently terminate the device 24 from performing all operations, such as processing / authentication of data items, and further stowing the input and output bridges.

Figure 112014024534928-pat00011
응답 레벨은 인증 실패 이벤트의 수에 종속할 수 있다. 예를 들어, 보안 디바이스(24)는 인증 실패 이벤트의 미리 한정된 수를 인식한 후에 동작을 재시작하고, 추가적인 인증 실패가 발생하는 경우, 예를 들어, 모든 동작을 종료하거나 보안 정보를 삭제하는 것에 의해 보다 공격적으로 응답할 수 있다.
Figure 112014024534928-pat00011
The response level may depend on the number of authentication failure events. For example, the secure device 24 may restart the operation after recognizing a predefined number of authentication failure events, and if an additional authentication failure occurs, e.g., by terminating all operations or deleting the security information You can respond more aggressively.

이제 보안 시스템(20)의 예시적인 실시예를 설명하며, 여기서 외부 디바이스는 기존 비휘발성 저장 디바이스와 같은 비보안 메모리 디바이스(28)를 포함한다. 본 예에서, 메모리 디바이스는 보안 컴퓨팅 디바이스(24)에 의해 실행되는 컴퓨터 프로그램 명령(및 아마도 관련된 데이터)을 포함하는 데이터 항목을 저장한다. 디바이스(28)는 시그너처를 저장하기 위해 저장 용량 중 임의의 적절한 공유 부분을 할당할 수 있다. 예를 들어, 저장 용량의 75%는 유저 데이터에 사용될 수 있고 25%는 시그너처를 저장하는데 사용될 수 있다. 시그너처는 (메모리 디바이스 외부에서) 데이터 항목의 블록에 걸쳐 계산될 수 있다. 예를 들어, 각 256-비트 메모리 블록은 64-비트 시그너처로 서명될 수 있다.Now, an illustrative embodiment of the security system 20 is described, wherein the external device includes a non-secure memory device 28, such as a conventional non-volatile storage device. In this example, the memory device stores data items including computer program instructions (and possibly related data) that are executed by the secure computing device 24. [ The device 28 may allocate any suitable share portion of the storage capacity to store the signature. For example, 75% of storage capacity can be used for user data and 25% can be used for storing signatures. Signatures can be computed across blocks of data items (outside the memory device). For example, each 256-bit memory block may be signed with a 64-bit signature.

이 예에서 보안 디바이스(24)는 256 비트의 캐시 라인 사이즈를 가지는 캐시 메모리(50)를 구비하는 것으로 가정한다. 입력 브리지(44)를 통해 판독된 데이터 항목은 처리 코어(48)에 의해 처리하기 위해 전달되기 전에 또는 전달하는 것과 병렬로 캐시에 저장된다. 캐시 미스 이벤트 시, 컴퓨팅 디바이스(24)는 새로운 데이터 항목을 캐시에 페치한다. 처리 코어(48)에 의해 프로그램 명령을 실행하고 각 256-비트 블록에 대해 시그너처 엔진(56)에 의해 시그너처를 계산하는 것은 동시에 수행될 수 있다. 디바이스(24)는 시그너처 버퍼(58)에서 다수의 계산된 시그너처를 저장하여, 진정성 검증을 실제로 수행하기 전에 다수의 데이터 페치를 수행할 수 있다. AUTHENTICATION REQUEST 시, 처리 코어(48)는 중지되고 인증 로직(52)은 외부 메모리(28)로부터 각 오리지널 시그너처를 판독하고 오리지널 시그너처를 계산된 시그너처와 비교한다. 모든 계류 중인 계산된 시그너처가 검증된 후, 처리 코어(48)가 실행을 재개한다.In this example, it is assumed that the secure device 24 has a cache memory 50 having a cache line size of 256 bits. The data items read via the input bridge 44 are stored in the cache before or in parallel with the transfer for processing by the processing core 48. [ At the cache miss event, the computing device 24 fetches the new data item into the cache. Executing program instructions by the processing core 48 and computing the signature by the signature engine 56 for each 256-bit block may be performed concurrently. The device 24 may store a plurality of the calculated signatures in the signature buffer 58 to perform a number of data fetches before actually performing the authenticity verification. At the AUTHENTICATION REQUEST, the processing core 48 is stopped and the authentication logic 52 reads each original signature from the external memory 28 and compares the original signature with the computed signature. After all pending computed signatures have been verified, processing core 48 resumes execution.

전술된 실시예의 구성은 예시적인 구성이고, 입력 및 메모리 요소의 임의의 다른 적절한 구성이 대안적으로 사용될 수 있다. 예를 들어, 다른 데이터 블록 사이즈 및 시그너처 사이즈가 적용될 수 있다. 다른 예로서, 임의의 적절한 시그너처 버퍼 사이즈가 사용될 수 있다. 예시적인 실시예에서, 32-비트 시그너처는 128-비트 데이터 블록에 걸쳐 계산된다. 데이터 블록은 128-비트 캐시 라인을 가지는 캐시 메모리에서 캐싱되고, 최대 5개의 비-확인된 시그너처가 160-비트 시그너처 버퍼에 저장될 수 있다.The configuration of the above-described embodiment is an exemplary configuration, and any other suitable configuration of the input and memory elements may alternatively be used. For example, different data block sizes and signature sizes may be applied. As another example, any suitable signature buffer size may be used. In the exemplary embodiment, a 32-bit signature is computed over a 128-bit data block. The data block may be cached in a cache memory having 128-bit cache lines, and up to five non-identified signatures may be stored in the 160-bit signature buffer.

도 3을 참조하여 설명된 상태-기계의 구성은 본 발명자가 구현하기에 적절한 것으로 발견한 예시적인 구성이다. 대안적인 실시예에서, 임의의 다른 적절한 개수의 상태 및 이들 상태 사이에 임의의 적절한 전이 규칙이 사용될 수 있다.The configuration of the state-machine described with reference to Figure 3 is an exemplary configuration that the inventor has found suitable for implementation. In alternative embodiments, any other suitable number of states and any appropriate transition rule between these states may be used.

도 4는 본 발명의 일 실시예에 따라 보안 컴퓨팅 디바이스(24)에서 구현될 수 있는 인증하는 방법을 도시한 개략 흐름도이다. 본 방법은 디바이스(24)가 코드 수신 단계(100)에서 처리 코어(48)에 의해 실행하기 위한 컴퓨터 프로그램 명령을 수신하는 것으로 시작한다. 입력 브리지(44)를 통해 명령을 수신할 때, 디바이스(24)는 비보안 상태(84)로 전이한다. 디바이스(24)는 요청 체크 단계(104)에서 인증 요청이 계류 중인지 여부를 체크한다. 단계(104)에서 인증이 요구되지 않는 경우, 처리 코어(48)는 실행 단계(108)에서 수신된 프로그램 명령을 실행한다. 그렇지 않은 경우, 디바이스(24)는 인증 단계(116)로 진행한다(아래에 설명됨).4 is a schematic flow diagram illustrating a method of authentication that may be implemented in secure computing device 24 in accordance with one embodiment of the present invention. The method begins with the device 24 receiving a computer program instruction for execution by the processing core 48 in the code receiving step 100. [ Upon receiving an instruction via the input bridge 44, the device 24 transitions to the non-secure state 84. The device 24 checks whether the authentication request is pending at the request check step 104. [ If authentication is not required at step 104, processing core 48 executes the received program command at execution step 108. [ Otherwise, the device 24 proceeds to the authentication step 116 (described below).

명령의 실행이 수행되는 동안, 디바이스(24)는 처리 코어(48)가 명령 체크 단계(112)에서 중립 명령 또는 보안 시스템 출력(64)에 액세스를 요구하는 명령을 동시에 실행하고 있는지 여부를 체크한다. 처리 코어(48)가 중립 명령을 실행하고 있는 한, 디바이스(24)는 단계(104)로 다시 루프 수행된다. 그렇지 않은 경우, 처리 코어(48)는 아직 인증되지 않은 출력 명령을 실행하는 것에 의해 보안 시스템 출력(64)에 액세스를 시도하고 있는 것으로 볼 수 있다. 디바이스(24)는 그리하여 인증 단계(116)로 진행하고, 여기서 디바이스(24)는 인증 상태(88)로 전이한다. 이 상태에서, 인증 제어 로직(52)은 처리 코어(48)의 실행을 중지하고, STALL OUTPUT 신호를 작동시키는 것에 의해 출력 브리지(60)를 금지시키고, 전술된 바와 같이 계산된 시그너처를 오리지널 시그너처와 비교하는 것에 의해 인증 확인을 수행한다.While the execution of the command is being performed, the device 24 checks whether the processing core 48 is simultaneously executing a command requesting access to the neutral command or the security system output 64 in the command check step 112 . Device 24 is looped back to step 104 as long as processing core 48 is executing a neutral command. Otherwise, the processing core 48 may be seen as attempting to access the security system output 64 by executing an unauthenticated output command. The device 24 thus proceeds to the authentication step 116, where the device 24 transitions to the authentication state 88. [ In this state, the authentication control logic 52 stops execution of the processing core 48, inhibits the output bridge 60 by activating the STALL OUTPUT signal, and transmits the calculated signature as described above to the original signature The authentication confirmation is performed by comparing.

인증 검증 단계(120)에서, 디바이스(24)는 시그너처 매칭이 단계(116)에서 발견되었는지 여부를 체크한다. 시그너처들이 매칭한 경우, 디바이스(24)는 보안 상태 전이 단계(124)에서 보안 상태(80)로 전이하고, 처리 코어(48)는 실행을 재개한다. 보안 상태(80)에 있는 동안, 디바이스(24)는 외부 메모리로부터 프로그램 명령을 페치하여, 보안 시스템 출력(64)에 안전하게 액세스하는 것이 허용된다. 단계(120)에서 인증이 실패하면, 인증 로직(52)은 알람(alert) 단계(132)에서 알람 신호를 생성하고, 단계(100)로 다시 루프 수행하여 추가적인 프로그램 명령을 페치한다. 디바이스(24)는 전술된 바와 같이 여러 방식으로 알람 신호에 응답할 수 있다.In the authentication verification step 120, the device 24 checks whether signature matching has been found in step 116. [ If the signatures match, the device 24 transitions from the secure state transition step 124 to the secure state 80, and the processing core 48 resumes execution. While in security state 80, device 24 is allowed to fetch program instructions from external memory and securely access security system output 64. [ If authentication fails at step 120, the authentication logic 52 generates an alarm signal at an alert step 132 and loops back to step 100 to fetch additional program instructions. The device 24 may respond to the alarm signal in a number of ways, as described above.

디바이스(24)는 실행 체크 단계(128)에서 모든 페치된 명령의 실행이 완료되었는지 여부를 체크한다. 실행이 완료되었다면, 디바이스(24)는 단계(100)로 다시 루프 수행하여 후속 프로그램 명령을 페치한다. 그렇지 않은 경우, 디바이스(24)는 단계(104)로 다시 루프 수행하여 인증 요청이 계류 중인지 여부를 체크한다.The device 24 checks whether the execution of all the fetched instructions is completed in the execution check step 128. [ If execution is complete, the device 24 loops back to step 100 to fetch the subsequent program instructions. Otherwise, the device 24 loops back to step 104 to check whether the authentication request is pending.

도 4의 방법은 본 명세서에서 예로서 도시되고 설명된 것이고, 본 방법의 목적을 달성하는 대안적인 방법은 본 발명의 범위 내에 있다. 예를 들어, 단계(116)에서 처리 코어를 중지하는 대신에, 코어는 중립 명령을 계속 실행하거나 및/또는 출력 명령이 인증될 때까지 보안 시스템 출력(64)에 실제 액세스를 지연시킬 수도 있다.The method of FIG. 4 is illustrated and described herein by way of example, and alternative methods of achieving the objectives of the method are within the scope of the present invention. For example, instead of stopping the processing core at step 116, the core may continue to execute the neutral command and / or delay the actual access to the security system output 64 until the output command is authenticated.

본 명세서에 설명된 실시예는 메모리로부터 판독된 데이터의 인증을 주로 처리하는 것이지만, 본 명세서에 설명된 방법 및 시스템은 컴퓨팅 디바이스가 민감한 정보를 허가 없이 출력하지 못하게 하는 다른 응용에서 사용될 수 있다.While the embodiments described herein primarily deal with the authentication of data read from memory, the methods and systems described herein may be used in other applications that prevent computing devices from outputting sensitive information without permission.

전술된 실시예는 예로서 언급된 것이고, 본 발명은 본 명세서에 구체적으로 설명되고 도시된 것으로 제한되지 않는 것으로 이해된다. 오히려, 본 발명의 범위는 본 명세서에서 설명된 여러 특징의 조합과 서브 조합, 및 상기 설명을 판독할 때 이 기술 분야에 통상의 지식을 가진 자에게 일어날 수 있는, 종래 기술에 알려져 있지 않은 여러 변형과 변경을 모두 포함한다. 본 특허 출원에서 참조 문헌으로 병합된 문서들은 이들 병합된 문서들에 한정된 용어들이 본 명세서에 명시적으로 또는 암시적으로 이루어진 정의와 충돌하는 경우에 본 명세서에서 정의된 것으로 해석되는 것을 제외하고는 본 출원에 일체로 포함된 것으로 고려된다.It is understood that the above-described embodiments are mentioned by way of example and the present invention is not limited to what has been specifically described and shown herein. Rather, the scope of the present invention is not limited to the combinations and subcombinations of the various features described herein, and to the various modifications not otherwise known in the art, which may occur to those of ordinary skill in the art upon reading the above description And changes. Documents merged by reference in this patent application are not to be construed as limiting the present invention, except where the terms confined to these merged documents conflict with the definitions explicitly or implicitly made herein. It is considered to be included in the application in its entirety.

Claims (19)

컴퓨팅 디바이스로서,
프로그램을 실행하는 상기 디바이스에 의해 사용하기 위한 데이터 항목의 시퀀스를 수신하도록 연결된 입력 브리지;
출력 브리지;
상기 입력 브리지로부터 상기 데이터 항목을 수신하고 상기 프로그램을 실행하여 상기 시퀀스에서 주어진 데이터 항목에 응답해서 상기 출력 브리지에서 신호를 출력하도록 연결된 처리 코어; 및
상기 처리 코어가 상기 프로그램을 실행하는 동안 상기 데이터 항목을 수신하고 인증하며, 상기 주어진 데이터 항목이 인증될 때까지 상기 출력 브리지에 의한 상기 신호의 출력을 금지하도록 연결된 인증 로직을 포함하는 컴퓨팅 디바이스.
As a computing device,
An input bridge coupled to receive a sequence of data items for use by the device executing the program;
Output bridge;
A processing core coupled to receive the data item from the input bridge and execute the program to output a signal in the output bridge in response to a given data item in the sequence; And
And authentication logic coupled to receive and authenticate the data item while the processing core is executing the program and to inhibit output of the signal by the output bridge until the given data item is authenticated.
제1항에 있어서, 상기 데이터 항목은 프로그램 명령을 포함하고, 상기 주어진 데이터 항목은 출력 명령을 포함하며, 상기 처리 코어는 상기 출력 명령을 포함하는 상기 프로그램 명령을 실행하는 것에 의해 상기 프로그램을 실행하도록 구성된 것인 컴퓨팅 디바이스.2. The method of claim 1, wherein the data item comprises a program instruction, the given data item comprises an output instruction, and the processing core is adapted to execute the program by executing the program instruction comprising the output instruction Lt; / RTI > 제1항에 있어서, 상기 인증 로직은 상기 처리 코어에 의해 상기 프로그램을 실행하는 것과 비동기적으로 상기 데이터 항목을 인증하도록 구성된 것인 컴퓨팅 디바이스.2. The computing device of claim 1, wherein the authentication logic is configured to authenticate the data item asynchronously to executing the program by the processing core. 제1항에 있어서, 상기 인증 로직은, 상기 주어진 데이터 항목이 상기 처리 코어에 의해 상기 프로그램을 실행하는데 사용된 후에 상기 주어진 데이터 항목을 인증하고, 상기 주어진 데이터 항목의 인증이 완료될 때까지 상기 출력 브리지에 의한 상기 신호의 출력을 지연시키도록 구성된 것인 컴퓨팅 디바이스.2. The method of claim 1, wherein the authentication logic is configured to authenticate the given data item after the given data item is used by the processing core to execute the program, And to delay the output of the signal by the bridge. 제1항에 있어서, 상기 인증 로직은 상기 데이터 항목의 하나 이상의 디지털 시그너처를 계산하고 상기 계산된 시그너처를 상기 입력 브리지를 통해 상기 디바이스에 의해 수신된 각 오리지널 시그너처와 비교하는 것에 의해 상기 데이터 항목을 인증하도록 구성된 것인 컴퓨팅 디바이스.2. The method of claim 1, wherein the authentication logic is configured to calculate one or more digital signatures of the data item and to compare the calculated signature with each original signature received by the device via the input bridge Lt; / RTI > 제5항에 있어서, 상기 인증 로직은 상기 계산된 시그너처 중 적어도 하나가 상기 각 오리지널 시그너처와 매칭하지 않는 경우 알람 신호를 생성하도록 구성된 것인 컴퓨팅 디바이스.6. The computing device of claim 5, wherein the authentication logic is configured to generate an alarm signal when at least one of the computed signatures does not match each of the original signatures. 제5항에 있어서, 상기 입력 브리지는 데이터 항목의 제1 및 제2 블록을 수신하는 것에 의해 상기 데이터 항목을 수신하도록 구성되고, 상기 제2 블록을 수신하는 것은 상기 인증 로직을 사용하여 상기 제1 블록의 모든 데이터 항목을 인증한 후에만 가능한 것인 컴퓨팅 디바이스.6. The method of claim 5, wherein the input bridge is configured to receive the data item by receiving first and second blocks of data items, and receiving the second block is configured to receive the data item using the authentication logic, Wherein all of the data items in the block are authentic. 보안 컴퓨팅 방법으로서,
컴퓨팅 디바이스의 처리 코어에 의해 프로그램을 실행하는데 사용하기 위한 데이터 항목의 시퀀스를 입력 브리지를 통해 상기 컴퓨팅 디바이스에서 수신하는 단계;
상기 처리 코어에 의해 상기 프로그램을 실행하여 상기 시퀀스에서 주어진 데이터 항목에 응답해서 상기 디바이스로부터 신호를 출력하는 단계; 및
상기 처리 코어가 상기 프로그램을 실행하는 동안 인증 로직을 사용하여 상기 데이터 항목을 인증하고, 상기 주어진 데이터 항목이 인증될 때까지 상기 신호의 출력을 금지하는 단계를 포함하는 보안 컴퓨팅 방법.
As a secure computing method,
Receiving at the computing device via the input bridge a sequence of data items for use in executing a program by a processing core of a computing device;
Executing the program by the processing core to output a signal from the device in response to a given data item in the sequence; And
Authenticating the data item using the authentication logic while the processing core is executing the program, and prohibiting output of the signal until the given data item is authenticated.
제8항에 있어서, 상기 데이터 항목은 프로그램 명령을 포함하고, 상기 주어진 데이터 항목은 출력 명령을 포함하며, 상기 프로그램을 실행하는 것은 상기 출력 명령을 포함하는 상기 프로그램 명령을 실행하는 것을 포함하는 것인 보안 컴퓨팅 방법.9. The method of claim 8, wherein the data item comprises a program instruction, the given data item comprises an output instruction, and the executing the program comprises executing the program instruction comprising the output instruction. Secure computing method. 제8항에 있어서, 상기 데이터 항목을 인증하는 것은 상기 처리 코어에 의해 상기 프로그램을 실행하는 것과 비동기적으로 상기 데이터 항목을 인증하는 것을 포함하는 것인 보안 컴퓨팅 방법.9. The security computing method of claim 8, wherein authenticating the data item comprises authenticating the data item asynchronously with executing the program by the processing core. 제8항에 있어서, 상기 데이터 항목을 인증하는 것은 상기 주어진 데이터 항목이 상기 처리 코어에 의해 상기 프로그램을 실행하는데 사용된 후에 상기 주어진 데이터 항목을 인증하는 것과, 상기 주어진 데이터 항목의 인증이 완료될 때까지 상기 신호의 출력을 지연시키는 것을 포함하는 것인 보안 컴퓨팅 방법.9. The method of claim 8, wherein authenticating the data item further comprises: authenticating the given data item after the given data item is used by the processing core to execute the program; and upon authentication of the given data item And delaying the output of the signal until a predetermined time elapses. 제8항에 있어서, 상기 데이터 항목을 인증하는 것은 상기 데이터 항목의 하나 이상의 디지털 시그너처를 계산하는 것과, 상기 계산된 시그너처를 상기 입력 브리지를 통해 상기 디바이스에 의해 수신된 각 오리지널 시그너처와 비교하는 것을 포함하는 것인 보안 컴퓨팅 방법.9. The method of claim 8, wherein authenticating the data item comprises calculating one or more digital signatures of the data item, and comparing the calculated signature with each original signature received by the device via the input bridge Lt; / RTI > 제12항에 있어서, 상기 데이터 항목을 인증하는 것은 상기 계산된 시그너처 중 적어도 하나가 상기 각 오리지널 시그너처와 매칭하지 않는 경우 알람 신호를 생성하는 것을 포함하는 것인 보안 컴퓨팅 방법.13. The method of claim 12, wherein authenticating the data item comprises generating an alarm signal when at least one of the computed signatures does not match each of the original signatures. 제12항에 있어서, 상기 데이터 항목의 시퀀스를 수신하는 것은 데이터 항목의 제1 및 제2 블록을 수신하는 것을 포함하고, 상기 제2 블록을 수신하는 것은 상기 인증 로직을 사용하여 상기 제1 블록의 모든 데이터 항목을 인증한 후에만 가능한 것인 보안 컴퓨팅 방법.13. The method of claim 12, wherein receiving the sequence of data items comprises receiving first and second blocks of data items, and receiving the second block comprises receiving the sequence of data items And only after all data items have been authenticated. 컴퓨팅 시스템으로서,
데이터 항목의 시퀀스를 제공하도록 구성된 외부 디바이스; 및
컴퓨팅 디바이스를 포함하되,
상기 컴퓨팅 디바이스는,
프로그램을 실행하는 상기 컴퓨팅 디바이스에 의해 사용하기 위한 데이터 항목의 시퀀스를 상기 외부 디바이스로부터 수신하도록 연결된 입력 브리지;
출력 브리지;
상기 입력 브리지로부터 상기 데이터 항목을 수신하고 상기 프로그램을 실행하여 상기 시퀀스에서 주어진 데이터 항목에 응답해서 상기 출력 브리지에서 신호를 출력하도록 연결된 처리 코어; 및
상기 처리 코어가 상기 프로그램을 실행하는 동안 상기 데이터 항목을 수신하고 인증하며, 상기 주어진 데이터 항목이 인증될 때까지 상기 출력 브리지에 의한 상기 신호의 출력을 금지하도록 연결된 인증 로직을 포함하는 것인 컴퓨팅 시스템.
As a computing system,
An external device configured to provide a sequence of data items; And
A computing device,
The computing device includes:
An input bridge coupled to receive from the external device a sequence of data items for use by the computing device executing the program;
Output bridge;
A processing core coupled to receive the data item from the input bridge and execute the program to output a signal in the output bridge in response to a given data item in the sequence; And
And authentication logic coupled to receive and authenticate the data item while the processing core is executing the program and to inhibit output of the signal by the output bridge until the given data item is authenticated. .
제15항에 있어서, 상기 외부 디바이스는 상기 데이터 항목 및 인증 정보를 저장하도록 구성된 메모리 디바이스를 포함하며, 상기 컴퓨팅 디바이스는 상기 인증 정보의 적어도 일부를 생성하도록 구성된 시그너처 엔진을 더 포함하는 것인 컴퓨팅 시스템.16. The computing system of claim 15, wherein the external device comprises a memory device configured to store the data item and authentication information, the computing device further comprising a signature engine configured to generate at least a portion of the authentication information. . 제15항에 있어서, 상기 외부 디바이스는 인증 정보의 적어도 일부를 생성하도록 구성된 보안 메모리 디바이스를 포함하는 것인 컴퓨팅 시스템.16. The computing system of claim 15, wherein the external device comprises a secure memory device configured to generate at least a portion of the authentication information. 제17항에 있어서, 상기 보안 메모리 디바이스는 상기 보안 메모리 디바이스에 의해 상기 컴퓨팅 디바이스로 전달된 상기 데이터 항목의 적어도 일부에 대해 진행 중에 인증 정보를 생성하도록 구성되고, 상기 인증 로직은 상기 인증 정보를 사용하여 상기 데이터 항목을 인증하도록 구성된 것인 컴퓨팅 시스템.18. The method of claim 17, wherein the secure memory device is configured to generate authentication information in-progress with respect to at least a portion of the data item delivered to the computing device by the secure memory device, To authenticate the data item. 제17항에 있어서, 상기 보안 메모리 디바이스는 비휘발성 메모리를 포함하는 것인 컴퓨팅 시스템.18. The computing system of claim 17, wherein the secure memory device comprises a non-volatile memory.
KR1020140029902A 2013-08-13 2014-03-13 Secured computing system with asynchronous authentication KR101656092B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/965,256 2013-08-13
US13/965,256 US9703945B2 (en) 2012-09-19 2013-08-13 Secured computing system with asynchronous authentication

Publications (2)

Publication Number Publication Date
KR20150020017A KR20150020017A (en) 2015-02-25
KR101656092B1 true KR101656092B1 (en) 2016-09-08

Family

ID=52555178

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140029902A KR101656092B1 (en) 2013-08-13 2014-03-13 Secured computing system with asynchronous authentication

Country Status (3)

Country Link
KR (1) KR101656092B1 (en)
CN (1) CN104376277B (en)
TW (1) TWI549020B (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106156632B (en) * 2015-05-17 2019-10-29 新唐科技股份有限公司 Safety device and method of the security service to host, safety equipment are provided in it
DE102015209123A1 (en) * 2015-05-19 2016-11-24 Robert Bosch Gmbh Computing device and operating method for this
CN108399328B (en) * 2017-02-08 2021-04-27 新唐科技股份有限公司 System memory content authentication apparatus and method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100169654A1 (en) 2006-03-01 2010-07-01 Nvidia Corporation Method for author verification and software authorization
US8108941B2 (en) 2005-03-29 2012-01-31 Kabushiki Kaisha Toshiba Processor, memory, computer system, system LSI, and method of authentication

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100985784B1 (en) * 2003-05-02 2010-10-06 엘지전자 주식회사 Method for authenticating an interactive optical disc
CN1981527A (en) * 2003-12-05 2007-06-13 美国电影协会 Secure video system for display adaptor
US20070133437A1 (en) * 2005-12-13 2007-06-14 Wengrovitz Michael S System and methods for enabling applications of who-is-speaking (WIS) signals
DE102008011925B4 (en) * 2008-02-29 2018-03-15 Globalfoundries Inc. Safe initialization of computer systems
TW201305842A (en) * 2011-07-29 2013-02-01 Lionic Corp Method and apparatus for securing storage devices by real-time monitoring file system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8108941B2 (en) 2005-03-29 2012-01-31 Kabushiki Kaisha Toshiba Processor, memory, computer system, system LSI, and method of authentication
US20100169654A1 (en) 2006-03-01 2010-07-01 Nvidia Corporation Method for author verification and software authorization

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
공리 Gong Li, 자바 TM 보안 아키텍처 PDF: JDK 1.2 버전의 자바 보안 아키텍처 "Java™ Security Architecture (JDK1.2)", 1998년 12월*

Also Published As

Publication number Publication date
KR20150020017A (en) 2015-02-25
CN104376277A (en) 2015-02-25
TWI549020B (en) 2016-09-11
TW201506671A (en) 2015-02-16
CN104376277B (en) 2018-01-05

Similar Documents

Publication Publication Date Title
US9703945B2 (en) Secured computing system with asynchronous authentication
US7986786B2 (en) Methods and systems for utilizing cryptographic functions of a cryptographic co-processor
US9954826B2 (en) Scalable and secure key management for cryptographic data processing
KR101714108B1 (en) Verifiable, leak-resistant encryption and decryption
US10482275B2 (en) Implementing access control by system-on-chip
JP5607546B2 (en) Method and apparatus for controlling system access during a protected mode of operation
TWI391864B (en) Critical security parameter generation and exchange system and method for smart-card memory modules
US10110380B2 (en) Secure dynamic on chip key programming
CN104252881B (en) Semiconductor integrated circuit and system
US9208355B1 (en) Apparatus, system and method for providing cryptographic key information with physically unclonable function circuitry
US20140281587A1 (en) Systems, methods and apparatuses for using a secure non-volatile storage with a computer processor
US20150186679A1 (en) Secure processor system without need for manufacturer and user to know encryption information of each other
US20050210287A1 (en) Secure mode controlled memory
EP1429224A1 (en) Firmware run-time authentication
TW202121866A (en) Data encryption method, device and system, a data decryption method, device and system and storage medium
US8774407B2 (en) System and method for executing encrypted binaries in a cryptographic processor
US11176058B2 (en) Address decryption for memory storage
KR101656092B1 (en) Secured computing system with asynchronous authentication
CN110659506A (en) Replay protection of memory based on key refresh
US10452565B2 (en) Secure electronic device
US20210126776A1 (en) Technologies for establishing device locality
US20210240833A1 (en) Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain
US11281434B2 (en) Apparatus and method for maintaining a counter value
JP2015015542A (en) Information processing system
CN117280345A (en) Binding trust anchors and ASICs

Legal Events

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

Payment date: 20190703

Year of fee payment: 4