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

KR20070057968A - 랜덤 함수를 이용한 비밀 공유 - Google Patents

랜덤 함수를 이용한 비밀 공유 Download PDF

Info

Publication number
KR20070057968A
KR20070057968A KR1020077009016A KR20077009016A KR20070057968A KR 20070057968 A KR20070057968 A KR 20070057968A KR 1020077009016 A KR1020077009016 A KR 1020077009016A KR 20077009016 A KR20077009016 A KR 20077009016A KR 20070057968 A KR20070057968 A KR 20070057968A
Authority
KR
South Korea
Prior art keywords
program
security
function
shared secret
security program
Prior art date
Application number
KR1020077009016A
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 KR20070057968A publication Critical patent/KR20070057968A/ko

Links

Images

Classifications

    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

물리적 랜덤 함수(PUF)는 계산하기 쉬우나 특성화하기 어려운 함수이다. 제어된 물리적 랜덤 함수들(CPUF들)은 분리된 통로에서 PUF에 물리적으로 묶여있는 보안 알고리즘에 의해 제어되는 보안 프로그램을 통해서만 액세스될 수 있는 PUF들이다. CPUF들은 인증이 특정 계산이 특정 프로세서에서 전달되었던 것을 증명하는 것이 산출되는 인증된 실행이 가능하다. 특히, CPUF를 포함시킨 집적 회로는 챌린지-응답 쌍들(CRP들)을 이용하여 인증될 수 있다. 본 발명은 CPUF상에서 동작하는 다른 보안 프로그램들 사이에 공유된 비밀을 생성하는 메카니즘을 제공한다.
랜덤 함수, PUF, 챌린지, 실행, 비밀

Description

