SQLCipher 구조 분석

SQLCipher 구조 분석

SQLCipher 구조 분석

SQLite 기반 암호화 데이터베이스 내부 구조와 동작 원리 분석

1. SQLCipher 개요

SQLCipher는 SQLite 기반의 암호화 데이터베이스 엔진이다. 기존 SQLite에 AES 암호화를 추가하여 데이터 파일을 보호한다.

SQLite 기반 AES 암호화 모바일 앱 사용 보안 DB

주로 사용되는 곳:

  • 메신저 앱
  • 보안 앱
  • 모바일 데이터 저장
  • 포렌식 분석 대상

2. SQLCipher 전체 구조

Application
    ↓
SQLCipher API
    ↓
SQLite Core
    ↓
Codec Layer
    ↓
AES Encryption
    ↓
Database File

핵심은 Codec Layer이다.

SQLite와 다른 점은 파일을 읽고 쓸 때 암호화 계층이 존재한다는 것이다.

3. 암호화 구조

항목 설명
Encryption AES-256
Key Derivation PBKDF2
Hash SHA1 / SHA256
Page Encryption Page 단위 암호화

SQLCipher는 전체 파일을 암호화하지 않고 페이지 단위로 암호화한다.

4. Key 생성 과정

Password 입력
    ↓
Salt 생성
    ↓
PBKDF2 수행
    ↓
AES Key 생성
    ↓
Database Encryption

PBKDF2를 통해 실제 AES Key가 생성된다.

PRAGMA key = "password";

이 명령이 내부적으로 Key Derivation을 수행한다.

5. Database 파일 구조

Header
Salt
Encrypted Pages
HMAC

SQLite와 다르게 Header가 암호화되어 있다.

  • SQLite → "SQLite format 3"
  • SQLCipher → 랜덤 데이터

6. Page 암호화 구조

Plain Page
    ↓
AES Encrypt
    ↓
Cipher Page
    ↓
HMAC 추가

각 페이지는 개별적으로 암호화된다.

7. 내부 동작 흐름

sqlite3_open()
    ↓
sqlcipher_codec_ctx_init()
    ↓
Key 생성
    ↓
Page 읽기
    ↓
AES 복호화
    ↓
SQLite 처리

Codec Context가 핵심이다.

8. 주요 함수

sqlcipher_codec_ctx_init()
codec_set_pass_key()
codec_key_derive()
codec_encrypt()
codec_decrypt()

이 함수들이 암호화 흐름을 담당한다.

9. 복호화 흐름

Database Open
    ↓
Key 입력
    ↓
Salt 추출
    ↓
PBKDF2
    ↓
AES Key 생성
    ↓
Page 복호화

10. 포렌식 관점 분석

  • Salt 추출 가능
  • PBKDF2 반복 횟수 확인
  • Key Derivation 구조 분석
  • Memory에서 Key 탐색 가능

메모리 분석을 통해 Key를 찾을 수 있다.

11. 핵심 분석 포인트

분석 대상 설명
Codec Context Key 저장 구조
PBKDF2 Key 생성
AES 암호화
HMAC 무결성 검증

12. 정리

  • SQLCipher는 SQLite 기반 암호화 DB
  • AES-256 사용
  • PBKDF2 Key Derivation
  • Page 단위 암호화
  • Codec Layer가 핵심

SQLCipher 분석의 핵심은 Codec Context와 Key Derivation 구조이다.

댓글

이 블로그의 인기 게시물

[Windows 분석] ShellExperienceHost.exe의 역할과 CPU 점유율 해결법 (엔지니어 가이드)

[Intel 보안 분석] jhi_service.exe의 정체와 인텔 관리 엔진(ME)의 역할