KR102159540B1 - 정보처리장치, 정보처리 시스템, 정보처리방법, 및 컴퓨터 프로그램 - Google Patents
정보처리장치, 정보처리 시스템, 정보처리방법, 및 컴퓨터 프로그램 Download PDFInfo
- Publication number
- KR102159540B1 KR102159540B1 KR1020170023236A KR20170023236A KR102159540B1 KR 102159540 B1 KR102159540 B1 KR 102159540B1 KR 1020170023236 A KR1020170023236 A KR 1020170023236A KR 20170023236 A KR20170023236 A KR 20170023236A KR 102159540 B1 KR102159540 B1 KR 102159540B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- hash value
- module
- information processing
- unit
- Prior art date
Links
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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
-
- 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
-
- 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
-
- 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/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
Abstract
정보처리장치를 제공한다. 메모리는, 모듈, 데이터, 및 상기 데이터에 대해서 생성된 해시 값인 유효 해시 값을 기억한다. 산출부는, 상기 메모리에 기억된 상기 모듈의 해시 값과, 상기 메모리에 기억된 상기 데이터의 해시 값을 산출한다. 판정부는, 상기 산출부가 산출한 상기 데이터의 해시 값이 상기 유효 해시 값과 일치하는 것인가 아닌가를 판정한다. 송신부는, 상기 산출부가 산출한 상기 모듈의 해시 값과, 상기 판정부의 판정 결과를 나타내는 정보를, 상기 메모리에 기억된 상기 모듈 및 상기 데이터의 완전성을 검증하는 서버에 송신한다.
Description
본 발명은 정보처리장치, 정보처리 시스템, 정보처리방법, 및 컴퓨터 프로그램에 관한 것이다.
컴퓨터를 서버 등에 접속할 때, 컴퓨터 내부의 모듈이 개찬되지 않고 있는 것을 검증하기 위한 기기 증명 기술이 있다. 기기 증명 기술을 사용할 경우, 접속원의 컴퓨터(이하, 클라이언트 PC(Personal Computer)라고 부른다)는, 각기 내장된 모듈로부터 생성된 해시 값을 디지털 서명과 함께 접속처의 서버에 송신한다. 서버는, 미리 클라이언트 PC에 내장된 모듈들의 해시 값의 유효값(또는, 종종, 이하 유효 해시 값이라고도 칭하는 기댓값)을 데이터베이스에 보유한다. 서버는, 클라이언트 PC로부터 수신한 해시 값과, 데이터베이스내의 유효 해시 값을 비교함으로써, 클라이언트 PC가 개찬되어 있는가 아닌가를 판단한다.
예를 들면, 일본 특허 제4950195호 공보 및 Trusted Comuting Group(TCG) TPM(Trusted Platform Module) Specification Version 1.2(http://www.trustedcomputinggroup.org/)) 각각이, 클라이언트 PC가, 부트시에 기동된 각 모듈의 해시 값을 서버에 송신하는 기술이 개시되어 있다. 서버는, 송신된 해시 값과 데이터베이스내의 유효 해시 값을 비교함으로써, 클라이언트 PC의 개찬을 검지한다.
본 발명의 일 실시예에 따른 정보처리장치는, 모듈, 데이터, 및 상기 데이터에 대해서 생성된 해시 값인 유효 해시 값을 기억하는 메모리; 상기 메모리에 기억된 상기 모듈의 해시 값과, 상기 메모리에 기억된 상기 데이터의 해시 값을 산출하는 산출부; 상기 산출부가 산출한 상기 데이터의 해시 값이 상기 유효 해시 값과 일치하는 것인가 아닌가를 판정하는 판정부; 및 상기 산출부가 산출한 상기 모듈의 해시 값과, 상기 판정부의 판정 결과를 나타내는 정보를, 상기 메모리에 기억된 상기 모듈 및 상기 데이터의 완전성을 검증하는 서버에 송신하는 송신부를 구비한다.
본 발명의 다른 실시예에 따른 정보처리장치는, 다른 정보처리장치가 보유하는 모듈의 해시 값과, 상기 다른 정보처리장치가 보유한 데이터의 완전성을 나타내는 정보를, 수신하는 수신부; 상기 수신한 모듈의 해시 값이 상기 다른 정보처리장치가 보유하는 모듈에 대해서 이전에 생성된 해시 값인 유효 해시 값과 일치하고, 상기 수신한 데이터의 완전성을 나타내는 정보가 상기 다른 정보처리장치가 보유한 데이터가 완전성을 갖는 것을 나타낸다고 판정하는 것에 응답하여, 상기 다른 정보처리장치가 보유한 모듈 및 데이터는 완전성을 갖는다고 판정하는 판정부; 및 상기 판정부의 판정 결과를 통지하는 통지부를 구비한다.
본 발명의 또 다른 실시예에 따른 정보처리 시스템은, 제1 정보처리장치와 제2 정보처리장치를 구비하는 정보처리 시스템으로서, 상기 제1 정보처리장치는, 모듈, 데이터, 및 상기 데이터에 대해서 생성된 해시 값인 유효 데이터 해시 값을 기억하는 메모리; 상기 메모리에 기억된 상기 모듈의 해시 값과, 상기 메모리에 기억된 상기 데이터의 해시 값을 산출하는 산출부; 상기 산출부가 산출한 상기 데이터의 해시 값이 상기 유효 데이터 해시 값과 일치하는 것인가 아닌가를 판정하는 제1 판정부; 및 상기 산출부가 산출한 상기 모듈의 해시 값과, 상기 제1 판정부의 판정 결과를 나타내는 정보를, 상기 제2 정보처리장치에 송신하는 송신부를 구비하고, 상기 제2 정보처리장치는, 상기 산출부가 산출한 상기 모듈의 해시 값과, 상기 제1 판정부의 판정 결과를 나타내는 정보를 수신하는 수신부; 상기 제1 정보처리장치가 보유한 상기 모듈에 대해 이전에 생성된 해시 값인 유효 모듈 해시 값을 기억하는 기억부; 상기 수신한 모듈의 해시 값이 상기 유효 모듈 해시 값과 일치하며, 또한 상기 수신한 상기 제1 판정부의 판정 결과를 나타내는 정보가, 상기 산출부가 산출한 상기 데이터의 해시 값이 상기 유효 데이터 해시 값과 일치하는 것을 나타낸다고 판정하는 것에 응답하여, 상기 제1 정보처리장치가 보유한 모듈 및 데이터는 완전성을 갖는다고 판정하는 제2 판정부; 및 상기 제2 판정부의 판정 결과를 통지하는 통지부를 구비한다.
또한, 본 발명의 또 다른 실시예에 따른 정보처리방법은, 데이터에 대해서 생성된 해시 값인 유효 해시 값을 메모리에 기억하는 단계; 상기 메모리에 기억된 모듈의 해시 값과, 상기 메모리에 기억된 상기 데이터의 해시 값을 산출하는 단계; 상기 산출한 상기 데이터의 해시 값이 상기 유효 해시 값과 일치하는 것인가 아닌가를 판정하는 단계; 및 상기 산출한 상기 모듈의 해시 값과, 상기 판정하는 단계의 판정 결과를 나타내는 정보를, 상기 메모리에 기억된 상기 모듈 및 상기 데이터의 완전성을 검증하는 서버에 송신하는 단계를 포함한다.
아울러, 본 발명의 또 다른 실시예에 따른 정보처리방법은, 다른 정보처리장치가 보유한 모듈의 해시 값과, 상기 다른 정보처리장치가 보유한 데이터의 완전성을 나타내는 정보를, 수신하는 단계; 상기 수신한 모듈의 해시 값이 상기 다른 정보처리장치가 보유한 모듈에 대해서 이전에 생성된 해시 값인 유효 해시 값과 일치하며, 또한 상기 수신한 데이터의 완전성을 나타내는 정보가 상기 다른 정보처리장치가 보유한 데이터가 완전성을 갖는 것을 나타낸다고 판정하는 것에 응답하여, 상기 다른 정보처리장치가 보유한 모듈 및 데이터는 완전성을 갖는다고 판정하는 단계; 및 상기 판정하는 단계의 결과를 통지하는 단계를 포함한다.
또한, 본 발명의 추가의 또 다른 실시예에 따른 정보처리방법은, 데이터에 대해서 생성된 해시 값인 유효 데이터 해시 값을 메모리에 기억하는 단계; 상기 메모리에 기억된 모듈의 해시 값과, 상기 메모리에 기억된 상기 데이터의 해시 값을 산출하는 단계; 제1 정보처리장치에서, 상기 산출한 상기 데이터의 해시 값이 상기 유효 데이터 해시 값과 일치하는 것인가 아닌가를 제1 판정하는 단계; 상기 산출한 상기 모듈의 해시 값과, 상기 제1 판정하는 단계의 판정 결과를 나타내는 정보를, 제2 정보처리장치에 송신하는 단계; 및 상기 제2 정보처리장치에서, 상기 수신한 모듈의 해시 값이 상기 제1 정보처리장치가 보유한 모듈에 대해서 이전에 생성된 해시 값인 유효 모듈 해시 값과 일치하며, 또한 상기 수신한 상기 제1 판정하는 단계의 판정 결과를 나타내는 정보가, 상기 산출한 상기 데이터의 해시 값이 상기 유효 데이터해시 값과 일치하는 것을 나타낸다고 판정하는 것에 응답하여, 상기 제1 정보처리가 보유한 모듈 및 데이터는 완전성을 갖는다고 제2 판정하는 단계; 및 상기 제2 판정하는 단계의 결과를 통지하는 단계를 포함한다.
또한, 본 발명의 일 측면에서는, 컴퓨터에 상기 방법들 중 어느 한 항의 방법의 각 단계를 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램을 제공한다.
본 발명의 또 다른 특징들은, (첨부도면을 참조하여) 이하의 실시예들의 설명으로부터 명백해질 것이다.
도 1은 정보처리장치의 구성 예를 나타내는 블록도,
도 2는 제1 실시예에 따른 정보처리장치의 기능 구성 예를 설명하는 블록도,
도 3a 및 3b는 데이터베이스(1003)와 리스트(302)를 설명하는 도,
도 4는 리스트(302)의 생성 및 갱신 순서를 나타내는 흐름도,
도 5는 제1 실시예에 따른 개찬(falsification) 검지 처리를 설명하는 흐름도,
도 6은 제2 실시예에 따른 개찬 검지 처리를 설명하는 흐름도,
도 7a 및 7b는 제2 실시예에 따른 개찬 검지 처리를 설명하는 서브 흐름도,
도 8은 제2 실시예에 따른 정보처리장치의 기능 구성 예를 설명하는 블록도,
도 9a는 액세스 제어 리스트를 설명하는 도,
도 9b는 실행 권한표를 설명하는 도,
도 9c는 갱신 빈도표를 설명하는 도,
도 10은 각 실시예에 따른 시스템 구성 예를 나타내는 블록도,
도 11은 데이터의 해시 값 산출 로그(1101)를 설명하는 도다.
도 2는 제1 실시예에 따른 정보처리장치의 기능 구성 예를 설명하는 블록도,
도 3a 및 3b는 데이터베이스(1003)와 리스트(302)를 설명하는 도,
도 4는 리스트(302)의 생성 및 갱신 순서를 나타내는 흐름도,
도 5는 제1 실시예에 따른 개찬(falsification) 검지 처리를 설명하는 흐름도,
도 6은 제2 실시예에 따른 개찬 검지 처리를 설명하는 흐름도,
도 7a 및 7b는 제2 실시예에 따른 개찬 검지 처리를 설명하는 서브 흐름도,
도 8은 제2 실시예에 따른 정보처리장치의 기능 구성 예를 설명하는 블록도,
도 9a는 액세스 제어 리스트를 설명하는 도,
도 9b는 실행 권한표를 설명하는 도,
도 9c는 갱신 빈도표를 설명하는 도,
도 10은 각 실시예에 따른 시스템 구성 예를 나타내는 블록도,
도 11은 데이터의 해시 값 산출 로그(1101)를 설명하는 도다.
종래기술에 의하면, 클라이언트 PC 내장된 각 모듈에 대한 개찬이 검지된다. 한편, 클라이언트 PC에 기억된 데이터에 대한 개찬을 검지하는 수요도 존재한다. 예를 들면, 모듈의 거동 등을 제어하는데 사용된 각종 설정이 기재된 데이터인 설정 파일이 개찬되는 경우, 모듈이 이상한 거동을 할 가능성이 높다. 이 경우, 그 데이터에 대한 개찬이 검지될 수 있으면, 클라이언트 PC의 이상이 검출될 수 있다. 또한, 예를 들면, 메일의 송/수신을 행하는 메일 애플리케이션에서 사용한 주소록 데이터에 대한 개찬을 검지할 때, 미리 서버상에 보유된 정상적인 주소록 데이터를 사용하여, 클라이언트 PC의 주소록 데이터를 복원할 수 있다.
모듈 개찬을 검지하는 상기한 기술을, 단순히 데이터에 적용하는 것은 쉽지 않다. 상기한 기술에 있어서는, 클라이언트 PC가 가지는 각 모듈의 유효 해시 값을, 서버가 관리할 필요가 있다. 따라서, 이 기술을 데이터에 적용하면, 클라이언트 PC에 기억된 데이터의 유효 해시 값도, 서버가 관리할 필요가 있다. 클라이언트 PC내의 데이터가 갱신될 때마다, 서버가 관리하는 유효 해시 값은 갱신될 필요가 있다. 데이터는 모듈과 비교하여 자주 갱신된다. 이 때문에, 이러한 방법을 사용하면 서버의 부하가 증대한다.
본 발명의 일 실시예에 의하면, 서버와 같은 원격기기를 사용해서 클라이언트에 대한 개찬 검지를 행하는 구성에 있어서, 서버에 대한 부하를 억제하면서, 클라이언트상에서 자주 갱신된 정보에 대한 개찬을 서버에 검지시킬 수 있다.
이하, 본 발명의 실시예들을 첨부도면을 참조하여 설명한다. 단, 본 발명의 범위는 이하의 실시예에 한정되는 것이 아니다.
[제1 실시예]
(장치 구성)
도 1의 블록도를 참조하여, 제1 실시예에 적용 가능한 정보처리장치(100)의 구성 예를 설명한다. 도 1을 참조하면, 정보처리장치(100)는, 특별히 제한되지 않고, 예를 들면 널리 퍼진 퍼스널 컴퓨터, 화상 데이터의 카피, 스캔, 또는 프린트를 실행 가능한 화상처리장치, 또는 디지털 사진을 촬영 가능한 촬상 장치일 수 있다. 도 1에 도시한 바와 같이, 본 실시예에 따른 정보처리장치(100)는, ROM(1O1), HDD(1O2), TPM(1O3), RAM(1O4), 및 CPU(1O5)를 구비한다.
ROM(1O1)은 기억장치다. ROM(1O1)은, 물리적 또는 논리적으로 재기록이 불가능한 불휘발성 메모리다. ROM(1O1)은, BIOS(11O), 각종 모듈, 및 데이터를 기억할 수 있다. BIOS(11O)는 정보처리장치(100) 전체를 제어하는 모듈이다. 또한, BIOS(11O)는, 정보처리장치(100)에 전원이 투입되었을 때, 정보처리장치 내부에 최초에 기동되는 모듈이다.
HDD(1O2)는, 부트 로더(boot loader)(111), 커널(112), 모듈A(113), 모듈B(114), 모듈A(113)가 취급하는 데이터a(115) 및 데이터b(116), 및 모듈B(114)가 취급하는 데이터c(117)를 기억 가능한 기억장치다. 부트 로더(111)는 커널(112)의 기동을 제어하는 모듈이다. 커널(112)은, 각종 모듈(후술의 모듈A(113) 및 모듈B(114))의 로딩, RAM(1O4)의 메모리 관리, 및 (도시되지 않은) 키보드 또는 디스플레이를 사용한 입출력 기능을 제어하는 모듈이다.
모듈A(113) 및 모듈B(114)는, 워드 프로세서, 표계산, 데이터베이스 관리, 네트워크 브라우징, 메일 송/수신, 영상/음성재생, 인쇄, 및 통신 등의, 정보처리장치(100)가 실현한 각종 기능을 제공하는 모듈이다. 본 실시예에서는, HDD(1O2)내에 배치되어 각종 기능을 제공하는 모듈들이, 모듈A(113) 및 모듈B(114)로 구성되어 있는 것으로 하여 설명한다. 그렇지만, 본 발명은 이러한 구성에 한정되지 않고, 정보처리장치(100)는 보다 많은 모듈을 구비하여도 좋다.
본 실시예에 있어서는, BIOS(11O), 부트 로더(111), 커널(112), 모듈A(113), 및 모듈B(114)에 대한 개찬이 검지된다. 이하에서는, 이것들의 프로그램을 함께 모듈이라고 부른다. 각 모듈은, HDD(1O2)에 기록된 프로그램의 재기록, 또는 정보처리장치(100)에 설치된 ROM(1O1)의 교환을 행하여서 개찬될 가능성이 있다.
데이터a(115) 및 데이터b(116)는, 모듈A(113)가 취급하는 데이터이며, 예를 들면 모듈의 거동을 제어하는 설정 파일일 수 있다. 또한, 데이터c(117)는 모듈B(114)가 취급하는 데이터다. 그 모듈들과 같이, 정보처리장치(100)가 취급하는 데이터의 수는 한정되지 않고, 정보처리장치는 보다 많은 데이터를 구비하여도 된다. 또한, 정보처리장치(100)가 취급하는 데이터의 종류도 설정 파일에 한정되지 않는다. 예를 들면, 데이터a(115), 데이터b(116), 및 데이터c(117) 중 적어도 하나가, 주소록 데이터 또는 문서 데이터와 같은 모듈에 의해 작성된 데이터이여도 좋다. 이상과 같이, ROM(1O1)이나 HDD(1O2)와 같은 메모리는, 모듈 및 데이터를 기억하고 있다.
TPM(1O3)은, 내탬퍼성(tamper resistance)을 갖는 시큐리티 칩이다. 내탬퍼성은, 외부로부터의 해석을 곤란하게 함과 아울러, 외부로부터 해석하려고 했을 경우에 내부에 기억된 모듈 또는 데이터를 파괴함에 의해 자기방위하는 특성이다. TPM(1O3)은, NVRAM(119), PCR O(120), PCR 1(121), PCR 2(122), PCR 3(123), PCR 4(124), 및 제어부(118)를 구비한다.
NVRAM(119)은 불휘발성 메모리이며, 디지털 서명의 생성에 필요한 비밀 키(클라이언트 비밀 키 및 서버 비밀 키), 공개 키(클라이언트 공개 키 및 서버 공개 키), 및 공개 키 증명서를 기억한다. PCR O∼4는 휘발성 메모리이며, 정보처리장치(100)가 구비하는 모듈들의 해시 값을 기억한다. 본 실시예에서는, TPM(1O3)은 5개의 PCR을 구비한다. 그렇지만, PCR의 수는 이것에 한정되지 않는다. 예를 들면, PCR의 수는 5개보다 많아도 좋다. 제어부(118)는, 디지털 서명 생성 처리, PCR O∼4에의 해시 값 기억 처리 등을 실행한다.
여기에서, PCR에의 해시 값 기억 처리에 대해서 설명한다. 해시 값 기억 처리에 있어서, 제어부(118)는, 소정의 PCR에 이미 기억되어 있는 해시 값 Hash1과, TPM(1O3)의 외부에서 입력된 모듈 또는 데이터의 해시 값 Hash2를 사용해서 다음 식을 산출한다. 그리고, 제어부(118)는, 산출에 의해 얻어진 값 Result1을 PCR에 기억한다.
Result1 = H(Hash1|Hash2) ...(1)
여기서, H(x)은 값x에 대한 해시 함수다. 해시 함수로서는, 공지의 SHA1, SHA256, 또는 SHA512등의 알고리즘이 이용가능하다. "x|y"는 값x와 값y의 연결을 나타낸다.
이상 설명한 PCR에의 해시 값 기억 처리는, 예를 들면, 정보처리장치(100)가 기동할 때 실행된다. 한편, 기동시 등에 PCR에 기록된 해시 값을 개찬하는 것은 곤란하다. 리셋트 후의 PCR에는 데이터의 해시 값을 기록할 수 있다. 그렇지만, 이미 해시 값이 기록되어 있는 PCR의 값을 재기록하려고 하면, 이전에 기록되어 있었던 해시 값과 새롭게 기록하려고 하는 데이터의 해시 값 양쪽과 다른 값이, PCR에 기록된다.
이때, 후술하는 것 같이, 제1의 기억부(202)는, 산출부(201)가 산출한 모듈의 해시 값을 TPM(1O3)의 PCR에 기억한다. 실제로 PCR에 기억된 데이터는, 식(1)로 나타낸 것처럼, 산출부(201)가 산출한 해시 값의 해시 값이다. 그렇지만, 소정의 값에 대하여 해시 함수를 2회 적용해서 얻어진 값도 해시 값이다. 따라서, 이하에서는, PCR에 기억된 데이터를 간단히 모듈의 해시 값이라고 부른다. 이것은, 제2의 기억부(204)가 기억하는 제1 또는 제2의 소정값의 해시 값, 및 제2 실시예에서 설명하는 결합 해시 값에 대해서도 적용한다.
여기서, 정보처리장치(100)의 기동 처리에 대해서 설명한다. 정보처리장치(100)에 전원이 투입되면, 우선 BIOS(11O)가 실행된다. 그 후, 부트 로더(111), 커널(112), 모듈A(113), 및 모듈B(114)가, 이 순서로 로드되어 및 실행된다. 모듈A(113) 및 모듈B(114)는 선택적으로 로드 및 실행되어도 좋다. 즉, 로드 및 실행되지 않는 모듈이 존재해도 좋다. 또한, 모듈A(113) 및 모듈B(114)의 로딩 및 실행의 순서는 특별히 제한되지 않는다. 즉, 필요할 때에 필요한 모듈을 로드 및 실행할 수 있다. 게다가, 모듈의 로딩 및 실행과는 관계없이, 임의의 값의 해시 값을 PCR에 기억할 수 있다.
본 실시예에서는, 상술한 PCR에의 해시 값 기억 처리를, 이상 설명한 정보처리장치(100)의 기동 처리중에 실행한다. 즉, BIOS(11O)는 자기 자신의 해시 값을 산출하고, 산출된 해시 값을 식(1)에 따라서 PCR O에 기억한다. 그리고, BIOS(11O)는 부트 로더(111)의 해시 값을 산출하고, 산출된 해시 값을 식(1)에 따라서 PCR 1에 기억한다. 그 후, BIOS(11O)는 부트 로더(111)를 기동한다. 기동된 부트 로더(111)는 커널(112)의 해시 값을 산출하고, 산출된 해시 값을 식(1)에 따라서 PCR 2에 기억한다. 그 후, 부트 로더(111)는 커널(112)을 기동한다. 기동된 커널(112)은, 모듈(모듈A(113) 및 모듈B(114))이 필요한 경우에 모듈들의 해시 값을 산출하고, 산출한 해시 값을 식(1)에 따라서 PCR 3에 기억한다. 커널(112)은, 모듈이 필요하게 되어 기동될 때마다, 해시 값 기억 처리를 반복해 실행한다. 또한, TPM(1O3)은, PCR들에 기억된 해시 값에 대한 디지털 서명을 생성하고, PCR들에 기억된 해시 값과 함께 출력할 수 있다.
본 실시예에 있어서, 클라이언트 PC인 정보처리장치(100)는, PCR들에 기억되고 TPM(1O3)으로부터 출력된 해시 값과, 그 디지털 서명을 서버에 보낸다. 이 서버는, 정보처리장치(100)의, HDD(1O2)와 같은 메모리에 기억된 모듈, 데이터 등의 완전성을 검증한다. 예를 들면, 이 서버는, 보내진 해시 값을 유효 해시 값과 비교함으로써, 클라이언트 PC내의 모듈, 데이터 등에 대한 개찬의 유/무를 검증할 수 있다. 또한, 해시 값이 산출되는 모듈 또는 데이터를 특정하기 위해서, 서버에 송신하는 해시 값에는, 예를 들면 모듈의 파일명이나 식별자를 관련시킬 수 있다. 여기에서, 서버에 기억된 유효 해시 값은, 정보처리장치(100)의 메모리에 기억된 모듈에 대해서 생성된 해시 값이다. 예를 들면, 모듈의 유효 해시 값은, 이전에, 예를 들면 완전성이 확인되었을 때에 생성된 모듈의 해시 값이다. 모듈의 유효 해시 값은, 정보처리장치(100)에 대응시켜서 미리 서버에 기억되어도 좋거나, 정보처리장치(100)의 모듈이 업데이트 될 때에 서버에 기억되어도 좋다.
(시스템 구성)
다음에, 도 10을 참조해서 본 실시예에 따른 시스템 구성 예에 대해서 설명한다. 도 10은 본 실시예에 적용 가능한 시스템의 개요를 도시한 도다. 도 10에 도시한 바와 같이, 본 실시예에 따른 정보처리 시스템(1000)은, 클라이언트 PC(1OO1), 서버(1002), 및 데이터베이스(1003)를 구비한다. 클라이언트 PC(1OO1)와 서버(1002)는, 유선 또는 무선 채널(1004)을 통해서 접속되고, 서로 데이터를 통신 가능하다. 클라이언트 PC(1OO1) 및 서버(1002)로서는, 전술한 정보처리장치(100)를 사용할 수 있다. 또한, 서버(1002)는, 데이터베이스(1003)로부터의 데이터의 판독 및 데이터베이스(1003)에의 데이터의 기록이 가능하다.
여기서, 데이터베이스(1003)에 대해서, 도 3a를 참조해서 설명한다. 도 3a는, 데이터베이스(1003)의 일 예시도다. 데이터베이스(1003)에 있어서, 열 "클라이언트 PC의 ID"는, 데이터베이스(1003)에 등록되어 있는 각 클라이언트 PC의 식별자를 나타낸다. 도 3a의 예에서는, ID "001" 및 "002"를 각각 가지는 2대의 클라이언트 PC 즉, 클라이언트 PC(1OO1) 및 (도시되지 않은) 클라이언트 PC가 데이터베이스(1003)에 등록되어 있다. 본 실시예에서는, 데이터베이스(1003)에 등록되어 있는 클라이언트 PC에서의 모듈들 및 데이터에 대한 개찬의 유/무를, 서버(1002)가 검증한다.
데이터베이스(1003)에 있어서, 열 "검증 대상"은, 서버(1002)가 검증하는 클라이언트 PC의 각 모듈명 또는 데이터명을 나타낸다. "검증 대상"이 모듈을 가리킬 경우, "검증 대상"에는 모듈을 유일하게 특정하는 정보, 예를 들면, 모듈의 파일명 또는 모듈의 식별자가 기록된다. "검증 대상"이 데이터를 가리킬 경우, "검증 대상"에는 간단히 검증의 대상이 데이터인 것을 나타내는 정보, 예를 들면 "데이터"가 기록된다. 본 실시예에 있어서는, 검증의 대상은, 클라이언트 PC(1OO1)가 가지는 특정한 데이터가 아니고, 클라이언트 PC(1OO1)내의 데이터 전체다. 서버(1002)는, "검증 대상"열에 기재된 모듈들 및 데이터에 대한 개찬의 유/무를 검증함으로써, 클라이언트 PC(1OO1)에 대한 개찬의 유/무를 검증한다. 도 3a의 예에서는, 서버(1002)는, 클라이언트 PC(1OO1)가 가지는 모듈A, 모듈B, 및 데이터 전체(데이터a, 데이터b, 데이터c)에 대한 개찬의 유/무를 검증한다.
데이터베이스(1003)에 있어서, "유효 해시 값"열에는, "검증 대상"열에 등록되어 있는 모듈들 및 데이터의 유효 해시 값이 등록되어 있다. 상술한 대로, 유효 해시 값은, 클라이언트 PC(1OO1)가 가지는 모듈들에 대해서 이전에 생성된 해시 값이다. 서버(1002)는, 이 "유효 해시 값"과 클라이언트 PC로부터 수신한 해시 값을 "검증 대상"마다 비교한다. 그 값이 일치하면, 서버(1002)는, 검증 대상에 대한 개찬이 없다고 판정한다. 그 값이 불일치이면, 서버(1002)는, 검증 대상에 대한 개찬이 있다고 판정한다.
본 실시예에 있어서, "검증 대상"이 "데이터"인 행의 "유효 해시 값"은, 제1의 소정값의 해시 값이다. 예를 들면, 제1의 소정값이 2진수 "1"인 경우, SHA1에 따라서 산출한 제1의 소정값의 해시 값은 "da39...09"다. 클라이언트 PC(1OO1)와 서버(1002)의 양쪽은, 제1의 소정값 또는 제1의 소정값의 해시 값을 알고 있다. 제1의 소정값 또는 제1의 소정값의 해시 값은, 이러한 값일 수 있다. 서버(1002)는, "검증 대상"이 "데이터"인 행의 "유효 해시 값"과 클라이언트 PC(1OO1)로부터 수신한 데이터의 해시 값이 일치하면, 클라이언트 PC(1OO1)에 포함되는 데이터에 대한 개찬은 없다고 판정한다. 한편, 이 값이 불일치하면, 서버(1002)는 클라이언트 PC(1OO1)에 포함되는 데이터에 대한 개찬이 있다고 판정한다.
상술한 것처럼, 서버(1002)는, ID "001"을 가지는 클라이언트 PC(1OO1)가 가지는 "모듈A", "모듈B", 및 "데이터 전체"에 대해서, 각각의 유효 해시 값과 클라이언트 PC로부터 수신한 해시 값을 비교한다. 이렇게 해서, 도 3a의 경우에, 서버(1002)는, 클라이언트 PC(1OO1)가 가지는 "모듈A", "모듈B", 및 "데이터 전체"에 대한 개찬의 유/무를 검증한다. 이것은, ID "002"을 가지는 클라이언트 PC에도 적용하고, 그에 대한 설명은 생략한다.
(기능 구성)
도 2의 블록도를 참조하여 제1 실시예에 따른 정보처리장치(클라이언트 PC)1001과 정보처리장치(서버)1002의 기능 구성 예를 설명한다. 이 기능 구성은, CPU(1O5)가, 예를 들면 HDD(1O2)에 기억되고, 본 실시예의 처리를 실현하는 정보처리 프로그램을 실행함으로써 실현할 수 있다. 이하의 기능 구성에 의하면, 정보처리장치(클라이언트 PC)1001이 개찬되는 것인가 아닌가를, 정보처리장치(서버)1002가 검증할 수 있다.
우선, 정보처리장치(클라이언트 PC)1001의 기능 구성을 설명한다. 산출부(201)는, ROM(1O1) 및 HDD(1O2)등에 기억된 모듈들의 해시 값과, HDD(1O2)등에 기억된 데이터의 해시 값을 산출한다. 예를 들면, 본 실시예에 있어서, 산출부(201)는, BIOS(11O), 부트 로더(111), 커널(112), 모듈A(113), 및 모듈B(114)로부터 해시 값들을 산출하여, 제1의 기억부(202)에 출력한다. 또한, 산출부(201)는, 데이터a(115), 데이터b(116), 데이터c(117), 제1의 소정값, 및 제2의 소정값의 해시 값들을 산출하여, 제1의 검증부(203)에 출력한다.
제2의 소정값은, 제1의 소정값과 다른 값이면 특별히 한정되지 않는다. 예를 들면, 제1의 소정값을 2진수의 "1"에, 제2의 소정값을 2진수의 "0"에 설정할 수 있다. 제2의 소정값은, 제1의 소정값과 달리, 클라이언트 PC(1OO1)와 서버(1002)의 양쪽이 알고 있을 필요는 없고, 클라이언트 PC(1OO1)만이 알고 있어도 좋다. 해시 값을 산출하는데 사용된 해시 함수는, 특별히 한정되지 않고, 공지의 SHA1, SHA256, 및 SHA512등의 알고리즘을 이용가능하다.
제1의 기억부(202)는, 산출부(201)에 의해 산출된, BIOS(11O), 부트 로더(111), 커널(112), 모듈A(113), 및 모듈B(114)의 해시 값을 시큐리티 칩(205)에 기억한다. 시큐리티 칩(205)에의 해시 값 기억 처리는, 전술한 TPM(1O3)의 PCR에의 해시 값 기억 처리와 같기 때문에, 그 설명은 생략한다. 이하에서는, 제1의 기억부(202)에 기억된 해시 값을, 모듈 해시 값이라고 부르는 경우가 있다.
제1의 검증부(203)는, 산출부(201)에 의해 산출된 각 데이터의 해시 값이 리스트(302)에 포함된 유효 해시 값과 일치하는 것인가 아닌가를 판정한다. 본 실시예에 있어서, 제1의 검증부(203)는, 산출부(201)에 의해 산출된 데이터a(115), 데이터b(116), 및 데이터c(117)의 해시 값을, 리스트(302)에 포함된 유효 해시 값과 비교한다. 리스트(302)에 포함된 유효 해시 값은, 데이터에 대해서 생성된 해시 값이며, 이전에 생성된 해시 값일 수 있다.
본 실시예에 있어서, 제1의 검증부(203)는, 모든 데이터에 대해서, 산출된 해시 값이 리스트(302)의 유효 해시 값과 일치할 경우에, 산출부(201)에 의해 산출된 제1의 소정값의 해시 값을 제2의 기억부(204)에 출력한다. 제1의 검증부(203)는, 어느 하나의 데이터의 해시 값이 리스트(302)의 유효 해시 값과 불일치할 경우에, 산출부(201)에 의해 산출된 제2의 소정값의 해시 값을 제2의 기억부(204)에 출력한다. 제1의 소정값의 해시 값 및 제2의 소정값의 해시 값은, 제1의 검증부(203)에 의한 판정 결과를 나타내고 있다. 즉, 제1의 소정값의 해시 값은, 데이터가 완전성을 가지는 것, 보다 구체적으로는 산출부(201)에 의해 산출된 데이터의 해시 값이 리스트(302)의 유효 해시 값과 일치하는 것을 나타낸다. 추가로, 제2의 소정값의 해시 값은, 데이터가 완전성을 갖지 않는 것, 보다 구체적으로는 산출부(201)에 의해 산출된 데이터의 해시 값이 리스트(302)의 유효 해시 값과 일치하지 않는 것을 나타낸다.
여기서, 도 3b를 참조하여, 유효 해시 값의 리스트(302)에 대해서 설명한다. 도 3b에 나타낸 리스트(302)는, 클라이언트 PC에 포함되는 각 모듈(모듈A, 모듈B)이 취급하는 데이터(데이터a, 데이터b, 데이터c)의 유효 해시 값을 보유하고 있다. 즉, 제1의 검증부(203)는, 산출부(201)에 의해 산출된 각 데이터의 해시 값이 유효 해시 값과 일치하는 것인가 아닌가를 검증함으로써, 데이터에 대한 개찬의 유/무를 검증한다.
리스트(302)는, 정확히 생성 또는 갱신된 데이터의 해시 값을 기억할 수 있다. 본 실시예에 있어서는, 모듈이 데이터를 생성 또는 갱신해서 메모리에 기억하는 것에 응답하여, 산출부(201)는 그 생성 또는 갱신된 데이터의 해시 값을 산출하여, 유효 해시 값으로서 리스트(302)에 기억한다. 모듈에 의한 작성 직후의 데이터는, 완전성을 가지는 개찬되지 않은 데이터라고 생각될 수 있다. 이러한 구성에 의해, 리스트(302)에는, 완전성을 갖는 것이 확인된 데이터의 해시 값이 유효 해시 값으로서 기억된다. 확실히, 모듈 자체의 개찬에 의해 무효 데이터가 작성될 가능성도 있다. 그렇지만, 모듈의 개찬은 서버(1002)에 의해 검지가능하기 때문에, 어쨌든 클라이언트 PC(1OO1)의 개찬은 검지가능하다.
보다 구체적으로, 산출부(201)는, 데이터가 갱신 또는 신규로 작성되면, 갱신후의 데이터의 해시 값을 산출하고, 리스트(302)내의 해당하는 데이터의 해시 값을 갱신한다. 예를 들면, 데이터a가 갱신되면, 산출부(201)는, 리스트(302)내의 데이터a의 유효 해시 값을 갱신후의 데이터a로부터 산출한 해시 값으로 갱신한다. 데이터가 신규로 작성되면, 산출부(201)는, 신규 작성된 데이터의 해시 값을 산출하여, 그 해시 값을 리스트(302)에 신규 행으로서 추가한다. 예를 들면, 신규로 데이터d가 작성되면, 산출부(201)는 데이터d의 해시 값을 산출하고, 리스트(302)에 데이터d의 해시 값을 신규 행으로서 추가한다.
산출부(201)는, 모듈이 데이터의 정당성을 인증한 것에 응답하여, 이 데이터의 해시 값을 산출하여, 유효 해시 값으로서 리스트(302)에 기억해도 좋다. 예를 들면, 유저가 모듈의 설정 파일을 수정하는 경우와, 모듈이 설정 파일이 무효 항목을 포함하지 않고 있다고 판단했을 경우에, 산출부(201)는 설정 파일의 유효 해시 값을 갱신할 수 있다. 이러한 구성에 의하면, 외부에서 입력된 데이터에 대해서도, 완전성을 가지는 데이터의 해시 값을 리스트(302)에 기억할 수 있다.
여기서, 도 4의 흐름도를 참조하여, 리스트(302)의 생성 및 갱신 처리를 보다 상세히 설명한다. 이하에서는, 모듈A(113)가 데이터a를 갱신할 경우 및 데이터d를 신규 작성할 경우에 대해서 설명한다. 모듈B(114)가 데이터를 갱신 또는 신규 작성할 경우도, 같은 처리에 의해 리스트(302)를 갱신할 수 있다.
우선, 산출부(201)는 모듈A(113)의 해시 값을 산출하여, 제1의 기억부(202)에 출력한다(단계 S401). 제1의 기억부(202)는 산출부(201)로부터 출력된 모듈A(113)의 해시 값을 시큐리티 칩(205)에 기억한다(단계 S402).커널(112)은 모듈A(113)를 로드 및 실행한다(단계 S403). 기동한 모듈A(113)는, 데이터d를 신규 작성한다(단계 S404). 커널(112)은 리스트(302)를 판독한다(단계 S405). 판독에 성공했을 경우, 산출부(201)는 데이터d의 해시 값을 산출하여, 리스트(302)에 추가한다(단계 S407). 판독에 실패했을 경우에는, 리스트(302)를 갱신하지 않고 처리가 종료한다.
단계 S404에서 데이터를 갱신할 때, 단계 S407에서, 산출부(201)는 리스트(302)의 해당 데이터의 해시 값을 갱신한다. 예를 들면, 단계 S404에서 모듈A(113)가 데이터a를 갱신하는 경우, 단계 S407에서 산출부(201)는 갱신후의 데이터a의 해시 값을 산출하고, 리스트(302)에 등록되어 있는 데이터a의 해시 값을 상기 산출된 해시 값으로 갱신한다.
이하, 단계 S405에 있어서 유효 해시 값을 갖는 리스트(302)를 판독하는 처리에 대해서, 보다 상세히 설명한다. 본 실시예에 있어서, 모듈의 완전성이 검증되지 않을 경우에는 유효 해시 값이 갱신되지 않도록, 리스트(302)는 HDD(1O2)등의 메모리에 기억된다. 보다 구체적으로는, 산출부(201)가 산출한 모듈의 해시 값이, 미리 산출된 모듈의 유효 해시 값과 같은 소정값과 다른 경우에는, 유효 해시 값은 갱신되지 않는다.
일례로서, 리스트(302)는, BIOS(11O), 부트 로더(111), 커널(112), 및 모듈A(113)의 해시 값이 유효 해시 값과 일치할 때만 복호 가능해지도록 암호화된 상태로, HDD(1O2)에 기억된다. 예를 들면, TPM(1O3)의 PCR들에 기억되어 있는 BIOS(11O), 부트 로더(111), 커널(112), 및 모듈A(113)의 해시 값이, 리스트(302)를 암호화할 때 얻어진 해시 값과 같을 경우에, 리스트(302)가 복호될 수 있다.
따라서, BIOS(11O), 부트 로더(111), 커널(112), 및 모듈A(113)가 개찬되지 않으면, 커널(112)은 리스트(302)를 복호화할 수 있다. 한편, BIOS(11O), 부트 로더(111), 커널(112), 및 모듈A(113) 중 어느 하나가 개찬되면, 커널(112)은 리스트(302)의 복호에 실패하기 때문에, 리스트(302)를 판독할 수 없다. 상술한 것처럼, 단계 S405에서는, BIOS(11O), 부트 로더(111), 커널(112), 및 모듈A(113)가 개찬되지 않을 경우에만, 리스트(302)를 갱신하도록 제어가 행해진다.
이때, 상술한 리스트(302)의 복호조건은 일례일 뿐이다. 예를 들면, BIOS(11O), 부트 로더(111), 및 커널(112)의 해시 값이 암호화시와 일치하는 것을 복호조건으로서 사용하여도 좋다. BIOS(11O), 부트 로더(111), 커널(112), 모듈A(113), 및 모듈B(114)의 해시 값이 암호화시와 일치하는 것을 복호조건으로서 사용하여도 좋다. 암호화시에 PCR들에 기억된 해시 값이 현재 PCR들에 기억된 해시 값과 일치할 때에만 리스트(302)를 복호 가능하게 하는 상술한 암호화 기능을, 이하에서는, TPM의 씰(seal) 기능이라고 부를 경우가 있다.
리스트(302)의 보호를 위해서는, 상술한 씰 기능을 사용하는 대신에, TPM(1O3)의 NVRAM(119)에 리스트(302)를 기억해도 좋다. TPM(1O3)의 NVRAM(119)에는, 상술한 복호조건과 같은 액세스 조건을 설정할 수 있다. 이에 따라, 리스트(302)를 NVRAM(119)에 기억했을 때에 PCR들에 기억된 해시 값이, NVRAM(119)에의 액세스시에 PCR들에 기억된 해시 값과 일치하는 경우에만, 리스트(302)의 판독이나 재기록이 가능해진다. 예를 들면, 리스트(302)를 NVRAM(119)에 기억할 때에 TPM(1O3)의 PCR들에 기억된 BIOS(11O), 부트 로더(111), 커널(112), 및 모듈A(113)의 해시 값을, NVRAM에의 액세스 조건으로서 설정할 수 있다.
BIOS(11O), 부트 로더(111), 커널(112), 및 모듈A(113) 중 어느 하나가 개찬되면, 리스트(302)를 NVRAM(119)에 기억할 때에 PCR들에 기억된 해시 값은 현재 PCR들에 기억된 해시 값과 불일치한다. 이 때문에, 리스트(302)를 NVRAM(119)으로부터 판독할 수 없다. 한편, BIOS(11O), 부트 로더(111), 커널(112), 및 모듈A(113)이 개찬되지 않으면, 리스트(302)를 NVRAM(119)으로부터 판독할 수 있다.
이때, 상술한 NVRAM(119)에의 액세스 조건은 일례일 뿐이다. 예를 들면, BIOS(11O), 부트 로더(111), 및 커널(112)의 해시 값이, 리스트(302)의 기억시의 해시 값과 일치하는 것을 액세스 조건으로서 사용하여도 좋다. BIOS(11O), 부트 로더(111), 커널(112), 모듈A(113), 및 모듈B(114)의 해시 값이, 리스트(302)의 기억시의 해시 값과 일치하는 것을 액세스 조건으로서 사용하여도 좋다.
상술한 액세스 제어 기능을, 이하에서는, TPM의 NVRAM기능이라고 칭할 경우가 있다. NVRAM 기능에 의하면, NVRAM(119)에의 리스트(302)의 기억시에 PCR들에 기억된 해시 값이, 현재 PCR들에 기억된 해시 값과 일치할 때에만, NVRAM(119)에의 액세스가 허가된다.
이상과 같이, HDD(1O2) 또는 TPM(1O3)과 같은 메모리는, 유효 해시 값을 포함하는 리스트(302)를 기억한다. 리스트(302)는, 상술한 TPM의 씰 기능 또는 NVRAM기능으로 보호된다. 이 때문에, 클라이언트 PC(1001)에 포함된 모듈 등이 개찬되지 않을 때만, 리스트(302)를 판독할 수 있다.
제2의 기억부(204)는, 제1의 검증부(203)로부터 출력된 제1의 소정값의 해시 값 또는 제2의 소정값의 해시 값을, 시큐리티 칩(205)에 기억한다. 시큐리티 칩(205)에 해시 값을 기억하는 처리는, 상술한 TPM(1O3)의 PCR들에의 해시 값을 기억하는 처리와 같고, 그에 대한 설명은 생략한다. 또한, 상술한 바와 같이, 모듈의 해시 값이 PCR O∼3에 기억되어 있는 경우는, 제1의 소정값의 해시 값 또는 제2의 소정값의 해시 값을 PCR 4에 기억할 수 있다. 이하에서는, 제2의 기억부(204)에 의해 기억된 해시 값을, 플래그 해시 값이라고 부르는 경우가 있다.
시큐리티 칩(205)은, 제1의 기억부(202)가 기억한 모듈 해시 값, 및 제2의 기억부(204)가 기억한 플래그 해시 값에 대하여, 디지털 서명을 생성한다. 시큐리티 칩(205)은, 생성된 디지털 서명과, 모듈 해시 값과, 플래그 해시 값을 포함하는 검증 데이터를, 송신부(206)에 출력한다. 시큐리티 칩(205)으로서는, 예를 들면 상술한 TPM(1O3)을 이용할 수 있다.
송신부(206)는, 시큐리티 칩(205)이 생성한 검증 데이터를, 정보처리장치(서버)1002의 수신부(207)에 송신한다. 상술한 바와 같이, 송신부(206)가 송신하는 검증 데이터에는, 산출부(201)가 산출한 모듈의 해시 값과, 제1의 검증부(203)에 의한 판정 결과를 나타내는 정보가 포함된다.
다음에, 정보처리장치(서버)(1002)의 기능 구성을 설명한다. 수신부(207)는, 클라이언트 PC(1OO1)가 가지는 모듈의 해시 값인 모듈 해시 값과, 클라이언트 PC(1OO1)가 가지는 데이터의 완전성을 나타내는 정보인 플래그 해시 값을 수신한다. 보다 구체적으로는, 수신부(207)는, 정보처리장치(클라이언트 PC)(1001)의 송신부(206)가 송신한 검증 데이터를 수신하고, 제2의 검증부(208)에 출력한다.
제2의 검증부(208)는, 수신부(207)가 수신한 검증 데이터를 검증함으로써, 정보처리장치(클라이언트 PC)(1001)가 개찬되어 있는 것인가 아닌가를 검증한다. 또한, 상술한 바와 같이, 검증 데이터에는, 제1의 기억부(202)가 기억한 모듈 해시 값, 제2의 기억부(204)가 기억한 플래그 해시 값, 및 그것들에 대한 디지털 서명이 포함된다. 제2의 검증부(208)는, 후술하는 것과 같이, 클라이언트 PC(1OO1)가 가지고 있는 모듈 및 데이터의 완전성을 검증함으로써, 클라이언트 PC(1OO1)가 개찬되어 있는 것인가 아닌가를 검증한다. 이때, 제2의 검증부(208)는, 산출부(201)가 산출한 모듈의 해시 값과, 제1의 검증부(203)에 의한 판정 결과를 나타내는 정보와, 모듈에 대해서 이전에 생성된 해시 값인 유효 해시 값을 참조한다.
제2의 검증부(208)는, 우선, 검증 데이터의 디지털 서명을 검증함으로써, 검증 데이터에 포함된 모듈 해시 값 및 플래그 해시 값이 개찬되어 있는 것인가 아닌가를 검증한다.
다음에, 제2의 검증부(208)는, 클라이언트 PC(1OO1)가 가지는 모듈 및 데이터가 완전성을 갖는 것인가 아닌가를 판정한다. 보다 구체적으로는, 제2의 검증부(208)는, 수신부(207)가 수신한 모듈의 해시 값과 유효 해시 값이 일치하는 것인가 아닌가를 판정한다. 또한, 제2의 검증부(208)는, 수신부(207)가 수신한 데이터의 완전성을 나타내는 정보가, 클라이언트 PC(1OO1)가 가지는 데이터가 완전성을 갖는 것을 나타내는 것인가 아닌가를 판정한다. 양쪽이 충족시켜질 경우, 제2의 검증부(208)는, 클라이언트 PC(1OO1)가 가지는 모듈 및 데이터가 완전성을 갖는다고 판정한다.
보다 구체적으로는, 제2의 검증부(208)는, 검증 데이터에 포함된 모듈 해시 값과, 데이터베이스(1003)에 포함된 유효 해시 값을 비교함으로써, 정보처리장치(클라이언트 PC)(1001)내에 포함된 모듈에 대한 개찬의 유/무를 검증한다. 예를 들면, 제2의 검증부(208)는, 검증 데이터에 포함된 모듈A(113)의 해시 값과, 데이터베이스(1003)에 등록되어 있는 모듈A(113)의 유효 해시 값을 비교함으로써, 모듈A(113)이 개찬되어 있는 것인가 아닌가를 검증한다. 그 검증 데이터에 포함된 모듈A(113)의 해시 값과, 데이터베이스(1003)에 등록되어 있는 모듈A(113)의 유효 해시 값이 일치할 경우, 제2의 검증부(208)는 "개찬 없음"이라고 판정할 수 있다. 그 값이 불일치할 경우, 제2의 검증부(208)는 "개찬 있음"이라고 판단할 수 있다.
또한, 제2의 검증부(208)는, 검증 데이터에 포함된 플래그 해시 값과, 데이터베이스(1003)의 유효 해시 값을 비교함으로써, 정보처리장치(클라이언트 PC)(1001)내의 모듈이 취급하는 데이터에 대한 개찬을 검지한다. 제1의 검증부(203)에 관해서 설명한 바와 같이, 제2의 기억부(204)는, 데이터로부터 산출한 해시 값이, 리스트(302)내의 유효 해시 값과 일치할 경우에, 제1의 소정값의 해시 값을 시큐리티 칩(205)에 기억한다. 따라서, 검증 데이터에 포함된 플래그 해시 값이 제1의 소정값의 해시 값일 경우, 제2의 검증부(208)는, 정보처리장치(클라이언트 PC)(1001)내의 데이터에 대한 개찬은 없다고 판단할 수 있다.
그리고, 상술한 바와 같이, 데이터베이스(1003)의 "데이터" 행에는 제1의 소정값의 해시 값이 등록되어 있다. 제2의 검증부(208)는, 검증 데이터에 포함된 플래그 해시 값이, 데이터베이스(1003)의 "데이터"행에 등록되어 있는 유효 해시 값과 일치할 경우, 정보처리장치(클라이언트 PC)(1001)내의 데이터에 대한 개찬은 없다고 판단할 수 있다. 한편, 제2의 기억부(204)가 제2의 소정값의 해시 값을 시큐리티 칩(205)에 기억할 경우, 검증 데이터에 포함된 플래그 해시 값은 데이터베이스(1003)의 "데이터"행의 해시 값과 일치하지 않는다. 이 경우, 제2의 검증부(208)는, 정보처리장치(클라이언트 PC)(1001)내의 데이터에 대한 개찬이 있다고 판단할 수 있다.
통지부(209)는, 제2의 검증부(208)에 의한 판정 결과를 통지한다. 통지부(209)는, 그 판정 결과를 클라이언트 PC(1OO1), 서버(1002)의 특정한 처리부, 또는 다른 외부기기에 통지해도 좋다.
(개찬 검지 처리)
도 5의 흐름도를 참조하여, 본 실시예에 따른 개찬 검지 처리를 설명한다. 클라이언트 PC(1OO1)의 산출부(201)는, 모듈의 해시 값을 산출하여, 제1의 기억부(202)에 출력한다(단계 S501). 제1의 기억부(202)는, 산출부(201)가 출력한 모듈의 해시 값을 시큐리티 칩(205)에 기억한다(단계 S502).
다음에, 산출부(201)는 데이터의 해시 값을 산출하여, 제1의 검증부(203)에 출력한다(단계 S503). 제1의 검증부(203)는, 리스트(302)를 판독한다(단계 S504). 제1의 검증부(203)는, 리스트(302)가 판독될 수 있는 것인가 아닌가를 판정한다(단계 S505). 리스트(302)가 판독될 수 있는 경우, 제1의 검증부(203)는, 산출부(201)가 출력한 데이터의 해시 값과, 리스트(302)에 기록된 유효 해시 값을 비교한다(단계 S506).
제1의 검증부(203)는, 전체 데이터에 대해서 해시 값이 리스트(302)의 유효 해시 값과 일치하는 것인가 아닌가를 판정해(단계 S507), 그 값들이 일치할 경우, 제1의 소정값의 해시 값을 제2의 기억부(204)에 출력한다. 이 경우, 제2의 기억부(204)는 제1의 소정값의 해시 값을 시큐리티 칩(205)에 기억한다(단계 S508). 단계 S507에서 어느 하나의 데이터의 해시 값이 리스트(302)에 기록된 유효 해시 값과 불일치할 경우, 제1의 검증부(203)는, 제2의 소정값의 해시 값을 제2의 기억부(204)에 출력한다. 이 경우, 제2의 기억부(204)는 제2의 소정값의 해시 값을 시큐리티 칩(205)에 기억한다(단계 S509).
시큐리티 칩(205)은, 제1의 기억부(202) 및 제2의 기억부(204)가 기억한 해시 값에 대한 디지털 서명을 생성한다. 그리고, 제1의 기억부(202)가 기억한 해시 값, 제2의 기억부(204)가 기억한 해시 값, 및 그것들의 디지털 서명을 포함하는 검증 데이터를 생성한다(단계 S510). 또한, 단계 S505에서 리스트(302)의 판독에 실패했다고 판정되었을 경우, 시큐리티 칩(205)은, 제1의 기억부(202)가 기억한 해시 값과 그 디지털 서명을 포함하는 검증 데이터를 생성한다. 송신부(206)는, 시큐리티 칩(205)이 생성한 검증 데이터를 서버의 수신부(207)에 송신한다(단계 S511).
서버(1002)의 수신부(207)는, 클라이언트 PC(1OO1)의 송신부(206)가 송신한 검증 데이터를 수신하여, 제2의 검증부(208)에 출력한다(단계 S512). 제2의 검증부(208)는, 검증 데이터에 포함된 디지털 서명을 검증한다(단계 S513). 제2의 검증부(208)는 디지털 서명의 검증에 성공한 것인가 아닌가를 판정한다(단계 S514). 그 검증에 성공했을 경우, 제2의 검증부(208)는 검증 데이터에 포함된 해시 값과 데이터베이스(1003)에 포함된 유효 해시 값을 비교한다(단계 S515). 상술한 것 같이, 제2의 검증부(208)는, 검증 데이터에 포함된 모듈 해시 값과 데이터베이스(1003)에 포함된 유효 해시 값을 비교함으로써, 클라이언트 PC(1OO1)에 포함된 모듈에 대한 개찬의 유/무를 검증한다. 또한, 제2의 검증부(208)는, 검증 데이터에 포함된 플래그 해시 값과 데이터베이스(1003)에 포함된 유효 해시 값을 비교함으로써, 클라이언트 PC(1OO1)에 포함된 데이터에 대한 개찬의 유/무를 검증한다.
통지부(209)는, 단계 S515에 있어서의 모듈 및 데이터에 대한 개찬의 검증 결과를 클라이언트 PC에 통지하고(단계 S516), 클라이언트 PC(1OO1)는 검증 결과를 수신한다(단계 S517). 또한, 단계 S514에서 디지털 서명의 검증에 실패했다고 판정되었을 경우, 단계 S516에서 통지부(209)는, 디지털 서명 검증에 실패한 것을 클라이언트 PC에 통지할 수 있다.
이상과 같이, 본 실시예에 있어서는, 클라이언트 PC(1OO1)가 데이터의 유효 해시 값 리스트를 보유한다. 그리고, 데이터를 생성 또는 갱신할 때, 클라이언트 PC가 보유하는 유효 해시 값 리스트가 갱신된다. 그러므로, 그 갱신된 데이터의 해시 값을 서버(1002)에 송신하는 것은 필요하지 않다. 또한, 데이터가 생성 또는 갱신될 때마다, 서버(1002)가 데이터베이스(1003)를 갱신하는 것도 필요하지 않다. 추가로, 본 실시예에 있어서는, 클라이언트 PC(1OO1)는, 각 데이터의 해시 값을 서버(1002)에 송신하는 대신에, 각 데이터에 대한 개찬의 유/무를 검증하고, 그 검증 결과를 서버(1002)에 송신한다. 이 때문에, 데이터의 개찬 검지를 포함하는 기기 증명을, 서버에 심한 부하를 걸지 않고 실현하는 것이 가능하다. 게다가, 본 실시예에 있어서는, 데이터의 해시 값을 PCR들에 기억하는 대신에, 전체 데이터에 대한 개찬 검증 결과를 나타내는 제1의 소정값의 해시 값 또는 제2의 소정값의 해시 값이 PCR에 기억된다. 이 때문에, 이용하는 PCR의 수를 감소시킬 수 있다.
[제2 실시예]
이하, 본 발명의 제2 실시예에 있어서 행해진 정보처리를 설명한다. 또한, 제1 실시예와 같은 동일 참조부호는 제2 실시예에 있어서 동일한 부품을 의미하고, 그 상세한 설명을 생략한다.
상기 제1 실시예에서는, 데이터마다 개찬을 검지하는 것이 아니고, 데이터 전체에 대해서 개찬이 검지된다. 즉, 제1 실시예에서는, 클라이언트 PC(1OO1)내에 개찬된 데이터가 전혀 없으면, 데이터의 "개찬 없음"이라고 판정된다. 적어도 하나의 데이터가 개찬되면, 데이터의 "개찬 있음"이라고 판정된다. 따라서, 제1 실시예에서는, 예를 들면, 데이터가 개찬되는 3개의 데이터, 즉 클라이언트 PC(1OO1)내에 데이터a, 데이터b, 및 데이터c가 존재할 경우, 어느 데이터가 개찬되었는지는 특정되지 않는다.
한편, 제2 실시예에서는, 소프트웨어 TPM을 사용해서 데이터마다 개찬의 유/무를 검증함으로써, 데이터마다 개찬 검지가 행해진다. 즉, 제2 실시예에서는, 클라이언트 PC(1OO1)의 메모리에 기억된 복수의 데이터의 각각에 대해서, 완전성이 검증된다. 상술한 예에서는, 클라이언트 PC(1OO1)는, 데이터a, 데이터b, 및 데이터c 중 어느 데이터가 개찬되어 있는지를, 메모리에 기억된 데이터마다 유효 해시 값을 참조해서 특정한다.
제1 실시예에서는, 데이터 전체에 관한 개찬 검지 결과에 해당하는 제1의 소정값의 해시 값 또는 제2의 소정값의 해시 값이 TPM(1O3)의 PCR에 기억된다. 제2 실시예에 있어서도, 데이터마다의 개찬 검지 결과를 TPM(1O3)의 PCR에 기억할 수 있다. 한편, TPM(1O3)의 PCR수가 제한되므로, 데이터마다의 개찬 검지 결과를 TPM(1O3)의 PCR에 기억할 수는 없을 수도 있다. 이하의 설명에 있어서, 데이터마다의 개찬 검지 결과, 즉 제1의 검증부(802)에 의한 판정 결과를 나타내는 결합 해시 값은, 소프트웨어 TPM의 PCR에 기억된다. 소프트웨어 TPM은, 제1 실시예에 따른 TPM(1O3)과 동등한 기능을 가지고, 내탬퍼성을 실현하는 소프트웨어다. 소프트웨어 TPM은 소프트웨어로서, 예를 들면 HDD(1O2)에 기억된다. 이러한 구성에 의하면, PCR의 수를, HDD(1O2)의 용량이 허용하는 한 증가시킬 수 있다. 한편, 산출부(801)가 산출한 모듈의 해시 값은, 내탬퍼성이 하드웨어에 의해 구현되어 있는 TPM(1O3)에 기억된다.
[기능 구성]
도 8의 블록도를 참조해서 제2 실시예에 따른 정보처리장치(클라이언트 PC)(1001)와 정보처리장치(서버)(1002)의 기능 구성 예를 설명한다. 제2 실시예에 따른 기능 구성은, 도 8에 도시한 바와 같이, 제1 실시예와 유사하지만, 다른 기능도 가지고 있다. 도 8을 참조하면, 제1 실시예와는 다른 기능에는 다른 참조부호가 첨부되고, 이하에서는 이것들의 기능에 대해서 설명한다. 또한, 그 기능 구성은, CPU(1O5)가, 예를 들면 HDD(1O2)에 기억된, 제2 실시예에 따른 정보처리를 실현하는 프로그램을 실행함으로써 실현된다.
산출부(801)는, 제1 실시예에 따른 산출부(201)의 기능에 더해서, 데이터마다 데이터를 식별하는 값 및 그 해시 값이 기재된 로그 파일을, 산출 로그로서 송신부(806)에 출력하는 기능을 가진다. 산출 로그에는, 클라이언트 PC(1OO1)의 메모리에 기억된 데이터의 각각에 대해서, 데이터의 식별자와, 산출부(801)가 산출한 데이터의 해시 값이 기록되어 있다.
여기서, 산출부(801)가 출력하는 산출 로그에 대해서 도 11을 참조하여 설명한다. 도 11에 도시한 바와 같이, 산출 로그(1101)의 "데이터"열에는, 산출부(801)에 의한 해시 값 산출의 대상으로 데이터를 식별하는 값이 기억되어 있다. 데이터를 식별하는 값은, 예를 들면, 파일명 또는 식별자이다. 산출 로그(1101)의 "해시 값"열에는, 산출부(801)에 의해 데이터로부터 산출된 해시 값이 기억되어 있다. 예를 들면, 산출부(801)가 산출한 데이터a의 해시 값이 "4825...af"일 경우, 도 11에 도시한 바와 같이, "데이터"열에는 "데이터a"가 등록되고, 대응하는 "해시 값"열에는 데이터a의 해시 값 "4825...af"가 기억된다.
제1의 검증부(802)는, 제1 실시예에 따른 제1의 검증부(203)과 같이, 복수의 데이터의 각각에 대해서 산출부(801)가 산출한 해시 값과, 리스트(302)에 포함된 유효 해시 값을 비교한다. 그리고, 제1의 검증부(802)는, 복수의 데이터의 각각에 대해서, 산출부(801)가 산출한 해시 값이 리스트(302)에 포함된 유효 해시 값과 일치하는 것인가 아닌가를 판정한다.
보다 구체적으로는, 산출부(801)가 산출한 데이터의 해시 값이 리스트(302)의 유효 해시 값과 일치하는 경우, 제1의 검증부(802)는, 산출부(801)에 데이터의 해시 값과 제1의 소정값의 해시 값을 사용한 결합 해시 값을 산출시킨다. 결합 해시 값은, 산출부(801)가 산출한 데이터의 해시 값과 제1의 검증부(802)에 의한 판정 결과로부터, 생성된 데이터의 해시 값이다. 본 실시예에 있어서는, 결합 해시 값으로서, 데이터의 해시 값과, 해시 값 비교 결과를 나타내는 제1 또는 제2의 소정값의 해시 값과를 결합해서 얻어진 데이터의 해시 값을 사용한다. 제1의 검증부(802)는, 각 데이터에 대해서, 산출부(801)에 의해 산출된 결합 해시 값을, 제2의 기억부(803)에 출력한다.
예를 들면, 데이터a의 해시 값을 H(a), 제1의 소정값의 해시 값을 H(v1), 제2의 소정값의 해시 값을 H(v2)이라고 한다. 이때, 데이터a의 해시 값H(a)이 리스트(302)의 유효 해시 값과 일치할 경우, 산출부(801)는, 데이터a의 해시 값과 제1의 소정값의 해시 값을 결합하여서 데이터H(a)|H(v1)을 생성한다. 그리고, 산출부(801)는, 이 데이터의 해시 값H(H(a)|H(v1))을, 결합 해시 값으로서 산출한다.
한편, 데이터a의 해시 값H(a)이 유효 해시 값과 불일치할 경우는, 산출부(801)는, 데이터a의 해시 값과 제2의 소정값의 해시 값을 결합하여서 데이터H(a)|H(v2)을 생성한다. 그리고, 산출부(801)는, 이 데이터의 해시 값H(H(a)|H(v2))을, 결합 해시 값으로서 산출한다.
제1의 검증부(802)는, 이러한 처리를 데이터a, 데이터b, 및 데이터c에 대하여 행하는 것에 의해, 이들 데이터에 대한 3개의 결합 해시 값을 제2의 기억부(803)에 출력한다. 후술하는 것 같이, 데이터a의 해시 값H(a)과 결합 해시 값H(H(a)|H(v2))를 사용하는 것에 의해, 데이터a에 관한 제1의 검증부(802)에 의한 판정 결과를 알 수 있다. 이렇게, 이 결합 해시 값은, 각 데이터에 관한 제1의 검증부(802)에 의한 판정 결과를 나타내고 있다. 또한, 리스트(302)는, 상기 제1 실시예와 같이, TPM의 씰 기능이나 TPM의 NVRAM기능으로 보호될 수 있다.
제2의 기억부(803)는, 제1의 검증부(802)가 출력한 결합 해시 값을 제2의 시큐리티 칩(805)에 출력한다. 또한, 후술하는 것과 같이, 제2의 시큐리티 칩(805)으로서는, 예를 들면 소프트웨어 TPM을 이용 가능하다. 결합 해시 값은, 제2의 시큐리티 칩(805)의 PCR들에 기억된다. 예를 들면, 클라이언트 PC(1OO1)에 데이터가 100개 존재할 경우, 그 데이터의 해시 값 비교 결과인 결합 해시 값도 100개 존재한다. 이때, 그 데이터의 결합 해시 값은 제2의 시큐리티 칩(805)내의 100개의 PCR들(예를 들면, PCR O∼PCR 99)에 기억된다.
제1의 시큐리티 칩(804)은, 제1 실시예에 따른 시큐리티 칩(205)과 거의 같은 기능을 가진다. 즉, 제1의 시큐리티 칩(804)은, PCR들에 기억되어 있는 해시 값에 대한 디지털 서명을 생성하고, 해시 값 및 디지털 서명을 제1의 검증 데이터로서 송신부(806)에 출력한다. 또한, 제1의 시큐리티 칩(804)의 PCR들에는, 제1의 기억부(202)가 기억한 BIOS(11O), 부트 로더(111), 커널(112), 모듈A(113), 및 모듈B(114)의 해시 값이 기억되어 있다. 따라서, 제1의 검증 데이터에는, BIOS(11O), 부트 로더(111), 커널(112), 모듈A(113), 및 모듈B(114)의 해시 값과, 디지털 서명이 포함된다.
제2의 시큐리티 칩(805)은, PCR들에 기억된 데이터의 결합 해시 값에 대한 디지털 서명을 생성하고, 결합 해시 값 및 디지털 서명을 제2의 검증 데이터로서 송신부(806)에 출력한다.
본 실시예에 있어서는, 데이터마다, 해시 값의 비교 결과를 나타내는 결합 해시 값이 기억된다. 제2의 시큐리티 칩(805)으로서 소프트웨어 TPM을 사용할 때, 그 결합 해시 값을 기억하는 PCR를 다수 이용할 수 있다. 예를 들면, 데이터a, 데이터b, 및 데이터c에 대한 개찬 검지를 행할 경우, 제2의 시큐리티 칩(805)의 PCR O에 데이터a의 결합 해시 값을, PCR 1에 데이터b의 결합 해시 값을, PCR 2에 데이터c의 결합 해시 값을 기억할 수 있다. 이때, 제2의 검증 데이터에는, 데이터a의 결합 해시 값, 데이터b의 결합 해시 값, 데이터c의 결합 해시 값, 및 이것들의 결합 해시 값에 대한 디지털 서명이 포함된다.
또, 제1의 시큐리티 칩(804)을 사용하여, 제2의 시큐리티 칩(805)을 보호할 수 있다. 보다 구체적으로는, 제1의 시큐리티 칩(804)가 가지는 TPM의 씰 기능을 사용하여, 소프트웨어 TPM인 제2의 시큐리티 칩(805)을 암호화함으로써, 제2의 시큐리티 칩(805)을 보호할 수 있다. 다른 방법으로서, 제2의 시큐리티 칩(805)을 제1의 시큐리티 칩(804)의 NVRAM에 기억할 때, TPM의 NVRAM기능을 이용해서 제2의 시큐리티 칩(805)에의 액세스 제어를 행할 수 있다.
송신부(806)는, 제1의 시큐리티 칩(804)이 출력한 제1의 검증 데이터, 제2의 시큐리티 칩(805)가 출력한 제2의 검증 데이터, 및 산출부(801)가 출력한 산출 로그(1101)를, 정보처리장치(서버)(1002)의 수신부(807)에 송신한다. 상술한 바와 같이, 송신부(806)는, 하드웨어에 의해 실현된 내탬퍼성을 갖는 제1의 시큐리티 칩(804)으로부터, 제1의 검증 데이터에 포함된 모듈의 해시 값을 판독한다. 또한, 송신부(806)는, 소프트웨어에 의해 실현된 내탬퍼성을 갖는 제2의 시큐리티 칩(805)으로부터, 제2의 검증 데이터에 포함된 결합 해시 값을 판독한다. 산출 로그(1101)에는, 클라이언트 PC(1OO1)가 가지는 복수의 데이터의 각각에 대해서, 데이터의 식별자와, 산출부(801)가 산출한 데이터의 해시 값이 포함되어 있다. 추가로, 제2의 검증 데이터에는, 클라이언트 PC(1OO1)가 가지는 복수의 데이터의 각각에 대해서, 제1의 검증부(802)에 의한 완전성의 판정 결과를 나타내는, 결합 해시 값이 포함되어 있다.
수신부(807)는, 정보처리장치(클라이언트 PC)(1001)의 송신부(806)가 송신한 제1의 검증 데이터, 제2의 검증 데이터, 및 산출 로그(1101)를 수신하여, 제2의 검증부(808)에 출력한다.
제2의 검증부(808)는, 수신부(807)로부터 수신한 제1의 검증 데이터로부터 모듈에 대한 개찬을 검지하고, 제2의 검증 데이터 및 산출 로그(1101)로부터 각 데이터에 대한 개찬을 검지한다. 모듈(BIOS와 부트 로더 를 포함한다)에 대한 개찬의 검지는, 제1 실시예에 따른 제2의 검증부(208)와 같이 행해진다. 즉, 제2의 검증부(808)는, 우선, 디지털 서명을 사용해서 제1의 검증 데이터에 대한 개찬의 유/무를 검증한다. 제1의 검증 데이터에 대한 개찬이 없다고 판정했을 경우, 제2의 검증부(808)는, 제1의 검증 데이터에 포함된 모듈의 해시 값과 데이터베이스(1003)내의 유효 해시 값을 비교한다. 이 값들이 일치하면, 제2의 검증부(808)는 모듈에 "개찬 없음"이라고 판단한다. 그 값들이 불일치하면, 제2의 검증부(808)는 모듈에 "개찬 있음"라고 판단한다.
데이터에 대한 개찬의 검지에 관해서는, 제2의 검증부(808)는, 우선, 디지털 서명을 사용해서 제2의 검증 데이터에 대한 개찬의 유/무를 검증한다. 제2의 검증 데이터에 대한 개찬이 없다고 판정했을 경우, 제2의 검증부(808)는, 결합 해시 값을 산출한다. 즉, 제2의 검증부(808)는, 산출 로그(1101)에 기재되어 있는 각 데이터에 대해서, 산출 로그(1101)에 기재되어 있는 데이터의 해시 값과, 데이터베이스(1003)에 기록되어 있는 "데이터"의 유효 해시 값과의 결합 해시 값을 산출한다. 상기 제1 실시예와 같이, 데이터베이스(1003)에는, "데이터"의 유효 해시 값으로서 제1의 소정값의 해시 값이 등록되어 있다. 제2의 검증부(808)는, 데이터마다, 제2의 검증부(808)가 산출한 결합 해시 값과, 제2의 검증 데이터에 포함된 결합 해시 값을 비교한다. 제2의 검증부(808)는, 결합 해시 값이 일치하면, 데이터에 대한 "개찬 없음"이라고 판단한다. 결합 해시 값이 불일치하면, 제2의 검증부(808)는 "개찬 있음"이라고 판단한다.
이하에서는, 데이터a에 대한 개찬의 유/무를 검증하는 구체 예를 설명한다. 제2의 검증부(808)는, 산출 로그(1101)에 기재되어 있는 데이터a의 해시 값H(a)과, 데이터베이스(1003)에 "데이터"의 유효 해시 값으로서 기억되어 있는 제1의 소정값의 해시 값H(v1)를 결합한다. 제2의 검증부(808)는, 얻어진 값의 해시 값H(H(a)|H(v1))를, 데이터a의 결합 해시 값으로서 산출한다. 제2의 검증부(808)는, 산출한 결합 해시 값H(H(a)|H(v1))과, 제2의 검증 데이터에 포함된 데이터a의 결합 해시 값을 비교한다.
데이터a가 개찬되는 경우, 제2의 검증 데이터에 포함된 데이터a의 결합 해시 값은 H(H(a)|H(v2))이기 때문에, 그 결합 해시 값은 제2의 검증부(808)가 산출한 결합 해시 값H(H(a)|H(v1))과 일치하지 않는다. 이 경우, 제2의 검증부(808)는, 데이터a에 대하여 "개찬 있음"이라고 판단할 수 있다. 한편, 데이터a가 개찬되지 않은 경우, 제2의 검증 데이터에 포함된 데이터a의 결합 해시 값은 H(H(a)|H(v1))이므로, 그 결합 해시 값이 제2의 검증부(808)가 산출한 결합 해시 값H(H(a)|H(v1))와 일치한다. 이 경우, 제2의 검증부(808)는, 데이터a에 대하여 "개찬 없음"이라고 판단할 수 있다.
(개찬 검지 처리)
도 6의 흐름도를 참조하여, 제2 실시예에 따른 개찬 검지 처리를 설명한다. 클라이언트 PC(1OO1)의 산출부(801)는, 모듈들의 해시 값을 산출하여, 제1의 기억부(202)에 출력한다(단계 S601). 제1의 기억부(202)는, 산출부(801)가 출력한 모듈의 해시 값을 제1의 시큐리티 칩(804)에 기억한다(단계 S602). 다음에, 산출부(801)는, 데이터의 해시 값을 산출하고, 산출한 해시 값을 제1의 검증부(802)에 출력하고, 동시에 해시 값의 산출 로그(1101)를 송신부(806)에 출력한다(단계 S603).
제1의 검증부(802)는, 리스트(302)를 판독한다(단계 S604). 제1의 검증부(802)는, 리스트를 판독할 수 있는 것인가 아닌가를 판정한다(단계 S605). 리스트(302)를 판독할 수 있는 경우, 제1의 검증부(802)는, 산출부(801)가 출력한 데이터의 해시 값과, 리스트(302)의 유효 해시 값을 비교한다. 제1의 검증부(802)는, 이 비교 결과에 따른 결합 해시 값을 산출부(801)에 산출시키고, 제2의 기억부(803)는 결합 해시 값을 제2의 시큐리티 칩(805)에 기억한다(단계 S606).
제1의 시큐리티 칩(804)은, 제1의 기억부(202)가 기억한 해시 값에 대한 디지털 서명을 생성하고, 제1의 기억부(202)가 기억한 해시 값과 그 디지털 서명을 포함하는 제1의 검증 데이터를 생성한다(단계 S607). 제2의 시큐리티 칩(805)은, 제2의 기억부(803)가 기억한 결합 해시 값에 대한 디지털 서명을 생성하고, 제2의 기억부(803)가 기억한 결합 해시 값과 그 디지털 서명을 포함하는 제2의 검증 데이터를 생성한다(단계 S608). 또한, 단계 S605에서 리스트(302)의 판독에 실패했다고 판정되었을 경우, 단계 S608에서 제2의 검증 데이터는 생성되지 않는다.
송신부(806)는, 제1의 시큐리티 칩(804)이 생성한 제1의 검증 데이터, 제2의 시큐리티 칩(805)이 생성한 제2의 검증 데이터, 및 산출부(801)가 생성한 산출 로그(1101)를 서버(1002)에 송신한다(단계 S609).
서버(1002)의 수신부(807)는, 클라이언트 PC(1OO1)의 송신부(806)가 송신한 제1의 검증 데이터, 제2의 검증 데이터, 및 산출 로그(1101)를 수신하여, 제2의 검증부(808)에 출력한다(단계 S610). 제2의 검증부(808)는, 제1의 검증 데이터에 포함된 디지털 서명을 검증한다(단계 S611). 제2의 검증부(808)는, 디지털 서명의 검증에 성공한 것인가 아닌가를 판정한다(단계 S612). 디지털 서명의 검증에 성공했을 경우, 제2의 검증부(808)는 데이터베이스(1003)의 유효 해시 값과 제1의 검증 데이터에 포함된 해시 값을 비교한다. 이렇게 해서, 제2의 검증부(808)는, 각 모듈에 대한 개찬의 유/무를 검증한다(단계 S613).
다음에, 제2의 검증부(808)는, 제2의 검증 데이터에 포함된 디지털 서명을 검증한다(단계 S614). 그리고, 제2의 검증부(808)는, 디지털 서명의 검증에 성공한 것인가 아닌가를 판정한다(단계 S615). 디지털 서명의 검증에 성공했을 경우, 제2의 검증부(808)는, 산출 로그(1101)에 포함된 해시 값과 데이터베이스(1003)에 포함된 데이터의 유효 해시 값을 사용하여, 각 데이터에 대해서 결합 해시 값을 산출한다. 추가로, 제2의 검증부(808)는, 산출한 결합 해시 값과 제2의 검증 데이터에 포함된 결합 해시 값을 비교함으로써, 각 데이터에 대한 개찬의 유/무를 검증한다(단계 S616).
통지부(209)는, 단계 S613에 있어서의 모듈들에 대한 개찬 유/무의 검증 결과와 단계 S616에 있어서의 데이터에 대한 개찬 유/무의 검증 결과를, 클라이언트 PC(1OO1)에 송신한다(단계 S617). 클라이언트 PC(1OO1)는 검증 결과를 수신한다(단계 S618). 또한, 단계 S612에서 제1의 검증 데이터에 대한 디지털 서명의 검증에 실패했을 경우, 통지부(209)는, 제1의 검증 데이터의 디지털 서명의 검증에 실패한 것을 나타내는 정보를 검증 결과로서 클라이언트 PC(1OO1)에 송신한다(단계 S617). 마찬가지로, 단계 S616에서 디지털 서명의 검증에 실패했을 경우, 통지부(209)는, 제2의 검증 데이터의 디지털 서명의 검증에 실패한 것을 나타내는 정보를, 검증 결과로서 클라이언트 PC(1OO1)에 송신한다(단계 S617).
여기서, 단계 S606의 처리를 도 7a의 서브 흐름도를 참조하여 상세히 설명한다. 제1의 검증부(802)는, 산출부(801)가 산출한 데이터의 해시 값이, 단계 S605에서 판독한 리스트(302)에 포함된 데이터의 유효 해시 값과 일치하는 것인가 아닌가를 판정한다(단계 S701). 해시 값이 일치할 경우, 산출부(801)는, 산출부(801)가 산출한 데이터의 해시 값과, 제1의 소정값의 해시 값을 결합한다. 산출부(801)는, 결합된 값의 해시 값을 결합 해시 값으로서 산출한다. 제2의 기억부(803)는, 산출부(801)가 산출한 결합 해시 값을 제2의 시큐리티 칩(805)에 기억한다(단계 S702).
한편, 단계 S701에서 데이터의 해시 값이 유효 해시 값과 일치하지 않는다고 판정되었을 경우, 산출부(801)는, 산출부(801)가 산출한 데이터의 해시 값과, 제2의 소정값의 해시 값을 결합한다. 산출부(801)는, 결합된 값의 해시 값을 결합 해시 값으로서 산출한다. 제2의 기억부(803)는, 산출부(801)가 산출한 결합 해시 값을 제2의 시큐리티 칩(805)에 기억한다(단계 S703).
단계 S704에서, 제1의 검증부(802)는, 검증 대상으로서 전체 데이터에 대하여 단계 S701∼단계 S703의 처리가 실행되는 것인가 아닌가를 판정한다(단계 S704). 전체 데이터에 대하여 그 처리들이 실행되지 않은 경우, 처리는 단계 S701에 되돌아가, 다른 데이터에 대하여 결합 해시 값을 산출한다. 이렇게 하여, 전체 데이터에 관한 결합 해시 값이 제2의 시큐리티 칩(805)에 기억된다.
다음에, 단계 S616의 처리를 도 7b의 서브 흐름도를 참조하여 상세히 설명한다. 제2의 검증부(808)는, 산출 로그(1101)에 포함된 데이터의 해시 값과, 데이터베이스(1003)에 포함된 제1의 소정값의 해시 값을 결합한다. 그리고, 제2의 검증부(808)는, 결합된 값의 해시 값을 결합 해시 값으로서 산출한다(단계 S710). 제2의 검증부(808)는, 산출한 결합 해시 값과, 제2의 검증 데이터에 포함된 데이터의 결합 해시 값이 일치하는 것인가 아닌가를 검증한다(단계 S711). 결합 해시 값이 일치할 경우, 제2의 검증부(808)는, 대상의 데이터에 대한 "개찬 없음"이라고 판정한다(단계 S712). 한편, 결합 해시 값이 일치하지 않을 경우, 제2의 검증부(808)는, 대상의 데이터에 대한 "개찬 있음"이라고 판정한다(단계 S713).
단계 S714에서, 제2의 검증부(808)는, 검증 대상으로서 전체 데이터에 대하여 단계 S710∼단계 S713의 처리가 실행된 것인가 아닌가를 판정한다(단계 S714). 전체 데이터에 대하여 처리들이 실행되지 않은 경우, 처리는 단계 S711에 되돌아가, 다른 데이터에 대하여 개찬의 유/무를 판정한다. 이렇게 하여, 검증 대상으로서 전체 데이터에 대하여, 개찬의 유/무가 검증된다(단계 S714).
상술한 것처럼, 본 실시예에 있어서는, 클라이언트 PC(1OO1)에 의한 각 데이터에 대한 개찬 검지의 결과에 대응하는 결합 해시 값이, 소프트웨어 TPM에 기억된다. 이러한 방법에 의하면, 서버에 심한 부하를 걸지 않고, 데이터마다 개찬 검지를 행할 수 있다.
[제1 및 제2 실시예의 제1 변형예]
제1 및 제2 실시예에서는, 클라이언트 PC(1OO1)내의 전체 데이터에 대해 개찬 검지를 행했다. 그렇지만, 특정한 데이터에 대해서만 상기 개찬 검지를 행할 수 있다. 또한, 개찬 검지 대상 데이터를 동적으로 결정할 수도 있다. 본 변형 예에서는, 클라이언트 PC(1OO1)는, 상기 메모리에 기억된 복수의 데이터로부터, 제1의 검증부 203 또는 802에 의한 완전성의 검증 대상으로서 데이터를 선택한다. 이러한 처리는, 예를 들면, 클라이언트 PC(1OO1)가 구비하는 선택부(도시되지 않음)에 의해 행해질 수 있다.
완전성의 검증 대상으로서 데이터를 선택하는 방법은 특별히 한정되지 않는다. 예를 들면, 커널(112)이 직접 다루는 데이터만을, 개찬 검지의 대상으로 설정해도 좋거나, 애플리케이션의 설정 파일만을 개찬 검지의 대상으로 설정해도 좋다. 이하에서는, 데이터에의 액세스 권한을 나타내는 정보, 모듈의 실행 권한을 나타내는 정보, 또는 데이터의 갱신 빈도를 나타내는 정보에 근거하여, 완전성의 검증 대상으로서 데이터를 선택하는 구성에 대해서 설명한다. 본 변형 예에서는, 완전성의 검증 대상으로부터 제외된 데이터에 대해서는, 개찬 검지가 행해지지 않는다.
예를 들면, 도 9a에 나타낸 액세스 제어 리스트(901)에 따라, 개찬 검지의 대상으로부터 제외되는 데이터와 개찬 검지의 대상으로 설정되지 않는 데이터를 결정할 수 있다. 도 9a에 나타낸 액세스 제어 리스트(901)는, 커널(도 9a의 system), 클라이언트 PC 관리자(도 9a의 admin), 및 일반 유저(도 9a의 user)가, 대상 데이터에 대하여 무슨 종류의 액세스권을 가지는지를 나타내고 있다. 예를 들면, 도 9a의 액세스 제어 리스트(901)는, 커널과 PC관리자가 판독(Read)과 기록(Write)의 양쪽을 행할 수 있고, 유저가 데이터a의 판독은 행할 수 있지만 기록은 행할 수 없는 것을 나타내고 있다. 또한, 액세스 제어 리스트(901)는, 커널 및 PC관리자뿐만 아니라 유저도 데이터b의 판독 및 기록의 양쪽을 행할 수 있는 것을 나타내고 있다.
유저에 의한 기록이 금지되어 있는 데이터a는, 데이터b보다도 중요한 데이터일 가능성이 높다. 따라서, 중요한 데이터만을 보호하기 위해서는, 유저에 의한 액세스가 제한되어 있는 데이터를 개찬 검지의 대상으로 설정할 수 있다. 상세한 예로서, 상술한 액세스 제어 리스트(901)에 따라, 유저가 기록 권한을 갖지 않는 데이터인 데이터a를 개찬 검지의 대상으로 설정할 수 있고, 데이터b는 개찬 검지의 대상으로부터 제외될 수 있다. 그렇지만, 이것은 일례에 지나지 않고, 예를 들면, 커널이 기록 가능/판독 가능한 데이터만이, 중요한 데이터로서 보호되어도 좋다.
또, 도 9b에 나타낸 모듈의 실행 권한표(902)를 참조하여서, 동적으로 개찬 검지가 대상으로 설정되는 데이터를 결정할 수도 있다. 도 9b에 나타낸 모듈의 실행 권한표(902)는, 커널, PC관리자, 및 유저가, 각 모듈을 실행할 수 있는 것인가 아닌가를 나타내고 있다. 예를 들면, 도 9b에 나타s낸 모듈의 실행 권한표(902)는, 커널 및 PC관리자가 모듈A를 실행 가능하지만, 유저는 모듈A를 실행 불가능한 것을 나타내고 있다.
이때, 유저가 모듈A의 실행 권한이 없으므로, 모듈A는 클라이언트 PC의 동작에 영향을 주는, 중요한 모듈일 가능성이 높다. 이 경우, 모듈A가 취급하는 데이터도 중요한 데이터일 가능성이 높다. 이 때문에, 모듈A가 취급하는 데이터를 개찬 검지가 대상으로 설정할 때, 중요한 데이터의 보호가 실현될 수 있다. 한편, 도 9b에 의하면, 모듈B는 유저도 실행 가능하다. 이 때문에, 모듈B가 취급하는 데이터는 개찬 검지 대상으로 설정될 필요는 없다. 그렇지만, 이것은 일례에 지나지 않고, 예를 들면, 커널이 실행할 수 있는 모듈이 취급하는 데이터만이, 중요한 데이터로서 보호되어도 좋다. 이렇게 하여, 유저에 의한 실행이 제한되어 있는 모듈이 생성한 데이터를 개찬 검지의 대상으로 설정할 수 있다.
더욱이, 제2 변형 예에 대해서 설명하는 것 같이, 갱신 빈도가 낮은 데이터를 완전성의 검증 대상으로 설정할 수 있다. 갱신 빈도가 낮은 데이터는, 갱신 빈도가 높은 데이터보다도, 시스템의 동작에 영향을 미치기 때문에 중요성이 높을 가능성이 있다. 한편, 갱신시의 의도하지 않는 데이터 파손을 검출하기 위해서는, 갱신 빈도가 높은 데이터를 완전성의 검증 대상으로 설정할 수 있다.
상술한 방법에 의해 개찬 검지 대상으로 설정된 중요한 데이터에 관해서는, 제1 및 제2 실시예와 같이, 클라이언트 PC(1OO1)의 제1의 검증부203 또는 802가 데이터의 해시 값과 유효 해시 값을 비교한다. 그리고, 서버(1002)의 제2의 검증부 208 또는 808은, 클라이언트 PC(1OO1)로부터 보내진 데이터베이스(1003)와 검증 데이터를 참조해서 데이터에 대한 개찬을 검지한다.
상술한 방법으로 개찬 검지 대상으로 설정된 데이터의 수가 적을 경우, 제2 실시예에 있어서, 데이터의 결합 해시 값을, 제2의 시큐리티 칩(805)이 아니고, 제1의 시큐리티 칩(804)에 기억해도 좋다. 하드웨어 TPM인 제1의 시큐리티 칩(804)은, 소프트웨어 TPM인 제2의 시큐리티 칩(805)과 비교하여, 보다 적은 수의 PCR을 갖지만, 보다 안전하다. 이 때문에, 제1의 시큐리티 칩(804)은, 소수의 중요한 데이터에 관한 결합 해시 값을 기억하는데 적합하다. 이 경우, 데이터에 관한 해시 값 비교 결과를 나타내는 결합 해시 값은, 제1의 시큐리티 칩(804)의 PCR들에 기억된다. 그리고, 제2 실시예와 같이, 서버(1002)는 클라이언트 PC(1OO1)로부터 보내진 검증 데이터에 포함된 결합 해시 값을 사용하여, 각 데이터에 대한 개찬을 검지한다. 또한, 개찬 검지가 대상으로 설정된 각 데이터의 해시 값을 기억하는 리스트(302)를, 제1의 시큐리티 칩(804)에 기억해도 좋다.
제2 실시예에 있어서, 중요한 데이터와 그 이외의 데이터를 따로 따로 보호할 수도 있다. 상세한 예로서는, 중요한 데이터의 결합 해시 값을 제1의 시큐리티 칩(804)의 PCR들에 기억하고, 나머지 데이터의 결합 해시 값을 제2의 시큐리티 칩(805)의 PCR들에 기억할 수 있다. 이 경우라도, 클라이언트 PC(1OO1)로부터 보내진 각 결합 해시 값을 서버(1002)가 검증함으로써, 중요한 데이터 및 나머지 데이터의 양쪽에 대해서 개찬을 검지할 수 있다.
[제1 및 제2 실시예의 제2 변형 예]
제1 및 제2 실시예에서는, 개찬 검지 대상으로 설정된 모든 데이터에 대해서, 클라이언트 PC(1OO1)가 데이터의 해시 값과 유효 해시 값을 비교한다. 그렇지만, 일부의 데이터에 대해서 클라이언트 PC(1OO1)가 데이터의 해시 값과 유효 해시 값간의 비교를 행하고, 다른 데이터에 대해서 서버(1002)가 데이터의 해시 값과 유효 해시 값간의 비교를 행해도 좋다. 또한, 클라이언트 PC(1OO1)가 비교하는 데이터와, 서버(1002)가 비교하는 데이터는, 동적으로 결정될 수도 있다. 본 변형 예에서는, 클라이언트 PC(1OO1)는, 상기 메모리에 기억된 복수의 데이터로부터, 클라이언트 PC(1OO1)에 의한 완전성의 검증 대상으로 설정되는 데이터와, 서버(1002)에 의한 완전성의 검증 대상으로 설정되는 데이터를 선택한다. 이러한 데이터의 선택은, 예를 들면, 데이터에의 액세스 권한을 나타내는 정보, 모듈의 실행 권한을 나타내는 정보, 또는 데이터의 갱신 빈도를 나타내는 정보에 근거하여 행해질 수 있다.
예를 들면, 갱신 빈도가 높은 데이터에 대해서는, 클라이언트 PC(1OO1)는 데이터의 해시 값과 유효 해시 값을 비교한다. 갱신 빈도가 낮은 데이터에 대해서는, 서버(1002)는 데이터의 해시 값과 유효 해시 값을 비교한다. 즉, 갱신 빈도가 높은 데이터에 대해서는, 제1 및 제2 실시예와 같이, 클라이언트 PC(1OO1)가 산출된 데이터의 해시 값과 유효 해시 값을 비교하고, 그 비교 결과를 서버(1002)에 송신한다. 서버(1002)는 수신한 비교 결과와 데이터베이스(1003)를 참조하여서, 갱신 빈도가 높은 데이터에 대한 개찬을 검지한다. 한편, 갱신 빈도가 낮은 데이터에 관해서는, 클라이언트 PC(1OO1)는 데이터(갱신 빈도가 낮은 데이터)로부터 산출된 해시 값을 서버(1002)에 송신한다. 서버(1002)는, 수신한 데이터의 해시 값과, 미리 데이터베이스(1003)에 등록되어 있는 데이터의 유효 해시 값을 비교함으로써, 데이터의 개찬을 검지한다.
이 경우, 갱신 빈도가 낮은 데이터에 관해서는, 클라이언트 PC(1OO1)에 있어서 데이터가 갱신될 때마다, 서버(1002)가 가지는 데이터베이스(1003)에 기억된 유효 해시 값을 갱신할 필요가 있다. 그렇지만, 이 처리 대상이 갱신 빈도가 낮은 데이터에 한정되므로, 서버(1002)의 부하를 억제할 수 있다. 또한, 갱신 빈도가 낮은 데이터에 관해서는, 서버(1002)가 해시 값을 비교한다. 따라서, 데이터의 해시 값이 PCR들에 기억된다. 이 경우에는, PCR이 많은 제2의 시큐리티 칩(805)(소프트웨어 TPM)의 PCR들에, 갱신 빈도가 낮은 데이터의 해시 값을 기억할 수 있다.
"갱신 빈도가 높은 데이터"와 "갱신 빈도가 낮은 데이터"의 식별 방법으로서는, 예를 들면, 도 9c에 나타낸 데이터마다의 갱신 빈도표(903)를 사용한 방법이 사용 가능하다. 도 9c에 나타낸 갱신 빈도표(903)는, 데이터마다, 소정의 시간간격내에 있어서의 데이터 갱신 횟수의 평균값(이하, 갱신 빈도라고 함)을 나타낸다. 예를 들면, 도 9c는, 데이터a의 갱신이 1일 평균 1회(1회/일) 발생하는 것, 데이터b의 갱신이 1년 평균 1회(1회/년) 발생하는 것을 나타낸다.
갱신 빈도에 관한 소정의 역치를 설정한다. 이 역치를 사용해서, "갱신 빈도가 높은 데이터"와 "갱신 빈도가 낮은 데이터"를 식별할 수 있다. 예를 들면, 갱신 빈도가 역치이상인 데이터를 "갱신 빈도가 높은 데이터"라고 식별할 수 있고, 갱신 빈도가 역치미만인 데이터를 "갱신 빈도가 낮은 데이터"라고 식별할 수 있다. 예를 들면, 갱신 빈도의 역치를 1주간에 1회(1회/주)로 설정할 수 있다. 이때, 도 9c에 나타낸 데이터a의 갱신 빈도가 역치(1회/주)이상인 1회/일이므로, 데이터a는 "갱신 빈도가 높은 데이터"라고 식별된다. 한편, 데이터b의 갱신 빈도는 역치(1회/주)미만인 1회/년이므로, 데이터b는 "갱신 빈도가 낮은 데이터"라고 식별된다.
상술한 역치는 일례일 뿐이며, 1회/월이나 1회/일로 설정되어도 좋다. 각 데이터의 갱신 빈도를 산출하는 방법의 일례로서는, 데이터마다 갱신 횟수와 갱신일을 기록한 로그 파일을 사용하는 방법이 이용 가능하다. 이 경우, 소정의 시간간격내(예를 들면, 1일, 1주, 1달, 또는 1년)에 있어서의 데이터 갱신 횟수의 평균값을 갱신 빈도로서 산출할 수 있다.
상술한 "갱신 빈도가 높은 데이터"와 "갱신 빈도가 낮은 데이터"의 식별 방법은 일례일 뿐이며, 그 이외의 방법을 채용할 수 있다. 예를 들면, 현재의 일/시와 데이터의 최종 갱신 일/시간의 차이가 소정의 역치이상이면, 이 데이터를 "갱신 빈도가 낮은 데이터"라고 판정할 수 있다. 그 차이가 소정의 역치미만이라면, 이 데이터를 "갱신 빈도가 높은 데이터"라고 식별할 수 있다.
추가로, 유저에 의한 액세스가 제한되어 있는 데이터를 중요한 데이터일 수도 있다. 이 때문에, 이러한 데이터를 서버(1002)에 의한 개찬 검지의 대상으로 설정할 수 있고, 그 밖의 데이터를 클라이언트 PC(1001)에 의한 개찬 검지가 대상으로 설정할 수 있다. 이 경우, 서버(1002)에 의한 개찬 검지의 대상으로 설정되는 데이터는, 제1 변형 예와 같이, 데이터에의 액세스 권한을 나타내는 정보에 근거하여 선택될 수 있다. 한편, 유저에 의한 실행이 제한되어 있는 모듈이 생성한 데이터는 중요한 데이터일 수도 있다. 이 때문에, 이러한 데이터를 서버(1002)에 의한 개찬 검지의 대상으로 설정할 수 있고, 그 밖의 데이터를 클라이언트 PC(1001)에 의한 개찬 검지가 대상으로 설정할 수 있다. 이 경우, 서버(1002)에 의한 개찬 검지의 대상으로 설정되는 데이터는, 제1 변형 예와 같이, 모듈의 실행 권한을 나타내는 정보에 근거하여 선택될 수 있다.
[제1 및 제2 실시예의 제3 변형 예]
제1 및 제2 실시예에서는, 클라이언트 PC(1OO1)와 서버(1002)의 양쪽이, 제1의 소정값의 해시 값을 공유하고 있었다. 제1의 소정값, 또는 제1의 소정값의 해시 값 대신에, 난스(nonce)를 사용할 수도 있다. 난스는, 예를 들면 16byte의 난수이고, 클라이언트 PC(1OO1)와 서버(1002)가 통신할 때마다 다른 값을 채용한다. 그 난스의 이용은, 예를 들면, 개찬된 데이터가 개찬되어 보이지 않도록 공격자가 제1의 소정값을 TPM에 기억하는 공격을 방지할 수 있다.
그 밖의 실시예
또한, 본 발명의 실시예(들)는, 기억매체(보다 완전하게는 '비일시적 컴퓨터 판독 가능한 기억매체'라고도 함)에 레코딩된 컴퓨터 실행가능한 명령어들(예를 들면, 하나 이상의 프로그램)을 판독하고 실행하여 상술한 실시예(들)의 하나 이상의 기능을 수행하는 것 및/또는 상술한 실시예(들)의 하나 이상의 기능을 수행하기 위한 하나 이상의 회로(예를 들면, 주문형 반도체(ASIC))를 구비하는 것인, 시스템 또는 장치를 갖는 컴퓨터에 의해 실현되고, 또 예를 들면 상기 기억매체로부터 상기 컴퓨터 실행가능한 명령어를 판독하고 실행하여 상기 실시예(들)의 하나 이상의 기능을 수행하는 것 및/또는 상술한 실시예(들)의 하나 이상의 기능을 수행하는 상기 하나 이상의 회로를 제어하는 것에 의해 상기 시스템 또는 상기 장치를 갖는 상기 컴퓨터에 의해 행해지는 방법에 의해 실현될 수 있다. 상기 컴퓨터는, 하나 이상의 프로세서(예를 들면, 중앙처리장치(CPU), 마이크로처리장치(MPU))를 구비하여도 되고, 컴퓨터 실행 가능한 명령어를 판독하여 실행하기 위해 별개의 컴퓨터나 별개의 프로세서의 네트워크를 구비하여도 된다. 상기 컴퓨터 실행가능한 명령어를, 예를 들면 네트워크나 상기 기억매체로부터 상기 컴퓨터에 제공하여도 된다. 상기 기억매체는, 예를 들면, 하드 디스크, 랜덤액세스 메모리(RAM), 판독전용 메모리(ROM), 분산형 컴퓨팅 시스템의 스토리지, 광디스크(콤팩트 디스크(CD), 디지털 다기능 디스크(DVD) 또는 블루레이 디스크(BD)TM등), 플래시 메모리 소자, 메모리 카드 등 중 하나 이상을 구비하여도 된다.
본 발명을 실시예들을 참조하여 기재하였지만, 본 발명은 상기 개시된 실시예들에 한정되지 않는다는 것을 알 것이다. 아래의 청구항의 범위는, 모든 변형예, 동등한 구조 및 기능을 포함하도록 폭 넓게 해석해야 한다.
Claims (17)
- 모듈, 데이터, 및 상기 데이터에 대해서 생성된 해시 값인 유효 해시 값을 기억하는 메모리;
상기 메모리에 기억된 상기 모듈의 해시 값과, 상기 메모리에 기억된 상기 데이터의 해시 값을 산출하는 산출부;
상기 산출부가 산출한 상기 데이터의 해시 값이 상기 유효 해시 값과 일치하는 것인가 아닌가를 판정하는 판정부; 및
상기 산출부가 산출한 상기 모듈의 해시 값과, 상기 판정부의 판정 결과를 나타내는 정보를, 상기 메모리에 기억된 상기 모듈 및 상기 데이터의 완전성을 검증하는 서버에 송신하는 송신부 - 상기 서버는 정보처리장치와 다른 장치임;을 구비하는, 정보처리장치.
- 제 1 항에 있어서,
상기 유효 해시 값은, 완전성을 갖는 것이 확인된 데이터의 해시 값인, 정보처리장치.
- 제 1 항에 있어서,
상기 산출부는, 상기 모듈에 의한 상기 데이터의 생성 또는 갱신 중 한쪽이나 상기 모듈에 의한 상기 데이터의 인증에 응답하여, 상기 데이터의 해시 값을 산출하여 상기 유효 해시 값으로서 상기 메모리에 기억하도록 한층 더 구성되는, 정보처리장치.
- 제 1 항에 있어서,
상기 유효 해시 값은, 상기 모듈의 완전성이 검증되지 않을 경우에는 갱신되지 않는, 정보처리장치.
- 제 1 항에 있어서,
상기 유효 해시 값은, 상기 산출부가 산출한 상기 모듈의 해시 값이 소정값과 다른 경우에는 갱신되지 않는, 정보처리장치.
- 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
상기 메모리는, 복수의 데이터와, 그 복수의 데이터의 각각의 유효 해시 값을 기억하도록 한층 더 구성되고,
상기 판정부는, 상기 복수의 데이터의 각각에 대해서, 상기 산출부가 산출한 상기 데이터의 해시 값이, 상기 유효 해시 값과 일치하는 것인가 아닌가를 판정하도록 한층 더 구성되고,
상기 송신부는, 상기 복수의 데이터의 각각에 대한 상기 판정부의 판정 결과를 상기 서버에 송신하도록 한층 더 구성되는, 정보처리장치.
- 제 6 항에 있어서,
상기 송신부는, 상기 복수의 데이터의 각각에 대해서,
상기 데이터의 식별자와,
상기 산출부가 산출한 상기 데이터의 해시 값과,
상기 산출부가 산출한 상기 데이터의 해시 값과 상기 판정부의 판정 결과로부터 생성된 데이터의 해시 값을,
상기 서버에 송신하도록 한층 더 구성되는, 정보처리장치.
- 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
상기 메모리에 기억된 복수의 데이터로부터, 상기 판정부의 완전성의 검증 대상으로서 데이터를 선택하는 선택부를 더 구비하는, 정보처리장치.
- 제 8 항에 있어서,
상기 선택부는, 상기 데이터에의 액세스 권한을 나타내는 정보, 상기 모듈의 실행 권한을 나타내는 정보, 또는 상기 데이터의 갱신 빈도를 나타내는 정보 중 하나에 따라, 완전성의 검증 대상으로서 상기 데이터를 선택하도록 한층 더 구성되는, 정보처리장치.
- 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
상기 송신부는, 상기 산출부가 산출한 상기 모듈의 해시 값과, 상기 판정부의 판정 결과를 나타내는 정보를, 내탬퍼성을 갖는 메모리로부터 판독하도록 한층 더 구성되는, 정보처리장치.
- 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
상기 송신부는,
내탬퍼성이 하드웨어에 의해 실현된 제1의 메모리로부터, 상기 산출부가 산출한 상기 모듈의 해시 값을 판독하고,
내탬퍼성이 소프트웨어에 의해 실현된 제2의 메모리로부터, 상기 데이터의 적어도 일부에 대한 상기 판정부의 판정 결과를 나타내는 정보를 판독하도록,
한층 더 구성되는, 정보처리장치.
- 다른 정보처리장치가 보유하는 모듈의 해시 값과, 상기 다른 정보처리장치가 보유한 데이터의 완전성을 나타내는 정보를, 수신하는 수신부 - 상기 다른 정보처리장치는 정보처리장치와 다름;
상기 수신한 모듈의 해시 값이 상기 다른 정보처리장치가 보유하는 모듈에 대해서 이전에 생성된 해시 값인 유효 해시 값과 일치하고, 상기 수신한 데이터의 완전성을 나타내는 정보가 상기 다른 정보처리장치가 보유한 데이터가 완전성을 갖는 것을 나타낸다고 판정하는 것에 응답하여, 상기 다른 정보처리장치가 보유한 모듈 및 데이터는 완전성을 갖는다고 판정하는 판정부; 및
상기 판정부의 판정 결과를 통지하는 통지부를 구비하는, 정보처리장치.
- 제1 정보처리장치와, 상기 제1 정보처리장치와는 다른 제2 정보처리장치를 구비하는 정보처리 시스템으로서, 상기 제1 정보처리장치는,
모듈, 데이터, 및 상기 데이터에 대해서 생성된 해시 값인 유효 데이터 해시 값을 기억하는 메모리;
상기 메모리에 기억된 상기 모듈의 해시 값과, 상기 메모리에 기억된 상기 데이터의 해시 값을 산출하는 산출부;
상기 산출부가 산출한 상기 데이터의 해시 값이 상기 유효 데이터 해시 값과 일치하는 것인가 아닌가를 판정하는 제1 판정부; 및
상기 산출부가 산출한 상기 모듈의 해시 값과, 상기 제1 판정부의 판정 결과를 나타내는 정보를, 상기 제2 정보처리장치에 송신하는 송신부를 구비하고,
상기 제2 정보처리장치는,
상기 산출부가 산출한 상기 모듈의 해시 값과, 상기 제1 판정부의 판정 결과를 나타내는 정보를 수신하는 수신부;
상기 제1 정보처리장치가 보유한 상기 모듈에 대해 이전에 생성된 해시 값인 유효 모듈 해시 값을 기억하는 기억부;
상기 수신한 모듈의 해시 값이 상기 유효 모듈 해시 값과 일치하며, 또한 상기 수신한 상기 제1 판정부의 판정 결과를 나타내는 정보가, 상기 산출부가 산출한 상기 데이터의 해시 값이 상기 유효 데이터 해시 값과 일치하는 것을 나타낸다고 판정하는 것에 응답하여, 상기 제1 정보처리장치가 보유한 모듈 및 데이터는 완전성을 갖는다고 판정하는 제2 판정부; 및
상기 제2 판정부의 판정 결과를 통지하는 통지부를 구비하는, 정보처리 시스템.
- 데이터에 대해서 생성된 해시 값인 유효 해시 값을 정보처리장치의 메모리에 기억하는 단계;
상기 메모리에 기억된 모듈의 해시 값과, 상기 메모리에 기억된 상기 데이터의 해시 값을 산출하는 단계;
상기 산출한 상기 데이터의 해시 값이 상기 유효 해시 값과 일치하는 것인가 아닌가를 판정하는 단계; 및
상기 산출한 상기 모듈의 해시 값과, 상기 판정하는 단계의 판정 결과를 나타내는 정보를, 상기 메모리에 기억된 상기 모듈 및 상기 데이터의 완전성을 검증하는 서버에 송신하는 단계 - 상기 서버는 상기 정보처리장치와 다른 장치임;을 포함하는, 정보처리방법.
- 다른 정보처리장치가 보유한 모듈의 해시 값과, 상기 다른 정보처리장치가 보유한 데이터의 완전성을 나타내는 정보를, 정보처리장치에서 수신하는 단계 - 상기 다른 정보처리장치는 상기 정보처리장치와 다름;
상기 수신한 모듈의 해시 값이 상기 다른 정보처리장치가 보유한 모듈에 대해서 이전에 생성된 해시 값인 유효 해시 값과 일치하며, 또한 상기 수신한 데이터의 완전성을 나타내는 정보가 상기 다른 정보처리장치가 보유한 데이터가 완전성을 갖는 것을 나타낸다고 판정하는 것에 응답하여, 상기 다른 정보처리장치가 보유한 모듈 및 데이터는 완전성을 갖는다고 판정하는 단계; 및
상기 판정하는 단계의 결과를 통지하는 단계를 포함하는, 정보처리방법.
- 데이터에 대해서 생성된 해시 값인 유효 데이터 해시 값을 제1 정보처리장치의 메모리에 기억하는 단계;
상기 메모리에 기억된 모듈의 해시 값과, 상기 메모리에 기억된 상기 데이터의 해시 값을 산출하는 단계;
상기 제1 정보처리장치에서, 상기 산출한 상기 데이터의 해시 값이 상기 유효 데이터 해시 값과 일치하는 것인가 아닌가를 제1 판정하는 단계;
상기 산출한 상기 모듈의 해시 값과, 상기 제1 판정하는 단계의 판정 결과를 나타내는 정보를, 상기 제1 정보처리장치와는 다른 제2 정보처리장치에 송신하는 단계; 및
상기 제2 정보처리장치에서, 수신한 모듈의 해시 값이 상기 제1 정보처리장치가 보유한 모듈에 대해서 이전에 생성된 해시 값인 유효 모듈 해시 값과 일치하며, 또한 수신한 상기 제1 판정하는 단계의 판정 결과를 나타내는 정보가, 상기 산출한 상기 데이터의 해시 값이 상기 유효 데이터 해시 값과 일치하는 것을 나타낸다고 판정하는 것에 응답하여, 상기 제1 정보처리장치가 보유한 모듈 및 데이터는 완전성을 갖는다고 제2 판정하는 단계; 및
상기 제2 판정하는 단계의 결과를 통지하는 단계를 포함하는, 정보처리방법.
- 컴퓨터에 청구항 14 내지 16 중 어느 한 항의 방법의 각 단계를 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP-P-2016-036312 | 2016-02-26 | ||
JP2016036312A JP6675227B2 (ja) | 2016-02-26 | 2016-02-26 | 情報処理装置、情報処理システム、情報処理方法、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170101127A KR20170101127A (ko) | 2017-09-05 |
KR102159540B1 true KR102159540B1 (ko) | 2020-09-24 |
Family
ID=59679653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170023236A KR102159540B1 (ko) | 2016-02-26 | 2017-02-22 | 정보처리장치, 정보처리 시스템, 정보처리방법, 및 컴퓨터 프로그램 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20170249483A1 (ko) |
JP (1) | JP6675227B2 (ko) |
KR (1) | KR102159540B1 (ko) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6706278B2 (ja) * | 2018-03-27 | 2020-06-03 | キヤノン株式会社 | 情報処理装置、及び情報処理方法 |
JP7179482B2 (ja) | 2018-04-19 | 2022-11-29 | キヤノン株式会社 | 情報処理装置、制御方法、およびそのプログラム |
CN110401681B (zh) * | 2018-04-20 | 2022-06-24 | 伊姆西Ip控股有限责任公司 | 用于数据传输、数据接收的方法以及电子设备 |
JP7084826B2 (ja) * | 2018-08-28 | 2022-06-15 | キヤノン株式会社 | 情報処理装置、その制御方法、およびそのプログラム |
JP7289641B2 (ja) * | 2018-11-30 | 2023-06-12 | キヤノン株式会社 | 情報処理装置、およびその制御方法 |
CA3139747A1 (en) * | 2019-06-04 | 2020-12-10 | Qohash Inc. | System and method for certifying integrity of data assets |
JP7238632B2 (ja) * | 2019-06-26 | 2023-03-14 | オムロン株式会社 | 制御システム、制御装置、および管理方法 |
US11425123B2 (en) | 2020-04-16 | 2022-08-23 | Bank Of America Corporation | System for network isolation of affected computing systems using environment hash outputs |
US11528276B2 (en) * | 2020-04-16 | 2022-12-13 | Bank Of America Corporation | System for prevention of unauthorized access using authorized environment hash outputs |
US11423160B2 (en) | 2020-04-16 | 2022-08-23 | Bank Of America Corporation | System for analysis and authorization for use of executable environment data in a computing system using hash outputs |
US11481484B2 (en) | 2020-04-16 | 2022-10-25 | Bank Of America Corporation | Virtual environment system for secure execution of program code using cryptographic hashes |
JP2022131501A (ja) * | 2021-02-26 | 2022-09-07 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 通信装置、機器、通信システム、認証方法、及びプログラム |
JP2022135443A (ja) * | 2021-03-05 | 2022-09-15 | キヤノン株式会社 | 情報処理装置、情報処理方法及びプログラム |
US11934533B2 (en) * | 2021-06-22 | 2024-03-19 | Microsoft Technology Licensing, Llc | Detection of supply chain-related security threats to software applications |
CN117716366A (zh) * | 2021-08-03 | 2024-03-15 | 松下电器(美国)知识产权公司 | 验证方法、服务器、以及程序 |
US11489725B1 (en) * | 2022-04-24 | 2022-11-01 | Uab 360 It | Optimized updating of a client application |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150370726A1 (en) * | 2014-06-20 | 2015-12-24 | Kabushiki Kaisha Toshiba | Memory management device and non-transitory computer readable storage medium |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4675031B2 (ja) * | 2002-04-23 | 2011-04-20 | パナソニック株式会社 | サーバ装置及びプログラム管理システム |
WO2008004524A1 (fr) * | 2006-07-03 | 2008-01-10 | Panasonic Corporation | Dispositif de certification, dispositif de vérification, système de vérification, programme informatique et circuit intégré |
KR100991479B1 (ko) * | 2006-08-31 | 2010-11-04 | 후지쯔 가부시끼가이샤 | 컴퓨터 자원 검증 방법 및 컴퓨터 자원 검증 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 |
JP5986897B2 (ja) * | 2012-11-13 | 2016-09-06 | Kddi株式会社 | 端末装置、完全性検証システム、およびプログラム |
US9197647B2 (en) * | 2013-10-21 | 2015-11-24 | Cisco Technology, Inc. | Integrity checking of a client device in a networked computer environment |
-
2016
- 2016-02-26 JP JP2016036312A patent/JP6675227B2/ja active Active
-
2017
- 2017-02-14 US US15/432,302 patent/US20170249483A1/en not_active Abandoned
- 2017-02-22 KR KR1020170023236A patent/KR102159540B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150370726A1 (en) * | 2014-06-20 | 2015-12-24 | Kabushiki Kaisha Toshiba | Memory management device and non-transitory computer readable storage medium |
Also Published As
Publication number | Publication date |
---|---|
US20170249483A1 (en) | 2017-08-31 |
KR20170101127A (ko) | 2017-09-05 |
JP6675227B2 (ja) | 2020-04-01 |
JP2017153044A (ja) | 2017-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102159540B1 (ko) | 정보처리장치, 정보처리 시스템, 정보처리방법, 및 컴퓨터 프로그램 | |
US9965268B2 (en) | Method and apparatus for preventing software version rollback | |
JP5690412B2 (ja) | ハードウェアデバイスの鍵プロビジョン方法および装置 | |
US9665720B2 (en) | Image forming apparatus that performs update of firmware, and control method therefor | |
JP6053950B2 (ja) | ソフトウェア更新装置及びソフトウェア更新プログラム | |
US10833877B2 (en) | Method of authenticating authentication-target apparatus by authentication apparatus, authentication apparatus, authentication- target apparatus, and image forming apparatus | |
JP2009294859A (ja) | 機器、機器管理装置、機器管理システム及び機器管理方法、並びにプログラム及び記憶媒体 | |
US20120291106A1 (en) | Confidential information leakage prevention system, confidential information leakage prevention method, and confidential information leakage prevention program | |
US20200372183A1 (en) | Digitally Signing Software Packages With Hash Values | |
US9576132B2 (en) | Information processing apparatus and information processing method | |
KR102062073B1 (ko) | 정보처리장치 및 정보처리장치의 제어방법 | |
US20130081144A1 (en) | Storage device and writing device | |
US10346179B2 (en) | Information processing apparatus, server apparatus, information processing system, control method, and computer program | |
US9357102B2 (en) | Systems and methods of securing operational information associated with an imaging device | |
EP2803011B1 (en) | Detection of invalid escrow keys | |
JP2016025628A (ja) | 情報処理システム、および電子機器 | |
CN111917540A (zh) | 一种数据加解密方法、装置、移动终端和存储介质 | |
CN110784302A (zh) | 加密数据生成装置、数字签名生成装置、带数字签名的数据生成装置和*** | |
US20160350537A1 (en) | Central processing unit and method to verify mainboard data | |
JP5617981B2 (ja) | 機器、管理装置、機器管理システム、及びプログラム | |
US20230103698A1 (en) | Information processing apparatus and control method therefor | |
US9218235B2 (en) | Systems and methods of verifying operational information associated with an imaging device | |
US12039064B2 (en) | Information processing device, information processing method, information processing program, and information processing system | |
JP2017228918A (ja) | システム及び情報処理方法 | |
US20190026468A1 (en) | Information processing apparatus and non-transitory computer readable medium. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |