KR101656092B1 - Secured computing system with asynchronous authentication - Google Patents
Secured computing system with asynchronous authentication Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/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
-
- 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/30—Authentication, 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
관련 출원에 대한 상호 참조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
이후 상세한 설명 및 청구범위에서, "데이터 항목"이라는 용어는 메모리 디바이스(예를 들어, 디바이스(26 또는 28))에 저장된 데이터 및/또는 보안 메모리 디바이스(예를 들어, 디바이스(26)) 및 컴퓨팅 디바이스(예를 들어, 디바이스(24)) 사이에 전달되는, 데이터, 어드레스, 및/또는 제어 신호를 지칭할 수 있다. 저장된 데이터 항목은, 예를 들어, 프로그램 명령 또는 데이터 워드를 포함할 수 있다. 추가적으로 또는 대안적으로 저장된 데이터 항목은 프로그램 명령 및/또는 데이터 워드의 그룹을 포함할 수 있다.In the following description and claims, the term "data item" refers to data stored in a memory device (e.g.,
컴퓨팅 디바이스(24)는 각 인터페이스(36A 또는 36B)를 통해 디바이스(26 또는 28)에 의해 송신된 데이터 항목을 처리할 수 있다. 디바이스(24)는 입력 브리지(44)를 통해 명령을 수신하고 각 프로그램을 실행한다.The
일부 실시예에서, 각 외부 디바이스(26 또는 28)는 각 메모리(36A 또는 36B)에서 하나 이상의 데이터 항목 및 하나 이상의 디지털 시그너처를 저장한다. 일부 실시예에서, 외부 디바이스(26 및 28)에서 시그너처는 미리-계산되고 저장된다. 시그너처는 데이터 항목의 전체 집합 또는 그 부분 집합에 걸쳐 계산될 수 있다. 예를 들어, 시그너처는 컴퓨터 프로그램의 서브루틴을 포함하는 데이터 항목의 그룹에 서명하도록 계산될 수 있다. 추가적으로 또는 대안적으로, 시그너처는 적절한 사이즈의 다수의 데이터 항목의 블록에 걸쳐 계산될 수 있다. 일부 실시예에서, 모든 데이터 항목은 단일 키를 사용하여 서명된다. 그러나, 대안적인 실시예에서, 데이터 항목의 부분 집합은 상이한 키를 사용하여 서명될 수 있다.In some embodiments, each
시그너처를 계산하는 키는 비휘발성 메모리(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
디바이스(26)는 보안 디바이스(24)와 통신하는 동안 인터페이스(36A)를 통과하는 프로그램 명령, 데이터, 제어 신호, 및/또는 어드레스 신호에 걸쳐 시그너처를 (진행 중에) 생성할 수 있는 시그너처 엔진(40)을 더 포함한다. 대안적으로 또는 추가적으로, 시그너처 엔진(40)은 메모리(32A)에 저장된 데이터 항목에 걸쳐 하나 이상의 시그너처를 계산한다. 엔진(40)에 의해 생성된 시그너처는 메모리(32A)에 국부적으로 저장되고, 요청시 또는 임의의 다른 적절한 스케줄링 방법을 사용하여 컴퓨팅 디바이스(24)로 송신될 수 있다.The
일부 실시예에서, 외부 디바이스(26 및 28)에 저장된 데이터 항목의 일부나 전부는 암호화된다. 이러한 실시예에서, 시그너처 엔진(40)은 암호화기(encrypting cipher)를 더 포함할 수 있고, 디바이스(24)는 복호화기(decrypting cipher)를 더 포함할 수 있다. 복호화기는 처리 코어(48)에 의하여 실행하기 전에 암호화된 데이터 항목을 복호화하는데 적절한 키를 구비한다(후술됨).In some embodiments, some or all of the data items stored in the
입력 브리지(44)는 외부 디바이스(26 및 28)와 양방향 통신 인터페이스로 기능하고, 수신하는 데이터 항목을 처리 코어(48)에 전달한다. 처리 코어(48)는 일반적으로 보안 시스템(20)의 메인 CPU, 가능하게는 추가적인 프로세서, 및 버스 마스터(bus master)를 포함하여 코어의 내부 및 I/O 동작(activity)을 조정한다.The
디바이스(24)에서 시그너처 엔진(56)은 수신된 데이터 항목(및/또는 다른 데이터, 어드레스, 및/또는 제어 신호)에 걸쳐 시그너처를 계산하여 데이터 항목의 진정성을 확인한다. 확인이 실패하면, 디바이스(24)는 비밀 정보의 누설이나 노출을 방지하는 적절한 조치를 취한다. 컴퓨팅 디바이스(24)의 구조와 기능은 도 2를 참조하여 아래에서 상세히 설명된다.At the
일부 실시예에서, 시그너처 엔진(56 또는 40)에 의해 시그너처를 계산하기 전에, 서명될 데이터는 사용시 시그너처 계산 구조(scheme)에 지정된 적절한 입력 사이즈에 맞는 길이로 패딩(padded)된다.In some embodiments, before computing the signature by the
도 2는 본 발명의 일 실시예에 따른 보안 컴퓨팅 시스템(20)의 상세를 도시한 개략 블록도이다. 도 2에서, 보안 컴퓨팅 디바이스(24)는 보안 시스템 입력(30)이라고 지칭되는 모듈로 표현되는 외부 디바이스와 통신한다. 보안 시스템 입력(30)은 예를 들어, 도 1의 외부 디바이스(26 또는 28), 메모리 디바이스, 또는 데이터 항목 및 각 시그너처의 임의의 다른 적절한 소스를 포함할 수 있다. 이하 상세한 설명에서, "보안 시스템 입력" 및 "외부 디바이스" 라는 용어는 상호 교환가능하게 사용될 수 있다.2 is a schematic block diagram illustrating details of a
디바이스(24)는 외부 디바이스의 메모리에 저장된 데이터에 액세스하기 위하여 입력 브리지(44)를 통해 라우팅된 제어 및 어드레스 지정 신호를 생성한다. 처리 코어(48)는 입력 브리지(44)를 통해 라우팅된 제어 및 어드레스 지정 신호를 생성하여 외부 디바이스로부터 프로그램 명령과 같은 데이터 항목을 판독한다. 입력 브리지(44)는 데이터 항목을 수신하고, 실행을 위해 처리 코어(48)에 전달한다. 일부 실시예에서, 데이터 항목은 처리 코어에 전달하기 전에 (또는 전달하는 것과 병렬로) 국부 캐시 메모리(50)에 캐싱된다. The
수신된 데이터 항목은 또한 인증 제어 로직(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
출력 브리지(60)는 처리 코어(48)를, 출력 채널이라고도 지칭되는 보안 시스템 출력(64)에 연결한다. 보안 시스템 출력(64)은, 처리 코어(48)에 의한 기록 또는 판독 동작이 보안 정보를 직접 또는 간접으로 노출시킬 수 있는 임의의 어드레스 공간, 및 출력 브리지(60)로부터 신호를 수신할 수 있는 임의의 다른 종류의 수신기를 포함한다. 디바이스(24)는 보안 시스템 출력(64)에 대응하는 어드레스 공간을 정적으로 구성할 수 있다. 추가적으로 또는 대안적으로, 어드레스 공간 또는 그 일부는 보안 시스템(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
비휘발성 메모리(NVM)에 및/또는 한번 프로그래밍가능한(OTP) 메모리에 기록하는 것. Writing to non-volatile memory (NVM) and / or once-programmable (OTP) memory.
시스템 내 다른 칩, 메모리 디바이스, 또는 일반 목적 I/O(GPIO)와 같은 외부 디바이스에 신호를 기록하는 것. Writing signals to other chips in a system, memory devices, or external devices such as general purpose I / O (GPIO).
로크-비트(lock-bit), 테스트 모드, 클록 구성, 및 리셋 레지스터(register)에 액세스하는 것. Access to lock-bit, test mode, clock configuration, and reset register.
보안 가속기 모듈(즉, 전력 분석 또는 EMI(electro-magnetic interference) 분석과 같은 측면 채널 공격 기술을 사용하여 공격자에 비밀 정보 및 키를 노출시킬 수 있는 컴퓨팅 AES, SHA1, SHA256, RSA, 또는 ECC 값과 같은 보안 기능을 수행하는 모듈)의 제어 및/또는 구성 레지스터(register)에 액세스하는 것을 포함한다. 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
전술된 시그너처 확인 기술이 시그너처 엔진(56)에 의해 연산된 시그너처를 입력 브리지(44)를 통해 수신된 시그너처와 비교하는 것인 반면, 대안적인 실시예에서 시그너처 확인은 해쉬 메시지 다이제스트를 비교하는 것에 기초할 수 있다. 시그너처를 계산하는 알고리즘은 때때로 해쉬 및 암호(encryption) 함수를 이용한다. While the signature verification technique described above compares the signature computed by the
컴퓨팅 디바이스(24)가 보안 디바이스(26)와 통신하는 예시적인 실시예에서, 특정 데이터에 대응하는 시그너처는 해쉬 함수를 사용하여 이 데이터에 걸쳐 계산된 메시지 다이제스트를 포함한다. 메시지 다이제스트는 인터페이스(36A)를 통해 전달된 하나 이상의 데이터 항목 및/또는 데이터, 어드레스 및/또는 제어 신호에 걸쳐 계산될 수 있다. 메시지 다이제스트는 진행 중에 계산되어 디바이스(24 및 26)에 의해 최신으로 유지될 수 있다. 보안 외부 디바이스(26)는 메시지 다이제스트 시그너처를 스케줄링하고 배타적으로, 주기적으로, 또는 보안 컴퓨팅 디바이스(24)에 의해 야기된 요청 시 보안 컴퓨팅 디바이스(24)에 송신할 수 있다. 업데이트된 메시지 다이제스트를 수신할 때, 인증 제어 로직(52)은 디바이스(26)에 의해 계산된 메시지 다이제스트를 수신된 데이터에 걸쳐 시그너처 엔진(56)에 의해 내부에서 계산된 메시지 다이제스트와 비교하고 서명된 데이터의 진정성을 검증할 수 있다. 디바이스(24 및 26)들 사이에 공유된 비밀 키(42)는, 메시지 다이제스트 데이터와 혼합될 의사-랜덤 시퀀스를 생성하는 시드로 사용될 수 있다.In an exemplary embodiment, in which the
대안적인 실시예에서, 비밀 키에 종속하는 시퀀스와 메시지 다이제스트를 혼합하는 대신에, 암호 알고리즘은 비밀 키를 사용하여 메시지 다이제스트를 암호화하여 시그너처를 생성한다. 수신자(예를 들어, 보안 컴퓨팅 디바이스(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
일반적으로, 컴퓨팅 디바이스(24) 내 처리 코어(48)는 본 명세서에 설명된 기능을 수행하도록 소프트웨어로 프로그래밍된 적어도 하나의 일반-목적 컴퓨터 프로세서를 포함한다. 이 소프트웨어는 예를 들어, 네트워크를 통해, 전자적 형태로 컴퓨팅 디바이스로 다운로딩될 수 있거나 또는 이 소프트웨어는 대안적으로 또는 추가적으로, 자기, 광, 또는 전자 메모리와 같은 비-일시적인 유형적 매체에 제공되거나 및/또는 저장될 수 있다.In general, the
도 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
비보안 상태(84)에 있는 동안, 임의의 새로이 수신된 데이터 항목의 적어도 일부의 진정성은 아직 확인되지 않아서, 디바이스(24)는 보안 시스템 출력(64)에 액세스하는 것이 허용되지 않는다. 처리 코어(48)가 출력 명령을 만나는 경우, 출력 채널에 실제 액세스하는 것은 출력 명령이 인증될 때까지 지연된다(즉, 출력 브리지(60)에 의한 신호의 출력이 지연된다). 그러나, 비보안 상태(84)에 있는 동안, 처리 코어(48)는 중립 데이터 항목이 아직 인증되지 않은 경우에도 보안 시스템 출력(64)에 액세스를 요청하지 않는 중립 데이터 항목을 계속 처리할 수 있다. While in the
비보안 상태(84)로부터 인증 상태(88)로 전이하는 것은 인증 로직(52)이 AUTHENTICATION REQUEST 신호를 수신할 때 일어난다. 인증 상태(88)에 있는 동안, 인증 로직(52)은 입력 브리지(44)에서 데이터 항목을 수신하는 것을 스톨(stall)시키고 입력 브리지를 인수받아 외부 디바이스(30)로부터 오리지널 시그너처를 판독한다. 인증 로직(52)은 오리지널 시그너처를 시그너처 엔진(56)에 의해 계산된 시그너처와 비교하여 데이터를 인증한다. 전술된 바와 같이, 인증 로직(52)은 처리 코어(48)가 (아마도 다른) 데이터 항목을 실행하고 있는 동안 데이터 항목을 비동기적으로 인증할 수 있다.Transitioning from the
여러 트리거들이 AUTHENTICATION REQUEST 신호를 생성하여 상태-기계를 인증 상태(88)로 전이시킬 수 있다. 일부 예시적인 트리거들이 아래에 주어진다:Multiple triggers may generate an AUTHENTICATION REQUEST signal to transition the state machine to the
처리 코어(48)가 보안 시스템 출력(64)에 액세스를 하려고 시도하고 디바이스가 보안 상태(80)에 있지 않을 때 OUT REQUEST 신호를 작동시키는 것. The
OUT REQUEST 신호를 주기적으로 작동시키거나, 또는 마지막으로 방문한 인증 상태(88) 이후 미리 한정된 타임아웃 후에 작동시키는 것. To operate the OUT REQUEST signal periodically, or to operate after a predefined timeout since the last visited authentication state (88).
검증을 위해 계류 중인 시그너처에 할당된 메모리 공간이 가득 차 있을 때. 다수의 계류 중인 시그너처를 검증하는 비보안 메모리를 갖는 예시적인 실시예는 아래에 더 설명된다. 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.
입력 브리지(44)가 전달 데이터 항목으로 차 있지 않아서, 인증 로직(52)이 입력 브리지를 통해 보안 입력 시스템 입력(30)에 저장된 시그너처를 검색할 수 있을 때. When the
데이터 항목이 상태(88)에서 진정한 것으로 확인될 때, 상태-기계는 보안 상태(80)로 다시 전이한다. 그렇지 않은 경우에는, 인증은 실패한 것이고 인증 로직(52)은 알람 신호를 생성한다.When the data item is found to be true in
디바이스(24)는 알람 신호에 응답해서 여러 조치를 취하여 높은 보안 레벨을 유지할 수 있다. 디바이스(24)가 알람 신호에 응답해서 취할 수 있는 예시적인 동작은,The
보안 환경을 리셋하는 것. Resetting the security environment.
비밀 키와 같은 보안 데이터를 소거하는 것. Clearing security data such as secret keys.
디바이스(24)가 데이터 항목의 처리/인증과 같은 모든 동작을 수행하는 것을 영구적으로 종료시켜, 입력 및 출력 브리지를 추가적으로 스톨시키는 것. To permanently terminate the
응답 레벨은 인증 실패 이벤트의 수에 종속할 수 있다. 예를 들어, 보안 디바이스(24)는 인증 실패 이벤트의 미리 한정된 수를 인식한 후에 동작을 재시작하고, 추가적인 인증 실패가 발생하는 경우, 예를 들어, 모든 동작을 종료하거나 보안 정보를 삭제하는 것에 의해 보다 공격적으로 응답할 수 있다. The response level may depend on the number of authentication failure events. For example, the
이제 보안 시스템(20)의 예시적인 실시예를 설명하며, 여기서 외부 디바이스는 기존 비휘발성 저장 디바이스와 같은 비보안 메모리 디바이스(28)를 포함한다. 본 예에서, 메모리 디바이스는 보안 컴퓨팅 디바이스(24)에 의해 실행되는 컴퓨터 프로그램 명령(및 아마도 관련된 데이터)을 포함하는 데이터 항목을 저장한다. 디바이스(28)는 시그너처를 저장하기 위해 저장 용량 중 임의의 적절한 공유 부분을 할당할 수 있다. 예를 들어, 저장 용량의 75%는 유저 데이터에 사용될 수 있고 25%는 시그너처를 저장하는데 사용될 수 있다. 시그너처는 (메모리 디바이스 외부에서) 데이터 항목의 블록에 걸쳐 계산될 수 있다. 예를 들어, 각 256-비트 메모리 블록은 64-비트 시그너처로 서명될 수 있다.Now, an illustrative embodiment of the
이 예에서 보안 디바이스(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
전술된 실시예의 구성은 예시적인 구성이고, 입력 및 메모리 요소의 임의의 다른 적절한 구성이 대안적으로 사용될 수 있다. 예를 들어, 다른 데이터 블록 사이즈 및 시그너처 사이즈가 적용될 수 있다. 다른 예로서, 임의의 적절한 시그너처 버퍼 사이즈가 사용될 수 있다. 예시적인 실시예에서, 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
명령의 실행이 수행되는 동안, 디바이스(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
인증 검증 단계(120)에서, 디바이스(24)는 시그너처 매칭이 단계(116)에서 발견되었는지 여부를 체크한다. 시그너처들이 매칭한 경우, 디바이스(24)는 보안 상태 전이 단계(124)에서 보안 상태(80)로 전이하고, 처리 코어(48)는 실행을 재개한다. 보안 상태(80)에 있는 동안, 디바이스(24)는 외부 메모리로부터 프로그램 명령을 페치하여, 보안 시스템 출력(64)에 안전하게 액세스하는 것이 허용된다. 단계(120)에서 인증이 실패하면, 인증 로직(52)은 알람(alert) 단계(132)에서 알람 신호를 생성하고, 단계(100)로 다시 루프 수행하여 추가적인 프로그램 명령을 페치한다. 디바이스(24)는 전술된 바와 같이 여러 방식으로 알람 신호에 응답할 수 있다.In the
디바이스(24)는 실행 체크 단계(128)에서 모든 페치된 명령의 실행이 완료되었는지 여부를 체크한다. 실행이 완료되었다면, 디바이스(24)는 단계(100)로 다시 루프 수행하여 후속 프로그램 명령을 페치한다. 그렇지 않은 경우, 디바이스(24)는 단계(104)로 다시 루프 수행하여 인증 요청이 계류 중인지 여부를 체크한다.The
도 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
본 명세서에 설명된 실시예는 메모리로부터 판독된 데이터의 인증을 주로 처리하는 것이지만, 본 명세서에 설명된 방법 및 시스템은 컴퓨팅 디바이스가 민감한 정보를 허가 없이 출력하지 못하게 하는 다른 응용에서 사용될 수 있다.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.
컴퓨팅 디바이스의 처리 코어에 의해 프로그램을 실행하는데 사용하기 위한 데이터 항목의 시퀀스를 입력 브리지를 통해 상기 컴퓨팅 디바이스에서 수신하는 단계;
상기 처리 코어에 의해 상기 프로그램을 실행하여 상기 시퀀스에서 주어진 데이터 항목에 응답해서 상기 디바이스로부터 신호를 출력하는 단계; 및
상기 처리 코어가 상기 프로그램을 실행하는 동안 인증 로직을 사용하여 상기 데이터 항목을 인증하고, 상기 주어진 데이터 항목이 인증될 때까지 상기 신호의 출력을 금지하는 단계를 포함하는 보안 컴퓨팅 방법.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.
데이터 항목의 시퀀스를 제공하도록 구성된 외부 디바이스; 및
컴퓨팅 디바이스를 포함하되,
상기 컴퓨팅 디바이스는,
프로그램을 실행하는 상기 컴퓨팅 디바이스에 의해 사용하기 위한 데이터 항목의 시퀀스를 상기 외부 디바이스로부터 수신하도록 연결된 입력 브리지;
출력 브리지;
상기 입력 브리지로부터 상기 데이터 항목을 수신하고 상기 프로그램을 실행하여 상기 시퀀스에서 주어진 데이터 항목에 응답해서 상기 출력 브리지에서 신호를 출력하도록 연결된 처리 코어; 및
상기 처리 코어가 상기 프로그램을 실행하는 동안 상기 데이터 항목을 수신하고 인증하며, 상기 주어진 데이터 항목이 인증될 때까지 상기 출력 브리지에 의한 상기 신호의 출력을 금지하도록 연결된 인증 로직을 포함하는 것인 컴퓨팅 시스템.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. .
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)
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100985784B1 (en) * | 2003-05-02 | 2010-10-06 | 엘지전자 주식회사 | Method for authenticating an interactive optical disc |
EP1690246A2 (en) * | 2003-12-05 | 2006-08-16 | Motion Picture Association of America | 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 |
-
2014
- 2014-03-13 KR KR1020140029902A patent/KR101656092B1/en active IP Right Grant
- 2014-03-17 TW TW103109868A patent/TWI549020B/en active
- 2014-03-18 CN CN201410101468.XA patent/CN104376277B/en active Active
Patent Citations (2)
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)
Title |
---|
공리 Gong Li, 자바 TM 보안 아키텍처 PDF: JDK 1.2 버전의 자바 보안 아키텍처 "Java™ Security Architecture (JDK1.2)", 1998년 12월* |
Also Published As
Publication number | Publication date |
---|---|
CN104376277B (en) | 2018-01-05 |
TWI549020B (en) | 2016-09-11 |
TW201506671A (en) | 2015-02-16 |
CN104376277A (en) | 2015-02-25 |
KR20150020017A (en) | 2015-02-25 |
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 | |
US7500098B2 (en) | Secure mode controlled memory | |
US10110380B2 (en) | Secure dynamic on chip key programming | |
US20140281587A1 (en) | Systems, methods and apparatuses for using a secure non-volatile storage with a computer processor | |
US9208355B1 (en) | Apparatus, system and method for providing cryptographic key information with physically unclonable function circuitry | |
US20150186679A1 (en) | Secure processor system without need for manufacturer and user to know encryption information of each other | |
EP1429224A1 (en) | Firmware run-time authentication | |
TW202121866A (en) | Data encryption method, device and system, a data decryption method, device and system and storage medium | |
US20210240833A1 (en) | Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain | |
US8774407B2 (en) | System and method for executing encrypted binaries in a cryptographic processor | |
CN110659506A (en) | Replay protection of memory based on key refresh | |
US10452565B2 (en) | Secure electronic device | |
US11176058B2 (en) | Address decryption for memory storage | |
KR101656092B1 (en) | Secured computing system with asynchronous authentication | |
US20210126776A1 (en) | Technologies for establishing device locality | |
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 |