KR20090005390A - 소프트웨어 버전 설치의 권한 - Google Patents
소프트웨어 버전 설치의 권한 Download PDFInfo
- Publication number
- KR20090005390A KR20090005390A KR1020087028597A KR20087028597A KR20090005390A KR 20090005390 A KR20090005390 A KR 20090005390A KR 1020087028597 A KR1020087028597 A KR 1020087028597A KR 20087028597 A KR20087028597 A KR 20087028597A KR 20090005390 A KR20090005390 A KR 20090005390A
- Authority
- KR
- South Korea
- Prior art keywords
- value
- integrity protection
- counter
- version
- counter value
- Prior art date
Links
- 238000009434 installation Methods 0.000 title description 2
- 238000013475 authorization Methods 0.000 title 1
- 238000012545 processing Methods 0.000 claims abstract description 102
- 238000000034 method Methods 0.000 claims abstract description 77
- 238000003860 storage Methods 0.000 claims abstract description 36
- 238000012795 verification Methods 0.000 claims description 26
- 230000006870 function Effects 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 4
- 238000012986 modification Methods 0.000 claims description 3
- 230000004048 modification Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 16
- 238000004519 manufacturing process Methods 0.000 description 10
- 238000013500 data storage Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- 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/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/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2105—Dual mode as a secondary aspect
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
처리 장치에 저장된 메모리 컨텐트의 버전을 나타내는 버전 카운터를 유지하는 방법. 이 방법은 제1 또는 제2 모드로 상기 장치를 선택적으로 동작시키는 단계를 포함한다. 상기 제1 모드로의 액세스는 허가된 사용자에 한정되고 상기 제2 모드로의 액세스와 별개로 제어된다. 상기 제1 모드에서, 적어도 하나의 초기 무결성 보호값은 상기 제2 모드에서의 상기 처리 장치의 동작 동안에 상기 버전 카운터의 초기 카운터 값을 암호로 보호하기 위해 생성되고, 상기 초기 카운터 값은 카운터 값 시퀀스로부터 선택되고, 상기 초기 무결성 보호값은 현재 무결성 보호값으로서 저장 매체에 저장된다. 제2 모드에서, 현재 카운터 값은 다음 카운터 값으로 증분되고, 상기 증분시키는 단계는 상기 저장 매체로부터 상기 현재 무결성 보호값을 제거하는 단계를 포함한다.
버전 카운터, 초기 무결성 보호값, 초기 카운터 값, 현재 무결성 보호값, 현재 카운터 값
Description
카운터(counter)를 유지하는 방법, 제조 수단, 및 장치가 개시된다.
이동 전화 및 다른 데이터 처리 장치와 같은 임베디드(embedded) 시스템은 올바른 소프트웨어의 실행에 의존한다. 또한, 다소 작은 시스템용 소프트웨어가 점점 복잡해져서, 특히 소프트웨어 라이프 사이클 중 초기 발매물(early releases)에서 오류 및 의도하지 않은 특징이 발생할 위험성이 증가한다. 또한, 초기 소프트웨어 발매물의 기능은 일반적으로 제한된다. 결과적으로, 임베디드 장치에 저장된 소프트웨어를 구버전에서 업데이트 버전으로 빈번하게 업데이트해 줄 필요성이 증가한다. 장치에 어느 버전이 설치되는지 추적하기 위해, 이 장치는 일반적으로 그 값이 현재 설치된 버전 번호에 대응하는 버전 카운터를 유지한다.
예컨대, 국제특허출원 WO 02/27441에 개시된 바와 같이, 권한없는 조작에 대한 정적 및 동적 데이터 보호 방법이 공지되어 있지만, 이러한 방법은 소프트웨어 버전의 롤백(roll-back)에 대한 보호를 제공하지 않는다. 예컨대, 상기 방법은 소프트웨어 업데이트를 설치할 권한을 가진 사용자가 소프트웨어 구버전을 재설치하는 것을 막지 못한다.
그러나, 초기 소프트웨어 버전을 가진 이동 전화를 구입한 사용자가 초기 버전 이전으로의 롤백 수행, 즉, 초기 버전보다 더 오래된 소프트웨어 구버전의 재설치를 방지하는 소프트웨어 업데이트 정책을 실시하는 것이 바람직하다. 예를 들면, 소프트웨어 구버전은 부정한 사용자가 이 장치를 가지고 SIM 록(lock) 등의 파괴와 같은 권한없는 또는 바람직하지 않은 작업을 수행할 수 있게 하는 오류를 포함할 수 있기 때문에, 이러한 권한없는 롤백은 바람직하지 않다.
따라서, 사용자가 초기 소프트웨어 버전, 즉 일반적으로 사용자가 처리 장치를 구입한 버전 이전으로 소프트웨어 롤백을 수행하지 못하게 하는 버전 카운터를 유지하는 방법을 제공하는 것이 바람직하다.
국제특허출원 WO 01/33317은, 장치에 저장된 데이터가 최근의 허가된 버전의 보호된 데이터, 예컨대 다른 보호된 자료에 대한 액세스를 제어하기 위해 사용되는 데이터임을 검증하는 액세스 제어 시스템을 개시한다. 이 종래의 액세스 제어 시스템은 카운터, 및 이 카운터의 컨텐트를 보호되고 있는 데이터로 제한하는 파라미터를 포함하도록 구성된 보안 메모리 위치를 포함한다.
그러나, 상기 종래의 시스템이 일방향 버전 카운터를 제공하더라도, 이것이 보안 메모리 위치를 필요로 한다는 점이 이 종래 시스템의 문제점이다. 예를 들면, 임베디드 시스템의 컨텍스트에서, 이러한 보안 메모리 위치는 일반적으로 제어 시스템을 구현하는 ASIC 논리와 관련하여 구현되는 보안 온칩(on-chip) 재기록가능 비휘발성 메모리로서 구현된다. 그러나, 이러한 보안 재기록가능 비휘발성 메모리의 실현은 ASIC 제조 동안에 추가 공정을 필요로 하기 때문에, 전체 제조 비용이 증가한다.
상기 및 기타 문제점들은 처리 장치에 의해 버전 카운터를 유지하는 방법에 의해 해결되는데, 여기서 상기 버전 카운터는 상기 처리 장치에 저장된 메모리 컨텐트의 버전을 나타내고, 상기 방법은 제1 및 제2 모드 중 하나로 상기 처리 장치를 선택적으로 동작시키는 단계를 포함하고, 상기 제1 모드로 상기 처리 장치를 동작시키는 것에 대한 액세스는 허가된 사용자에 제한되고 제2 모드로의 액세스와 별도로 제어된다.
상기 처리 장치를 상기 제1 모드로 동작시키는 단계는,
- 상기 제2 모드에서 상기 처리 장치의 동작 동안에 상기 버전 카운터의 초기 카운터 값의 무결성(integrity)을 암호로 보호하기 위한 적어도 하나의 초기 무결성 보호값을 생성하는 단계로서, 상기 초기 카운터 값은 카운터 값 시퀀스로부터 선택되는 단계; 및
- 상기 초기 무결성 보호값을 현재 무결성 보호값으로서 저장 매체에 저장하는 단계를 포함하고,
상기 처리 장치를 상기 제2 모드로 동작시키는 단계는 현재 카운터 값을 다음 카운터 값으로 증분시키는 단계를 포함하고, 상기 다음 카운터 값은 상기 카운터 값 시퀀스에서 상기 현재 카운터 값의 다음에 오는 값이고, 상기 증분시키는 단계는 상기 저장 매체로부터 상기 현재 카운터 값의 무결성을 암호로 보호하기 위한 상기 현재 무결성 보호값을 제거하는 단계를 포함한다.
결과적으로, 보안 메모리에 의존하지 않는 소프트웨어 안티 롤백 (anti-roll back) 메커니즘이 제공된다.
특히, 취소된 카운터 값의 무결성 보호값이 저장 매체로부터 제거되고, 무결성 보호값의 계산이 별개의 보호된 동작 모드에서만 허용되므로, 특정 권한없는 통상의 사용자는 취소된 카운터 값을 재생성하지 못한다.
상술한 바와 같이, 여기 설명된 처리 장치의 실시예에서, 처리 장치는 제1 및 제2 모드 중 하나로 선택적으로 동작가능하고, 제1 모드에서 상기 처리 장치를 동작시키는 것에 대한 액세스는 허가된 사용자에 제한되고 제2 모드에 대한 액세스와 별도로 제어된다. 그러므로, 제2 모드로 상기 장치를 동작시키도록 허가받은 사용자는 반드시 제1 모드로 상기 장치를 동작시키도록 허가받은 것은 아니다. 선택적 동작은, 예컨대, 이 장치가 부팅될 수 있는 2가지 모드를 제공하거나, 제2 모드에서 처음으로 액세스를 부여함으로써 구현될 수 있고, 성공적인 액세스 제어를 조건으로 하여, 제1 모드에서 제공된 추가 기능에 대한 액세스를 제공할 수 있다.
무결성 보호값의 제거는 여러가지 다른 방법으로 수행될 수 있는데, 예컨대 취소된 무결성 보호값을 업데이트된 값으로 업데이트하거나, 소정의 데이터 아이템, 예컨대 보호값을 0으로 업데이트하거나, 사용자가 저장 매체로부터 상기 제거된 데이터를 그후에 검색하지 못하게 하는 임의의 다른 적당한 방법으로 수행될 수 있다.
버전 카운터의 뜻하지 않은 롤백이 방지되는 것이 여기 설명된 방법 및 장치의 장점이다. 또한, 현 사용자의 제어하에 이전에 설치된 버전 번호에 대응하는 이전 카운터 값으로의 의도적인 롤백이 어려워지는데, 그 이유는 이것이 예컨대 모든 통합 보호값을 검색하고 이들이 버전 카운터의 증분과 관련하여 삭제된 후에 이들을 재입력함으로써 저장된 통합 보호값의 조작을 필요로 하기 때문이다. 어느 경우든지, 사용자는 초기값, 즉 사용자가 이 장치를 획득한 때의 카운터의 값 이전으로 버전 카운터를 롤백하지 못하게 된다.
상기 업데이트 정책은, 얼핏 보기에, 일단 장치가 다음 버전으로 그동안에 업데이트되면, 장치가 획득된 초기 버전으로 다시 롤백하는 것을 포함하여 모든 버전 롤백을 엄격히 방지하는 정책보다 덜 엄격한 것 같을 수 있다. 그러나, 이러한 업데이트 정책의 엄격한 시행이 새로운 버전으로의 업데이트가 이용가능할 때마다 사용자로 하여금 소프트웨어를 업데이트하도록 하는 메커니즘을 요구할 것임을 알아야 한다. 이러한 메커니즘이 없다면, 사용자는 이 장치를 업데이트하는 것을 생략할 수 있고 이에 의해 버전 롤백을 수행할 필요없이 초기 소프트웨어 버전으로 이 장치를 동작할 수 있다.
본 설명의 목적을 위해, 버전 카운터라는 용어는 예컨대 소프트웨어 버전, 저장된 데이터 버전과 같은 메모리 컨텐트 버전 시퀀스 각각에 대해 실질적으로 고유한 값을 제공하는 임의의 장치나 메커니즘을 가리킨다. 버전 카운터는 예컨대 숫자나 다른 값과 같은 순차적으로 배열된 데이터 아이템 집합으로서 구현될 수 있다. 버전 카운터는 임의 숫자들의 비반복적인 시퀀스를 생성하는 난수(random number) 생성기나 다른 고유값 생성기로서 구현될 수 있음은 물론이다. 일부 실시예에서, 버전 카운터는 이 장치에 설치된 소프트웨어의 소프트웨어 버전을 카운트하는 버전 카운터이다.
일부 실시예에서, 제1 모드로 처리 장치를 동작시키는 단계는,
- 카운터 값 시퀀스의 각각의 카운터 값의 무결성을 암호로 보호하기 위한 무결성 보호값 시퀀스를 생성하는 단계로서, 상기 카운터 값 시퀀스는 상기 초기 카운터 값에서 시작하여 순차적으로 배열되고,
- 상기 무결성 보호 값 시퀀스를 저장 매체에 저장하는 단계를 포함한다.
결과적으로, 본 실시예에 따르면, 무결성 보호값 집합은 제1 모드에서의 장치의 초기 동작 동안에 생성되고 저장된다. 버전 카운터가 제2 모드에서의 상기 장치의 다음 동작 동안에 현재 값에서 다음 값으로 증분되어야 할 때마다, 다음 값으로 진행하는 카운터 값들에 대응하는 무결성 보호값(들) - 특히 현재 카운터 값에 대응하는 무결성 보호 값 - 은 저장 매체로부터 제거되고, 이에 의해 현재 카운터 값의 다음 암호 검증을 방지한다.
일부 실시예에서, 카운터를 증분시키는 2가지 모드가 제공될 수 있다. 즉, 이전의 무결성 보호 값들이 제거되는 취소불가능한(irreversible) 증분, 및 무결성 보호값들이 제거되지 않는 취소가능한(reversible) 증분이 제공될 수 있다. 또다른 실시예에서, 무결성 보호값의 제거는 카운터의 실제 증분으로부터 소정 시간이 경과한 후에 수행될 수 있다. 이와 달리 또는 추가적으로, 무결성 보호값의 제거는 카운터의 실제 증분 후에 소정 횟수의 리부팅 후에 수행될 수 있다. 카운터 업데이트의 이러한 지연된 개입은 사용자가 개입전에 업데이트된 소프트웨어 버전의 적절한 동작을 테스트하기 위하여 유용할 수 있다.
일실시예에서, 이 방법은 상기 장치가 상기 제1 및 제2 모드 중 제1의 모드로 동작될 때에만 상기 무결성 보호값 시퀀스의 생성된 무결성 보호값을 출력하도록 적응된 무결성 보호값 계산 유닛를 제공하는 단계를 더 포함한다. 결과적으로, 제1 모드로 장치를 동작시키도록 허가된 사용자만이 무결성 보호값을 (재)계산할 수 있다. 예를 들면, 장치 제조자는 제1 모드로의 액세스를 상기 제조자에게만 한정하도록 선택할 수 있다. 결과적으로, 제조자는 전자장치의 생산 동안에 이 장치에서 적절한 갯수의 무결성 보호값을 생성하고 저장하도록 제1 모드로 이 장치를 동작시킬 수 있다. 이 장치를 구입하는 모든 이후 사용자들은 제2 모드로만 이 장치를 액세스할 수 있고 따라서 이전의 카운터 값에 대한 무결성 보호값을 재생성하지 못하게 된다.
일부 실시예에서, 현재 카운터 값을 다음 카운터 값으로 증분시키는 단계는 다음 카운터 값에 대응하는 다음 무결성 보호값을 생성하는 단계, 및 현재 무결성 보호값을 다음 무결성 보호값으로 대체하는 단계를 포함한다. 결과적으로, 이 실시예에서, 처음부터 이 장치에서 많은 수의 무결성 보호값들을 저장할 필요가 없고, 이에 의해 저장 용량을 절약하고 보호가능한 카운터 값의 범위를 저장된 무결성 보호값의 수로 제한하는 것을 피할 수 있다. 또한, 제2 모드로 동작될 때, 이 장치는 다음 카운터 값에 대응하는 무결성 보호값 만을 생성하고, 이에 의해 제1 모드로 장치를 동작시키도록 허가받지 않은 사용자가 이전의 카운터 값, 즉 카운터 값의 순차적인 순서에 대해 현재 카운터 값보다 더 낮은 순위의 카운터 값의 무결성 보호값을 재생성하지 못하게 한다.
다음 무결성 보호값을 생성하는 단계가 현재 무결성 보호값에 기초하여 현재 카운터 값을 검증하는 단계 및 상기 현재 카운터 값의 성공적인 검증을 조건으로 하여 상기 다음 무결성 보호값을 생성하는 단계를 포함할 때, 이 장치가 현재값이 성공적으로 검증될 때 다음 무결성 보호값만을 생성하기 때문에 상기 방법의 보안이 더 증분된다.
각 생성된 무결성 보호값이 대응하는 카운터 값 및 장치에 대해 고유할 때, 사용자는 카운터가 아직 증분되지 않은 다른 장치로부터 이전의 무결성 보호값을 단순 복사하지 못하게 된다.
무결성 보호값이라는 용어는 메모리에 저장된 정보가 우연히 또는 악의적으로 변경되거나 파괴되지 않는다는 것을 확실히 하는 메커니즘에 의해 생성된 임의의 데이터 아이템을 포함하도록 의도된다. 무결성 보호 메커니즘의 예는 메시지 인증 코드, 일방(one-way) 해시 함수, 및 디지털 서명을 포함한다. 무결성 메커니즘이 암호 무결성 보호 메커니즘인 경우, 즉 비밀키에 기초한 경우, 무결성 보호의 보안이 증가된다. 무결성 보호값이 메시지 인증코드인 경우, 특별히 안전하고 효율적인 무결성 보호가 달성된다.
메시지 인증 코드 (MAC)는 무결성 보호 데이터를 위한 공지의 메커니즘이다. MAC는 가변길이 입력 및 키를 취하여 출력으로서 고정길이 무결성 보호값, 소위 MAC 값 또는 태그 값을 생성하는 함수이다. MAC는 일반적으로 두 당사자 사이에서 전달된 정보를 유효하게 하기 위해 비밀키를 공유하는 두 당사자 사이에서 사용된다. MAC는 일방 해시 함수를 데이터에 적용하고 그 결과를 비밀키를 이용하여 암호화함으로써 계산될 수 있다. 암호 해시 함수와 조합될 수 있는 적절한 MAC 함수의 예는 HMAC (Keyed-Hashing for Message Authentication), 예컨대 AES나 안전한 일방 해시 함수를 이용하는 CBC (Cipher Block Chaining) MAC을 포함한다. 여기 설명된 방법 및 장치의 실시예에서, 메시지 인증 코드는 처리 장치의 저장 매체에 저장된 카운터 값의 무결성을 체크하기 위해 사용되고, 이에 의해 안전한 메모리 위치에 카운터 값을 저장할 필요성이 제거된다.
결과적으로, 일부 실시예에서, 무결성 보호는 보호될 카운터 값에 대해 예컨대 메시지 인증 코드값과 같은 계산된 기준 무결성 보호값을 저장하는 단계를 포함하고, 이에 의해 처리 장치에 의해 카운터 값의 추후 검사를 위해 이용가능하게 한다. 따라서, 카운터 값을 검사할 때, 이 장치는 장치에 저장된 비밀키를 이용하여 카운터 값의 무결성 보호값을 계산하고, 예컨대 기준 MAC 값과 같은 이전에 저장된 기준 무결성 보호값과 이 결과를 비교한다. 결과적으로, 이 실시예에서, 비밀키는 디지털 처리 장치에만 알려질 필요가 있다. 일부 실시예에서, 비밀키는 처리 장치에만 알려진 비밀 데이터 아이템과 같은 처리 장치에 고유한 비밀 데이터 아이템이다.
카운터값 각각이 장치 고유한 경우, 한 장치로부터 다른 장치로 무결성 보호값을 복사하는 것에 대한 추가적인 보호가 제공된다.
일부 실시예에서, 대응하는 무결성 보호값에 의한 카운터 값의 생성 및 검증은 무결성 보호모듈에 의해 구현되고, 무결성 보호모듈은 수정에 대해 보호되어, 이에 의해 처리의 보안성이 증가된다. 무결성 보호 모듈은 예컨대 보호된 하드웨어 모듈 및/또는 신뢰받는 프로그램 코드에 의해 구현될 수 있다. 여기서 신뢰받는 프로그램 코드라는 용어는, 예컨대 OTP(One-Time Programmable) 메모리에 저장된 무결성 보호값에 기초한 처리 장치의 펌웨어에 포함된 프로그램 코드, 실행전에 암호로 무결성 체크된 코드, 처리 장치의 부트(boot) ROM 코드에 포함된 프로그램 코드 등과 같은 임의의 무결성 보호된 프로그램 코드를 포함하도록 의도된다.
일부 실시예에서, 이 방법은,
- 상기 메모리 컨텐트의 업데이트 버전을 수신하는 단계로서, 이 업데이트 버전은 버전 표시자를 포함하고,
- 상기 수신된 메모리 컨텐트의 진정성을 검증하는 단계;
- 상기 버전 표시자 및 상기 버전 카운터의 상기 현재 값에 기초하여 상기 수신된 업데이트 메모리 컨텐트의 버전 제어를 수행하는 단계;
- 상기 버전 제어의 결과를 조건으로 하여 상기 수신된 업데이트 메모리 컨텐트를 수용하는 단계를 더 포함한다.
결과적으로, 상기 메모리 컨텐트의 효율적이고 안전한 업데이트가 제공된다. 처리 장치는 유선 또는 무선 통신 인터페이스 등을 통해 예컨대 CD, 메모리 스틱 또는 다른 메모리 장치와 같은 컴퓨터 판독 매체 상에서 임의의 적절한 데이터 인터페이스를 통해 메모리 컨텐트를 수신할 수 있다.
진정성의 검증은 예컨대 디지털 서명 및/또는 증명서에 의해, 및/또는 메시지 인증 코드에 의해 당해 기술분야에서 임의의 적절한 공지의 기술을 포함할 수 있다.
버전 제어는, 예컨대 버전 카운터의 현재 값을 버전 표시자와 비교함으로써 예컨대 IBM AIX 유닉스 운영체제에서의 소프트웨어 모듈의 소프트웨어 넘버링 및 LINUX 커널의 넘버링을 위해 사용되는 것으로서 당해 기술분야에서 알려진 임의의 적절한 버전 제어 메커니즘을 포함할 수 있다. 일부 실시예에서, 업데이트된 메모리 컨텐트는 버전 표시자가 버전 카운터의 최저의 진정한 카운터 값보다 크거나 같을 때, 즉, 유효 무결성 보호값이 장치에 저장된 최저의 카운터 값보다 크거나 같을 때 수용된다. 예컨대 수신된 버전이 현재 버전이나 최저의 진정한 버전보다 오래되거나 양립불가능하기 때문에 버전 제어가 실패할 때, 업데이트 프로세스는 거부될 수 있고, 오류 메시지가 생성될 수 있고, 및/또는 장치가 임의의 다른 적절한 방식으로 진행할 수 있다.
수용될 때, 이 장치는 일반적으로 대응하는 메모리 컨텐트를 대체하도록 업데이트된 메모리 컨텐트를 저장한다. 일부 실시예에서, 상기 업데이트는 여기 설명된 바와 같이 수신된 업데이트된 메모리 컨텐트의 버전 표시자에 대응하는 값으로 버전 카운터를 증분시키는 단계를 더 포함한다. 예를 들면, 이 증분은 수신된 버전 표시자와 같은 버전 카운터를 설정하는 단계를 포함할 수 있다. 다른 실시예에서, 이 증분은 수신된 버전 표시자와 같은 버전 카운터 시퀀스에서 한 위치를 갖는 카운터 값과 같은 버전 카운터를 설정하는 단계를 포함할 수 있다.
본 발명은 상기 및 이하에서 설명되는 방법, 대응하는 장치, 및 각각이 상기 방법과 관련하여 설명된 하나 이상의 이익 및 장점을 생성하고 각각이 상기 방법과 관련하여 설명된 실시예에 대응하는 하나 이상의 실시예를 갖는 컴퓨터 프로그램을 포함하는 다른 양태들에 관한 것이다.
더 구체적으로, 다른 양태에 따르면, 상기 처리 장치에 저장된 메모리 컨텐트의 버전을 나타내는 버전 카운터를 유지하도록 구성된 데이터 처리 장치는 제1 및 제2 모드 중 하나로 선택적으로 동작가능하고, 여기서 제1 모드로 처리 장치를 동작시키는 것에 대한 액세스는 허가된 사용자에 한정되고 제2 모드에 대한 액세스와 별개로 제어된다.
상기 처리 장치는, 제1 모드로 동작될 때,
- 상기 버전 카운터의 적어도 하나의 초기 카운터 값을 생성하는 단계로서, 상기 초기 카운터 값은 카운터 값 시퀀스로부터 선택되고;
- 상기 제2 모드에서의 상기 처리 장치의 동작 동안에 상기 생성된 초기 카운터 값의 무결성을 암호로 보호하기 위한 초기 무결성 보호값을 생성하는 단계; 및
- 상기 초기 무결성 보호값을 현재 무결성 보호값으로서 저장 매체에 저장하는 단계를 수행하도록 구성된다.
상기 처리 장치는 제2 모드로 동작될 때 현재 카운터 값을 다음 카운터 값으로 증분시키도록 더 구성되고, 상기 다음 카운터 값은 상기 카운터 값 시퀀스에서 상기 현재 카운터 값 다음에 오는 값이고, 상기 증분하는 단계는 상기 저장 매체로부터 상기 현재 카운터 값의 무결성을 암호로 보호하기 위한 상기 현재 무결성 보호값을 제거하는 단계를 포함한다.
상기 처리 장치라는 용어는 데이터 처리를 위한 처리 수단을 포함하는 전자 장치를 포함하도록 의도된다. 특히, 처리 장치라는 용어는 임의의 전자장치, 휴대용 무선 통신장치, 및 다른 소형 또는 휴대용 장치, 및 이러한 장치에서 사용하기 위한 집적회로, 칩 또는 칩셋을 포함하도록 의도된다. 휴대용 무선 통화장치라는 용어는 이동전화, 페이저, 통신기, 전자 수첩, 스마트폰, PDA, 휴대 컴퓨터 등과 같은 휴대 단말기와 같은 모든 장치를 포함한다.
저장 매체라는 용어는 디지털 데이터 아이템을 저장하기 위해 적절한 임의의 회로나 장치를 포함하도록 의도된다. 이러한 저장 매체의 예는 비휘발성 메모리, ROM, RAM, 플래시 메모리, EPROM 등을 포함한다. 일부 실시예에서, 이 저장 매체는 상기 처리 장치에 포함된다.
다른 양태에 따르면, 처리 장치에 저장된 메모리 컨텐트를 업데이트하는 방법은,
버전 카운터를 상기 처리 장치에 의해 유지하는 단계를 포함하고, 상기 버전 카운터는 상기 메모리 컨텐트의 버전을 나타내고, 상기 버전 카운터를 유지하는 단계는 제1 및 제2 모드 중 하나로 상기 처리 장치를 선택적으로 동작시키는 단계를 포함하고, 상기 처리 장치를 상기 제1 모드로 동작시키는 것에 대한 액세스는 허가받은 사용자에 한정되고 상기 제2 모드로의 액세스와 별개로 제어되고,
상기 처리 장치를 상기 제1 모드로 동작시키는 단계는,
- 상기 처리 장치의 상기 제2 모드에서의 동작 동안에 상기 버전 카운터의 초기 카운터 값의 무결성을 암호로 보호하기 위한 적어도 하나의 초기 무결성 보호값을 생성하는 단계로서, 상기 초기 카운터 값은 카운터 값 시퀀스로부터 선택되고;
- 상기 초기 무결성 보호값을 현재 무결성 보호값으로서 저장 매체에 저장하는 단계를 포함하고,
- 상기 방법은,
- 상기 처리 장치를 상기 제2 모드로 동작시키는 단계;
- 상기 메모리 컨텐트의 업데이트 버전을 수신하는 단계로서, 상기 업데이트 버전은 버전 표시자를 포함하고;
- 상기 수신된 메모리 컨텐트의 진정성을 검증하는 단계;
- 상기 버전 표시자 및 상기 버전 카운터의 현재 값에 기초하여 상기 수신된 업데이트 메모리 컨텐트의 버전 제어를 수행하는 단계;
- 상기 버전 제어의 결과를 조건으로 하여 상기 수신된 업데이트 메모리 컨텐트를 수용하는 단계; 및
- 현재 카운터 값을 다음 카운터 값으로 증분시키는 단계로서, 상기 다음 카운터 값은 상기 버전 표시자에 대응하고 상기 카운터 값 시퀀스에서 상기 현재 카운터 값 다음에 오는 값이고, 상기 증분시키는 단계는 상기 저장 매체로부터 상기 현재 카운터 값의 무결성을 암호로 보호하기 위한 상기 현재 무결성 보호값을 제거하는 단계를 더 포함한다.
상기 및 이하에 설명되는 방법들의 특징은 소프트웨어로 구현될 수 있고 컴퓨터 실행 명령과 같은 프로그램 코드 수단의 실행에 의해 야기된 데이터 처리 장치나 다른 처리 수단에서 수행될 수 있다. 여기 그리고 이하에서, 처리 수단이라는 용어는 상기 기능을 수행하도록 적절히 적응된 임의의 회로 및/또는 장치를 포함한다. 특히, 상기 용어는 범용 또는 특수목적의 프로그램가능 마이크로프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적회로 (ASIC), 프로그램가능 논리 어레이 (PLA), 필드 프로그램가능 게이트 어레이 (FPGA), 특수목적의 전자회로 등, 또는 이들의 조합을 포함한다.
따라서, 다른 양태에 따르면, 컴퓨터 프로그램이 상기 데이터 처리 장치에서 실행될 때, 상기 컴퓨터 프로그램은 데이터 처리 장치가 상기 및 이하에서 설명되는 방법의 단계들을 수행하게 하도록 적응된 프로그램 코드 수단을 포함한다.
예를 들면, 상기 프로그램 코드 수단은 컴퓨터 네트워크를 통해 저장 매체로부터 또는 다른 컴퓨터로부터 RAM (Random Access Memory)와 같은 메모리에서 로딩될 수 있다. 이와 달리, 상기 특징들은 소프트웨어 대신에 또는 소프트웨어와 조합하여 하드웨어에 내장된 회로에 의해 구현될 수 있다.
상기 및 다른 양태들은 도면을 참조하여 이하에서 설명되는 실시예들로부터 분명하게 설명될 것이다.
도 1은 처리 장치의 일실시예의 블록도이다.
도 2는 카운터를 구현하는 처리 유닛의 일례, 및 버전 카운터 값 및 무결성 보호 값을 유지하는 데이터
도 3은 카운터를 구현하는 처리 유닛의 다른 예의 블록도이다.
도 4는 카운터 메커니즘의 일실시예의 흐름도이다.
도 5는 버전 카운터 값 및 무결성 보호 값을 유지하기 위한 데이터 구조의 일예이다.
도 1은 처리 장치의 일예로서의 하나 이상의 주문형 집적회로 (ASIC: Application Specific Integrated Circuit), 예컨대 이동 단말기 또는 임의의 다른 전자 장치에서 사용하기 위한 하나 이상의 ASIC을 포함하는 장치의 블록도이다. ASIC 장치(100)는 중앙 처리 논리 블록(102), ASIC 장치로/로부터 데이터를 입/출력하는 인터페이스 블록(186), 및 데이터 및/또는 프로그램 코드를 저장하는 데이터 저장 블록(103)을 포함한다. 데이터 저장 블록(103)은 시스템 버스(105)를 통해 중앙 처리 논리 블록(102)에 연결된다. 데이터 저장 블록(103)은 프로그램 지시어를 저장하는 프로그램 메모리 블록(106), 레지스터, RAM (random access memory) 등을 수용하는 데이터 메모리 블록(107), 및 EEPROM (electrically erasable programmable read only memory)과 같은 재기록가능 비휘발성 메모리 블록(108)을 포함한다. 프로그램 메모리 블록은 ROM (read-only memory), 및 EPROM, 플래시 메모리, EEPROM 등으로서 구현될 수 있다. 그러나, 데이터 저장 블록은 추가의 및/또는 다른 메모리 블록 또는 저장 타입을 포함할 수 있음은 물론이다.
중앙 처리 논리 블록(102)은 예컨대 데이터 저장 블록(103)에 저장된 프로그램 코드를 실행함으로써 이동 단말기나 다른 전자 장치의 동작을 제어하는 데 적절한 마이크로프로세서(188)나 다른 논리회로를 포함한다. 특히, 중앙 처리 논리 블록(102)은 데이터 저장 블록(103)에 저장된 프로그램 코드의 버전 번호를 유지하기 위하여 비휘발성 메모리 블록(108)의 위치(109)에 저장된 버전 카운터 값을 유지하도록 구성된다. 또한, 중앙 처리 논리 블록은 예컨대 일정 주기로, 부팅 프로세스 동안, 버전 카운터가 연관되는 프로그램 코드의 설치/업그레이드 동안 및/또는 실행 전에 버전 카운터 값(109)의 무결성(integrity) 검사를 개시하도록 구성된다. 또한, 중앙 처리 논리 블록(102)은, 새로운 버전의 대응 소프트웨어가 데이터 저장 블록(103)으로 로딩될 때 저장된 버전 카운터 값(109)의 증분을 개시하도록 구성된다.
이 목적을 위해 중앙 처리 블록(102)은 다른 값, 특히 더 낮은 값으로 수정, 대체하는 것과 같은 무권한 사용자에 의한 조작으로부터 카운터 값을 보호하도록 이하에 더 상세히 설명된 바와 같이 카운터 값(109)의 무결성을 검증하도록 구성된 논리회로를 포함하는 무결성 보호 논리 블록(101)을 포함한다. 이 목적을 위해, 비휘발성 메모리 블록(108)은 무결성 보호 논리 블록(101)에 의해 구현된 검증 프로세스에 의한 사용을 위해 하나 이상의 무결성 보호값을 저장하는 저장 위치(110)를 더 포함한다. 무결성 보호값은 무결성 보호 논리 블록(101)에 의해 생성되고 저장 위치(109)에 저장된 카운터 값의 검증 동안 무결성 보호 논리 블록(101)에 의해 기준 무결성 보호값으로서 사용된다. 무결성 보호 논리 블록(101)은 두 모드, 즉 제1 또는 소위 "프로그 모드 (prog mode)", 및 제2 또는 소위 "검증 모드 (verify mode)"로 동작가능하다. 이 동작의 모드는 적절한 제어 신호에 의해 중앙 처리 논리 블록(102)에 의해 제어된다. 적어도 하나의 초기 기준 보호값은 "프로그 모드"로 동작될 때 무결성 보호 논리 블록(101)에 의해 생성된다. 생성된 무결 성 보호값은 추후 검증 목적을 위해 기준값으로서 저장 위치(110)에 저장된다. 위치(109)에 저장된 카운터 값의 검증은 "검증 모드"로 동작될 때 무결성 보호 논리 블록(101)에 의해 수행된다.
이하에 상술되는 바와 같이, 무결성 보호 논리 블록(101)은 사용자가 "프로그 모드"로 무결성 보호 논리 블록(101)의 동작을 요청할 때 별개의 인증 프로세스를 수행하도록 구성된 액세스 제어 블록(111)을 포함한다. 다른 방법으로, 액세스 제어(111)는 무결성 보호 논리 블록(101) 외부의 액세스 제어 블록에 의해 수행될 수 있다. 예컨대, "검증 모드"에서 처리 장치의 동작은 예컨대 초기 액세스 제어에 의해 사용자 인증 프로세스를 거칠 수 있다. 그러므로, "프로그 모드"에서 무결성 보호 논리 블록(101)을 동작하는 액세스 제어(111)는 초기 액세스 제어에 추가하여 또는 초기 액세스 제어의 대안으로 수행될 수 있다. 제1 경우에, 사용자는 처음에 예컨대 "검증 모드"로 장치를 동작시키는 것에 대한 허가된 액세스를 얻도록 요청받을 수 있다. 제2 경우에, 장치는 예컨대 2가지 다른 동작 모드, 즉 "검증 모드"로 장치를 동작시키는 것을 포함하는 모드와, "프로그 모드"로 장치를 동작시키는 것을 포함하는 모드로 부팅가능할 수 있다. 따라서, 사용자가 장치를 어느 모드로 동작시키고 싶은지에 따라, 사용자는 액세스 제어 프로세스 중 대응하는 프로세스를 수행한다.
무결성 보호 논리 블록(101)은 보호된 하드웨어 블록으로서, 즉 무권한 액세스에 대해 안전한 하드웨어 블록으로서 구현된다. 특히, 일부 실시예에서, 무결성 보호 논리 블록(101)은 ASIC가 "프로그 모드"로 동작될 때, 즉 ASIC을 부팅한 사용 자가 ASIC을 "프로그 모드"로 동작시키도록 허가받을 때 적어도 하나의 초기 무결성 보호값만이 무결성 보호 논리 블록(101)으로부터 판독될 수 있도록 구성된다.
사용자 권한의 검증은, 예컨대, 사용자에게 이전에 저장된 값과 비교되는 액세스 코드를 입력하도록 요구함으로써, 사용자에게 유효키 카드나 다른 하드웨어 보안장치를 입력하도록 요구함으로써, 또는 지문과 같은 사용자의 물리적 속성에 기초한 인증 메커니즘이나 사용자가 허가받은 자임을 증명하는 임의의 다른 적절한 메커니즘을 수행함으로써 임의의 적절한 방식으로 수행될 수 있다. 권한의 증거를 제공하는 적절한 방법의 일예는 예컨대 US 4,748,668에 설명된 바와 같은 소위 Fiat-Shamir 확인 알고리즘이다. "프로그 모드"를 입력하는 액세스 제어는 "검증 모드"로 장치를 동작시키기 위한 액세스 제어로서 동일하거나 다른 인증 메커니즘에 기초할 수 있다. 예를 들면, 두 모드에 대한 액세스는 액세스 코드에 기초하여 동일한 인증 메커니즘에 의해 제어될 수 있지만, 다른 액세스 코드들이 두 모드에 대해 필요하다.
하드웨어 보호는 임의의 적절한 보호 기술, 예컨대 "스마트 카드 핸드북", W Rakl, W Effing 3판 Wiley 2003의 8.2장 "스마트 카드 보안"에 설명된 스마트 카드로 하드웨어를 보호하기 위해 사용되는 기술에 의해 구현될 수 있다.
카운터 값(109) 및 무결성 보호값(110)은 보호된 무결성 보호 논리 블록(101) 외부에 저장되는 것도 흥미롭다. 특히, 카운터 값(109) 및 무결성 보호값(110)은 보호되지 않은 비휘발성 메모리, 특히 재기록가능 메모리, 예컨대 장치(100)의 메모리 블록(108)에 저장될 수 있다.
ASIC 장치(100)가 단일 블록으로 도시되었지만, 장치(100)가 복수의 다른 ASIC로서 구현될 수 있음이 이해될 것이다. 예를 들면, 제조비용을 줄이기 위하여, 다른 ASIC에서 EEPROM, 마이크로프로세서, 무결성 보호 논리 블록을 구현하는 것이 바람직할 수 있다. 그러므로, ASIC 및 ASIC 장치라는 용어는 하나의 ASIC뿐만 아니라 별개의 ASIC들의 조합을 포함하는 것이다.
무결성 보호 논리 블록(101)의 실시예들이 도 2 및 도 3을 참조하여 이하에서 더 상세히 설명될 것이다.
도 2는 무결성 보호 논리 블록의 일예의 더 구체적인 블록도를 도시한다. 무결성 보호 논리 블록(201)은 각각의 카운터 값을 보호하기 위한 하나 이상의 암호 메시지 인증 코드(MAC)를 계산하도록 구성된 MAC 계산 블록(212)을 포함한다.
일반적으로, MAC 계산은 다음 식 M=H(k, d)로 표현될 수 있는데, 여기서 H는 적절한 MAC 함수이고, d는 보호될 데이터, M은 계산된 MAC 값, k는 비밀키 값이다. 일부 실시예에서, 비밀키 k는 ASIC(100) 상에서 액세스가능하지만 ASIC(100)으로부터 판독가능하지 않다. 적절한 MAC 함수의 일예는 네트워크 워킹 그룹 RFC (Request for Comments) 2104, "HMAC: Keyed-Hashing for Message Authentication" 1997년 2월에서 정의된 HMAC 함수이다. 따라서, 카운터 값 cnt (209)의 현 인증의 컨텍스트에서, 무결성 보호 논리 블록(201)은 저장 블록(109)으로부터 카운터 값(209)을 수신하고 카운터 값(209)을 MAC 계산 블록(212)으로 입력한다. MAC 계산 블록(212)은, 예컨대 ASIC(100)이나 무결성 보호 블록(201)의 안전한 메모리, 예컨대 내부 ROM에서 원치않는 판독에 대해 안전하게 저장된 비밀키 k (216)를 더 수신하여, 무결성 보호 블록(201)은 비밀키 k로의 액세스를 판독한다. MAC 계산 블록(212)은 MAC값 M=H(k,cnt)을 계산하고 계산된 값(287)을 모드 선택기(218), 예컨대 스위치로 전송한다.
상기한 바와 같이, 무결성 보호 블록(201)은 제어 입력(215)에 의해 제어되는 바와 같이 두 모드, 즉 "프로그 모드" 및 "검증 모드"로 동작될 수 있다. 상기한 바와 같이, "프로그 모드"에서의 동작은 액세스 제어(211)에 의해 구현되는 대응하는 액세스 제어를 거쳐야 한다. 따라서, 액세스 제어 블록(211)은 모드 선택 제어 신호(215)를 수신한다. 모드 선택 신호(215)가 "프로그 모드"에 대응하면, 액세스 제어 블록(211)은 무결성 보호 블록의 "프로그 모드"에서의 동작이 상기한 바와 같이 권한있는 사용자에게 제한됨을 보장하도록 사용자의 진정성을 검증한다. 사용자가 권한부여되면, 액세스 제어 블록(211)은 계산된 MAC 값의 데이터 흐름을 제어하도록 모드 선택 신호(215)를 제어신호로서 선택기(218)로 전송한다. 모드 선택 신호(215)가 "검증 모드"에 대응하면, 액세스 제어 블록(211)은 선택 신호를 선택기(218)로 전송한다. 일부 실시예에서, "검증 모드"는 액세스 제어를 거칠 수 있다.
"프로그 모드"로 동작될 때, 선택기(218)는 계산된 MAC 값(287)을 접속(220)을 통해 출력(214)으로 전송하는데, 이 출력(214)으로부터 MAC 값이 저장 위치(110)에 기준 MAC 값으로서 저장된다. 이 실시예에서, 무결성 보호 블록(201)은, "프로그 모드"로 동작될 때, 소정 갯수 N의 버전 카운터 값 VersionCount1, VersionCount2, ..., VersionCountN에 대한 복수의 MAC 값 mac_VC1_ref=H(k,VersionCount1), mac_VC2_ref=H(k,VersionCount2), ..., mac_VCN_ref=H(k,VersionCountN)을 계산하고 저장 위치(110)에 저장하도록 제어된다. 본 설명의 목적상, 버전 카운터 값은 증가 순으로, 즉 VersionCount1<VersionCount2<...<VersionCountN 으로 정렬된다고 가정한다. 그러나, 카운터 값은 임의의 적절한 순서법(ordering scheme)에 따라 순서가 정해질 수도 있다. 미리 계산되고 저장된 MAC 값의 갯수 N은 보호된 버전 카운터에 의해 관리되어야 하는 버전 업데이트의 예상 수와 필요한 저장 공간 사이의 교환조건으로서 선택될 수 있다. 예를 들면, 버전 MAC 값(214)은 도 2b에 도시된 바와 같이 예컨대 테이블 데이터 구조에서 각 버전 카운트 값에 대해 저장될 수 있다. 다른 방법으로, 버전 MAC 값은 버전 카운터 값과 무관하게 저장될 수 있다. 예를 들면, 장치가 예컨대 카운터를 증분시킴으로써 카운터 값들의 시퀀스를 생성하기 위한 논리를 포함하는 실시예에서, 카운터 값들은 명시적으로 저장될 필요는 없다.
"검증 모드"로 동작될 때, 선택기(218)는 계산된 MAC 값을 검증 블록(217), 예컨대 비교기로 입력한다. 검증 블록(217)은 계산된 MAC 값(287)을 저장 위치(110)에 저장된 하나 이상의 기준 MAC 값(210)과 비교한다. 기준 MAC 값(210)이 그들 각각의 카운터 값(209)에 대해 저장되는 실시예에서, 검증 블록은 MAC 값(287)이 계산된 카운터 값에 대해 저장된 기준 값(210)과 계산된 MAC 값(287)을 비교할 수 있다. 다른 방법으로, 검증 블록(217)은 매치가 확인될 때까지 또는 모 든 기준 값이 처리된 때까지 저장된 기준 값(210)과 계산된 MAC 값(287)을 성공적으로 비교할 수 있다. 검증 블록(217)은 계산된 MAC(287)에 대응하는 매칭 기준 MAC(210)이 발견되었는지를 나타내는 출력 신호(219), 즉 카운터 값(209)이 진짜이고(authentic) 최근 것(up-to-date)인지를 나타내는 출력 신호(219)를 생성한다. 출력 신호(213)는 출력 노드(213)에서 무결성 보호 블록(201)에 의해 출력된다.
처리 장치의 각 기동시에 또는 예컨대 코어 소프트웨어의 플랫폼에 의해 처리 장치에서 실행되는 애플리케이션에 의해 요청될 때마다, 무결성 보호 블록은 상기한 바와 같이 저장 위치(109)에 저장된 현재 카운터 값을 검증하도록 제어된다. 일부 실시예에서, 버전 카운터의 무결성은 버전 제어 프로세스가 버전 카운터에 액세스할 때마다 검증된다. 계산된 MAC 값(287)이 메모리(110)에 저장된 기준 MAC 값(210)에 대응하면, 처리 장치는 계속 정상적으로 기능하고, 그렇지 않으면, 처리 장치의 일부 또는 모든 기능이 불능이 되거나 및/또는 다른 적절한 조치가 취해진다.
여기 설명된 버전 카운터는 여러가지 다른 방법으로 소프트웨어 버전 제어를 위해 사용될 수 있다. 다음에, 2가지 예가 설명되는데, 여기서 버전 카운터의 현재 값, 즉 이와 연관된 유효 무결성 보호값을 갖는 최저 카운터 값은 처리 장치에서 실행되도록 허용된 최저 허용 소프트웨어 버전을 확인한다.
일예로, 버전 제어는 설치된 소프트웨어 자신에 의해 수행된다. 이러한 시스템에서, 소프트웨어에는 소프트웨어가 권한없는 사용자에 의해 변경되지 않았음을 보장하도록 디지털 서명이 제공된다. 수신/저장된 소프트웨어의 진정 성(authenticity)을 검증하는 적절한 방법의 예는 미국 특허 제6,026,293호, 또는 Trusted Computing Group (www.trustedcomputinggroup.org)의 PC 클라이언트 워크 그룹의 설명서에 설명된 방법들을 포함한다. 다른 또는 추가적으로, 소프트웨어의 진정성은 다른 적절한 메커니즘에 의해 보호될 수 있다. 처리 장치가 부팅될 때 및/또는 소프트웨어의 실행이 개시될 때, 처리 장치는 소프트웨어의 디지털 서명을 검증한다. 디지털 서명이 성공적으로 검증되지 않으면, 부팅 프로세스 및/또는 소프트웨어의 실행이 거부된다. 소프트웨어는 소프트웨어의 버전 번호를 나타내는 버전 표시자를 더 포함한다. 소프트웨어의 실행이 개시될 때, 소프트웨어는 자신의 버전 표시자를 여기 설명된 바와 같이 처리 장치에 의해 유지되는 버전 카운터의 현재 카운터 값으로 표시되는 바와 같은 현재 허용된 버전 번호와 비교한다. 소프트웨어의 버전 표시자가 버전 카운터의 현재 카운터 값과 같거나 더 크면, 소프트웨어는 계속 실행하고, 그렇지 않으면, 실행이 거부된다. 소프트웨어의 버전 표시자가 버전 카운터의 현재 카운터 값보다 더 크면, 처리 장치는 버전 카운터를 설치된 소프트웨어의 버전 표시자와 동일한 업데이트 값으로 증분시킨다. 여기 설명된 바와 같이, 이 증분은 업데이트 값보다 더 작은 모든 카운터 값과 연관된 무결성 보호 값, 예컨대 MAC 값을 제거하는 단계를 포함한다.
다른 예에서, 상기 버전 제어가 별개의 로더(loader) 소프트웨어나 기동(start-up) 소프트웨어에 의해 수행된다. 그럼에도 불구하고, 이 다른 실시예에서, 실행될 소프트웨어의 디지털 서명 또는 다른 무결성 보호는 실행될 소프트웨어의 무권한 조작 (예컨대, 버전 표시자의 변경)을 방지한다.
처리 장치(100)가 버전 카운터를 현재 값에서 다음 값으로 업데이트/증분/스텝업하도록 제어될 때, 처리 장치(100)는 메모리(110)로부터 상기 다음 카운터 값보다 더 작은 카운터 값과 연관된 모든 기준 MAC 값을 제거한다. 예를 들면, 카운터 값의 업데이트는 중앙 처리 논리 블록(102)의 마이크로프로세서(188)에서 실행되는 소프트웨어 업데이트 에이전트(141)에 의해 수행될 수 있다. 일부 실시예에서, 버전 카운터의 스텝업은 ASIC의 안전한 부분에서 구현된다. 다른 방법으로, 스텝업은 신뢰되는/검증된 소프트웨어에 의해 수행될 수 있다.
버전 카운터 값 VersionCount1, VersionCount2, ..., VersionCountN의 상기 예에서, 버전 카운터가 VersionCount1에서 VersionCount2로 증분될 때, 처리 장치는 MAC 값 mac_VC1_ref를 메모리로부터 제거한다. 마찬가지로, 그 버전 카운터가 VersionCountk로 증분하면, 처리 장치는 MAC 값들 mac_VC1_ref,..., mac_VCk-1_ref을 메모리로부터 제거한다. 도 2c는 도 2b에 도시된 카운터 값 및 MAC 값의 테이블을 도시하지만, 여기서는 카운터 값의 VersionCountk로의 업데이트 후, 즉 MAC 값들 mac_VC1_ref,..., mac_VCk-1_ref가 메모리로부터 제거된 상태이다. 따라서, 일반적으로 현재 카운터 값은 무결성이 성공적으로 검증가능한 최소 카운터 값, 즉 유효한 관련 무결성 보호 값이 장치에 저장되는 최소 카운터 값이다. 결과적으로, 대응하는 기준 MAC 값이 더이상 존재하지 않음에 따라, 무결성 보호 블록에 의해 더 낮은 카운터 값을 검증하려는 추후 시도는 실패할 것이다. 또한, "프로그 모드"로 ASIC를 동작시키도록 권한받지 않은 사용자는 이전 (더 낮은) 카운터 값에 대응하는 MAC 값을 재계산할 수 없다.
상기 예는 다음 카운터 값이 시퀀스의 임의의 다음 카운터 값일 수 있고 바로 다음의 카운터 값일 필요가 없음을 더 설명하는데, 즉 카운터 값을 증분시킬 때 중간 카운터 값이 생략될 수 있다. 상기 예에서, 카운터 값은 예컨대 VersionCount1에서 VersionCount2 또는 VersionCountk (k>2)로 증분될 수 있다. 이것은 예컨대 하나 이상의 중간 버전이 스킵되도록 소프트웨어 버전이 새로운 버전으로 업데이트될 때 유용할 수 있다.
도 3은 무결성 보호 논리 블록(301)의 다른 예의 구체적인 블록도이다. 무결성 보호 논리 블록(301)은 도 2의 무결성 보호 블록과 유사하고, 각 카운터 값을 보호하기 위한 하나 이상의 암호 메시지 인증 코드(MAC) 값을 계산하도록 구성된 MAC 계산 블록(212), 선택기(218)를 제어하는 액세스 제어 블록(211), 및 검증 블록(217)을 포함한다. MAC 계산 블록(212), 액세스 제어 블록(211), 선택기(218), 및 검증 블록(217)은 도 2와 관련하여 설명되었으므로 여기서 다시 설명되지 않을 것이다.
무결성 보호 블록(301)은 또하나의 MAC 계산 블록(312)을 포함한다는 점에서 도 2의 무결성 보호 블록(201)과 다르다. MAC 계산 블록(312)은 MAC 계산 블록(212)과 동일한 계산을 수행하고, 동일한 비밀키 k를 수신한다. 그러나, MAC 계산 블록(312)은 MAC 계산 블록(212)으로 입력된 카운터 값(209) 대신에 증분된 카 운터 값(333)을 수신한다. 이 목적을 위해, 무결성 보호 블록(301)은 카운터 값(209)을 수신하고 증분된 카운터 값(333), 즉 카운터 값 시퀀스에서 다음 카운터 값을 생성하는 증분 블록(332)을 포함한다. 다른 방법으로, MAC 계산 블록(212 및 312)은 단일 블록으로 조합될 수 있고 선택적으로 증분 블록(332)과 함께 조합될 수 있다. 또다른 실시예에서, 무결성 보호 블록(301)은 카운터 값(209) 및 증분된 카운터 값(333)을 위한 MAC 값을 순차적으로 생성하도록 제어되는 단일의 MAC 계산 블록만을 포함한다. MAC 계산 블록(312)에 의해 생성된 증분된 카운터 값(333)의 MAC 값(331)은 스위치(330)로 입력된다. 스위치(330)는, 검증 블록(217)이 기준 MAC 값(110)에 대해 현재 카운터 값(109)의 MAC 값을 성공적으로 검증하면 MAC 값(331)을 출력(213)으로 입력하도록 검증 블록(217)의 출력(219)에 의해 제어된다. 검증 블록(217)이 현재 카운터 값을 성공적으로 검증하지 못하면 (또는 검증 블록(217)이 MAC 계산 블록(212)으로부터 입력을 수신하지 못하면, 무결성 보호 블록(301)이 "프로그 모드"로 동작되므로), MAC 값(331)은 출력(213)에서 제공되지 않는다.
따라서, 도 3의 예에서, 무결성 보호 블록(301)은 "검증 모드"로 동작될 때 그리고 버전 카운터 값 VersionCountk가 그 기준 MAC에 대해 성공적으로 검증되면 MAC 값 VersionCountk+1을 출력하도록 구성된다. 이 실시예에서, 무결성 보호 블록(301)은 제1 유효 카운터 값만을 위한 하나의 초기 기준 MAC을 생성하고 저장하도록 "프로그 모드"로 동작된다. 일반적으로, 이것은 예컨대 장치에 제조자에 의 해 소프트웨어가 로딩되는 제조 단계의 일부로서 장치의 제조 동안에 수행된다. 이 경우, 제조자는 장치를 "프로그 모드"로 동작하도록 권한부여된다. 장치를 "프로그 모드"로 활성화하는 데 필요한 임의의 키, 패스워드 등은 따라서 제조자에 의해 비밀로 유지될 수 있다.
"검증 모드"로 동작될 때 도 3의 무결성 보호 블록(301)에 의해 수행되는 프로세스는 도 4를 참조하여 구체적으로 설명될 것이다.
도 4는 카운터 메커니즘의 일실시예의 흐름도이다. 초기 단계 S401에서, 이 프로세스는 현재 카운터 cnt 및 대응하는 MAC 기준값 mac_cnt_ref를 수신한다. 다음 단계 S402에서, 이 프로세스는 수신된 카운터 값 cnt 및 비밀키 k로부터 MAC 값 mac_cnt=h(k,cnt)를 계산한다. 단계 S403에서, 이 프로세스는 계산된 MAC 값 mac_cnt를 수신된 기준 MAC 값 mac_cnt_ref와 비교한다. 이들이 같으면, 프로세스는 단계 S405로 진행하고, 다르면 단계 S404로 진행한다. 단계 S404에서, 프로세스는 현재 카운터의 검증이 성공적이 아님을 나타내는 오류 상태 "아니오"를 출력하고 프로세스가 종료한다. 선택적으로, 이 프로세스는 수신한 잘못된 기준값 mac_cnt_ref를 더 출력할 수 있다. 단계 S405에서, 즉, 계산된 값과 기준 MAC 값이 일치하면, 프로세스는 증분된 카운터 cnt+1의 MAC 값 h(k,cnt+1)을 계산하고 단계 S406에서 계산된 값을 현재 카운터 값이 성공적으로 검증된다는 표시 "예"와 함께 기준 MAC mac_(cnt+1)_ref=h(k,cnt+1)로서 출력한다.
현재 및 다음 기준 값에 저장될 MAC 기준값의 리스트를 감소시켜 장치에서 메모리 공간을 절감하는 것이 이 실시예의 장점이다. 버전 카운터가 증분할 때, 처리 장치는 저장된 현재 기준값 mac_cnt_ref를 이전의 검증 단계에서 계산된 다음 기준값 mac_(cnt+1)_ref로 대체한다. 다음 기준 MAC 값 mac_(cnt+2)_ref는 다음 검증 단계에서 생성된다. 일부 실시예에서, 현재 기준값만이 저장된다. 예를 들면, 소프트웨어 업데이트는 현재 카운터의 검증을 포함할 수 있고, 이것은 이후 상기한 바와 같이 계산되고 출력될 다음 기준값으로 된다. 현재 기준값은 메모리에서 다음 값에 의해 대체될 수 있다.
도 5는 도 3 및 도 4와 관련하여 설명된 실시예와 관련하여 버전 카운터 값 및 무결성 보호 값을 유지하는 데이터 구조의 일예이다. 도 5a는 현재 카운터 값 - 이 예에서 VersionCountk - 및 다음으로 더 높은 카운터 값 - 이 예에서 VersionCountk+1 -이 그들 각각의 기준 MAC 값 mac_VCk_ref 및 mac_VCk+1_ref에 대해 저장되는 테이블 구조를 도시한다. 도 5b는 버전 VersionCountk+1로의 버전 업데이트 후의 테이블 구조이다. 따라서, 이 테이블 구조에서, 이전 카운터 값 및 기준 MAC는 새로운 현재 값 VersionCountk+2 및 mac_VCk+2_ref에 의해 각각 업데이트되었다. 또한, 새로운 다음 값 VersionCountk+2 및 mac_VCk+2_ref는 데이터 구조로 기입되었다. 따라서, 다시, 현재 카운터 값은 무결성이 완전히 검증가능한 최소 카운터 값, 즉 유효한 연관된 무결성 보호값이 장치에 저장된 최소 카운터 값이다. 무결성 보호 블록에 의해 더 낮은 카운터 값을 검증하려는 다음 시도는 대응하는 기준 MAC 값이 더이상 존재하지 않음에 따라 실패할 것이다. 또한, "프로그 모드"로 ASIC를 동작하도록 권한부여받지 않은 사용자는, "검증 모드"만으로 동작될 때 ASIC가 다음 MAC 값을 출력하고 현재 또는 이전의 MAC 값은 출력하지 않기 때문에, 이전의 (더 낮은) 카운터 값에 대응하는 MAC 값을 재계산할 수 없다.
일부 실시예가 구체적으로 설명되고 도시되었지만, 본 발명은 이에 한정되지 않고 다음 청구범위에서 정의된 발명의 범위 내에서 다른 방식으로 실시될 수 있다.
특히, 상기 실시예들은 주로 데이터 처리 장치의 일예로서 이동 전화를 참조하여 설명되었다. 그러나, 여기 설명된 방법, 제조 수단, 및 장치는 다른 데이터 처리 장치에도 적용될 수 있음은 물론이다.
또한, 상기 실시예들은 주로 단일의 소프트웨어 버전 카운터와 관련하여 설명되었다. 그러나, 여기 설명된 방법, 장치 및 제조 수단은 예컨대 소프트웨어 버전이 아닌 다른 메모리 컨텐트의 버전을 포함하는 다른 업데이트 이벤트, 상태 등을 세는 다른 종류의 버전 카운터에도 적용될 수 있음은 물론이다. 이러한 메모리 컨텐트의 예는 데이터베이스 등에 저장된 데이터와 같은 저장된 데이터를 포함하지만 이에 한정되는 것은 아니다. 마찬가지로, 처리 장치는 여기 설명된 메커니즘에 의한 둘 이상의 카운터, 예컨대 다른 소프트웨어 엔터티나 모듈, 데이터 아이템 등에 대한 다른 카운터들을 유지할 수 있다.
여기 설명된 방법, 제조 수단 및 장치는 몇개의 별개의 요소를 포함하는 하드웨어 및 적절히 프로그램된 마이크로프로세서에 의해 구현될 수 있다. 몇개의 수단을 열거하는 장치 청구항에서, 이들 수단 중 몇몇은 하드웨어의 하나의 아이 템, 예컨대 적절히 프로그램된 마이크로프로세서, 하나 이상의 디지털 신호 프로세서 등에 의해 실시될 수 있다. 임의의 수단이 상호 다른 종속항에서 인용되거나 다른 실시예에서 설명된다는 사실만으로는 이들 수단의 조합이 유리하게 사용될 수 없음을 나타내는 것은 아니다.
본 명세서에서 사용될 때 "포함"이라는 용어는 언급된 특징, 정수, 단계 또는 구성요소의 존재를 특정하기 위해 취해진 것이며 하나 이상의 다른 특징, 정수, 단계, 구성요소 또는 이 그룹의 존재나 추가를 배제하는 것이 아니라는 점을 강조한다.
Claims (34)
- 처리 장치에 의해 버전 카운터를 유지하는 방법으로서, 상기 버전 카운터는 상기 처리 장치에 저장된 메모리 컨텐트의 버전을 나타내고, 상기 방법은 제1 및 제2 모드 중 하나로 상기 처리 장치를 선택적으로 동작시키는 단계를 포함하고, 상기 처리 장치를 상기 제1 모드로 동작시키기 위한 액세스는 허가된 사용자에게 한정되고 제2 모드로의 액세스와 별개로 제어되고,상기 처리 장치를 상기 제1 모드로 동작시키는 단계는,상기 처리 장치의 상기 제2 모드에서의 동작 동안에 상기 버전 카운터의 초기 카운터 값의 무결성(integrity)을 암호로 보호(crytographically protecting)하기 위한 적어도 하나의 초기 무결성 보호값을 생성하는 단계 - 상기 초기 카운터 값은 카운터 값 시퀀스로부터 선택됨 - ; 및상기 초기 무결성 보호값을 현재 무결성 보호값으로서 저장 매체에 저장하는 단계를 포함하고,상기 처리 장치를 상기 제2 모드로 동작시키는 단계는 현재 카운터 값을 다음 카운터 값으로 증분시키는 단계를 포함하고, 상기 다음 카운터 값은 상기 카운터 값 시퀀스에서 상기 현재 카운터 값의 다음에 오는 값이고, 상기 증분시키는 단계는 상기 저장 매체로부터 상기 현재 카운터 값의 무결성을 암호로 보호하기 위한 상기 현재 무결성 보호값을 제거하는 단계를 포함하는, 처리 장치에 의해 버전 카운터를 유지하는 방법.
- 제1항에 있어서,상기 처리 장치를 상기 제1 모드로 동작시키는 단계는,카운터 값 시퀀스의 각각의 카운터 값의 무결성을 암호로 보호하기 위한 무결성 보호값 시퀀스를 생성하는 단계 - 상기 카운터 값 시퀀스는 상기 초기 카운터 값에서 시작하여 순차적으로 배열됨 - ,상기 무결성 보호값 시퀀스를 저장 매체에 저장하는 단계를 포함하는 방법.
- 제2항에 있어서,상기 장치가 상기 제1 및 제2 모드 중 제1 모드로 동작될 때만 상기 무결성 보호값 시퀀스의 생성된 무결성 보호값을 출력하도록 적응된 무결성 보호값 계산 유닛을 제공하는 단계를 더 포함하는 방법.
- 제1항에 있어서,현재 카운터 값을 다음 카운터 값으로 증분시키는 단계는 상기 다음 카운터 값에 대응하는 다음 무결성 보호값을 생성하는 단계; 및 상기 현재 무결성 보호값을 상기 다음 무결성 보호값으로 대체하는 단계를 포함하는 방법.
- 제4항에 있어서,상기 다음 무결성 보호값을 생성하는 단계는 상기 현재 무결성 보호값에 기 초하여 상기 현재 카운터 값을 검증하는 단계; 및 상기 현재 카운터 값의 성공적인 검증을 조건으로 하여 상기 다음 무결성 보호값을 생성하는 단계를 포함하는 방법.
- 제1항 내지 제5항 중 어느 한 항에 있어서,각 생성된 무결성 보호값은 상기 대응하는 카운터 값과 상기 장치에 대해 고유(unique)한 방법.
- 제1항 내지 제6항 중 어느 한 항에 있어서,각 생성된 무결성 보호값은 상기 버전 카운터의 값 및 비밀키 값으로부터 메시지 인증 코드 함수에 의해 생성된 메시지 인증 코드값인 방법.
- 제7항에 있어서,상기 비밀키 값은 장치 특정(device specific)인 방법.
- 제1항 내지 제8항 중 어느 한 항에 있어서,상기 카운터 값 각각은 장치 고유(device unique)인 방법.
- 제1항 내지 제9항 중 어느 한 항에 있어서,상기 대응하는 무결성 보호값에 의한 상기 카운터 값의 생성 및 검증은 무결성 보호 모듈에 의해 구현되고, 상기 무결성 보호 모듈은 수정에 대해 안전한 방 법.
- 제10항에 있어서,상기 무결성 보호 모듈은 하드웨어 모듈인 방법.
- 제1항 내지 제11항 중 어느 한 항에 있어서,상기 처리 장치는 프로그램가능 마이크로프로세서인 방법.
- 제1항 내지 제12항 중 어느 한 항에 있어서,상기 처리 장치는 이동 단말기(a mobile terminal)인 방법.
- 제1항 내지 제13항 중 어느 한 항에 있어서,상기 저장 매체는 상기 처리 장치 내에 포함되는 방법.
- 제1항 내지 제14항 중 어느 한 항에 있어서,상기 카운터는 소프트웨어 버전 카운터인 방법.
- 제1항 내지 제15항 중 어느 한 항에 있어서,상기 메모리 컨텐트의 업데이트 버전을 수신하는 단계 - 상기 업데이트 버전은 버전 표시자를 포함함 - ;수신된 상기 메모리 컨텐트의 진정성(authenticity)을 검증하는 단계;상기 버전 표시자 및 상기 버전 카운터의 현재 값에 기초하여 수신된 상기 업데이트 메모리 컨텐트의 버전 제어를 수행하는 단계; 및상기 버전 제어의 결과를 조건으로 하여 수신된 상기 업데이트 메모리 컨텐트를 수용(accept)하는 단계를 더 포함하는 방법.
- 제16항에 있어서,수신된 상기 업데이트 메모리 컨텐트의 상기 버전 표시자에 대응하는 다음 카운터 값으로 상기 버전 카운터를 증분시키는 단계를 더 포함하는 방법.
- 제1항 내지 제17항 중 어느 한 항에 있어서,상기 수용하는 단계는 상기 수용된 수신 업데이트 메모리 컨텐트로 상기 처리 장치에 저장된 메모리 컨텐트를 업데이트하는 단계를 포함하는 방법.
- 프로그램 코드 수단이 데이터 처리 장치에서 실행될 때, 제1항 내지 제18항 중 어느 한 항에 따른 방법을 수행하도록 적응된 상기 프로그램 코드 수단을 포함하는 컴퓨터 프로그램 제품.
- 처리 장치에 저장된 메모리 컨텐트의 버전을 나타내는 버전 카운터를 유지하도록 구성된 상기 처리 장치에 있어서, 상기 처리 장치는 제1 및 제2 모드 중 하나 로 선택적으로 동작가능하고, 상기 처리 장치를 상기 제1 모드로 동작시키기 위한 액세스는 허가된 사용자에 제한되고 상기 제2 모드로의 액세스와 별개로 제어되고,상기 처리 장치는, 상기 제1 모드로 동작할 때,상기 버전 카운터의 적어도 하나의 초기 카운터 값을 생성하는 단계 - 상기 초기 카운터 값은 카운터 값 시퀀스로부터 선택됨 - ;상기 처리 장치의 상기 제2 모드에서의 동작 동안에 상기 생성된 초기 카운터 값의 무결성을 암호로 보호하기 위한 초기 무결성 보호값을 생성하는 단계; 및상기 초기 무결성 보호값을 현재 무결성 보호값으로서 저장 매체에 저장하는 단계를 수행하도록 구성되고,상기 처리 장치는, 상기 제2 모드로 동작될 때, 현재 카운터 값을 다음 카운터 값으로 증분시키도록 또한 구성되고, 상기 다음 카운터 값은 상기 카운터 값 시퀀스에서 상기 현재 카운터 값 다음에 오는 값이고, 상기 증분시키는 단계는 상기 저장 매체로부터 상기 현재 카운터 값의 무결성을 암호로 보호하기 위한 상기 현재 무결성 보호값을 제거하는 단계를 포함하는 처리 장치.
- 제20항에 있어서,상기 제1 모드로 동작할 때,카운터 값 시퀀스를 생성하는 단계 - 상기 카운터 값 시퀀스는 상기 초기 카운터 값에서 시작하여 순차적으로 배열됨 - ;상기 생성된 카운터 값 시퀀스의 각각의 카운트 값의 무결성을 암호로 보호 하기 위한 대응하는 무결성 보호값 시퀀스를 생성하는 단계; 및상기 무결성 보호값 시퀀스를 저장 매체에 저장하는 단계를 수행하도록 구성된 처리 장치.
- 제21항에 있어서,상기 장치가 상기 제1 및 제2 모드 중 제1 모드로 동작될 때만 상기 무결성 보호값 시퀀스의 생성된 무결성 보호값을 출력하도록 적응된 무결성 보호값 계산 유닛을 포함하는 처리 장치.
- 제20항에 있어서,상기 다음 카운터 값에 대응하는 다음 무결성 보호값을 생성하여, 상기 현재 무결성 보호값을 상기 다음 무결성 보호값으로 대체함으로써 상기 현재 카운터 값을 다음 카운터 값으로 증분시키도록 더 적응된 처리 장치.
- 제23항에 있어서,상기 현재 무결성 보호값에 의해 상기 현재 카운터 값을 검증하고; 상기 현재 카운터 값의 성공적인 검증을 조건으로 하여 상기 다음 무결성 보호값을 생성하도록 더 적응된 처리 장치.
- 제20항 내지 제24항 중 어느 한 항에 있어서,상기 대응하는 카운터 값 및 상기 장치에 대해 고유한 각 무결성 보호값을 생성하도록 적응된 처리 장치.
- 제20항 내지 제25항에 있어서,상기 버전 카운터의 값 및 비밀키 값으로부터 메시지 인증 코드 함수에 의해 생성된 메시지 인증 코드값으로서 각 무결성 보호값을 생성하도록 적응된 처리 장치.
- 제26항에 있어서,상기 비밀키 값은 장치 특정(device specific)인 처리 장치.
- 제20항 내지 제27항 중 어느 한 항에 있어서,상기 카운터 값 각각은 장치 고유(device unique)인 처리 장치.
- 제20항 내지 제28항 중 어느 한 항에 있어서,상기 대응하는 무결성 보호값에 의해 상기 카운터 값의 생성 및 검증을 구현하도록 적응된 무결성 보호 모듈을 포함하고, 상기 무결성 보호 모듈은 수정에 대해 안전한 처리 장치.
- 제29항에 있어서,상기 무결성 보호 모듈은 하드웨어 모듈인 처리 장치.
- 제20항 내지 제30항 중 어느 한 항에 있어서,상기 처리 장치는 프로그램가능 마이크로프로세서인 처리 장치.
- 제20항 내지 제31항 중 어느 한 항에 있어서,상기 처리 장치는 이동 단말기인 처리 장치.
- 제20항 내지 제32항 중 어느 한 항에 있어서,상기 처리 장치는 상기 저장 매체를 포함하는 처리 장치.
- 제20항 내지 제33항 중 어느 한 항에 있어서,상기 카운터는 소프트웨어 버전 카운터인 처리 장치.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP06388031A EP1850256B1 (en) | 2006-04-24 | 2006-04-24 | Authorisation of the installation of a software version |
EP06388031.4 | 2006-04-24 | ||
US74767606P | 2006-05-19 | 2006-05-19 | |
US60/747,676 | 2006-05-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20090005390A true KR20090005390A (ko) | 2009-01-13 |
Family
ID=37398783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087028597A KR20090005390A (ko) | 2006-04-24 | 2007-04-18 | 소프트웨어 버전 설치의 권한 |
Country Status (10)
Country | Link |
---|---|
US (1) | US8880898B2 (ko) |
EP (1) | EP1850256B1 (ko) |
JP (1) | JP5038397B2 (ko) |
KR (1) | KR20090005390A (ko) |
CN (1) | CN101427259B (ko) |
AT (1) | ATE470909T1 (ko) |
CA (1) | CA2646003A1 (ko) |
DE (1) | DE602006014801D1 (ko) |
TW (1) | TW200817964A (ko) |
WO (1) | WO2007121903A1 (ko) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008018055A2 (en) * | 2006-08-09 | 2008-02-14 | Neocleus Ltd | Extranet security |
EP2130322B1 (en) * | 2007-03-21 | 2014-06-25 | Intel Corporation | Protection against impersonation attacks |
WO2008114256A2 (en) * | 2007-03-22 | 2008-09-25 | Neocleus Ltd. | Trusted local single sign-on |
US8474037B2 (en) | 2008-01-07 | 2013-06-25 | Intel Corporation | Stateless attestation system |
US20090307705A1 (en) * | 2008-06-05 | 2009-12-10 | Neocleus Israel Ltd | Secure multi-purpose computing client |
US8266684B2 (en) | 2008-09-30 | 2012-09-11 | General Instrument Corporation | Tokenized resource access |
US8364598B2 (en) * | 2009-10-13 | 2013-01-29 | Microsoft Corporation | Use of software update policies |
US8621337B1 (en) * | 2010-09-30 | 2013-12-31 | Juniper Networks, Inc. | Detecting memory corruption |
US20120204254A1 (en) * | 2011-02-04 | 2012-08-09 | Motorola Mobility, Inc. | Method and apparatus for managing security state transitions |
JP5759845B2 (ja) * | 2011-09-21 | 2015-08-05 | 株式会社メガチップス | 情報処理システム、情報処理装置、外部記憶媒体、プログラム、記憶媒体、及び、ファイル管理方法 |
GB2499985A (en) * | 2012-02-29 | 2013-09-11 | Nds Ltd | Current state of OTP memory used with new received information to define new OTP state for computation of new digital signature in preventing playback attacks |
US9910659B2 (en) * | 2012-11-07 | 2018-03-06 | Qualcomm Incorporated | Methods for providing anti-rollback protection of a firmware version in a device which has no internal non-volatile memory |
EP3910876A1 (en) * | 2013-03-15 | 2021-11-17 | Assa Abloy Ab | Method, system, and device for generating, storing, using, and validating nfc tags and data |
US10254737B2 (en) * | 2013-12-12 | 2019-04-09 | Panasonic Intellectual Property Management Co., Ltd. | Motor driving apparatus |
US9460312B2 (en) * | 2014-03-11 | 2016-10-04 | Qualcomm Incorporated | Data integrity protection from rollback attacks for use with systems employing message authentication code tags |
US9621549B2 (en) | 2014-07-25 | 2017-04-11 | Qualcomm Incorporated | Integrated circuit for determining whether data stored in external nonvolative memory is valid |
US9928385B2 (en) * | 2014-08-29 | 2018-03-27 | The Boeing Company | Periodic memory refresh in a secure computing system |
US9325506B2 (en) | 2014-09-23 | 2016-04-26 | Red Hat, Inc. | Cryptographically enforcing strict separation of environments |
CN107111730B (zh) * | 2014-11-07 | 2021-01-08 | 新思公司 | 用于数据存储的完整性保护 |
US10042780B2 (en) * | 2014-11-07 | 2018-08-07 | Synopsys, Inc. | Integrity protection for data storage |
JP6595822B2 (ja) * | 2015-07-07 | 2019-10-23 | キヤノン株式会社 | 情報処理装置及びその制御方法 |
US10019309B2 (en) * | 2015-12-28 | 2018-07-10 | International Business Machines Corporation | Analytics-based dynamic adaptation of client-server mobile applications |
US10126960B2 (en) | 2016-05-10 | 2018-11-13 | Qualcomm Incorporated | Fuse-based anti-replay mechanism |
US10754988B2 (en) * | 2016-08-30 | 2020-08-25 | Winbond Electronics Corporation | Anti-rollback version upgrade in secured memory chip |
WO2019148470A1 (zh) * | 2018-02-02 | 2019-08-08 | 深圳配天智能技术研究院有限公司 | 一种可编程逻辑芯片的保护电路及控制系统 |
EP3614622A1 (en) | 2018-08-24 | 2020-02-26 | Nagravision SA | Sending and receiving messages |
WO2020112144A1 (en) * | 2018-11-30 | 2020-06-04 | Hewlett-Packard Development Company, L.P. | Software patch difference devices |
US11449332B2 (en) | 2018-11-30 | 2022-09-20 | Hewlett-Packard Development Company, L.P. | Polling computing devices |
US11128460B2 (en) * | 2018-12-04 | 2021-09-21 | EMC IP Holding Company LLC | Client-side encryption supporting deduplication across single or multiple tenants in a storage system |
WO2020118639A1 (zh) * | 2018-12-13 | 2020-06-18 | 深圳市大疆软件科技有限公司 | 无人飞行器及其固件升级方法 |
US11288361B1 (en) * | 2019-03-29 | 2022-03-29 | NortonLifeLock Inc. | Systems and methods for restoring applications |
US10474809B1 (en) * | 2019-07-12 | 2019-11-12 | Capital One Services, Llc | Computer-based systems and computing devices configured to utilize one or more authentication servers for securing device commands transmissions and methods of use thereof |
JP7362583B2 (ja) | 2020-09-23 | 2023-10-17 | 株式会社東芝 | 情報処理装置 |
KR20220093664A (ko) | 2020-12-28 | 2022-07-05 | 삼성전자주식회사 | 크립토 장치, 그것을 갖는 집적 회로 및 컴퓨팅 장치, 및 그것의 쓰기 방법 |
US20220382868A1 (en) * | 2021-06-01 | 2022-12-01 | Mellanox Technologies Ltd. | Unidirectional counter |
CN113255263B (zh) * | 2021-06-07 | 2021-10-01 | 上海国微思尔芯技术股份有限公司 | 颗粒带分割方法、装置、计算机设备和存储介质 |
CN113486399B (zh) * | 2021-07-14 | 2023-03-24 | 上海瓶钵信息科技有限公司 | 基于risc-v架构的数据存储方法及系统 |
CN117668872B (zh) * | 2023-12-04 | 2024-09-17 | 北京海泰方圆科技股份有限公司 | 一种数据保护方法及装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5643086A (en) * | 1995-06-29 | 1997-07-01 | Silicon Gaming, Inc. | Electronic casino gaming apparatus with improved play capacity, authentication and security |
GB2353120B (en) * | 1996-06-28 | 2001-03-21 | Intel Corp | Method and apparatus for protecting flash memory |
EP1141808A1 (en) * | 1999-10-29 | 2001-10-10 | Koninklijke Philips Electronics N.V. | Assuring data integrity via a secure counter |
JP4193321B2 (ja) * | 2000-03-29 | 2008-12-10 | オムロン株式会社 | 画像処理システム及びコンピュータ並びに画像処理装置及び処理方法 |
US9213836B2 (en) * | 2000-05-28 | 2015-12-15 | Barhon Mayer, Batya | System and method for comprehensive general electric protection for computers against malicious programs that may steal information and/or cause damages |
US20030037237A1 (en) * | 2001-04-09 | 2003-02-20 | Jean-Paul Abgrall | Systems and methods for computer device authentication |
US7159240B2 (en) * | 2001-11-16 | 2007-01-02 | Microsoft Corporation | Operating system upgrades in a trusted operating system environment |
JP2003202931A (ja) * | 2002-01-09 | 2003-07-18 | Toshiba Corp | ソフトウェアダウンロードシステム、サーバ装置、端末装置、サーバ制御プログラム、端末制御プログラム、サーバ制御方法、端末制御方法 |
US7421579B2 (en) * | 2002-06-28 | 2008-09-02 | Microsoft Corporation | Multiplexing a secure counter to implement second level secure counters |
EP1429224A1 (en) * | 2002-12-10 | 2004-06-16 | Texas Instruments Incorporated | Firmware run-time authentication |
KR101015456B1 (ko) * | 2002-11-18 | 2011-02-22 | 에이알엠 리미티드 | 디바이스에 의한 메모리로의 억세스 제어 |
US20050021968A1 (en) * | 2003-06-25 | 2005-01-27 | Zimmer Vincent J. | Method for performing a trusted firmware/bios update |
US7100205B2 (en) * | 2003-10-22 | 2006-08-29 | The United States Of America As Represented By The Secretary Of The Navy | Secure attention instruction central processing unit and system architecture |
US7940932B2 (en) * | 2004-04-08 | 2011-05-10 | Texas Instruments Incorporated | Methods, apparatus, and systems for securing SIM (subscriber identity module) personalization and other data on a first processor and secure communication of the SIM data to a second processor |
US7877313B2 (en) * | 2004-04-16 | 2011-01-25 | Sap Ag | Method and system for a failure recovery framework for interfacing with network-based auctions |
-
2006
- 2006-04-24 EP EP06388031A patent/EP1850256B1/en not_active Not-in-force
- 2006-04-24 DE DE602006014801T patent/DE602006014801D1/de active Active
- 2006-04-24 AT AT06388031T patent/ATE470909T1/de not_active IP Right Cessation
-
2007
- 2007-04-18 KR KR1020087028597A patent/KR20090005390A/ko not_active Application Discontinuation
- 2007-04-18 JP JP2009506952A patent/JP5038397B2/ja not_active Expired - Fee Related
- 2007-04-18 WO PCT/EP2007/003389 patent/WO2007121903A1/en active Application Filing
- 2007-04-18 CA CA002646003A patent/CA2646003A1/en not_active Abandoned
- 2007-04-18 US US12/298,220 patent/US8880898B2/en active Active
- 2007-04-18 CN CN200780014710.8A patent/CN101427259B/zh not_active Expired - Fee Related
- 2007-04-23 TW TW096114272A patent/TW200817964A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US8880898B2 (en) | 2014-11-04 |
DE602006014801D1 (de) | 2010-07-22 |
EP1850256B1 (en) | 2010-06-09 |
CA2646003A1 (en) | 2007-11-01 |
CN101427259A (zh) | 2009-05-06 |
JP5038397B2 (ja) | 2012-10-03 |
US20090100272A1 (en) | 2009-04-16 |
ATE470909T1 (de) | 2010-06-15 |
TW200817964A (en) | 2008-04-16 |
WO2007121903A1 (en) | 2007-11-01 |
CN101427259B (zh) | 2011-11-23 |
EP1850256A1 (en) | 2007-10-31 |
JP2009534765A (ja) | 2009-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20090005390A (ko) | 소프트웨어 버전 설치의 권한 | |
EP2854066B1 (en) | System and method for firmware integrity verification using multiple keys and OTP memory | |
EP0849657B1 (en) | Secure data processing method and system | |
US7313705B2 (en) | Implementation of a secure computing environment by using a secure bootloader, shadow memory, and protected memory | |
RU2413295C2 (ru) | Система и способ для защищенной начальной загрузки операционной системы с использованием проверки состояния | |
EP2011049B1 (en) | Selectively unlocking a core root of trust for measurement (crtm) | |
JP4912879B2 (ja) | プロセッサの保護された資源へのアクセスに対するセキュリティ保護方法 | |
KR101904303B1 (ko) | 보안 소프트웨어 인증 및 검증 | |
CN103329095B (zh) | 用编码的信息验证管理程序 | |
US20090193211A1 (en) | Software authentication for computer systems | |
TW201303636A (zh) | 用於處理改變依照統一可延伸韌體介面計算裝置中之系統安全資料庫及韌體儲存區請求的系統及方法 | |
JP7113115B2 (ja) | シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法 | |
US8656190B2 (en) | One time settable tamper resistant software repository | |
US8495389B2 (en) | Locking changing hard disk content to a hardware token | |
EP2671183A2 (en) | Method and apparatus for managing security state transitions | |
EP3382590B1 (en) | Method for initializing a computerized system and computerized system against rollback attacks | |
EP1811460B1 (en) | Secure software system and method for a printer | |
US20240126886A1 (en) | Trusted Computing for Digital Devices | |
US10067770B2 (en) | Platform key hierarchy | |
CN117813795A (zh) | 设备身份密钥 | |
US20220121748A1 (en) | Modifications to firmware functionality | |
CN116089967B (zh) | 数据防回滚方法和电子设备 | |
US12019752B2 (en) | Security dominion of computing device | |
JP2012039390A (ja) | フレキシブル認証ルールの修正 | |
CN116745765A (zh) | 安全的服务中固件更新 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |