KR101484882B1 - 포렌식 데이터 복원 방법 및 시스템 - Google Patents

포렌식 데이터 복원 방법 및 시스템 Download PDF

Info

Publication number
KR101484882B1
KR101484882B1 KR20140037623A KR20140037623A KR101484882B1 KR 101484882 B1 KR101484882 B1 KR 101484882B1 KR 20140037623 A KR20140037623 A KR 20140037623A KR 20140037623 A KR20140037623 A KR 20140037623A KR 101484882 B1 KR101484882 B1 KR 101484882B1
Authority
KR
South Korea
Prior art keywords
data
page
file
header
wal
Prior art date
Application number
KR20140037623A
Other languages
English (en)
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 KR20140037623A priority Critical patent/KR101484882B1/ko
Application granted granted Critical
Publication of KR101484882B1 publication Critical patent/KR101484882B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 롤백 저널(Rollback Journal) 파일 및 WAL(Write Ahead Log) 파일에 대한 저널 구조 정보를 이용하여 상기 롤백 저널 파일 및 상기 WAL 파일에 대한 비할당 영역을 식별하여 수집하는 제1 수집부, DB 페이지의 구조 정보를 이용하여 DB 페이지에 대한 비할당 영역을 식별하여 수집하는 제2 수집부, 상기 DB 페이지의 미사용 영역을 데이터 종류 정보에 대응하는 매치 타입 데이터로 변환하는 변환부 및 스키마 타입(schema type), 스키마 네임(schema name), 루트 페이지 번호(root page number) 및 쿼리문(query statement)을 포함하는 스키마 테이블 정보로부터 매치 타입 리스트를 생성하고, 상기 변환된 매치 타입 데이터를 상기 생성된 매치 타입 리스트와 매칭하여 상기 매칭된 매치 타입 데이터를 추출하는 복원부를 포함하는 포렌식 데이터 복원 방법 및 시스템을 개시한다.

Description

포렌식 데이터 복원 방법 및 시스템{FORENSIC DATA RECOVERY METHOD AND SYSTEM}
본 발명은 포렌식 데이터 복원 시스템 및 그 동작 방법에 관한 것으로, 더욱 상세하게는 저널 로그 파일이 포함된 비할당 DB 페이지를 이용한 포렌식 데이터 복원 시스템 및 그 동작 방법에 관한 것이다.
SQLite 데이터베이스는 ANSI-C를 기반으로 제작된 오픈소스 데이터베이스 소프트웨어로서 작고 속도가 빠른 특징 때문에 많은 양의 정보를 체계적으로 저장할 수 있는 응용 프로그램이나 임베디드 기기에 탑재된 소프트웨어에서 주로 사용되고 있는 추세이다.
예를 들어, SQLite 데이터베이스는 이동 통신 단말기에서 주로 사용되고, 이동 통신 단말기에 포함되는 스마트폰의 경우, SQLite 데이터베이스는 전화번호부, 통화 기록, 문자 메시지, 카카오톡, 네이버 라인 및 SNS 등을 포함한 메시지 정보 및 사용자 정보를 저장하는데 사용되고 있다.
SQLite 데이터베이스 파일에 저장되는 정보는 범죄 사건과 관련된 민감한 정보들이 저장되어 있는 경우가 많기 때문에, 포렌식 조사에 중요한 수사 정보로 이용될 수 있다.
그러나, 대부분의 사용자는 빈번한 쓰기와 삭제로 인하여 수사에 중요한 정보들이 삭제되거나 덮어 써지는 경우가 자주 발생되고, 용의자는 의도적으로 데이터를 삭제하여 포렌식 수사를 방해하기도 한다.
또한, 종래의 데이터베이스 복원 시스템은 저널 로그 파일의 헤더 정보를 이용하여 데이터베이스 복원이 가능하였으나, 저널 로그 파일에 대한 헤더가 덮어쓰기 또는 단편화에 의해 찾을 수 없는 경우에는 데이터베이스 복원이 불가능한 문제점이 존재하였다.
대한민국 공개특허 제1020120072119호(2012.07.03), "대용량 포렌식 이미지의 정보 추출 장치" 대한민국 공개특허 제1020140000369호(2014.01.03), "문서파일의 포렌식 분석 방법 및 시스템"
본 발명의 일실시예는 매치 타입 데이터와 매치 타입 리스트를 이용하여 비할당 영역에 대한 복원을 수행하는 포렌식 데이터 복원 시스템 및 방법을 제공한다.
본 발명의 일실시예는 롤백 저널 파일의 헤더 및 WAL 파일의 헤더 중 어느 하나가 유실된 경우에도 비할당 영역에 대한 수집 및 복원을 수행하는 포렌식 데이터 복원 시스템 및 방법을 제공한다.
본 발명의 일실시예는 비할당 영역에 대한 수집 및 복원을 병렬적으로 수행 가능한 포렌식 데이터 복원 시스템 및 방법을 제공한다.
본 발명의 일실시예는 수집된 비할당 영역의 중복된 데이터를 제거하여 복원 처리에 대한 복잡도 및 수행시간을 줄이는 포렌식 데이터 복원 시스템 및 방법을 제공한다.
본 발명의 일실시예에 따른 포렌식 데이터 복원 시스템은 롤백 저널(Rollback Journal) 파일 및 WAL(Write Ahead Log) 파일에 대한 저널 구조 정보를 이용하여 상기 롤백 저널 파일 및 상기 WAL 파일에 대한 비할당 영역을 식별하여 수집하는 제1 수집부, DB 페이지의 구조 정보를 이용하여 DB 페이지에 대한 비할당 영역을 식별하여 수집하는 제2 수집부, 상기 DB 페이지의 미사용 영역을 데이터 종류 정보에 대응하는 매치 타입 데이터로 변환하는 변환부 및 스키마 타입(schema type), 스키마 네임(schema name), 루트 페이지 번호(root page number) 및 쿼리문(query statement)을 포함하는 스키마 테이블 정보로부터 매치 타입 리스트를 생성하고, 상기 변환된 매치 타입 데이터를 상기 생성된 매치 타입 리스트와 매칭하여 상기 매칭된 매치 타입 데이터를 추출하는 복원부를 포함한다.
상기 데이터 종류 정보는 데이터 타입, 바이트 길이 정보 및 상기 데이터 타입 및 상기 바이트 길이 정보를 기반으로 형성된 매치 타입을 포함할 수 있다.
상기 복원부는 상기 데이터 종류 정보의 구조방식에 대한 상기 쿼리문으로부터 상기 매치 타입 리스트를 생성하고, 상기 생성된 매치 타입 리스트와 매칭되는 상기 변환된 매치 타입 데이터를 추출할 수 있다.
상기 제1 수집부는 상기 롤백 저널 파일의 헤더 또는 상기 WAL 파일의 헤더가 유실되지 않았다고 판단되는 경우, 상기 롤백 저널 파일의 헤더 또는 상기 WAL 파일의 헤더 및 체크섬(checksum)이 포함된 상기 저널 구조 정보를 이용하여 롤백 저널 파일이나 WAL 파일을 수집할 수 있다.
상기 제2 수집부는 상기 롤백 저널 파일의 헤더 및 상기 WAL 파일의 헤더가 유실되었다고 판단되는 경우, 상기 DB 페이지를 포함하는 비할당 영역을 4바이트 단위로 식별하고, 상기 롤백 저널 파일에 대한 페이지 레코드의 체크섬을 이용하여 상기 DB 페이지를 수집하며, 상기 WAL 파일에 대한 WAL 프레임 헤더의 체크섬을 이용하여 상기 DB 페이지를 수집할 수 있다.
상기 제1 수집부, 상기 제2 수집부, 상기 변환부 및 상기 복원부는 각각 병렬적 프로세스를 수행할 수 있다.
본 발명의 일실시예에 따른 포렌식 데이터 복원 시스템은 상기 수집된 비할당 영역의 데이터를 입력으로 하는 해쉬 알고리즘을 통한 해쉬값을 저장하고, 상기 수집된 비할당 영역의 데이터에 대한 해쉬값을 기반으로 상기 수집된 비할당 영역의 데이터의 중복을 제어하는 중복데이터 제거부를 더 포함할 수 있다.
상기 중복데이터 제거부는 상기 수집된 비할당 영역의 데이터에 대한 해쉬값과 할당 영역으로부터 수집된 데이터에 대한 해시값을 비교하여 상기 수집된 비할당 영역의 데이터 및 상기 변환된 매치 타입 데이터의 중복을 제어할 수 있다.
본 발명의 일실시예에 따른 포렌식 데이터 복원 방법은 롤백 저널 파일 및 WAL 파일에 대한 저널 구조 정보를 이용하여 상기 롤백 저널 파일 및 상기 WAL 파일에 대한 비할당 영역을 식별하여 수집하는 단계, DB 페이지의 구조 정보를 이용하여 DB 페이지에 대한 비할당 영역을 식별하여 수집하는 단계, 상기 DB 페이지의 미사용 영역을 데이터 종류 정보에 대응하는 매치 타입 데이터로 변환하는 단계 및 스키마 타입, 스키마 네임, 루트 페이지 번호 및 쿼리문을 포함하는 스키마 테이블 정보로부터 매치 타입 리스트를 생성하고, 상기 변환된 매치 타입 데이터를 상기 생성된 매치 타입 리스트와 매칭하여 상기 매칭된 매치 타입 데이터를 추출하는 단계를 포함한다.
상기 데이터 종류 정보는 데이터 타입, 바이트 길이 정보 및 상기 데이터 타입 및 상기 바이트 길이 정보를 기반으로 형성된 매치 타입을 포함할 수 있다.
상기 매칭된 매치 타입 데이터를 추출하는 상기 단계는 상기 데이터 종류 정보의 구조방식에 대한 상기 쿼리문으로부터 상기 매치 타입 리스트를 생성하고, 상기 생성된 매치 타입 리스트와 매칭되는 상기 변환된 매치 타입 데이터를 추출하는 단계를 포함할 수 있다.
상기 롤백 저널 파일 및 상기 WAL 파일에 대한 비할당 영역을 식별하여 수집하는 상기 단계는 상기 롤백 저널 파일의 헤더 또는 상기 WAL 파일의 헤더 및 체크섬이 포함된 상기 저널 구조 정보를 이용하여 롤백 저널 파일이나 WAL 파일을 수집하는 단계를 포함할 수 있다.
DB 페이지에 대한 비할당 영역을 식별하여 수집하는 상기 단계는 상기 DB 페이지를 포함하는 비할당 영역을 4바이트 단위로 식별하는 단계 및 상기 롤백 저널 파일에 대한 페이지 레코드의 체크섬을 이용하여 상기 DB 페이지를 수집하고, 상기 WAL 파일에 대한 WAL 프레임 헤더의 체크섬을 이용하여 상기 DB 페이지를 수집하는 단계를 포함할 수 있다.
상기 포렌식 데이터 복원 방법은 상기 수집된 비할당 영역의 데이터를 입력으로 하는 해쉬 알고리즘을 통한 해쉬값을 저장하고, 상기 수집된 비할당 영역의 데이터에 대한 해쉬값을 기반으로 상기 수집된 비할당 영역의 데이터의 중복을 제어하는 단계를 더 포함할 수 있다.
본 발명의 일실시예는 매치 타입 데이터와 매치 타입 리스트를 이용하여 비할당 영역에 대한 복원을 수행할 수 있다.
본 발명의 일실시예는 롤백 저널 파일의 헤더 및 WAL 파일의 헤더 중 어느 하나가 유실된 경우에도 비할당 영역에 대한 복원을 수행할 수 있다.
본 발명의 일실시예는 비할당 영역에 대한 복원을 병렬적으로 추출 프로세스를 기반으로 수행할 수 있다.
본 발명의 일실시예는 수집된 비할당 영역의 중복된 데이터를 제거하여 복원 처리에 대한 복잡도 및 수행시간을 줄일 수 있다.
도 1은 본 발명의 일실시예에 따른 포렌식 데이터 복원 시스템을 도시한 블록도이다.
도 2는 데이터베이스의 구조를 도시한 것이다.
도 3은 데이터베이스의 도 2에 도시된 페이지의 구조를 도시한 것이다.
도 4는 도 3에 도시된 비-트리 페이지에 포함되는 비할당 영역을 도시한 것이다.
도 5는 도 4에 도시된 DB 페이지의 구조를 도시한 것이다.
도 6은 본 발명의 프렌식 데이터 복원 시스템을 통하여 DB 페이지 및 비할당 DB 페이지 영역을 매치 타입 데이터로 변환하는 것을 도시한 예이다.
도 7은 본 발명의 일실시예에 따른 포렌식 데이터 복원 방법을 도시한 흐름도이다.
이하 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 실시예를 상세하게 설명하지만, 본 발명이 실시예에 의해 제한되거나 한정되는 것은 아니다.
한편, 본 발명을 설명함에 있어서, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는, 그 상세한 설명을 생략할 것이다. 그리고, 본 명세서에서 사용되는 용어(terminology)들은 본 발명의 실시예를 적절히 표현하기 위해 사용된 용어들로서, 이는 사용자, 운용자의 의도 또는 본 발명이 속하는 분야의 관례 등에 따라 달라질 수 있다. 따라서, 본 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 일실시예에 따른 포렌식 데이터 복원 시스템을 도시한 블록도이다.
도 1을 참조하면, 포렌식 데이터 복원 시스템(100)은 제1 수집부(110), 제2 수집부(120), 변환부(130) 및 복원부(140)를 포함한다.
제1 수집부(110)는 롤백 저널(Rollback Journal) 파일 및 WAL(Write Ahead Log) 파일에 대한 저널 구조 정보를 이용하여 롤백 저널 파일 및 WAL 파일에 대한 비할당 영역을 식별하여 수집한다.
제2 수집부(120)는 DB 페이지의 구조 정보를 이용하여 DB 페이지에 대한 비할당 영역을 식별하여 수집한다.
변환부(130)는 DB 페이지의 미사용 영역을 데이터 종류 정보에 대응하는 매치 타입 데이터로 변환한다.
복원부(140)는 스키마 타입(schema type), 스키마 네임(schema name), 루트 페이지 번호(root page number) 및 쿼리문(query statement)을 포함하는 스키마 테이블 정보로부터 매치 타입 리스트를 생성하고, 변환된 매치 타입 데이터를 생성된 매치 타입 리스트와 매칭하여 매칭된 매치 타입 데이터를 추출한다.
이하에서는 본 발명의 포렌식 데이터 복원 시스템(100)의 구체적인 설명을 위하여 도 2 내지 도 5를 참조하여, 데이터베이스 구조와 데이터베이스 구조에 포함되는 롤백 저널 파일, WAL 파일 및 DB 페이지에 대한 설명을 하기로 한다.
도 2는 데이터베이스의 구조를 도시한 것이다.
도 2를 참조하면, 데이터베이스의 구조(200)는 데이터베이스 파일 헤더(210), 스키마 테이블(220) 및 적어도 하나 이상의 페이지(230-1, 230-2,…, 230-N)로 구성된다.
데이터베이스 파일 헤더(210)는 데이터베이스 파일의 시그니처를 포함한 메타 정보를 포함하고, 스키마 테이블(220)은 스키마 타입(schema type), 스키마 네임(schema name), 루트 페이지 번호(root page number) 및 쿼리문(query statement)을 포함한다.
스키마 타입은 테이블, 인덱스 및 트리거를 포함하고, 스키마 네임은 생성된 스키마의 이름이며, 루트 페이지 번호는 정수 형태이다.
쿼리문은 테이블 네임(table name), 필드 타입(field type), 필드 네임(field name), 필드 개수(field number)를 포함하고, 필드 타입은 정수형, 실수형, 블라브(BLOB: Binary large object)형 및 텍스트형으로 구성된다.
페이지(230-1, 230-2, …, 230-N)는 데이터베이스의 파일에 기록되는 데이터로서, 페이지(230-1, 230-2, …, 230-N)의 크기는 데이터베이스 파일 헤더(210)의 16번째 오프셋에 위치한 2바이트 정수로 확인된다.
도 3은 데이터베이스의 도 2에 도시된 페이지의 구조를 도시한 것이다.
도 3을 참조하면, 페이지의 구조(300)는 프리리스트(Freelist) 페이지(310), 비-트리(B-tree) 페이지(320), 페이로드 오버플로우(Payload overflow) 페이지(330) 및 포인트 맵(Point map) 페이지(340)를 포함한다.
프리리스트 페이지(310)는 데이터베이스로부터 사용되지 않는 페이지를 저장하는 페이지일 수 있고, 비-트리 페이지(320)는 테이블과 인덱스를 저장하기 위한 페이지일 수 있다.
또한, 비-트리 페이지(320)는 테이블과 인덱스를 저장하기 위한 테이블 비-트리 인테리어(Table B-tree interior), 테이블 비-트리 리프(Table B-tree leaf) 페이지, 인덱스 비-트리 인테리어(Index B-tree interior) 및 인덱스 비-트리 리프(Index B-tree leaf) 페이지를 포함할 수 있다.
테이블 비-트리 리프 페이지는 임의 길이를 갖는 페이로드 데이터를 포함하고, 페이로드 오버플로우 페이지(330)는 테이블 비-트리 리프 페이지의 페이로드 데이터를 초과할 경우에 초과된 페이로드 데이터를 저장한다.
포인트 맵 페이지(340)는 데이터베이스 파일의 하나의 위치로부터 다른 위치로 이동하는 것을 용이하게 하기 위해 데이터베이스에 추가된 여분의 페이지를 포함할 수 있다.
비-트리 페이지(320)는 일반적으로 최대 하나 이상의 부모 비-트리 페이지 또는 부모 비-트리 페이지가 없는 루트 페이지를 포함할 수 있다.
루트 페이지 및 비-트리 페이지(320)는 DB 페이지로서, 비할당 영역에 존재할 수 있고, 롤백 저널 파일 및 WAL 파일에 포함된 행태로 비할당 영역에 존재할 수 있다.
도 4는 도 3에 도시된 비-트리 페이지에 포함되는 비할당 영역을 도시한 것이다.
도 4를 참조하면, 비할당 영역(400)은 롤백 저널 파일(410), WAL 파일(420) 및 DB 페이지(430)를 포함할 수 있다.
롤백 저널 파일(410)은 변경되지 않은 데이터베이스 정보를 기록한 파일일 수 있고, WAL 파일(420)은 변경된 데이터베이스의 정보를 기록한 파일일 수 있다.
보다 상세하게는, 롤백 저널 파일(410)은 데이터베이스 파일에 대한 쓰기(write)전의 상태가 저장되는 파일이고, WAL 파일(420)은 데이터베이스 파일에 대한 쓰기를 수행한 후의 변경된 상태가 저장되는 파일일 수 있다.
본 발명의 실시예에 따르면, 롤백 저널 파일(410) 및 WAL 파일(420)은 트랜잭션이 완료하기 전에 응용 프로그램 또는 호스트 컴퓨터의 비정상 종료 및 하드웨어 전원 장애가 발생하는 경우, 데이터베이스를 복원하는데 사용될 수 있다.
또한, DB 페이지(430)는 데이터베이스파일에 잔존하는 데이터를 포함할 수 있다.
또한, 롤백 저널 파일(410) 및 WAL 파일(420)은 데이터베이스 파일에 잔존하는 데이터를 포함할 수 있고, 데이터베이스 파일에 잔존하는 데이터를 포함하는 롤백 저널 파일(410) 및 WAL 파일(420)은 DB 페이지(430)에 포함될 수 있다.
도 5는 도 4에 도시된 DB 페이지의 구조를 도시한 것이다.
도 5를 참조하면, DB 페이지의 구조(500)는 페이지 헤더(page header)(510), 셀 포인터(cell pointer)(520), 레코드(record)(530), 프리 블록(free block)(540) 및 슬랙(slack)(550)을 포함할 수 있다.
페이지 헤더(510)는 8바이트 또는 12바이트 크기로 구성될 수 있고, 셀 포인터(520)는 2바이트 정수 오프셋으로 구성될 수 있다.
레코드(530)는 테이블에 포함된 활성 데이터가 저장되는 영역일 수 있고, 프리 블록(540)은 이전에 저장된 레코드가 삭제된 빈 공간으로서, 다른 새로운 레코드를 저장할 수 있는 영역일 수 있다.
슬랙(550)은 위에서 아래 방향로 증가하는 셀 포인터(520)의 배열과 아래에서 윗 방향으로 증가하는 데이터 영역 사이의 빈 공간으로서 모두 '0'이거나 이전에 사용되었던 레코드(530)의 잔존하는 데이터가 남아있는 영역일 수 있다.
본 발명의 실시예에 따르면, 프리 블록(540) 및 슬랙(550)은 DB 페이지의 미사용 영역일 수 있다.
전술한 사항을 참고하여 다시 도 1을 참조하면, 제1 수집부(110)는 롤백 저널 파일 및 WAL 파일에 대한 저널 구조 정보를 이용하여 롤백 저널 파일 및 WAL 파일에 대한 비할당 영역을 식별하여 수집하고, 제2 수집부(120)는 DB 페이지의 구조 정보를 이용하여 DB 페이지에 대한 비할당 영역을 식별하여 수집한다.
이하에서는 실시예 별로 본 발명의 포렌식 데이터 복원 시스템을 구체적으로 설명하기로 한다.
실시예 1: 롤백 저널 파일 및 WAL 파일에 대한 복원
제1 수집부(110)는 롤백 저널 파일 및 WAL 파일에 대한 저널 구조 정보를 이용하여 롤백 저널 파일 및 WAL 파일에 대한 비할당 영역을 식별하여 수집한다.
구체적으로, 제1 수집부(110)는 롤백 저널 파일의 헤더 또는 WAL 파일의 헤더가 유실되지 않았다고 판단되는 경우, 롤백 저널 파일의 헤더 또는 WAL 파일의 헤더 및 체크섬(checksum)이 포함된 저널 구조 정보를 이용하여 롤백 저널 파일이나 WAL 파일을 수집할 수 있다.
아래의 표 1은 롤백 저널 파일의 헤더 및 WAL 파일의 헤더에 대한 정보를 나타내는 표이다.
[표 1]
Figure 112014030725815-pat00001