랜덤 함수를 이용한 비밀 공유{Sharing a secret by using random function}
본 발명은 제 1 보안 프로그램과 적어도 하나의 제 2 보안 프로그램 사이의 공유된 비밀을 생성하는 방법, 상기 방법을 구현하기 위해 배치되는 시스템, 상기 방법을 구현하기 위한 컴퓨터 프로그램 제품, 상기 방법을 구현하기 위한 컴퓨터 실행가능한 명령들, 및 상기 방법에 의해 생성된 결과들을 전달하는 신호에 관한 것이다.
전자 상거래와 같은 애플리케이션에서, 계산(또는 프로그램)은 사용자 또는 제 3자에 의해 특정 프로세서상에서 실제로 실행되는 것을 증명하는 것이 요구될 수 있다. 2002년 12월, '제 18차 연례 컴퓨터 보안 애플리케이션 콘퍼런스'의 회보 내의 'Blaise Gassend 및 Dwaine Clarke 및 Marten van Dijk 및 Srinivas Devadas'에 의한 "제어되는 물리적 랜덤 함수들"에서(이하 "선행 기술 문서"), 프레임워크가 PUF에 결합된 챌린지-응답 쌍들의 생성 및 검증에 대해 규정된다. 물리적 랜덤 함수(PUF)는 복합적인 물리적 시스템의 도움으로 계산되는 랜덤 함수이다. (PRF 대신에) 약어 PUF의 사용은 발음하기 쉽고, 슈도-랜덤 함수(Pseudo-Random Functions)와의 혼동을 피하는 장점이 있다. PUF들은 여러 방법으로 구현될 수 있다. PUF들의 일부 구현은 각각의 제조 샘플(예를 들면 각각의 개별적인 반도체 칩) 이 다른 함수를 구현하는 방법으로 제조하기가 쉽다. 이는 PUF가 인증된 식별 애플리케이션들로 사용되는 것을 가능하게 한다.
PUF는 챌린지들을 응답들로 맵핑하는 함수로서, 물리적 장치에 의해 구현되며, 다음의 두 가지 특성을 갖는다. (1) PUF는 계산하기 쉽다. 물리적 장치는 짧은 시간에 상기 함수의 계산을 쉽게 할 수 있다. 그리고, (2) PUF는 특성을 기술하기 어렵다. 타당하게 보이는(plausible) 물리적 측정들의 다항식의 수(특히, 선택된 챌린지-응답 쌍들의 결정)로부터, 더 이상 (액세스할) 보안 장치를 갖지 않는 침입자, 및 리소스(시간, 내용, 등)의 다항식의 양만을 이용할 수 있는 자는 무작위적으로 선택된 챌린지에 대한 응답에 대하여 무시할 만한 양의 정보만을 추출할 수 있다. 상기 정의에서, '쇼트(short)'와 '다항식'은 장치의 크기에 관한 용어들인 보안 매개변수이다. 특히, '쇼트'는 선형 또는 낮은 차수의 다항식을 의미한다. '타당하게 보인다(plausible)'는 것은 측정 기술들의 종래 기술의 현재 상태에 관한 것이고, 진보된 방법들이 발명되면 변화될 수 있다.
PUF의 예시들은 실리콘 PUF들(2002년 11월, '제 9차 컴퓨터 및 통신 보안 ACM 콘퍼런스'의 회보 내의 'Blaise Gassend 및 Dwaine Clarke 및 Marten van Dijk 및 Srinivas Devadas'에 의한 '실리콘 물리적 랜덤 함수들'), 광학 PUF들(P. S. Ravikanth, Massachusettes Institute of Technology, '물리적 단방향 함수들, 2001), 및 디지털 PUF들이 있다. 실리콘 PUF들은 제조 공정에서 하는 내부-칩 변경을 사용한다. 광학 PUF들은 간섭성 빛(레이저) 빔으로 비추어지는 광학 구조들에 의하여 발생되는 작은 반점 형태의 비예측성을 활용한다. 디지털 PUF들은 변형 억 제 모듈 환경이 암호화 및 인증 목적으로 사용되는 비밀 키를 보호하는 전형적인 형태를 말한다.
PUF는 보안 장치내에서 비분리의 방법으로 PUF에 물리적으로 링크되는 보안 알고리즘을 통해서만 액세스될 수 있다면, 제어되는 것(제어되는 PUF 또는 CPUF)으로 정의된다(즉, 상기 알고리즘을 회피하고자 하는 임의의 시도는 PUF의 파괴를 일으킬 수 있다). 특히 이 보안 알고리즘은 상기 PUF에 제공되는 챌린지들을 제한할 수 있으며 외부 공간에 주어지는 응답들에 대한 정보를 제한할 수 있다. 제어는 PUF가 단순한 인증된 식별 애플리케이션을 넘어서게 하는 근본 아이디어이다.
CPUF의 예시는 선행 기술 문서에 기술되어 있다. 보안 프로그램은 PUF가 보안 프로그램으로부터 두 원시 함수들 GetSecret(.) 및 GetResponse(.)을 통해서만 액세스 될 수 있는 것과 같이, PUF에 링크되는 보안 알고리즘의 제어 하에 이용된다. GetSecret(.)는 PUF에 대한 입력이 원시 함수들이 실행되는 보안 프로그램의 표현에 의존하도록 보장한다. 이 종속성 때문에, 원시 함수들이 다른 보안 프로그램으로부터 실행된다면, PUF에 대한 입력 및 PUF에 대한 출력은 다를 것이다. 게다가, 이 원시 함수들은 새로운 챌린지-응답 쌍들의 생성이 규칙적이고 안전할 수 있다는 것을 보장하며, 이는 또한 선행 기술 문서에 기술되어 있다.
그러나, 이 원시 함수들의 출력이 상기 보안 프로그램의 표현에 의존한다면, 상기 출력은 동일한 PUF상에서 동작하는 다른 보안 프로그램들 사이에 공유된 비밀을 생성하도록 사용될 수 없다.
따라서, 본 발명의 목적은 다른 보안 프로그램들 사이에 공유된 비밀을 생성하는 것을 허용하는 방법을 제공하는 것이다.
이 목적은 제 1 보안 프로그램과 적어도 하나의 제 2 보안 프로그램 사이에 공유된 비밀을 생성하는 방법으로 실현되며, 랜덤 함수를 포함하는 보안 장치상의 상기 제 1 보안 프로그램의 제어 하에서 프로그램 명령들을 실행하는 단계로서, 상기 랜덤 함수는 제어되는 인터페이스를 통하여 보안 프로그램으로부터만 액세스 가능한 상기 프로그램 명령들을 실행하는 단계를 포함하고, 상기 제어되는 인터페이스는 원시 함수를 호출하는 상기 제 1 보안 프로그램의 표현의 적어도 일부, 및 상기 보안 장치 상에서 상기 제 2 보안 프로그램의 실행시, 상기 원시 함수를 호출하는 상기 제 2 보안 프로그램의 표현의 적어도 일부에 의존하는 출력을 되돌려 주는 상기 랜덤 함수에 액세스하는 적어도 하나의 원시 함수를 포함하고, 상기 프로그램 명령을 실행하는 단계는 상기 공유된 비밀을 생성하도록 상기 적어도 하나의 원시 함수를 호출하는 부단계를 포함한다. 따라서 각각의 보안 프로그램이 원시 함수가 호출된 보안 프로그램의 표현, 및 비밀이 공유되는 다른 보안 프로그램(들)의 표현(들)로 입력으로써 원시 함수를 호출하는 것에 의해, 공유된 비밀은 두 개 이상의 보안 프로그램들에 설정될 수 있다. 각각의 보안 프로그램들은 원시 함수에 대한 입력으로써 수반되는 보안 프로그램들의 표현들을 사용하기 때문에, 동일한 비밀이 각각의 보안 프로그램들에 의해 생성된다.
보안 프로그램의 표현에 의존하여 출력을 생성함으로써, 보안 장치상에서 동작하는 임의의 다른 보안 프로그램이 제어되는 인터페이스를 통하여 동일한 입력에 대해 다른 결과들을 획득하는 것을 보장한다. 예를 들면 공유된 키를 획득하기 위해 해커에 의해 디자인된 임의의 다른 보안 프로그램은, 결과들이 원래의 보안 프로그램과 다르며 해커에 의해 사용되는 다른 보안 프로그램인 보안 프로그램 표현에 의존하기 때문에 제어되는 인터페이스를 통해 단지 쓸모없는 결과들만을 획득한다. 다른 어떤 보안 프로그램도 보안 키를 재생성하고 랜덤 함수에 의해 제공되는 보안과 타협하는 방법으로 상기 랜덤 함수에 액세스할 수 없다.
보안 프로그램의 표현은 해시 또는 그밖의 서명, 또는 이들의 부분일 수 있다. 일반적으로, 보안 프로그램의 표현은 완전한 보안 프로그램을 커버하지만, 특별한 경우에 있어서(예를 들면 보안 프로그램이 랜덤 함수와 관계없는 큰 부분들을 포함할 때) 원시 함수들의 입력과 출력의 호출 및 조작을 다루는 보안 프로그램의 상기 부분들에 대한 표현을 제한하는 것이 유리할 수 있다.
보안 프로그램은 일반적으로 보안 장치의 사용자에 의해 제공된다. 대안적으로, 보안 프로그램은 보안 장치내에 있는 분리된 프로그램 라이브러리에 의해 제공될 수도 있다.
보안 프로그램의 차후 실행에 대하여, 차후 사용하기 위한 특정 보안 프로그램의 빠른 검색을 허용하기 위하여, 프로그램 코드는 저장될 수 있고, 또는 해시 코드가 저장될 수 있으며, 선택적으로 차후 실행이 허용된 자의 허가에 대한 정보가 함께 저장될 수 있다.
본 발명의 더욱 특정한 구현은 청구항 2에 기술되어 있다. 프로그램 표현은 외부적으로 프로그램들 Prog1..ProgN에 대해서, 또는 내부적으로 원시 함수가 호출되는 프로그램 Program에 대해서 모두 랜덤 함수에 대한 입력으로 사용된다. 이를 구현하기 위해, 원시 함수는 원시 함수를 호출하는 보안 프로그램과 다른 보안 프로그램(들)의 표현 사이에 어떠한 구별도 만들어지지 말아야 한다. 사전순서의 정렬은 다른 보안 프로그램들이 동일한 공유된 비밀을 생성하는 것을 보장하기 위해 적용된다.
본 발명의 더욱 특정한 구현은 청구항 3에 기술되어 있다. 랜덤 해시 함수 h(.)가 사용될 때, 상기 함수는 양호하게는 (대부분) 충돌하지 않고, 이 원시 함수들이 보안 프로그램들 사이의 공유된 키로서 사용되는 키를 안전하게 생성하도록 유리하게 사용될 수 있다. 청구항 1에 기술된 바와 같이, Program 및 Prog1..ProgN이 보안 프로그램(들)의 (보안의 관점으로부터) 관련된 부분들만을 표현한다는 것이 인지되어야 한다.
본 발명의 변형이 청구항 4에 기술되어 있다. 청구항 2에서와 같은 사전순서적 정렬을 계산하도록 하는 대신에, 이 변형은 번호가 매겨지는 보안 프로그램에 의하며, 상기 프로그램 표현들은 원시 함수에 대한 입력으로서 사용되기 전에 각각의 보안 프로그램들에서 동일한 순서로 재정렬되기가 쉬울 수 있다.
본 발명의 변형이 청구항 5에 기술되어 있다. 2004년 5월 6일 출원된 특허 출원 제US2004/014404호[변호사 도켓 PHNL030605]는 제 1 모드에서 동작하는 보안 프로그램에 의해 생성되는 실행 증명을 기술하며, 이는 제 2 모드에서 동작하는 동일한 보안 프로그램에 의해 검증될 수 있다. 상기 솔루션의 단점은 양 모드들을 포함하는 완성된 보안 프로그램은 원시 함수에서 실행하고 사용하기 위한 보안 장치에서 사용가능해야 한다는 것이다. 각각의 보안 프로그램이 계속하여 공유된 비밀을 생성할 수 있을때 보안이 계속하여 가능한 반면에, 본 발명에 따른 방법은 단지 제 1 모드 부분 또는 제 2 모드 부분이 분리된 보안 프로그램으로서 요구된다는 장점을 가지고 있다.
본 발명의 변형이 청구항 6에 기술되어 있다. 2004년 5월 6일 출원된 특허 출원 제US2004/014404호[변호사 도켓 PHNL030605]는 보안 프로그램의 차후 연속하는 것으로 생각되는 보안 프로그램에 의한 안전한 상태 정보 개념을 더 기술한다. 이 개념은 둘 또는 그 이상의 보안 프로그램들을 예정하는데 사용될 수 있으며, 이는 보안 장치상에서 동작하는 다중 보안 프로그램들을 효과적으로 허용한다. 이 다른 보안 프로그램들은 본 발명에 따른 방법으로 획득된 공유된 비밀 키를 이용하여 안전하게 통신할 수 있다.
본 발명의 유리한 구현이 청구항 7에 기술되어 있다. 선행 기술 문서에서 인증된 실행은 계산 결과와 함께 특정 프로세서 칩의 사용자에게 특정 계산이 상기 특정 프로세서 칩 상에서 전달되었다는 것과, 상기 계산이 실행되었고 주어진 계산 출력을 산출했다는 것을 증명하는 인증(e-인증이라 호칭함)을 산출하는 프로세스로서 정의된다. 보안 장치의 사용자에게 보안 프로그램이 실제로 동일한 보안 장치상에서 수행되는 것을 증명하기 위해, 보안 프로그램은 양호하게는 제 2 보안 프로그램의 일부로서 실행되며, 상기 제 2 보안 프로그램은 선행 기술 문서에 기술된 바와 같은 인증된 실행을 구현한다.
본 발명의 더욱 특정한 구현은 청구항 8에 기술되어 있다. 이 구현에서 PUF는 원시 함수들에 사용되는 랜덤 함수를 구현하기 위해 사용된다.
본 발명의 더욱 특정한 구현은 청구항 9에 기술되어 있다. 이 구현에서 생성된 공유된 비밀 키는 또한 입력 변수들의 적어도 일부에 의존한다. 이는 (애플리케이션) 프로그램 입력들이 공유된 비밀의 생성을 위해 사용되기 위한 보안 프로그램에 하드코딩되지 않아도 되는 장점이 있다. 일부 입력들이 관심 대상이 아닐 수 있기 때문에, 전부가 아닌 입력들이 고려되어야 하고, 보안 장치와 상기 보안 장치의 사용자 사이에 비밀을 유지해야 하며(그리고 따라서 제 3 자에게 통신되지 않으며), 또는 다른 프로그램 실행들 사이에 다르게 허용되어야 한다.
본 발명에 따른 시스템은 청구항 10에서 기술된 것과 같은 특징이 있다.
본 발명에 따른 컴퓨터 판독성 매체와 같은 컴퓨터 프로그램 제품은 청구항 11에서 기술된 것과 같은 특징이 있다.
본 발명에 따른 신호는 청구항 12에서 기술된 것과 같은 특징을 갖는다.
본 발명의 이들 및 다른 면들은 예시와 개략도를 참조하는 방법으로 더 설명될 것이다.
도 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들(챌린지-응답 쌍들; challenge-response pairs)의 그의 개인 소유 (인증된) 목록을 소유한다. 상기 목록은 개인적인데 그 이유는 (아마도 PUF 외에도) 오직 상기 사용자만이 상기 목록의 각각의 챌린지들에 대한 응답들을 알기 때문이다. 상기 사용자의 챌린지들은 공개적일 수 있다. 상기 사용자는 보안 장치로 여러 CRP들을 설정했다고 추정된다.
(제한된 수의) 챌린지들에 대한 응답들은 상기 사용자에게만 알려진다. 부가적으로, 보안 장치는 특정 챌린지에 대한 응답을 (재)계산 할 수 있다. 특정 챌린지에 대한 응답을 다른 사람들이 복구하는 것을 방지하기 위해, CRP들을 관리하는 안전한 방법이 필요하다. 선행 기술 문서는 이를 이루기 위해 제어된 PUF 개념을 제안한다. 분리된 경로내에서 PUF에 물리적으로 링크된 보안 알고리즘을 통해서만 액세스될 수 있다면, PUF는 제어된다고(PUF 또는 CPUF가 제어된다고) 정의된다(즉, 상기 알고리즘을 우회하기 위한 임의의 챌린지는 상기 PUF의 파괴를 이끌 것이다). 특히 이 알고리즘은 PUF에 제공되는 챌린지들을 제한할 수 있고, 외부에 주어지는 응답들에 대한 정보를 제한할 수 있다. 제어는 PUF가 단순한 인증된 식별 애플리케이션들을 넘어서도록 하는 근본적인 아이디어이다. PUF들 및 제어된 PUF들은 스마트카드 식별, 인증된 실행, 및 소프트웨어 라이센싱을 구현하도록 기술되고 알려져 있다.
위장 공격들(man-in-the-middle attacks)을 막기 위해, 사용자는 CRP 관리 프로토콜들 사이에 특정 챌린지에 대한 응답을 문의하는 것을 막는다. 이는 이 프로토콜들에서 보안 장치가 사용자에게 응답들을 송신할 때 CRP 관리 프로토콜들에 관한 것이다. 이는 상기 보안 장치가 챌린지에 대해 직접적으로 응답을 주지 않는 것과 같은 방법으로 PUF에 대한 액세스를 제한하는 것에 의해 보장된다. CRP 관리 는 선행 기술 문서에 기술된 것과 같이 진행한다. 애플리케이션 프로토콜들에서, 상기 응답들은 MAC(Message Authentication Codes)들을 생성하는 것과 같은 추가 프로세싱을 위해서만 내부적으로 사용되고, 상기 사용자에게 송신되지 않는다. CPUF는 개인적인 방법(누구도 어떤 프로그램이 동작하는지, 또는 적어도 숨겨진 채로 유지하는 조작된 키 도구를 볼 수 없다), 및 인증된 방법(누구도 프로그램이 무엇을 동작하는지 탐지함이 없이 수정할 수 없다)에서 프로그램(추가: 보안 프로그램)의 일부 형태를 실행할 수 있다.
CPUF의 제어는 PUF가 보안 프로그램을 통해서만 액세스될 수 있도록 디자인되며, 더욱 특히 두 원시 함수들 GetResponse(.) 및 GetSecret(.)을 사용하여 액세스될 수 있다. 선행 기술 문서에서 사용된 원시 함수들의 세트는 다음과 같이 정의된다.
GetResponse(PC)=f(h(h(SProgram),PC))
GetSecret(Challenge)=h(h(SProgram),f(Challenge))
여기서, f는 PUF이고, h는 실질적으로 공개적으로 사용가능한 랜덤 해시 함수(또는 실제로 일부가 슈도-랜덤 함수)이다. 이 원시 함수들에서, SProgram은 인증된 경로로 동작하는 보안 프로그램 코드이다. 상기 장치의 사용자는 보안 프로그램으로 전달될 수 있다. h(Program)는 (일부 경우에 챌린지와 같은) 하드코딩된 값들을 포함하는 프로그램에 포함된 모든 것을 포함한다는 것을 주지해야 한다. 이 보안 장치는 h(SProgram)를 계산하고, 후에 GetResponse(.) 및 GetSecret(.)이 인용될 때 이 값을 사용한다. h(SProgram)의 계산은 보안 프로그램을 시작하기 (바 로) 전에 수행될 수 있거나, 원시 함수의 제 1 구체화 전에 수행될 수 있다. 선행 기술 문서에서 보인 바와 같이, 이 두 원시 함수들은 GetSecret(.)이 CRP로부터 공유된 비밀을 산출하기 원하는 애플리케이션들에 의해 사용되는 동안 GetResponse(.)가 필수적으로 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가 일치하지 않는다는 메시지를 출력하고 어떠한 복호화도 수행하지 않는다.
본 발명의 제 1 실시예는 도 2에 도시되어 있고, 공유된 비밀을 생성하는 보안 프로그램을 실행하는 예시가 도시되어 있다. 보안 프로그램(231)은 통신(221) 내에서 보안 장치(202)를 포함하는 시스템(201)으로 송신되고, 공유된 키가 생성되는 그 밖의 보안 프로그램(들)의 해시 코드 표현(들)(예를 들면: h_SprogB=h(SProgB))을 포함하는 보안 프로그램에 대한 입력(232)과 함께하는 실행을 위해 PUF(203)을 갖는다. 그 후에, 보안 프로그램 SprogA는 본 발명에 따라 원시 함수들을 이용하여 보안 장치 상에서 공유된 비밀을 생생하며, 이는 다음과 같 다.
GetResponseSK(PC)=f(h(PHR,PC)), 및
GetSecretSK(Challenge)=h(PHR,f(Challenge)),
여기서, PHR=Ordering(h(Sprogram), Val, Rule).
함수 정렬은 규칙 값에 따라 입력 매개변수들의 재정렬을 정의한다. 규칙 값은 PHR을 보장하는데 사용될 수 있고, 따라서 원시 함수들의 출력은 공유된 비밀을 생성하기 원하는 다른 보안 프로그램들과 동일하다. 생성된 공유된 비밀은 그 후에 비밀 키로 사용될 수 있다. 정렬 함수는 보안 프로그램들의 표현 값들의 사전순서적 정렬이 될 수 있거나, 규칙 값은 이 값들이 연결되는 순서를 결정할 수 있다.
Program SProgA는 다음과 같다.
begin program
\\Initialization of Rule and Val,
\\used as input in GetSecretSK and GetResponseSK
Rule = 0;
Val = (h_SProgB);
\\GetSecretSK and GetResponseSK are now defined
...
Main body of SProgA
...
\\GetSecretSK or GetResponseSK statements
...
end program
Program SProgB는 다음과 같다.
begin program
\\Initialization of Rule and Val,
\\used as input in GetSecretSK and GetResponseSK
Rule = 1;
Val = (h_SProgA);
\\GetSecretSK and GetResponseSK are now defined
...
Main body of SProgA
...
\\GetSecretSK or GetResponseSK statements
...
end program
프로그램 SProgA에서 h(Ordering(h(ProgA),Val,Rule)) = h(Ordering(h(ProgA),h(ProgB),0)) = h(h(ProgA),h(ProgB))이다. 프로그램 SProgB에서 h(Ordering(h(ProgB),Val,Rule)) = h(Ordering(h(ProgB),h(ProgA),l)) = h(h(ProgA),h(ProgB))이다. 따라서 두 프로그램들은 원시 함수들 GetResponseSK에 동일한 입력을 적용한다.
본 발명의 제 2 실시예는 실행 증명의 생성 및 검증을 위한 분리된 보안 프로그램들을 갖기 위한 공유된 비밀의 사용을 설명한다. 2004년 5월 6일 출원된 특허 출원 제US2004/014404호[변호사 도켓 PHNL030605]는 제 1 모드가 실행 증명을 생성하고, 제 2 모드가 실행 증명을 검증하는 다중-모드 보안 프로그램을 이용하는 실행 증명의 생성 및 검증을 기술한다. 본 발명에 따라, 이제 실행 증명을 생성하고 분리된 보안 프로그램을 사용하여 실행 증명을 검증하는 것이 가능하고, 이에 따라 프로그램 다운로드 및 초기화의 과부하를 감소시킨다. 또한 본 발명은 보안 프로그램 표현 계산의 계산적 부담을 감소시킨다.
실행 증명을 지원하기 위해, 실행 증명을 생성하는 부가적 프로그램 층으로 인증된 실행의 솔루션을 확장하는 것이 유리하다.
이 실시예가 사용될 수 있는 제 1 예시로서, 도 3에서 보는 앨리스가 브로드캐스터(310)이고 밥이 보안 장치(301)가 있는 STB(300)의 소유자인 STB(셋탑박스; set-top-box)를 고려하자. 프로그램 A에서 밥은 서비스를 구매한다. 앨리스는 거래 세부사항들(332), e-인증(333; e-인증은 거래 세부사항들 및 e-증명 모두의 신뢰성을 검증한다), 및 e-증명(334)을 수신한다. 앨리스는 단계(340)에서 e-인증이 일치하는지 확인한다. 만일 일치한다면, 앨리스는 e-증명이 밥의 STB에 의해 생성되었다는 것을 알고 프로그램 B에서 거래를 계속한다. e-증명은 중간자가 거래 세부사항들을 회복할 수 있기 때문에 밥이 서비스를 구매했는지에 대한 확인으로서 사용될 수 있다. 프로그램 B(321)에서, 밥은 그가 요청했던 서비스에 속하는 콘텐트(335)를 수신한다. 상기 콘텐트는 CRP를 이용하여 암호화될 수 있다. 앨리스는 프로그램 B에서 밥의 행동들의 제 2 e-증명(336)을 수신한다. 제 1 구체화에서, 프로그램 B에서 콘텐트를 밥에게 송신하는 앨리스의 약속의 증명을 수신하지 않은 것처럼 보인다. 그러나, 앨리스 뿐만 아니라 밥도 제 1 e-증명을 사용할 수 있다. 임의의 제 3자는 프로그램 B에서 밥에게 콘텐트를 전송하는 앨리스의 약속에 있는 프로그램 A에 인코딩된 프로토콜을 밥의 STB가 성공적으로 수행했다는 것을 확인 할 수 있을 것이다. 예를 들면, 밥은 제 3자(및 특히 앨리스)에게 그가 특정 서비스를 구매했다는 것을 입증하기 위해 e-증명을 사용할 수 있고, 이는 그를 디스카운트들 및 업그레이드들에 대하여 적격자로 만들수 있다.
제 2 예시로서, 앨리스가 그 입력의 일부로서 타임 스탬프로 밥의 보안 장치상에서 프로그램을 실행하기 원한다고 가정하자. 실행의 결과들은 밥의 동의가 있는 상기 타임 스탬프의 복사본을 포함시킬 수 있고, 타임 스탬프는 실행의 적합한 시간을 표현한다. 예를 들면, 상기 프로그램은 밥에게 그가 동의하면 문의하고, 그가 동의하지 않으면 중단하도록 디자인된다. 주어진 적합한 e-증명에서, 중간자는 결과들을 검색한다. 그래서, 그는 타임 스탬프를 확인하고 밥 및/또는 앨리스의 요청들이 아직 유효한지 검증할 수 있다.
제 3 예시로서, 여러 모드들이 있는 프로그램 Program'을 가정하자. 이 모드들에 의존하여, EProof는 프로세서 P 상에서 입력 Input으로 프로그램 Program에 대한 e-증명일 때, Program'은 프로세서 P상에서 (Result,EProof)=Program(Input)을 계산하거나, EProof가 유효한 e-증명인지 확인하는 중간자의 역할을 하고, 만일 유효하다면 Result를 재구성한다. 중간자의 역할로서, EProof는 Program'에서 차기 모드에 대한 표로서 사용될 수 있다. 이 기술은 조건적 액세스를 구현한다.
도 4는 여러 프로그램 층들을 도시한다. 각각 생성하는 본 발명에 따른 상기 프로그램들은 실행이 상기 보안 장치상에서 일어났다는 것을 사용자 및 제 3자 모두가 확신하도록, PUF(401)가 있는 보안 장치(400)내의 각각의 인증된 실행 프로그램들 CProgram1(402,454)의 XProgram 부분으로서 각각 실행되는 실행증명, EProgram_generation(403), 및 EProgram_verification(453)을 생성한다.
EProgram_generation은 앨리스가 관심이 있는 (AProgram(406)내에서) 결과들 뿐만 아니라 e-증명도 계산한다. 앨리스는 상기 프로그램이 밥의 보안 장치상에서 정확하게 실행되었다는 것을 확신하기 위해 (CProgram의 XProgram 부분으로서 EProgram_generation을 동작시켜서) 인증된 실행을 사용한다. 중간자는 EProgram_verification을 실행함에 의해 또한 인증된 실행을 이용함에 의해 e-증명을 확인할 수 있다. 키 아이디어는 본래 GetResponse(.)가 보안 프로그램들 양쪽의 해시에 의존한다는 것이다. 결과적으로, (본래 GetResponse(.)를 통해 획득된 키로) 실행 증명을 생성하기 위해 보안 프로그램에 의해 생성되었던 e-증명은 실행 증명의 검증을 위해 보안 프로그램에 의해 복호화될 수 있다.
보안은 먼저 본래 GetResponse(.)의 파괴의 어려움에 의해 결정되는데, 이는 해시를 파괴하는 것과 GetResponse(.)가 정의된 PUF를 파괴하는 것을 말하며, 두번째로, 암호화와 본래 MAC E&M(.) 파괴의 어려움에 의해 결정된다.
이 프로그램들안에서 변형들은 가능하다. 일부 프로그램들은 입력 부분을 하드코딩할 수 있고, 이는 덜 유연하지만 더 튼튼하다. 증명 결과들내의 현재의 출력 의 양은 또한 다양하다. 이 알고리즘들의 임의의 변형은 구현될 수 있다.
제 1 변형에서, 앨리스는 AProgram(Input)을 동작하고 실행 증명을 수신하기 원하며, 따라서 Inputs=(h(EProgram_verification),AProgram,Input,PC)(AProgram은 435, Input은 434)가 Val(432)로 h(EProgram_verification) 및 PC(433) 랜덤 문자열과 동일하고 EProgram_generation이 아래에 정의되는 바와 같은 EProgram_generation(Inputs; 431)을 실행한다. PC는 비밀 키들 KE를 생성하기 위해 랜덤 함수에 대한 챌린지를 계산하도록 "예비-챌린지"로서 GetResponse(.)에 의해 사용된다. 앨리스는 상술된 바와 같이 CProgram(430)을 사용하는 밥의 보안 장치상의 EProgram_generation(Inputs)를 실행하기 위해 인증된 실행의 기술을 사용한다. 앨리스는 상기 보안 장치에서 되찾는 모든 출력의 신뢰성을 검증하기 위해 e-인증을 확인한다. 산출된 e-인증은 Program(Input)에 의해 생성된 결과(438)의 인증일뿐만 아니라, e-증명(436)의 인증이다.
EProgram_generation(Inputs)는 다음과 같다.
begin program
var Val,AProgram,Input,PC,Rule,Result,KE,EMResult,EProof,Results;
(Val,AProgram,Input,PC)=Inputs;
Rule=O;
//GetResponseSK() now defined
Result= AProgram(Input);
KE=GetResponseSK(PC);
EMResult=E&M(Result,KE);
EProof=(PC,EMResult);
Results=(Result,EProof);
end program
EProgram_verification(Inputs)은 다음과 같다.
begin program
var Val, Eproof, Rule, PC, EMResult, KA, Result, CheckBit, Results;
(Val,EProof)=Inputs;
Rule=1;
//GetResponseSK() is now defined
(PC,EMResult)=EProof;
KA=GetResponseSK(PC);
Result=D&M(EMResult,KA);
CheckBit=(MAC of EMResult matches);
Results=(Result,CheckBit);
Output(Results);
end program
실행 증명은 밥의 보안 장치로 프로토콜을 실행하는 임의의 중간자에 의해 검증될 수 있으며, 상기 검증은 세 단계를 포함한다. 제 1 단계에서 중간자는 앨리스 또는 밥으로부터 단계(450) 내의 실행 EProof의 증명을 수신한다. 그는 Inputs=(h(EProgram_generation),EProof)(EProof는 444)를 구성하고, 여기서 Val(442)는 공유된 비밀 키를 생성하기 위해 요구되는 보안 프로그램 표현이다. 중간자는 또한 아마도 앨리스 또는 밥으로부터 (전에 실행된 것으로 추측되는; 이 예시에서 단계(451) 및 단계(452) 내의 중간자와 통신되는) EProgram_verification 및 CProgram을 획득한다. 중간자는 PC가 필요하지 않다는 것을 주지해야 한다.
제 2 단계에서 중간자는 EProgram_verification(Inputs) (EProgram_verification은 441)을 밥의 보안 장치상에서 실행하기 위해 CProgram(440)으로 인증된 실행의 기술을 사용한다. 중간자는 보안 장치로부터 되찾는 Result들의 신뢰성을 검증하기 위해 e-인증(447)을 확인한다. e-인증이 Result들과 일치하면 상기 중간자는 임의자의 방해 없이 밥의 보안 장치가 EProgram_generation(Inputs)을 실행했다는 것과 누구도 그 입력들과 출력들로 변경하지 않았다는 것을 알게 된다. 특히 누구도 상기 입력 EProof를 수정하지 않았다. 다른 말로 하면, 밥의 보안 장치는 EProof를 이용하여 EProgram_verification(Inputs)를 실행했다. Result(445)는 출력의 전체로, 또는 부분적으로 제공되거나, 전혀 제공되지 않을 수 있다. 이는 또한 상기 Result로부터 비롯된 정보에 의해 교체될 수 있다. 이는 애플리케이션 및 중간자에 의존할 수 있다. 이 결정은 이후 프로그램에 구현된다. 예를 들면, 개인적인 이유들로 EProgram_verification은 중간자에게 상기 결과들의 요약만을 송신할 수 있다.
제 3 단계에서 중간자는 CheckBit(446)가 참인지 검증하고, 이는 EMResult의 MAC과 일치하는지 여부이다. 만일 일치한다면, 중간자는 밥의 보안 장치에서 AProgram(Input)이 EProof 및 Result를 계산했다고 판단한다. 만일 불일치한다면, 상기 중간자는 밥의 보안 장치가 EProof를 계산하지 않았다고 판단한다. EProgram_verification은 MAC가 일치하지 않는다고 출력하거나(D&M(.) 및 CheckBit 참조), MAC가 복호화된 결과로 함께 일치한다고 출력한다. (속임) 결과 FResult에 대한 속임 e-증명 FEProof=(FPC,FEMResult)를 생성하는 것은 어려운 문제로 불린다.
제 3 실시예에서, 2004년 5월 6일 출원된 특허 출원 제US2004/014404호[변호사 도켓 PHNL030605]에 기술된 안전한 메모리의 사용 및 안전한 프로그램 실행 상태는, 동일한 보안 장치상에서 교차하여 동작하는 보안 프로그램들 사이에서 안전하게 통신하도록 공유된 비밀 생성과 결합될 수 있다.
도 5는 이 실시예에 대한 구조도이다. 프로그램 실행 상태(502) 및 메모리 콘텐트(502)가 보안 프로그램(505)의 부분적 실행들사이에서 저장된다. 보안 장치(500)상에서 동작하는 보안 프로그램(501)은 중단상태 또는 다른 보안 프로그램이 동작해야하는 경우에 상기 프로그램의 프로그램 상태(505)를 안전하게 저장할 수 있다. 중단된 경우, 상기 프로그램 상태는 암호화된다(단계 503). 보안 장치는 외부에 자신의 상태를 전혀 드러내지 않고 다음 순간에 자신의 실행을 계속할 수 있다. 계속되는 경우, 프로그램 상태는 검증되고 복호화되고(단계 504) 회복된다. 메모리 콘텐트의 한 부분이 공유된 비밀 키를 이용하여 암호화될 수 있고, 반면에 메모리 콘텐트의 다른 부분은 개인적인 공유된 비밀 키를 이용하여 암호화될 수 있으며, 따라서 보안 프로그램들 사이에서 두개의 보안 내부-프로그램 통신 및 보안 분리를 구현한다.
본 발명의 제 4 실시예는 인증된 실행의 층을 부가한다. 인증된 실행의 개념은 선행 기술 문서에 기술되어 있다. 보안 장치의 사용자에게 상기 보안 장치상에서 보안 프로그램이 실질적으로 안전하게 실행된다는 것을 보장하기 위해서, 공유된 비밀을 생성하는 상기 보안 프로그램은 인증된 실행을 구현하는 다른 보안 프로그램의 제어하에 실행된다. 이 기술은 특정 구현에 의해 설명될 수 있다. 인증된 실행은 e-인증으로 불리는 것을 이용하여 제공된다. 보안 장치 상에서 입력 Input이 있는 프로그램 XProgram에 대한 e-인증은 상기 보안 장치의 사용자가 상기 보안 장치상에서 XProgram(Input)에 의해 생성되었던 XProgram의 결과들을 출력했었는지 여부를 뛰어난 추정도로 효율적으로 확인할 수 있는 것과 같이 상기 보안 장치상에서 XProgram(Input)에 의해 효율적으로 생성된 문자열로서 정의된다. 상기 보안 장치상의 XProgram의 실행을 요청하는 사용자는 보안 장치의 소유자에게 의존하는 대신에, 상기 보안 장치를 제작했던 것을 보증할 수 있는 보안 장치 제조자의 신뢰도로 신뢰할 수 있다.
도 6은 계산이 보안 장치상에서 직접 이루어지는 인증된 실행을 도시한다. 사용자 앨리스는 계산적으로 고가의 프로그램 Program(Input)을 밥의 컴퓨터(601)에서 동작시키기 원한다. 밥의 컴퓨터는 PUF(603)을 가진 보안 장치(602)를 갖는다. 앨리스가 이미 보안 장치로 CRP들(611)의 목록을 설정했다고 가정한다. (Challenge,Response)가 밥의 PUF에 대한 앨리스의 CRP들중의 하나가 된다고 하자. 제 1 구현 변형에서, 앨리스는 (통신(621))내에서 (Challenge,E&M((XProgram,Input),h(h(Cprogram),Response)))와 동일한 입력 Input(632)로 후술하는 프로그램 CProgram1(631)을 보안 장치(602)로 송신한다.
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
Result=XProgram(Input)에 의해 Result가 XProgram(Input)의 출력의 부분이라는 것이 인지된다. e-증명이 필요하지 않은 출력들이 더 있을 수 있다. Output(...)는 통신(622)에 나타낸 바와 같이 CPUF의 외부로 결과(633)를 송신하는데 사용된다. 상기 보안 장치 외부로 송신되는 것은 (제조자가 상기 보안 장치의 물리적 소유가 있는 부츠트래핑(bootstrapping) 동안을 제외하고) 잠재적으로 전체 공간에 보일 수 있다. 상기 프로그램의 보안 디자인은 Result 내에 암호화된 형식으로 위치하는 '결과'를 생성한다. 암호화는 전통적인 암호기법을 사용하거나 비밀 을 이용하여 수행될 수 있다. 다음 경우에서, 비밀은 Input에 포함된다.
앨리스의 CRP가 개인적이기 때문에, 누구도 Secret를 생성할 수 없고, 따라서 Secret으로 MAC을 한다. MAC는 프로그램에서 두 부분에서 사용된다. 제 1 MAC는 상기 프로그램에 의해 확인되고 Input들의 신뢰성을 보장한다. 제 2 MAC는 앨리스에 의해 확인되고, 보안 장치로부터 되찾는 메시지의 신뢰도를 보장한다. 앨리스와는 별도로 상기 보안 장치만이 프로그램 CProgram을 실행하여 Secret가 주어진 Challenge를 생성할 수 있다. 이는 Result 및 Certificate가 상기 보안 장치상에서 CProgram에 의해 생성되었다는 것을 의미한다. 다른 말로 하면, CProgram은 입력으로서 Input들로 인증된 실행을 수행했다. 이는 Certificate가 e-인증인 것을 증명한다.
e-인증들은 공유된 비밀을 생성하는 보안 프로그램의 보안 원격 계산에 사용될 수 있다. Certificate가 일치하면, 이는 앨리스에게 XProgram(Input)가 (CProgram(Inputs)에 의해) 보안 장치상에서 실행되었다는 것을 증명한다.
보안 장치의 소유자(밥)와 보안 장치의 사용자(앨리스)가 하나이고 동일한 실체일 수 있다는 것을 주지해야 한다. 예를 들면, 밥은 다른 자들에게 그가 Program(Input)으로 Result를 계산한 것을 그의 e-증명에 의하여 증명한다. 마지막으로, 앨리스나 중간자 모두 PUF가 장착된 보안 장치가 필요하지 않다는 것이 본 발명의 장점이다.
본 발명은 일반적으로 모든 PUF들, 즉 물리적 또는 광학적인 것뿐만 아니라 디지털 PUF에도 적용될 수 있다는 개념이 적용가능하다. 구조의 세부 사항들은 물 리적 PUF들에 주어지지만, 그러나 디지털 또는 광학 PUF들에 주어질 수 있다.
대안은 가능하다. 상기 기술에서, "포함"은 다른 구성요소들 또는 단계들을 배제하지 않고, "한" 또는 "하나"는 복수를 배제하지 않으며, 단일의 프로세서 또는 그 밖의 유니트는 본 청구항들에 기술된 여러 수단들의 기능들을 수행할 수도 있다.

Claims (12)

  1. 제 1 보안 프로그램과 적어도 제 2 보안 프로그램 사이의 공유된 비밀을 생성하는 방법에 있어서,
    랜덤 함수(104, 203)를 포함하는 보안 장치(103, 202) 상의 상기 제 1 보안 프로그램(403)의 제어 하에서 프로그램 명령들을 실행하는 단계로서, 상기 랜덤 함수는 제어되는 인터페이스를 통하여 보안 프로그램으로부터만 액세스 가능한, 상기 프로그램 명령들을 실행하는 단계를 포함하고,
    상기 제어되는 인터페이스는 원시 함수를 호출하는 상기 제 1 보안 프로그램의 표현의 적어도 일부, 및 상기 보안 장치 상에서 상기 제 2 보안 프로그램의 실행시, 상기 원시 함수를 호출하는 상기 제 2 보안 프로그램의 표현의 적어도 일부에 의존하는 출력을 되돌려 주는 상기 랜덤 함수에 액세스하는 적어도 하나의 원시 함수를 포함하고,
    상기 프로그램 명령들을 실행하는 단계는 상기 공유된 비밀을 생성하도록 상기 적어도 하나의 원시 함수를 호출하는 부단계를 포함하는, 공유된 비밀을 생성하는 방법.
  2. 제 1 항에 있어서,
    상기 제 1 보안 프로그램의 상기 표현 및 상기 제 2 보안 프로그램의 상기 표현은 상기 원시 함수의 입력들로 사용될 때 사전 순서대로 정렬되는, 공유된 비 밀을 생성하는 방법.
  3. 제 2 항에 있어서, 상기 랜덤 함수는 원시 함수를 통해 액세스 가능하고 GetResponse(..)=f(h(o(h(Program),hprog1,...hprogN),PC)와 실질적으로 동일하며,
    여기서, Program은 상기 원시 함수를 호출하는 상기 보안 프로그램이고,
    hprog1..hprogN은 h(Program1)..h(ProgramN)과 동일하고,
    Program1..ProgramN은 키가 공유되는 상기 보안 프로그램들이며,
    f(.)은 랜덤 함수이고,
    h(.)은 실질적으로 공개적으로 이용가능한 랜덤 해시 함수이며,
    o(..)는 인수들의 사전적 정렬을 수행하는, 공유된 비밀을 생성하는 방법.
  4. 제 1 항에 있어서, 상기 랜덤 함수는 원시 함수를 통해 액세스 가능하고 GetResponse(..)=f(h(o(h(Program),hprog1,...hprogN),PC)와 실질적으로 동일하며,
    여기서, Program은 상기 원시 함수를 호출하는 상기 보안 프로그램이고,
    hprog1..hprogN은 h(Program1)..h(ProgramN)과 동일하고,
    Program1..ProgramN은 키가 공유되는 상기 보안 프로그램들이며,
    f(.)은 랜덤 함수이고,
    h(.)은 실질적으로 공개적으로 이용가능한 랜덤 해시 함수이며,
    o(..)는 hprog1,..hprogR,h(Program), hprogR+1,..hprogN의 순서로 인수들을 출력하는 상기 인수들의 재정렬을 수행하는, 공유된 비밀을 생성하는 방법.
  5. 제 1 항에 있어서,
    상기 공유된 비밀은 실행의 증명을 생성하기 위해 제 1 보안 프로그램에서 이용되고, 상기 공유된 비밀은 실행의 상기 증명을 검증하기 위해 제 2 보안 프로그램에서 이용되는, 공유된 비밀을 생성하는 방법.
  6. 제 1 항에 있어서,
    상기 공유된 비밀은 동일한 보안 장치상에서 동작하는 다른 보안 프로그램들 사이에 통신하기 위해 이용되는, 공유된 비밀을 생성하는 방법.
  7. 제 1 항에 있어서,
    상기 보안 프로그램은 제 2 보안 프로그램(402)의 일부로서 실행되고, 상기 제 2 보안 프로그램은 상기 보안 장치의 사용자에게 상기 보안 프로그램이 상기 보안 장치에 의해 실행되는 것을 증명하는 인증된 실행을 제공하는, 공유된 비밀을 생성하는 방법.
  8. 제 1 항에 있어서,
    상기 랜덤 함수는 복합적인 물리 시스템을 포함하는, 공유된 비밀을 생성하는 방법.
  9. 제 1 항에 있어서,
    상기 공유된 비밀의 계산은 상기 랜덤 함수에 대한 입력으로서 상기 보안 프로그램의 일부를 이용하는, 공유된 비밀을 생성하는 방법.
  10. 랜덤 함수(104) 및 컴퓨터 판독가능한 명령들을 실행하기 위한 프로세서(111)와 메모리(112)를 포함하는 프로세싱 장치를 포함하는 시스템(100)으로서, 상기 명령들은 상기 시스템이 제 1 항에 따른 방법을 구현하도록 배치되는, 시스템.
  11. 컴퓨터가 제 1 항에 따른 방법을 구현하도록 컴퓨터 실행가능한 명령들을 갖는, 컴퓨터 프로그램 제품(113).
  12. 제 1 항에 따른 방법에 의해 생성된 공유된 비밀을 전달하는 신호.
KR1020077009016A 2004-09-20 2005-09-16 랜덤 함수를 이용한 비밀 공유 KR20070057968A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US61138604P 2004-09-20 2004-09-20
US60/611,386 2004-09-20

Publications (1)

Publication Number Publication Date
KR20070057968A true KR20070057968A (ko) 2007-06-07

Family

ID=35668202

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077009016A KR20070057968A (ko) 2004-09-20 2005-09-16 랜덤 함수를 이용한 비밀 공유

Country Status (6)

Country Link
US (1) US20080059809A1 (ko)
EP (1) EP1794925A1 (ko)
JP (1) JP2008514097A (ko)
KR (1) KR20070057968A (ko)
CN (1) CN101032115A (ko)
WO (1) WO2006033065A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101410764B1 (ko) * 2012-09-03 2014-06-24 한국전자통신연구원 중요 정보 원격 삭제 장치 및 방법

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702927B2 (en) 2004-11-12 2010-04-20 Verayo, Inc. Securely field configurable device
EP1977511B1 (en) 2006-01-24 2011-04-06 Verayo, Inc. Signal generator based device security
US8782396B2 (en) * 2007-09-19 2014-07-15 Verayo, Inc. Authentication with physical unclonable functions
EP2141883A1 (en) * 2008-07-04 2010-01-06 Alcatel, Lucent A method in a peer for authenticating the peer to an authenticator, corresponding device, and computer program product therefore
EP2359520B1 (en) * 2008-11-17 2019-08-14 Intrinsic ID B.V. Distributed puf
US8683210B2 (en) * 2008-11-21 2014-03-25 Verayo, Inc. Non-networked RFID-PUF authentication
CN101753304B (zh) * 2008-12-17 2012-07-04 中国科学院自动化研究所 一种生物特征和密钥绑定的方法
US8468186B2 (en) * 2009-08-05 2013-06-18 Verayo, Inc. Combination of values from a pseudo-random source
US8811615B2 (en) * 2009-08-05 2014-08-19 Verayo, Inc. Index-based coding with a pseudo-random source
EP2524334B1 (en) * 2010-01-12 2020-07-08 Stc.Unm System and methods for generating unclonable security keys in integrated circuits
US8868923B1 (en) 2010-07-28 2014-10-21 Sandia Corporation Multi-factor authentication
US8516269B1 (en) 2010-07-28 2013-08-20 Sandia Corporation Hardware device to physical structure binding and authentication
US8848905B1 (en) 2010-07-28 2014-09-30 Sandia Corporation Deterrence of device counterfeiting, cloning, and subversion by substitution using hardware fingerprinting
US8667265B1 (en) 2010-07-28 2014-03-04 Sandia Corporation Hardware device binding and mutual authentication
US9018972B1 (en) 2012-06-04 2015-04-28 Sandia Corporation Area-efficient physically unclonable function circuit architecture
KR101503785B1 (ko) * 2013-10-10 2015-03-18 (주)잉카엔트웍스 동적 라이브러리를 보호하는 방법 및 장치
US9501664B1 (en) 2014-12-15 2016-11-22 Sandia Corporation Method, apparatus and system to compensate for drift by physically unclonable function circuitry
US10177922B1 (en) 2015-03-25 2019-01-08 National Technology & Engineering Solutions Of Sandia, Llc Repeatable masking of sensitive data
US10892903B2 (en) * 2018-05-29 2021-01-12 Ememory Technology Inc. Communication system capable of preserving a chip-to-chip integrity

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0001797D0 (en) * 2000-01-26 2000-03-22 Miller Howard I Method and apparatus for treatment of compact discs
US7840803B2 (en) * 2002-04-16 2010-11-23 Massachusetts Institute Of Technology Authentication of integrated circuits
US20060159125A1 (en) * 2005-01-14 2006-07-20 At&T Corp System and method for providing central office equipment for high bandwidth communications

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101410764B1 (ko) * 2012-09-03 2014-06-24 한국전자통신연구원 중요 정보 원격 삭제 장치 및 방법
US9081969B2 (en) 2012-09-03 2015-07-14 Electronics And Telecommunications Research Institute Apparatus and method for remotely deleting critical information

Also Published As

Publication number Publication date
WO2006033065A1 (en) 2006-03-30
US20080059809A1 (en) 2008-03-06
CN101032115A (zh) 2007-09-05
EP1794925A1 (en) 2007-06-13
JP2008514097A (ja) 2008-05-01

Similar Documents

Publication Publication Date Title
CN109144961B (zh) 授权文件共享方法及装置
KR102472231B1 (ko) 블록체인 구현 방법 및 시스템
US7877604B2 (en) Proof of execution using random function
US7516321B2 (en) Method, system and device for enabling delegation of authority and access control methods based on delegated authority
KR20070057968A (ko) 랜덤 함수를 이용한 비밀 공유
US8171306B2 (en) Universal secure token for obfuscation and tamper resistance
US8509449B2 (en) Key protector for a storage volume using multiple keys
CN109075976A (zh) 取决于密钥认证的证书发布
US10880100B2 (en) Apparatus and method for certificate enrollment
CN112434336A (zh) 基于区块链的电子病历共享方法、装置、系统及存储介质
US20220014367A1 (en) Decentralized computing systems and methods for performing actions using stored private data
US11556630B2 (en) Private password constraint validation
JP6756056B2 (ja) 身元検証による暗号チップ
EP3292654B1 (en) A security approach for storing credentials for offline use and copy-protected vault content in devices
US9641328B1 (en) Generation of public-private key pairs
US11748521B2 (en) Privacy-enhanced computation via sequestered encryption
JP5964460B2 (ja) データの暗号化記憶システム
Fons et al. A modular reconfigurable and updateable embedded cyber security hardware solution for automotive
Wang et al. Automated security proof of cryptographic support commands in TPM 2.0
Elumalai et al. Secure and efficient data storage with Rivest Shamir Adleman algorithm in cloud environment
Costea et al. Secure software licensing: Models, constructions, and proofs
CN114866409B (zh) 基于密码加速硬件的密码加速方法及装置
CN118445855A (zh) 基于区块链的隐私数据处理方法、装置、设备及介质
KR20230037588A (ko) 프로그래밍가능 장치를 원격으로 프로그래밍하는 방법
CN117335991A (zh) 可执行程序的无证书认证

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid