KR101723001B1 - 데이터 검증 방법 - Google Patents
데이터 검증 방법 Download PDFInfo
- Publication number
- KR101723001B1 KR101723001B1 KR1020127001735A KR20127001735A KR101723001B1 KR 101723001 B1 KR101723001 B1 KR 101723001B1 KR 1020127001735 A KR1020127001735 A KR 1020127001735A KR 20127001735 A KR20127001735 A KR 20127001735A KR 101723001 B1 KR101723001 B1 KR 101723001B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- node
- digest value
- data
- digest
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/565—Static detection by checking file integrity
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
전자 시스템 (1)은 신뢰성 있는 프로세서 (2), 신뢰성 있는 캐시 메모리 (3) 그리고 대용량 저장 메모리 (4)를 포함한다. 데이터는 대용량 저장 메모리 (4)에 저장되며, 이 경우에 상기 메모리들은 블록들로 나누어지며, 각 블록은 주소에 의해서 식별되며, 데이터는 검증 트리를 경유하여 주소 지정된다. 상기 검증 트리는 노드들을 포함하는 트리 구조이며, 이 경우 강하 (descendent) 노드들이 루트 노드에 부착되며 그리고 각 노드는 블록의 주소를 저장하며, 그 블록은 자신의 자녀 노드들 각각 그리고 각 블록의 다이제스트 값 (digest value)을 포함한다. 그런 전자 시스템의 데이터를 검증하는 방법은 검색된 데이터에 액세스하는 것을 포함하며 그리고 계산된 다이제스트가 현재의 다이제스트 값과 다르면 데이터 훼손을 동시에 보고한다.
Description
본 발명은 대용량 저장 매체에 저장된 데이터를 검증하는 영역에 관련된 것이다. 본 발명의 하나의 특별한 응용은 컴퓨터 시스템들과 같은 전자 시스템들을 보호하는 것에 목적을 둔다.
미국 특허 US 4,309,569 은 메시지를 인증하는 목적들을 위한 디지털 서명 방법을 설명하며, 이는 비밀 번호의 단-방향 기능의 인증 트리 함수를 이용한다.
미국 특허 US 4,881,264 는 무한대로 확장 가능한 일련의 메시지들 Mi 에 사인하기 위한 디지털 서명들을 생성하는 방법을 설명한다. 무한대로 확장 가능한 서명 노드들로 형성된 인증 트리가 이용된다. 각 노드는 메시지를 사인하기 위해서 사용될 수 있을 것이다. 각 노드는 k 개의 서브-노드들까지 사인하기 위해서 또한 사용되며, 이 경우 k 는 1보다 더 큰 정수이다. 메시지들을 사인하기 위해서 그리고 서브-노드들을 사인하기 위해서 사용되는 각 서명은 단-방향 함수 F를 기반으로 하는 유일한 서명이다. 상기 함수 F는 공개된 것이다. 메시지 Mi에 사인하기 위해서, 사인하는 사람은 상기 트리로부터 이전에 사용되지 않은 노드 (노드 i)를 선택한다. 그러면 그 노드에서에 메시지 사인하는 키는 상기 메시지에 사인하기 위해서 사용된다. 노드 i 까지의 트리의 루트로부터의 노드들 (노드 1)의 시퀀스는 그러면 상기 메시지 서명이 유효한 것인가를 검증하기 위해서 사용되며 그리고 변경되지 않는다. 그 절차는 상기 메시지가 변경되지 않았다는 것을 입증한다.
상기의 특허들에서 설명된 것들과 같은 인증 트리들은 검증하기 위해서 사용되고 특히 대용량 저장 메모리에 저장된 데이터 훼손을 탐지하기 위해서 사용된다. 그러나, 저장된 데이터에 액세스하는 것은 효율적이지 않으며 또는 메모리 공간, 예를 들면, 모든 서명들을 포함하기에 충분할 만큼 커다란 캐시 메모리를 이용할 것을 필요로 한다
상기와 같은 것을 보면, 본 발명이 중점을 두어서 다룰 문제점들 중의 하나는 신뢰성 있는 프로세서, 신뢰성 있는 캐시 메모리 그리고 대용량 저장 메모리를 포함하는 전자 시스템의 데이터를 검증하기 위한 방법에 대한 필요가 있다는 것이며, 이 경우 상기 데이터는 상기 대용량 저장 메모리에 저장되며, 그리고 상기 방법은 상기 데이터에 효율적으로 액세스함으로써 종래 기술에서의 결점들을 제거한다.
이런 문제점에 대해 본 발명에 의해서 제안된 솔루션은, 대용량 메모리에 저장되며 그리고 검증 트리가 저장된 보안 또는 신뢰성 있는 캐시 메모리를 이용하여 상기 검증 트리를 통해서 주소가 지정된 데이터를 검증하기 위한 방법이다.
더 상세하게는, 첫 번째 모습에서, 본 발명은 신뢰성 있는 프로세서, 신뢰성 있는 캐시 메모리 그리고 대용량 저장 메모리를 포함하는 전자 시스템의 데이터를 검증하는 방법에 관련되며, 이 경우에 상기 데이터는 대용량 저장 메모리에 저장되고, 그 메모리들은 블록들로 나누어지며, 각 블록은 주소에 의해서 식별되며, 데이터는 검증 트리를 경유하여 주소 지정되며, 상기 검증 트리는 노드들을 포함하는 트리 구조이며, 이 경우 강하 (descendent) 노드들이 루트 노드에 부착되며 그리고 이 경우 각 노드는 블록의 주소를 저장하며, 그 블록은 자신의 자녀 노드들 각각 그리고 각 블록의 다이제스트 값 (digest value)을 포함한다.
상기 방법은 다음의 단계들을 통해서 검색된 데이터에 액세스하는 것을 포함한다:
a) 루트 노드를 포함하는 블록의 레퍼런스 다이제스트 값에서 현재의 다이제스트 값을 초기화함으로써 상기 루트 노드에서 현재 노드를 초기화하는 단계,
b) 상기 현재 노드를 포함하는 블록을 신뢰성 있는 캐시 메모리에 로딩하는 단계,
c) 로딩된 블록의 다이제스트를 계산하는 단계,
d) 상기 계산된 다이제스트가 현재의 다이제스트 값과 다르면 데이터 훼손을 보고하고 그리고 상기 검색된 데이터에 액세스하는 것을 중단하는 단계,
e) 상기 현재 노드가 상기 검색된 데이터를 포함하면 상기 현재 노드를 돌려서 송신하고 그리고 상기 검색된 데이터에 액세스하는 단계를 중단시키는 단계,
f) 상기 데이터를 포함하는 서브-트리가 유도된 자녀 노드를 판별하는 단계,
g) 상기 현재 노드에 저장된 상기 자녀 노드의 다이제스트 값을 현재의 다이제스트로 부여하고, 상기 자녀 노드는 현재 노드가 되는 단계,
h) 로딩하는 단계 b)로 루프를 이루는 단계.
현재 노드를 초기화하는 단계 a) 이후에 상기 방법은, 신뢰성 있는 메모리 내에 위치한 블록이 상기 현재 노드를 포함하는가를 검증하는 것으로 구성되는 추가적인 단계, 로딩 단계 b), 다이제스트 계산 단계 c), 상기 블록이 상기 현재 노드를 포함하지 않을 때에 수행되는 다이제스트 검증 및 데이터 훼손 보고 단계 d)를 포함할 수 있을 것이다.
상기 초기화 단계는, 신뢰성 있는 캐시 메모리에 존재하는 블록으로부터 계산된 다이제스트의 값에서 현재의 다이제스트 값을 초기화하고 검색된 데이터를 포함하는 노드의 조상 (ancestor) 노드 N을 포함하여 현재의 노드를 노드 N으로 초기화하는 것으로 구성될 수 있을 것이다.
상기 초기화 단계는, 블록의 값이 신뢰성 있는 캐시 메모리에 존재할 때에 신뢰성 있는 캐시 메모리에서 발견된 다이제스트 값에서 상기 현재의 다이제스트 값을 초기화함으로써 현재 노드를 노드 N으로 초기화하는 것으로 구성될 수 있을 것이다.
유리하게도, 현재 노드의 블록 다이제스트 또는 블록은 신뢰성 있는 캐시 메모리에 저장될 때에, 현재 노드에서의 부모 노드의 블록 다이제스트 또는 블록 역시 상기 신뢰성 있는 캐시 메모리에 저장된다.
상기 방법은 다음의 단계들에서 블록을 수정 (MO)하는 것을 포함한다:
a) 대용량 저장 메모리에 위치한 블록에 액세스하고 그리고 그것을 신뢰성 있는 메모리에 전달하는 단계,
b) 블록의 내용을 수정하는 단계,
c) 블록의 수정된 내용의 다이제스트 값을 계산하는 단계,
d) 수정된 블록의 내용을 대용량 저장 메모리에 쓰는 단계,
e) 블록이 루트 노드를 포함하면, 상기 계산된 다이제스트 값을 신뢰성 있는 메모리에 상기 블록의 레퍼런스 다이제스트의 새로운 값으로서 저장하는 단계,
f) 블록이 상기 블록의 부모 노드를 포함하는 부모 블록에 루트 노드를 포함하지 않으면, 부모 블록의 다이제스트 값을 상기 계산된 다이제스트 값으로 교체하는 단계.
한 가지 대안에서, 상기 방법은 다음의 단계들에서 블록을 수정하는 것을 포함할 수 있을 것이다:
a) 대용량 저장 메모리 내에 위치한 블록의 내용을 읽고 그리고 그것의 무결성을 검증하지 않고 신뢰성 있는 메모리로 전달하는 단계,
b) 읽은 블록의 내용의 다이제스트 값을 계산하는 단계,
c) 블록의 내용을 수정하는 단계,
d) 상기 블록의 수정된 내용의 다이제스트 값을 계산하는 단계,
e) 상기 수정된 블록의 내용을, 블록의 이전의 내용에 겹쳐 쓰지 않으면서, 대용량 저장 메모리에 쓰는 단계,
f) 블록이 그 블록의 부모 노드를 포함하는 부모 블록에 루트 노드를 포함하지 않으면, 부모 블록의 다이제스트 값을 상기 계산된 다이제스트 값과 교체하는 단계,
g) 상기 블록이 상기 루트 노드를 포함하면, 블록의 초기 다이제스트가 루트 블록의 레퍼런스 다이제스트와 동일한가 그리고 교차된 각 다른 블록의 초기 다이제스트가 상기 블록의 부모 노드에서 발견된 다이제스트와 동일한가를 검증하며, 그리고 루트 블록의 상기 계산된 다이제스트 값을 신뢰성 있는 메모리에 상기 블록의 레퍼런스 다이제스트의 새로운 값으로서 저장하는 단계.
상기 다이제스트는 우발적인 훼손으로부터의 보호를 위한 체크 섬이거나 또는 인증된 또는 인증되지 않았다면 부당하게 변경되는 것으로부터 보호하기 위한 암호 다이제스트일 수 있다. 그 외에, 상기 대용량 저장 메모리는 다른 대용량 저장 메모리에 관한 캐시 메모리일 수 있다.
상기 방법은, 상기 대용량 저장 메모리로부터 신뢰성 있는 캐시 메모리로 전달되는 데이터를 해독하는 단계 그리고 신뢰성 있는 캐시 메모리로부터 대용량 저장 메모리로 전달되는 데이터를 암호화하는 단계를 포함할 수 있을 것이다.
상기 방법은 수정된 블록의 내용을 대용량 저장 메모리에 쓰는 시각 및 순서를 동적으로 결정하고 그리고 부모 노드 내의 다이제스트가 신뢰성 있는 캐시 메모리로부터 삭제되기 이전에 그 다이제스트를 업데이트하는 단계로 구성된, 신뢰성 있는 캐시 메모리를 클리어하는 단계를 포함한다.
두 번째 모습에서, 본 발명은 프로그램 코드 명령어들을 포함하는 컴퓨터 프로그램에 관련되며, 상기 프로그램이 프로그램 가능한 프로세서에 의해서 실행될 때에, 상기 프로그램 코드 명령어들은 프로그램 가능한 프로세서가 본 발명의 데이터 검증 방법의 단계들을 실행하도록 한다.
세 번째 모습에서, 본 발명은 신뢰성 있는 프로세서, 신뢰성 있는 캐시 메모리 그리고 대용량 저장 메모리를 포함하는 전자 시스템에 관련되며, 이 경우 상기 신뢰성 있는 프로세서 그리고 상기 신뢰성 있는 캐시 메모리는 신뢰성 있는 코어 내에 위치하며, 상기 대용량 저장 메모리는 안전하지 않은 환경 내에 위치하며, 상기 프로세서는 본 발명에 따른 데이터 검증 방법을 수행한다.
그러므로, 본 발명은, 작은 캐시 메모리, 특히 상기 검증 트리의 모든 구조를 포함하기에 충분하지 않은 캐시 메모리를 이용하면서도, 신뢰성 있는 또는 안전한 캐시 메모리에 저장된 검증 트리를 경유하여 주소가 정해진 저장 데이터에 효과적으로 액세스하는 것을 가능하게 한다. 본 발명은 시스템의 성능을 수용 가능한 레벨로 동시에 유지하면서도 그런 신뢰성 있는 캐시 메모리를 효율적으로 관리하는 것을 가능하게 한다. 본 발명은 대용량 저장 메모리에 저장된 데이터의 어떤 훼손도 탐지하며 그리고 신뢰성 있는 프로세서에 의해서 읽혀진 데이터가 이전에 저장되었던 것이 아니라면 특정 행동을 트리거하는 것을 가능하게 한다. 본 발명의 다른 이점들은 첨부된 설명에서 명확하게 될 것이다.
본 발명은 첨부된 도면들을 참조하는 아래의 한정하지 않는 설명을 읽으면 더 잘 이해될 것이다.
도 1은 전자 시스템을 개략적으로 도시한다.
도 2는 데이터를 조직하는 검증 트리를 개략적으로 도시한다.
도 3은 대용량 저장 메모리에서 검색된 데이터로의 액세스를 개략적으로 도시한다.
도 4는 대용량 저장 메모리 내의 블록의 수정을 개략적으로 도시한다.
도 5는 실시예의 대안의 모드에서 대용량 저장 메모리 내 검색된 데이터로의 액세스를 개략적으로 도시한다.
도 6은 도 5의 실시예 모드의 변형을 걔략적으로 도시한다.
도 7은 대용량 저장 메모리 내의 블록의 비정상적인 수정을 개략적으로 도시한다.
도 8은 대용량 저장 메모리 내의 블록의 인증된 다이제스트들을 이용하여 비정상적인 수정을 개략적으로 도시한다.
도 1은 전자 시스템을 개략적으로 도시한다.
도 2는 데이터를 조직하는 검증 트리를 개략적으로 도시한다.
도 3은 대용량 저장 메모리에서 검색된 데이터로의 액세스를 개략적으로 도시한다.
도 4는 대용량 저장 메모리 내의 블록의 수정을 개략적으로 도시한다.
도 5는 실시예의 대안의 모드에서 대용량 저장 메모리 내 검색된 데이터로의 액세스를 개략적으로 도시한다.
도 6은 도 5의 실시예 모드의 변형을 걔략적으로 도시한다.
도 7은 대용량 저장 메모리 내의 블록의 비정상적인 수정을 개략적으로 도시한다.
도 8은 대용량 저장 메모리 내의 블록의 인증된 다이제스트들을 이용하여 비정상적인 수정을 개략적으로 도시한다.
도 1은 신뢰성 있는 프로세서 (2), 신뢰성 있는 캐시 메모리 (3) 그리고 대용량 저장 메모리 (4)를 포함하는 전자 시스템 (1)을 나타낸다.
상기 신뢰성 있는 프로세서 (2) 그리고 신뢰성 있는 캐시 메모리 (3)는 신뢰성 있는 코어 (5)의 일부이다. 상기 신뢰성 있는 코어 내에 위치한 상기 프로세서와 상기 캐시 메모리는 고려되는 애플리케이션들을 위해서 충분할 정도로 믿음직하거나 또는 충분하게 방어되는 것으로 고려된다. 상기 신뢰성 있는 코어는 끼어 드는 것들로부터 물리적으로 보호되는, 예를 들면, 스마트 카드나 TPM 모듈 (Trusted Platform Module) 또는 제어되는 액세스를 구비한 장소에 위치한 컴퓨터와 같은 기기일 수 있다.
상기 대용량 저장 메모리 (4)는 상기 신뢰성 있는 코어 외부의 안전하지 않은 환경 (6)에 위치한다. 상기 대용량 저장 메모리 (4)는 B1, B2, Bn의 블록들로 나누어진다. 각 블록은 A1, A2, An의 주소에 의해서 식별된다. 상기 대용량 저장 메모리 (4)에 대한 상기 신뢰성 있는 프로세서 (2)에 의해서 수행된 기본적인 행동은 주어진 주소 블록 내에 포함된 데이터 D1, D2, Dn 을 읽고 그리고 주어진 주소 블록 내에 데이터를 쓰는 것이다.
상기 신뢰성 있는 캐시 메모리 (3)는 상기 신뢰성 있는 프로세서 (2)에 의한 상기 대용량 저장 메모리 (4)로의 액세스를 가속하기 위해서 사용된다. 상기 신뢰성 있는 캐시 메모리는 상기 대용량 저장 메모리에 비교하면 낮은 저장 용량을 구비하지만 액세스하기에는 아주 더 빠르다. 상기 신뢰성 있는 캐시 메모리 (3)의 크기는, 예를 들면, 몇 개의 블록들이다. 읽을 때에, 검색된 데이터의 조각이 상기 캐시 메모리 내에 존재하면, 상기 대용량 저장 메모리로의 시간을 소모하는 액세스가 피해진다. 또한, 상기 신뢰성 있는 캐시 메모리는 상기 대용량 저장 메모리와는 다르게 데이터 훼손의 위험에는 노출되지 않으며, 그 결과 상기 신뢰성 있는 캐시 메모리로부터 데이터를 읽는 것은 상기 대용량 저장 메모리로부터의 읽기와는 다르게 무결성에 대한 어떤 검증도 필요로 하지 않는다. 쓸 때에, 상기 캐시 메모리 내에 임시적으로 저장된 몇몇의 데이터는 하나의 캐시 클리닝 (cleaning) 동작일 때에 쓰여질 수 있을 것이며, 그래서 상기 대용량 저장 메모리로의 시간을 소모하는 여러 액세스들을 회피하도록 한다.
상기 대용량 저장 메모리 (4)는 데이터 훼손으로 이끄는 방해를 받기 쉬우며, 이는 기능 불량이나 외부 측들로부터의 고의적인 공격들 중의 어느 하나 때문이다. 데이터 훼손은 원래의 데이터를 랜덤 데이터 또는 외부 측에 의해서 선택된 데이터와 교체하는 결과로 이끈다. 예를 들면, 상기 대용량 저장 메모리 (4)는 하드 드라이브 또는 RAM 또는 EEPROM 유형의 메모리 또는 다른 쪽에 의해서 제어되는 원격 저장 공간과 같은 신뢰성 있는 코어를 포함하며 그리고 통신 네트워크를 통해서 상기 신뢰성 있는 코어에 의해서 액세스되는 컴퓨터 시스템의 주변 기기일 수 있을 것이다.
상기 데이터는 암호화될 수 있을 것이다. 그런 경우에, 상기 블록들은 상기 대용량 저장 메모리에 써지기 이전에 암호화되며 그리고 로딩된 이후에 해독된다. 비밀키는 상기 신뢰성 있는 코어에만 저장된다.
검증 트리 (VERIFICATION TREE )
상기 대용량 저장 메모리 (4)에 저장된 D1, D2, Dn의 데이터의 무결`성을 제어하기 위해서, 본 발명의 방법은 트리 구조, 예를 들면, 도 2에서 보이는 것과 같은 검증 트리 (10)에 따라서 상기 데이터를 조직한다. 상기 검증 트리 또는 인증 트리 또는 머클 트리 (Merkle tree)는 데이터 전체에 대한 검사를 필요로 하지 않으면서 데이터 조각의 일부에 대한 무결성을 검증하는 것을 허용하는 데이터 구조이다. 검증 트리의 원칙은 데이터의 각 조각을 블록들로 나누고, 그리고 각 블록의 다이제스트 (digest)를 계산하는 것으로 구성된다. 데이터 조각의 다이제스트는, 그 데이터가 요청되는 무결성의 레벨을 고려한 낮은 위험의 오류를 가진다는 특징을 나타내는 값이다. 그것은 데이터 그 자체로부터 계산된 체크 섬, 예를 들면, 패리티 또는 CRC (cyclic redundancy code) 일 수 있다. 상기 다이제스트는 암호의 유형일 수 있으며, 즉, 그것은 MD5 (Message Digest 5) 또는 SHA-1 (Secure Hash Algorithm 1)과 같은 암호화 해시 함수를 이용하는 상기 데이터의 이미지이다. 또한 상기 다이제스트는 인증된 다이제스트일 수 있으며, 즉, 비밀 요소를 고려하는 암호 다이제스트이며, 그 데이터에 추가로 그것은 체크 섬이다. 예를 들면, 인증된 다이제스트는 HMAC 유형 (keyed-hash message authentication code)일 수 있다. 그 인증된 다이제스트는 암호화 해싱 함수를 비밀 키와 결합하여 사용하여 계산된다. 각 블록의 다이제스트들을 계산한 이후에, 상기 다이제스트들은 새로운 데이터인 것으로 간주되며, 그리고 상기 트리 생성 프로세스는 고려된 마지막 데이터에 대해서 단 하나의 다이제스트가 획득될 때까지 되풀이된다. 연속적인 다이제스트들은 이런 식으로 하나의 검증 트리를 형성한다.
도 2에서, 상기 검증 트리 (10)의 각 노드 N1, Nl, N2 , N3 , ... N23 은 한 블록 내에 저장되며 그리고 그 노드를 포함하는 블록의 주소에 의해서 지시된다. 한 블록은 여러 노드들을 포함할 수 있을 것이며, 그 경우 한 노드에 대한 지시는 그 블록 내에 포함된 노드들 중에서 상기 노드를 식별하는 것을 가능하게 하는 추가의 표시를 포함한다. 루트 노드의 주소는 상기 신뢰성 있는 메모리 (3) 내에 유지된다. 어떤 노드 (예를 들면, N4 및 N5 노드들을 구비한 N2)의 자손 노드들 (예를 들면, N4 및 N5)의 주소는 이 노드에 저장된다.
어떤 블록의 무결성을, 그 블록 내의 데이터로부터 계산된 루트 다이제스트의 값이 레퍼런스 루트 다이제스트의 값과 동일하다는 것을 검증함으로써, 검증하는 것이 또한 가능하다.
검증 트리는 이용된 다이제스트의 유형에 의존하는 이점들, 예를 들면, 우발적인 훼손으로부터의 보호, 부당한 변경으로부터의 보호 그리고 인증을 제공한다. 상기 검증 트리는 상기 트리의 깊이 (depth)에 비례하는 양의 데이터를 프로세싱함으로써 블록의 무결성을 검증하는 것을 가능하게 한다. 어떤 블록이 변경되면, 상기 검증 트리는 상기 트리의 깊이에 비례하는 양의 데이트를 프로세싱함으로써 또한 업데이트될 수 있다.
상기 신뢰성 있는 프로세서 (2)는, 예를 들면, 컴퓨터 프로그램의 명령어들을 실행함으로써, 아래에서 설명될 데이터 검증 방법을 실행한다. 상기 방법은 검색된 데이터로의 액세스를 제공하며, 상기 검색된 데이터는 상기 대용량 저장 메모리 (4)에 저장된다. 상기 방법은 상기 데이터를 수정하고 그리고 그것을 상기 대용량 저장 메모리 (4)에 저장하는 것을 또한 가능하게 한다.
도 2에 도시된 것처럼, 상기 검증 트리는 노드들을 구비한 트리 구조이며, 그 경우에 자녀 노드들은 루트 노드에 부착된다. 각 노드 N에서, 각 자녀 노드 Nf에 대해, 상기 자녀 노드를 포함하는 블록의 주소 그리고 그 블록의 다이제스트가 저장된다. 상기 루트 노드 Nr을 포함하는 블록의 다이제스트의 레퍼런스 값 Eref는 상기 신뢰성 있는 메모리 (3) 내에 계속해서 유지된다. 상기 다이제스트는 우발적인 훼손으로부터의 보호를 위한 체크 섬 또는 부당하게 변경하는 것으로부터의 보호를 위한 암호 다이제스트일 수 있다.
블록이 상기 신뢰성 있는 메모리 내에 로딩될 때마다, 그 블록의 다이제스트는 유효한 것으로 알려진 다이제스트에 대비하여 검사되어야만 한다. 동일한 블록이 여러 번 연속하여 로딩되면, 그 블록의 다이제스트는 로딩될 때마다 검증되어야만 한다.
도 3은 대용량 저장 메모리 (4) 내에서 검색된 데이터 Dr 에 액세스하거나 또는 읽기 (A0) 위한 실시예의 모드를 개략적으로 도시한다. 첫 번째 단계 (S1)는 루트 노드 Br을 포함하는 블록의 레퍼런스 다이제스트 값 Eref에서 현재의 다이제스트 값 Ec를 초기화함으로써 루트 노드 Nr에서 NC 현재 노드를 초기화하는 것으로 구성된다. 두 번째 단계 S2는 상기 현재의 노드를 포함하는 블록 B{Nc}을 상기 신뢰성 있는 캐시 메모리 (3)에 로딩하는 것으로 구성된다. 세 번째 단계 S3는 로딩된 블록의 다이제스트 E[B{NC}]를 계산하는 것으로 구성된다. 네 번째 단계 S4는 상기 계산된 다이제스트 E[B{NC}]가 상기 현재의 다이제스트 값 Ec와 다른가의 여부를 검증하는 것으로 구성된다. 다섯 번째 단계 S5는 상기 값들이 상이할 때에 데이터 훼손을 보고하고 그리고 상기 검색된 데이터로의 액세스를 중단하는 것으로 구성된다. 여섯 번째 단계 S6는 현재의 노드 Nc가 상기 검색된 데이터 Dr를 포함하는가의 여부를 검증하는 것으로 구성된다. 일곱 번째 단계 S7는 상기 현재의 노드 Nc가 상기 검색된 데이터 Dr을 포함할 때에 상기 현재의 노드를 돌려 송신하고 (send back) 그리고 그 검색된 데이터로의 액세스를 중단하는 것으로 구성된다. 여덟 번째 단계 S8는, 상기 현재 노드 Nc가 상기 검색된 데이터 Dr을 포함하지 않을 때에, 상기 데이터를 포함하는 서브-트리가 유도된 자녀 노드 Nf를 판별하는 것으로 구성된다. 아홉 번째 단계 S9는 현재 노드에 저장된 상기 자녀 노드의 다이제스트 값 Ef를 상기 현재 다이제스트 Ec로 부여하고, 상기 자녀 노드 Nf는 상기 현재 노드 Nc가 되는 것으로 구성된다. 그러면, 상기 액세스 방법은 상기 두 번째 로딩 단계 S2로 루프가 연결된다.
설명되었던 상기 액세스 방법은 이와 같이 데이터 트리 구조를 검증 트리 구조와 결합한다. 이런 액세스 방법에서, 훼손된 데이터에 도달했을 때에, 상기 검색된 데이터를 포함하는 노드를 포함하는 블록이 훼손되면, 그런 훼손이 탐지되고 그리고 보고된다. 그런 보고는 예를 들면 컴퓨터 시스템의 사용자 또는 보호되는 데이터의 소유자에게 경고 메시지를 송신하고 그리고 상기 노드로의 액세스를 트리거했던 행동을 포기한 것에 의해서 반영될 수 있을 것이다. 다른 경우들에서, 상기 검색된 데이터가 발견될 때에, 그 데이터는 유효한 것이며 그리고 프로세서에 의해서 프로세싱된 것으로 간주될 수 있을 것이다. 또한, 이런 방법에서, 심지어는 다른 블록들이 훼손된 경우에도, 유효한 블록들 내에 있는 데이터를 프로세싱하는 것이 가능하다.
이전에 검색된 데이터 Dr이 상기 프로세서에 의해서 수정되면, 그 프로세스의 액세스 경로 상의 모든 모드들의 다이제스트들은 다시 계산되어야만 한다. 결과적으로, 상기 다이제스트들을 포함하는 블록들은 상기 대용량 저장 메모리에서 업데이트 되어야만 한다. 또한, 데이터가 추가되거나 삭제될 때에, 하나 또는 그 이상의 블록들이 수정되며, 이는 영향을 받는 노드들의 조상 노드들을 포함하는 블록들을 업데이트하는 것이 필요하게 만든다.
블록을 업데이트하는 것은 그 블록을 상기 신뢰성 있는 메모리 (3) 내에 로딩하고, 상기 신뢰성 있는 메모리 (3) 내의 내용 (content)을 수정하고 그리고 그 수정된 내용을 상기 대용량 저장 메모리 (4) 내에 쓰는 것을 포함한다.
도 4는 상기 대용량 저장 메모리 (4) 내 블록의 수정 MO의 개략적인 도시이다. 첫 번째 단계 S21은 상기 대용량 저장 메모리 (4) 내에 위치한 것을 수정하기 위해서 블록 B에 액세스하고 그리고 상기 블록 B의 내용을 상기 신뢰성 있는 메모리 (3)로 전달하는 것으로 구성된다. 두 번째 단계 S22는 상기 메모리 블록 B 내 사본의 내용을 수정하는 것으로 구성된다. 세 번째 단계 S23은 상기 블록의 수정된 내용의 다이제스트의 값 E[Bmod]을 계산하는 것으로 구성된다. 네 번째 단계 S24는 블록 Bmod의 내용을 상기 대용량 저장 메모리 (4)에 쓰는 것으로 구성된다. 다섯 번째 단계 S25는 상기 블록 Bmod가 루트 노드 Nr을 포함하는가의 여부를 검증하는 것으로 구성된다. 상기 블록이 루트 노드를 포함할 때에, 여섯 번째 단계 S26은 상기 신뢰성 있는 메모리 (3)에서 계산된 상기 다이제스트 값을 상기 블록의 새로운 레퍼런스 다이제스트 값 Eref[Br]=E[Bmod]로서 저장하는 것으로 구성된다. 상기 블록이 상기 루트 노드를 포함하지 않을 때에, 일곱 번째 단계 S27은 상기 블록의 부모 노드 B{Np}를 포함하는 부모 노드에서 상기 부모 블록의 다이제스트 값을 상기 계산된 다이제스트 값 E[B]=E[Bmod]으로 교체하는 것으로 구성된다. 상기 일곱 번째 단계 S27이 상기 부모 블록의 수정을 요청하기 때문에 상기 수정 방법은 재귀적이며, 이는 상기 수정 방법을 이용하여 특별하게 수행될 수 있다.
캐시 메모리 읽기
노드에 액세스하는 것은 상기 블록을 상기 대용량 저장 메모리로부터 상기 신뢰성 있는 메모리로 로딩하고 그리고 그 블록 다이제스트를 계산하는 것을 필요로 한다. 이런 두 동작들은 교차된 각 블록에 대해서 시간을 소비한다. 이는 우선 통상적인 대용량 저장 메모리들은 통상적인 프로세서들보다 매우 늦으며 그리고 두 번째로는 암호 다이제스트의 계산 시간이 상당히 길 수 있기 때문이다. 교차된 블록들의 개수에 관하여, 그것은 트리 내에 위치한 데이터의 깊이에 비례한다.
또한, 상기 신뢰성 있는 캐시 메모리 내의 데이터에 액세스하기 위해서 사용되는 중간 블록들의 내용을 저장하는 것이 큰 캐시 메모리를 필요로 할 것이기 때문에 그 저장하는 것은 가능하지 않거나 또는 바람직하지 않다.
도 5는 이용 가능한 신뢰성 있는 메모리의 크기가 데이터에 액세스하기 위해서 사용되는 모든 중간 블록들을 저장하기에 충분하지 않을 때에 상기 대용량 저장 메모리 (4) 내에서 검색된 데이터 Dr로의 액세스 A1을 위한 다른 모드의 실시예를 개략적으로 도시한다. 그 대안은 상기 신뢰성 있는 캐시 메모리를 효율적으로 관리하는 것을 가능하게 한다. 액세스 방법은 도 3을 참조하여 설명된 것과 대체로 동일하다. 그것은 현재 노드의 초기화 단계 S1 이후에 추가적인 단계 S11을 추가했다는 면에서 다르다. 추가적인 단계 S11은 상기 신뢰성 있는 메모리 (3) 내에 위치한 블록 B가 현재의 노드 Nc를 포함하는가를 검증하는 것으로 구성된다. 상기 블록 B가 현재의 노드 Nc를 포함할 때에, 현재의 노드를 돌려서 송신하고 그리고 검색된 데이터로의 액세스를 중단하는 것으로 구성된 상기 일곱 번째 단계 S7은 직접적으로 실행된다, 그렇지 않다면, 즉, 상기 블록 B가 현재의 노드 Nc를 포함하지 않을 때에, 로딩 S2, 다이제스트 계산 S3, 다이제스트 검증 S4, 데이터 훼손 보고 S5 및 블록 검증 S6의 단계들이 수행된다.
다른 대안 (도시되지 않음)에서, 상기 첫 번째 초기화 단계 S1은 검색된 데이터를 포함하는 노드 이전의 노드 N을 포함하는 신뢰성 있는 캐시 메모리에 존재하는 블록으로부터 계산된 다이제스트의 값에서 상기 현재의 다이제스트 값 Ec를 초기화함으로써 상기 노드 N에서 상기 현재의 노드 Nc를 초기화하는 것으로 구성될 수 있을 것이다.
또 다른 대안 (도시되지 않음)에서, 상기 첫 번째 초기화 단계 S1은, 상기 블록의 다이제스트 값이 상기 신뢰성 있는 캐시 메모리에 존재하는 블록에 존재할 때에 상기 신뢰성 있는 캐시 메모리에서 발견된 다이제스트 값에서 상기 현재의 다이제스트 값 Ec를 초기화함으로써 상기 조건을 만족시키는 노드 N에서 현재의 노드 Nc를 초기화하는 것으로 구성될 수 있을 것이다.
다이제스트 계산이 많은 프로세서 활용 시간을 소비하기 때문에, 블록 B의 내용 그리고 대응하는 다이제스트를 상기 신뢰성 있는 캐시 메모리 내에 보유하면 유리하다. 그것은 상기 블록 B의 다이제스트를 상기 신뢰성 있는 캐시 메모리로부터 읽고 그리고 그것을 다시 계산하지 않는 것을 가능하게 한다.
다이제트스의 크기가 블록의 크기보다 더 작기 때문에, 몇몇 블록들의 다이제스트만을 상기 신뢰성 있는 메모리 내에 보유하고 그 블록들의 내용은 보유하지 않는 것이 유리하다. 블록 B의 다이제스트의 캐시를 상기 신뢰성 있는 메모리 내에 가지고 있을 때에, 블록 B의 조상 (ancestor) 노드들을 포함하는 블록들의 다이제스트를 검증하는 것은 불필요하다. 도 6은 도 5의 실시예의 모드에 대한 변이 A2를 개략적으로 도시한다. 이 변이는 첫 번째 초기화 단계 S1이 여러 부가적인 단계들 S21, S22, S23, S24 그리고 S25로 대체되었다는 점에서 도 4의 실시예의 모드와 다르다. 첫 번째의 부가적인 단계 S21은 현재의 노드 Nc를 블록 B에 포함된 노드 Nn에서 초기화하고 그리고 현재의 다이제스트 값 Ec를 상기 신뢰성 있는 캐시 메모리 (3)에서 발견된 블록 B의 다이제스트 값 E[B]에서 초기화하는 것으로 구성된다. 두 번째의 추가적인 단계 S22는 블록 B를 상기 대용량 저장 메모리로부터 상기 신뢰성 있는 메모리로 로딩하는 것으로 구성된다. 세 번째의 추가적인 단계 S23은 상기 블록 B의 다이제스트 Ecalc를 계산하는 것으로 구성된다. 네 번째의 추가적인 단계 S24는 상기 계산된 다이제스트 값과 상기 현재의 다이제스트 값 Ec 사이에서의 부합 (match)을 검증하는 것으로 구성된다. 다섯 번째의 추가적인 단계 S25는 블록 B의 상기 계산된 다이제스트 값이 상기 현재의 다이제스트 값과 다를 때에 오류를 보고하고 그리고 상기 액세스 방법을 중단하는 것으로 구성된다. 블록 B의 상기 계산된 다이제스트 값이 상기 현재의 다이제스트 값과 동일하면, 그러면 도 5의 실시예의 모드의 방법은 추가적인 검증 단계 S11로부터 계속될 수 있을 것이다.
상기 다이제스트 캐시가 상기 검증 크리 내의 더욱 빠른 하향 경로, 즉, 발명의 첫 번째 모드에 따른 액세스와 비교하여 더욱 작은 횟수의 다이제스트 계산들을 허용하기 때문에, 방금 설명된 상기 변이는 유리하다. 어떤 블록으로의 본 발명의 첫 번째 모드에 따른 방법에 의한 액세스는 영향을 받는 블록으로의 액세스 경로 상의 각 중간 노드를 위한 하향 경로를 필요로 한다. 로딩된 블록들의 개수 그리고 다이제스트 계산들에서 측정된 복잡도는 수정된 노드의 깊이에 관하여 2차식이다. 중간 노드의 다이제스트가 상기 신뢰성 있는 캐시 메모리 내에 이미 존재할 때에, 새로운 하향 경로는 그 다이제스트에 대해서는 회피된다. 업데이트될 필요가 있는 노드로의 액세스에게는 이는 아주 유리하다.
유리하게도, 현재 노드의 블록이나 다이제스트 블록이 상기 신뢰성 있는 캐시 노드 메모리에 저장될 때에 그것을 제공하는 것이 가능하며, 그러면, 현재 노드에서 부모 노드의 블록이나 블록 다이제스트는 상기 신뢰성 있는 캐시 메모리에 또한 저장된다.
상기 조건들이 검증될 때에, 상기 캐시가 충분하게 크다면 블록을 업데이트하는 것이 선형의 시간으로 발생할 수 있을 것이다. (도 3에서) 설명된 실시예의 첫 번째 모드에 따라서 데이터에 액세스하기 위한 상기 방법은 상기 트리 내에서 영향을 받는 노드의 깊이에 비례하는 횟수의 로딩 동작들 및 다이제스트 값 계산들을 필요로 한다. 상기 업데이트하는 방법 (도 4)은 상기 캐시 메모리에 더 이상 존재하지 않는 블록들의 다이제스트 값을 로딩하고 계산하는 것을 필요로 할 뿐이다. 모든 블록들이 상기 캐시 메모리에 존재하면, 어떤 새로운 로딩도 필요하지 않다. 모든 다이제스트 값들이 여전히 캐시 메모리에 존재하면, 각 블록은, 그 블록의 자손 (descendant) 블록들의 다이제스트 값들을 검증하는 것이 필요하지 않기 때문에, 단지 한번만 로딩되어야만 한다.
이런 조건을 충족하는 것은 상기 캐시 메모리의 내용을 삭제하는 메커니즘에 관한 요구를 부과한다. 이는 상기 삭제 메커니즘이 다음의 것들을 제공하기 때문이다:
- 상기 캐시 메모리로부터 하나의 블록이 삭제될 때에, 필요하다면 그 블록의 다이제스트 값을 먼저 계산해야만 하며 그리고 그것을 캐시 메모리에 유지해야만 한다. 그리고
- 블록의 다이제스트 값이 상기 캐시로부터 삭제될 때에, 그 블록에 포함된 노드들로부터 유도된 서브-트리들의 모든 블록들 그리고 모든 다이제스트 값들 또한 삭제되어야만 한다.
캐시 메모리에 쓰기
블록들이 수정될 때에, 수정된 블록들이 상기 대용량 저장 메모리에 즉각적으로 쓰여지지 않는다는 것이 가능하다. 그 경우에, 수정된 그 블록들은 상기 대용량 저장 메모리 내에 연속하여 쓰기 위해서 상기 신뢰성 있는 캐시 메모리에서 유지된다. 아래에서 설명될 본 발명의 실시예의 모드는 쓰기를 위해서 사용된 캐시 메모리와 이전에 설명된 읽기를 위해서 사용된 캐시 메모리를 조합한 것에 관련된다.
상기 검증 트리 구조의 일부인 블록이 수정되었을 때에, 이런 수정들을 고려하기 위해서 두 개의 동작들이 수행되어야만 한다. 우선, 상기 블록의 내용이 상기 대용량 저장 메모리에 써져야 한다. 두 번째로, 상기 부모 노드 내의 다이제스트가 업데이트 되어야하며, 이는 상기 부모 노드를 포함하는 블록을 수정하는 것을 구성한다. 이런 두 동작들 각각은 연기될 수 있을 것이다. 상기 두 동작들은 반드시 동시에 수행될 필요는 없다.
유리하게도, 이런 두 개의 연기된 동작들의 시간과 순서는 동적으로 결정되며, 이는 프로세서에 의한 상이한 동작들의 실행 동안에 사례별로 정해진다. 첫 번째 예에서, 상기 부모 노드가 어떤 이유에서 수정되자마자 상기 다이제스트는 업데이트될 수 있을 것이지만, 캐시 메모리 공간에 대한 필요가 상기 블록에 할당된 캐시 메모리의 일부를 검색하는 것이 필요하도록 만들 때에 상기 블록이 써질 뿐이다. 두 번째 예에서, 상기 부모 노드가 업데이트 되기 이전에 캐시 메모리 공간에 대한 필요가 느껴지면, 상기 블록에 할당된 상기 캐시 메모리가 인출될 때의 시각 이전에 상기 블록 다이제스트는 계산되어 상기 캐시 메모리 내에서 유지된다.
과감한 캐시 메모리 (AUDACIOUS CACHE MEMORY)
본 발명의 실시예의 다른 모드는 상기 대용량 저장 메모리에 저장된 데이터를 소위 과감하게 읽거나 또는 그 데이터에 과감하게 액세스하는 것으로 구성된다. 데이터에 대한 과감한 (audacious) 액세스는 읽혀진 데이터가 훼손되지 않았다는 것을 확인하지 않는 방식으로 노드를 읽는 것으로 구성된다. 데이터에 관하여 그리고 상기 데이터에 종속적인 행동에 관하여 [훼손이 나중에 탐지된다면 상기 행동이 가역적이라면] 계산들이 수행될 수 있을 것이다. 어떤 훼손도 탐지되지 않는다면 상기 계산의 결과를 유지하는가의 여부 또는 훼손이 탐지되면 착수된 행동을 취소하는가의 여부를 결정하기 위해서 이어지는 검증이 수행되다. 그와 같은 분리가 불필요한 계산들을 수행하는 결과가 될 수 있을지라도, 혼란이 충분하게 드문 한은 즉, 그 혼란이 주어진 한계 밑이면, 또한 그 혼란이 서드 파티에 의해서 초래된 고의적인 공격들로 인한 것이라면 효율상의 이득은 유리하다
데이터로의 과감한 액세스의 한가지 방법은 상기에서 설명된 실시예 모드들에 따른 액세스 방법을 다이제스트 값들을 계산하고 검증하는 것을 수행하지 않고 실행하는 것으로 구성된다. 이런 계산들 및 검증들은 검증을 구비하는 그룹 액세스들로 구성된 그룹화된 검증 단계로 대체된다. 예를 들면, 상기 검증 단계는 복잡한 트랜잭션의 끝 부분에서 실행될 수 있을 것이다. 그것은 여러 데이터가 서브-트리 내에서 읽혀질 때에 그 서브-트리로의 동일한 액세스 경로를 여러 차례 검증하는 것을 피하는 것을 가능하게 한다.
도 7은 상기 대용량 저장 메모리 (4) 내의 노드 Nn 으로부터 유도된 서브-트리에서 블록 B의 과감한 수정 MA0을 개략적으로 도시한다. 이 모드의 실시예에서, 상기 과감한 수정은 상기 저장 메모리 내에서 검증되지 않은 데이터의 과감한 쓰기 그리고 오래된 다이제스트들에 대한 연속적인 검증을 포함한다. 첫 번째 단계 S31은 상기 대용량 저장 메모리 (4) 내에 위치한 블록 B를 과감하게 액세스하고 그리고 상기 블록 B를 상기 신뢰성 있는 메모리 (3)로 전달하는 것으로 구성된다. 두 번째 단계 S32는 상기 블록 B가 읽혀질 때에 상기 블록 B의 다이제스트 E를 계산하는 것으로 구성된다. 세 번째 단계 S33은 블록 B의 내용을 수정하는 것으로 구성된다. 네 번째 단계 S34는 상기 블록의 수정된 내용의 다이제스트 값 E[Bmod]를 계산하는 것으로 구성된다. 다섯 번째 단계 S35는 상기 블록 B의 오래된 내용을 또한 유지하면서, 상기 블록의 내용 Bmod를 상기 대용량 저장 메모리 (4)로 쓰는 것으로 구성된다. 여섯 번째 단계 S36은 상기 블록 B가 노드 Nn을 포함하는가의 여부를 검증하는 것으로 구성된다. 상기 블록 B가 상기 노드 Nn을 포함하면, 과감한 수정이 완료된다. 그렇지 않다면, 상기 방법은 일곱 번째 단계 S37로 계속되어, 상기 과감한 수정은 상기 노드 Nn을 포함하는 블록의 이전의 다이제스트 E[B]를 상기 노드 Nn의 부모 노드 내 상기 노드 Nn을 포함하는 블록의 새로운 다이제스트 E [Bmod]과 교체하는 것으로 구성된다.
상기 과감한 액세스들 중의 하나가 훼손된 데이터로 읽혀지면 과감한 수정은 상기 대용량 저장 매체 상에 오류의 데이터를 쓸 수 있을 것이다. 그래서 이어되는 검증 동작 S38이 계속되는 것이 유리하며, 상기 검증 동작 S38은, 예를 들면, 첫 번째 모드의 실시예에서, 검증된 액세스에 의해서 수정된 노드들의 모든 다이제스트들을 검증하는 것으로 구성된다. 그런 검증이 훼손을 탐지하면 (S43), 이런 방식으로 과감하게 수정된 모든 블록들은 거절된다. 그런 검증 S38이 훼손을 탐지하지 않으면, 루트 노드의 새로운 다이제스트는 레퍼런스 다이제스트가 된다 Eref[Br] = E[Bmod] (S44).
유리하게도, 도 7에 관련하여 설명된 상기 과감한 수정은 인증된 다이제스트들과 함께 사용되기 위해 수정될 수 있을 것이다. 노드로부터 유도된 서브-트리 내의 다이제스트들의 일관성을 검증하는 것과 결합된 그 노드의 다이제스트 인증은 상기 서브-트리 내에서 읽힌 데이터의 확실성을 보장하기에 충분하다. 노드의 다이제스트에 대한 인증은 상기 노드가 정말로 정당한 기원 (origin)을 가지며 그리고 서드 파티에 의해서 생성된 것이 아니라는 것을 보장하며, 상기 서브-트리 내의 다이제스트들의 일관성을 검증하는 것는 상기 서드 파티가 상기 존재하는 노드들을 재배치하지 않았거나 또는 상기 트리의 적어도 하나의 더 오래된 버전으로부터의 노드들과 결합하지 않았다는 것을 보장한다. 도 8은 인증된 다이제스트들을 구비한 과감한 수정 MA1을 도시한다. 도 8의 상기 과감한 수정 방법은 그것이 다음의 추가적인 단계들을 포함한다는 점에서 도 7의 방법과 다르다.
하나의 추가적인 첫 번째 단계 S39는, 블록 B가 노드 Nn을 포함할 때에, 블록 B로의 검증된 액세스 VERIF를 수행하고 그리고 과감하게 읽혀진 수정되지 않은 내용을 상기 검증된 내용과 비교하는 것으로 구성된다. 어떤 훼손도 탐지되지 않으면, 상기 수정된 블록들의 이전 내용은 삭제될 수 있을 것이다.
두 번째 추가적인 단계 S40은 B에 대한 다이제스트의 이전 값이 다이제스트 값 E와 동일한가의 여부를 검증하는 것으로 구성된다. 동일하지 않다면, 그것은 과감하게 읽혀진 블록 B의 내용이 훼손되었다는 것을 의미하며, 그러면 그런 훼손은 단계 S42에서 보고된다.
세 번째의 추가적인 단계 S41은, B에 대한 다이제스트의 이전 값이 상기 다이제스트 값과 동일할 때에, 부모 블록의 다이제스트 값을, 블록 B{Np}의 부모 노드를 포함하는 부모 블록에서 상기 계산된 다이제스트 값 E[B] =E[Bmod]로 대체하는 것으로 구성된다.
2-레벨 캐시 메모리 구조 (TWO-LEVEL CACHE MEMORY STRUCTURE)
상기에서 설명된 방법들을 이용하는 전자 시스템들은 두 가지 메모리들 - 하나는 제한된 크기의 신뢰성 있는 캐시 메모리 그리고 붕괴되기 쉬운 더 큰 메모리를 포함할 수 있을 것이다. 이는 예를 들면 L1 유형의 신뢰성 있는 캐시 메모리 그리고 L2 유형의 안전하지 않은 캐시 메모리를 구비한 프로세서일 수 있다. 그런 구성은 캐시 메모리 L1 그리고 프로세서가 동일한 칩을 공유하고 그리고 L2 유형의 캐시 메모리는 감시되거나 교체될 수 있을 다른 칩 상에 존재할 때에 특히 잘 보인다.
그런 구성에서, 상기 안전하지 않은 캐시 메모리는 상기 대용량 저장 메모리에 대한 캐시 메모리로서 또한 사용될 수 있을 것이다. 다이제스트들의 상기 동작들, 계산들 그리고 검증들은 상기 신뢰성 있는 캐시 메모리에서의 로딩과 관련하여 상기 대용량 저장 메모리로부터 직접적으로 또는 상기 안전하지 않은 캐시 메모리를 통해서 항상 수행된다. 상기에서 설명되었던 데이터 액세스 및 수정을 위한 방법들은 이런 2-레벨 캐시 메모리 구조에 적용 가능하다.
휘발성 (VOLATILITY)
본 발명의 실시예의 모드에서, 상기 대용량 저장 메모리는 데이터를 정해지지 않은 값으로 유지하며, 반면에 상기 신뢰성 있는 캐시 메모리는 휘발성 메모리이며, 즉, 이 경우 신뢰성 있는 코어로의 전력 공급이 차단되면 그 내용은 손실된다.
상기에서 설명된 방법들은 루트 노드의 다이제스트의 레퍼런스 값을 이용한다. 유리하게도, 휘발성 메모리의 내용 손실 이후에 데이터 인증을 보장하기 위해서, 신뢰성 있는 프로세서는 비-휘발성의 신뢰성 있는 메모리, 예를 들면, 읽기-전용 메모리 또는 PROM (Programmable Read-Only Memory) 또는 EEPROM (Electrically Erasable Programmable Read-Only Memory)에서 보존되는 비밀키를 가진다. 그 메모리는 상기 비밀키의 기밀성을 또한 보장해야만 하며, 즉, 상기 키는 상기 신뢰성 있는 코어에 의해서만 읽혀질 수 있다. 데이터가 루트 블록에 매번 쓰여질 때마다, 상기 프로세서는 상기 루트 블록의 다이제스트 값의 또는 상기 루트 블록의 암호 서명을 상기 대용량 저장 메모리 내에 또한 쓴다. 휘발성의 신뢰성 있는 캐시 메모리의 내용 손실 이후에 상기 프로세서를 초기화하며, 상기 프로세스는 상기 암호 서명을 읽고 그리고 그것의 무결성을 검증하고, 그것이 올바르지 않다면 오류를 보고한다.
비-휘발성의 재기록 가능한 신뢰성 있는 메모리에 존재하는 암호 서명 덕분에, 상기 프로세서는 자체적으로 생산된 루트 노드의 다이제스트 값만을 받아들일 수 있으며 그리고 훼손, 특히 상기 대용량 저장 메모리의 내용의 과거의 버전을 재생함으로써 시도된 공격을 탐지하고 시그날링할 수 있다. 그런 방식에서, 검증 트리 구조는 저장된 데이터의 일관성을 보장하며, 반면에 루트 노드의 다이제스트 값의 암호 서명은 상기 데이터가 정말로 동일한 신뢰성 있는 프로세서에 의해 더 이전에 쓰여졌던 것들이라는 것을 보장한다.
그러나, 동일한 신뢰성 있는 프로세서에 의해서 더 이전에 쓰여졌던 데이터는 상기 대용량 저장 메모리에 쓰여진 최신의 버전이 아닐 수 있다. 그런 상황에서, 모든 예전의 버전들은 유효한 서명을 구비한다.
유리하게도, 저장된 데이터의 더 오래된 버전들은 새로운 버전을 쓸 때에 삭제된다. 그러나, 상기 대용량 저장 메모리가 나중에 복원하기 위해서 버전을 저장하는 공격자의 직접적인 제어 하에 있다면, 그것은 충분하지 않다.
상기 신뢰성 있는 프로세서가 영구적인 신뢰성 있는 메모리를 구비한다면 더 오래된 버전을 재생하는 것이 회피될 수 있으며, 이는 전력을 스위치 오프하는 것에 견딜 수 있으며 또는 전력 공급을 독립적으로 백업하는 것을 구비하는 것이다. 그 영구적인 신뢰성 있는 메모리는 상기 신뢰성 있는 프로세서를 초기화하는 동안에 받아들여진 루트 블록의 서명이나 다이제스트 값들을 제한하기 위해서 여러 방식들로 사용될 수 있을 것이다.
한가지 첫 번째 변형은 상기 영구적인 신뢰성 있는 메모리에 루트 블록의 서명이나 다이제스트를, 상기 루트 블록 내에서 데이터를 매번 새롭게 쓸 때마다 저장하는 것으로 구성된다. 초기화 동안에, 상기 루트 블록의 다이제스트 또는 서명은 상기 대용량 저장 메모리로부터 거꾸로 읽혀진다. 그 값이 상기 영구적인 신뢰성 있는 메모리에 저장된 값과 동일하다면, 상기 초기화 실행이 계속된다. 그 값이 상기 영구적인 신뢰성 있는 메모리에 저장된 값과 동일하지 않다면, 대용량 저장 메모리 훼손 오류가 보고된다.
두 번째 변형은 받아들여질 수 있는 루트 블록 다이제스트 또는 서명으로서 판단된 여러 가지의 버전들을 저장하는 것으로 구성된다. 유리하게도, 상기 다이제스트 또는 서명의 새로운 값은 새로운 루트 블록을 상기 대용량 저장 메모리에 쓰기 이전에 상기 영구적인 메모리에 저장되며, 그렇다면 대용량 저장 메모리에 새로운 루트 블록을 쓰는 것이 일단 확인되면 상기 다이제스트나 서명의 이전의 값은 삭제된다. 이런 방식에서, 쓰기 프로세스 동안에 전력 고장이 존재한다면, 오래된 버전과 새로운 버전 둘 모두는 유효한 것으로 간주된다.
세 번째 변이는 영구적인 임의적 메모리가 아니라 증가하는 카운터만을 가진 신뢰성 있는 코어를 구비한 전자 시스템들에 관련된다. 증가하는 카운터는 메모리이며, 그 메모리 내에서 오직 가능한 수정은 저장된 값에 유닛을 추가하는 것이다. 이런 경우에, 상기 카운터의 값은 버전 번호로서 사용된다. 그 버전 번호 또는 상기 버전 번호로부터 추론된 데이터는 그것이 상기 대용량 저장 메모리로 매번 쓰여지기 이전에 상기 루트 블록으로 복제된다. 또한, 상기 대용량 저장 메모리 내의 루트 블록의 새로운 버전의 두 개의 연속적인 쓰기 동작들 사이에서, 상기 메모리 카운터는 하나의 유닛을 증가시킴으로에 의해서 수정된다. 이런 방식에서, 각 루트 블록 쓰기 동작은 상이한 버전 번호를 가진다. 상기 신뢰성 있는 코어를 초기화하면서, 마지막 쓰기 동작 동안에 전력 차단이 있다면 쓰여진 마지막 하나의 값 또는 마지막으로 쓰여진 값을 포함하는 단 하나의 루트 블록만이 받아들여진다. 결정적인 (critical) 것으로 판단된 루트 블록에 대한 수정들이 실행될 때에, 상기 버전 번호를 수정하는 것만이 또한 가능하다. 예를 들면, 결정적인 데이터를 수정하는 것의 결과를 가져오는 수정들만이 고려될 수 있을 것이다.
Claims (13)
- 신뢰성 있는 프로세서 (2), 신뢰성 있는 캐시 메모리 (3) 그리고 대용량 저장 메모리 (4)를 포함하는 전자 시스템 (1)의 데이터를 검증하는 방법으로서,
데이터는 대용량 저장 메모리 (4)에 저장되고, 메모리들은 블록들로 나누어지며, 각 블록은 주소에 의해서 식별되며, 데이터는 검증 트리를 경유하여 주소 지정되며,
검증 트리는 노드들을 포함하는 트리 구조이며, 이 경우 강하 (descendent) 노드들이 루트 노드에 부착되며 그리고 각 노드는 블록의 주소를 저장하며, 블록은 자신의 자녀 노드들 각각 그리고 각 블록의 다이제스트 값 (digest value)을 포함하며,
상기 방법은 다음의 단계들을 통해서 검색된 데이터 (Dr)에 액세스 (A0 또는 A1)하는 것을 포함하며, 상기 다음의 단계들은,
a) 루트 노드를 포함하는 블록의 레퍼런스 다이제스트 값 (Eref)에서 현재의 다이제스트 값 (Ec)을 초기화함으로써 루트 노드에서 현재 노드를 초기화하는 단계 (S1),
b) 현재 노드 (Nc)를 포함하는 블록 (B)을 신뢰성 있는 캐시 메모리 (3)에 로딩하는 단계 (S2),
c) 로딩된 블록의 다이제스트 값(E)을 계산하는 단계 (S3),
d) 계산된 다이제스트 값이 현재의 다이제스트 값과 다르면 데이터 훼손을 보고하고 그리고 검색된 데이터에 액세스하는 것을 중단하는 단계 (S4, S5),
e) 현재 노드 (Nc)가 검색된 데이터 (Dr)를 포함하면 현재 노드를 반송하고 그리고 검색된 데이터에 액세스하는 단계를 중단시키는 단계 (S6, S7),
f) 자녀 노드 (Nf)를 판별하는 단계 (S8) - 상기 자녀 노드에 포함된 주소들을 이용하여 상기 데이터를 포함하는 서브-트리가 상기 자녀 노드로부터 유도됨,
g) 현재 노드 (Nc)에 저장된 자녀 노드 (Nf)의 다이제스트 값 (Ef)을 현재의 다이제스트 값(Ec)으로 부여하고, 자녀 노드 (Nf)는 현재 노드 (Nc)가 되는 단계 (S9),
h) 로딩하는 단계 b) (S2)로 루프를 이루는 단계인, 데이터 검증 방법. - 제1항에 있어서,
현재 노드를 초기화하는 단계 a) (S1) 이후에 상기 방법은,
신뢰성 있는 메모리 내에 위치한 블록이 상기 현재 노드를 포함하는가를 검증하는 것으로 구성되는 추가적인 단계 (S11), 로딩 단계 b) (S2), 다이제스트 계산 단계 c) (S3), 상기 블록이 상기 현재 노드를 포함하지 않을 때에 수행되는 다이제스트 검증 (S4) 및 데이터 훼손 단계 d) (S4, S5)를 포함하는, 데이터 검증 방법. - 제1항 또는 제2항에 있어서, 상기 초기화 단계는,
신뢰성 있는 캐시 메모리에 존재하는 블록으로부터 계산된 다이제스트의 값에서 현재의 다이제스트 값을 초기화하고 검색된 데이터를 포함하는 노드의 조상 (ancestor) 노드 N을 포함하여 현재의 노드를 노드 N으로 초기화하는 것으로 구성되는, 데이터 검증 방법. - 제1항 또는 제2항에 있어서, 상기 초기화 단계는,
블록의 값이 신뢰성 있는 캐시 메모리에 존재할 때에 신뢰성 있는 캐시 메모리에서 발견된 다이제스트 값에서 상기 현재의 다이제스트 값을 초기화함으로써 현재 노드를 노드 N으로 초기화하는 것으로 구성된, 데이터 검증 방법. - 제1항에 있어서,
현재 노드의 블록 또는 블록 다이제스트 값이 신뢰성 있는 캐시 메모리에 저장될 때에, 현재 노드에서의 부모 노드의 블록 또는 블록 다이제스트 값 또한 상기 신뢰성 있는 캐시 메모리에 저장되는, 데이터 검증 방법. - 제1항에 있어서,
상기 방법은:
a) 대용량 저장 메모리 (4)에 위치한 블록 (B)에 액세스하고 그리고 그것을 신뢰성 있는 메모리 (3)에 전달하는 단계 (S21),
b) 블록의 내용 (Bmod)을 수정하는 단계 (S22),
c) 블록의 수정된 내용의 다이제스트 값 (E[Bmod])을 계산하는 단계 (S23),
d) 수정된 블록의 내용을 대용량 저장 메모리 (4)에 쓰는 단계 (S24),
e) 블록이 루트 노드를 포함하면 (S25), 상기 계산된 다이제스트 값 (E[Bmod])을 신뢰성 있는 메모리 (3)에 상기 블록의 레퍼런스 다이제스트의 새로운 값 (Eref[Br])으로서 저장하는 단계 (S26),
f) 블록이 상기 블록의 부모 노드를 포함하는 부모 블록에 루트 노드를 포함하지 않으면 (S25), 부모 블록의 다이제스트 값 (E[B])을 상기 계산된 다이제스트 값 (E[Bmod])으로 교체하는 단계 (S27),
에서 블록을 수정 (MO)하는 것을 포함하는, 데이터 검증 방법. - 신뢰성 있는 프로세서 (2), 신뢰성 있는 캐시 메모리 (3) 그리고 대용량 저장 메모리 (4)를 포함하는 전자 시스템 (1)의 데이터를 검증하는 방법으로서,
데이터는 대용량 저장 메모리 (4)에 저장되고, 메모리들은 블록들로 나누어지며, 각 블록은 주소에 의해서 식별되며, 데이터는 검증 트리를 경유하여 주소 지정되며,
검증 트리는 노드들을 포함하는 트리 구조이며, 이 경우 강하 (descendent) 노드들이 루트 노드에 부착되며 그리고 각 노드는 블록의 주소를 저장하며, 블록은 자신의 자녀 노드들 각각 그리고 각 블록의 다이제스트 값 (digest value)을 포함하며,
상기 방법은:
a) 대용량 저장 메모리 (4) 내에 위치한 블록 (B)의 내용을 읽고 그리고 그것의 무결성을 검증하지 않고 신뢰성 있는 메모리 (3)로 전달하는 단계 (S31),
b) 읽은 블록의 내용의 다이제스트 값 (E[B])을 계산하는 단계 (S32),
c) 블록의 내용 (Bmod)을 수정하는 단계 (S33),
d) 상기 블록의 수정된 내용의 다이제스트 값 (E[Bmod])을 계산하는 단계 (S34),
e) 상기 수정된 블록의 내용 (Bmod)을, 블록 (B)의 이전의 내용에 겹쳐 쓰지 않으면서, 대용량 저장 메모리 (4)에 쓰는 단계 (S35),
f) 블록이 그 블록의 부모 노드를 포함하는 부모 블록에 루트 노드를 포함하지 않으면 (S36), 부모 블록의 다이제스트 값 (E[B])을 상기 계산된 다이제스트 값 (E[Bmod])과 교체하는 단계 (S37),
g) 상기 블록이 상기 루트 노드를 포함하면 (S36), 블록의 초기 다이제스트 값 (E[B])이 루트 블록의 레퍼런스 다이제스트 값 (Eref[Br])과 동일한가 그리고 교차된 각 다른 블록의 초기 다이제스트 값이 상기 블록의 부모 노드에서 발견된 다이제스트 값과 동일한가를 검증하며 (S38), 그리고 루트 블록의 상기 계산된 다이제스트 값 (E[Bmod])을 신뢰성 있는 메모리 (3)에 상기 블록의 레퍼런스 다이제스트의 새로운 값 (Eref[Br])으로서 저장하는 단계 (S44),
에서 블록을 수정하는 것(MA0)을 포함하는, 데이터 검증 방법. - 제1항 또는 제7항에 있어서,
상기 다이제스트 값은 우발적인 훼손으로부터의 보호를 위한 체크 섬이거나 또는 인증된 또는 인증되지 않았다면 부당하게 변경되는 것으로부터 보호하기 위한 암호 다이제스트 값인, 데이터 검증 방법. - 삭제
- 제1항 또는 제7항에 있어서,
대용량 저장 메모리 (4)는 다른 대용량 저장 메모리에 관한 캐시 메모리인, 데이터 검증 방법. - 삭제
- 프로그램 코드 명령어들을 포함하는 컴퓨터 프로그램을 기록한 컴퓨터 판독가능 기록매체로서,
상기 프로그램이 프로그램 가능한 프로세서 (4)에 의해서 실행될 때에, 상기 프로그램 코드 명령어들은 프로그램 가능한 프로세서 (4)가 제1항 또는 제7항에 따른 데이터 검증 방법의 단계들을 실행하도록 하는, 컴퓨터 판독가능 기록매체. - 신뢰성 있는 프로세서 (2), 신뢰성 있는 캐시 메모리 (3) 그리고 대용량 저장 메모리 (4)를 포함하는 전자 시스템 (1)으로서,
신뢰성 있는 프로세서 (2) 그리고 신뢰성 있는 캐시 메모리 (3)는 신뢰성 있는 코어 (5) 내에 위치하며,
대용량 저장 메모리 (4)는 안전하지 않은 환경 (6) 내에 위치하며,
프로세서는 제1항 또는 제7항에 따른 데이터 검증 방법을 수행하는, 전자 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0903135 | 2009-06-26 | ||
FR0903135 | 2009-06-26 | ||
PCT/EP2010/003744 WO2010149333A1 (en) | 2009-06-26 | 2010-06-22 | Data verification method |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120116898A KR20120116898A (ko) | 2012-10-23 |
KR101723001B1 true KR101723001B1 (ko) | 2017-04-04 |
Family
ID=41479079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127001735A KR101723001B1 (ko) | 2009-06-26 | 2010-06-22 | 데이터 검증 방법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8719580B2 (ko) |
EP (1) | EP2446388B8 (ko) |
JP (1) | JP5749257B2 (ko) |
KR (1) | KR101723001B1 (ko) |
CN (1) | CN102483781B (ko) |
WO (1) | WO2010149333A1 (ko) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8538938B2 (en) * | 2010-12-02 | 2013-09-17 | At&T Intellectual Property I, L.P. | Interactive proof to validate outsourced data stream processing |
CN102662871B (zh) * | 2012-03-29 | 2016-05-11 | 山东超越数控电子有限公司 | 一种基于可信密码模块的虚拟磁盘完整性保护***及方法 |
CN104737195A (zh) | 2012-08-15 | 2015-06-24 | 惠普发展公司,有限责任合伙企业 | 具有密钥旋转信息的元数据树 |
CN103001772A (zh) * | 2012-11-27 | 2013-03-27 | 江苏乐买到网络科技有限公司 | 数据安全保护终端 |
CN102930185B (zh) * | 2012-11-28 | 2015-07-29 | 中国人民解放军国防科学技术大学 | 运行时程序安全关键数据的完整性验证方法及装置 |
CN103941719B (zh) * | 2014-03-21 | 2017-03-15 | 上海富欣智能交通控制有限公司 | 安全关键数据的反向验证方法 |
ES2647115T3 (es) * | 2014-06-12 | 2017-12-19 | Nagravision S.A. | Sistema y método para la carga de datos segura en una memoria caché |
JP6584823B2 (ja) | 2014-06-20 | 2019-10-02 | 株式会社東芝 | メモリ管理装置、プログラム、及び方法 |
JP6162652B2 (ja) | 2014-06-20 | 2017-07-12 | 株式会社東芝 | メモリ管理装置、プログラム、及び方法 |
JP6181004B2 (ja) | 2014-06-20 | 2017-08-16 | 株式会社東芝 | メモリ管理装置、プログラム、及び方法 |
US10193696B2 (en) * | 2015-06-02 | 2019-01-29 | ALTR Solutions, Inc. | Using a tree structure to segment and distribute records across one or more decentralized, acylic graphs of cryptographic hash pointers |
KR101735708B1 (ko) | 2016-02-02 | 2017-05-15 | 주식회사 코인플러그 | 파일에 대한 노터리 서비스를 제공하고 상기 노터리 서비스를 사용하여 기록된 파일에 대한 검증을 수행하는 방법 및 서버 |
KR101772554B1 (ko) * | 2016-02-02 | 2017-08-30 | 주식회사 코인플러그 | 파일에 대한 노터리 서비스를 제공하고 상기 노터리 서비스를 사용하여 기록된 파일에 대한 검증을 수행하는 방법 및 서버 |
WO2017162904A1 (en) * | 2016-03-23 | 2017-09-28 | Nokia Technologies Oy | Management of cryptographic transactions |
US10536275B2 (en) * | 2017-05-10 | 2020-01-14 | Microsoft Technology Licensing, Llc | Verification of downloaded subsets of content |
WO2019149360A1 (de) * | 2018-01-31 | 2019-08-08 | 4Top Gmbh | Verfahren zur generierung metadaten-freier bäume |
EP3759865B1 (en) * | 2018-02-27 | 2024-04-03 | Visa International Service Association | High-throughput data integrity via trusted computing |
US10922439B2 (en) * | 2018-06-29 | 2021-02-16 | Intel Corporation | Technologies for verifying memory integrity across multiple memory regions |
GB2579849B (en) | 2018-12-18 | 2021-08-25 | Advanced Risc Mach Ltd | Integrity tree for memory integrity checking |
KR102452250B1 (ko) | 2019-03-18 | 2022-10-07 | 한국전자통신연구원 | 오프체인 데이터 저장 방법 및 장치 |
US11356274B2 (en) * | 2019-09-20 | 2022-06-07 | Kaleidoscope Blockchain, Inc. | Verifying a set of remotely stored data |
US11533127B1 (en) * | 2019-09-20 | 2022-12-20 | Kaleidoscope Blockchain, Inc. | Determining data availability |
US11778470B2 (en) * | 2019-10-11 | 2023-10-03 | Qualcomm Incorporated | Protection of control signaling in a wireless backhaul network |
US11436342B2 (en) | 2019-12-26 | 2022-09-06 | Intel Corporation | TDX islands with self-contained scope enabling TDX KeyID scaling |
US12010242B2 (en) | 2020-07-10 | 2024-06-11 | Arm Limited | Memory protection using cached partial hash values |
CN111737018B (zh) * | 2020-08-26 | 2020-12-22 | 腾讯科技(深圳)有限公司 | ZooKeeper配置文件存储处理方法、装置、设备及其介质 |
WO2022067731A1 (en) * | 2020-09-30 | 2022-04-07 | Huawei Technologies Co., Ltd. | Method for verifying software security of electronic device(s) in vehicle and related device |
GB2624675A (en) * | 2022-11-25 | 2024-05-29 | The Sec Dep For Business Energy And Industrial Strategy | Managing auditable chains |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008038403A1 (fr) | 2006-09-25 | 2008-04-03 | Kunitaro Co., Ltd. | Sachet pour infusion avec un crochet latéral |
US20080172562A1 (en) | 2007-01-12 | 2008-07-17 | Christian Cachin | Encryption and authentication of data and for decryption and verification of authenticity of data |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4309569A (en) | 1979-09-05 | 1982-01-05 | The Board Of Trustees Of The Leland Stanford Junior University | Method of providing digital signatures |
US4881264A (en) | 1987-07-30 | 1989-11-14 | Merkle Ralph C | Digital signature system and method based on a conventional encryption function |
JP4622087B2 (ja) * | 2000-11-09 | 2011-02-02 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにプログラム記憶媒体 |
JP2005510113A (ja) * | 2001-11-13 | 2005-04-14 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 可変長コードワード・シーケンスの復号方法 |
US7624276B2 (en) * | 2006-10-16 | 2009-11-24 | Broadon Communications Corp. | Secure device authentication system and method |
US8356178B2 (en) * | 2006-11-13 | 2013-01-15 | Seagate Technology Llc | Method and apparatus for authenticated data storage |
JP4956292B2 (ja) * | 2007-06-25 | 2012-06-20 | パナソニック株式会社 | 情報セキュリティ装置およびカウンタ制御方法 |
-
2010
- 2010-06-22 KR KR1020127001735A patent/KR101723001B1/ko active IP Right Grant
- 2010-06-22 WO PCT/EP2010/003744 patent/WO2010149333A1/en active Application Filing
- 2010-06-22 CN CN201080037628.9A patent/CN102483781B/zh active Active
- 2010-06-22 EP EP10742079.6A patent/EP2446388B8/en active Active
- 2010-06-22 US US13/380,847 patent/US8719580B2/en active Active
- 2010-06-22 JP JP2012516562A patent/JP5749257B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008038403A1 (fr) | 2006-09-25 | 2008-04-03 | Kunitaro Co., Ltd. | Sachet pour infusion avec un crochet latéral |
US20080172562A1 (en) | 2007-01-12 | 2008-07-17 | Christian Cachin | Encryption and authentication of data and for decryption and verification of authenticity of data |
Also Published As
Publication number | Publication date |
---|---|
JP2012530983A (ja) | 2012-12-06 |
JP5749257B2 (ja) | 2015-07-15 |
EP2446388B1 (en) | 2018-11-14 |
WO2010149333A1 (en) | 2010-12-29 |
CN102483781A (zh) | 2012-05-30 |
EP2446388B8 (en) | 2019-01-09 |
KR20120116898A (ko) | 2012-10-23 |
US20120110336A1 (en) | 2012-05-03 |
US8719580B2 (en) | 2014-05-06 |
EP2446388A1 (en) | 2012-05-02 |
CN102483781B (zh) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101723001B1 (ko) | 데이터 검증 방법 | |
US9762399B2 (en) | System and method for validating program execution at run-time using control flow signatures | |
US8200961B2 (en) | Securing a flash memory block in a secure device system and method | |
US11100011B2 (en) | Flash translation layer with hierarchical security | |
JP4891324B2 (ja) | 大容量フラッシュメモリを備える高信頼性デバイスのための、セキュアでありながらフレキシブルなシステムアーキテクチャ | |
US8127144B2 (en) | Program loader operable to verify if load-destination information has been tampered with, processor including the program loader, data processing device including the processor, promgram loading method, and integrated circuit | |
KR20200031671A (ko) | 메모리 보안용 카운터 무결성 트리 | |
EP3678025B1 (en) | Computer code integrity checking | |
JP7113115B2 (ja) | シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法 | |
JP6622360B2 (ja) | 情報処理装置 | |
EP1811460B1 (en) | Secure software system and method for a printer | |
CN113486399B (zh) | 基于risc-v架构的数据存储方法及*** | |
JP7438924B2 (ja) | 情報処理装置、方法及びプログラム | |
KR101054075B1 (ko) | 보호키 사용 제한 방법 및 장치 | |
US20230274037A1 (en) | Secure Flash Controller | |
US11475170B2 (en) | System and method for correction of memory errors | |
US20240080193A1 (en) | Counter integrity tree |
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 |