표 1을 참조하면, 롤백 저널 파일의 헤더는 8바이트 크기의 헤더 문자열과 4바이트 크기의 페이지 수, 임시값, 데이터베이스의 초기 페이지 사이즈, 디스크의 섹터 사이즈 및 저널의 페이지 사이즈에 대한 정보를 포함할 수 있다.
WAL 파일의 헤더는 4바이트 크기의 매직 넘버, 파일 포맷 버전, 데이터베이스의 페이지 사이즈, 체크 포인트의 시퀀스 번호, 각 체크 포인트마다 증가하는 임의의 정수를 갖는 Salt1, 각 검사 점에 대한 서로 다른 임의의 수를 갖는 Salt2, 체크섬1 및 체크섬2에 대한 정보를 포함할 수 있다.
본 발명의 일측에 따르면, 제1 수집부(110)는 롤백 저널 파일의 헤더의 체크섬이 포함된 저널 로그 구조 정보를 이용하여 롤백 저널 파일을 수집할 수 있다.
보다 상세하게는, 제1 수집부(110)는 롤백 저널 파일의 헤더의 체크섬에 대한 연산 알고리즘이 포함된 저널 로그 구조 정보를 이용하여 롤백 저널 파일을 수집할 수 있다.
예를 들어, 제1 수집부(110)는 롤백 저널 파일에서 200의 크기로 감소하면서 롤백 저널 파일의 헤더의 체크섬을 연산하는 체크섬에 대한 알고리즘과 롤백 저널 파일의 헤더에 포함되는 헤더 문자열, 페이지 수, 임시값, 데이터베이스의 초기 페이지 사이즈, 디스크의 섹터 사이즈 및 저널의 페이지 사이즈를 고려하여 롤백 저널 파일을 수집할 수 있다.
본 발명의 다른 일측에 따르면, 제1 수집부(110)는 WAL 파일의 헤더의 체크섬이 포함된 저널 로그 구조 정보를 이용하여 WAL 파일을 수집할 수 있다.
보다 상세하게는, 제1 수집부(110)는 WAL 파일의 헤더의 체크섬1 및 체크섬2에 대한 연산 알고리즘이 포함된 저널 로그 구조 정보를 이용하여 WAL 파일을 수집할 수 있다.
예를 들어, 제1 수집부(110)는 WAL 파일의 페이지 위치를 표시하는 Salt1 및 Salt2를 기반으로 체크섬1 및 체크섬2를 연산하는 체크섬에 대한 알고리즘과 WAL 파일의 헤더에 포함되는 매직 넘버, 파일 포맷 버전, 데이터베이스의 페이지 사이즈, 체크 포인트의 시퀀스 번호를 고려하여 WAL 파일을 수집할 수 있다.
실시예 2: DB 페이지에 대한 복원
제2 수집부(120)는 DB 페이지의 구조 정보를 이용하여 DB 페이지에 대한 비할당 영역을 식별하여 수집한다.
본 발명의 일측에 따르면, 롤백 저널 파일 및 WAL 파일은 데이터베이스 파일에 잔존하는 데이터를 포함할 수 있고, 데이터베이스 파일에 잔존하는 데이터를 포함하는 롤백 저널 파일 및 WAL 파일은 DB 페이지에 포함될 수 있다.
DB 페이지의 구조 정보는 도 5에 도시된 페이지 헤더, 셀 포인터, 레코드, 프리 블록 및 슬랙에 대한 정보를 포함할 수 있고, 롤백 저널 파일에 대한 페이지 레코드 및 WAL 파일에 대한 WAL 프레임 헤더에 대한 정보를 포함할 수 있다.
페이지 헤더는 8바이트 또는 12바이트 크기로 구성될 수 있고, 셀 포인터는 2바이트 정수 오프셋으로 구성될 수 있다.
레코드는 테이블에 포함된 활성 데이터가 저장되는 영역일 수 있고, 프리 블록은 이전에 저장된 레코드가 삭제된 빈 공간으로서, 다른 새로운 레코드를 저장할 수 있는 영역일 수 있다.
슬랙은 위에서 아래로 증가하는 셀 포인터(520)의 배열과 아래에서 위로 증가하는 데이터 영역 사이의 빈 공간으로서 모두 0이거나 이전에 사용되었던 레코드의 잔존하는 데이터가 남아있는 영역일 수 있다.
실시예에 따라서는, 제2 수집부(120)는 롤백 저널 파일의 헤더 및 WAL 파일의 헤더가 유실되었다고 판단되는 경우, DB 페이지를 포함하는 비할당 영역을 4바이트 단위로 식별하고, 롤백 저널 파일에 대한 페이지 레코드의 체크섬을 이용하여 DB 페이지를 수집하며, WAL 파일에 대한 WAL 프레임 헤더의 체크섬을 이용하여 DB 페이지를 수집할 수 있다.
아래의 표 2는 롤백 저널 파일에 대한 페이지 레코드 및 WAL 파일에 대한 WAL 프레임 헤더를 나타내는 표이다.
[표 2]
Figure 112014030725815-pat00002

표 2를 참조하면, 롤백 저널 파일에 대한 페이지 레코드는 4바이트 크기의 페이지 번호, N바이트 크기의 이전 트랜잭션의 시작 페이지의 원본 콘텐츠 및 4바이트 크기의 체크섬을 포함할 수 있다(여기서, N은 DB 페이지의 사이즈).
WAL 파일에 대한 WAL 프레임 헤더는 4바이트 크기의 페이지 번호, 데이터베이스의 파일 사이즈, WAL 파일의 헤더에서 복사된 Salt1, WAL 파일의 헤더에서 복사된 Salt2, 체크섬1 및 체크섬2를 포함할 수 있다.
제2 수집부(120)는 DB 페이지를 포함하는 비할당 영역을 4바이트 단위로 식별할 수 있다.
보다 상세하게는, 제2 수집부(120)는 롤백 저널 파일의 헤더, 롤백 저널 파일에 대한 페이지 레코드, WAL 파일의 헤더 및 WAL 파일에 대한 WAL 프레임 헤더가 주로 4바이트 단위로 구성될 수 있기 때문에 비할당 영역을 4바이트 단위로 식별할 수 있다.
본 발명의 일측에 따르면, 제2 수집부(120)는 롤백 저널 파일에 대한 페이지 레코드의 체크섬을 이용하여 DB 페이지를 수집할 수 있다.
보다 상세하게는, 제2 수집부(120)는 롤백 저널 파일에 대한 페이지 레코드의 체크섬에 대한 연산 알고리즘을 이용하여 DB 페이지를 수집할 수 있다.
예를 들어, 제2 수집부(120)는 DB 페이지에서 200의 크기로 감소하면서 롤백 저널 파일에 대한 페이지 레코드의 시작점(N-200)을 기준으로 체크섬을 연산하는 체크섬에 대한 알고리즘을 이용하여 DB 페이지를 수집할 수 있다.
본 발명의 다른 일측에 따르면, 제2 수집부(120)는 WAL 파일에 대한 WAL 프레임 헤더의 체크섬을 이용하여 DB 페이지를 수집할 수 있다.
보다 상세하게는, 제2 수집부(120)는 WAL 파일에 대한 WAL 프레임 헤더의 체크섬1 및 체크섬2에 대한 연산 알고리즘을 이용하여 DB 페이지를 수집할 수 있다.
예를 들어, 제2 수집부(120)는 DB 페이지 위치를 표시하는 Salt1 및 Salt2를 기반으로 체크섬1 및 체크섬2를 연산하는 체크섬에 대한 알고리즘을 이용하여 DB 페이지를 수집할 수 있다.
변환부(130)는 DB 페이지의 미사용 영역을 데이터 종류 정보에 대응하는 매치 타입 데이터로 변환한다.
DB 페이지의 미사용 영역은 도 5에 도시된 프리 블록 및 슬랙일 수 있다.
프리 블록은 이전에 저장된 레코드가 삭제된 빈 공간으로서, 다른 새로운 레코드를 저장할 수 있는 영역일 수 있다.
슬랙은 위에서 아래로 증가하는 셀 포인터(520)의 배열과 아래에서 위로 증가하는 데이터 영역 사이의 빈 공간으로서 모두 0이거나 이전에 사용되었던 레코드의 잔존하는 데이터가 남아있는 영역일 수 있다.
데이터 종류 정보는 데이터 타입, 바이트 길이 정보 및 데이터 타입 및 상기 바이트 길이 정보를 기반으로 형성된 매치 타입을 포함할 수 있다.
아래의 표 3은 데이터 종류 정보를 나타내는 표이다.
[표 3]
Figure 112014030725815-pat00003

표 3을 참조하면, 데이터 타입은 정수형, 실수형, 블라브형 및 텍스트형으로 구성될 수 있고, 바이트 길이 정보는 데이터 종류에 대응하는 바이트 길이와 짝수/홀수 바이트로 표현될 수 있으며, 매치 타입은 데이터 타입 및 상기 바이트 길이 정보를 기반으로 형성될 수 있다.
본 발명의 일측에 따르면, 변환부(130)는 DB 페이지의 미사용 영역이 정수형의 데이터 타입과 정수형의 데이터 타입에 대응되는 바이트 길이 정보를 포함하는 경우 '1'인 매치 타입으로 변환하고, 실수형의 데이터 타입과 실수형의 데이터 타입에 대응되는 바이트 길이 정보를 포함하는 경우에는 '7'인 매치 타입으로 변환한다.
또한, 변환부(130)는 DB 페이지의 미사용 영역이 블라브형 및 텍스트형에 대한 데이터 타입 및 블라브형 및 텍스트형에 대한 데이터 타입에 대응하는 바이트 길이 정보를 포함하는 경우에는 'C' 및 'D'인 매치 타입으로 변환할 수 있다.
예를 들어, 변환부(130)는 DB 페이지의 미사용 영역의 바이트 길이 정보가 '55'인 경우에는 홀수 형태의 바이트와 13 이상의 바이트 길이 조건을 만족할 수 있으므로, 텍스트형 데이터 타입으로 판단하고, 'D' 매치 타입으로 변환할 수 있다.
이하에서는 도 6 및 표 3을 함께 참조하여, DB 페이지의 미사용 영역을 데이터 종류 정보에 대응하는 매치 타입 데이터로 변환하는 예를 설명하기로 한다.
도 6은 본 발명의 프렌식 데이터 복원 시스템을 통하여 DB 페이지 및 비할당 DB 페이지 영역을 매치 타입 데이터로 변환하는 것을 도시한 예이다.
도 6을 참조하면, DB 페이지의 미사용 영역에 대한 바이트 길이 정보는 『39, 30, 39, 32, 34, 00, 00, 01, 01, 00, 00, 42, 83, 59, 18, 00, 01, 23, 00, 05, 01, 01, 01, 00, 00, 28, 00, 00, 01, 01, 01, 01』일 수 있고, 매치 타입 데이터는 『D, C, D, C, C, 0, 0, 1, 1, 0, 0, C, D, C, 0, 1, D, 0, 1, 0, 1, 1, 1, 0, 0, D, 0, 1, 1, 1, 1,』일 수 있다.
실선으로 도시된 DB 페이지의 미사용 영역에 대한 바이트 길이 정보가 '42'인 경우에는 짝수 형태이면서 12이상이므로, 변환부(130)는 블라브형에 대한 데이터 타입으로 판단하고, 'C' 매치 타입으로 변환할 수 있다.
또한, 점선으로 도시된 DB 페이지의 미사용 영역에 대한 바이트 길이 정보가 '83', '59'는 가변길이 정수형 타입에 근거하여 '0x1D9'를 의미하고, 이 값은 홀수 형태이면서 13이상이므로, 변환부(130)는 텍스트형 데이터 타입으로 판단하고, 'D' 매치 타입으로 변환할 수 있다.
다시 도 1을 참조하면, 복원부(140)는 스키마 타입, 스키마 네임, 루트 페이지 번호 및 쿼리문을 포함하는 스키마 테이블 정보로부터 매치 타입 리스트를 생성하고, 변환된 매치 타입 데이터를 생성된 매치 타입 리스트와 매칭하여 매칭된 매치 타입 데이터를 추출한다.
스키마 타입은 테이블, 인덱스 및 트리거를 포함하고, 스키마 네임은 생성된 스키마의 이름이며, 루트 페이지 번호는 정수 형태이다.
쿼리문은 테이블 네임, 필드 타입, 필드 네임, 필드 개수를 포함하고, 필드 타입은 정수형, 실수형, 블라브형 및 텍스트형으로 구성된다.
페이지(230-1, 230-2, …, 230-N)는 데이터베이스의 파일에 기록되는 데이터이고, 페이지(230-1, 230-2, …, 230-N)의 크기는 데이터베이스 파일 헤더의 16번째 오프셋에 위치한 2바이트 정수로 확인된다.
본 발명의 일측에 따르면, 복원부(140)는 데이터 종류 정보의 구조방식에 대한 쿼리문으로부터 매치 타입 리스트를 생성하고, 생성된 매치 타입 리스트와 매칭되는 변환된 매치 타입 데이터를 추출할 수 있다.
보다 상세하게는, 복원부(140)는 데이터 종류 정보에 포함되는 데이터 타입의 구조방식에 대한 쿼리문으로부터 매치 타입 리스트를 생성하고, 생성된 매치 타입 리스트와 매칭되는 변환된 매치 타입 데이터를 추출할 수 있다.
본 발명의 일실시예에 따른 제1 수집부(110), 제2 수집부(120), 변환부(130) 및 복원부(140)는 각각 병렬적 프로세스를 수행할 수 있다.
예를 들어, 제1 수집부(110) 및 제2 수집부(120)는 병렬적 프로세스를 기반으로 각각 병렬적으로 수행될 수 있다.
또한, 제2 수집부(120)는 DB 페이지에 대한 비할당 영역을 병렬적(분산적)으로 수집하고, 병렬적 처리가 가능한 변환부(130) 및 복원부(140)를 구비하여 병렬적으로 수집된 비할당 영역을 처리할 수 있다.
또한, 제2 수집부(120), 변환부(130) 및 복원부(140)는 실시간 처리를 기반으로 각각 병렬적 프로세스를 수행할 수 있다.
병렬적 프로세스는 씨피유 멀티 쓰레드(CPU multi Thread) 및 GPU 패럴 프로세싱(GPU parallel processing) 중 어느 하나일 수 있다.
본 발명의 일측에 따르면, 씨피유 멀티 쓰레드 및 GPU 패럴 프로세싱은 매치 타입 데이터와, 수집된 롤백 저널 파일 및 수집된 WAL 파일 중 어느 하나 이상을 병렬적으로 복원되도록 제어하는 칩(chip)일 수 있다.
본 발명의 일실시예에 따른 포렌식 데이터 복원 시스템은 수집된 비할당 영역의 데이터를 입력으로 하는 해쉬 알고리즘을 통한 해쉬값을 저장하고, 수집된 비할당 영역의 데이터에 대한 해쉬값을 기반으로 수집된 비할당 영역의 데이터의 중복을 제어하는 중복데이터 제거부(150)를 더 포함할 수 있다.
해쉬 알고리즘은 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 알고리즘으로서, 중복데이터 제거부(15)는 비할당 영역의 데이터에 대한 임의의 길이를 고정된 길이의 데이터로 매핑하여 각각의 해쉬값을 생성하고, 생성된 각각의 해쉬값에 대한 중복 데이터를 제거할 수 있다.
해쉬 알고리즘은 암호화 해시 함수(cryptographic hash function) 알고리즘이 사용될 수 있고, 암호화 해시 함수 알고리즘은 MD5(Message-Digest algorithm 5) 및 SHA(Secure Hash Algorithm)이 포함될 수 있다.
MD5는 128비트 암호화 해시함수로서, 주로 프로그램 및 파일 원본의 원본 보존유무를 확인하는 무결성 검사에 사용되고, 임의의 길이의 입력을 받아 128비트의 고정길이의 해시값을 출력하는 알고리즘이다.
SHA는 암호학적 해시 알고리즘의 모음으로서, 주로 MD5를 대신하여 사용될 수 있다.
본 발명의 일측에 따르면, 중복데이터 제거부(150)는 수집된 비할당 영역의 데이터에 대한 해쉬값과 할당 영역으로부터 수집된 데이터에 대한 해시값을 비교하여 수집된 비할당 영역의 데이터 및 변환된 매치 타입 데이터의 중복을 제어할 수 있다.
할당 영역은 데이터베이스 파일에서 정상적으로 저장되는 데이터(예를 들어, 페이지)를 포함할 수 있다.
도 7은 본 발명의 일실시예에 따른 포렌식 데이터 복원 방법을 도시한 흐름도이다.
도 7을 참조하면, 포렌식 데이터 복원 방법은 단계 710에서, 롤백 저널 파일 및 WAL 파일에 대한 저널 구조 정보를 이용하여 상기 롤백 저널 파일 및 상기 WAL 파일에 대한 비할당 영역을 식별하여 수집한다.
단계 710은 롤백 저널 파일의 헤더 또는 WAL 파일의 헤더 및 체크섬이 포함된 저널 구조 정보를 이용하여 롤백 저널 파일이나 WAL 파일을 수집하는 단계를 포함할 수 있다.
보다 상세하게는, 단계 710은 롤백 저널 파일의 헤더의 체크섬에 대한 연산 알고리즘이 포함된 저널 로그 구조 정보를 이용하여 롤백 저널 파일을 수집할 수 있고, WAL 파일의 헤더의 체크섬1 및 체크섬2에 대한 연산 알고리즘이 포함된 저널 로그 구조 정보를 이용하여 WAL 파일을 수집할 수 있다.
포렌식 데이터 복원 방법은 단계 720에서, DB 페이지의 구조 정보를 이용하여 DB 페이지에 대한 비할당 영역을 식별하여 수집한다.
본 발명의 일측에 따르면, 롤백 저널 파일 및 WAL 파일은 데이터베이스 파일에 잔존하는 데이터를 포함할 수 있고, 데이터베이스 파일에 잔존하는 데이터를 포함하는 롤백 저널 파일 및 WAL 파일은 DB 페이지에 포함될 수 있다.
DB 페이지의 구조 정보는 도 5에 도시된 페이지 헤더, 셀 포인터, 레코드, 프리 블록 및 슬랙을 포함할 수 있고, 롤백 저널 파일에 대한 페이지 레코드 및 WAL 파일에 대한 WAL 프레임 헤더를 포함할 수 있다.
단계 720은 상기 DB 페이지를 포함하는 비할당 영역을 4바이트 단위로 식별하는 단계, 상기 롤백 저널 파일에 대한 페이지 레코드의 체크섬을 이용하여 상기 DB 페이지를 수집하고, 상기 WAL 파일에 대한 WAL 프레임 헤더의 체크섬을 이용하여 상기 DB 페이지를 수집하는 단계를 포함할 수 있다.
보다 상세하게는, 단계 720은 롤백 저널 파일의 헤더, 롤백 저널 파일에 대한 페이지 레코드, WAL 파일의 헤더 및 WAL 파일에 대한 WAL 프레임 헤더가 주로 4바이트 단위로 구성될 수 있기 때문에 비할당 영역을 4바이트 단위로 식별할 수 있다.
또한, 단계 720은 롤백 저널 파일에 대한 페이지 레코드의 체크섬에 대한 연산 알고리즘을 이용하여 DB 페이지를 수집할 수 있다.
또한, 단계 720은 WAL 파일에 대한 WAL 프레임 헤더의 체크섬1 및 체크섬2에 대한 연산 알고리즘을 이용하여 DB 페이지를 수집할 수 있다.
포렌식 데이터 복원 방법은 단계 730에서, DB 페이지의 미사용 영역을 데이터 종류 정보에 대응하는 매치 타입 데이터로 변환한다.
DB 페이지의 미사용 영역은 도 5에 도시된 프리 블록 및 슬랙일 수 있다.
데이터 종류 정보는 데이터 타입, 바이트 길이 정보 및 데이터 타입 및 상기 바이트 길이 정보를 기반으로 형성된 매치 타입을 포함할 수 있다.
포렌식 데이터 복원 방법은 단계 740에서, 스키마 타입, 스키마 네임, 루트 페이지 번호 및 쿼리문을 포함하는 스키마 테이블 정보로부터 매치 타입 리스트를 생성하고, 변환된 매치 타입 데이터를 생성된 매치 타입 리스트와 매칭하여 매칭된 매치 타입 데이터를 추출한다.
스키마 타입은 테이블, 인덱스 및 트리거를 포함하고, 스키마 네임은 생성된 스키마의 이름이며, 루트 페이지 번호는 정수 형태이다.
쿼리문은 테이블 네임, 필드 타입, 필드 네임, 필드 개수를 포함하고, 필드 타입은 정수형, 실수형, 블라브형 및 텍스트형으로 구성된다.
페이지(230-1, 230-2, …, 230-N)는 데이터베이스의 파일에 기록되는 데이터이고, 페이지(230-1, 230-2, …, 230-N)의 크기는 데이터베이스 파일 헤더의 16번째 오프셋에 위치한 2바이트 정수로 확인된다.
단계 740은 데이터 종류 정보의 구조방식에 대한 쿼리문으로부터 매치 타입 리스트를 생성하고, 생성된 매치 타입 리스트와 매칭되는 변환된 매치 타입 데이터를 추출할 수 있다.
보다 상세하게는, 단계 740은 데이터 종류 정보에 포함되는 데이터 타입의 구조방식에 대한 쿼리문으로부터 매치 타입 리스트를 생성하고, 생성된 매치 타입 리스트와 매칭되는 변환된 매치 타입 데이터를 추출할 수 있다.
본 발명의 일실시예에 따른 포렌식 데이터 복원 방법은 수집된 비할당 영역의 데이터를 입력으로 하는 해쉬 알고리즘을 통한 해쉬값을 저장하고, 수집된 비할당 영역의 데이터에 대한 해쉬값을 기반으로 수집된 비할당 영역의 데이터의 중복을 제어하는 단계를 더 포함할 수 있다.
해쉬 알고리즘은 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 알고리즘으로서, 수집된 비할당 영역의 데이터의 중복을 제어하는 단계는 비할당 영역의 데이터에 대한 임의의 길이를 고정된 길이의 데이터로 매핑하여 각각의 해쉬값을 생성하고, 생성된 각각의 해쉬값에 대한 중복 데이터를 제거할 수 있다.
해쉬 알고리즘은 암호화 해시 함수(cryptographic hash function) 알고리즘이 사용될 수 있고, 암호화 해시 함수 알고리즘은 MD5(Message-Digest algorithm 5) 및 SHA(Secure Hash Algorithm)이 포함될 수 있다.
MD5는 128비트 암호화 해시함수로서, 주로 프로그램 및 파일 원본의 원본 보존유무를 확인하는 무결성 검사에 사용되고, 임의의 길이의 입력을 받아 128비트의 고정길이의 해시값을 출력하는 알고리즘이다.
SHA는 암호학적 해시 알고리즘의 모음으로서, 주로 MD5를 대신하여 사용될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
110: 제1 수집부
120: 제2 수집부
130: 변환부
140: 복원부
150: 데이터중복 제거부

