KR101786006B1 - 머클 트리 기반 메모리 무결성 검증 방법 및 장치 - Google Patents

머클 트리 기반 메모리 무결성 검증 방법 및 장치 Download PDF

Info

Publication number
KR101786006B1
KR101786006B1 KR1020160011954A KR20160011954A KR101786006B1 KR 101786006 B1 KR101786006 B1 KR 101786006B1 KR 1020160011954 A KR1020160011954 A KR 1020160011954A KR 20160011954 A KR20160011954 A KR 20160011954A KR 101786006 B1 KR101786006 B1 KR 101786006B1
Authority
KR
South Korea
Prior art keywords
verification
hash value
memory
merge tree
data
Prior art date
Application number
KR1020160011954A
Other languages
English (en)
Other versions
KR20170091248A (ko
Inventor
윤현수
김세환
김용곤
권오민
Original Assignee
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술원 filed Critical 한국과학기술원
Priority to KR1020160011954A priority Critical patent/KR101786006B1/ko
Publication of KR20170091248A publication Critical patent/KR20170091248A/ko
Application granted granted Critical
Publication of KR101786006B1 publication Critical patent/KR101786006B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Abstract

머클 트리 기반 메모리 무결성 검증 방법을 개시한다.
검증 기준 시점에 검증대상 메모리의 각 부분 메모리 블록에 대해 해시 함수를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 기준 머클 트리를 구성하는 과정, 상기 기준 머클 트리의 루트 해시값을 온칩(On-chip) 메모리에 저장하는 과정, 검증 수행 시점에 상기 각 부분 메모리 블록에 대해 상기 해시 함수를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 검증 머클 트리를 구성하는 과정, 상기 검증 머클 트리의 루트 해시값을 상기 온칩 메모리에 저장된 기준 머클 트리의 루트 해시값과 비교하여 메모리의 무결성을 검증하는 과정을 포함하고, 상기 기준 머클 트리 및 상기 검증 머클 트리의 내부 노드의 값은 상기 내부 노드의 자식 노드들의 해시값의 합에 의해 결정되는 것을 특징으로 하는 메모리 무결성 검증 방법을 제공한다.

Description

머클 트리 기반 메모리 무결성 검증 방법 및 장치{Method And Apparatus for Memory Integrity Verification Based on Merkle Tree}
본 발명의 실시예는 머클 트리를 기반으로 한 메모리 무결성 검증 방법에 관한 것이다.
이 부분에 기술된 내용은 단순히 본 실시예에 대한 배경 정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.
컴퓨터 보안에 관한 중요도가 점차 높아지고 있다. 프로세서는 외부의 공격에도 불구하고 연산 결과가 옳다는 것을 보장할 수 있어야 한다. 프로세서는 메모리로부터 정보를 받아 연산하고 처리하므로, 프로세서의 신뢰 가능성 및 안정성을 보장받기 위해서는 메모리의 데이터에 대한 무결성이 보장되어야 한다.
머클 트리(Merkle tree)는 다양한 분야에서 데이터를 검증하는 자료 구조로 사용되는데 메모리의 무결성을 검증하는 방법으로도 자주 사용되고 있다. 머클 트리는 메모리 데이터의 해시값(Hash value)을 말단 노드로 구성하고 이를 이용하여 루트 노드를 생성한다. 생성된 루트 노드는 메모리 데이터의 모든 정보를 담고 있는 형상이 되며 데이터의 안전을 보장받을 수 있는 공간에 저장했다가 검증하는데 이용하게 된다.
기존의 머클 트리를 이용한 무결성 검증 방법에서는 데이터의 로드와 동시에 검증이 이루어지는데, 굳이 검증이 필요하지 않는 경우에도 검증과정을 거치게 되면 시간 지연이 발생한다. 검증이 필요한 시점은 프로세스의 연산을 통한 결과가 도출되어 이 결과를 저장하는 시점이므로 이를 일괄적으로 검증하기 위해 레이지 프로세싱(lazy-processing)을 이용하여 처리할 수 있다. 그러나 기존의 레이지 프로세싱의 경우 온칩(On-chip) 메모리 저장 공간의 소모가 크다는 단점이 있다. 또한, 데이터의 수정이 자주 발생하는 경우에는 데이터의 수정이 일어날 때마다 루트 노드를 갱신해야 하기 때문에 검증에 따른 연산 회수가 증가하고 처리 시간이 지연되는 문제가 있다.
본 발명의 실시예들은 검증과정에 따른 시간 지연을 최소화하고 온칩 메모리의 저장공간 소모를 최소화할 수 있는 머클 트리 기반의 메모리 무결성 검증 방법을 제공하는 것을 주된 목적으로 한다.
본 발명의 실시예에 의하면, 검증 기준 시점에 검증대상 메모리의 각 부분 메모리 블록에 대해 해시 함수를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 기준 머클 트리를 구성하는 과정, 기준 머클 트리의 루트 해시값을 온칩 메모리에 저장하는 과정, 검증 수행 시점에 각 부분 메모리 블록에 대해 해시 함수를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 검증 머클 트리를 구성하는 과정, 검증 머클 트리의 루트 해시값을 온칩 메모리에 저장된 기준 머클 트리의 루트 해시값과 비교하여 메모리의 무결성을 검증하는 과정을 포함하되, 기준 머클 트리 및 검증 머클 트리의 내부 노드의 값은 내부 노드의 자식 노드들의 해시값의 합에 의해 결정되는 것을 특징으로 하는 메모리 무결성 검증 방법을 제공한다.
본 발명의 실시예에서, 검증대상 메모리에서 온칩으로 데이터 로드(load)가 일어나는 부분 메모리 블록이 복수 개인 경우, 데이터 로드가 일어날 때마다 해당 부분 메모리 블록을 오프칩(Off-chip) 메모리에 할당된 큐(Queue)에 순차로 저장하고, 큐에 대해 해시 함수를 적용하여 산출된 제1 해시값을 온칩 메모리에 저장하는 과정, 검증 수행 시점에 큐에 대해 해시 함수를 적용한 제2 해시값을 산출하고, 온칩 메모리에 저장한 제1 해시값과 제2 해시값을 비교하여 큐에 대한 무결성을 검증하는 과정을 더 포함한다.
본 발명의 실시예에서, 온칩에 로드되어 있는 데이터를 수정한 경우, 수정된 데이터를 대응하는 부분 메모리 블록으로 인출하는 과정, 인출된 데이터의 무결성을 검증하는 과정, 인출된 데이터에 대하여 해시값을 산출하여 기준 머클 트리의 루트 해시값을 갱신하는 과정를 더 포함한다.
본 발명의 실시예에 의하면, 검증 기준 시점에 검증대상 메모리의 각 부분 메모리 블록에 대해 해시 함수를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 기준 머클 트리를 구성하는 기준 머클 트리 구성부, 기준 머클 트리의 루트 해시값을 온칩(On-chip) 메모리에 저장하는 기준 루트 해시값 저장부, 검증 수행 시점에 각 부분 메모리 블록에 대해 해시 함수를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 검증 머클 트리를 구성하는 검증 머클 트리 구성부, 검증 머클 트리의 루트 해시값을 온칩 메모리에 저장된 기준 머클 트리의 루트 해시값과 비교하여 메모리의 무결성을 검증하는 메모리 무결성 검증부를 포함하고, 기준 머클 트리 및 검증 머클 트리의 내부 노드의 값은 내부 노드의 자식 노드들의 해시값의 합에 의해 결정되는 것을 특징으로 하는 메모리 무결성 검증 장치를 제공한다.
컴퓨터에, 검증 기준 시점에 검증대상 메모리의 각 부분 메모리 블록에 대해 해시 함수를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 기준 머클 트리를 구성하는 과정, 기준 머클 트리의 루트 해시값을 온칩(On-chip) 메모리에 저장하는 과정, 검증 수행 시점에 각 부분 메모리 블록에 대해 해시 함수를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 검증 머클 트리를 구성하는 과정, 검증 머클 트리의 루트 해시값을 온칩 메모리에 저장된 기준 머클 트리의 루트 해시값과 비교하여 메모리의 무결성을 검증하는 과정을 실행하고, 기준 머클 트리 및 상기 검증 머클 트리의 내부 노드의 값은 내부 노드의 자식 노드들의 해시값의 합에 의해 결정되는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
이상에서 설명한 바와 같이 본 발명의 실시예들에 의하면, 일괄검증 및 일괄처리가 가능한 메모리 무결성 검증 알고리즘을 구현함으로써 검증에 필요한 연산 회수 및 지연 시간을 감소시키는 효과가 있다. 또한, 일괄적인 검증을 가능하게 하면서도 검증에 필요한 온칩 메모리의 저장공간 사용량을 최소화하는 효과가 있다.
도 1은 본 발명의 실시예에 따른 메모리 무결성 검증 방법을 구현하기 위한 하드웨어 플랫폼의 구성을 개략적으로 도시한 블록도이다.
도 2는 본 발명의 실시예에 따른 메모리 무결성 검증 방법의 개략적인 흐름도이다.
도 3은 본 발명의 실시예에 따른 메모리 무결성 검증 과정에서 검증대상 메모리에 대한 머클 트리를 구성하는 방법을 설명하기 위한 도면이다.
도 4는 본 발명의 다른 실시예들에 따른 메모리 무결성 검증 방법의 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 메모리 무결성 검증 장치의 주요 구성요소를 도시한 기능 블록도이다.
도 6은 본 발명의 다른 실시예에 따른 메모리 무결성 검증 장치의 주요 구성요소를 도시한 기능 블록도이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 '포함', '구비'한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 '…부', '모듈' 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 무결성 검증 방법을 구현하기 위한 하드웨어 플랫폼의 구성을 개략적으로 도시한 블록도이다.
본 발명의 실시예에 따른 메모리 무결성 검증 방법은 크게 온칩(On-chip)(100) 영역, 오프칩(Off-chip)(110) 영역으로 이루어진 하드웨어 플랫폼에서 구현된다. 온칩(100) 영역은 보안 공격으로부터 안전한 신뢰 영역이고, 오프칩(110) 영역은 보안 공격으로부터 상대적으로 안전하지 못한 비신뢰 영역이다. 온칩(100) 영역에는 프로세서(101), 캐시 메모리(102)가 포함될 수 있다. 오프칩(110) 영역에는 온칩(100) 영역에 연결된 DRAM 등의 메인메모리(111)가 포함될 수 있다. 메모리 무결성 검증 과정에서 안전하게 저장되어야 할 정보는 온칩(100) 영역의 메모리에 저장된다. 검증 과정에서 구성하는 기준 머클 트리의 루트 노드의 해시값과 같이 대조군으로 사용되는 정보 등이 온칩(100)에 저장될 수 있다.
도 2와 도 3을 참조하여 본 발명의 실시예에 따른 메모리 무결성 검증 방법을 이하에서 설명한다.
도 2는 본 발명의 실시예에 따른 메모리 무결성 검증 방법의 개략적인 흐름도이다.
도 3은 본 발명의 실시예에 따른 메모리 무결성 검증 과정에서 검증대상 메모리에 대한 머클 트리를 구성하는 방법을 설명하기 위한 도면이다.
먼저, 검증 기준 시점에 검증대상 메모리(10)의 각 부분 메모리 블록(310)에 대해 해시 함수를 적용하여 산출된 해시값을 종단 노드(320)의 값으로 갖는 기준 머클 트리를 구성한다(S210). 머클 트리를 구성하는 자세한 방법은 도 3을 참조하여 후술한다. 검증 기준 시점은 검증대상 메모리(10)의 전체 데이터가 신뢰 가능한 시점을 의미한다.
구성한 기준 머클 트리의 루트 노드(340)의 해시값('루트 노드의 해시값'은 이하 '루트 해시값'이라 함)은 검증대상 메모리(10)의 각 부분 메모리 블록(310)의 데이터에 대한 정보를 모두 포함하고 있는 값이며, 무결성 검증을 위한 대조군으로 사용하기 위해 안전한 온칩(100) 메모리에 저장한다(S220). 그 외 기준 머클 트리의 종단 노드(320)와 내부 노드(330)는 변조가 되어도 대조군에 영향을 미치지 못하기 때문에 오프칩(110) 메모리에 저장할 수 있다.
검증 수행 시점에 검증대상 메모리(10)의 각 부분 메모리 블록(310)의 해시값을 종단 노드(320)의 값으로 갖는 검증 머클 트리를 구성한다(S230). 검증 수행 시점은 메모리의 데이터에 대한 무결성이 입증되어야 하는 시점을 의미하며, 프로세서(101)에 의한 데이터의 로드(load)가 일어나는 시점 또는 프로세스의 연산을 통한 결과가 도출되어 이 결과를 저장하는 시점을 포함할 수 있다. 무결성에 대한 검증이 필요한 메모리 블록은 검증대상 메모리(10) 중 온칩(100)으로 데이터 로드가 일어난 부분 메모리 블록이다. 검증 머클 트리를 구성하는 과정에서 기준 머클 트리를 구성하면서 저장한 종단 노드(320)와 내부 노드(310)를 이용할 수 있다.
구성한 검증 머클 트리의 루트 해시값은 검증 수행 시점에서의 검증대상 메모리(10)의 각 부분 메모리 블록(310)의 데이터에 대한 정보를 모두 포함하고 있는 값이다. 검증 머클 트리의 루트 해시값을 온칩 메모리에 저장한 기준 머클 트리의 루트 해시값과 비교하여 메모리의 무결성을 검증한다(S340).
도 3을 참조하면, 본 발명의 실시예에 따른 메모리 무결성 검증 과정에서 검증대상 메모리(10)에 대한 머클 트리(300)는 검증대상 메모리(10)의 각 부분 메모리 블록(310)의 해시값을 종단 노드(320)로 구성하고, 내부 노드(330)는 각 내부 노드(330)의 자식 노드들의 해시값을 합하여 구성한다. 이러한 방식으로 루트 노드(340)까지 올라오면, 최상위 루트 노드(340)는 모든 자식 노드들의 데이터 블록을 대표하는 해시값을 갖는다.
예를 들어 검증대상 메모리(10)의 각 부분 메모리 블록(310)의 데이터 m1, m2, m3,…, m8의 해시값을 각 h1, h2, h3,…, h8이라 하면 종단 노드(320)는 각 h1, h2, h3,…, h8의 값을 갖는다. 내부 노드 h12(331)는 자식 노드들(321,322)의 해시값의 합인 h1+h2의 값을, 내부 노드 h1234(332)는 h1+2+h3+h4의 값을 갖게 되며, 루트 노드(340) h12345678은 h1+h2+h3+h4+h5+h6+h7+h8의 값을 갖게 된다.
본 실시예에 따른 머클 트리를 구성하는 과정에서 해시값을 얻기 위해 사용되는 해시 함수(Hash function)는 복수의 원소의 순서에 관계없이 복수의 원소를 합산한 결과를 해시한 결과와 각 원소를 해시한 결과를 합산한 결과가 동일한 해시값을 나타내는 특성을 포함할 수 있다. 즉, 원소 a, b에 대한 각 해시값을 H(a), H(b)라 할 때,
Figure 112016010241605-pat00001
으로 나타낼 수 있다.
본 실시예에 따른 머클 트리를 구성하는 과정에서 해시값을 얻기 위해 사용되는 해시 함수는 입력 데이터 값이 변화하는 경우, 해시값 갱신을 위한 연산값이 입력 데이터 값의 증가에 비례하여 증가하는 특성 및 해시값 갱신을 위한 연산값이 입력 데이터 값의 감소에 비례하여 감소하는 특성을 포함할 수 있다.
예를 들어 메시지 X에 대해서 이에 따른 해시값을 H(X)라 하였을 때, X에 대해 수정된 메시지를 X' 라 하고 X'=X+m 이라고 하면
Figure 112016010241605-pat00002
을 만족시킨다.
Figure 112016010241605-pat00003
를 알고 있는 상태에서 해시값을 계산하기 위해서 X를 알 필요가 없게 되며 보다 손쉽게 해시값을 업데이트할 수 있다.
즉,
Figure 112016010241605-pat00004
으로 나타낼 수 있으며,
Figure 112016010241605-pat00005
Figure 112016010241605-pat00006
Figure 112016010241605-pat00007
의 값을 이용해서 구할 수 있다. 특히 하나의 원소에 대해서
Figure 112016010241605-pat00008
로 나타낼 수 있다.
또한,
Figure 112016010241605-pat00009
의 조건을 만족할 때,
Figure 112016010241605-pat00010
으로 나타내어질 수 있으며,
Figure 112016010241605-pat00011
Figure 112016010241605-pat00012
Figure 112016010241605-pat00013
의 값을 이용해서 구할 수 있다. 특히 하나의 원소에 대해서
Figure 112016010241605-pat00014
일 때,
Figure 112016010241605-pat00015
로 나타낼 수 있다.
도 4는 본 발명의 다른 실시예들에 따른 메모리 무결성 검증 방법의 흐름도이다. 본 실시예들은 데이터 로드가 일어나는 메모리 블록이 복수 개인 경우 또는 데이터 로드가 일어난 메모리 블록의 데이터에 수정이 있는 경우에 몇 가지 과정을 더 포함한다. 도 4의 S401, S402, S406, S407의 과정은 각 도 2의 S201. S202, S203, S204의 과정과 동일하다.
먼저, 본 실시예에 따른 메모리 무결성 검증 과정에서 전체 검증할 메모리 블록(10)들 중 검증이 필요한 부분 메모리 블록이 복수 개인 경우, 부분 메모리 블록의 무결성을 일괄적으로 검증하기 위해 포함되는 과정을 설명한다.
검증 기준 시점에 검증대상 메모리(10)의 각 부분 메모리 블록(310)에 대해 해시 함수를 적용하여 산출된 해시값을 종단 노드(320)의 값으로 갖는 기준 머클 트리를 구성한다(S401). 구성한 기준 머클 트리의 루트 해시값을 온칩(100) 메모리에 저장한다(S402).
검증대상 메모리(10) 중 온칩(100)으로 데이터 로드(load)가 발생한 부분 메모리 블록이 복수 개인지 판단한다(S403). 여기서 데이터 로드란 프로세서가 데이터를 처리하기 위해 캐시 메모리 등으로 데이터를 호출하는 것을 말한다.
복수의 부분 메모리 블록을 일괄적으로 검증하기 위해 데이터 로드가 발생할 때마다 해당 부분 메모리 블록을 오프칩(110) 메모리에 할당된 제1 큐(Queue)에 저장하고, 제1 큐에 대한 해시값을 산출하여 온칩(100) 메모리에 저장한다(S404). 본 실시예에서 온칩(100) 메모리의 저장공간 점유를 최소화하기 위해 큐를 오프칩(110) 메모리에 할당하고, 큐의 검증을 위한 해시값을 산출하여 온칩(100) 메모리에 저장한다. 데이터 로드가 발생할 때마다 제1 큐에 대한 해시값이 갱신되는데, 본 과정(S404)에서 상기에서 설명한 해시 함수 중 어느 하나를 적용하여 제1 큐에 대한 해시값을 산출하는 경우, 해시값 갱신의 오버헤드가 감소한다.
검증 수행 시점에 제1 큐에 대한 해시값을 산출하여 S404 과정에서 온칩(100) 메모리에 저장한 해시값과 비교하여 제1 큐에 대한 무결성을 검증한다(S405).
다음으로, 본 실시예에 따른 메모리 무결성 검증 과정에서 데이터 로드가 일어난 부분 메모리 블록의 데이터에 수정이 있는 경우, 수정 이후 인출 및 대조군 갱신을 일괄적으로 처리하기 위해 포함되는 과정을 설명한다. 로드된 데이터가 수정되는 경우에는 향후 일괄 인출 및 갱신을 위해 데이터의 수정 요청이 있을 때마다 수정된 데이터를 임시로 오프칩(110) 메모리의 제2 큐에 저장하는 과정이 동반된다.
검증 수행시점에 검증대상 메모리(10)의 각 부분 메모리 블록(310)의 해시값을 종단 노드(320)의 값으로 갖는 검증 머클 트리를 구성한다(S406). 검증 머클 트리의 루트 해시값을 온칩 메모리에 저장한 기준 머클 트리의 루트 해시값과 비교하여 메모리의 무결성을 검증한다(S407).
메모리 무결성 검증 과정(S407)이 완료되면 온칩에 로드되어 있는 데이터가 수정되었는지 판단한다(S408). 온칩에 로드되어 있는 데이터를 수정한 경우, 제2 큐에 저장된 수정된 데이터를 대응하는 부분 메모리 블록으로 인출한다(S409). 제2 큐는 오프칩 메모리에 할당된 공간이므로, 인출된 데이터를 저장한 제2 큐에 대한 무결성을 검증한다(S410). 데이터가 수정되었으므로 기준 루트 해시값을 갱신한다(S411). 기준 루트 해시값의 갱신은 머클 트리의 재구성 없이, 무결성이 검증된 제2 큐의 해시값 및 수정 전 데이터에 대한 해시값을 산출하여 갱신할 수 있다. 구체적으로 온칩(100)에 저장된 기존의 기준 머클 트리의 루트 해시값에 제2 큐의 해시값을 더하고, 모든 수정 전 데이터에 대한 해시값을 빼주는 방법으로 머클 트리의 재구성 없이 일괄적으로 기준 루트 해시값의 갱신이 가능하다. 로드된 데이터가 수정되지 않았으면 검증 과정을 종료한다.
도 5는 본 발명의 일 실시예에 따른 메모리 무결성 검증 장치의 주요 구성요소를 도시한 기능 블록도이다. 도 5에는 검증대상 메모리(10) 및 메모리 무결성 검증 장치(500)를 나타내는 기능 블록이 도시되어 있다.
본 발명의 일 실시예에 따른 메모리 무결성 검증 장치(500)는 기준 머클 트리 구성부(510), 기준 루트 해시값 저장부(520), 검증 머클 트리 구성부(530) 및 메모리 무결성 검증부(540)를 포함하여 구성된다.
본 실시예에 따른 기준 머클 트리 구성부(510)는, 검증 기준 시점에 검증대상 메모리(10)의 각 부분 메모리 블록(310)에 대해 해시 함수를 적용하여 산출된 해시값을 각 종단 노드(320)의 값으로 하는 기준 머클 트리를 구성한다.
본 실시예에 따른 기준 머클 트리 구성부(510)는 기준 머클 트리의 종단 노드의 해시값을 저장하는 기준 종단 노드 저장부(511), 기준 머클 트리의 내부 노드의 해시값을 저장하는 기준 내부 노드 저장부(512) 및 기준 머클 트리의 루트 노드를 생성하는 기준 루트 노드 생성부(513)를 포함한다. .
기준 루트 해시값 저장부(520)는 기준 루트 노드 생성부(513)에서 생성한 기준 머클 트리의 루트 노드의 해시값을 온칩(100) 메모리에 저장한다.
검증 머클 트리 구성부(530)는 검증 수행 시점에 검증대상 메모리(10)의 각 부분 메모리 블록의 해시값을 종단 노드(320)의 값으로 갖는 검증 머클 트리를 구성한다.
본 실시예에 따른 검증 머클 트리 구성부(530)는 검증 머클 트리의 종단 노드의 해시값을 저장하는 검증 종단 노드 저장부(531), 검증 머클 트리의 내부 노드의 해시값을 저장하는 검증 내부 노드 저장부(532) 및 검증 머클 트리의 루트 노드를 생성하는 검증 루트 노드 생성부(533)를 포함한다.
메모리 무결성 검증부(540)는 검증 투르 노드 생성부(531)에서 생성한 검증 머클 트리의 루트 노드의 해시값을 검증 루트 해시값으로 얻고, 기준 루트 해시값 저장부(520)에 저장된 기준 루트 해시값과 비교하여 검증대상 메모리(10)의 무결성을 검증한다.
도 6은 본 발명의 다른 실시예에 따른 메모리 무결성 검증 장치의 주요 구성요소를 도시한 기능 블록도이다.
데이터 로드 정보 처리부(610)는 검증대상 메모리(10)에서 온칩(100)으로 데이터 로드가 일어나는 부분 메모리 블록이 복수 개인 경우, 데이터 로드가 일어날 때마다 해당 부분 메모리 블록을 오프칩(110) 메모리에 할당된 제1 큐에 순차로 저장하고, 큐에 대해 해시값을 산출하여 온칩(100) 메모리에 저장한다. 검증 수행하 시점에 제1 큐에 대한 해시값을 산출하여 온칩(100) 메모리에 저장한 해시값과 비교하여 제1 큐에 대한 무결성을 검증한다.
데이터 수정 정보 처리부(620)는 온칩(100)에 로드되어 있는 데이터를 수정한 경우, 제2 큐에 저장한 수정된 데이터를 대응하는 부분 메모리 블록으로 인출하고, 인출된 데이터의 무결성을 검증한다. 데이터가 수정되었으므로 기준 루트 해시값을 갱신한다.
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
전술한 바와 같이, 도 3에 기재된 메모리 무결성 검증 방법은 프로그램으로 구현되고 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다. 본 실시예에 따른 기재된 메모리 무결성 검증 방법을 구현하기 위한 프로그램이 기록되고 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 이러한 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수도 있다. 또한, 본 실시예를 구현하기 위한 기능적인(Functional) 프로그램, 코드 및 코드 세그먼트들은 본 실시예가 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있을 것이다.
100: 온칩(On-chip) 101: 프로세서
102: 캐시 메모리 110: 오프칩(Off-chip)
10: 검증대상 메모리 300: 검증대상 메모리에 대한 머클 트리
310: 각 부분 메모리 블록 320: 종단 노드
321,322: 내부 노드 h12의 자식 노드들
330: 내부 노드 331: 내부 노드 h12
332: 내부 노드 h1234 340: 루트 노드
500: 메모리 무결성 검증 장치

Claims (11)

  1. 검증 기준 시점에 검증대상 메모리의 각 부분 메모리 블록에 대해 해시 함수(Hash function)를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 기준 머클 트리(Merkle tree)를 구성하는 과정;
    상기 기준 머클 트리의 루트 해시값을 온칩(On-chip) 메모리에 저장하는 과정;
    검증 수행 시점에 상기 각 부분 메모리 블록에 대해 상기 해시 함수를 적용하여 산출된 해시값(Hash value)을 각 종단 노드의 값으로 갖는 검증 머클 트리를 구성하는 과정; 및
    상기 검증 머클 트리의 루트 해시값을 상기 온칩 메모리에 저장된 기준 머클 트리의 루트 해시값과 비교하여 메모리의 무결성을 검증하는 과정을 포함하고,
    상기 기준 머클 트리 및 상기 검증 머클 트리의 내부 노드의 값은 상기 내부 노드의 자식 노드들의 해시값의 합에 의해 결정되고,
    상기 검증 기준 시점은, 상기 검증대상 메모리의 전체 데이터가 신뢰 가능한 시점이고,
    상기 검증 수행 시점은, 프로세서에 의한 데이터의 로드(load)가 일어나는 시점, 프로세스의 연산을 통한 결과가 도출되어 이 결과를 저장하는 시점 중 어느 하나인 것을 특징으로 하는 메모리 무결성 검증 방법.
  2. 삭제
  3. 검증 기준 시점에 검증대상 메모리의 각 부분 메모리 블록에 대해 해시 함수(Hash function)를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 기준 머클 트리(Merkle tree)를 구성하는 과정;
    상기 기준 머클 트리의 루트 해시값을 온칩(On-chip) 메모리에 저장하는 과정;
    검증 수행 시점에 상기 각 부분 메모리 블록에 대해 상기 해시 함수를 적용하여 산출된 해시값(Hash value)을 각 종단 노드의 값으로 갖는 검증 머클 트리를 구성하는 과정; 및
    상기 검증 머클 트리의 루트 해시값을 상기 온칩 메모리에 저장된 기준 머클 트리의 루트 해시값과 비교하여 메모리의 무결성을 검증하는 과정을 포함하고,
    상기 기준 머클 트리 및 상기 검증 머클 트리의 내부 노드의 값은 상기 내부 노드의 자식 노드들의 해시값의 합에 의해 결정되고,
    상기 해시 함수는,
    복수의 원소의 순서에 관계없이, 복수의 원소를 합산한 결과를 해시한 결과와 각 원소를 해시한 결과를 합산한 결과가 동일한 해시값을 나타내는 특성을 갖는 것을 특징으로 하는 메모리 무결성 검증 방법.
  4. 제3항에 있어서,
    상기 검증대상 메모리에서 상기 온칩으로 데이터 로드가 일어나는 부분 메모리 블록이 복수 개인 경우, 데이터 로드가 일어날 때마다 해당 부분 메모리 블록을 오프칩(Off-chip) 메모리에 할당된 큐(Queue)에 순차로 저장하고, 상기 큐에 대해 상기 해시 함수를 적용하여 산출된 제1 해시값을 온칩 메모리에 저장하는 과정; 및
    상기 검증 수행 시점에 상기 큐에 대해 상기 해시 함수를 적용한 제2 해시값을 산출하고, 상기 온칩 메모리에 저장한 제1 해시값과 상기 제2 해시값을 비교하여 상기 큐에 대한 무결성을 검증하는 과정
    을 더 포함하는 것을 특징으로 하는 메모리 무결성 검증 방법.
  5. 제3항에 있어서,
    상기 해시 함수는,
    입력 데이터 값이 변화하는 경우, 해시값 갱신을 위한 연산값이 입력 데이터 값의 증가에 비례하여 증가하는 특성 및 해시값 갱신을 위한 연산값이 입력 데이터 값의 감소에 비례하여 감소하는 특성을 추가로 더 갖는 것을 특징으로 하는 메모리 무결성 검증 방법.
  6. 제5항에 있어서,
    상기 온칩에 로드되어 있는 데이터를 수정한 경우, 상기 수정된 데이터를 대응하는 부분 메모리 블록으로 인출하는 과정;
    상기 인출된 데이터의 무결성을 검증하는 과정; 및
    상기 인출된 데이터에 대하여 상기 해시 함수를 적용한 해시값 및 수정 전 데이터에 대하여 상기 해시 함수를 적용한 해시값을 산출하여 상기 기준 머클 트리의 루트 해시값을 갱신하는 과정
    를 더 포함하는 것을 특징으로 하는 메모리 무결성 검증 방법.
  7. 제6항에 있어서,
    상기 기준 머클 트리의 루트 해시값을 갱신하는 과정은,
    상기 온칩 메모리에 저장된 기존의 기준 머클 트리의 루트 해시값에 상기 인출된 데이터의 해시값을 합하고, 상기 수정 전 데이터의 해시값을 빼준 값으로 기존 머클 트리의 루트 해시값을 갱신하는 것을 특징으로 하는 메모리 무결성 검증 방법.
  8. 검증 기준 시점에 검증대상 메모리의 각 부분 메모리 블록에 대해 해시 함수를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 기준 머클 트리를 구성하는 기준 머클 트리 구성부;
    상기 기준 머클 트리의 루트 해시값을 온칩(On-chip) 메모리에 저장하는 기준 루트 해시값 저장부;
    검증 수행 시점에 상기 각 부분 메모리 블록에 대해 상기 해시 함수를 적용하여 산출한 해시값을 각 종단 노드의 값으로 하는 검증 머클 트리를 갖는 검증 머클 트리 구성부;
    상기 검증 머클 트리의 루트 해시값을 상기 온칩 메모리에 저장된 기준 머클 트리의 루트 해시값과 비교하여 메모리의 무결성을 검증하는 메모리 무결성 검증부; 및
    상기 검증대상 메모리에서 상기 온칩으로 데이터 로드가 일어나는 부분 메모리 블록이 복수 개인 경우, 데이터 로드가 일어날 때마다 해당 부분 메모리 블록을 오프칩 메모리에 할당된 큐에 순차로 저장하고, 상기 큐에 대해 상기 해시 함수를 적용하여 산출된 제1 해시값을 온칩 메모리에 저장하고, 상기 검증 수행 시점에 상기 큐에 대해 상기 해시 함수를 적용한 제2 해시값을 산출하고, 상기 온칩 메모리에 저장한 제1 해시값과 상기 제2 해시값을 비교하여 상기 큐에 대한 무결성을 검증하는 데이터 로드 정보 처리부를 포함하고,
    상기 기준 머클 트리 및 상기 검증 머클 트리의 내부 노드의 값은 상기 내부 노드의 자식 노드들의 해시값의 합에 의해 결정되는 것을 특징으로 하는 메모리 무결성 검증 장치.
  9. 삭제
  10. 제 8항에 있어서,
    상기 온칩에 로드되어 있는 데이터를 수정한 경우, 상기 수정된 데이터를 대응하는 부분 메모리 블록으로 인출하는 과정;
    상기 인출된 데이터의 무결성을 검증하는 과정; 및
    상기 인출된 데이터에 대하여 해시값을 산출하여 상기 기준 머클 트리의 루트 해시값을 갱신하는 과정
    을 수행하는 데이터 수정 정보 처리부를 더 포함하는 것을 특징으로 하는 메모리 무결성 검증 장치.
  11. 하드웨어와 결합되어,
    검증 기준 시점에 검증대상 메모리의 각 부분 메모리 블록에 대해 해시 함수를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 기준 머클 트리를 구성하는 과정;
    상기 기준 머클 트리의 루트 해시값을 온칩 메모리에 저장하는 과정;
    검증 수행 시점에 상기 각 부분 메모리 블록에 대해 상기 해시 함수를 적용하여 산출된 해시값을 각 종단 노드의 값으로 갖는 검증 머클 트리를 구성하는 과정; 및
    상기 검증 머클 트리의 루트 해시값을 상기 온칩 메모리에 저장된 기준 머클 트리의 루트 해시값과 비교하여 메모리의 무결성을 검증하는 과정을 실행시키기 위하여 컴퓨터 판독가능한 기록매체에 저장되고,
    상기 기준 머클 트리 및 상기 검증 머클 트리의 내부 노드의 값은 상기 내부 노드의 자식 노드들의 해시값의 합에 의해 결정되고,
    상기 검증 기준 시점은, 상기 검증대상 메모리의 전체 데이터가 신뢰 가능한 시점이고,
    상기 검증 수행 시점은, 프로세서에 의한 데이터의 로드(load)가 일어나는 시점, 프로세스의 연산을 통한 결과가 도출되어 이 결과를 저장하는 시점 중 어느 하나인 것을 특징으로 하는 컴퓨터프로그램.
KR1020160011954A 2016-01-29 2016-01-29 머클 트리 기반 메모리 무결성 검증 방법 및 장치 KR101786006B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160011954A KR101786006B1 (ko) 2016-01-29 2016-01-29 머클 트리 기반 메모리 무결성 검증 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160011954A KR101786006B1 (ko) 2016-01-29 2016-01-29 머클 트리 기반 메모리 무결성 검증 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170091248A KR20170091248A (ko) 2017-08-09
KR101786006B1 true KR101786006B1 (ko) 2017-10-17

Family

ID=59652660

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160011954A KR101786006B1 (ko) 2016-01-29 2016-01-29 머클 트리 기반 메모리 무결성 검증 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101786006B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101855442B1 (ko) * 2017-12-28 2018-05-09 주식회사 차칵 미디어 파일 위변조 검증 방법
KR20200090369A (ko) * 2019-01-21 2020-07-29 주식회사 머니브레인 블록체인에 기반하여 규격화된 패턴을 머클 트리 구조로 인증하는 방법 및 장치
KR20210015199A (ko) 2019-08-01 2021-02-10 주식회사 블룸테크놀로지 원장의 증명 가능 프루닝 시스템
KR20210113840A (ko) * 2020-03-09 2021-09-17 엔에이치엔 주식회사 프로그램 코드 조작 검출 방법 및 그 장치
US11914564B1 (en) 2022-11-11 2024-02-27 Penta Security Inc. Merkle tree-based data management method and apparatus

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3759865B1 (en) * 2018-02-27 2024-04-03 Visa International Service Association High-throughput data integrity via trusted computing
KR102424841B1 (ko) * 2018-03-02 2022-07-26 주식회사 아이콘루프 스마트 계약 시스템에서 블록체인을 생성하고 무결성을 검증하는 방법
CN112487492B (zh) * 2019-04-04 2023-11-17 创新先进技术有限公司 数据验证方法、系统及设备
KR102250779B1 (ko) * 2019-05-14 2021-05-11 단국대학교 산학협력단 실행코드 무결성 검증 방법 및 장치, 그것을 포함하는 임베디드 장치
US11409724B2 (en) 2020-03-10 2022-08-09 International Business Machines Corporation Hashed balanced tree data structure
CN111444535B (zh) * 2020-03-20 2024-01-26 苏州链原信息科技有限公司 用于生成聚合数据标签的方法、设备及计算机存储介质
CN115641141A (zh) * 2022-09-30 2023-01-24 蚂蚁区块链科技(上海)有限公司 区块链系统中的状态验证方法、装置、节点和区块链系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006065851A (ja) 2004-08-27 2006-03-09 Microsoft Corp アドレスビットを使用してアドレス空間におけるデータのセキュリティ属性を通知するシステムおよび方法
JP2012531000A (ja) 2009-12-16 2012-12-06 インテル・コーポレーション 隠れ実行環境における整合性検証及び証明の提供

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006065851A (ja) 2004-08-27 2006-03-09 Microsoft Corp アドレスビットを使用してアドレス空間におけるデータのセキュリティ属性を通知するシステムおよび方法
JP2012531000A (ja) 2009-12-16 2012-12-06 インテル・コーポレーション 隠れ実行環境における整合性検証及び証明の提供

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101855442B1 (ko) * 2017-12-28 2018-05-09 주식회사 차칵 미디어 파일 위변조 검증 방법
KR20200090369A (ko) * 2019-01-21 2020-07-29 주식회사 머니브레인 블록체인에 기반하여 규격화된 패턴을 머클 트리 구조로 인증하는 방법 및 장치
KR102219751B1 (ko) 2019-01-21 2021-02-24 주식회사 머니브레인 블록체인에 기반하여 규격화된 패턴을 머클 트리 구조로 인증하는 방법 및 장치
KR20210015199A (ko) 2019-08-01 2021-02-10 주식회사 블룸테크놀로지 원장의 증명 가능 프루닝 시스템
KR20210113840A (ko) * 2020-03-09 2021-09-17 엔에이치엔 주식회사 프로그램 코드 조작 검출 방법 및 그 장치
KR102337963B1 (ko) * 2020-03-09 2021-12-10 엔에이치엔 주식회사 프로그램 코드 조작 검출 방법 및 그 장치
US11914564B1 (en) 2022-11-11 2024-02-27 Penta Security Inc. Merkle tree-based data management method and apparatus

Also Published As

Publication number Publication date
KR20170091248A (ko) 2017-08-09

Similar Documents

Publication Publication Date Title
KR101786006B1 (ko) 머클 트리 기반 메모리 무결성 검증 방법 및 장치
US11914712B1 (en) Blockchain based secure naming and update verification
KR101647567B1 (ko) 장치에 대한 보안을 제공하는 방법 및 장치
JP6746156B2 (ja) ソフトウェアリパッケージング防止方法および装置
CN107426165B (zh) 一种支持密钥更新的双向安全云存储数据完整性检测方法
US8984010B2 (en) Build pooled data source based on hana SAML login
US9578044B1 (en) Detection of anomalous advertising content
US9563769B2 (en) System and method for secure loading data in a cache memory
US8954949B2 (en) Smart patch delivery system
JP2014112892A5 (ko)
US10757087B2 (en) Secure client authentication based on conditional provisioning of code signature
US20090055656A1 (en) Method of Maintaining Software Integrity
CN113326058A (zh) 一种应用的版本更新方法、装置、设备及介质
WO2019201040A1 (zh) 一种管理更新文件的方法、系统及终端设备
US9467291B2 (en) Information processing system, information processing method, and non-transitory computer readable medium for processing requests using an authority object
US11681513B2 (en) Controlled scope of authentication key for software update
JP2018106700A (ja) リアルタイムで監査可能なクラウドアクセス方法
US20220158856A1 (en) Attestation of trusted execution environments
CN112395339A (zh) 系统间数据准入校验方法、装置、计算机设备和存储介质
CN110471669B (zh) 一种空指针引用的检测方法及检测装置
EP2843587A1 (en) Method for generating evidence-data for a long-term data storage system for datasets
CN106155709A (zh) 插件加载方法、装置及设备
US11740888B2 (en) Method and system for verification of patch installation
He et al. Extending Over-the-Air Libraries to Secure ESP8266 Updates
US20240111875A1 (en) Transparent web content validation tree

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant