KR102603797B1 - 타겟 장치에서의 어플리케이션의 실행 무결성을 검증하는 방법 - Google Patents
타겟 장치에서의 어플리케이션의 실행 무결성을 검증하는 방법 Download PDFInfo
- Publication number
- KR102603797B1 KR102603797B1 KR1020187014060A KR20187014060A KR102603797B1 KR 102603797 B1 KR102603797 B1 KR 102603797B1 KR 1020187014060 A KR1020187014060 A KR 1020187014060A KR 20187014060 A KR20187014060 A KR 20187014060A KR 102603797 B1 KR102603797 B1 KR 102603797B1
- Authority
- KR
- South Korea
- Prior art keywords
- application
- target device
- function
- challenge
- digest
- Prior art date
Links
- 238000012795 verification Methods 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims abstract description 26
- 230000002776 aggregation Effects 0.000 claims abstract description 9
- 238000004220 aggregation Methods 0.000 claims abstract description 9
- 230000000694 effects Effects 0.000 claims abstract description 4
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 claims description 4
- 230000004931 aggregating effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 32
- 239000011159 matrix material Substances 0.000 description 10
- 230000004044 response Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012886 linear function Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
- G06F21/53—Monitoring 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 by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
- G06F21/54—Monitoring 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 by adding security routines or objects to programs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mobile Radio Communication Systems (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
Abstract
본 발명은 소프트웨어 검증의 분야에 관한 것으로, 특히 소프트웨어 어플리케이션의 런타임 무결성을 증명할 수 있는지 여부를 확인하는 것이다. 따라서 본 발명은 검증 서버에 의해서 타겟 장치의 어플리케이션의 실행 무결성을 검증하는 방법을 제공하는데, 검증 서버는 타겟 장치 상의 런타임 어플리케이션 정보로부터 생성된 어플리케이션 서명을 수신하고, 서명은 타겟 장치의 어플리케이션의 실행 무결성을 검증하는데 이용되고, 어플리케이션은 블록의 어레이를 포함하며, 각각의 블록은 다이제스트를 생성하여, 그에 따라 블록들의 어레이와 관련된 다이제스트들의 어레이를 생성되고, 이 방법은, 챌린지 및 제1 함수를 포함하는 메시지를 타겟 장치에 송신하는 단계 - 제1 함수는 취합(aggregation) 방법을 정의하고, 상기 챌린지는 취합 명령을 정의함 - ; 타겟 장치로부터, 타겟 장치에 의해 각각의 블록에 있어서 상기 블록에 대한 대응하는 다이제스트를 결정하는 것에 의해 생성되는 증명을 수신하여, 어플리케이션에 관계된 증명을 생성하기 위해 제1 함수의 취합 방법에 따른 블록의 다이제스트와 챌린지를 취합하는 단계; 검증 서버에 의해 제2 함수를 증명에 적용하는 단계 - 제2 함수는 챌린지의 효과를 취소하여 상기 챌린지에 독립된 어플리케이션 서명을 생성함 - ; 생성된 어플리케이션 서명을 기준 서명과 비교함으로써 어플리케이션의 실행 무결성을 검증하는 단계;를 포함한다.
Description
본 발명은 소프트웨어 검증의 분야에 관한 것으로, 특히 소프트웨어 어플리케이션의 런타임 무결성을 증명할 수 있는지 여부를 확인하는 것이다.
원격 증명은 인증된 파티(authorized parties)에 의해 사용자의 컴퓨터(또는 장치에 포함된 소프트웨어)에 대한 변경을 탐지하는 방법이다. 예를 들어 신뢰할 수 있는 센터는 기술적 보호 수단을 우회하기 위해 그들 소프트웨어에 대한 사용자 조작을 포함한 소프트웨어에 대한 허용되지 않은 변경을 식별할 수 있다. 타겟 장치는 소프트웨어 및/또는 실행 플랫폼의 실행에 대한 표현(expression)을 만드는 인증(증명)을 생성한다. 그런 다음 타겟 장치는 이 인증서를 원격 파티에게 제공하여 변경되지 않은 소프트웨어가 현재 실행 중임을 보여준다.
원격 증명은 공개 키 암호화와 결합되어 전송된 정보가 승인되지 않은 제3자가 아닌, 인증을 제시하고 요청한 프로그램에 의해서만 판독할 수 있도록 한다.
검증 방법은 검증 센터에 의해 타겟 장치에 대한 챌린지를 전송하는 것에 기반한다. 이 챌린지는 소프트웨어에 의해 결과를 생성하는데 사용되며, 이 결과는 소프트웨어 코드와 실행시간 정보 및 챌린지에 따른다. 다음으로 그 결과는 검증을 위해 검증 센터로 다시 전송된다.
결과를 검증하는 키는 타겟 장치의 소프트웨어에 대한 정밀한 지식(precise knowledge)으로 비교를 위한 기준 결과를 생성한다.
본 발명은 타겟 장치에 내장된 소프트웨어를 검증하는 방법 및 시스템을 제공하는 것을 목적으로 한다.
본 명세서의 프레임에서, 런타임 어플리케이션 정보로부터 어플리케이션 서명을 생성하는 것에 의해 타겟 장치의 어플리케이션의 실행 무결성을 검증하는 방법이 제공되는데, 서명은 검증 서버에 의해 어플리케이션의 실행 무결성을 검증하는데 이용되고, 어플리케이션은 블록의 어레이를 포함하며, 각각의 블록은 다이제스트를 생성하여, 그에 따라 블록들의 어레이와 관련된 다이제스트들의 어레이가 생성되고, 이 방법은,
타겟 장치에 의해 챌린지 및 제1 함수를 포함하는 메시지를 수신하는 단계 - 제1 함수는 취합(aggregation) 방법을 정의하고, 챌린지는 취합 명령을 정의함 - ;
각각의 블록에 있어서 블록에 대한 대응하는 다이제스트를 결정하는 단계;
어플리케이션에 관계된 증명을 생성하기 위해 제1 함수의 취합 방법에 따른 블록의 다이제스트와 챌린지를 취합하는 단계;
검증 서버에 증명을 전송하는 단계;
검증 서버에 의해 제2 함수를 증명에 적용하는 단계 - 상기 제2 함수는 챌린지의 효과를 취소하여 챌린지에 독립된 어플리케이션 서명을 생성함 - ;
생성된 어플리케이션 서명을 기준 서명과 비교함으로써 어플리케이션의 실행 무결성을 검증하는 단계;를 포함한다.
본 발명에 따르면 전술한 목적을 달성할 수 있다.
이하의 설명은 첨부 도면을 참조하여 보다 명확하게 이해될 수 있다.
도 1은 헤드 엔드(head end) 및 타겟 장치를 포함하는 시스템과 어플리케이션을 검증하기 위한 단계를 나타내는 도면;
도 2는 증명서(attestation) 생성을 나타내는 도면;
도 3은 증명서의 검증을 나타내는 도면;
도 4는 타겟 장치를 나타내는 도면.
도 1은 헤드 엔드(head end) 및 타겟 장치를 포함하는 시스템과 어플리케이션을 검증하기 위한 단계를 나타내는 도면;
도 2는 증명서(attestation) 생성을 나타내는 도면;
도 3은 증명서의 검증을 나타내는 도면;
도 4는 타겟 장치를 나타내는 도면.
증명 체계(schemes)는 런타임 환경 또는 어플리케이션이 무결성 증명(증명서(attestation))을 생성하는 체계이다. 원격 증명 체계는 시도-응답(challenge-response) 프로토콜이며, 여기서 어플리케이션은 검증 서버로부터 수신된 시도에 기반한 그러한 증명을 계산하도록 요청된다. 수신된 응답(증명)에 기초하여, 검증 자(헤드 엔드와 같은 신뢰되는 원격 엔티티)는 그 어플리케이션의 실행 무결성에 대한 신뢰도 판정을 할 수 있다. 일반적인 증명 체계는 메모리 컨텐츠와 같은 런타임 정보로부터 그러한 증명을 계산한다. 예를 들어 챌린지가 메모리를 통해 미리 정의된 방문(visit)을 정의하는 여러 체계가 공지되어 있고, 여기서 증명은 방문 동안 인카운트된(encountered) 값의 해시이다.
공지된 원격 증명 방식은 어플리케이션의 런타임 환경이 에뮬레이트되거나 어플리케이션(또는 그 일부)이 신뢰할 수 있는 엔터티에서 사용가능한 것을 필요로하여 주어진 챌린지에 대한 기대 결과를 계산하고 수신된 증명의 정확성을 확인할 수 있어야 한다. 이는 어플리케이션 버전의 다양성과 확인해야 하는 어플리케이션 인스턴스의 수가 많아 실제 처리하기 매우 복잡하고 어렵다.
본 발명에 따르면, 주어진 집합에 튜플{version, appsign}이 존재 하는지를 검증하는 증명 방식을 제안하고 이는 실제 배치의 복잡성을 대폭 감소시킨다. 이는 원격 증명 체계의 일부(즉, 시도-응답 프로토콜이 있음을 보장하는 부분)를 "원격 증명 프론트엔드(RAF)"에 위임함으로써 달성된다. 이 솔루션은 RAF에 대해서 검증해야할 필요성이 있는 어플리케이션에 대한 정보를 가지지 않도록 설계된다. 이는 단지 시도-응답 프로토콜을 지원하고, 검증 엔터티(VE)가 클라이언트 어플리케이션(App)의 실행에 대한 신뢰도 판정에 사용할 수 있는 어플리케이션 서명(appsign)을 응답에서 추출한다.
이 솔루션의 상위 레벨 뷰(high-level view)는 도 1에 표시된다. 헤드 엔드(HE)는 검증 엔트리(VE) 및 원격 원격 증명 프론트엔드(Remote Attestation Frontend(RAF))로 구성된다. 검증 엔트리(VE)는 타겟 장치(TD)에 대한 쿼리를 수행하기 위해 RAF를 요청한다. RAF는 챌린지(CH)를 준비하고 이를 타겟 장치(TD)로 전송한다. 타겟 장치는 프로그램을 실행하는 프로세싱 유닛을 내장하는 임의의 타입의 전자 장치일 수 있다.
단계 A는 타겟 장치에 대한 챌린지의 전송이다. 챌린지는 타겟 장치에 의해 예측되지 않는 값이다. 예를 들어, 이는 RAF에 의해 랜덤으로 생성 할 수 있다. RAF와 TD 사이의 전송은 인터넷 접속과 같은 양방향 채널일 수 있거나, 챌린지(CH)가 복수의 타겟 장치들(TD)로 전송되는 브로드 캐스트 접속일 수있다.
일단 챌린지가 수신되면, 증명의 생성이 시작될 수 있다(단계 B). 타겟 장치(TD)는 증명을 생성하는 것을 전담하는 증명 모듈(AM)을 포함한다. 이 증명 모듈(AM)은 타겟 장치의 전용 프로그램이거나 주 프로세서의 주 통신 버스에 연결된 독립 프로세서일 수 있다. 후자의 경우 독립 프로세서는 변수를 저장하는 메모리에 액세스 할 수 있으며 이러한 변수에 대한 다이제스트를 계산할 수 있다.
증명 R = F(CH, APP)로 표시되고, 여기서 F는 수신된 챌린지(CH) 및 어플리케이션 메모리 공간과 같은 어플리케이션(APP)의 일부(런타임) 정보에 기반한 증명을 계산하는 함수를 나타낸다. 챌린지(CH)와 응답(R)이 주어지면, RAF는, 챌린지와 관계없이 어플리케이션 정보에만 의존하는 값인 어플리케이션(앱) 서명을 계산한다.
이하, 이를 달성하기위한 구체적인 구성을 제시한다. 당업자에게 제안된 구성에 대한 대안적인 구성, 변형 및 확장이 가능하다는 것은 자명하게 인식될 수 있다.
실시예에 따르면, 어플리케이션(런타임)의 (일부)정보에 의존하는 다이제스트 벡터 집합(h0, hi,..., hn)이 구축되고, 이 집합은 이 벡터 상의 일부 함수로서 증명을 정의하는데, 함수는 챌린지에 의해 인스턴스화되고 역변환 가능하다. 이 챌린지를 사용하여, RAF는 증명(응답)으로부터 이 다이제스트 벡터를 재구성할 수 있도록 역함수를 계산할 수 있다. 이어서 앱 서명은 이 다이제스트 벡터(또는 그 일부)에서 계산된 일부 함수의 결과이다.
도 2는 증명 생성 과정을 보다 상세히 나타낸 도면이다. 검증될 프로그램은 블록들(BO ... B3)로 분할되고, 증명모듈(AM)은 증명 생성의 일부를 취하는 블록들의 맵을 저장하는 메모리를 포함한다. 증명 모듈은 각 블록에 대해 블록을 나타내는 다이제스트(H)를 생성한다. 이 다이제스트(H)는 다음과 같이 계산할 수 있다.
- 정적(static): 블록의 해시 값 또는 메모리 블록의 컨텐츠에 대한 임의의 연산
- 동적(dynamic) : 런타임 메모리의 컨텐츠로서 예를 들면 블록 실행 마지막에서의 레지스터, 스택, 힙(heap) 컨텐츠를 포함함. 블록이 실행될 때마다 런타임 메모리 내에서 동일한 값을 생성하기 위해 런타임 메모리는 실행전에 미리정의된 값으로 설정된다.
일단 다이제스트 세트(HO, HI, ... Hn)가 획득되면, 다음 단계는 증명의 계산이며, 이 연산은 챌린지에 종속적이다. 함수 F(CH)는 증명(H0',H1',...Hn')을 생성하기 위해 다이제스트 집합에 인가된다. 함수 F에는 여러가지 가능성이 존재하고, 키 팩터(key factor)는 역함수 F-1을 사용하여 다이제스트 집합을 검색할 수 있는 가능성이다.
함수 F의 예
셔플링 함수 : 챌린지(CH)는 집합의 각 멤버를 섞는(셔플링하는) 매개변수로 사용된다. 획득된 집합은 모든 다이제스트를 포함하며, 집합으로의 포지셔닝는 챌린지(CH)에 따라 무작위로 수정된다.
수학적 연산 : 획득된 다이제스트(H')는 적어도 두 개의 다이제스트를 연산 한 결과이다. 예 : HO'=H3×H6; HI'=H2×H5 또는 HO'=H3+H6; HI'=HO+H7. 연산에 참여되는 다이제스트의 선택은 챌린지(CH)에 기반한다. HO'=H3×H6+H7과 같은 복잡한 연산이 실행될 수 있다.
유사함수(affine function): 유사함수는, HO'= A0.H0+A1.H1+...An.Hn 과 같은 형태의 백터-값(vector-valued) 함수를 나타낸다. 여기서 A0 내지 An 계수는 챌린지에 의해 주어진다. 유사 변환의 예는 상수(상수는 챌린지의 계수일 수 있음)를 이용한 덧셈 및 곱셈과 같은 선형 함수를 포함한다.
다이제스트 집합(HO ... Hn)은 x행과 y열의 다이제스트의 행렬로 나타낼 수 있다;
그리고 획득된 증명(H')는 H'= F(CH, H)와 같은 행렬일 수 있다. 일단 타겟 장치의 증명 모듈에 의해 증명(H')가 계산되면 결과는 어플리케이션 버전(VER)의 식별자와 함께 RAF로 보내진다.
함수(F)의 또 다른 예는 다이제스트 행렬의 암호화 함수이며, 암호화에 사용되는 키는 RAF 및 타겟 장치가 알고 있는 파생 함수에 따라 챌린지 또는 챌린지로부터 파생된 정보가 될 수 있다.
증명을 결정하는데 사용되는 함수는 챌린지와 다이제스트 행렬을 기반으로 증명을 계산하는 다변수 함수일 수 있다. 이것은 바람직하게는 가역적인 선형 함수이다. 이것은 챌린지에 기반한 가역 함수를 생성함으로써 모호하지 않게 정의될 수 있다. 그런 다음 (다이제스트 행렬의 동일한 길이의 행렬로서) 획득된 행렬에 RAF에 전송된 증명을 얻기 위해 다이제스트 행렬과 곱한다.
RAF는 동일한 알고리즘을 사용하여 지속된 챌린지(CH)로부터 동일한 행렬을 계산한 다음 역 행렬을 계산할 수 있다. 이는 다이제스트의 원래 매트릭스를 생성하는 응답에 적용되며, 이 다이제스트는 앱 서명을 계산하는데 사용된다.
도 3에 RAF에 의해 실행된 연산이 도시된다. 증명(ATT)은 어플리케이션(VER)의 식별자와 함께 수신된다(단계 C, 도 1). 증명(ATT)은 챌린지마다 고유한 값의 세트(H0', H1'... Hn')를 포함한다. 챌린지(C)의 생성자인 RAF는 증명(ATT) 상의 역함수 F1을 사용하여 이를 이용할 수 있다(단계 D, 도 1). 이는 계산된 다이제스트(HO, HI ... Hn)가 생성되게 한다.
실시예에 따르면, 서명(S)은 예를 들어 다이제스트들을 혼합하여 단일 값 S를 생성하도록 계산된 다이제스트들로부터 생성된다. 혼합 함수는 다이제스트들에 대한 해시 함수 일 수 있다. 이 서명(S)은 확인을 위해 검증 엔터티 VE로 전송된다.
검증 엔티티(VE)는 적어도 하나의 기준 서명(SR) 및 어플리케이션의 버전을 포함하는 한 쌍의 기준 데이터를 저장하는 데이터 스토리지를 포함한다. 검증 엔티티에 의해 현재 서명(S) 및 현재 버전(V)이 수신되면(단계 E), 수신된 쌍의 버전(V)은 데이터 스토리지로부터 기준 서명(SR)을 검색하는데 사용된다.
이전 초기화 단계에서, 검증 엔티티(VE)는 기준 다이제스트의 세트(HOR, H1R ... HnR)을 생성하고 기준 서명(SR) 및 기준 클라이언트 장치에서 생성되는 기준 다이제스트의 세트를 생성한다. 현재의 서명(S)과 기준 서명(SR) 사이의 비교가 수행되고, 검증의 결과는 타겟 장치의 어플리케이션의 진위를 결정하게 한다. 그런 다음 검증 엔티티는 타겟 장치로 컨텐츠를 전달하거나 타겟 장치에 유효성 검사 메시지 전송을 전담하는 서비스 공급자에게 통지한다.
실시예에 따르면, 다이제스트의 세트로부터 증명을 생성하는 단계는 다이제스트들을 계산하는 연산과 결합될 수있다. 예를 들어, 증명 생성 함수가 다변수 함수이고 블록(서브-다이제스트)으로부터 다이제스트를 계산하는 함수가 다변수 함수인 경우 이들은 결합될 수 있다. 어플리케이션(APP)의 블록 BO은 복수의 서브 다이제스트(BOa, BOb ... BOn)로 분할된다. 그런 다음 함수 F는 하위 다이제스트에서 챌린지(C)로 파라미터화된 연산을 정의한다. 예시 :
HO=BOa+BOb 및 H1=B1a×B1b는 다이제스트들이 서브 다이제스트과 HO'=CO×HO×H1+C1×H1 및 H1'=C0×H1+C1×HO 들로부터 어떻게 계산될 수 있는지를 정의하고, HO' 및 H1'는 입력 CH 및 서브 다이제스트에 의존하는 정의 F에 의해 직접 계사ㅋ될 수 있으며 다음과 같다.
HO'=CO×(BOa+BOb)×(B1a×B1b)+C1×B1a×B1b
H1'=CO×B1a×B1b+C1×(BOa + BOb)
이 계산은 2개의 연산을 분리하는 것이 어려워지는 것으로 나타낼 수 있다. 곱셈 및 덧셈은 예로서 주어진다. 모든 유형의 수학 연산은 2개 이상의 서브 다이제스트에 적용될 수 있다. 따라서 다이제스트의 세트 HO'... Hn'은 복수의 블록의 서브 다이제스트에서 직접 생성되어 위의 예제가 일방화된다.
실시예에 따르면, 타겟 장치의 증명 모듈은 블록(BO ... Bn)의 정의를 갖는다. 이 정의는 타겟 장치의 증명 모듈의 메모리에 저장되거나 증명 모듈 소프트웨어로 직접 구현될 수 있다.
다른 실시예에서, 검증 엔티티(VE)는 그 데이터 스토리지에, 대응하는 기준 서명 세트 및 어플리케이션의 버전을 갖는 복수의 정의를 포함한다. 정의는 다이제스트(메모리 범위 세트 또는 메모리 주소 세트의 형태일 수 있음)의 생성을 포함하는 어플리케이션의 블록을 정의하거나 블록의 런타임 실행의 포기화 파라미터를 정의하는 것으로 이해될 수 있다. 초기화 파라미터의 각 세트와 주어진 버전에 대해 기준 서명이 데이터베이스에 저장된다. 그런 다음 증명 모듈은 메모리 테이블에 저장된 블록 어레이의 복수의 정의를 포함할 수 있다. RAF는 타겟 장치에 전송되는 메시지 내에 어떤 정의가 증명 결정에 사용되어야 하는지 나타내는 식별자(테이블 색인)를 포함한다.
정의 테이블의 예
각 블록은 타겟 소프트웨어의 시작 및 종료 어드레스로 식별될 수 있다.
다른 실시예에 따르면, 증명 모듈은 RAF로부터 증명의 일부를 취하는 블록의 정의를 수신한다.
타겟 장치의 바람직한 실시예는 오디오/비디오 수신기이고, 특히 오디오/비디오를 처리할 권리의 검증을 담당하는 어플리케이션이다. 그러나 검증은 중요한 환경(예:플랜트 보안)에서 사용되는 스마트 폰 또는 장치와 같이 검증이 필요한 소프트웨어를 구비한 임의의 장치에서 일어날 수 있다.
도 4는 타겟 장치를 나타낸다. 이는 증명의 생성의 수행 요청과 함께 챌린지를 수신하는 통신 모듈(COMM)을 포함한다. 이 모듈은 RAF에 증명을 보내는데도 사용된다. 타겟 장치(TD)는 증명의 생성과 관련된 연산을 실행하기 위한 프로세싱 유닛(PROC)을 포함한다. 대안적으로, 프로세싱 모듈은 증명의 생성을 증명 모듈(AM)에 위임할 수있다. 프로세싱 유닛 및 증명 모듈 둘다 증명 절차가 일어나는 메모리에 대해 액세스할 수 있다.
본 발명의 실시예가 특정 예시적인 실시예를 참조하여 설명되었지만, 이들 실시예들의 넓은 범위를 벗어나지 않으면서 이들 실시예들에 대한 다양한 변형 및 변경이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미라기보다는 예시적인 것으로 간주되어야한다. 본 명세서의 일부를 형성하는 첨부 된 도면은 본 발명이 실시될 수 있는 특정 실시예를 설명하기 위한 것으로 본 발명을 제한하는 것은 아니다. 도시된 실시예는 당업자가 여기에 개시된 발명을 실시 할 수 있도록 충분히 상세하게 설명된다. 다른 실시예들이 이를 이용해서 도출될 수 있으며, 본 개시의 범위를 벗어나지 않으면서 구조적 및 논리적 대체 및 변경이 이루어질 수 있다. 따라서, 본 발명의 상세한 설명은 제한적인 의미로 받아 들여서는 안되며, 다양한 실시예들의 범위는 그러한 청구항들이 부여되는 등가물의 전체 범위와 함께 첨부된 청구항들에 의해서 정의되어야만 된다.
본 발명의 주제의 이러한 양태는 편의상 단지 "하나의 발명"이라는 용어로 개별적으로 및/또는 집합적으로 "본 발명"으로 언급 될 수 있으며, 하나 이상이 존재한다면 임의의 단일 발명 개념에 본 출원의 범위를 자발적으로 제한하지 않는다. 따라서, 특정 실시예가 본 명세서에서 도시되고 설명되었지만, 동일한 목적을 달성하도록 계산된 임의의 구성이 도시된 특정 실시예를 대체할 수 있는 것으로 이해되어야 한다. 본 개시는 다양한 실시예의 임의의 및 모든 개조 또는 변형을 포함하도록 의도된다. 본 명세서에서 언급하지 않은 실시예의 조합 및 다른 실시예들은 전술한 설명을 검토함으로써 당업자에게 자명한 것이다.
Claims (11)
- 검증 서버에 의해서 타겟 장치의 어플리케이션의 실행 무결성을 검증하는 방법에 있어서 - 검증 서버는 타겟 장치 상의 런타임 어플리케이션 정보로부터 생성된 어플리케이션 서명을 수신하고, 상기 서명은 타겟 장치의 어플리케이션의 실행 무결성을 검증하는데 이용되고, 상기 어플리케이션은 블록들의 어레이를 포함하며, 각각의 블록은 다이제스트를 생성하여, 그에 따라 블록들의 어레이와 관련된 다이제스트들의 어레이를 생성됨 - ;
챌린지 및 제1 함수를 포함하는 메시지를 상기 타겟 장치에 송신하는 단계 - 상기 제1 함수는 취합(aggregation) 방법을 정의하고, 상기 챌린지는 취합 명령을 정의함 - ;
상기 타겟 장치로부터, 타겟 장치에 의해 각각의 블록에 있어서 상기 블록에 대한 대응하는 다이제스트를 결정하는 것에 의해 생성되는 증명을 수신하여, 어플리케이션에 관계된 증명을 생성하기 위해 제1 함수의 취합 방법에 따른 블록의 다이제스트와 챌린지를 취합하는 단계;
검증 서버에 의해 제2 함수를 증명에 적용하는 단계 - 상기 제2 함수는 챌린지의 효과를 취소하여 상기 챌린지에 독립된 어플리케이션 서명을 생성함 - ;
생성된 어플리케이션 서명을 기준 서명과 비교함으로써 어플리케이션의 실행 무결성을 검증하는 단계;를 포함하는 것을 특징으로하는
검증 서버에 의해서 타겟 장치의 어플리케이션의 실행 무결성을 검증하는 방법.
- 제1항에 있어서,
상기 제1 함수는 챌린지에 따른 다이제스트 어레이를 셔플(shuffling)하는 셔플 함수(shuffle function)인 검증 서버에 의해서 타겟 장치의 어플리케이션의 실행 무결성을 검증하는 방법.
- 제1항에 있어서,
상기 제1 함수는 상기 챌린지에 따른 다이제스트 어레이에 대한 아핀(affine) 함수인 검증 서버에 의해서 타겟 장치의 어플리케이션의 실행 무결성을 검증하는 방법.
- 제1항에 있어서,
상기 제1 함수는 상기 챌린지에 따른 상기 다이제스트들의 어레이 상에 적용되는 다변수 함수인 검증 서버에 의해서 타겟 장치의 어플리케이션의 실행 무결성을 검증하는 방법.
- 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 메시지는 상기 무결성 검증의 일부를 취하는 상기 어플리케이션의 블록들의 디스크립션을 더 포함하는 검증 서버에 의해서 타겟 장치의 어플리케이션의 실행 무결성을 검증하는 방법.
- 제1항에 있어서,
하나의 블록은 각각이 서브 다이제스트를 생성하는 복수의 서브 블록을 포함하고, 상기 증명은 상기 제1 함수 및 상기 챌린지를 사용하여 상기 블록 중 상기 서브 다이제스트로부터 직접 생성되는 검증 서버에 의해서 타겟 장치의 어플리케이션의 실행 무결성을 검증하는 방법.
- 검증 엔티티(VE) 및 원격 증명 프론트엔드(RAF)를 포함하는, 타겟 장치(TD)에서 어플리케이션의 실행 무결성을 검증하는 시스템에 있어서,
상기 원격 증명 프론트 엔드(RAF)는,
챌린지(C)를 생성하는 동작,
제1 함수를 갖는 챌린지(C)를 상기 타겟 장치로 송신하고 - 상기 제1 함수는 취합(aggregation) 방법을 정의하는 동작, 상기 챌린지는 취합 명령을 정의함 - ;
상기 타겟 장치로부터, 타겟 장치에 의해 각각의 블록에 있어서 상기 블록에 대한 대응하는 다이제스트를 결정하는 것에 의해 생성되는 증명(ATT)을 수신하여, 어플리케이션에 관계된 증명을 생성하기 위해 제1 함수의 취합 방법에 따른 블록의 다이제스트와 챌린지를 취합하는 동작;
검증 서버에 의해 제2 함수를 증명(ATT)에 적용하는 동작 - 상기 제2 함수는 챌린지의 효과를 취소하여 상기 챌린지에 독립된 다이제스트의 세트(H0,H1,..,Hn)을 생성함 - ;
다이제스트의 어레이(H0,H1,..,Hn) 또는 다이제스트의 어레이(H0,H1,..,Hn) 상에서 혼합된 서명(S)을 증명 엔티티(VE)에 전송하는 동작을 수행하도록 구성되고,
상기 증명 엔티티는,
수신된 다이제스트의 어레이(H0,H1,..,Hn) 또는 서명(S)을 기준과 비교하는 것에 의해 어플리케이션의 무결성을 검사하는 동작을 수행하도록 구성되는,
타겟 장치(TD)에서 어플리케이션의 실행 무결성을 검증하는 시스템.
- 제7항에 있어서,
상기 원격 증명 프론트 엔드(RAF)는 증명(ATT)의 일부를 취하는 블록의 정의를 상기 타겟 장치(TD)에 전송하도록 구성되는
타겟 장치(TD)에서 어플리케이션의 실행 무결성을 검증하는 시스템.
- 제7항 또는 제8항에 있어서,
상기 제1 함수는 챌린지에 따른 상기 다이제스트 어레이를 셔플(shuffling)하는 셔플 함수(shuffle function)인
타겟 장치(TD)에서 어플리케이션의 실행 무결성을 검증하는 시스템.
- 제7항 또는 제8항에 있어서,
상기 제1 함수는 챌린지에 따른 상기 다이제스트 어레이에 대한 아핀 함수인
타겟 장치(TD)에서 어플리케이션의 실행 무결성을 검증하는 시스템.
- 제7항 또는 제8항에 있어서,
상기 제1 함수는 상기 챌린지에 따른 다이제스트들의 어레이에 적용되는 다변수 함수인
타겟 장치(TD)에서 어플리케이션의 실행 무결성을 검증하는 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15195379.1 | 2015-11-19 | ||
EP15195379 | 2015-11-19 | ||
PCT/EP2016/077932 WO2017085159A1 (en) | 2015-11-19 | 2016-11-17 | Method to verify the execution integrity of an application in a target device |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180084053A KR20180084053A (ko) | 2018-07-24 |
KR102603797B1 true KR102603797B1 (ko) | 2023-11-16 |
Family
ID=54843588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187014060A KR102603797B1 (ko) | 2015-11-19 | 2016-11-17 | 타겟 장치에서의 어플리케이션의 실행 무결성을 검증하는 방법 |
Country Status (9)
Country | Link |
---|---|
US (2) | US10846409B2 (ko) |
EP (1) | EP3378005B1 (ko) |
KR (1) | KR102603797B1 (ko) |
CN (1) | CN108292341B (ko) |
BR (1) | BR112018010120B1 (ko) |
ES (1) | ES2774487T3 (ko) |
MX (1) | MX2018006204A (ko) |
SG (1) | SG11201803707PA (ko) |
WO (1) | WO2017085159A1 (ko) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11790119B2 (en) * | 2018-11-16 | 2023-10-17 | Apple Inc. | Application integrity attestation |
KR102036618B1 (ko) * | 2019-01-31 | 2019-10-28 | 주식회사그린존시큐리티 | 디바이스의 무결성을 검증하는 무결성 검증 체인 및 이를 이용한 디바이스의 무결성 검증 방법 |
US11271721B2 (en) * | 2019-03-25 | 2022-03-08 | Micron Technology, Inc. | Distributed secure array using intra-dice communications to perform data attestation |
US11740970B2 (en) | 2020-03-02 | 2023-08-29 | Micron Technology, Inc. | Dynamic adjustment of data integrity operations of a memory system based on error rate classification |
US11221800B2 (en) | 2020-03-02 | 2022-01-11 | Micron Technology, Inc. | Adaptive and/or iterative operations in executing a read command to retrieve data from memory cells |
US11086572B1 (en) | 2020-03-02 | 2021-08-10 | Micron Technology, Inc. | Self adapting iterative read calibration to retrieve data from memory cells |
US12009034B2 (en) | 2020-03-02 | 2024-06-11 | Micron Technology, Inc. | Classification of error rate of data retrieved from memory cells |
US11029890B1 (en) | 2020-03-02 | 2021-06-08 | Micron Technology, Inc. | Compound feature generation in classification of error rate of data retrieved from memory cells |
US11081200B1 (en) | 2020-05-07 | 2021-08-03 | Micron Technology, Inc. | Intelligent proactive responses to operations to read data from memory cells |
US11257546B2 (en) | 2020-05-07 | 2022-02-22 | Micron Technology, Inc. | Reading of soft bits and hard bits from memory cells |
CN114760061B (zh) * | 2020-12-29 | 2023-09-05 | 深信服科技股份有限公司 | 数据上传的方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132031A1 (en) | 2003-12-12 | 2005-06-16 | Reiner Sailer | Method and system for measuring status and state of remotely executing programs |
JP2012505437A (ja) | 2008-10-10 | 2012-03-01 | パナソニック株式会社 | セキュア処理システムのアプリケーション空間において信頼性を実現するための一時的pcr利用 |
JP2013523043A (ja) | 2010-03-22 | 2013-06-13 | エルアールディシー システムズ、エルエルシー | ソースデータセットの完全性を識別及び保護する方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NZ509018A (en) * | 1998-06-17 | 2002-06-28 | Aristocrat Technologies Au | Software verification and authentication |
US7581103B2 (en) * | 2001-06-13 | 2009-08-25 | Intertrust Technologies Corporation | Software self-checking systems and methods |
US7103779B2 (en) * | 2003-09-18 | 2006-09-05 | Apple Computer, Inc. | Method and apparatus for incremental code signing |
JP4064914B2 (ja) * | 2003-12-02 | 2008-03-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理装置、サーバ装置、情報処理装置のための方法、サーバ装置のための方法および装置実行可能なプログラム |
US8688991B1 (en) * | 2007-06-01 | 2014-04-01 | Adobe Systems Incorporated | Media player embodiments and secure playlist packaging |
KR101495535B1 (ko) * | 2007-06-22 | 2015-02-25 | 삼성전자주식회사 | 컨텐츠 디바이스의 폐기 여부를 확인하여 데이터를전송하는 전송 방법과 시스템, 데이터 서버 |
KR101426270B1 (ko) * | 2008-02-13 | 2014-08-05 | 삼성전자주식회사 | 소프트웨어의 전자 서명 생성 방법, 검증 방법, 그 장치,및 그 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로읽을 수 있는 기록매체 |
AU2009222007A1 (en) * | 2008-03-04 | 2009-09-11 | Apple Inc. | System and method of authorizing execution of software code based on accessible entitlements |
US20090300348A1 (en) * | 2008-06-02 | 2009-12-03 | Samsung Electronics Co., Ltd. | Preventing abuse of services in trusted computing environments |
US8544092B2 (en) * | 2009-03-12 | 2013-09-24 | International Business Machines Corporation | Integrity verification using a peripheral device |
US8213907B2 (en) | 2009-07-08 | 2012-07-03 | Uniloc Luxembourg S. A. | System and method for secured mobile communication |
EP2372592B1 (en) * | 2009-12-14 | 2016-08-24 | Nxp B.V. | integrated circuit and system for installing computer code thereon |
JP5443599B2 (ja) * | 2009-12-22 | 2014-03-19 | インテル・コーポレーション | セキュアなアプリケーションの実行を提供する方法および装置 |
EP2378452B1 (en) * | 2010-04-16 | 2012-12-19 | Thomson Licensing | Method, device and computer program support for verification of checksums for self-modified computer code |
US20120324557A1 (en) * | 2011-06-17 | 2012-12-20 | Raytheon Bbn Technologies Corp | System and method for remote integrity verification |
US9569618B2 (en) * | 2013-08-28 | 2017-02-14 | Korea University Research And Business Foundation | Server and method for attesting application in smart device using random executable code |
CN103810421B (zh) * | 2014-02-19 | 2017-01-04 | 北京视博数字电视科技有限公司 | 应用程序的校验方法、装置和终端设备 |
CN103995992A (zh) * | 2014-05-28 | 2014-08-20 | 全联斯泰克科技有限公司 | 一种软件的保护方法和装置 |
US10936720B2 (en) * | 2015-07-10 | 2021-03-02 | Nec Corporation | Method and system for reliable computation of a program |
US20170068955A1 (en) * | 2015-09-04 | 2017-03-09 | Ca, Inc. | Verification and provisioning of mobile payment applications |
-
2016
- 2016-11-17 WO PCT/EP2016/077932 patent/WO2017085159A1/en active Application Filing
- 2016-11-17 SG SG11201803707PA patent/SG11201803707PA/en unknown
- 2016-11-17 ES ES16797889T patent/ES2774487T3/es active Active
- 2016-11-17 EP EP16797889.9A patent/EP3378005B1/en active Active
- 2016-11-17 MX MX2018006204A patent/MX2018006204A/es unknown
- 2016-11-17 CN CN201680067368.7A patent/CN108292341B/zh active Active
- 2016-11-17 BR BR112018010120-6A patent/BR112018010120B1/pt active IP Right Grant
- 2016-11-17 US US15/774,673 patent/US10846409B2/en active Active
- 2016-11-17 KR KR1020187014060A patent/KR102603797B1/ko active IP Right Grant
-
2020
- 2020-11-17 US US17/099,814 patent/US11526616B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050132031A1 (en) | 2003-12-12 | 2005-06-16 | Reiner Sailer | Method and system for measuring status and state of remotely executing programs |
JP2012505437A (ja) | 2008-10-10 | 2012-03-01 | パナソニック株式会社 | セキュア処理システムのアプリケーション空間において信頼性を実現するための一時的pcr利用 |
JP2013523043A (ja) | 2010-03-22 | 2013-06-13 | エルアールディシー システムズ、エルエルシー | ソースデータセットの完全性を識別及び保護する方法 |
Also Published As
Publication number | Publication date |
---|---|
US11526616B1 (en) | 2022-12-13 |
WO2017085159A1 (en) | 2017-05-26 |
ES2774487T3 (es) | 2020-07-21 |
CN108292341A (zh) | 2018-07-17 |
BR112018010120B1 (pt) | 2023-12-05 |
KR20180084053A (ko) | 2018-07-24 |
EP3378005A1 (en) | 2018-09-26 |
MX2018006204A (es) | 2018-08-01 |
EP3378005B1 (en) | 2020-01-08 |
US20180330098A1 (en) | 2018-11-15 |
BR112018010120A2 (pt) | 2018-11-21 |
SG11201803707PA (en) | 2018-06-28 |
US10846409B2 (en) | 2020-11-24 |
CN108292341B (zh) | 2022-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102603797B1 (ko) | 타겟 장치에서의 어플리케이션의 실행 무결성을 검증하는 방법 | |
Yu et al. | Improved security of a dynamic remote data possession checking protocol for cloud storage | |
EP3779792B1 (en) | Two-dimensional code generation method, data processing method, apparatus, and server | |
KR100823738B1 (ko) | 컴퓨팅 플랫폼의 설정 정보를 은닉하면서 무결성 보증을제공하는 방법 | |
CN112019591A (zh) | 一种基于区块链的云数据共享方法 | |
Yu et al. | Remote data possession checking with enhanced security for cloud storage | |
CN108259438A (zh) | 一种基于区块链技术的认证的方法和装置 | |
US10785036B2 (en) | Method for generating an electronic signature of a document associated with a condensate | |
Chen et al. | Data dynamics for remote data possession checking in cloud storage | |
CN113987554B (zh) | 获取数据授权的方法、装置及系统 | |
US20220094519A1 (en) | Preserving aggregation using homomorphic encryption and trusted execution environment, secure against malicious aggregator | |
JP6849862B2 (ja) | パスワード認証のための準同型暗号 | |
US20230052608A1 (en) | Remote attestation | |
CN113395406A (zh) | 一种基于电力设备指纹的加密认证方法及系统 | |
US8954728B1 (en) | Generation of exfiltration-resilient cryptographic keys | |
Sun et al. | Public data integrity auditing without homomorphic authenticators from indistinguishability obfuscation | |
WO2013153628A1 (ja) | 演算処理システムおよび演算結果認証方法 | |
CN117077213A (zh) | 一种基于格的无零知识证明的无证书可追踪环签名方法 | |
Nie et al. | Time‐enabled and verifiable secure search for blockchain‐empowered electronic health record sharing in IoT | |
CN109768969A (zh) | 权限控制方法及物联网终端、电子设备 | |
Mishra et al. | Fibonacci tree structure based privacy preserving public auditing for IoT enabled data in cloud environment | |
Liu et al. | ESMAC: Efficient and secure multi-owner access control with TEE in multi-level data processing | |
JP2018504063A (ja) | セキュアな製品識別及び検証 | |
Wang et al. | Automated security proof of cryptographic support commands in TPM 2.0 | |
Akshay et al. | Dynamic list based data integrity verification in cloud environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |