[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR101656092B1 - 비동기적인 인증을 갖는 보안 컴퓨팅 시스템 - Google Patents

비동기적인 인증을 갖는 보안 컴퓨팅 시스템 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
English (en)
Other versions
KR20150020017A (ko
Inventor
지브 허쉬만
발레리 테페르
모쉐 알론
Original Assignee
윈본드 일렉트로닉스 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/965,256 external-priority patent/US9703945B2/en
Application filed by 윈본드 일렉트로닉스 코포레이션 filed Critical 윈본드 일렉트로닉스 코포레이션
Publication of KR20150020017A publication Critical patent/KR20150020017A/ko
Application granted granted Critical
Publication of KR101656092B1 publication Critical patent/KR101656092B1/ko

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)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

컴퓨팅 디바이스는 입력 브리지, 출력 브리지, 처리 코어, 및 인증 로직을 포함한다. 입력 브리지는 프로그램을 실행하는 디바이스에 의해 사용하기 위한 데이터 항목의 시퀀스를 수신하도록 연결된다. 처리 코어는 입력 브리지로부터 데이터 항목을 수신하고 프로그램을 실행하여 시퀀스에서 주어진 데이터 항목에 응답해서 출력 브리지에서 신호를 출력하도록 연결되고, 인증 로직은 처리 코어가 프로그램을 실행하는 동안 데이터 항목을 수신하고 인증하며, 주어진 데이터 항목이 인증될 때까지 출력 브리지에 의한 상기 신호의 출력을 금지하도록 연결된다.

Description

비동기적인 인증을 갖는 보안 컴퓨팅 시스템{SECURED COMPUTING SYSTEM WITH ASYNCHRONOUS AUTHENTICATION}
관련 출원에 대한 상호 참조
본 출원은, 2012년 9월 19일에 출원된 미국 가특허 출원 제61/702,763호의 이익을 주장하며, 이 기초 출원은, 그 전체 내용이 본 명세서에 참조로 포함된다.
기술 분야
본 발명은 일반적으로 컴퓨팅 시스템에 관한 것으로, 보다 상세하게는 외부 디바이스에 저장된 프로그램을 보안 실행하는 방법 및 시스템에 관한 것이다.
보안 컴퓨팅 시스템에서, 보안 컴퓨팅 디바이스는 종종 하나 이상의 외부 디바이스와 통신한다. 외부 디바이스는 일반적으로 컴퓨팅 디바이스 내 처리 코어에 의해 실행되는 프로그램 명령을 저장하는 메모리 디바이스를 적어도 포함한다. 컴퓨팅 디바이스와 외부 디바이스 사이의 통신 링크에 보안이 되어 있지 않은 경우에, 보안 컴퓨팅 디바이스는 종종 링크를 통해 수신된 데이터의 무결성(integrity) 및 진정성(authenticity)을 확인(validate)하는 것이 필요하다. 진정성 확인은 데이터가 적법한 소스(예를 들어, 허가된 메모리 디바이스)로부터 송신되었다는 것을 수신 디바이스(예를 들어, 보안 컴퓨팅 디바이스)가 검증할 수 있는 것을 의미한다. 무결성은 데이터가 수신 디바이스에 입력되기 전에 변경되지 않았다는 것을 의미한다. 이하 상세한 설명 및 청구범위에서, "인증"이라는 용어는 집합적으로 데이터의 진정성 또는 무결성 또는 이들 둘 모두를 확인하는 기술을 말한다.
컴퓨팅 환경 외부에 있는 디바이스에 저장된 코드 및 데이터를 인증하는 방법은 이 기술 분야에 알려져 있다. 전체 내용이 본 명세서에 참조 문헌으로 병합된, 예를 들어, 미국 특허 출원 공개 제2010/0070779호는 암호화(ciphering) 및 복호화(deciphering)에서 동일한 것을 의미하는 적어도 하나의 중간 상태를 제공하는 암호화 알고리즘에 의해 암호화된 데이터의 무결성을 보호하는 방법을 기술하며, 이 중간 상태는 시그너처(signature)를 생성하도록 암호화 동안 샘플링된다. 본 발명은 보다 구체적으로 보안으로 고려되는 집적 회로 외부에 있는 메모리의 컨텐츠의 프라이버시(privacy) 및 무결성(또는 진정성)을 보호하는데 적용된다.
전체 내용이 본 명세서에 참조 문헌으로 병합된 미국 특허 8,108,941은 비휘발성 메모리를 인증하기 위한 제1 메모리 인증 정보를 저장하는 비휘발성 메모리에 연결된 프로세서를 기술한다. 이 프로세서는 비휘발성 메모리에 저장된 정보를 사용하여 동작을 수행하도록 구성된 동작 유닛, 상기 동작 유닛과 일체로 형성되고 상기 비휘발성 메모리를 인증하기 위한 제2 메모리 인증 정보를 저장하는 인증 메모리, 상기 비휘발성 메모리로부터 상기 제1 메모리 인증 정보를 획득하도록 구성된 인증 정보 획득 유닛, 상기 제1 메모리 인증 정보와 상기 제2 메모리 인증 정보를 비교하여 상기 비휘발성 메모리를 인증하도록 구성된 메모리 인증 유닛, 및 상기 메모리 인증 유닛이 인증에 성공할 때 상기 비휘발성 메모리에 액세스하는 것을 허가하도록 구성된 메모리 액세스 제어 유닛을 포함한다.
전체 내용이 본 명세서에 참조 문헌으로 병합된 미국 특허 8,140,824는 부트 코드(boot code)와 같은 코드를 인증하기 위한 컴퓨터 판독가능한 프로그램을 구비하는 컴퓨터 사용가능한 매체를 포함하는 컴퓨터 프로그램 제품을 기술한다. 메모리 어드레스 지정 엔진은, 단계 값(step value)의 함수로, 제1 입력 해쉬 값(hash value)으로, 메모리의 일부를 선택하도록 사용가능하다. 상기 단계 값은 좌측으로 회전된 이전의 해쉬 값과 같은 제2 입력 해쉬 값을 갖는 복수의 메모리 부분의 비-가환 누적 해쉬(non-commutative cumulative hash)를 가능하게 한다. 인증기 회로는 상기 제2 입력 해쉬 값과 메모리의 이 부분에 해쉬를 수행하도록 사용가능하다. 비교 회로는 인증기 회로의 출력을 예상 값과 비교하는데 사용가능하다.
본 발명의 일 실시예는, 입력 브리지(bridge), 출력 브리지, 처리 코어, 및 인증 로직을 포함하는 컴퓨팅 디바이스를 제공한다. 입력 브리지는 프로그램을 실행하는 디바이스에 의해 사용하기 위한 데이터 항목(data item)의 시퀀스를 수신하도록 연결된다. 상기 처리 코어는 입력 브리지로부터 데이터 항목을 수신하고 프로그램을 실행하여 시퀀스에서 주어진 데이터 항목에 응답해서 출력 브리지에서 신호를 출력하도록 연결되고, 인증 로직은, 처리 코어가 상기 프로그램을 실행하는 동안 데이터 항목을 수신하고 인증하며, 상기 주어진 데이터 항목이 인증될 때까지 출력 브리지에 의한 신호의 출력을 금지하도록 연결된다.
일부 실시예에서, 상기 데이터 항목은 프로그램 명령을 포함하고 주어진 데이터 항목은 출력 명령을 포함하며, 상기 처리 코어는 출력 명령을 포함하는 프로그램 명령을 실행하는 것에 의해 프로그램을 실행하도록 구성된다. 다른 실시예에서, 상기 인증 로직은 상기 처리 코어에 의한 프로그램의 실행과 비동기적으로 데이터 항목을 인증하도록 구성된다. 더 다른 실시예에서, 인증 로직은, 주어진 데이터 항목이 처리 코어에 의해 프로그램을 실행하는데 사용된 후에 주어진 데이터 항목을 인증하고, 주어진 데이터 항목의 인증이 완료될 때까지 출력 브리지에 의한 신호의 출력을 지연시키도록 구성된다.
일 실시예에서, 인증 로직은 데이터 항목의 하나 이상의 디지털 시그너처를 계산하고 계산된 시그너처를 입력 브리지를 통해 디바이스에 의해 수신된 각 오리지널 시그너처와 비교하는 것에 의해 데이터 항목을 인증하도록 구성된다. 다른 실시예에서, 인증 로직은 계산된 시그너처 중 적어도 하나가 각 오리지널 시그너처와 매칭되지 않는 경우 알람(alert) 신호를 생성하도록 구성된다. 또 다른 실시예에서, 입력 브리지는 데이터 항목의 제1 및 제2 블록을 수신하는 것에 의해 데이터 항목을 수신하도록 구성되고, 제2 블록을 수신하는 것은 인증 로직을 사용하여 제1 블록의 모든 데이터 항목을 인증한 후에만 가능하다.
본 발명의 일 실시예에 따라 추가적으로 방법이 제공되고, 본 방법은, 입력 브리지를 통해 컴퓨팅 디바이스에서, 디바이스의 처리 코어에 의해 프로그램을 실행하는데 사용하기 위한 데이터 항목의 시퀀스를 수신하는 단계, 처리 코어에 의해 프로그램을 실행하여 시퀀스에서 주어진 데이터 항목에 응답해서 디바이스로부터 신호를 출력하는 단계, 및 처리 코어가 프로그램을 실행하는 동안 인증 로직을 사용하여 데이터 항목을 인증하고, 주어진 데이터 항목이 인증될 때까지 신호의 출력을 금지하는 단계를 포함한다.
본 발명의 일 실시예에 따라 추가적으로 컴퓨팅 시스템이 제공되며, 본 컴퓨팅 시스템은, 외부 디바이스 및 컴퓨팅 디바이스를 포함한다. 외부 디바이스는 데이터 항목의 시퀀스를 제공하도록 구성되고, 컴퓨팅 디바이스는 입력 브리지, 출력 브리지, 처리 코어, 및 인증 로직을 더 포함한다. 입력 브리지는 외부 디바이스로부터 프로그램을 실행하는 컴퓨팅 디바이스에 의해 사용하기 위한 데이터 항목의 시퀀스를 수신하도록 연결된다. 처리 코어는 입력 브리지로부터 데이터 항목을 수신하고 프로그램을 실행하여 시퀀스에서 주어진 데이터 항목에 응답해서 출력 브리지에서 신호를 출력하도록 연결되고, 인증 로직은, 처리 코어가 프로그램을 실행하는 동안 데이터 항목을 수신하고 인증하며, 주어진 데이터 항목이 인증될 때까지 출력 브리지에 의한 신호의 출력을 금지하도록 연결된다.
본 발명은 첨부 도면과 함께 본 실시예의 이하 상세한 설명으로부터 보다 완전히 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 보안 컴퓨팅 시스템을 도시한 개략 블록도;
도 2는 본 발명의 일 실시예에 따른 도 1의 보안 컴퓨팅 시스템의 상세를 도시한 개략 블록도;
도 3은 본 발명의 일 실시예에 따른 보안 상태-기계(state-machine)를 도시하는 도면;
도 4는 본 발명의 일 실시예에 따라 보안 컴퓨팅 디바이스에서 인증하는 방법을 도시한 개략 흐름도.
개요
외부 소스로부터 데이터(메시지라고도 언급됨)를 수신하는 보안 컴퓨팅 시스템은, 종종 내부에서 사용하기 전에 데이터의 무결성과 진정성을 확인하는 것이 요구된다. 아래에 제시되는 본 발명의 실시예는 데이터 인증에 디지털 시그너처를 사용한다. 디지털 시그너처는 일반적으로, 데이터와 함께 저장되거나 송신자 측(예를 들어, 메모리 디바이스)에서 실시간으로 생성되어 인증을 위해 데이터와 함께 수신자(예를 들어, 보안 컴퓨팅 디바이스)에 송신되는 비트-스트링(bit-string)을 포함한다. 수신자는 수신된 데이터의 시그너처를 계산하고 계산된 시그너처를 송신자의 오리지널 시그너처와 비교한다. 이 시그너처들이 매칭하면, 수신자는 데이터가 진정한 것이고 임의의 비허가된 자에 의해 변경되지 않은 것으로 가정할 수 있다.
많은 경우에, 시그너처를 생성하고 확인하는 것은 데이터 메시지 및 비밀 키(secret key)에 기초한다. 시그너처를 생성하는 알고리즘은 일반적으로 비허가된 자가 비밀 키를 전부 알지 못하고는 유효한 시그너처를 생성하지 못하도록 설계된다. 추가적으로, 데이터 메시지를 임의로 변경하면(즉, 데이터 무결성이 깨지면) 수신자 측에서 시그너처 검증이 실패하게 된다.
비밀 키를 사용하여 시그너처를 생성하고 확인하는 여러 방법이 이 기술 분야에 알려져 있다. 예를 들어, 송신자는 프라이빗 키(private key)를 사용하여 시그너처를 생성할 수 있는 반면, 수신자는 공개 키(public key)를 사용하여 시그너처를 확인한다. 다른 예로서, 송신자 및 수신자는 이들 사이에 비밀로 유지되는 공통 키를 공유할 수 있다. 수신자와 송신자 사이에 키를 교환하는 방법은 이 기술 분야에 알려져 있다. 특정 데이터에 대응하는 시그너처를 확인한 후(키의 비밀이 누설되지 않았다고 가정하고), 보안 컴퓨팅 디바이스는 수신된 데이터를 안전하게 처리할 수 있다. 예를 들어, 데이터가 컴퓨터 프로그램 명령을 포함하면, 컴퓨팅 디바이스는 보안 정보를 노출시킬 위험이 없이 인증된 프로그램을 안전하게 실행할 수 있다.
보안 측면에서, 컴퓨팅 디바이스 내 처리에 영향을 미치는 비인증된 프로그램 명령 및 다른 데이터 항목은 본 발명의 실시예를 위해 2개의 카테고리로 분류될 수 있다. 제1 카테고리의 비인증된 데이터 항목을 처리하는 것은 보안 정보를 전혀 노출시키지 않아서, 이 카테고리에서의 데이터 항목은 그리하여 중립 명령 또는 데이터 항목이라고 지칭된다. 한편, 제2 카테고리의 비인증된 데이터 항목을 처리하는 것은 비밀 또는 보안 정보를 직접 또는 간접으로 노출시킬 수 있다. 이 제2 카테고리의 데이터 항목은 본 명세서에서 출력 명령이라고도 지칭된다.
본 명세서에 설명된 본 발명의 실시예는 보안 컴퓨팅 디바이스에서 인증하는 개선하는 방법 및 시스템을 제공한다. 예시적인 실시예에서, 컴퓨팅 디바이스에서 처리 코어는 입력 브리지를 통해 메모리와 같은 외부 디바이스로부터 실행할 프로그램 명령을 수신한다. 이 명령은 디지털 시그너처로 서명(signed)된다. 이 명령(즉, 출력 명령)의 일부는 처리 코어가 출력 브리지를 통해 정보를 출력하게 할 수 있다. "입력 브리지" 및 "출력 브리지"라는 용어는 본 명세서에서 컴퓨팅 디바이스가 각각 신호를 송수신할 수 있는 임의의 및 모든 연결을 폭넓게 지칭하는데 사용된다. 이하 상세한 설명과 청구범위에서, "신호"라는 용어는 물리적 신호 연결을 통하든 아니든 간에 디바이스로 정보를 운반하거나 디바이스로부터 정보를 운반하는 임의의 채널을 지칭한다. 비-물리적인 신호 채널의 예로는, 조건부 리셋 동작을 수행하는 공격자에 노출될 수 있는, 전력 라인을 통한 전압 패턴, 전자기 방사파의 변화 및 보안 정보와 같은 측면-채널 공격에서 픽업될 수 있는 신호를 포함한다.
입력 브리지를 통해 수신된 명령은 컴퓨팅 디바이스 내 전용 인증 로직에 의해 인증된다. 인증은 프로그램의 적어도 일부의 처리 코어에 의한 실행과 병렬로 수행될 수 있다. 처리 코어가 아직 인증되지 않은 출력 명령을 만나면, 인증 로직은 출력 브리지를 금지시키고, 현재 출력 명령 및 이보다 앞선 모든 명령이 인증될 때까지 신호의 실제 출력을 지연시킨다. 그리하여, 비밀 정보의 의도치 않은 노출을 방지하면서 인증을 대기하는 동안 불필요한 실행의 지연을 회피하는 것에 의해 성능이 최대화된다.
일 실시예에서, 외부 디바이스는 비보안 메모리 디바이스를 포함한다. 메모리 용량 중 선택된 공유 부분을 사용하여 메모리 데이터 블록에 대응하는 시그너처를 저장한다. 컴퓨팅 디바이스는 메모리 디바이스로부터 데이터 및 각 시그너처 또는 시그너처들을 수신하고 서명 있는 블록을 인증한다. 수신된 데이터는 처리 코어에 의해 실행되기 전에 또는 실행되는 것과 병렬로 캐시에 저장될 수 있고, 외부 디바이스로부터 데이터를 재-페치(re-fetching)하는 것은 캐시 미스 이벤트(cache miss event) 시 일어난다. 단일 블록 페치(fetch)-인증 사이클에서 동작하는 대신에, 컴퓨팅 디바이스는 다수의 시그너처들이 다수의 데이터 블록을 페치할 때 계산되고 저장되며 검증되는 모드에서 동작한다. 이 동작 모드는 컴퓨팅 디바이스의 효율을 개선시킨다.
다른 실시예에서, 외부 디바이스는 시그너처 엔진을 구비하는 보안 메모리 디바이스를 포함한다. 보안 외부 디바이스는 컴퓨팅 디바이스와 비밀 키를 공유하고, 데이터 시그너처를 생성, 유지하며 이를 컴퓨팅 디바이스에 송신할 수 있다. 데이터 시그너처는 디바이스 인터페이스를 통해 전달된 하나 이상의 (예를 들어, 블록-기반) 데이터 항목 및/또는 어드레스 및/또는 제어 신호를 통해 메시지 다이제스트(message digest)를 계산하는 것에 의해 생성될 수 있다. 비밀 키는 메시지 다이제스트와 혼합될 의사-랜덤 시퀀스를 생성하는 시드(seed)로서 사용될 수 있다. 대안적으로, 메시지 다이제스트는 적절한 비밀 키로 암호화(encrypted)되어 시그너처를 생성할 수 있다.
데이터 시그너처를 컴퓨팅 디바이스에 송신하는 대안적인 스케줄링은 배타적으로(즉, 시그너처가 생성되자마자), 주기적으로, 요청 시, 또는 병렬로 동작할 다수의 스케줄링 방법을 조합하는 것과 같은 임의의 다른 스케줄링 방법에 따라 송신하는 것을 포함한다. 컴퓨팅 디바이스는 메모리 디바이스로부터 데이터 및 각 시그너처를 수신하고 시그너처를 사용하여 데이터를 인증한다. 비-보안 외부 메모리 디바이스를 사용하는 실시예와 유사하게, 수신된 데이터는 처리 코어에 의해 실행되기 전에 또는 실행되는 것과 병렬로 캐시에 저장될 수 있고, 외부 디바이스로부터 데이터를 재-페치하는 것은 캐시 미스 이벤트 시 일어난다.
시스템 설명
도 1은 본 발명의 일 실시예에 따른 보안 컴퓨팅 시스템(20)을 도시한 개략 블록도이다. 도 1의 예에서, 보안 컴퓨팅 디바이스(24)는 보안 외부 디바이스(26) 및 비-보안 외부 디바이스(28)와 통신한다. 각 디바이스(26 및 28)는 데이터 항목으로 지칭되는 기본 유닛(대안적으로 데이터 블록으로 지칭될 수 있음)으로 데이터를 저장하는 각 메모리(32A 또는 32B)를 포함한다. 디바이스(28)에서 데이터 항목에 걸쳐 계산된 디지털 시그너처는 메모리(32B)에 저장된다. 보안 디바이스(26)는 메모리(32A)에서 데이터 항목에 걸쳐 계산된 시그너처(도 1에 미도시)를 유사하게 저장할 수 있다. 대안적으로 또는 추가적으로, 디바이스(26)는 후술되는 바와 같이, 컴퓨팅 디바이스(24)에 전달되는, 데이터, 어드레스 및/또는 제어 신호와 같은 신호를 통해 진행 중에(on the fly) 시그너처를 생성할 수 있다.
이후 상세한 설명 및 청구범위에서, "데이터 항목"이라는 용어는 메모리 디바이스(예를 들어, 디바이스(26 또는 28))에 저장된 데이터 및/또는 보안 메모리 디바이스(예를 들어, 디바이스(26)) 및 컴퓨팅 디바이스(예를 들어, 디바이스(24)) 사이에 전달되는, 데이터, 어드레스, 및/또는 제어 신호를 지칭할 수 있다. 저장된 데이터 항목은, 예를 들어, 프로그램 명령 또는 데이터 워드를 포함할 수 있다. 추가적으로 또는 대안적으로 저장된 데이터 항목은 프로그램 명령 및/또는 데이터 워드의 그룹을 포함할 수 있다.
컴퓨팅 디바이스(24)는 각 인터페이스(36A 또는 36B)를 통해 디바이스(26 또는 28)에 의해 송신된 데이터 항목을 처리할 수 있다. 디바이스(24)는 입력 브리지(44)를 통해 명령을 수신하고 각 프로그램을 실행한다.
일부 실시예에서, 각 외부 디바이스(26 또는 28)는 각 메모리(36A 또는 36B)에서 하나 이상의 데이터 항목 및 하나 이상의 디지털 시그너처를 저장한다. 일부 실시예에서, 외부 디바이스(26 및 28)에서 시그너처는 미리-계산되고 저장된다. 시그너처는 데이터 항목의 전체 집합 또는 그 부분 집합에 걸쳐 계산될 수 있다. 예를 들어, 시그너처는 컴퓨터 프로그램의 서브루틴을 포함하는 데이터 항목의 그룹에 서명하도록 계산될 수 있다. 추가적으로 또는 대안적으로, 시그너처는 적절한 사이즈의 다수의 데이터 항목의 블록에 걸쳐 계산될 수 있다. 일부 실시예에서, 모든 데이터 항목은 단일 키를 사용하여 서명된다. 그러나, 대안적인 실시예에서, 데이터 항목의 부분 집합은 상이한 키를 사용하여 서명될 수 있다.
시그너처를 계산하는 키는 비휘발성 메모리(non-volatile memory: NVM), 한번 프로그래밍가능한(one time programmable: OTP) NVM, 전기 퓨즈 버닝(electric fuse burning), 또는 물리적으로 예측할 수 없는 함수(physical unpredicatable function: PUF, 물리적으로 복제될 수 없는 함수라고도 지칭됨)를 사용하여 (그러나 이들로 제한되지 않음) 이 기술 분야에 알려진 여러 수단에 의하여 컴퓨팅 디바이스(24)에서 및/또는 보안 외부 디바이스(26)에서 프로그래밍되거나 저장될 수 있다. 추가적으로, 보안 외부 디바이스(26)는 보안 환경에서 적절한 각 공유 키(42)로 디바이스(24 및 26) 각각을 프로그래밍하는 것에 의해 또는 이 기술 분야에 알려진 키 교환 방법을 적용하는 것에 의해 보안 컴퓨팅 디바이스(24)와 짝지어질 수 있다.
디바이스(26)는 보안 디바이스(24)와 통신하는 동안 인터페이스(36A)를 통과하는 프로그램 명령, 데이터, 제어 신호, 및/또는 어드레스 신호에 걸쳐 시그너처를 (진행 중에) 생성할 수 있는 시그너처 엔진(40)을 더 포함한다. 대안적으로 또는 추가적으로, 시그너처 엔진(40)은 메모리(32A)에 저장된 데이터 항목에 걸쳐 하나 이상의 시그너처를 계산한다. 엔진(40)에 의해 생성된 시그너처는 메모리(32A)에 국부적으로 저장되고, 요청시 또는 임의의 다른 적절한 스케줄링 방법을 사용하여 컴퓨팅 디바이스(24)로 송신될 수 있다.
일부 실시예에서, 외부 디바이스(26 및 28)에 저장된 데이터 항목의 일부나 전부는 암호화된다. 이러한 실시예에서, 시그너처 엔진(40)은 암호화기(encrypting cipher)를 더 포함할 수 있고, 디바이스(24)는 복호화기(decrypting cipher)를 더 포함할 수 있다. 복호화기는 처리 코어(48)에 의하여 실행하기 전에 암호화된 데이터 항목을 복호화하는데 적절한 키를 구비한다(후술됨).
입력 브리지(44)는 외부 디바이스(26 및 28)와 양방향 통신 인터페이스로 기능하고, 수신하는 데이터 항목을 처리 코어(48)에 전달한다. 처리 코어(48)는 일반적으로 보안 시스템(20)의 메인 CPU, 가능하게는 추가적인 프로세서, 및 버스 마스터(bus master)를 포함하여 코어의 내부 및 I/O 동작(activity)을 조정한다.
디바이스(24)에서 시그너처 엔진(56)은 수신된 데이터 항목(및/또는 다른 데이터, 어드레스, 및/또는 제어 신호)에 걸쳐 시그너처를 계산하여 데이터 항목의 진정성을 확인한다. 확인이 실패하면, 디바이스(24)는 비밀 정보의 누설이나 노출을 방지하는 적절한 조치를 취한다. 컴퓨팅 디바이스(24)의 구조와 기능은 도 2를 참조하여 아래에서 상세히 설명된다.
일부 실시예에서, 시그너처 엔진(56 또는 40)에 의해 시그너처를 계산하기 전에, 서명될 데이터는 사용시 시그너처 계산 구조(scheme)에 지정된 적절한 입력 사이즈에 맞는 길이로 패딩(padded)된다.
도 2는 본 발명의 일 실시예에 따른 보안 컴퓨팅 시스템(20)의 상세를 도시한 개략 블록도이다. 도 2에서, 보안 컴퓨팅 디바이스(24)는 보안 시스템 입력(30)이라고 지칭되는 모듈로 표현되는 외부 디바이스와 통신한다. 보안 시스템 입력(30)은 예를 들어, 도 1의 외부 디바이스(26 또는 28), 메모리 디바이스, 또는 데이터 항목 및 각 시그너처의 임의의 다른 적절한 소스를 포함할 수 있다. 이하 상세한 설명에서, "보안 시스템 입력" 및 "외부 디바이스" 라는 용어는 상호 교환가능하게 사용될 수 있다.
디바이스(24)는 외부 디바이스의 메모리에 저장된 데이터에 액세스하기 위하여 입력 브리지(44)를 통해 라우팅된 제어 및 어드레스 지정 신호를 생성한다. 처리 코어(48)는 입력 브리지(44)를 통해 라우팅된 제어 및 어드레스 지정 신호를 생성하여 외부 디바이스로부터 프로그램 명령과 같은 데이터 항목을 판독한다. 입력 브리지(44)는 데이터 항목을 수신하고, 실행을 위해 처리 코어(48)에 전달한다. 일부 실시예에서, 데이터 항목은 처리 코어에 전달하기 전에 (또는 전달하는 것과 병렬로) 국부 캐시 메모리(50)에 캐싱된다.
수신된 데이터 항목은 또한 인증 제어 로직(52)에 및 시그너처 엔진(56)에 입력된다. 로직(52) 및 엔진(56)은 코어(48)와 동시에 및 코어와 비동기적으로 동작할 수 있다. 인증 로직(52)은 입력 브리지(44)를 통해 외부 디바이스로 라우팅된 적절한 제어 및 어드레스 지정 신호를 생성하는 것에 의해 외부 디바이스에 저장되거나 생성된 데이터 항목의 오리지널 시그너처를 추가적으로 판독한다. 대안적으로, 이들 시그너처는 데이터와 함께 자동적으로 입력(30)에 의해 입력 브리지(44)로 운반될 수 있다. 수신된 데이터 항목 및 각 키를 사용하여, 엔진(56)은 데이터 항목의 시그너처를 계산하고 이 시그너처를 확인을 위해 인증 로직(52)에 송신한다. 인증 로직(52)은 엔진(56)에 의해 계산된 시그너처와 오리지널 시그너처 사이에 매칭이 있는지를 찾는 것에 의해 수신된 데이터 항목의 진정성과 무결성을 확인한다. 일부 실시예에서, 시그너처 엔진(56)은 다수의 시그너처(예를 들어, 데이터 블록에서 다수의 데이터 항목의 시그너처)를 계산하고 이 시그너처를 시그너처 버퍼(58)에 저장한다. 이러한 실시예에서, 인증 로직(52)은 입력 브리지(44)에서 후속 데이터 항목(또는 블록)을 입력하기 전에 버퍼에 계류 중인 모든 시그너처를 확인할 수 있다. 시그너처를 확인하는 대안적인 방법은 아래에서 더 설명된다.
출력 브리지(60)는 처리 코어(48)를, 출력 채널이라고도 지칭되는 보안 시스템 출력(64)에 연결한다. 보안 시스템 출력(64)은, 처리 코어(48)에 의한 기록 또는 판독 동작이 보안 정보를 직접 또는 간접으로 노출시킬 수 있는 임의의 어드레스 공간, 및 출력 브리지(60)로부터 신호를 수신할 수 있는 임의의 다른 종류의 수신기를 포함한다. 디바이스(24)는 보안 시스템 출력(64)에 대응하는 어드레스 공간을 정적으로 구성할 수 있다. 추가적으로 또는 대안적으로, 어드레스 공간 또는 그 일부는 보안 시스템(20)의 상태와 구성의 변동에 따라 동적으로 변할 수 있다.
이하 상세한 설명 및 청구범위에서, 실행시 출력 브리지(60)에 (출력(64)에 의해 수신되거나 센싱될 수 있는) 신호를 생성할 수 있는 데이터 항목 또는 프로그램 명령은 출력 명령이라고 지칭된다. 일부 실시예에서, 처리 코어(48)는 출력 명령을 실행할 때 OUT REQUEST 신호를 인증 로직(52)에 신호 전달한다. 부수적으로, 인에이블될 때, 출력 명령에 대한 출력 브리지(60)의 응답은 신호를 출력하는 것이라고 지칭된다. 실행시 보안 정보를 보안 시스템 출력(64)에 노출시킬 수 있는 출력 명령의 예로는,
Figure 112014024534928-pat00001
비휘발성 메모리(NVM)에 및/또는 한번 프로그래밍가능한(OTP) 메모리에 기록하는 것.
Figure 112014024534928-pat00002
시스템 내 다른 칩, 메모리 디바이스, 또는 일반 목적 I/O(GPIO)와 같은 외부 디바이스에 신호를 기록하는 것.
Figure 112014024534928-pat00003
로크-비트(lock-bit), 테스트 모드, 클록 구성, 및 리셋 레지스터(register)에 액세스하는 것.
Figure 112014024534928-pat00004
보안 가속기 모듈(즉, 전력 분석 또는 EMI(electro-magnetic interference) 분석과 같은 측면 채널 공격 기술을 사용하여 공격자에 비밀 정보 및 키를 노출시킬 수 있는 컴퓨팅 AES, SHA1, SHA256, RSA, 또는 ECC 값과 같은 보안 기능을 수행하는 모듈)의 제어 및/또는 구성 레지스터(register)에 액세스하는 것을 포함한다.
입력 브리지(44)는 인증 제어 로직(52)과 처리 코어(48) 사이에 중재자(arbitrator)로 기능한다. 디폴트로, 처리 코어(48)는 더 높은 우선순위를 취하여 외부 디바이스(30)로부터 데이터 항목을 페치한다. 그러나, 요청 시에는 (예를 들어, 아래 도 3에 도시된 바와 같이 인증 상태에 있을 때에는), 인증 로직(52)은 입력 브리지(44)에서 STALL CORE INPUT 신호를 작동시키는 것에 의해 후속 데이터 항목, 또는 데이터 항목의 블록을 페치하는 것을 스톨(stall)하고, 입력 브리지(44)를 인수받아 외부에서 저장되거나 생성된 시그너처를 판독할 수 있다. 일부 실시예에서, 후속 데이터 블록의 입력은 이전에 페치된 데이터 블록에 있는 모든 데이터 항목이 인증될 때까지 금지된다. 추가적으로, 인증 로직(52)은 출력 브리지(60)를 스톨하여 STALL OUTPUT 신호를 작동시키는 것에 의해 보안 출력(64)에 액세스하는 것을 금지시킬 수 있다. 디바이스(24)의 기능, 및 구체적으로 보안 데이터의 노출을 방지하는데 이 "STALL" 기능을 사용하는 것은, 아래 도 3을 참조하여 더 설명된다.
전술된 시그너처 확인 기술이 시그너처 엔진(56)에 의해 연산된 시그너처를 입력 브리지(44)를 통해 수신된 시그너처와 비교하는 것인 반면, 대안적인 실시예에서 시그너처 확인은 해쉬 메시지 다이제스트를 비교하는 것에 기초할 수 있다. 시그너처를 계산하는 알고리즘은 때때로 해쉬 및 암호(encryption) 함수를 이용한다.
컴퓨팅 디바이스(24)가 보안 디바이스(26)와 통신하는 예시적인 실시예에서, 특정 데이터에 대응하는 시그너처는 해쉬 함수를 사용하여 이 데이터에 걸쳐 계산된 메시지 다이제스트를 포함한다. 메시지 다이제스트는 인터페이스(36A)를 통해 전달된 하나 이상의 데이터 항목 및/또는 데이터, 어드레스 및/또는 제어 신호에 걸쳐 계산될 수 있다. 메시지 다이제스트는 진행 중에 계산되어 디바이스(24 및 26)에 의해 최신으로 유지될 수 있다. 보안 외부 디바이스(26)는 메시지 다이제스트 시그너처를 스케줄링하고 배타적으로, 주기적으로, 또는 보안 컴퓨팅 디바이스(24)에 의해 야기된 요청 시 보안 컴퓨팅 디바이스(24)에 송신할 수 있다. 업데이트된 메시지 다이제스트를 수신할 때, 인증 제어 로직(52)은 디바이스(26)에 의해 계산된 메시지 다이제스트를 수신된 데이터에 걸쳐 시그너처 엔진(56)에 의해 내부에서 계산된 메시지 다이제스트와 비교하고 서명된 데이터의 진정성을 검증할 수 있다. 디바이스(24 및 26)들 사이에 공유된 비밀 키(42)는, 메시지 다이제스트 데이터와 혼합될 의사-랜덤 시퀀스를 생성하는 시드로 사용될 수 있다.
대안적인 실시예에서, 비밀 키에 종속하는 시퀀스와 메시지 다이제스트를 혼합하는 대신에, 암호 알고리즘은 비밀 키를 사용하여 메시지 다이제스트를 암호화하여 시그너처를 생성한다. 수신자(예를 들어, 보안 컴퓨팅 디바이스(24))는 데이터 및 시그너처를 수신하고 각 키를 사용하여 시그너처를 복호화하여 오리지널 비암호화된 메시지 다이제스트를 복구하고, 메시지 다이제스트 그 자체를 수신된 메시지에 걸쳐 재계산한다. 오리지널 및 재계산된 메시지 다이제스트가 매칭하면, 데이터는 진정한 것으로 가정될 수 있다. 해쉬 및 암호 함수의 예로는, 예를 들어, 보안 해쉬 알고리즘(SHA) SHA-1, 및 개선된 암호 알고리즘(AES)을 포함한다.
도 1 및 도 2에서 컴퓨팅 디바이스(24) 및 외부 디바이스(26 및 28)의 구성은 개념을 명확히 하기 위하여 선택된 순전히 예시적인 구성이다. 대안적인 실시예에서, 임의의 다른 적절한 구성이 사용될 수 있다. 컴퓨팅 디바이스(24) 및 외부 디바이스(26 및 28)의 상이한 요소는 ASIC 회로(Application-Specific Integrated Circuit) 또는 FPGA(Field-Programmable Gate Array)에서와 같이 임의의 적절한 하드웨어를 사용하여 구현될 수 있다. 일부 실시예에서, 컴퓨팅 디바이스 및 외부 디바이스의 일부 요소는 소프트웨어를 사용하여, 또는 하드웨어 및 소프트웨어 요소의 조합을 사용하여 구현될 수 있다. 예를 들어, 본 실시예에서, 시그너처 엔진(56) 및 인증 로직(52)은 전용 하드웨어 모듈로 구현될 수 있다. 다른 예로서, 시그너처 계산 및 암호/복호 기능은 시그너처 엔진(56 및 40) 내에서 하드웨어로, 처리 코어(48)에 의해 실행될 수 있는 소프트웨어로, 또는 하드웨어 및 소프트웨어의 조합으로 구현될 수 있다.
일반적으로, 컴퓨팅 디바이스(24) 내 처리 코어(48)는 본 명세서에 설명된 기능을 수행하도록 소프트웨어로 프로그래밍된 적어도 하나의 일반-목적 컴퓨터 프로세서를 포함한다. 이 소프트웨어는 예를 들어, 네트워크를 통해, 전자적 형태로 컴퓨팅 디바이스로 다운로딩될 수 있거나 또는 이 소프트웨어는 대안적으로 또는 추가적으로, 자기, 광, 또는 전자 메모리와 같은 비-일시적인 유형적 매체에 제공되거나 및/또는 저장될 수 있다.
도 3은 본 발명의 일 실시예에 따른 보안 상태-기계를 도시하는 도면이다. 디바이스(24)의 일부 보안 측면 및 동작 모드는 상태-기계의 3개의 상태 및 상태들 중에서 한정된 전이 규칙으로부터 유도된다. 보안 상태(80)에서, 동시에 실행되는 데이터 항목 또는 명령, 및 입력 브리지(44)를 통해 수신된 모든 앞서 실행된 데이터 항목은, 인증 로직(52)에 의해 진정한 것으로 이미 확인된 것이다. 보안 상태(80)는 디바이스(24)가 보안 시스템 출력(64)에 액세스하는 것이 허용된 (3개의 상태 중) 유일한 상태이다. 상태(80)에 있는 동안, 디바이스(24)는 입력 브리지(44)를 통해 데이터 항목을 수신하도록 허용된다. 데이터 항목을 수신할 때, 상태-기계는 비보안 상태(84)로 전이한다.
비보안 상태(84)에 있는 동안, 임의의 새로이 수신된 데이터 항목의 적어도 일부의 진정성은 아직 확인되지 않아서, 디바이스(24)는 보안 시스템 출력(64)에 액세스하는 것이 허용되지 않는다. 처리 코어(48)가 출력 명령을 만나는 경우, 출력 채널에 실제 액세스하는 것은 출력 명령이 인증될 때까지 지연된다(즉, 출력 브리지(60)에 의한 신호의 출력이 지연된다). 그러나, 비보안 상태(84)에 있는 동안, 처리 코어(48)는 중립 데이터 항목이 아직 인증되지 않은 경우에도 보안 시스템 출력(64)에 액세스를 요청하지 않는 중립 데이터 항목을 계속 처리할 수 있다.
비보안 상태(84)로부터 인증 상태(88)로 전이하는 것은 인증 로직(52)이 AUTHENTICATION REQUEST 신호를 수신할 때 일어난다. 인증 상태(88)에 있는 동안, 인증 로직(52)은 입력 브리지(44)에서 데이터 항목을 수신하는 것을 스톨(stall)시키고 입력 브리지를 인수받아 외부 디바이스(30)로부터 오리지널 시그너처를 판독한다. 인증 로직(52)은 오리지널 시그너처를 시그너처 엔진(56)에 의해 계산된 시그너처와 비교하여 데이터를 인증한다. 전술된 바와 같이, 인증 로직(52)은 처리 코어(48)가 (아마도 다른) 데이터 항목을 실행하고 있는 동안 데이터 항목을 비동기적으로 인증할 수 있다.
여러 트리거들이 AUTHENTICATION REQUEST 신호를 생성하여 상태-기계를 인증 상태(88)로 전이시킬 수 있다. 일부 예시적인 트리거들이 아래에 주어진다:
Figure 112014024534928-pat00005
처리 코어(48)가 보안 시스템 출력(64)에 액세스를 하려고 시도하고 디바이스가 보안 상태(80)에 있지 않을 때 OUT REQUEST 신호를 작동시키는 것.
OUT REQUEST 신호를 주기적으로 작동시키거나, 또는 마지막으로 방문한 인증 상태(88) 이후 미리 한정된 타임아웃 후에 작동시키는 것.
Figure 112014024534928-pat00006
검증을 위해 계류 중인 시그너처에 할당된 메모리 공간이 가득 차 있을 때. 다수의 계류 중인 시그너처를 검증하는 비보안 메모리를 갖는 예시적인 실시예는 아래에 더 설명된다.
Figure 112014024534928-pat00007
입력 브리지(44)가 전달 데이터 항목으로 차 있지 않아서, 인증 로직(52)이 입력 브리지를 통해 보안 입력 시스템 입력(30)에 저장된 시그너처를 검색할 수 있을 때.
데이터 항목이 상태(88)에서 진정한 것으로 확인될 때, 상태-기계는 보안 상태(80)로 다시 전이한다. 그렇지 않은 경우에는, 인증은 실패한 것이고 인증 로직(52)은 알람 신호를 생성한다.
디바이스(24)는 알람 신호에 응답해서 여러 조치를 취하여 높은 보안 레벨을 유지할 수 있다. 디바이스(24)가 알람 신호에 응답해서 취할 수 있는 예시적인 동작은,
Figure 112014024534928-pat00008
보안 환경을 리셋하는 것.
Figure 112014024534928-pat00009
비밀 키와 같은 보안 데이터를 소거하는 것.
Figure 112014024534928-pat00010
디바이스(24)가 데이터 항목의 처리/인증과 같은 모든 동작을 수행하는 것을 영구적으로 종료시켜, 입력 및 출력 브리지를 추가적으로 스톨시키는 것.
Figure 112014024534928-pat00011
응답 레벨은 인증 실패 이벤트의 수에 종속할 수 있다. 예를 들어, 보안 디바이스(24)는 인증 실패 이벤트의 미리 한정된 수를 인식한 후에 동작을 재시작하고, 추가적인 인증 실패가 발생하는 경우, 예를 들어, 모든 동작을 종료하거나 보안 정보를 삭제하는 것에 의해 보다 공격적으로 응답할 수 있다.
이제 보안 시스템(20)의 예시적인 실시예를 설명하며, 여기서 외부 디바이스는 기존 비휘발성 저장 디바이스와 같은 비보안 메모리 디바이스(28)를 포함한다. 본 예에서, 메모리 디바이스는 보안 컴퓨팅 디바이스(24)에 의해 실행되는 컴퓨터 프로그램 명령(및 아마도 관련된 데이터)을 포함하는 데이터 항목을 저장한다. 디바이스(28)는 시그너처를 저장하기 위해 저장 용량 중 임의의 적절한 공유 부분을 할당할 수 있다. 예를 들어, 저장 용량의 75%는 유저 데이터에 사용될 수 있고 25%는 시그너처를 저장하는데 사용될 수 있다. 시그너처는 (메모리 디바이스 외부에서) 데이터 항목의 블록에 걸쳐 계산될 수 있다. 예를 들어, 각 256-비트 메모리 블록은 64-비트 시그너처로 서명될 수 있다.
이 예에서 보안 디바이스(24)는 256 비트의 캐시 라인 사이즈를 가지는 캐시 메모리(50)를 구비하는 것으로 가정한다. 입력 브리지(44)를 통해 판독된 데이터 항목은 처리 코어(48)에 의해 처리하기 위해 전달되기 전에 또는 전달하는 것과 병렬로 캐시에 저장된다. 캐시 미스 이벤트 시, 컴퓨팅 디바이스(24)는 새로운 데이터 항목을 캐시에 페치한다. 처리 코어(48)에 의해 프로그램 명령을 실행하고 각 256-비트 블록에 대해 시그너처 엔진(56)에 의해 시그너처를 계산하는 것은 동시에 수행될 수 있다. 디바이스(24)는 시그너처 버퍼(58)에서 다수의 계산된 시그너처를 저장하여, 진정성 검증을 실제로 수행하기 전에 다수의 데이터 페치를 수행할 수 있다. AUTHENTICATION REQUEST 시, 처리 코어(48)는 중지되고 인증 로직(52)은 외부 메모리(28)로부터 각 오리지널 시그너처를 판독하고 오리지널 시그너처를 계산된 시그너처와 비교한다. 모든 계류 중인 계산된 시그너처가 검증된 후, 처리 코어(48)가 실행을 재개한다.
전술된 실시예의 구성은 예시적인 구성이고, 입력 및 메모리 요소의 임의의 다른 적절한 구성이 대안적으로 사용될 수 있다. 예를 들어, 다른 데이터 블록 사이즈 및 시그너처 사이즈가 적용될 수 있다. 다른 예로서, 임의의 적절한 시그너처 버퍼 사이즈가 사용될 수 있다. 예시적인 실시예에서, 32-비트 시그너처는 128-비트 데이터 블록에 걸쳐 계산된다. 데이터 블록은 128-비트 캐시 라인을 가지는 캐시 메모리에서 캐싱되고, 최대 5개의 비-확인된 시그너처가 160-비트 시그너처 버퍼에 저장될 수 있다.
도 3을 참조하여 설명된 상태-기계의 구성은 본 발명자가 구현하기에 적절한 것으로 발견한 예시적인 구성이다. 대안적인 실시예에서, 임의의 다른 적절한 개수의 상태 및 이들 상태 사이에 임의의 적절한 전이 규칙이 사용될 수 있다.
도 4는 본 발명의 일 실시예에 따라 보안 컴퓨팅 디바이스(24)에서 구현될 수 있는 인증하는 방법을 도시한 개략 흐름도이다. 본 방법은 디바이스(24)가 코드 수신 단계(100)에서 처리 코어(48)에 의해 실행하기 위한 컴퓨터 프로그램 명령을 수신하는 것으로 시작한다. 입력 브리지(44)를 통해 명령을 수신할 때, 디바이스(24)는 비보안 상태(84)로 전이한다. 디바이스(24)는 요청 체크 단계(104)에서 인증 요청이 계류 중인지 여부를 체크한다. 단계(104)에서 인증이 요구되지 않는 경우, 처리 코어(48)는 실행 단계(108)에서 수신된 프로그램 명령을 실행한다. 그렇지 않은 경우, 디바이스(24)는 인증 단계(116)로 진행한다(아래에 설명됨).
명령의 실행이 수행되는 동안, 디바이스(24)는 처리 코어(48)가 명령 체크 단계(112)에서 중립 명령 또는 보안 시스템 출력(64)에 액세스를 요구하는 명령을 동시에 실행하고 있는지 여부를 체크한다. 처리 코어(48)가 중립 명령을 실행하고 있는 한, 디바이스(24)는 단계(104)로 다시 루프 수행된다. 그렇지 않은 경우, 처리 코어(48)는 아직 인증되지 않은 출력 명령을 실행하는 것에 의해 보안 시스템 출력(64)에 액세스를 시도하고 있는 것으로 볼 수 있다. 디바이스(24)는 그리하여 인증 단계(116)로 진행하고, 여기서 디바이스(24)는 인증 상태(88)로 전이한다. 이 상태에서, 인증 제어 로직(52)은 처리 코어(48)의 실행을 중지하고, STALL OUTPUT 신호를 작동시키는 것에 의해 출력 브리지(60)를 금지시키고, 전술된 바와 같이 계산된 시그너처를 오리지널 시그너처와 비교하는 것에 의해 인증 확인을 수행한다.
인증 검증 단계(120)에서, 디바이스(24)는 시그너처 매칭이 단계(116)에서 발견되었는지 여부를 체크한다. 시그너처들이 매칭한 경우, 디바이스(24)는 보안 상태 전이 단계(124)에서 보안 상태(80)로 전이하고, 처리 코어(48)는 실행을 재개한다. 보안 상태(80)에 있는 동안, 디바이스(24)는 외부 메모리로부터 프로그램 명령을 페치하여, 보안 시스템 출력(64)에 안전하게 액세스하는 것이 허용된다. 단계(120)에서 인증이 실패하면, 인증 로직(52)은 알람(alert) 단계(132)에서 알람 신호를 생성하고, 단계(100)로 다시 루프 수행하여 추가적인 프로그램 명령을 페치한다. 디바이스(24)는 전술된 바와 같이 여러 방식으로 알람 신호에 응답할 수 있다.
디바이스(24)는 실행 체크 단계(128)에서 모든 페치된 명령의 실행이 완료되었는지 여부를 체크한다. 실행이 완료되었다면, 디바이스(24)는 단계(100)로 다시 루프 수행하여 후속 프로그램 명령을 페치한다. 그렇지 않은 경우, 디바이스(24)는 단계(104)로 다시 루프 수행하여 인증 요청이 계류 중인지 여부를 체크한다.
도 4의 방법은 본 명세서에서 예로서 도시되고 설명된 것이고, 본 방법의 목적을 달성하는 대안적인 방법은 본 발명의 범위 내에 있다. 예를 들어, 단계(116)에서 처리 코어를 중지하는 대신에, 코어는 중립 명령을 계속 실행하거나 및/또는 출력 명령이 인증될 때까지 보안 시스템 출력(64)에 실제 액세스를 지연시킬 수도 있다.
본 명세서에 설명된 실시예는 메모리로부터 판독된 데이터의 인증을 주로 처리하는 것이지만, 본 명세서에 설명된 방법 및 시스템은 컴퓨팅 디바이스가 민감한 정보를 허가 없이 출력하지 못하게 하는 다른 응용에서 사용될 수 있다.
전술된 실시예는 예로서 언급된 것이고, 본 발명은 본 명세서에 구체적으로 설명되고 도시된 것으로 제한되지 않는 것으로 이해된다. 오히려, 본 발명의 범위는 본 명세서에서 설명된 여러 특징의 조합과 서브 조합, 및 상기 설명을 판독할 때 이 기술 분야에 통상의 지식을 가진 자에게 일어날 수 있는, 종래 기술에 알려져 있지 않은 여러 변형과 변경을 모두 포함한다. 본 특허 출원에서 참조 문헌으로 병합된 문서들은 이들 병합된 문서들에 한정된 용어들이 본 명세서에 명시적으로 또는 암시적으로 이루어진 정의와 충돌하는 경우에 본 명세서에서 정의된 것으로 해석되는 것을 제외하고는 본 출원에 일체로 포함된 것으로 고려된다.

Claims (19)

  1. 컴퓨팅 디바이스로서,
    프로그램을 실행하는 상기 디바이스에 의해 사용하기 위한 데이터 항목의 시퀀스를 수신하도록 연결된 입력 브리지;
    출력 브리지;
    상기 입력 브리지로부터 상기 데이터 항목을 수신하고 상기 프로그램을 실행하여 상기 시퀀스에서 주어진 데이터 항목에 응답해서 상기 출력 브리지에서 신호를 출력하도록 연결된 처리 코어; 및
    상기 처리 코어가 상기 프로그램을 실행하는 동안 상기 데이터 항목을 수신하고 인증하며, 상기 주어진 데이터 항목이 인증될 때까지 상기 출력 브리지에 의한 상기 신호의 출력을 금지하도록 연결된 인증 로직을 포함하는 컴퓨팅 디바이스.
  2. 제1항에 있어서, 상기 데이터 항목은 프로그램 명령을 포함하고, 상기 주어진 데이터 항목은 출력 명령을 포함하며, 상기 처리 코어는 상기 출력 명령을 포함하는 상기 프로그램 명령을 실행하는 것에 의해 상기 프로그램을 실행하도록 구성된 것인 컴퓨팅 디바이스.
  3. 제1항에 있어서, 상기 인증 로직은 상기 처리 코어에 의해 상기 프로그램을 실행하는 것과 비동기적으로 상기 데이터 항목을 인증하도록 구성된 것인 컴퓨팅 디바이스.
  4. 제1항에 있어서, 상기 인증 로직은, 상기 주어진 데이터 항목이 상기 처리 코어에 의해 상기 프로그램을 실행하는데 사용된 후에 상기 주어진 데이터 항목을 인증하고, 상기 주어진 데이터 항목의 인증이 완료될 때까지 상기 출력 브리지에 의한 상기 신호의 출력을 지연시키도록 구성된 것인 컴퓨팅 디바이스.
  5. 제1항에 있어서, 상기 인증 로직은 상기 데이터 항목의 하나 이상의 디지털 시그너처를 계산하고 상기 계산된 시그너처를 상기 입력 브리지를 통해 상기 디바이스에 의해 수신된 각 오리지널 시그너처와 비교하는 것에 의해 상기 데이터 항목을 인증하도록 구성된 것인 컴퓨팅 디바이스.
  6. 제5항에 있어서, 상기 인증 로직은 상기 계산된 시그너처 중 적어도 하나가 상기 각 오리지널 시그너처와 매칭하지 않는 경우 알람 신호를 생성하도록 구성된 것인 컴퓨팅 디바이스.
  7. 제5항에 있어서, 상기 입력 브리지는 데이터 항목의 제1 및 제2 블록을 수신하는 것에 의해 상기 데이터 항목을 수신하도록 구성되고, 상기 제2 블록을 수신하는 것은 상기 인증 로직을 사용하여 상기 제1 블록의 모든 데이터 항목을 인증한 후에만 가능한 것인 컴퓨팅 디바이스.
  8. 보안 컴퓨팅 방법으로서,
    컴퓨팅 디바이스의 처리 코어에 의해 프로그램을 실행하는데 사용하기 위한 데이터 항목의 시퀀스를 입력 브리지를 통해 상기 컴퓨팅 디바이스에서 수신하는 단계;
    상기 처리 코어에 의해 상기 프로그램을 실행하여 상기 시퀀스에서 주어진 데이터 항목에 응답해서 상기 디바이스로부터 신호를 출력하는 단계; 및
    상기 처리 코어가 상기 프로그램을 실행하는 동안 인증 로직을 사용하여 상기 데이터 항목을 인증하고, 상기 주어진 데이터 항목이 인증될 때까지 상기 신호의 출력을 금지하는 단계를 포함하는 보안 컴퓨팅 방법.
  9. 제8항에 있어서, 상기 데이터 항목은 프로그램 명령을 포함하고, 상기 주어진 데이터 항목은 출력 명령을 포함하며, 상기 프로그램을 실행하는 것은 상기 출력 명령을 포함하는 상기 프로그램 명령을 실행하는 것을 포함하는 것인 보안 컴퓨팅 방법.
  10. 제8항에 있어서, 상기 데이터 항목을 인증하는 것은 상기 처리 코어에 의해 상기 프로그램을 실행하는 것과 비동기적으로 상기 데이터 항목을 인증하는 것을 포함하는 것인 보안 컴퓨팅 방법.
  11. 제8항에 있어서, 상기 데이터 항목을 인증하는 것은 상기 주어진 데이터 항목이 상기 처리 코어에 의해 상기 프로그램을 실행하는데 사용된 후에 상기 주어진 데이터 항목을 인증하는 것과, 상기 주어진 데이터 항목의 인증이 완료될 때까지 상기 신호의 출력을 지연시키는 것을 포함하는 것인 보안 컴퓨팅 방법.
  12. 제8항에 있어서, 상기 데이터 항목을 인증하는 것은 상기 데이터 항목의 하나 이상의 디지털 시그너처를 계산하는 것과, 상기 계산된 시그너처를 상기 입력 브리지를 통해 상기 디바이스에 의해 수신된 각 오리지널 시그너처와 비교하는 것을 포함하는 것인 보안 컴퓨팅 방법.
  13. 제12항에 있어서, 상기 데이터 항목을 인증하는 것은 상기 계산된 시그너처 중 적어도 하나가 상기 각 오리지널 시그너처와 매칭하지 않는 경우 알람 신호를 생성하는 것을 포함하는 것인 보안 컴퓨팅 방법.
  14. 제12항에 있어서, 상기 데이터 항목의 시퀀스를 수신하는 것은 데이터 항목의 제1 및 제2 블록을 수신하는 것을 포함하고, 상기 제2 블록을 수신하는 것은 상기 인증 로직을 사용하여 상기 제1 블록의 모든 데이터 항목을 인증한 후에만 가능한 것인 보안 컴퓨팅 방법.
  15. 컴퓨팅 시스템으로서,
    데이터 항목의 시퀀스를 제공하도록 구성된 외부 디바이스; 및
    컴퓨팅 디바이스를 포함하되,
    상기 컴퓨팅 디바이스는,
    프로그램을 실행하는 상기 컴퓨팅 디바이스에 의해 사용하기 위한 데이터 항목의 시퀀스를 상기 외부 디바이스로부터 수신하도록 연결된 입력 브리지;
    출력 브리지;
    상기 입력 브리지로부터 상기 데이터 항목을 수신하고 상기 프로그램을 실행하여 상기 시퀀스에서 주어진 데이터 항목에 응답해서 상기 출력 브리지에서 신호를 출력하도록 연결된 처리 코어; 및
    상기 처리 코어가 상기 프로그램을 실행하는 동안 상기 데이터 항목을 수신하고 인증하며, 상기 주어진 데이터 항목이 인증될 때까지 상기 출력 브리지에 의한 상기 신호의 출력을 금지하도록 연결된 인증 로직을 포함하는 것인 컴퓨팅 시스템.
  16. 제15항에 있어서, 상기 외부 디바이스는 상기 데이터 항목 및 인증 정보를 저장하도록 구성된 메모리 디바이스를 포함하며, 상기 컴퓨팅 디바이스는 상기 인증 정보의 적어도 일부를 생성하도록 구성된 시그너처 엔진을 더 포함하는 것인 컴퓨팅 시스템.
  17. 제15항에 있어서, 상기 외부 디바이스는 인증 정보의 적어도 일부를 생성하도록 구성된 보안 메모리 디바이스를 포함하는 것인 컴퓨팅 시스템.
  18. 제17항에 있어서, 상기 보안 메모리 디바이스는 상기 보안 메모리 디바이스에 의해 상기 컴퓨팅 디바이스로 전달된 상기 데이터 항목의 적어도 일부에 대해 진행 중에 인증 정보를 생성하도록 구성되고, 상기 인증 로직은 상기 인증 정보를 사용하여 상기 데이터 항목을 인증하도록 구성된 것인 컴퓨팅 시스템.
  19. 제17항에 있어서, 상기 보안 메모리 디바이스는 비휘발성 메모리를 포함하는 것인 컴퓨팅 시스템.
KR1020140029902A 2013-08-13 2014-03-13 비동기적인 인증을 갖는 보안 컴퓨팅 시스템 KR101656092B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

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

Family

ID=52555178

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140029902A KR101656092B1 (ko) 2013-08-13 2014-03-13 비동기적인 인증을 갖는 보안 컴퓨팅 시스템

Country Status (3)

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

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106156632B (zh) * 2015-05-17 2019-10-29 新唐科技股份有限公司 安全装置及在其内提供安全服务至主机的方法、安全设备
DE102015209123A1 (de) * 2015-05-19 2016-11-24 Robert Bosch Gmbh Recheneinrichtung und Betriebsverfahren hierfür
CN108399328B (zh) * 2017-02-08 2021-04-27 新唐科技股份有限公司 系统存储器内容认证设备及方法

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 (ko) * 2003-05-02 2010-10-06 엘지전자 주식회사 대화형 광디스크의 인증 방법
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 (de) * 2008-02-29 2018-03-15 Globalfoundries Inc. Sicheres Initialisieren von Computersystemen
TW201305842A (zh) * 2011-07-29 2013-02-01 Lionic Corp 在儲存裝置上即時監控檔案系統以維護安全的方法與裝置

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
TW201506671A (zh) 2015-02-16
TWI549020B (zh) 2016-09-11
CN104376277A (zh) 2015-02-25
KR20150020017A (ko) 2015-02-25
CN104376277B (zh) 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
KR101714108B1 (ko) 검증가능 누출 방지 암호화 및 복호화
US9954826B2 (en) Scalable and secure key management for cryptographic data processing
JP5607546B2 (ja) 保護された動作モードの間にシステムアクセスを制御するための方法および装置
TWI391864B (zh) 臨界保全參數之產生及用於智慧卡記憶體模組的交換系統與方法
US10482275B2 (en) Implementing access control by system-on-chip
US10110380B2 (en) Secure dynamic on chip key programming
CN104252881B (zh) 半导体集成电路及系统
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
US20080205651A1 (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 (zh) 資料的加解密方法、裝置、系統及存儲介質
US8774407B2 (en) System and method for executing encrypted binaries in a cryptographic processor
US20210240833A1 (en) Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain
CN110659506A (zh) 基于密钥刷新对存储器进行重放保护
US10452565B2 (en) Secure electronic device
US11176058B2 (en) Address decryption for memory storage
KR101656092B1 (ko) 비동기적인 인증을 갖는 보안 컴퓨팅 시스템
US11281434B2 (en) Apparatus and method for maintaining a counter value
US20210126776A1 (en) Technologies for establishing device locality
JP2015015542A (ja) 情報処理システム
CN117280345A (zh) 绑定信任锚和asic

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