KR20060018852A - 랜덤 함수를 사용하는 실행의 증명 - Google Patents

랜덤 함수를 사용하는 실행의 증명 Download PDF

Info

Publication number
KR20060018852A
KR20060018852A KR1020057021852A KR20057021852A KR20060018852A KR 20060018852 A KR20060018852 A KR 20060018852A KR 1020057021852 A KR1020057021852 A KR 1020057021852A KR 20057021852 A KR20057021852 A KR 20057021852A KR 20060018852 A KR20060018852 A KR 20060018852A
Authority
KR
South Korea
Prior art keywords
program
security
mode
results
execution
Prior art date
Application number
KR1020057021852A
Other languages
English (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
Application filed by 코닌클리케 필립스 일렉트로닉스 엔.브이. filed Critical 코닌클리케 필립스 일렉트로닉스 엔.브이.
Publication of KR20060018852A publication Critical patent/KR20060018852A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • H04L9/3278Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response using physically unclonable functions [PUF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2129Authenticate client device independently of the user
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution

Abstract

물리적 랜덤함수(PUF)는 어림하기는 쉬우나 특징화하기는 어려운 함수이다. 제어된 물리적 랜덤 함수들(CPUF)은 분리될 수 없게 PUF에 물리적으로 결합된 보안 알고리즘에 의해 제어되는 보안 프로그램을 통해 액세스될 수 있을 뿐이다. CPUF들은 인증실행을 할 수 있게 하며, 이 경우 특정 프로세서에서 특정의 계산이 실행되었음을 입증하는 인증서가 생성된다. 본 발명은 임의의 제3자가 검증할 수 있는 실행의 증명을 발생하기 위한 추가의 계층을 제공한다. 이 실행증명은 보안 메모리 및 보안 인터럽트가능 프로그램 실행을 제공하는 데에도 유용하다.
물리적 랜덤함수, 보안 프로그램, 인터페이스, 보안 인터럽트가능 프로그램

Description

랜덤 함수를 사용하는 실행의 증명{Proof of execution using random function}
본 발명은 프로그램 실행의 진정성(authenticity)을 입증하는 방법, 이러한 방법을 구현하도록 배열된 시스템, 이러한 방법을 구현하기 위한 컴퓨터 프로그램 제품, 이러한 방법을 구현하기 위한 컴퓨터 실현가능의 명령들, 및 이러한 방법에 의해 발생된 증명결과들을 운반하는 신호에 관한 것이다.
전자거래와 같은 애플리케이션에서, 계산(혹은 프로그램)이 사용자 혹은 제3자에 의해 특정의 프로세서 상에서 실제로 실행된 것을 검증하는 것이 요구될 수 있다. 2002년 12월, 18회 연례 컴퓨터 보안 애플리케이션들 컨퍼런스의 회보, 블라이스 가센드(Blaise Gassend), 드웨인 클라크(Dwaine Clarke), 마르텐 반 다이크(Marten van Dijk) 및 스리니바스 데바다스(Srinivas Devadas) 공저, "제어된 물리적 랜덤 함수들(Controlled Physical Random Functions)"(종래 기술 문헌이라 함)에서 인증실행은 특정의 계산이 특정의 프로세서 칩에서 실행되었다는 것과 계산이 실행되어 주어진 계산결과를 생성하였음을 특정의 프로세서 칩의 사용자에게 인증하는 인증서(전자-인명서라 함)를 계산결과와 함께 생성하는 프로세스로서 정의된다.
전자-인증서의 생성 및 검증을 위해 종래 기술의 문헌에서 사용되는 프레임워크는 물리 랜덤 함수의 개념으로 구축된다. 물리적 랜덤 기능(PUF: Physical Random Function)은 복합 물리 시스템의 도움을 받아 어림잡는 랜덤 함수이다. 약칭 PUF(PRF 대신에)의 사용은 발음하기가 쉬운 잇점이 있고, 의사 랜덤 함수들과의 혼란을 없앤다. PUF들은 여러가지 방법들로 구현될 수 있다. PUF들의 구현들 중 일부는 각각의 제품 샘플(예를 들면 각각의 개별적인 반도체 칩)이 상이한 기능을 구현하게 만들기가 쉽다. 이것은 정당 식별 애플리케이션들에서 PUF를 사용할 수 있게 하여준다.
PUF는 챌린지들을 응답들에 맵핑하며, 물리적 디바이스에 의해 실현되며, 다음의 (1) PUF는 어림하기가 쉬움: 물리적 디바이스는 단시간 내에 함수를 쉽게 어림할 수 있음, 그리고 (2) PUF는 특징화하기기 어려움: 수락가능의 다수의 다항식의 물리적 측정들(특히, 선택된 챌린지-응답 쌍들의 결정)로부터, 더 이상 보안 디바이스를 갖지 않고(보안 디바이스에 액세스하지 않고) 다량의 다항식의 자원들(시간, 자료, 등)만을 사용할 수 있는 공격자가 랜덤하게 선택된 챌린지에의 응답에 관한 정보의 무시할만한 량을 추출할 수 있을 뿐임인 2개의 특성들을 갖는 함수이다. 위의 정의에서, 단시간(short) 및 다항식이라는 용어들은 보안 파라미터인 디바이스의 크기에 관련된 것이다. 특히, 단시간(short)은 선형 혹은 낮은 차수의 다항식을 의미한다. 수락가능이라는 용어는 측정기술에서 현 기술수준에 관계된 것이며 향상된 방법들이 나오면 바뀔 것이다.
PUF들의 예들은 실리콘 PUF들(2002년, 11월, 컴퓨터 및 통신 보안에 대한 제 9 회 컨퍼런스의 회보, 블라이스 가센드, 드웨인 클라크, 마르텐 반 다이크 및 스리니바스 데바다스 공저, 실리콘 물리적 랜덤 함수들(Silicon Physical Random Functions)), 광학 PUF들(피.에스. 라비칸스(P.S.Ravikanth), 메사츄세츠 공과 대학(MIT), 물리적 일방 함수들(Physical One-Way Functions), 2001), 및 디지털 PUF들이다. 실리콘 PUF들은 제조 프로세스에 기인한 칩마다 다른 점들을 이용한다. 광학 PUF들은 코히런트 광(레이저) 빔으로 조사된 광학 구조물들에 의해 발생된 스펙클 패턴의 예측불가성을 이용한다. 디지털 PUF들은 암호화 및 정당 목적으로 사용되는 것인, 조작불가 환경이 비밀 키를 보호한다는 통상의 시나리오를 말한다.
PUF는 분리될 수 없게 PUF에 물리적으로 링크된 보안 알고리즘(즉, 알고리즘을 우회하는 어떠한 시도이든 PUF를 파괴하게 될 것임)을 통해 액세스될 수 있을 경우에만 제어되게 정의된다(제어된 PUF 또는 CPUF). 특히, 이러한 보안 알고리즘은 PUF에 건네지는 챌린지들을 제약시킬 수 있고 외부 세계에 주어지는 응답들에 관한 정보를 제한시킬 수 있다. 제어는 PUF들이 단순 정당 식별 애플리케이션들을 넘어서게 하는 기본 생각이다.
CPUF의 예는 종래 기술 문헌에 기재되어 있다. 보안 프로그램은 보안 프로그램으로부터 2개의 원시함수들 GetSecret(.) 및 GetResponse(.)을 통해서만 액세스될 수 있는, PUF에 링크된, 보안 알고리즘의 제어 하에 사용된다. GetSecret(.)는 PUF에의 입력에 대해, 원시함수들이 실행되는 보안 프로그램의 표현에 의존하게 한다. GetResponse(.)는 PUF의 출력에 대해, 원시함수들이 실행되는 보안 프로그램의 표현에 의존하게 한다. 이러한 의존성 때문에, PUF에의 입력 및 PUF의 출력 은 이들 원시함수들이 다른 보안 프로그램 내로부터 실행된다면 다를 것이다. 또한, 이들 원시함수들은 종래 기술의 문헌에 기재된 바와 같이, 새로운 챌린지-응답 쌍들의 생성이 조정(regulated)되고 보안이 될 수 있게 한다.
인증실행(종래 기술 문헌에 기재된 바와 같은)은 사용자에게만 알려진 비밀 PUF 챌린지-응답 쌍에 근거하여 사용자가 계산할 수 있게 하는, 챌린지에 대한 GetSecret(.) 원시함수를 사용한다. 이렇게 하여 출력은 PUF 알고리즘으로 특정의 프로세스 칩에서 알고리즘을 실행했음을 입증하기 위해 사용자에게 사용될 수 있다.
그러나, 사용자는 자신의 챌린지-응답 쌍을 사용하여 스스로 결과를 만들어 낼 수도 있을 것이기 때문에, 프로그램이 특정의 프로세서에서 실제 실행되었음을 제3자에게 입증하기 위해 출력을 사용할 수 없다. 그러나, 예를 들면 전자거래 시스템들에서, 프로그램(프로그램 시청에 대해 요금을 지불하는 프로그램과 같은)이 특정 프로세서에서 실행되었음을 제3자에게 실제로 입증할 수 있는 것이 바람직하다.
그러므로, 본 발명의 목적은 전자-증명이라고 하는, 특정 프로세서에서 특정 계산에 대해 실행의 증명으로서, 임의의 제3자에 의해 검증될 수 있는 인증서로서 사용될 수 있는 증명결과들을 발생할 수 있게 하는 방법을 제공하는 것이다.
이 목적은 프로그램 명령들의 실행의 진정성을 입증하는 방법에 의해 실현되며, 이 방법은, 랜덤 함수를 포함하는 보안 디바이스에서 보안 프로그램의 제어 하에 프로그램 명령들을 실행하는 단계, 상기 랜덤 함수는 제어된 인터페이스를 통해 상기 보안 프로그램으로만 액세스가 가능하며, 상기 제어된 인터페이스는 원시함수를 호출하는 상기 보안 프로그램의 부분들을 표현의 적어도 부분에 의존하는 출력을 리턴하는 상기 랜덤 함수에 액세스하는 적어도 하나의 원시함수를 포함하며; 상기 랜덤 함수를 사용하여, 상기 제어된 인터페이스를 통해 상기 랜덤 함수에 액세스함으로써 제1 모드에서 동작하는 상기 보안 프로그램의 실행시 증명 결과들을 계산하는 단계; 및 상기 랜덤 함수를 사용하여, 상기 제어된 인터페이스를 통해 상기 랜덤 함수에 액세스함으로써 제2 모드에서 동작하는 상기 동일 보안 프로그램의 실행시 증명 결과들을 계산하는 단계를 포함한다.
보안 프로그램은 다른 동작모드들에서 동일한 혹은 다른 실행으로 실행될 수 있다. 동일 프로그램에 적어도 2개의 동작모드들을 갖추게 함으로써, 보안 프로그램은 서로 다른 프로그램 실행들에서 랜덤 함수를 효과적으로 사용할 수 있다. 랜덤 함수에 액세스하는 원시함수가, 서로 다른 모드들에서 동작하는 동일 보안 프로그램인 보안 프로그램의 적어도 부분의 표현에 의존하기 때문에, 랜덤 함수에의 액세스는 이들 서로 다른 모드들에서 보안 프로그램에 대해 보장되고, 그 외 어떤 다른 보안 프로그램은 랜덤 함수에 의해 제공된 보안을 타협하는 식으로 랜덤 함수에 액세스할 수 없다. 그러므로, "복수-모드(multi-mode)" 프로그램은 보안 프로그램이 실행되는 첫회 동안에 다른 모드들에서의 기능이 이미 명백하게 정의되고 제한되므로 잇점이 있는 개념이다.
보안 프로그램의 표현에 출력이 의존하게 함으로써, 보안 디바이스에서 실행되는 어떤 다른 보안 프로그램이든 제어된 인터페이스를 통해 동일 입력에 대해서 다른 결과들을 (거의) 얻을 수 있게 한다. 예를 들면, 불법 증명결과들을 발생하기 위한 정보를 얻기 위해 해커에 의해 설계된 어떤 다른 보안 프로그램은, 결과들이 원 보안 프로그램과 해커에 의해 사용되는 보안 프로그램에 대해 상이한 보안 프로그램 표현에 의존하므로 제어된 인터페이스를 통한 결과들이 아닌 경우에만 (표현 방법에 따라 높은 확률로) 얻는다.
보안 프로그램의 표현은 해시 혹은 그 외 서명, 혹은 이들의 부분일 수도 있을 것이다. 통상, 보안 프로그램의 표현은 완전한 보안 프로그램을 커버하나, 특별한 경우에(예를 들면 보안 프로그램이, 랜덤함수에 관련없는 큰 부분들을 포함하는 경우), 원시함수들의 입력 및 출력의 호출 및 처리를 다루는 보안 프로그램의 부분들로 표현을 한정시키는 것이 이점이 있을 수도 있을 것이다.
보안 프로그램의 실행 동안에, 출력이 보안 프로그램의 표현에 의존하는 원시함수를 사용하여 키가 도출될 수 있다. 이 키는 증명결과들(의 부분)을 암호화하는데 사용될 수 있다. 이 키에 의해 암호화된 어떠한 결과이든 동일 혹은 다른 모드에서, 동일 보안 프로그램의 후속 실행들에서는 제외하고, 무용하다.
보안 프로그램은 보안 디바이스의 사용자에 의해 통상 제공된다. 이것은 다른 서브-시스템 혹은 또 다른 시스템일 수도 있을 것이다.
추후 사용을 위해 특정 보안 프로그램을 신속히 불러내기 위해서, 선택적으로 후속 실행이 허용되는 허가에 관한 정보와 함께, 동일 혹은 다른 모드에서 보안 프로그램의 후속 실행을 위해 프로그램 코드 혹은 이의 해시 코드가 저장될 수도 있을 것이다.
이 방법을 사용하여 CPUF들은 임의의 제3자에 의해 검증가능한 인증서인 전자-증명이라고 하는 실행의 증명을 증명결과들로서 생성하는데 사용될 수 있다. 예를 들면, STB 애플리케이션에서, 브로드캐스터는 콘텐트를 그의 소유자(혹은 이를 빌리는 자)에게 판매하기 위해 STB에 알린다. 브로드캐스터는 소유자의 STB를 사용하여 소유자와 브로드캐스터 간의 거래를 포함하는 프로그램의 인증실행을 수행하기를 원한다. 브로드캐스터는 임의의 중재자가 소유자가 콘텐트를 구입한 것을 검증할 수 있게 하기를 원한다. 이것은 실행의 증명을 필요로 한다. 그 외 애플리케이션들은 전자상거래에서 전자거래, 전자-뱅킹, 및 전자-비즈니스이다.
본 발명의 제1 실시예는 청구항 2에 기재되어 있다. 증명결과들은 보안 디바이스의 원 사용자로부터의 개입이 요구됨이 없이 임의의 제3자에게 보안 디바이스에 의한 검증(아마도 추후에)을 위한 인증서로서, 전자-증명이라고 하는 실행의 증명으로서 사용될 수 있다. 전자-증명에의 액세스하는 어떤 제3자이든, 보안 디바이스가 실제로 전자-증명서를 생성하였는지를, 증명 결과들 및 보안 디바이스를 사용하여 검증할 수 있다.
본 발명의 제1 실시예의 이점이 있는 구현은 청구항 3에 기재되어 있다. 이 변형예에서, 제1 모드에서(이 실시예에서는 실행모드라 함) 증명결과들을 생성하는 보안 프로그램은 실행모드에서 실제 애플리케이션을 실행시킨다. 제2 모드에서(검증모드라 함), 보안 프로그램은 증명결과들을 검증하고 선택적으로는 복호한다. 보안 프로그램이 실행모드의 부분으로서 애플리케이션 프로그램을 실행시킬 때, 증명결과들은 애플리케이션 프로그램의 정당 실행으로 확장한다. 증명결과들은 검증이, 어떤 애플리케이션이 실행되었는지 및/또는 어느 입력 및 출력이 각각 사용되었는가의 검증을 커버할 수 있게, 애플리케이션 프로그램(의 부분들), 애플리케이션 프로그램 입력(의 부분들), 및 애플리케이션 프로그램 출력(의 부분들)을 포함할 수 있다. 또한, 이것은 중재모드에서 이 정보의 (부분적)복구를 할 수 있게 한다. 애플리케이션, 그의 목적, 및 보안 정책에 따라, 이들 복호된 부분들을 출력할지는 보안 프로그램 나름이다.
본 발명의 제1 실시예의 다른 구현은 청구항 4에 기재되어 있다. 이 변형예에서, 제1 모드에서 동작한 특정 보안 프로그램에 의해 발생된 증명결과들을 소지한 제3자는 증명결과들을 동일 보안 프로그램을 실행시키기 위한 입력으로서 보안 디바이스에 보내며, 이 보안 프로그램은 이어서 증명결과들을 검증한 후 다시 제3자에게 확인증거(선택적으로는 복호된 결과들)를 보내기 위해 제2 모드에서 동작된다. 이 정보는 증명결과들이 동일 보안 디바이스에 의해서 그리고 동일 보안 프로그램에 의해 제1 모드에서 계산되었다는 것을 제3자를 확신시킬 것으로 생각된다.
본 발명의 제2 실시예는 청구항 5에 기재되어 있다. 이 제2 실시예에서, 증명결과들은 보안 데이터 저장을 위해서 사용할 저장 데이터(아마도 암호화된)를 포함한다. 제1 모드를 메모리 저장과 연관시키고, 제2 모드를 메모리 로딩 동작과 연관시킴으로써, (암호화된) 데이터를 포함하는 증명결과들은 메모리 위치에 저장될 수 있다. 이렇게 하여, 비보안 물리적 메모리는 메모리 액세스시 메모리 콘텐츠를 검증/정당화함으로써 보안이 되게 할 수 있다. 제1 및 제2 모두 둘 다는 보안 프로그램의 동일 혹은 다른 실행들에서 복수회 사용될 수 있다.
본 발명의 제2 실시예의 가능한 구현이 청구항 6에 기재되어 있다. 증명결과들에서 저장된 데이터를 암호화함으로써, 저장된 데이터는 보안 프로그램 자체에 의한 것을 제외하고 증명결과들로부터 불러내어질 수 없다. 이들 데이터(의 부분들)를 외부에 출력할지는 보안 프로그램에 달려있다.
본 발명의 제3 실시예는 청구항 7에 기재되어 있다. 이 실시예는 프로그램 실행에 관한 상태 정보를 저장할 수 있게 하므로 이점이 있다. 이것은 대기 혹은 파워-다운(의도적 혹은 비의도적) 등의 후에, 인터럽트 후의 동일 상태로 프로그램이 신뢰성 있게 계속되게 한다. 계속시, 상태정보는 제1 모드에서 동작하는 동일 프로그램으로부터 기원되었다는 것에 의존되기 전에 제2 모드에서 검증된다.
본 발명의 제3 실시예의 다른 구현은 청구항 8에 기재되어 있다. 증명결과들에서 상태정보를 암호화함으로써 상태정보는 보안 프로그램 자체 의한 것을 제외하고 증명결과들로부터 불러들여질 수 없다.
본 발명의 구현은 청구항 9에 기재되어 있다. 선택될 동작모드는 보안 프로그램 자체에 하드-코드될 수 없기 때문에, 동작모드를 선택하는 다른 방법이 필요하다. 동작모드를 선택하는 매우 바람직한 유용한 방법은 보안 프로그램에의 입력으로서 모드를 보안 디바이스의 사용자가 공급하게 하는 것이다.
본 발명의 잇점이 있는 구현은 청구항 10에 기재되어 있다. 증명결과들을 발생 혹은 검증할 것을 보안 디바이스에 요청하는 보안 디바이스 사용자에게 발성 혹은 검증이 실제로 동일 보안 디바이스에서 수행된 것을 입증하기 위해서, 보안 프로그램은 바람직하게는 제2 보안 프로그램의 부분으로서 실행되고, 제2 보안 프로그램은 종래 기술의 문헌에 기재된 바와 같이 인증실행을 구현한다.
본 발명의 보다 특정한 구현은 청구항 11에 기재되어 있다. 이 구현에서 PUF는 원시함수들에서 사용되는 랜덤함수를 구현하는데 사용된다.
본 발명의 보다 구체적인 구현은 청구항 12에 기재되어 있다. 바람직하게는 (거의) 충돌이 없는 랜덤 해시 함수 h(.)가 사용될 때, 이들 원시함수들은 증명결과들을 발생하는 제1 모드 및 증명결과들을 검증하는 제2 모드 둘 다에서 사용되는 키를 신뢰성 있게 발생하거나 증명결과들로부터 정보를 얻는데 효과적이게 되게 하는데 사용될 수 있다. 청구항 1에 기재된 바와 같이, 프로그램은 보안 프로그램의 관계된 부분들(보안 관점에서)만을 나타냄을 알 것이다.
본 발명의 보다 특정한 구현은 청구항 13에 기재되어 있다. 이 구현에서 증명결과들을 계산하는 발생된 키는 입력변수들의 적어도 일부에 의존한다. 이것은 증명결과들에 의해 보호되기 위해서 (애플리케이션) 프로그램 입력들이 보안 프로그램에 하드-코드될 필요가 없는 잇점이 있다. 보안 디바이스와 보안 디바이스 사용자간에 기밀이 유지되고 있거나(따라서 제3자에게 알려지지 않거나), 서로 다른 프로그램 실행들이 서로 다르게 될 수 있게 한다면(동작모드를 결정하는 입력은 물론 사용되지 않는다), 일부 입력들은 중요하지 않을 수 있기 때문에, 모든 입력들이 고려될 필요는 없다.
본 발명에 따른 시스템은 청구항 14에 기재된 바와 같은 것을 특징으로 한다.
본 발명에 따라, 컴퓨터 독출가능의 매체와 같은 컴퓨터 프로그램 제품은 청구항 15에 기재된 바와 같은 것을 특징으로 한다.
본 발명에 따른 컴퓨터 실행가능의 명령들은 청구항 16에 기재된 바와 같은 것을 특징으로 한다.
본 발명에 따른 신호는 청구항 17에 기재된 바와 같은 것을 특징으로 한다.
본 발명의 이들 및 다른 면들은 개략도를 참조하여 예로서 기술한다.
도 1은 PUF를 사용하여 애플리케이션을 위한 기본 모델을 도시한 도면.
도 2는 인증실행의 사용예를 도시한 도면.
도 3은 실행의 증명의 사용예를 도시한 도면.
도 4는 인증실행 하에 전자-증명을 발생하기 위한 서로 다른 프로그램 계층들의 개요를 도시한 도면.
도 5는 보안 메모리 구현을 도시한 도면.
도 6은 인터럽트된 처리를 도시한 도면.
도면에서, 동일 참조부호는 유사 혹은 대응하는 특징들을 나타낸다. 도면에 표시된 특징들의 일부는 통상적으로 소프트웨어로 구현되며, 따라서 소프트웨어 모듈들 혹은 객체들과 같은 소프트웨어 실체들을 나타낸다.
도 1은 PUF(104)를 포함하는 보안 디바이스(103)를 사용한 애플리케이션들의 기본 모델을 도시한 것이다. 시스템(100)에 의해 구현되는 모델은,
보안 디바이스(103) 내 혹은 이의 제어하에 칩(105)의 계산능력들을 이용하기를 원하는 사용자(101)를 포함한다:
사용자 및 칩은 신뢰될 수 없을 수도 있는 공중 통신채널(102)에 의해 서로간에 접속된다. 사용자는 사람일 수도 있을 뿐만 아니라, 다른 소프트웨어, 하드웨어, 혹은 디바이스일 수도 있다.
보안 디바이스(103)는 프로세서(111) 및 메모리(112)를 포함하는 처리 디바이스(110)에 의해 구현될 수도 있을 것을 것이며, 이 처리 디바이스는 컴퓨터 프로그램 제품(113)으로부터 컴퓨터 실행가능의 명령들을 실행하게 구성된다.
종래 기술의 문헌은 각 특정의 PUF마다 고유한 챌린지 및 응답들의 취급을 기술하고 있다. 어떤 챌린지가 주어지면, PUF는 대응하는 응답을 계산할 수 있다. 사용자는 처음에 PUF에 의해 생성된 CRP(챌린지-응답 쌍들)의 사용자 자신의 비밀 (인증된) 리스트를 소지하고 있다. 리스트는 (아마도 PUF외에도) 사용자만이 리스트 내 각 챌린지에 대한 응답을 알고 있기 때문에 비밀이다. 사용자의 챌린지들은 공개될 수 있다. 사용자는 보안 디바이스와의 몇 개의 CRP들을 수립한 것으로 가정한다.
(한정된 수의) 챌린지들에 대한 응답들은 사용자에게만 알려진다. 또한, 보안 디바이스는 특정 챌린저에 대한 응답을 (재)계산할 수도 있다. 다른 사람들이 특정 챌린지에 대한 응답을 복구하는 것을 방지하기 위해서, CRP들을 관리하는 보안방법이 필요하다. 종래 기술의 문헌은 이것을 달성하기 위해, 제어된 PUF의 개념을 제안한다. PUF는 분리될 수 없게 PUF에 물리적으로 링크된 보안 알고리즘( 즉, 알고리즘을 우회하는 어떠한 시도이든 PUF를 파괴하게 될 것임)을 통해 액세스될 수 있을 경우에만 제어되게 정의된다(제어된 PUF 또는 CPUF). 특히, 이러한 보안 알고리즘은 PUF에 건네지는 챌린지들을 제약시킬 수 있고 외부 세계에 주어지는 응답들에 관한 정보를 제한시킬 수 있다. 제어는 단순 정당 식별 애플리케이션들을 넘어서게 하는 기본 생각이다. PUF들 및 제어된 PUF들이 기재되어 있고 이들은 스마트카드 식별, 인증된 실행 및 소프트웨어 라이센싱을 구현하는 것으로 알려져 있다.
실전해킹(man-in-the-middle) 어택들을 방지하기 위해서, CRP 관리 프로토콜들 중엔, 사용자는 특정 챌린지에 대한 응답을 요구하지 못한다. 이것은 CRP 관리 프로토콜들에서 보안 디바이스가 사용자에게 응답들을 보내기 때문에, 이들 프로토콜들에서 우려이다. 이것은 보안 디바이스가 결코 챌린지에 대한 응답을 곧바로 내주지 않게, PUF에의 액세스를 제한시킴으로써 보장된다. CRP 관리는 종래 기술의 문헌에 기술된 바와 같이 행해진다. 애플리케이션 프로토콜들에서, 응답들은 MAC(Message Authentication Codes)들을 생성하기 위해 후속 처리를 위해 내부적으로만 사용되며, 사용자에겐 결코 보내지지 않는다. CPUF는 어떤 형태의 프로그램, (또한 보안 프로그램)을 비밀리에(프로그램이 무엇을 행하고 있는지는 아무도 알 수 없다, 혹은 조작되고 있는 키 자료가 은닉된 상태에 있다) 그리고 정당하게(프로그램을 무엇을 행하고 있는지를 검출하지 않고는 아무도 수정할 수 없다)실행할 수 있다.
CPUF의 제어는 보안 프로그램을 통해서, 보다 구체적으로는 2개의 원시 함수 들GetResponse(.) 및 GetSecret(.)을 사용함으로써만 액세스될 수 있게 설계된다. 본 발명을 구현하는데 사용될 수 있는 한 세트의 원시함수들은 다음과 같이 정의되고,
GetResponse(PC) = f(h(h(SProgram), PC))
GetSecret(Challenge) = h(h(SProgram), f(Challenge))
여기서, f는 PFU이고, h는 공개적으로 입수될 수 있는 랜덤 해시 함수(혹은 실제로는 어떤 의사-랜덤 함수)이다. 이들 원시함수들에서, SProgram는 정당하게 실행되는 프로그램의 코드이다. 디바이스의 사용자는 이러한 보안 프로그램을 운반할 수도 있다. h(Sprogram)은 하드-코드된 값들(이를테면, 어떤 경우엔, 챌린지)을 포함하여, 프로그램에 포함된 모든 것을 포함하는 것에 유의한다. 보안 디바이스는 h(SProgram)을 계산하고, 나중에, GetResponse(.) 및 GetSecret(.)이 호출될 때 이 값을 사용한다. h(SProgram)의 계산은 보안 프로그램을 시작하기 (바로) 전에, 혹은 원시함수의 첫회의 실행 전에 행해질 수 있다. 종래 기술의 문헌에 나타난 바와 같이, 이들 두 원시함수들은 GetResponse(.)이 필수로 CRP 생성에 사용되고 GetSecret(.)은 CRP로부터 공유 비밀을 생성하기를 원하는 애플리케이션들에 의해 사용되는 보안 CRP 관리를 구현하기에 충분하다.
이후에, 다음의 표기를 사용한다.
- E(m,k)는 키 k를 사용한 메시지 m의 암호화이다.
- D(m,k)는 키 k를 사용한 메시지 m의 복호화이다.
- M(m,k)은 키 k로 메시지 m을 MAC한다.
- E&M(m,k)은 키 k를 사용하여 메시지를 m을 암호화하고 MAC한다.
- D&M(m,k)은 MAC이 부합할 경우 키 k로 메시지 m을 복호한다. MAC이 부합하지 않는다면, MAC은 일치하지 않으며 어떠한 복호도 수행하지 않는다는 메시지를 출력한다.
인증실행의 개념은 종래 기술의 문헌에 기재되어 있다. 이 기술을, 많은 구체적인 구현들에 의해 예시하도록 하겠다. 인증실행은 소위 전자-인증서를 사용하여 제공된다. 보안 디바이스에 입력(Input)에 프로그램(XProgram)에 대한 전자-인증서는 XProgram의 출력된 결과들이 보안 디바이스에서 XProgram(Input)에 의해 발생되었는지를 보안 디바이스 사용자가 압도적 확률로 효율적으로 체크할 수 있게 하는, 보안 디바이스에서 XProgram(Input)에 의해 효율적으로 생성된 스트링으로서 정의된다. 보안 디바이스에서 XProgram의 실행을 요청하는 사용자는 보안 디바이스 소유자에 의존하는 것이 아니라, 보안 디바이스를 제조하였음을 보증할 수 있는 보안 디바이스 제조업자의 신뢰상태에 의존할 수 있다.
도 2는 계산이 보안 디바이스에서 직접적으로 행해지는 인증실행의 간단한 예를 도시한 것이다. 사용자 앨리스는 밥의 컴퓨터(201)에서 계산적으로 고비용의 프로그램(Program(Input))을 실행시키기를 원한다. 밥의 컴퓨터는 PUF(203)을 구비한 보안 디바이스(202)를 갖추고 있다. 앨리스는 보안 디바이스와의 CRP 리스트(211)를 이미 수립한 것으로 가정한다. 밥의 PUF에 대해 앨리스의 CRP들 중 하나가 (Challenge, Response)인 것으로 한다. 제1 구현의 변형예에서, 앨리스는 (통신(221)에서) 입력(Input들(232)이 (Challenge, E&M((XProgram, Input), h(h(Cprogram), Response)))인 다음과 같은 프로그램 CPrograml(231)을 보안 디바이스(202)에 보낸다.
CProgram1(Inputs):
begin program
var Challenge,EM,XProgram,Input,Result,Certificate;
(Challenge,EM)=Inputs;
Secret=GetSecret(Challenge);
(XProgram,Input)=D&M(EM,Secret);
Abort if the MAC does not match;
Result=XProgram(Input);
Certificate=M(Result, Secret);
Output(Result,Certificate);
end program
제2 구현의 변형예에서, 앨리스는 입력(Inputs)이 (E&M((XProgram,Input), h(h(Cprogram), Response)))인 다음의 프로그램 CProgram2을 보안 디바이스에 보낸다. 이 변형예는 CProgram2에서 챌린지의 값을 하드-코드하기 때문에 더욱 확실하다. 그러므로, 챌린지의 값은 원시함수들에서 사용된다.
CProgram2 (Inputs):
begin program
const Challenge=...;
var EM,XProgram,Input,Result,Certificate;
(EM)=Inputs;
Secret=GetSecret (Challenge);
(XProgram,Input)=D&M(EM,Secret);
Abort if the MAC does not match;
Result=XProgram(Input);
Certificate=M(Result,Secret);
Output(Result,Certificate);
end program
Result=XProgram(Input)에 의해서, Rusult는 XProgram(Input)의 출력의 일부임이 이해된다. 어떠한 전자-증명도 필요로 하지 않은 많은 출력이 있을 수 있다. Output(...)은 통신(222)로 나타낸 바와 같이 CPUF로부터 결과들(233)를 보내는데 사용된다. (제조업자가 보안 디바이스를 물리적으로 소지하는 부트스트랩 중일 때를 제외하고) 보안 디바이스로부터 보내지는 어떠한 것이든 전세계에 알려질 수도 있다. 프로그램의 보안 설계는 암호화된 형태로 Result에 놓여지는 결과를 발생한다. 암호화는 통상의 암호화에 의해서 혹은 Secret에 의해서 행해질 수 있다. 후 자의 경우, Secret은 Input에 포함된다.
앨리스의 CRP는 비밀이기 때문에, 다른 어떤 사람도 Secret을 발생시킬 수 없고, 따라서, Secret으로 MAC을 발생시킬 수 없다. MAC은 프로그램 내 두 지점들에서 사용된다. 제1 MAC은 프로그램에 의해 체크되고 Input들의 진정성을 보장한다. 제2 MAC은 앨리스에 의해 체크되고 보안 디바이스로부터 얻는 메시지의 진정성을 보장한다. 앨리스와는 별도로 보안 디바이스만이 프로그램CProgram을 샐행함으로써 주어진 챌린지에 비밀을 생성할 수 있다. 이것은 보안 디바이스에서 CProgram에 의해 Result 및 인증서가 발생되었음을 의미한다. 즉, CProgram은 입력으로서 Input들을 사용하여 인증실행을 수행하였다. 이것은 인증서가 전자-인증서임을 입증한다.
이것은 전자-인증서들이 보안 원격 계산에 사용될 수 있는 것이 된다. 인증서가 부합한다면, 이것은 XProgram(Input)이 보안 디바이스에서 실행되었음을(CProgram(Inputs)에 의해) 앨리스에게 입증한다.
종래 기술의 문헌에 기술된 인증실행은 XProgram의 실행을 실행의 증명으로서 입증하기 위해 제3자에 대해 앨리스에 의해 사용될 수 없다. 앨리스의 CRP를 사용하여, 앨리스는 어떤 결과 Result에 대해 전자-인증서(Certificate)를 위조할 수 있다. 이것은 앨리스가 챌린지에 관계된 응답을 사용하여 Secret를 계산할 수 있다는 사실에서 온다. 앨리스가 자신의 CRP를 필요로 한다는 사실(MAC을 체크하기 위해서)에 기인해서, 앨리스는 자신이 밥의 보안 디바이스에서 XProgram(Input)(CProgram(Inputs)에서)을 실행하였다는 것을 제3자들에게 입증하 기 위해 실행의 증명으로서 전자-인증서(Certificate)를 사용할 수 없는 것이 된다.
본 발명의 제1 실시예에서, 임의의 제3자에게 실행의 증명으로서 사용될 수 있는 증명결과들이 사용된다. 보안 디바이스에서 결과들(Results)을 생성하는 입력(Input)을 가진 프로그램(XProgram)에 대한 전자-증명(EProof)은, 보안 디바이스에서 XProgram(Input)에 의해 발생되는 스트링으로서 정의되는데, 이 스트링은 보안 디바이스와 입력들(EProof) 및 XProgram을 구비한 임의의 중재자 간에 프로토콜 A1과, EProof가 보안 디바이스에서 XProgram(Input)에 의해 발생되었는지를 압도적 확률을 가지고 효율적으로 올바르게 결정할 수 있고, 만약 올바르게 발생되었다면, 보안 디바이스의 XProgram에 의해 EProof와 함께 이전에 발생되었던 결과들(Result)(의 일부)을 압도적 확률을 가지고 복구할 수 있는 어떤 보조 정보가 존재하게 하는 스트링이다. 프로토콜 A1은 중재자 프로토콜이라 한다. 다음의 예는 전자-증명이 소유자 및 보안 디바이스 사용자 둘 다에 의해 사용될 수 있음을 보여준다.
실행의 증명을 지원하기 위해서, 실행증명의 발생을 위해 추가의 프로그램 계층을 사용해서 인증실행의 해를 확장하는 것이 요구된다. 사용자 앨리스는 PUF를 구비한 단일 보안 디바이스를 갖춘 밥의 컴퓨터에서 애플리케이션 프로그램 AProgram을 실행시키기를 원한다. 앨리스는 밥의 보안 디바이스와의 CRP들을 이미 수립해 놓았다.
이 실시예가 사용될 수 있는 제1 예로서, 앨리스가 브로드캐스터(310)이고 밥이 보안 디바이스(301)를 갖춘 STB(set-top-box)(300) 소유자인 STB 애플리케이션을 고찰한다(도 3). 프로그램 A(320)에서, 밥은 서비스를 구입한다. 앨리스는 거래상세(332), 전자-인증서(333)(전자-인증서는 거래상세와 전자-증명 둘 다의 진정성을 검증한다), 및 전자-증명(334)을 수신한다. 단계 340에서 앨리스는 전자-승인서가 부합하는지를 체크한다. 그러하다면, 앨리스는 전자-증명이 밥의 STB에 의해 발생된 것을 알고 앨리스는 프로그램 B에서 거래를 계속한다. 전자-증명은 중재자가 거래상세를 복구할 수 있기 때문에 밥이 서비스를 구입하였다는 확인으로서 사용될 수 있다. 프로그램 B(321)에서, 밥은 자신이 요청한 서비스에 속하는 콘텐트(335)를 수신한다. 콘텐트는 CRP를 사용하여 암호화될 수 있다. 앨리스는 프로그램 B에서 밥의 조작의 제2 전자-증명(336)을 수신한다. 제1 예에서, 이것은 프로그램 B에서 밥에서 콘텐트를 보낼 것이라는 앨리스의 약속의 증명을 밥이 수신하지 않은 것처럼 보인다. 그런, 앨리스뿐만 아니라 밥도 제1 전자-증명을 사용할 수 있다. 어떤 제3도, 원래 프로그램 B에서 밥에게 앨리스가 콘텐트를 전송할 것이라는 약속인, 프로그램 A에 엔코딩된 프로토콜을 밥의 STB가 성공적으로 수행하였음을 체크할 것이다. 예를 들면, 밥은 할인 및 업그레이드에 적격이게 할 수 있는, 어떤 서비스를 구입하였음을 제3자들에게(그리고 특히 앨리스에게) 확신시키는 전자-증명을 사용할 수 있다.
제2 예로서, 앨리스가 밥의 보안 디바이스에서 그의 입력의 일부로서 시간 스탬프를 가지고 프로그램을 실행시키기를 원한다고 가정한다. 실행의 결과들은 시간 스탬프가 실행의 정확한 시간을 나타낸다는 밥의 동의와 함께 이 시간 스탬프 의 복제본을 포함할 수 있다. 예를 들면, 프로그램은, 밥이 동의한다면 묻고 밥이 동의하지 않는다면 중지하게 설계된다. 올바른 전자-증명이 주어진다면, 중재자는 결과들을 가져온다. 그러므로, 시간 스탬프를 체크하여, 밥 및/또는 앨리스의 요청이 아직 유효한지를 검증할 수 있다.
제3 예로서, 서로 다른 모드들의 프로그램(Program)을 가정한다. 프로그램의 모드에 따라, Program은 프로세서(P)에서 (Result,EProof)=Program(Input)을 계산하거나, 여기서 EProof는 P에 입력(Input)하는 프로그램(Program)에 대한 전자-증명이며, 프로그램은 EProof가 유효한 전자-증명인지를 체크하고, 유효하다면 Result를 재구성하는 중재자 역할을 한다. 중재자의 역할에서, EProof는 Program에서 다음 모드에의 티켓으로서 사용될 수 있다. 이 기술은 조건부 액세스를 구현한다.
도 4는 서로 다른 프로그램 계층들을 도시한 것이다. EProgram(403)이라 하는, 실행의 증명을 발생 혹은 검증하는 본 발명에 따른 프로그램은 실행이 보안 디바이스에서 행해졌음을 사용자 및 제3자 모두가 확신하도록, PUF(401)을 구비한 보안 디바이스(400)에서 인증실행 프로그램CProgram1 402 (혹은 CProgram2 402)의 XProgram 부분으로서 실행된다. EProgram은 실행모드(404) 및 중재모드(405) 둘 다를 갖는다.
실행모드에서, EProgram은 앨리스가 관심을 갖는 결과들만이 아니라(AProgram(406)에서) 전자-증명도 계산한다. (CProgram의 XProgram 부분으로서 EProgram을 실행시킴으로써) 앨리스는 프로그램이 밥의 보안 디바이스에서 올바르 게 실행되었음을 확신하기 위해서 인증실행을 사용한다. 중재자는 인증실행을 사용하여, 중재모드에서 EProgram을 실행시킴으로써 전자-증명을 체크할 수 있다. 주된 생각은 GetResponse(.) 원시함수가 두 모드들을 포함하는 완전한 프로그램 EProgram의 해시에 의존한다는 것이다. 결국, 실행모드에서 프로그램 EProgram에 의해 발생되었던(GetResponse(.) 원시함수를 통해 얻어진 키를 사용하여) 전자-증명은 중재모드에서 프로그램 EProgram에 의해 복호될 수 있다.
보안은 먼저, GetResponse(.) 원시함수를 분할하는, 즉 해시를 분해하고 GetResponse(.)가 정의된 PUF를 분해함에 있어 어려움과, 두 번째로, 암호화 및 MAC E&M(.) 원시함수를 분해함에 있어 어려움에 의해 결정된다.
EProgram의 일부 변형예들을 이하 제공한다. 일부 프로그램들은 적응성은 덜 하나 확고한 것인 입력의 부분을 하드-코드한다. 증명 결과들에 있는 출력의 양은 또한 다르다. 이들 알고리즘들의 어떤 변형예들이 구현될 수 있다.
제1 변형예에서, 앨리스는 AProgram(Input)을 실행시키고 실행의 증명을 수신하기를 원하며 따라서 EPrograml(Inputs)(431)을 실행시키는데, 여기서 Inputs=((AProgram,Input,PC),Mode) (435:AProgram, 434:Input이며), 모드(432)는 "실행모드(excution mode)"이고, PC(433)은 랜덤 스트링이고, EProgram1은 이하 정의되는 바와 같다. PC는 비밀 키들 KE(실행모드에서) 혹은 KA(중재모드에서)을 생성하기 위해서, 랜덤 함수용의 챌린지를 계산하기 위해 "선-챌린지(pre-challenge)"로서 GetResponse(.)에 의해 사용된다. 앨리스는 전에 기술된 바와 같이 CProgram(430)을 사용하여 밥의 보안 디바이스에서 EProgram1(Inputs)을 실행하 기 위해서 인증실행의 기술을 사용한다. 앨리스는 보안 디바이스로부터 얻는 모든 출력의 진정성을 검증하기 위해 전자-인증서를 체크한다. 생성된 전자-증명서는 Program(Input)에 의해 발생된 결과(438)의 인증서일 뿐만 아니라 발생된 전자-증명(436)의 인증서이기도 하다.
EPrograml(Inputs):
begin program
var X, Mode, AProgram, Input, PC, Result, KE, KA, Checkbit, EMResult, EProof, Results;
(X,Mode) =Inputs;
If Mode is execution mode:
begin
(AProgram,Input,PC)=X;
Result=AProgram(Input);
KE=GetResponse(PC);
EMResult=E&M(Result,KE);
EProof=(PC,EMResult);
Results=(Result,EProof);
end
If Mode is arbitration mode:
begin
EProof=X;
(PC,EMResult)=EProof;
KA=GetResponse(PC);
Result=D&M(EMResult,KA);
CheckBit=(MAC of EMResult matches);
Results=(Result,CheckBit);
end
Output(Results);
end program
제1 실시예의 제2 변형예에서, 앨리스는 증대된 확고함을 위해 EProgram에 랜덤 스트링 PC를 하드-코드하고, 애플리케이션 프로그램 (AProgram)의(의 일부의) 해시된 값과 애플리케이션 프로그램 입력(Input)의(의 일부의) 해시된 값을 Eproof에 포함시켜, 이 입력을 가진 이 프로그램이 정확하게 사용되었다는 것을 후에 검증될 수 있게 한다. 중재모드에서, EProof만이 검증되며, AProgram, Input 및 Result를 커버하고, 이들 중 어느 것도 제3자 사용자에게 출력되지 않는다.
EProgram2(Inputs):
begin program
const PC=...;
var X, Mode, Program, Input, Result, KE, KA, Checkbit, EMResult, EProof, Results;
(X,Mode) =Inputs;
If Mode is execution mode:
begin
(Program, Input) =X;
Result=Program (Input);
KE=GetResponse (PC);
EMResult=E&M((Program, Input, Result), KE);
EProof=(PC, EMResult);
Results=(Result,EProof);
End
If Mode is arbitration mode:
begin
EProof=X;
(PC, EMResult) =EProof;
KA=GetResponse (PC);
Result=D&M(EMResult,KA);
CheckBit=(MAC of EMResult matches);
Results=(CheckBit);
end
Output (Results);
end program
제1 실시예의 제3 변형예에서, 랜덤 스트링 PC는 계산에서 생략되어 이에 의해 계산을 단순화시킨다. 키 KE는 KE=GetResponse()에 의해서 혹은 더욱 간단하게는 (새로운) 원시함수 KE=f(h(EProgram3))에 의해 EProgram3에서 계산된다.
제1 실시예의 제4 변형예에서, PC 및 선택적으로 그 외의 입력 파라미터들은 하드-코드되진 않을지라도(제2 변형예에서처럼), 원리함수 내 랜덤함수에의 입력으로서 여전히 사용된다. 이것을 EProgram3에 나타내었고 여기서 예를 들면 Program 및 Input은 EProgram3에의 입력들로서 얻어지며 GetResponse(.)에의 입력으로서 사용된다. 보안 디바이스와 보안 디바이스 사용자간에 기밀이 유지되고 있거나(따라서 제3자에게 알려지지 않거나), 서로 다른 프로그램 실행들이 서로 다르게 될 수 있게 한다면(동작모드를 결정하는 입력은 물론 사용되지 않는다), 일부 입력들은 중요하지 않을 수 있기 때문에, 모든 입력들이 고려될 필요는 없다.
EProgram3(Inputs):
begin program
const PC=...;
var X, Mode, Program, Input, Result, KE, KA, Checkbit, EMResult, EProof, Results;
(X, Mode)=Inputs;
If Mode is execution mode:
begin
(Program, Input) =X;
Result=Program(Input);
KE=GetResponse ( (PC, Program, Input));
EMResult=E&M((Program, Input, Result), KE);
EProof= (PC, EMResult);
Results= (Result, EProof);
end
If Mode is arbitration mode:
begin
EProof=X;
(PC,EMResult)=EProof;
KA=GetResponse ((PC, Program, Input));
Result=D&M(EMResult,KA);
CheckBit= (MAC of EMResult matches);
Results= (CheckBit);
end
Output(Results);
end program
중재모드에서, 중재자는 3단계를 포함하는 밥의 보안 디바이스로 프로토콜을 실행한다. 단계 1에서 중재자는 앨리스 혹은 밥으로부터 단계 450에서 실행의 증명 EProof를 수신한다. 밥은 Inputs=(EProof, Mode)(EProof: 444)을 구성하고, 모드(442)는 중재모드이다. 중재자는 아마도 앨리스 혹은 밥으로부터, 동일한 EProgram 및 CProgram(아마도 전에 실행된, 이 예에서는 단계 451 및 단계 452에서 중재자에게 통보된)을 얻는다. 중재자는 PC를 필요로 하지 않는 것에 유의한다.
단계 2에서, 중재자는 밥의 보안 디바이스에서 EProgram(Inputs)(EProgram:441)을 실행하기 위해서 CProgram(440)에 의한 인증실행의 기술을 사용한다. 중재자는 보안 디바이스로부터 얻는 Results의 진정성을 검증하기 위해서 전자-인증서(447)를 체크한다. 전자-인증서가 Results과 부합한다면 중재자는 밥의 보안 디바이스가 어떤 자들의 간섭없이 EProgram(Inputs)을 실행하였다는 것과 어느 누구도 입력들 혹은 출력들을 조작하지 않았다는 것을 안다. 특히 어느 누구도 입력 EProof를 수정하지 않았으며 어느 누구도 모드를 변경하지 않았다. 즉, 밥의 보안 디바이스는 EProof를 사용하여 중재모드에서 EProgram(Inputs)를 실행하였다. 중재모드에서, Result(445)는 Output에서 전부 다 공급될 수도 있고, 혹은 일부가 공급될 수 있고, 혹은 전혀 공급되지 않을 수 있다. Result로부터 도출된 정보에 의해 대치될 수도 있다. 이것은 애플리케이션 및 중재자에 의존할 수 있다. 이 결정은 프로그램에서 구현된다. 예를 들면, 사적인 이유로 EProgram은 결과들의 요약만을 중재자에게 보낼 수도 있을 것이다.
단계 3에서, 중재자는 CheckBit(446)이 트루인지, 즉 EMResult의 MAC이 부합하는지를 검증한다. 그러하다면, 중재자는 밥의 보안 디바이스에서 AProgram(Input)이 실행모드에서 EProof와 Result를 계산한 것으로 결정한다. 그렇지 않다면, 중재자는 밥의 보안 디바이스가 실행모드에서 EProof를 계산하지 않은 것이라 결정한다. 중재모드에서 EProgram는 MAC이 부합하지 않는 것을 출력하거나(D&M(.) 및 CheckBit의 정의를 참조), MAC이 복호된 결과와 함께 부합함을 출력한다. (위조) 결과(FResult)에 대해 위조 전자-증명 FEProof=(FPC,FEMResult)을 생성하는 것은 소위 어려운 문제이다.
제2 실시예에서, 전자-증명과 유사한 증명결과들은 보안되지 않는(아마도 오프-칩) 물리적 메모리를 사용하거나, 이를테면 인터럽트 처리와 같은 어려운 환경하에서, 소프트웨어 해적 환경에서 그리고 암호화하지 않은 콘텐트가 불법 배포될 수 있을 환경에서, PUF를 구비한 특정의 보안 디바이스에서 특정의 프로그램들에 의한 보안 메모리 제어를 달성하는데 사용될 수 있다.
도 5는 보안 메모리 구현을 도시한 것이다. 이 실시예에서, 제1 모드(501) 혹은 실행모드는 메모리(503)에 결과들을 저장하기 위해 보안 프로그램(500)에 의 해 사용되며, 제2 모드(502) 혹은 중재모드는 메모리를 로딩하고 이의 진정성을 체크하기 위해 프로그램에 의해 사용된다. 메모리는 위치(Address)에 데이터(Data)를 저장하는 것으로 가정한다. 이것은 딘일의 어드레스 혹은 일 범위의 어드레스들일 수 있다. 데이터는 (PC,E&M(Data,K))로서 암호화된 형태로 저장되고, K는 GetResponse(PC)와 같다. (Address, (PC,Data))을 입력으로 하는 Store라 하는 절차는 데이터를 저장하며 EProgram에서 실행모드에 대응하고, 여기서 Result-Data, EMResult-EMData, 및 EProof=(PC,EMData)이다. Address를 입력으로 하는 Load라 하는 절차는 데이터를 로딩하고, EProgram에서 중재모드에 대응하며, 여기서 Result=Data, EMResult-EMData, 및 EProof=(PC,EMData)이다.
MProgram
begin program
Store(Address,Data):
begin procedure
var PC, KE, EMData;
KE=GetResponse(PC);
EMData=E&M(Data,KE);
Store(PC,EMData) at Address;
end procedure
Load(Address):
begin procedure
var PC, EMData, KA;
Load(PC,EMData) from Address;
KA=GetResponse(PC);
Data=D&M(EMData,KA);
CheckBit=(MAC of EMData matches);
Output (Data,CheckBit);
end procedure
end program
절차들 Store(.) 및 Load(.)을 이의 코드의 일부로서 갖는 프로그램 MProgram(Input)이 메모리 액세스를 위해 이들 절차들을 사용한다면, 프로그램은 두 모드들에서 스스로 실행된다. Store(.) 및 Load(.)에서 GetResponse(.)는 하나의 동일 MProgram의 해시의 의존한다. MProgram이 데이터를 저장한다면, 이것은 제1 모드에서 동작하는데, 데이터는 메모리에 암호화된 전자-증명 포맷으로 기입된다. 데이터를 로딩한다면, 그 프로그램은 제2 모드에서 동작하며, 출력된 CheckBit는 이것이 밥의 보안 디바이스에서 실행된 MProgram으로부터 비롯되었다는 면에서 데이터의 진정성을 체크하는데 사용된다. 이러한 면에서 MProgram은 이것이 처리하는 데이터를 완전히 제어하고 있다. 암호화하지 않은 데이터를 공개적으로 출력할지는 MProgram에 달려있다. 이 프로그램은 효과적으로 데이터의 소유자 이다.
반대자는 현재의 메모리를 이전 버전으로 대치하여 검출되지 않고 나아갈 수 있는 것에 유의한다. 가장 최근의 메모리의 진정성을 체크하기 위해서, 프로세서는 시간 카운터를 저장할 전용의 메모리를 필요로 한다. 이 시간 카운터는 PUF로부터 도출된 키와 더불어 MAC와 함께 저장될 수 있다. 또한, 이 생각은 200년 11월, 프로그래밍 언어들 및 운영 체제들(ASPLOS-IX)에 대한 구조적 지원에 관한 제 9회 국제 컨퍼런스 회보, p. 169-177, 데이비드 라이(David Lie) 찬드라모한 테카스(Chandramohan Thekkath) 마크 미첼(Mark Mitchell), 패트릭 링컨(Patrick Lincoln), 댄 본(Dan Boneh), 존 미첼(John Mitchell) 및 마크호로비츠(Mark Horowitz) 공저의 "카피 및 템퍼 저항 소프트웨어에 대한 구조적 지원(Architectural Support for Copy and Tamper Resistant Software)", 및 2003년 2월 고성능 컴퓨터 구조에 대한 제 9회 국제 심포지움의 회보, 블라이스 가센드, 지. 에드워드 수(G. Edward Suh), 드웨인 클라크, 마르텐 반 다이크 및 스리니바스 데바다스 공저, "효율적인 메모리 인증에 대한 캐시 및 머클 트리들(Caches and Merkle Trees for Efficient Memory Authentication)"에 기재된 바와 같은 오프-칩 자원 메모리 정당화 방법들을 보안이 되게 이용하는 보다 정교한 구조들을 사용하여 개선될 수 있다.
도 6은 본 발명의 제3 및 제4 실시예의 구조를 도시한 것이다.
본 발명의 제3 실시예에서 증명 결과들은, 보안 디바이스(600)에서 실행되는 프로그램(601)이 인터럽트의 경우에 그의 프로그램 상태(605)을 보안이 되게 저장 할 수 있게, 프로그램 실행상태(602)를 저장하는데 사용된다. 인터럽트시, 프로그램 상태는 암호화된다(제1 모드에서처럼, 603). 보안 디바이스는 이의 실행을 그의 상태를 외계에 드러냄이 없이 나중에 계속할 수 있다. 계속되었을 때, 프로그램 상태가 검증되고 복호되어(제2 모드에서처럼, 604) 복구된다. 그러므로, 프로그램은 완전히 제어되고 있다. 이것은 보안 실행이 인터럽트에 대해 강건하게 한다. 애플리케이션들은 보안 인터럽트 처리, 소프트웨어 해적에 대한 내성, 및 암호화하지 않은 콘텐트의 불법 배포에 대한 내성이다.
제4 실시예에서, 프로그램은 추후 사용을 위해 암호화된 콘텐트(602) 혹은 암호화된 소프트웨어(602)를 저장할 수 있다. 동일 특정의 보안 디바이스(600)에서 동일 상태(605)에서 콘텐트는 재생만 되고(혹은 계속 재생) 혹은 소프트웨어는 실행만 하거나 (혹은 계속 실행한다). 이것은 소프트웨어 해적 혹은 암호화되지 않은 콘텐트의 불법 배포에 대한 내성을 갖게 한다.
보안 디바이스의 소유자(밥)와 보안 디바이스 사용자(앨리스)는 하나의 동일 신원일 수 있는 것에 유의한다. 예를 들면, 밥은 자신이 Program(Input)으로 Result를 계산하였다는 전자-증명에 의해 다른 사람들에게 입증한다. 마지막으로, 앨리스나 중재자 어느 누구도 PUF가 장착된 보안 디바이스를 필요로 하지 않는 것이 본 발명의 잇점이다.
본 발명은 일반적으로, 물리적 혹은 광학적인 것뿐만 아니라 디지털로 모든 PUF들에 적용될 수 있는 점에서 적용가능하다. 구조의 상세는 물리적 PUF들에 대해 주어진 것이지만 디지털 혹은 광학 PUF들에 옮겨질 수 있다.
대안들이 가능하다. 위의 설명에서, "포함하다(comprising)"는 다른 구성요소들 혹은 단계들을 배제하지 않으며, 단수표시는 복수를 배제하지 않으며, 단일 프로세서 혹은 그 외 유닛은 청구항들에 인용된 몇몇의 수단의 기능들을 이행할 수 있다.

Claims (17)

  1. 프로그램 명령들의 실행의 진정성(authenticity)을 입증하는 방법에 있어서,
    랜덤 함수(104,203)를 포함하는 보안 디바이스(103,202)에서 보안 프로그램(403)의 제어 하에 프로그램 명령들을 실행하는 단계로서, 상기 랜덤 함수는 단지 제어된 인터페이스를 통하여 상기 보안 프로그램으로부터만 액세스가 가능하며, 상기 제어된 인터페이스는 원시함수(primary function)를 호출하는 상기 보안 프로그램의 적어도 부분들의 표현의 적어도 부분에 의존하는 출력을 리턴하는 상기 랜덤 함수에 액세스하는 적어도 하나의 원시함수를 포함하는, 상기 실행 단계;
    상기 랜덤 함수를 사용하여, 상기 제어된 인터페이스를 통해 상기 랜덤 함수에 액세스함으로써 제1 모드(404)에서 동작하는 상기 보안 프로그램의 실행 동안 증명 결과들을 계산하는 단계; 및
    상기 랜덤 함수를 사용하여, 상기 제어된 인터페이스를 통해 상기 랜덤 함수에 액세스함으로써 제2 모드(405)에서 동작하는 상기 동일 보안 프로그램의 실행 동안 증명 결과들을 검증하는 단계를 포함하는, 프로그램 명령들의 실행 진정성 입증 방법.
  2. 제1항에 있어서, 제3자가 상기 증명결과들을 실행의 검증가능한 증명으로서 수신하는, 프로그램 명령들의 실행 진정성 입증 방법.
  3. 제1항에 있어서, 상기 보안 프로그램은 상기 제1 모드에서 동작할 경우,
    애플리케이션 프로그램 출력을 생성하는 애플리케이션 프로그램 입력으로 애플리케이션 프로그램을 실행시키는 단계;
    암호화에 의한 결과를 얻기 위해 상기 제어된 인터페이스를 통해 상기 랜덤 함수를 사용하여,
    상기 애플리케이션 프로그램 입력의 적어도 일부,
    상기 애플리케이션 프로그램 출력의 적어도 일부, 및
    상기 애플리케이션 프로그램의 적어도 일부 중 적어도 하나를 위한 메시지 정당화 코드를 생성하는 단계;
    상기 암호화되고 메시지-정당화된 결과를 포함하는 증명결과들을 생성하는 단계를 수행하고,
    상기 보안 프로그램은, 상기 제2 모드에서 동작할 경우,
    검증할 증명 결과들을 수신하는 단계; 및
    상기 증명결과들 내 상기 암호화되고 메시지-정당화된 결과의 메시지 진정성을 적어도 부분적으로 검증하는 단계를 수행하는, 프로그램 명령들의 실행 진정성 입증 방법.
  4. 제3항에 있어서, 상기 보안 프로그램은 상기 제2 모드에서 동작할 경우, 상기 증명결과들 내 스트링(string)에 상기 암호화되고 메시지-정당화된 결과의 상기 적어도 부분적으로 검증된 메시지 진정성의 적어도 일부를 상기 보안 디바이스의 사용자에게 보내는 후속 단계를 수행하는, 프로그램 명령들의 실행 진정성 입증 방법.
  5. 제1항에 있어서, 상기 증명결과들은 추후 사용을 위해 고려되는 저장 데이터를 포함하고, 상기 증명결과들은 상기 보안 디바이스에서 실행되는 상기 보안 프로그램으로부터 상기 저장 데이터가 기원한다는 검증을 가능하게 하는, 프로그램 명령들의 실행 진정성 입증 방법.
  6. 제5항에 있어서, 상기 증명결과들에 포함된 상기 저장 데이터는 출력이 상기 보안 프로그램의 표현에 의존하는 원시함수를 사용하여 계산되는 키로 암호화되는, 프로그램 명령들의 실행 진정성 입증 방법.
  7. 제1항에 있어서, 상기 증명결과들은 상기 보안 프로그램의 추후 계속을 위해 고려된 상태정보(605)를 포함하는, 프로그램 명령들의 실행 진정성 입증 방법.
  8. 제7항에 있어서, 상기 증명결과들에 포함된 상기 상태정보는 상기 출력이 상기 보안 프로그램의 표현에 의존하는 원시함수를 사용하여 계산된 키로 암호화되는, 프로그램 명령들의 실행 진정성 입증 방법.
  9. 제1항에 있어서, 상기 동작모드는 상기 보안 프로그램에 입력을 공급함으로 써 상기 보안 디바이스의 사용자에 의해 선택되는, 프로그램 명령들의 실행 진정성 입증 방법.
  10. 제1항에 있어서, 상기 보안 프로그램은 제2 보안 프로그램(402)의 일부로서 실행되며,
    상기 제2 보안 프로그램은 상기 보안 프로그램이 상기 보안 디바이스에 의해 실행되는 것을 상기 보안 디바이스의 사용자에게 입증하는 인증실행(certified excution)을 제공하는, 프로그램 명령들의 실행 진정성 입증 방법.
  11. 제1항에 있어서, 상기 랜덤함수는 복합 물리 시스템을 포함하는, 프로그램 명령들의 실행 진정성 입증 방법.
  12. 제1항에 있어서, 상기 랜덤 함수는, 원시함수인 GetSecret(Challenge)=h(h(Program), f(Challenge)) 통해 액세스될 수 있고, 여기서, f(.)는 상기 랜덤 함수이고, h(.)는 실질적으로 공개적으로 사용가능한 랜덤 해시 함수인, 프로그램 명령들의 실행 진정성 입증 방법.
  13. 제1항에 있어서, 상기 키 계산은 상기 보안 프로그램의 일부를 상기 랜덤 함수에의 입력으로서 사용하는, 프로그램 명령들의 실행 진정성 입증 방법.
  14. 컴퓨터 판독가능 명령들을 실행시키기 위한 시스템(100)으로서,
    랜덤함수(104) 및 처리 디바이스(110)를 포함하고, 상기 처리 디바이스는 프로세서(111) 및 메모리(112)를 포함하며, 상기 명령들은 제1항에 따른 상기 방법을 상기 시스템이 구현하게 하도록 배열되는, 시스템.
  15. 제1항에 따른 상기 방법을 컴퓨터가 구현하게 하기 위한 컴퓨터 실행가능한 명령들을 구비한 컴퓨터 프로그램 제품(113).
  16. 제1항에 따른 상기 방법을 컴퓨터가 구현하게 하기 위한 컴퓨터 실행가능한 명령들.
  17. 제1항에 따른 상기 방법에 의해 발생된 증명결과들을 운반하는 신호.
KR1020057021852A 2003-05-16 2004-05-06 랜덤 함수를 사용하는 실행의 증명 KR20060018852A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US47145203P 2003-05-16 2003-05-16
US60/471,452 2003-05-16

Publications (1)

Publication Number Publication Date
KR20060018852A true KR20060018852A (ko) 2006-03-02

Family

ID=33452448

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057021852A KR20060018852A (ko) 2003-05-16 2004-05-06 랜덤 함수를 사용하는 실행의 증명

Country Status (9)

Country Link
US (1) US7877604B2 (ko)
EP (1) EP1636664B1 (ko)
JP (1) JP2007511810A (ko)
KR (1) KR20060018852A (ko)
CN (1) CN101048720A (ko)
AT (1) ATE416431T1 (ko)
DE (1) DE602004018137D1 (ko)
ES (1) ES2318302T3 (ko)
WO (1) WO2004102302A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120027215A (ko) * 2009-05-13 2012-03-21 나그라비젼 에스에이 테스트 디바이스에 의한 보안 칩으로의 액세스 인증 방법
KR20200014514A (ko) 2018-08-01 2020-02-11 이남영 공공자전거 시스템 및 그 제어 방법

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7564345B2 (en) 2004-11-12 2009-07-21 Verayo, Inc. Volatile device keys and applications thereof
JP2006203564A (ja) * 2005-01-20 2006-08-03 Nara Institute Of Science & Technology マイクロプロセッサ、ノード端末、コンピュータシステム及びプログラム実行証明方法
JP2009519537A (ja) * 2005-12-14 2009-05-14 エヌエックスピー ビー ヴィ 物理的トークンに対するキー抽出パラメータのチップ上評価
EP1798653B1 (de) * 2005-12-16 2011-08-03 Aladdin Europe GmbH Verfahren, Computerprogrammprodukt und Vorrichtung zum Schützen eines einen Funktionsblock aufweisenden Programms
DE602007013697D1 (ko) 2006-01-24 2011-05-19 Verayo Inc
US8935416B2 (en) * 2006-04-21 2015-01-13 Fortinet, Inc. Method, apparatus, signals and medium for enforcing compliance with a policy on a client computer
US8782396B2 (en) * 2007-09-19 2014-07-15 Verayo, Inc. Authentication with physical unclonable functions
JP2011526113A (ja) * 2008-06-27 2011-09-29 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ アイテムの真正性、完全性、及び/又は物理的状態を検証するための装置、システム、及び方法
US8966660B2 (en) * 2008-08-07 2015-02-24 William Marsh Rice University Methods and systems of digital rights management for integrated circuits
US8171306B2 (en) * 2008-11-05 2012-05-01 Microsoft Corporation Universal secure token for obfuscation and tamper resistance
TWI498827B (zh) * 2008-11-21 2015-09-01 Verayo Inc 非連網射頻辨識裝置物理不可複製功能之鑑認技術
US8732468B2 (en) * 2009-03-09 2014-05-20 The Regents Of The University Of Michigan Protecting hardware circuit design by secret sharing
US8811615B2 (en) * 2009-08-05 2014-08-19 Verayo, Inc. Index-based coding with a pseudo-random source
US8468186B2 (en) * 2009-08-05 2013-06-18 Verayo, Inc. Combination of values from a pseudo-random source
US20110271109A1 (en) * 2010-05-01 2011-11-03 Tor Anumana, Inc. Systems and methods of remote device authentication
DE102010038703B3 (de) * 2010-07-30 2012-01-26 Robert Bosch Gmbh Verfahren zur Erzeugung eines Herausforderungs-Antwort-Paars in einer elektrischen Maschine sowie elektrische Maschine
DE102012212471B3 (de) * 2012-07-17 2013-11-21 Siemens Aktiengesellschaft Vorrichtung zum Realisieren einer physikalischen Degradations-/Tampererkennung eines digitalen ICs mittels einer (digitalen) PUF und Unterscheiden zwischen einer Degradation aufgrund von physikalischer Manipulation und aufgrund von Alterungsprozessen
WO2014138626A1 (en) * 2013-03-08 2014-09-12 Robert Bosch Gmbh Systems and methods for maintaining integrity and secrecy in untrusted computing platforms
JP6037450B2 (ja) * 2013-05-20 2016-12-07 日本電気株式会社 端末認証システムおよび端末認証方法
US20150143130A1 (en) * 2013-11-18 2015-05-21 Vixs Systems Inc. Integrated circuit provisioning using physical unclonable function
FR3023028B1 (fr) * 2014-06-26 2017-07-28 Olivier Robert Gerard Joffray Procede pour proteger des biens utilises par des dispositifs communiquant certifies connectes en reseaux, et pour garantir les comportements operationnels desdits dispositifs
EP3516566A1 (en) 2016-09-22 2019-07-31 nference, inc. Systems, methods, and computer readable media for visualization of semantic information and inference of temporal signals indicating salient associations between life science entities
WO2018137225A1 (zh) * 2017-01-25 2018-08-02 深圳市汇顶科技股份有限公司 指纹数据的处理方法及处理装置
GB201720946D0 (en) * 2017-12-15 2018-01-31 Nchain Holdings Ltd Computer-implemented system and method
US11082241B2 (en) * 2018-03-30 2021-08-03 Intel Corporation Physically unclonable function with feed-forward addressing and variable latency output
US11487902B2 (en) 2019-06-21 2022-11-01 nference, inc. Systems and methods for computing with private healthcare data
EP3987426A4 (en) * 2019-06-21 2023-07-26 nference, inc. SYSTEMS AND METHODS FOR COMPUTING WITH PRIVATE HEALTH CARE DATA
WO2021023164A1 (zh) 2019-08-02 2021-02-11 云丁网络技术(北京)有限公司 一种智能锁具控制方法和系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6308270B1 (en) * 1998-02-13 2001-10-23 Schlumberger Technologies, Inc. Validating and certifying execution of a software program with a smart card
US7020776B2 (en) * 2000-06-22 2006-03-28 Microsoft Corporation Cryptosystem based on a Jacobian of a curve
GB2378013A (en) * 2001-07-27 2003-01-29 Hewlett Packard Co Trusted computer platform audit system
US7840803B2 (en) * 2002-04-16 2010-11-23 Massachusetts Institute Of Technology Authentication of integrated circuits

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120027215A (ko) * 2009-05-13 2012-03-21 나그라비젼 에스에이 테스트 디바이스에 의한 보안 칩으로의 액세스 인증 방법
KR20200014514A (ko) 2018-08-01 2020-02-11 이남영 공공자전거 시스템 및 그 제어 방법

Also Published As

Publication number Publication date
WO2004102302A2 (en) 2004-11-25
DE602004018137D1 (de) 2009-01-15
WO2004102302A3 (en) 2007-03-29
ES2318302T3 (es) 2009-05-01
EP1636664A2 (en) 2006-03-22
JP2007511810A (ja) 2007-05-10
ATE416431T1 (de) 2008-12-15
US7877604B2 (en) 2011-01-25
US20070039046A1 (en) 2007-02-15
CN101048720A (zh) 2007-10-03
EP1636664B1 (en) 2008-12-03

Similar Documents

Publication Publication Date Title
KR20060018852A (ko) 랜덤 함수를 사용하는 실행의 증명
US20080059809A1 (en) Sharing a Secret by Using Random Function
JP4689945B2 (ja) リソースアクセス方法
Sarmenta et al. Virtual monotonic counters and count-limited objects using a TPM without a trusted OS
JP4689946B2 (ja) 安全なデータを使用して情報処理を実行するシステム
US7299364B2 (en) Method and system to maintain application data secure and authentication token for use therein
KR100737628B1 (ko) 고정형 토큰 및 이동형 토큰 모두를 이용한 어테스테이션
US7870399B2 (en) Software trusted platform module and application security wrapper
US8171306B2 (en) Universal secure token for obfuscation and tamper resistance
US20040117318A1 (en) Portable token controlling trusted environment launch
CA2425010C (en) Saving and retrieving data based on public key encryption
TW202137199A (zh) 生物支付設備的認證方法、裝置、電腦設備和儲存媒體
Sarhan Protecting sensitive data in clouds using active data bundles and agent-based secure multi-party computation
Costea et al. Secure software licensing: Models, constructions, and proofs
CN116186727A (zh) 一种数据加密方法、解密方法及其相关设备
CN117375910A (zh) 一种基于不可信云fpga的可信通信方法及系统
Sood Hybrid data security model for cloud
Cilardo et al. Verification of FPGA-augmented trusted computing mechanisms based on Applied Pi Calculus
Tripathy TPM based Virtual Monotonic Counters and Count-Limited Objects without a Trusted OS*
Dey et al. A Survey on Protection Techniques of Mobile Agents from Malicious Hosts
Emanuel Tamper free deployment and execution of software using TPM

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application