Claims (15)

  1. 데이터베이스의 쓰기 전 데이터가 포함된 롤백 저널(Rollback Journal) 파일의 헤더 및 상기 데이터베이스의 쓰기 후 데이터가 포함된 WAL(Write Ahead Log) 파일의 헤더 중 적어도 하나가 존재하는 경우, 상기 존재하는 헤더에 대한 저널 구조 정보를 이용하여 상기 존재하는 헤더에 대응되는 상기 롤백 저널 파일 및 상기 WAL 파일 중 적어도 하나에 대한 비할당 영역을 식별하여 수집하는 제1 수집부;
    상기 롤백 저널 파일의 헤더 및 상기 WAL 파일의 헤더가 모두 유실된 경우, 상기 데이터베이스에 잔존하는 데이터가 포함된 DB 페이지에 대한 DB 페이지 구조 정보를 이용하여 비할당 영역의 DB 페이지를 식별하여 수집하는 제2 수집부;
    데이터 종류 정보를 참조하여 상기 제2 수집부를 통하여 상기 수집된 DB 페이지에 대한 미사용 영역을 매치 타입 데이터로 변환하는 변환부; 및
    상기 데이터베이스의 구조 정보인 스키마 타입(schema type), 스키마 네임(schema name), 루트 페이지 번호(root page number) 및 쿼리문(query statement)을 포함하는 스키마 테이블 정보로부터 매치 타입 리스트를 생성하고, 상기 변환부를 통하여 변환된 매치 타입 데이터를 상기 생성된 매치 타입 리스트와 매칭하여 상기 매칭된 매치 타입 데이터를 추출하는 복원부
    를 포함하는 포렌식 데이터 복원 시스템.
  2. 제1항에 있어서,
    상기 데이터 종류 정보는
    데이터 타입, 바이트 길이 정보 및 상기 데이터 타입 및 상기 바이트 길이 정보를 기반으로 형성된 매치 타입을 포함하는 포렌식 데이터 복원 시스템.
  3. 제2항에 있어서,
    상기 복원부는
    상기 데이터 종류 정보의 구조방식에 대한 상기 쿼리문으로부터 상기 매치 타입 리스트를 생성하고, 상기 생성된 매치 타입 리스트와 매칭되는 상기 변환된 매치 타입 데이터를 추출하는 포렌식 데이터 복원 시스템.
  4. 제1항에 있어서,
    상기 제1 수집부는
    상기 롤백 저널 파일의 헤더 또는 상기 WAL 파일의 헤더가 유실되지 않았다고 판단되는 경우, 상기 롤백 저널 파일의 헤더 또는 상기 WAL 파일의 헤더 및 체크섬(checksum)이 포함된 상기 저널 구조 정보를 이용하여 롤백 저널 파일이나 WAL 파일을 수집하는 포렌식 데이터 복원 시스템.
  5. 제1항에 있어서,
    상기 제2 수집부는
    상기 롤백 저널 파일의 헤더 및 상기 WAL 파일의 헤더가 유실되었다고 판단되는 경우, 상기 DB 페이지를 포함하는 비할당 영역을 4바이트 단위로 식별하고,
    상기 롤백 저널 파일에 대한 페이지 레코드의 체크섬을 이용하여 상기 DB 페이지를 수집하며,
    상기 WAL 파일에 대한 WAL 프레임 헤더의 체크섬을 이용하여 상기 DB 페이지를 수집하는 포렌식 데이터 복원 시스템.
  6. 제5항에 있어서,
    상기 제1 수집부와, 상기 제2 수집부, 상기 변환부 및 상기 복원부는 CPU 멀티 쓰레드 및 GPU 병렬 프로세싱 중 어느 하나를 기반으로 병렬적 프로세스를 수행하는 포렌식 데이터 복원 시스템.
  7. 제1항에 있어서,
    상기 수집된 비할당 영역의 데이터를 입력으로 하는 해쉬 알고리즘을 통한 해쉬값을 저장하고, 상기 수집된 비할당 영역의 데이터에 대한 해쉬값을 기반으로 상기 수집된 비할당 영역의 데이터의 중복을 제어하는 중복데이터 제거부
    를 더 포함하는 포렌식 데이터 복원 시스템.
  8. 제7항에 있어서,
    상기 중복데이터 제거부는
    상기 수집된 비할당 영역의 데이터에 대한 해쉬값과 할당 영역으로부터 수집된 데이터에 대한 해시값을 비교하여 상기 수집된 비할당 영역의 데이터 및 상기 변환된 매치 타입 데이터의 중복을 제어하는 포렌식 데이터 복원 시스템.
  9. 제1 수집부를 통하여 데이터베이스의 쓰기 전 데이터가 포함된 롤백 저널(Rollback Journal) 파일의 헤더 및 상기 데이터베이스의 쓰기 후 데이터가 포함된 WAL(Write Ahead Log) 파일의 헤더 중 적어도 하나가 존재하는 경우, 상기 존재하는 헤더에 대한 저널 구조 정보를 이용하여 상기 존재하는 헤더에 대응되는 상기 롤백 저널 파일 및 상기 WAL 파일 중 적어도 하나에 대한 비할당 영역을 식별하여 수집하는 단계;
    제2 수집부를 통하여 상기 롤백 저널 파일의 헤더 및 상기 WAL 파일의 헤더가 모두 유실된 경우, 상기 데이터베이스에 잔존하는 데이터가 포함된 DB 페이지에 대한 DB 페이지 구조 정보를 이용하여 비할당 영역의 DB 페이지를 식별하여 수집하는 단계;
    변환부를 기반으로 데이터 종류 정보를 참조하여 상기 제2 수집부를 통하여 상기 수집된 DB 페이지에 대한 미사용 영역을 매치 타입 데이터로 변환하는 단계; 및
    복원부를 통하여 상기 데이터베이스의 구조 정보인 스키마 타입(schema type), 스키마 네임(schema name), 루트 페이지 번호(root page number) 및 쿼리문(query statement)을 포함하는 스키마 테이블 정보로부터 매치 타입 리스트를 생성하고, 상기 변환부를 통하여 변환된 매치 타입 데이터를 상기 생성된 매치 타입 리스트와 매칭하여 상기 매칭된 매치 타입 데이터를 추출하는 단계
    를 포함하는 포렌식 데이터 복원 방법.
  10. 제9항에 있어서,
    상기 데이터 종류 정보는
    데이터 타입, 바이트 길이 정보 및 상기 데이터 타입 및 상기 바이트 길이 정보를 기반으로 형성된 매치 타입을 포함하는 포렌식 데이터 복원 방법.
  11. 제10항에 있어서,
    상기 매칭된 매치 타입 데이터를 추출하는 상기 단계는
    상기 데이터 종류 정보의 구조방식에 대한 상기 쿼리문으로부터 상기 매치 타입 리스트를 생성하고, 상기 생성된 매치 타입 리스트와 매칭되는 상기 변환된 매치 타입 데이터를 추출하는 단계
    를 포함하는 포렌식 데이터 복원 방법.
  12. 제9항에 있어서,
    상기 롤백 저널 파일 및 상기 WAL 파일에 대한 비할당 영역을 식별하여 수집하는 상기 단계는
    상기 롤백 저널 파일의 헤더 또는 상기 WAL 파일의 헤더 및 체크섬이 포함된 상기 저널 구조 정보를 이용하여 롤백 저널 파일이나 WAL 파일을 수집하는 단계
    를 포함하는 포렌식 데이터 복원 방법.
  13. 제9항에 있어서,
    DB 페이지에 대한 비할당 영역을 식별하여 수집하는 상기 단계는
    상기 DB 페이지를 포함하는 비할당 영역을 4바이트 단위로 식별하는 단계; 및
    상기 롤백 저널 파일에 대한 페이지 레코드의 체크섬을 이용하여 상기 DB 페이지를 수집하고, 상기 WAL 파일에 대한 WAL 프레임 헤더의 체크섬을 이용하여 상기 DB 페이지를 수집하는 단계
    를 포함하는 포렌식 데이터 복원 방법.
  14. 제9항에 있어서,
    상기 포렌식 데이터 복원 방법은
    중복데이터 제거부를 통하여 상기 수집된 비할당 영역의 데이터를 입력으로 하는 해쉬 알고리즘을 통한 해쉬값을 저장하고, 상기 수집된 비할당 영역의 데이터에 대한 해쉬값을 기반으로 상기 수집된 비할당 영역의 데이터의 중복을 제어하는 단계
    를 더 포함하는 포렌식 데이터 복원 방법.
  15. 제9항 내지 제14항 중 어느 한 항의 방법을 실행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
KR20140037623A 2014-03-31 2014-03-31 포렌식 데이터 복원 방법 및 시스템 KR101484882B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR20140037623A KR101484882B1 (ko) 2014-03-31 2014-03-31 포렌식 데이터 복원 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20140037623A KR101484882B1 (ko) 2014-03-31 2014-03-31 포렌식 데이터 복원 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR101484882B1 true KR101484882B1 (ko) 2015-01-23

Family

ID=52592204

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20140037623A KR101484882B1 (ko) 2014-03-31 2014-03-31 포렌식 데이터 복원 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101484882B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101623508B1 (ko) 2015-02-26 2016-05-23 국민대학교산학협력단 삭제된 이벤트 로그 파일을 복원하는 시스템 및 방법
KR101658043B1 (ko) * 2015-08-20 2016-09-20 주식회사 웨어밸리 자동화 도구를 이용한 데이터베이스 포렌식 방법
KR101670473B1 (ko) 2015-11-30 2016-10-31 고려대학교 산학협력단 MySQL InnoDB 데이터베이스에서 삭제된 데이터를 복원하는 방법
CN106156174A (zh) * 2015-04-16 2016-11-23 中国移动通信集团山西有限公司 一种数据库事务处理的系统和方法
KR20180043922A (ko) * 2016-10-21 2018-05-02 고려대학교 산학협력단 SQLite 데이터베이스의 비정상 페이지와 저널 파일에서의 삭제된 레코드 복구 방법, 그 방법을 수행하는 장치 및 컴퓨터 프로그램
US10459804B2 (en) * 2015-04-28 2019-10-29 Micro Systemation AB Database rollback using WAL

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008129685A (ja) 2006-11-17 2008-06-05 Dream Ware Inc 作業内容記録システムおよびその方法、ならびにそのプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008129685A (ja) 2006-11-17 2008-06-05 Dream Ware Inc 作業内容記録システムおよびその方法、ならびにそのプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
김상대외 2인, "삭제된 휴대폰 음성 데이터 복원 방법론", 정보보호학회 논문지 22권 1호, 2012.2 *
전상준외 4인, "SQLite 데이터베이스의 비 할당 영역에 잔존하는 삭제된 레코드 복구 기법", 정보보호학회 논문지 21권 3호, 2011.06 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101623508B1 (ko) 2015-02-26 2016-05-23 국민대학교산학협력단 삭제된 이벤트 로그 파일을 복원하는 시스템 및 방법
CN106156174A (zh) * 2015-04-16 2016-11-23 中国移动通信集团山西有限公司 一种数据库事务处理的系统和方法
US10459804B2 (en) * 2015-04-28 2019-10-29 Micro Systemation AB Database rollback using WAL
KR101658043B1 (ko) * 2015-08-20 2016-09-20 주식회사 웨어밸리 자동화 도구를 이용한 데이터베이스 포렌식 방법
KR101670473B1 (ko) 2015-11-30 2016-10-31 고려대학교 산학협력단 MySQL InnoDB 데이터베이스에서 삭제된 데이터를 복원하는 방법
KR20180043922A (ko) * 2016-10-21 2018-05-02 고려대학교 산학협력단 SQLite 데이터베이스의 비정상 페이지와 저널 파일에서의 삭제된 레코드 복구 방법, 그 방법을 수행하는 장치 및 컴퓨터 프로그램
KR101938730B1 (ko) * 2016-10-21 2019-04-10 고려대학교 산학협력단 SQLite 데이터베이스의 비정상 페이지와 저널 파일에서의 삭제된 레코드 복구 방법, 그 방법을 수행하는 장치 및 컴퓨터 프로그램

Similar Documents

Publication Publication Date Title
KR101484882B1 (ko) 포렌식 데이터 복원 방법 및 시스템
US9424185B1 (en) Method and system for garbage collection of data storage systems
EP2363815B1 (en) System for permanent file deletion
US20150106345A1 (en) Multi-node hybrid deduplication
US9183218B1 (en) Method and system to improve deduplication of structured datasets using hybrid chunking and block header removal
US10387066B1 (en) Providing data deduplication in a data storage system with parallelized computation of crypto-digests for blocks of host I/O data
CN102567427B (zh) 一种对象数据处理方法及装置
KR101456757B1 (ko) SQLite 데이터베이스에서 삭제된 데이터의 복원 방법 및 장치
US8756249B1 (en) Method and apparatus for efficiently searching data in a storage system
CN109710455B (zh) 基于fat32文件系统的删除文件恢复方法及系统
WO2010027824A2 (en) Method and apparatus for managing data objects of a data storage system
US10838923B1 (en) Poor deduplication identification
KR101727860B1 (ko) 문서 파일의 복구 장치 및 그 방법
KR101593184B1 (ko) 파일시스템 메타데이터 기반 파티션 복구 방법 및 장치
US11226774B2 (en) Deep data-compression
CN111125033A (zh) 一种基于全闪存阵列的空间回收方法及系统
US10430383B1 (en) Efficiently estimating data compression ratio of ad-hoc set of files in protection storage filesystem with stream segmentation and data deduplication
US10459807B2 (en) Determining modified portions of a RAID storage array
CN111124940B (zh) 一种基于全闪存阵列的空间回收方法及系统
CN112817962B (zh) 基于对象存储的数据存储方法、装置和计算机设备
EP2856359B1 (en) Systems and methods for storing data and eliminating redundancy
KR101670473B1 (ko) MySQL InnoDB 데이터베이스에서 삭제된 데이터를 복원하는 방법
KR101780236B1 (ko) 파일 복구 기능을 갖는 파일 관리 장치 및 파일 관리 장치의 파일 복구 방법
US9811545B1 (en) Storage of sparse files using parallel log-structured file system
KR101608623B1 (ko) 전원 손실 이후 효과적인 데이터 복구를 위한 메모리 복구 장치 및 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190110

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20191031

Year of fee payment: 6